4

我正在研究一些自然语言处理算法来阅读一段文本,如果文本似乎试图建议一个会议请求,它会自动为你设置那个会议。

例如,如果电子邮件文本内容为:

让我们明天晚上 7 点在市中心的某个地方见面。”

该算法应该能够检测事件的时间、日期和地点。

有人知道我可以为此目的使用的一些现有的 NLP 算法吗?我一直在研究一些 NLP 资源(如NLTKR 中的一些工具),但没有取得多大成功。

谢谢

4

4 回答 4

5

这是信息提取的一种应用,可以通过隐马尔可夫模型 (HMM) 或条件随机场 (CRF) 等序列分割算法更具体地解决。

对于软件实现,您可能想从 UMass-Amherst 的MALLET 工具包开始,它是一个流行的库,它实现了用于信息提取的 CRF。

您可以将句子中的每个标记视为用您感兴趣的字段(或“x”表示以上都不是)标记的东西,作为单词特征(如词性、大小写、字典成员资格等)的函数.)... 是这样的:

token       label       features
-----------------------------------
Let         x           POS=NNP, capitalized
's          x           POS=POS
meet        x           POS=VBP
tomorrow    DATE        POS=NN, inDateDictionary
someplace   x           POS=NN
in          x           POS=IN
Downtown    LOCATION    POS=NN, capitalized
at          x           POS=IN
7pm         TIME        POS=CD, matchesTimeRegex
.           x           POS=.

不过,您需要先提供一些手工标记的训练数据。

于 2013-10-02T18:22:04.983 回答
2

你应该看看http://opennlp.apache.org java toolkit

于 2013-10-04T06:50:07.017 回答
0

这个问题今天仍然是头条新闻。如果您(仍在)寻找算法,则可以使用 ANTLR 作为解析器生成器的解决方案,可以选择多种编程语言(C/C++/C#/JS/Java/...)。一些开源参考:

于 2020-08-14T18:12:20.070 回答
0

我认为你应该能够用 spacy 做到这一点。我在 jupyter-notebook 中试过这个

import spacy
nlp = spacy.load('en_core_web_sm')

doc = nlp(u'Over the last quarter in 2018-12-02 Apple sold nearly 20 thousand iPods for a profit of $6 million.')
displacy.render(doc, style='ent', jupyter=True)

输出

Over the last quarter DATE in 2018-12-02 DATE Apple ORG sold nearly 20 thousand CARDINAL iPods PRODUCT for a profit of $6 million MONEY .
于 2020-01-16T13:02:11.060 回答