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】:我认为没有任何框架可以开箱即用。您可以做的是创建一组正则表达式来匹配这些模式。
【讨论】:
【参考方案2】:您可以使用JChronic,Chronic 的 Java 端口。
【讨论】:
【参考方案3】:你试过jchronic吗?但是,我怀疑任何库都可以直接处理句子:您必须自己提取句子片段并将它们提供给 NLP 日期解析框架,也许是在试错的基础上(越来越大的片段,直到框架抛出一个错误)。
【讨论】:
【参考方案4】: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#【参考方案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的自然语言日期和时间解析器[关闭]的主要内容,如果未能解决你的问题,请参考以下文章