Ejemplo n.º 1
0
        private static void DisplayStatistics(IBible bible)
        {
            Console.WriteLine("Bible Statistics: ");
            Console.WriteLine("Total case sensitive words: {0}",
                              bible.GetService<IWordsCaseSensitive>().Words().Count());
            Console.WriteLine("Total case insensitive words: {0}",
                              bible.GetService<IWordsCaseInsensitive>().Words().Count());

            const int limit = 10;
            var topWordsByFrequency =
                bible.GetService<ITokenToVerseMap>().TokenFrequency()
                    .Where(tokFreq => tokFreq.Token.IsWord)
                    .Select(tokFreq => new {tokFreq.Token, Frequency = tokFreq.RelatedVerses().Sum(rv => rv.Frequency)})
                    .OrderByDescending(tokFreq => tokFreq.Frequency)
                    .Take(limit)
                    .Select(tokFreq => tokFreq.Token + ": " + tokFreq.Frequency);
            Console.WriteLine();
            Console.WriteLine("Top {0} words by frequency: {1}",
                limit,
                string.Join(", ", topWordsByFrequency));

            var nonWordsByFrequency =
                bible.GetService<ITokenToVerseMap>().TokenFrequency()
                    .Where(tokFreq => !tokFreq.Token.IsWord)
                    .Select(tokFreq => new {tokFreq.Token, Frequency = tokFreq.RelatedVerses().Sum(rv => rv.Frequency)})
                    .OrderByDescending(tokFreq => tokFreq.Frequency)
                    .Select(tokFreq => "'" + tokFreq.Token + "': " + tokFreq.Frequency);
            Console.WriteLine();
            Console.WriteLine("Non-word tokens: {0}", string.Join(", ", nonWordsByFrequency));
        }