The double negative is not an uncommon rhetorical device. (See what I did there?) Using two negatives to indicate a positive is a figure of speech that goes back so far that it can be found in Old English, Ancient Greek, and the Norse Sagas. Today the double negative is common in English, French, and German, but can also be found in other languages such as Spanish and Chinese. In other words, every language that Salience handles uses double negatives, making it fairly important to ensure that our sentiment analysis engine handles them well.
In English we’ve given the use of a double negative a fancy name - a litotes. A litotes by definition is a form of understatement for emphasis through the use of a double negative. Instead of saying, for instance, that the weather is good today, one would employ a litotes by saying that the weather isn’t bad today. For humans, interpreting a double negative is intuitive and easy. For machines like Salience, it requires a little extra thought.
Calculating the sentiment for a litotes takes a couple of steps. First, Salience checks if the negators are actually negating. Most common negators are words that are derivations of “not”: “not”, “isn’t”, and “doesn’t” are all classified as negators, which means that they are a word that renders the object of sentence false. "He is not running". Is he running? Obviously not. Negators don’t always negate, however, and that’s why we check. Some phrases such as “not just” don’t act as negators. Salience checks the phrase against a few patterns to ensure that this isn’t the case.
After determining that the negator is indeed negating, Salience breaks down the sentence to determine the scope of the negation. In other words, how much of the sentence is actually being negated. To do this we use a "chunker" to break a sentence down into its constituent phrases: noun phrases, verb phrases, etc. For example, "I do not like fall, but I love Halloween." By breaking this sentence down, Salience can detect that only "like fall" is negated, but "I love Halloween" is not.
Once we’ve established these parameters, it’s as easy as flipping the sign and reducing the weight. With a litotes, the original sentiment bearing phrase is negative, and once negated, the whole phrase becomes positive. We reduce the weight of the sentiment because a litotes is used as form of understatement, so the ensuing positive phrase usually has a weaker sentiment that the original negative phrase.
Not every double negative follows this rule, however. In some cases, litotes can produce a phrase whose sentiment is incredibly strong, such as in the phrase “no ordinary”, i.e. “Lassie is no ordinary dog.” To deal with these exceptions we include these as their own sentiment phrases and manually weigh them more.