2016-05-12 3 views
0

Ich bin daran interessiert, ein neues Stimmungsmodell mit meinem eigenen Datensatz zu trainieren. Ich weiß, dass ich eine Datei mit Sentiment für Sätze und ihre Komponenten Phrasen und Wörter erstellen muss.Wie kann ich mithilfe von Stanford CoreNLP effektiv ein Sentimentmodell-Trainingsdatenset erstellen?

ich herausgefunden, wie ein Baum wie folgt für den Satz „Ich liebe dich nicht.“ Zu schaffen, über die BuildBinarizedDataset:

(1 (1 I) (1 (1 (1 (1 do) (1 not)) (1 (1 love) (1 you))) (1 .))) 

Dies ist jedoch besonders schwierig scheint Etiketten in diesem Format manuell hinzufügen insbesondere für Phrasen innerhalb eines längeren Satzes. Es wäre viel einfacher, wenn ich das Folgende für Beschriftungszwecke erzeugen könnte, dann umwandele, wenn ich bereit bin, das neue Modell zu trainieren.

sentiment_score pline1 

sentiment_score phrase1 

sentiment_score phrase2 

........................... 

sentiment_score phraseN 

BLANK ROW 

sentiment_score pline2 

Das Problem ist, dass ich nicht herausfinden kann, wie man das aus einem Satz mit dem Parser erzeugt. Wenn jemand Anleitung geben oder mich zu einer Dokumentation führen könnte, die diesen Prozess erklärt, würde es mir enorm helfen.

Antwort

1

Hier ist ein Beispielcode, den ich geschrieben habe, um durch einen Baum zu gehen und jeden Teilbaum auszudrucken. Um den Ausdruck zu erhalten, müssen Sie einfach die printSubTrees-Methode verwenden, die ich geschrieben habe, und alles in Ihrem Sentiment-Baum ausdrucken lassen.

import edu.stanford.nlp.ling.CoreAnnotations; 
import edu.stanford.nlp.ling.Word; 
import edu.stanford.nlp.parser.lexparser.LexicalizedParser; 
import edu.stanford.nlp.parser.lexparser.TreeBinarizer; 
import edu.stanford.nlp.pipeline.Annotation; 
import edu.stanford.nlp.pipeline.StanfordCoreNLP; 
import edu.stanford.nlp.trees.*; 

import java.io.IOException; 
import java.util.ArrayList; 
import java.util.Properties; 

public class SubTreesExample { 

    public static void printSubTrees(Tree inputTree) { 
     ArrayList<Word> words = new ArrayList<Word>(); 
     for (Tree leaf : inputTree.getLeaves()) { 
      words.addAll(leaf.yieldWords()); 
     } 
     System.out.print(inputTree.label()+"\t"); 
     for (Word w : words) { 
      System.out.print(w.word()+ " "); 
     } 
     System.out.println(); 
     for (Tree subTree : inputTree.children()) { 
      printSubTrees(subTree); 
     } 
    } 

    public static void main(String[] args) { 
     Properties props = new Properties(); 
     props.setProperty("annotators", "tokenize,ssplit,pos,lemma,ner,parse"); 
     StanfordCoreNLP pipeline = new StanfordCoreNLP(props); 
     String text = "I do not love you."; 
     Annotation annotation = new Annotation(text); 
     pipeline.annotate(annotation); 
     Tree sentenceTree = annotation.get(CoreAnnotations.SentencesAnnotation.class).get(0).get(
       TreeCoreAnnotations.TreeAnnotation.class); 
     printSubTrees(sentenceTree); 

    } 
} 
+0

Vielen Dank für den Code! Es kompiliert wunderschön mit der Stanford-corenlp-3.6.0.jar, aber ich konnte es nicht ausführen. Kannst du mir sagen, was das bedeutet? Fehler: Ein JNI Fehler aufgetreten ist, geben Sie bitte Ihre Installation überprüfen und wieder Exception in thread "main" java.lang.NoClassDefFoundError versuchen: edu/Stanford/nlp/Bäume/Baum bei java.lang.Class.getDeclaredMethods0 (Muttersprache Verfahren) bei java.lang.Class.privateGetDeclaredMethods (Unknown Source) bei java.lang.Class.privateGetMethodRecursive (Unknown Source) bei java.lang.Class.getMethod0 (Unknown Source) ... – jdscott

+0

... at java.lang.Class.getMethod (Unbekannte Quelle) bei sun.launcher.LauncherHelper.validateMainClass (Unbekannte Quelle) bei sun.launcher.LauncherHelper.checkAndLoadMain (Unbekannte Quelle) Ca verwendet von: java.lang.ClassNotFoundException: edu.stanford.nlp.trees.Tree bei java.net.URLClassLoader.findClass (Unbekannte Quelle) bei java.lang.ClassLoader.loadClass (Unbekannte Quelle) bei sun.misc. Launcher $ AppClassLoader.loadClass (Unbekannte Quelle) bei java.lang.ClassLoader.loadClass (Unbekannte Quelle) ... 7 mehr – jdscott

+0

Wie läuft der Code? Es scheint, als ob Sie eine Art von CLASSPATH-Problem haben. – StanfordNLPHelp

Verwandte Themen