2017-02-03 14 views
2

Я использую Stanford NLP v3.6 (JAVA) для вычисления настроения из английского предложения.Stanford NLP настроение неоднозначен результат

Стэнфорд NLP вычисляет полярность предложения от 0 до 4.

  • -очень отрицательной
  • 1 отрицательного
  • 2 нейтрального
  • 3 положительного
  • -очень положительной

Я запускаю несколько очень простых тестовых примеров, но получил очень большую nge.

Пример:

  1. Текст = Jhon является хорошим человеком, Настроения = 3 (то есть положительным)
  2. Текст = Дэвид хороший человек, Настроения = 2 (т.е. нейтрального)

В приведенном выше примере предложения такие же, другие, что и имя David, Jhon, но значения настроений различны. Разве это не двусмысленность?

Я использовал этот 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

Я получаю аналогичные абсурдные результаты с версией 3.7.0 и Python. Я думаю, что это ошибка. – sds

+0

См. Https://github.com/stanfordnlp/CoreNLP/issues/351 – sds

ответ

0

Решения настроения сделаны с помощью обученной нейронной сети. К сожалению, он действует странно на основе разных имен, которые вы предоставляете в том же предложении, но этого и следовало ожидать. Как обсуждалось в GitHub, вероятно, существует вероятность того, что различные имена не часто появляются в данных обучения.