【问题标题】:Identify a list of items using Natural Language Processing使用自然语言处理识别项目列表
【发布时间】:2017-10-22 02:24:10
【问题描述】:

NLP 解析器有没有办法识别列表?
例如,“a tiger, a lion and a gorilla” 应该被识别为一个列表
(我不需要将其识别为动物列表;只需一个列表就足够了)。

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

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

这可以通过任何开源 NLP 包(如 OpenNLP 或 Stanford CoreNLP)实现吗?还有其他解决方案吗?


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

但后来我发现了斯坦福 NLP 的 OpenIE 模型。这似乎做得很好。
例如,"He has a pen and a book" 给出了 (He;has;a pen)(He;has;一本书)

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

这些问题有解决方案吗?目前信息提取的最佳解决方案有哪些?

【问题讨论】:

  • 既然您提到了解析和斯坦福 NLP:您是否检查过 Stanford's online version of the parser 如何处理“列表”?它们被组合为一个名词短语,这个名词短语附加到动词上。 (不过,从依赖项中获取这些信息有点复杂。)

标签: algorithm text nlp stanford-nlp opennlp


【解决方案1】:

您正在尝试做的事情称为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

【讨论】:

  • 您好!看起来斯坦福 CoreNLP 的 OpenIE 模型可以为我完成这项工作。但它有一些与我相关的局限性。请查看更新后的问题以获取更多信息。
  • 我想了解更多关于信息提取的信息。斯坦福大学的 OpenIE 和华盛顿大学在GitHub 上提供的一样吗?还有其他值得检查的 IE 模型吗?谢谢!
【解决方案2】:

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

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

您还可以查看 POS 标签模式,例如(N*,N*CCN*)——这是一种技巧,但如果您想要快速获得结果,这可能是您的最佳方法你愿意错过召回。

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

【讨论】:

  • 感谢您的回复!是的,我最初也在考虑这种方法。但我有点犹豫,因为我不太了解解析或标签和依赖的含义。我找到了另一种似乎对我有用的解决方案。请参阅编辑以获取更新信息。
猜你喜欢
  • 1970-01-01
  • 2011-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-23
  • 2019-05-07
  • 1970-01-01
相关资源
最近更新 更多