2017-02-03 3 views
2

ich Stanford NLP v3.6 bin mit (JAVA) Gefühl von Englisch Sätze zu berechnen.Stanford NLP Gefühl zwiespältiges Ergebnis

Stanford NLP berechnet die Polarität des Satzes von 0 bis 4.

  • 0 sehr negative
  • 1 negativ
  • 2 neutral
  • 3 positive
  • 4 sehr positive

Ich habe ein paar sehr einfache Testfälle, aber sehr strat nge Ergebnis.

Beispiel:

  1. Text = Jhon ist guter Mensch, Sentiment = 3 (dh positiver)
  2. Text = David ist guter Mensch, Sentiment = 2 (dh neutral)

Im obigen Beispiel sind die Sätze gleich, andere, dass der Name David, Jhon, aber Sentiment Werte sind unterschiedlich. Ist diese Mehrdeutigkeit nicht?

ich verwendet, um dieses Java-Code für die Berechnung der Stimmung:

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; 

     } 

Ist I etwas in Java-Code bin fehlt?

Ich bekam auch negative Stimmung (d. H. Weniger als 2), wenn der Satz positiv war und umgekehrt.

Danke.

Dies sind Ergebnisse, die ich mit einfachen englischen Sätzen bekam:

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

Ich bekomme ähnliche absurde Ergebnisse mit Version 3.7.0 und Python. Ich denke, das ist ein Fehler. – sds

+0

Siehe https://github.com/stanfordnlp/CoreNLP/issues/351 – sds

Antwort

0

Die Stimmung Entscheidungen eines trainierten neuronalen Netz gestellt werden. Leider handelt es sich seltsamerweise um verschiedene Namen, die Sie im selben Satz angeben, aber das ist zu erwarten. Wie auf GitHub diskutiert, ist ein Faktor wahrscheinlich, dass verschiedene Namen in den Trainingsdaten nicht oft vorkommen.

Verwandte Themen