2016-06-30 3 views
0

verwende ich Stanford NLP Parser (http://sergey-tihon.github.io/Stanford.NLP.NET/StanfordParser.html), um Sätze zu analysieren.Stanford NLP gibt zurück: statt NNP

Das Problem ist, dass es eine Diskrepanz betwwen die Ergebnisse aus der Bibliothek und die Ergebnisse von Online-Demo-Seite (http://nlp.stanford.edu:8080/parser/index.jsp)

Das Problem mit dem folgenden Satz ist:

die Bühne. Plus, er

Wenn ich dieses Online laufen Dies ist die Ausgabe, die ich bekomme:

(ROOT (NP (DT die) (NN Stufe)())..)

(ROOT (NP (NP (NNP plus)) (,,) (NP (PRP er))))

Bitte beachten Sie, dass die Plus alsidentifiziert

Das Problem ist, dass der gleiche Satz einen etwas anderen Ausgang ergibt, wenn sie von der lib verarbeitet:

{(ROOT (FRAG (FRAG (NP (DT der) (NN Stufe)) (. Wie kann ich

Wie Sie sehen können, ist die Plus jetzt als :

identifiziert: (Plus) (FRAG (, ,) (NP (PRP er)}))))).) Erzwinge die lib, NNP zurückzugeben? Hier

ist der Code:

 var sent = "the stage. Plus, he"; 
     var lp = LexicalizedParser.loadModel(modelsDirectory + @"\lexparser\englishPCFG.ser.gz"); 
     var f = PTBTokenizer.factory(new CoreLabelTokenFactory(), ""); 
     var s = new java.io.StringReader(sent); 
     var w = f.getTokenizer(s).tokenize(); 
     s.close(); 
     var t = lp.apply(w); 

Antwort

0

Sind Sie auf Leerzeichen Zeichenüber (die tokenize.whitespace Eigenschaft)? In Ihrem zweiten Beispiel scheint die Bibliothek die Passage nicht in zwei Sätze aufzuteilen, was zu einem anderen Parse führt.

Auch, im Allgemeinen, was versuchst du hier zu tun? Dies sind ausreichend ungrammatische Sätze, dass das Parsing nahezu bedeutungslos ist (und der Parser ist fast garantiert versaut) und das NNP-Tag auf "Plus" ist ebenfalls ein Fehler.

+0

NNP-Tag auf 'Plus' ist ein Fehler? –

+0

Nun, ich bin unklar, was die Semantik des Satzes tatsächlich ist. Aber NNP ist ein Eigenname und Plus scheint eher ein Bindeglied ("CC") als ein Eigenname. –

+0

Ich bin nur ein Entwickler, ich weiß nicht, warum sie das wollen. Meine Aufgabe ist es, dies konsequent und richtig zu machen. –