public FullAnalysisResult Analyze(string input) { var result = new FullAnalysisResult(); var stemmer = new Porter2(); var wordSplit = input.Split(new[] { ' ', ',', '"', ':' }, StringSplitOptions.RemoveEmptyEntries); var sentenceIndex = 0; foreach (var word in wordSplit) { Action nextSentenceIndexIfApplicable = () => { }; var currentWord = word.ToLowerInvariant(); if (currentWord.EndsWith(".")) { currentWord = word.Remove(word.Length - 1, 1); nextSentenceIndexIfApplicable = () => { sentenceIndex++; }; if (String.IsNullOrWhiteSpace(currentWord)) { nextSentenceIndexIfApplicable(); continue; } } if (WordExceptions.Contains(currentWord)) { continue; } var stem = stemmer.Stem(currentWord); result.LogOccurrence(stem, sentenceIndex); nextSentenceIndexIfApplicable(); } return(result); }
public void Init() { subject = new FullAnalysisResult(); }