2016-04-25 5 views
0

Дата, обнаруженная в моей следующей программе, делится на два отдельных упоминания, тогда как обнаруженная дата на выходе NER CoreNLP demo является такой же, как и должно быть. Что мне следует изменить в моей программе, чтобы исправить это.Почему мои примечания NamedEntityAnnotator для даты отличаются от вывода демонстрации CoreNLP?

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)); 
       } 
     } 
} 

Выход из этой программы:

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

Выход из CoreNLP онлайн демо: enter image description here

+0

Какую версию CoreNLP вы используете? Онлайн-демонстрационный трек тщательно отслеживает Git HEAD проекта; есть вероятность, что разница в выходе - это просто ошибка, которая была исправлена. –

+0

Mine v3.6.0 из [здесь] (http://stanfordnlp.github.io/CoreNLP/#download). – crackjack

ответ

2

Обратите внимание, что онлайн демо показывает любую последовательность последовательных лексем с той же РЭК теге как принадлежащие к той же единице. Рассмотрим это предложение:

The event happened on February 5th January 9th. 

Этот пример дает «5 февраля 9 января» в качестве одного DATE в онлайн демо.

Однако он признает «5 февраля» и «9 января», как упоминает отдельный субъект.

В вашем примере кода рассматриваются упоминания, а не фрагменты NER. Упоминания не показываются онлайн-демонстрацией.

Это, как говорится, я не уверен, почему SUTime не присоединится к вашему 5 февраля и 5 февраля 2015 года. Благодарим вас за это, я изучу усовершенствование модуля, чтобы исправить эту проблему в будущих выпусках.

+0

Оказывается, у меня с ошибкой «февраль», как «Феврарари». Исправлено это, и вся дата определяется как одно упоминание, как и ожидалось. Месяц с ошибкой (+ день) по-прежнему был помечен как ДАТА ранее, поэтому я не подозревал опечатки. Но хорошо знать, что демо делает chunking и не упоминает обнаружение. – crackjack