文字列内の日付とその位置を見つける必要があります。例の文字列を考えてみましょう
「興味深い日付は今日から 4 日で、今年の 7 月 20 日です。別の日付は 1997 年 2 月 18 日です」
出力が必要です (今日が 2013-07-14 であると仮定)
2013-07-17、位置 25
2013-07-20、位置 56
1997-02-18、位置 93
日付として認識される文字列のさまざまな部分を取得するコードを書くことができました。上記の出力を達成するには、これを強化/変更する必要があります。ヒントやヘルプをいただければ幸いです。
Properties props = new Properties();
AnnotationPipeline pipeline = new AnnotationPipeline();
pipeline.addAnnotator(new PTBTokenizerAnnotator(false));
pipeline.addAnnotator(new WordsToSentencesAnnotator(false));
pipeline.addAnnotator(new POSTaggerAnnotator(false));
pipeline.addAnnotator(new TimeAnnotator("sutime", props));
Annotation annotation = new Annotation("The interesting date is 4 days from today and it is 20th july of this year, another date is 18th Feb 1997");
annotation.set(CoreAnnotations.DocDateAnnotation.class, "2013-07-14");
pipeline.annotate(annotation);
List<CoreMap> timexAnnsAll = annotation.get(TimeAnnotations.TimexAnnotations.class);
timexAnnsAll.each(){
println it
}
上記のコードを使用すると、次のような出力が得られます。
今日から 4 日
今年の 7 月 20
日 1997 年 2 月 18 日
編集::
次の変更により、日付部分を取得できました
timexAnnsAll.each(){it ->
Timex timex = it.get(TimeAnnotations.TimexAnnotation.class);
println timex.val + " from : $it"
}
2013-07-18 from : 今日から 4 日間
2013-07-20 from : 今年の 7 月 20 日1997-02-18
from : 1997 年 2 月 18 日
ここで解決する必要があるのは、元の文字列内の日付の位置を見つけることだけです。