public double calculateSentiment(String tweet) { if (filters != null) { tweet = filters.apply(tweet); } List<LexicalToken> lexicalTokens = LexicalParser.lexicallyParseTweet(tweet, phraseTree); for (int i = 0; i < lexicalTokens.size(); i++) { LexicalToken token = lexicalTokens.get(i); String phrase = token.getPhrase(); if (lexicon.hasToken(phrase)) { token.setLexicalValue(lexicon.getTokenPolarity(phrase)); } else if (ClassifierOptions.isNegation(phrase)) { propagateNegation(lexicalTokens, i); } else if (ClassifierOptions.isIntensifier(phrase)) { intensifyNext(lexicalTokens, i, ClassifierOptions.getIntensifierValue(phrase)); } } return lexicalTokens.stream().mapToDouble(LexicalToken::getSentimentValue).sum(); }