使用自然语言处理

时间:2017-05-22 12:18:25

标签: algorithm text nlp stanford-nlp opennlp

NLP解析器有没有办法识别列表?
例如,"老虎,狮子和大猩猩" 应该被识别为列表
(我不需要将它确定为动物列表;只需一个列表即可。)

我的最终目标是将常用动词/单词链接到列表中的所有项目。 例如,考虑句子"他找到了一支笔,一本书和一个手电筒" 。在这里,"找到" 动词应该链接到所有3个项目。

另一个例子,"他被检测为癌症,贫血和糖尿病阴性" 。在这里," negative" 这个词应与三种疾病联系起来。

OpenNLP或Stanford CoreNLP等任何开源NLP软件包都可以实现吗?还有其他方法吗?


修改
就像其中一个答案中提到的那样,我最初的想法是手动解析列表并通过查看逗号的位置来查找项目等。

然后我发现了斯坦福NLP的OpenIE模型。这似乎做得很好。
例如,"他有一支笔和一本书" 给出两个关系(他;有;一支笔)(他;有;一本书)

该模型的问题在于它不适用于不完整的句子,例如"有一支笔和一本书"
(据我所知,这是因为OpenIE只能提取三元组)
当涉及否定时它也会失败。例如,"他没有钢笔"

这些问题有解决方案吗?目前可用于信息提取的最佳解决方案是什么?

2 个答案:

答案 0 :(得分:3)

您要做的事情称为Information Extraction

在您的情况下,任务是提取关于实体的的基本命题(作为枚举给出)而不是仅仅一个实体(这是通常的场景)。例如,您想从句子He found a pen, a book and a flashlight.中提取以下三个命题:

  • 找(X,笔)
  • 找(X,书)
  • 找(X,手电筒)

X代表被称为He的实体。正如Savkov先生已经指出的那样,信息提取是一个非常难的问题,其解决方案不仅仅是Stack Overflow的答案。

有许多信息提取方法。正如Savkov先生所建议的那样,基于POS标签的解决方案可能是一个很好的起点。我建议您查看this nice tutorial based on NLTK(特别是第2.2节。"标记模式")和this paper

答案 1 :(得分:2)

我担心完整的答案可以填补博士论文的好处:)

没有通用工具可以满足您的需求。你需要自己写。如果查看this示例,您可以看到您可以从令牌and或逗号开始提取列表,然后遍历它周围的图形以构建列表。在这种特殊情况下,您可以查看链接较小名词短语的conjappos关系。

您还可以查看POS标记模式,例如(N*,N*CCN*) - 这是一个黑客但是如果你想要快速的结果并且你愿意错过召回,它可能是你最好的方法。

至于您要求包含修饰符(例如否定) - 这是一项单独的任务,应该在您确定列表后进行。