public void TestUpdateNgramUsageCount() { var ngram = new BasicNgram(); Processor.UpdateNgramUsageCount(ngram, false, Sentiment.Positive); Assert.AreEqual(ngram.PositiveCount, 1); Assert.AreEqual(ngram.NeutralCount, 0); Assert.AreEqual(ngram.NegativeCount, 0); Assert.AreEqual(ngram.RtPositiveCount, 0); Assert.AreEqual(ngram.RtPositiveCount, 0); Assert.AreEqual(ngram.RtPositiveCount, 0); Processor.UpdateNgramUsageCount(ngram, false, Sentiment.Positive); Processor.UpdateNgramUsageCount(ngram, false, Sentiment.Neutral); Processor.UpdateNgramUsageCount(ngram, false, Sentiment.Negative); Processor.UpdateNgramUsageCount(ngram, true, Sentiment.Positive); Processor.UpdateNgramUsageCount(ngram, true, Sentiment.Neutral); Processor.UpdateNgramUsageCount(ngram, true, Sentiment.Negative); Assert.AreEqual(ngram.PositiveCount, 2); Assert.AreEqual(ngram.NeutralCount, 1); Assert.AreEqual(ngram.NegativeCount, 1); Assert.AreEqual(ngram.RtPositiveCount, 1); Assert.AreEqual(ngram.RtPositiveCount, 1); Assert.AreEqual(ngram.RtPositiveCount, 1); }
/// <summary> /// Updates the ngrams sentiment count based on the sentiment of the partialTweetText and whether /// or not this ngram is part of the retweet. /// </summary> /// <param name="ngrams">The ngrams.</param> /// <param name="isRetweet"> /// if set to <c>true</c> [is retweet]. /// </param> /// <param name="sentiment">The sentiment.</param> /// <param name="ngramDbSet">The ngram db set.</param> /// <param name="isStemmed"> /// if set to <c>true</c> [is stemmed]. /// </param> /// <param name="context">The context.</param> public static void UpdateNgramsSentiment <TEntity>(IList <String> ngrams, bool isRetweet, Sentiment sentiment, bool isStemmed, DbSet <TEntity> ngramDbSet, IOclumenContext context) where TEntity : NgramBase { foreach (String currentNgram in ngrams) { NgramBase dbNgram = ngramDbSet.FirstOrDefault(x => x.Text == currentNgram); if (dbNgram == null) { // ok we dont have this ngram in our database yet NgramBase newNgram; if (isStemmed) { newNgram = new StemmedNgram { Text = currentNgram, Cardinality = GetNgramCardinality(currentNgram) }; } else { newNgram = new BasicNgram { Text = currentNgram, Cardinality = GetNgramCardinality(currentNgram) }; } ngramDbSet.Add((TEntity)newNgram); dbNgram = newNgram; context.SaveChanges(); } // update the usage count UpdateNgramUsageCount(dbNgram, isRetweet, sentiment); } }