예제 #1
0
        private SentimentAnalysisResults ScoreValence(IList <double> sentiments, string text)
        {
            if (sentiments.Count == 0)
            {
                return(new SentimentAnalysisResults()); //will return with all 0
            }
            double sum           = sentiments.Sum();
            double puncAmplifier = PunctuationEmphasis(text);

            sum += Math.Sign(sum) * puncAmplifier;

            double         compound = SentimentUtils.Normalize(sum);
            SiftSentiments sifted   = SiftSentimentScores(sentiments);

            if (sifted.PosSum > Math.Abs(sifted.NegSum))
            {
                sifted.PosSum += puncAmplifier;
            }
            else if (sifted.PosSum < Math.Abs(sifted.NegSum))
            {
                sifted.NegSum -= puncAmplifier;
            }

            double total = sifted.PosSum + Math.Abs(sifted.NegSum) + sifted.NeuCount;

            return(new SentimentAnalysisResults
            {
                Compound = Math.Round(compound, 4),
                Positive = Math.Round(Math.Abs(sifted.PosSum / total), 3),
                Negative = Math.Round(Math.Abs(sifted.NegSum / total), 3),
                Neutral = Math.Round(Math.Abs(sifted.NeuCount / total), 3)
            });
        }
예제 #2
0
        private static SiftSentiments SiftSentimentScores(IList <double> sentiments)
        {
            SiftSentiments siftSentiments = new SiftSentiments();

            foreach (var sentiment in sentiments)
            {
                if (sentiment > 0)
                {
                    siftSentiments.PosSum += (sentiment + 1); //1 compensates for neutrals
                }
                if (sentiment < 0)
                {
                    siftSentiments.NegSum += (sentiment - 1);
                }

                if (sentiment == 0)
                {
                    siftSentiments.NeuCount++;
                }
            }
            return(siftSentiments);
        }
        private static SiftSentiments SiftSentimentScores(List <double> sentiments)
        {
            var siftSentiments = new SiftSentiments();

            foreach (var sentiment in sentiments)
            {
                if (sentiment > 0)
                {
                    siftSentiments.PosSum += sentiment + 1; //1 compensates for neutrals
                }
                if (sentiment < 0)
                {
                    siftSentiments.NegSum += sentiment - 1;
                }

                if (sentiment.Equals(0))
                {
                    siftSentiments.NeuCount++;
                }
            }

            return(siftSentiments);
        }