java的自然语言日期和时间解析器[关闭]

Posted

技术标签:

【中文标题】java的自然语言日期和时间解析器[关闭]【英文标题】:Natural Language date and time parser for java [closed] 【发布时间】:2010-11-27 11:31:29 【问题描述】:

我正在开发一个自然语言解析器,它检查英文句子并提取一些信息,如姓名、日期等。

例如:“我们下周二下午 5 点在海滩见面。

所以输出将类似于:“让我们在 2009 年 9 月 15 日下午 1700 点在海滩见面

所以基本上,我想知道的是是否有任何框架或库可用于 JAVA 来执行此类操作,例如从句子中解析日期并以某种指定格式给出输出。

问候, 普拉纳夫


感谢您的回复。我看过一些 NLP,例如 LingPipe、OpenPL、Stanford NLP。我想问一下他们有什么东西可以用于java的日期解析。

【问题讨论】:

撞!我也有这个问题,建议的解决方案似乎没有回答它 仅供参考,这个问题的后续副本,Generic Date Parsing Library from unstructured text 这个github.com/zoho/hawking可以解决你的问题 【参考方案1】:

Natty 是 JChronic 的一个非常好的替代品。

【讨论】:

我发誓 Natty 几乎可以处理所有事情。例如,2 wednesdays from now 无法被我找到的任何其他解决方案解析。 +1 我有一个系统,我正在接收字符串,我需要(在最佳猜测的基础上)删除 URL,任何可能是 html 和任何可能是日期的东西 - 我已经发现 Natty 非常适合后者,但我已经为 4 月、5 月和 6 月建立了例外,这些都是有效的女孩名字。 似乎 Natty 遇到了格式冲突的问题。试试15/12/2004。它认为它是today 15th hour 很好,您甚至可以在这里在线演示中试用解析器:natty.joestelmach.com/try.jsp#【参考方案2】:

您可以使用JChronic,Chronic 的 Java 端口。

【讨论】:

【参考方案3】:

你试过jchronic吗?但是,我怀疑任何库都可以直接处理句子:您必须自己提取句子片段并将它们提供给 NLP 日期解析框架,也许是在试错的基础上(越来越大的片段,直到框架抛出一个错误)。

【讨论】:

【参考方案4】:

我认为没有任何框架可以开箱即用。您可以做的是创建一组正则表达式来匹配这些模式。

【讨论】:

【参考方案5】:

我建议将UIMA 与OpenNLP 连接器和相同的手工正则表达式规则一起使用。

【讨论】:

【参考方案6】:

我在 Python 的 NLTK 中编写了一个 NLP 脚本,并将结果提供给 Ruby 的 chronic。

【讨论】:

【参考方案7】:

对于我的用例,chrono-java 让我更幸运——遗憾的是,它看起来陈旧并且在任何 Maven 存储库中都不可用(也不能通过 https://jitpack.io/,因为构建已损坏),因此您必须修复并构建为你自己。

但是,检查代码并修复依赖项(maven-javadoc-plugin 缺少 groupId 并且我更新了版本),让我能够成功构建并运行一个简单的示例:

List<ParsedResult> results = Chrono.Parse("Datum  Freitag, 08.04. bis einschl. Sonntag 10.04.2016");
    results.forEach(result -> System.out.println(result));

导致 2 个日期被提取:

ParsedResult: " 08.04" > 04/08/2018 12:00
ParsedResult: "10.04.2016" > 04/10/2016 12:00

【讨论】:

【参考方案8】:

相当老的问题 bur PrettyTime::NLP 是另一种尝试

【讨论】:

以上是关于java的自然语言日期和时间解析器[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Java的智能日期/时间解析器[关闭]

JAVA中的日期和时间选择器[关闭]

Java 是不是有一个好的 *strict* 日期解析器?

API--DateFormat-字符串和日期对象之间的转换

java 日期格式化

win10系统怎么调时间