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) }); }
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); }