使用自然语言处理识别项目列表

5 algorithm text nlp stanford-nlp opennlp

NLP 解析器有没有办法识别列表?
例如,“老虎、狮子和大猩猩”应该被标识为一个列表
(我不需要将它标识为一个动物列表;一个列表就足够了)。

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

另一个例子,“他的癌症、贫血和糖尿病检测呈阴性”。在这里,“阴性”一词应该与三种疾病联系在一起。

任何开源 NLP 软件包(如 OpenNLP 或 Stanford CoreNLP)都可以做到这一点吗?还有其他解决办法吗?


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

但后来我发现了斯坦福 NLP 的 OpenIE 模型。这似乎做得很好。
例如,“He has a pen and a book”给出了 2 个关系(He;has;a pen)(He;has;a book)

该模型的问题在于它不适用于不完整的句子,例如“has a pen and a book”
(据我了解,这是因为 OpenIE 只能提取三元组)
当涉及否定时它也会失败。例如,“他没有笔”

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

Ale*_*kov 3

恐怕完整的答案可以填补博士论文的大部分内容:)

没有通用工具可以满足您的需要。您需要自己编写。如果您查看示例,您会发现可以通过从标记and或逗号开始,然后遍历其周围的图形来构建列表来提取列表。在这种特殊情况下,您可以查看conjappos链接较小名词短语的

您还可以查看 POS 标签模式,例如 ( N*, ,, N*, CC, N*) - 这是一种 hack,但如果您想要快速获得结果并且愿意错过回忆,这可能是您的最佳方法。

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