Stanford nlp CoreNLP-NER和SUTime仅识别绝对日期

Stanford nlp CoreNLP-NER和SUTime仅识别绝对日期,stanford-nlp,named-entity-recognition,sutime,Stanford Nlp,Named Entity Recognition,Sutime,我正在使用CoreNLP的命名实体识别注释器 我的问题是,我不想将相对日期识别为实体。 我的目标是将日期与事件联系起来 一些有趣的日期是1997年2月18日,7月20日,1992年,从今天算起4天,星期一是13日 在这个例子中,我想强调“1997年2月18日”、“7月20日”和“1992年”。 即使其中一些日期不完整,它们仍然可以用于搜索事件 另一方面,“从今天开始的4天”和“13号星期一”对我来说并不有趣:原因是第一个日期与当前日期(或文本编写日期)有关,而第二个日期过于笼统 有没有一种简单的

我正在使用CoreNLP的命名实体识别注释器

我的问题是,我不想将相对日期识别为实体。 我的目标是将日期与事件联系起来

一些有趣的日期是1997年2月18日,7月20日,1992年,从今天算起4天,星期一是13日

在这个例子中,我想强调“1997年2月18日”、“7月20日”和“1992年”。 即使其中一些日期不完整,它们仍然可以用于搜索事件

另一方面,“从今天开始的4天”和“13号星期一”对我来说并不有趣:原因是第一个日期与当前日期(或文本编写日期)有关,而第二个日期过于笼统

有没有一种简单的方法可以告诉NER注释器放弃相对日期


谢谢

我找到了以下解决方案,在我的案例中效果非常好

表示时间/日期命名实体的每个标记都有一个包含其规范化形式的注释字段

我想要识别的绝对日期将具有一个规范化的形式,它遵循以下模式:

  • 1997年2月18日->1997/02/18
  • 7月20日->XXXX/07/20
  • 1992年->1992年
使用正则表达式可以丢弃没有像这样的规范化形式的注释

(\d{4}|X{4})((\/\d{2}(\/\d{2})?)?)

正如所说的,这是很困难的,因为7月20日本身就是一个相对的日期(哪一年?)。通常,SUTime使用
DocDateAnnotation
,您可以使用以下设置:
document.set(coreanotations.DocDateAnnotation.class,Instant.now().toString())
并可能通过将其设置为null来清除,但这将错过7月20日以及从今天起的4天。