示例#1
0
        public WordCountAnalyzerResult Analyze(string text)
        {
            TextSplitResult textSplitResult = TextSplit.Split(text: text);

            if (!textSplitResult.WordsAvailable)
            {
                return(new WordCountAnalyzerResult());
            }

            StopwordRemoverResult stopwordRemoverResult = StopwordRemover.RemoveStopwords(words: textSplitResult.Words);

            List <string> words         = stopwordRemoverResult.Words;
            List <string> distinctWords = words.Distinct().ToList();

            int    numberOfWords       = words.Count;
            int    numberOfUniqueWords = distinctWords.Count;
            double averageWordLength   = words.Any() ? words.Average(selector: s => s.Length) : 0.0;
            int    numberOfchapters    = text.Split(separator: new[] { Environment.NewLine + Environment.NewLine }, options: StringSplitOptions.None).Count();

            return(new WordCountAnalyzerResult
            {
                NumberOfWords = numberOfWords,
                NumberOfUniqueWords = numberOfUniqueWords,
                AverageWordLength = averageWordLength,
                DistinctWords = distinctWords,
                NumberOfChapters = numberOfchapters
            });
        }
        public void StopwordRemoverTests_Analyze_Stopword_a_Mary_has_a_little_lamb_Expect_5_Words_without_Stopwords()
        {
            List <string> values = new List <string> {
                "Mary", "had", "a", "little", "lamb"
            };

            _mockStopwordLoader
            .Setup(m => m.GetStopwords())
            .Returns(new List <string>());

            List <string> expected = new List <string> {
                "Mary", "had", "a", "little", "lamb"
            };

            StopwordRemoverResult actual = _systemUnderTest.RemoveStopwords(words: values);

            Assert.NotNull(actual);
            Assert.NotNull(@object: actual.Words);
            Assert.NotEmpty(collection: actual.Words);
            Assert.Equal(expected: expected, actual: actual.Words);
        }