2016-04-25 3 views
0

私の次のプログラムから検出された日付は、2つの別々の言及に分割されますが、CoreNLP demoのNER出力で検出された日付は、これを修正するには、私のプログラムで何を編集すべきですか?このプログラムからなぜ私の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)); 
       } 
     } 
} 

出力:CoreNLPオンラインデモから

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

出力:オンラインデモが属しているのと同じNERタグを持つ連続したトークンの任意のシーケンスを示していることを enter image description here

+0

ご使用のCoreNLPのバージョンは?オンラインデモではプロジェクトのGit HEADをかなり緊密に追跡しています。出力の違いは修正されたばかりのバグである可能性があります。 –

+0

マインは[ここ](http://stanfordnlp.github.io/CoreNLP/#download)からv3.6.0です。 – crackjack

答えて

2

注意同じユニットに。

この例では、オンラインデモで1つのDATEとして「1月2日5月9日」と表示されます。

ただし、「2月5日」と「1月9日」は別々のエンティティとして認識されます。

サンプルコードはNERチャンクではなく、言及を見ています。オンラインデモでは賛成票が表示されていません。

SUTimeがなぜあなたの例で2月5日と2015に一緒に参加しないのか分かりません。これをお寄せいただき、ありがとうございます。将来のリリースでこの問題を修正するためのモジュールを改善する予定です。

+0

私は 'Februrary'としてミスピール 'February'を持っていることが分かります。これを修正し、日付全体が単一の言葉として検出されるようになりました。ミスペースの月(+日)はDATEより早くタグ付けされていたので、誤字を疑わなかった。しかし、デモがチャンクをしていて、検出に言及していないことを知っていると良いです。 – crackjack

関連する問題