首页 文章

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

提问于
浏览
2

NLP解析器有没有办法识别列表?
例如,"a tiger, a lion and a gorilla"应标识为列表
(我不需要将它识别为动物列表;只需一个列表即可) .

我的最终目标是将一个共同的动词/单词链接到列表中的所有项目 . 例如,考虑句子 "He found a pen, a book and a flashlight" . 在这里,"found"动词应该链接到所有3个项目 .

另一个例子, "He was tested negative for cancer, anemia and diabetes" . 在这里,"negative"这个词应与三种疾病联系起来 .

是否可以使用OpenNLP或Stanford CoreNLP等任何开源NLP软件包?还有其他方法吗?

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

但后来我发现了斯坦福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只能提取三元组)
当涉及否定时它也会失败 . 例如, "He has no pens" .

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

2 回答

  • 2

    你要做的是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节"Tag Patterns")和this paper .

  • 1

    我担心完整的答案可以填补博士论文中更好的部分:)

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

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

    至于你要求包含修饰符,例如否定 - 这是一个单独的任务,应该在你确定列表之后 .

相关问题