public void Process(Document document) { if (document is null) { throw new ArgumentNullException(nameof(document)); } var table = new AutoEvictingDictionary <WordEx, WordsContext>(length: WindowSize); var sentences = new AutoEvictingDictionary <SentenceItem, SentenceItem>(length: WindowSize); foreach (SentenceItem sentenceItem in document.Sentences) { table.Increment(); sentences.Increment(); sentences.Add(sentenceItem, sentenceItem); foreach (WordEx word in sentenceItem.Words) { WordsContext current = GetVector(word).CreateNewVector(); current.SentimentValue = sentences.Values.Select(item => item.CalculateSentiment().RawRating).Where(item => item.HasValue).Select(item => item.Value).Sum(); foreach (WordsContext addedRecords in table.Values) { addedRecords.AddContext(word); current.AddContext(addedRecords.Word); } table[word] = current; } } }
public WordsContext CreateNewVector() { if (Vectors.Count != 0 && CurrentVector.Words.Count == 0) { log.LogDebug("Ignoring call to create vector - current is empty"); return(CurrentVector); } var vector = new WordsContext(Word); Vectors.Add(vector); return(vector); }