private List <double> SentimentValence(double valence,
                                               SentiText sentiText, string word,
                                               string lowerCaseWord, int i,
                                               List <double> sentiments)
        {
            if (!Lexicon.ContainsKey(lowerCaseWord))
            {
                sentiments.Add(valence);
                return(sentiments);
            }

            var isCapDiff = sentiText.IsCapDifferential;


            // adjust if shouting
            valence = Lexicon[lowerCaseWord];
            if (isCapDiff && word.IsUpper())
            {
                if (valence > 0)
                {
                    valence += SentimentUtils.CIncr;
                }
                else
                {
                    valence -= SentimentUtils.CIncr;
                }
            }


            for (var startI = 0; startI < 3 && i > startI; startI++)
            {
                var offset = i - (startI + 1);
                var lcWord = sentiText.WordsAndEmoticonsLowerCase[offset];

                if (Lexicon.ContainsKey(lcWord))
                {
                    continue;
                }

                var s = SentimentUtils.ScalarIncDec(lcWord,
                                                    sentiText.WordsAndEmoticons[offset], valence, isCapDiff);

                if (startI == 1 && !s.Equals(0))
                {
                    s = s * 0.95;
                }
                if (startI == 2 && !s.Equals(0))
                {
                    s = s * 0.9;
                }
                valence = valence + s;

                valence = NeverCheck(valence, sentiText.WordsAndEmoticonsLowerCase, startI, i);

                if (startI == 2)
                {
                    valence = IdiomsCheck(valence, sentiText.WordsAndEmoticonsLowerCase, i);
                }
            }

            valence = LeastCheck(valence, sentiText.WordsAndEmoticonsLowerCase, i);
            sentiments.Add(valence);

            return(sentiments);
        }