简体   繁体   中英

Stanford NLP sentiment ambiguous result

I am using Stanford NLP v3.6 ( JAVA ) to calculate sentiment of English sentences.

Stanford NLP calculates the polarity of the sentence from 0 to 4.

  • 0 very negative
  • 1 negative
  • 2 neutral
  • 3 positive
  • 4 very positive

I run some very simple test cases but got very strange result.

Example :

  1. Text = Jhon is good person, Sentiment = 3 (ie positive )
  2. Text = David is good person, Sentiment = 2 (ie neutral )

In above example, the sentences are same, other that the name David , Jhon , but sentiment values are different. Isn't this ambiguity ?

I used this Java code for calculating sentiment:

 public static float calSentiment(String text) {

            // pipeline must get initialized before proceeding further
            Properties props = new Properties();
            props.setProperty("annotators", "tokenize, ssplit,   parse, sentiment");
            StanfordCoreNLP pipeline = new StanfordCoreNLP(props);

            int mainSentiment = 0;
            if (text != null && text.length() > 0) {
                int longest = 0;
                Annotation annotation = pipeline.process(text);

                for (CoreMap sentence : annotation.get(CoreAnnotations.SentencesAnnotation.class)) {
                    Tree tree = sentence.get(SentimentCoreAnnotations.SentimentAnnotatedTree.class);
                    int sentiment = RNNCoreAnnotations.getPredictedClass(tree);
                    String partText = sentence.toString();

                    if (partText.length() > longest) {
                        mainSentiment = sentiment;
                        longest = partText.length();
                    }
                }
            }
            if (mainSentiment > 4 || mainSentiment < 0) {
                return -9999;
            }
            return mainSentiment;

        }

Is I am missing something in java code ?

I also got negative sentiment (ie less than 2) when the sentence was positive and vice-versa.

Thanks.

Below are results that I got with simple English sentences:

Sentence: Tendulkar is a great batsman
Sentiment: 3
Sentence: David is a great batsman
Sentiment: 3
Sentence: Tendulkar is not a great batsman
Sentiment: 1
Sentence: David is not a great batsman
Sentiment: 2
Sentence: Shyam is not a great batsman
Sentiment: 1
Sentence: Dhoni loves playing football
Sentiment: 3
Sentence: John, Julia loves playing football
Sentiment: 3
Sentence: Drake loves playing football
Sentiment: 3
Sentence: David loves playing football
Sentiment: 2
Sentence: Virat is a good boy
Sentiment: 2
Sentence: David is a good boy
Sentiment: 2
Sentence: Virat is not a good boy
Sentiment: 1
Sentence: David is not a good boy
Sentiment: 2
Sentence: I love every moment of life
Sentiment: 3
Sentence: I hate every moment of life
Sentiment: 2
Sentence: I like dancing and listening to music
Sentiment: 3
Sentence: Messi does not like to play cricket
Sentiment: 1
Sentence: This was the worst movie I have ever seen
Sentiment: 0
Sentence: I really appreciated the movie
Sentiment: 1
Sentence: I really appreciate the movie
Sentiment: 3
Sentence: Varun talks in a condescending way
Sentiment: 2
Sentence: Ram is angry he did not win the tournament
Sentiment: 1
Sentence: Today's dinner was awful
Sentiment: 1
Sentence: Johny is always complaining
Sentiment: 3
Sentence: Modi's demonetisation has been very controversial and confusing
Sentiment: 1
Sentence: People are left devastated by floods and droughts
Sentiment: 2
Sentence: Chahal did a fantastic job by getting the 6 wickets
Sentiment: 3
Sentence: England played terribly bad
Sentiment: 1
Sentence: Rahul Gandhi is a funny man
Sentiment: 3
Sentence: Always be grateful to those who are generous towards you
Sentiment: 3
Sentence: A friend in need is a friend indeed
Sentiment: 3
Sentence: Mary is a jubilant girl
Sentiment: 2
Sentence: There is so much of love and hatred in this world
Sentiment: 3
Sentence: Always be positive
Sentiment: 3
Sentence: Always be negative
Sentiment: 1
Sentence: Never be negative
Sentiment: 1
Sentence: Stop complaining and start doing something
Sentiment: 2
Sentence: He is a awesome thief
Sentiment: 3
Sentence: Ram did unbelievably well in this year's exams
Sentiment: 2
Sentence: This product is well designed and easy to use
Sentiment: 3

The sentiment decisions are made by a trained neural network. Unfortunately it is acting strangely based on different names you provide in the same sentence, but that it is to be expected. As discussed on GitHub, a factor is probably that various names don't appear often in the training data.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM