2016-12-24 27 views
1

未来へのあいまいな時間参照を解決するためにSUTimeの中にオプションがあることがわかりますが、NERアノテーターにそのように伝える方法がわかりません。たとえば、この文に「金曜日に出かけよう」と注釈を付けると(そして今日の日曜日と言いましょう)、SUTimeは、次の金曜日の日付ではなく、日曜日に近いので、デフォルトで表示されます。ありがとう。NER SUTimeに未解決の問題を解決するように指示するにはどうすればよいですか?

答えて

3

独自の文章ファイルを用意する必要があります。 corenlpからデフォルトのものをコピーすることができます。これは、その後のコメント# Final rules to determine how to resolve dateで始まるセクションの末尾に次のコードを追加し、どこかstanford-sutime-models-1.3.5.jar:edu/stanford/nlp/models/sutime/english.sutime.txt ように配置する必要があります。

{ 
    pattern: ([ $hasTemporal ]), 
    action: VTag($0[0].temporal.value, "resolveTo", RESOLVE_TO_FUTURE) 
    } 

これは、すべてのtemporalsが将来に解決されるようにタグ付けします。いくつかの時間パターンを過去に解決するいくつかの事前定義タグがあることに注意してください。それらも削除/変更することができます。

その後TimeAnnotatorコンストラクタに自分のファイルへのリソースパスを提供します。

Properties props = new Properties(); 
props.setProperty("sutime.rules", "edu/stanford/nlp/models/sutime/defs.sutime.txt,PATH_TO_YOUR_RESOURCE_FOLDER/english.sutime.txt,edu/stanford/nlp/models/sutime/english.holidays.sutime.txt"); 
TimeAnnotator timeAnnotator = new TimeAnnotator("sutime", props); 

DocDateAnnotationの小さなトリックもあります。 「金曜日の午後7時」などの時間パターンを正しく解決するには、DocDateAnnotationにiso形式の日時(YYYY-MM-DDの日付だけでなく)を指定する必要があります。

関連する問題