private SentimentAnalysisResults ScoreValence(List <double> sentiments, SentiText text) { if (sentiments.Count == 0) { return(new SentimentAnalysisResults()); //will return with all 0 } var sum = sentiments.Sum(); var puncAmplifier = PunctuationEmphasis(text.Text); sum += Math.Sign(sum) * puncAmplifier; var compound = SentimentUtils.Normalize(sum); var sifted = SiftSentimentScores(sentiments); if (sifted.PosSum > Math.Abs(sifted.NegSum)) { sifted.PosSum += puncAmplifier; } else if (sifted.PosSum < Math.Abs(sifted.NegSum)) { sifted.NegSum -= puncAmplifier; } var 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) }); }