Example #1
0
        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);
            }
        }