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;
                }
            }
        }
示例#2
0
        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);
        }