我如何指示NER SUTime解决未来?

时间:2016-12-24 17:53:40

标签: stanford-nlp

我看到SUTime内部有一个选项来解决对未来的模糊时间引用,但我不知道如何告诉NER注释器这样做。例如,当注释这句话时,让我们在星期五和#34; (并且让我们说今天的星期天),我希望SUTime能够在下周五的日期返回,而不是前一个,默认情况下会显示,因为它接近周日。感谢。

1 个答案:

答案 0 :(得分:3)

您必须提供自己的语法文件。您可以从corenlp复制默认值。它应该位于stanford-sutime-models-1.3.5.jar:edu/stanford/nlp/models/sutime/english.sutime.txt之类的地方 然后将以下代码添加到该部分的末尾,该注释以注释# Final rules to determine how to resolve date

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

这将标记要解决的所有时间段。请注意,有几个预定义标记可以将某些时间模式解析为过去。您也可以删除/修改它们。

然后为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点和#34的时间模式,如"为了正确解决,你应该在DocDateAnnotation中提供一个iso格式化的日期时间(不仅仅是像YYYY-MM-DD这样的日期)。