自然语言处理中的日期解析技术

4

我一直在尝试使用多种NLP文本解析器,但发现大部分甚至无法完成实际文本中的一些最简单的任务(并没有预处理来展示系统有多“强大”)。以下是一个例子:

From Sundays until Thursdays every week

我还没有找到一个能够正确解析这个的解析器。我尝试了很多,包括斯坦福的sutime。有人能推荐一下可以处理自然文本日期的软件吗?


1
你希望这个句子提供一个日期吗?即使是隐含的,这个句子也没有日期。如果你只想提取与日历相关的元素(例如日、小时、月等),那么你应该研究语义角色标注。 - Chthonic Project
我贴了一个问题,我认为你的问题是一个重复的问题。简短的答案是,可能没有现成的解决方案供你使用,但对于你来说,构建一个能够在现实世界中(即具有真实人类输入)80%完成工作的东西并不难。 - Aditya Mukherji
1
你尝试过哪些其他的NLP时间解析器,以便我们不会推荐相同的呢?如果没有现成的工具可以解决你的问题(通常是这样),你可以考虑通过添加自定义规则来扩展现有的工具,以解决它们失败的问题... 除了SUTime之外,我还尝试过以下一些:PyTimeParse NattyDateparser 此外,关于实现时间表达式解析器的更多信息,SUTime实现的这篇论文可能会有所帮助。 - pelumi
1个回答

1

我在寻找时也没有找到一个,所以我自己写了一个。它是我的.NET自然语言引擎的一部分。

当你输入这个短语时,演示显示的是下周而不是每周(它也可以处理无限制),以下是演示:

Sample output

一些评论:

1)处理所有可能的英语语言时间表达是一个巨大的任务。 我已经致力于解决这个问题多年,以找到一种清晰的方式来表示时间表达式以及分析英语时间表达式所需的许多规则。

2)除了找到表示典型日历日期时间和此类日期时间范围的方法外,您还需要找到表示无限序列(例如“每个星期一”)和半无限序列(例如“在......之前的每个工作日”)的方法。 然后您还需要在其上添加代数运算以组合时间表达式。

3)时间表达式在英语中常常存在歧义,并且不同文化背景下的解释可能不同。

4)结果通常必须根据上下文或对话历史进行解释。“谁在星期一打电话?”与“提醒我在星期一”不同,又与“显示我星期一的统计数据”不同。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接