2016-04-25 12 views
0

Das Datum, das von meinem folgenden Programm erkannt wird, wird in zwei separate Erwähnungen aufgeteilt, während das ermittelte Datum in der NER-Ausgabe von CoreNLP demo einfach ist, wie es sein sollte. Was soll ich in meinem Programm bearbeiten um dies zu korrigieren?Warum unterscheidet sich mein NamedEntityAnnotator für Datumsangaben von der Ausgabe der CoreNLP-Demo?

Properties props = new Properties(); 
props.setProperty("annotators", "tokenize, ssplit, pos, lemma, ner, entitymentions"); 
StanfordCoreNLP pipeline = new StanfordCoreNLP(props); 

String text = "This software was released on Februrary 5, 2015."; 
Annotation document = new Annotation(text); 
pipeline.annotate(document); 
List<CoreMap> sentences = document.get(SentencesAnnotation.class); 

for(CoreMap sentence: sentences) { 
     List<CoreMap> mentions = sentence.get(MentionsAnnotation.class); 
     if (mentions != null) { 
       for (CoreMap mention : mentions) { 
        System.out.println("== Token=" + mention.get(TextAnnotation.class)); 
        System.out.println("NER=" + mention.get(NamedEntityTagAnnotation.class)); 
        System.out.println("Normalized NER=" + mention.get(NormalizedNamedEntityTagAnnotation.class)); 
       } 
     } 
} 

Output von diesem Programm:

== Token=Februrary 5, 
NER=DATE 
Normalized NER=****0205 
== Token=2015 
NER=DATE 
Normalized NER=2015 

Ausgabe aus CoreNLP Online-Demo: enter image description here

+0

Welche Version von CoreNLP verwenden Sie? Die Online-Demo verfolgt den Git HEAD des Projekts ziemlich genau; Es besteht die Möglichkeit, dass der Unterschied in der Ausgabe nur ein Fehler ist, der behoben wurde. –

+0

Mine ist v3.6.0 von [hier] (http://stanfordnlp.github.io/CoreNLP/#download). – crackjack

Antwort

2

beachte, dass die Online-Demo jede Folge von aufeinanderfolgenden Token mit dem gleichen NER-Tag zeigt als zugehörig zu derselben Einheit. Betrachten Sie diesen Satz:

The event happened on February 5th January 9th. 

Dieses Beispiel yields „5. Februar 9. Januar“ als ein einzelnes Datum in der Online-Demo.

Aber es erkennt "5. Februar" und "9. Januar" als separate Entity erwähnt.

Ihr Beispielcode betrachtet Erwähnungen, nicht NER-Stücke. Erwähnungen werden von der Online-Demo nicht angezeigt.

Das ist gesagt, ich bin mir nicht sicher, warum SUTime nicht zusammen den 5. Februar 2015 in Ihrem Beispiel beitreten. Vielen Dank, dass Sie das Problem behoben haben. Ich werde versuchen, das Modul zu verbessern, um dieses Problem in zukünftigen Versionen zu beheben.

+0

Stellt sich heraus, dass ich "Februar" als "Februar" falsch geschrieben habe. Das wurde behoben und das gesamte Datum wird wie erwartet als einzelne Erwähnung erkannt. Der falsch geschriebene Monat (+ Tag) wurde noch früher als DATUM markiert und daher habe ich keinen Tippfehler vermutet. Aber gut zu wissen, dass die Demo Chunking macht und keine Erkennung erwähnt. – crackjack