斯坦福NLP情绪模糊不清

时间:2017-02-03 14:59:13

标签: java algorithm nlp stanford-nlp sentiment-analysis

我使用 Stanford NLP v3.6 JAVA )来计算英语句子的情绪。< / p>

斯坦福NLP计算从0到4的句子极性。

  • 0非常消极
  • 1个负面
  • 2中立
  • 3 positive
  • 4非常积极

我运行了一些非常简单的测试用例但得到了非常奇怪的结果。

示例:

  1. Text = Jhon是好人,情感= 3(即正面
  2. 文字=大卫是好人,情感= 2(即中立
  3. 在上面的示例中,句子相同,而名称DavidJhon除外,但情感值不同。 不是这种含糊不清

    我使用这个Java代码来计算情绪:

     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;
    
            }
    

    我是否遗漏了java代码中的内容

    当句子为正时,我也有负面情绪(即小于2),反之亦然。

    感谢。

    以下是我用简单的英语句子得到的结果:

    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
    

1 个答案:

答案 0 :(得分:0)

情绪决策由训练有素的神经网络决定。不幸的是,它基于你在同一个句子中提供的不同名称而表现得很奇怪,但这是可以预期的。正如在GitHub上讨论的那样,一个因素可能是各种名称在训练数据中不常出现。