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 回答
你要做的是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 .
我担心完整的答案可以填补博士论文中更好的部分:)
没有通用工具可以满足您的需求 . 你需要自己写 . 如果您查看this示例,您可以看到您可以从令牌
and
或逗号开始提取列表,然后遍历它周围的图形以构建列表 . 在这种特殊情况下,您可以查看链接较小名词短语的conj
和appos
关系 .您还可以查看POS标签模式,例如(
N*
,,
,N*
,CC
,N*
) - 这是一个黑客,但如果您想要快速结果并且您愿意错过召回,这可能是您最好的方法 .至于你要求包含修饰符,例如否定 - 这是一个单独的任务,应该在你确定列表之后 .