java的自然语言日期和时间解析器

时间:2009-09-11 11:42:57

标签: java datetime parsing nlp

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

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

所以输出将是这样的:“让我们在海滩1700小时迎接15/09/2009

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

此致 Pranav


感谢您的回复。我查看过几个NLP,例如LingPipe,OpenPL,Stanford NLP。我想问他们为java的日期解析做了什么。

8 个答案:

答案 0 :(得分:23)

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

答案 1 :(得分:3)

您可以使用JChronicChronic的Java端口。

答案 2 :(得分:1)

你试过jchronic吗?但是,我怀疑任何库都可以直接使用句子:你必须自己提取句子片段并将它们提供给NLP日期解析框架,也许是基于试验n错误(更大和更大的片段,直到框架抛出一个错误)。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

我建议将UIMAOpenNLP连接符和相同的手工制作正则表达式规则一起使用。

答案 5 :(得分:0)

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

答案 6 :(得分:0)

对于我的用例,我对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

答案 7 :(得分:0)

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