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:
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. –
Mine ist v3.6.0 von [hier] (http://stanfordnlp.github.io/CoreNLP/#download). – crackjack