Text NLP查找实体之间的关系

Text NLP查找实体之间的关系,text,nlp,stanford-nlp,opennlp,information-extraction,Text,Nlp,Stanford Nlp,Opennlp,Information Extraction,我目前的理解是,可以使用OpenNLP、Stanford NLP等工具包从文本文档中提取实体 但是,有没有办法找到这些实体之间的关系 例如,考虑下面的文本: “正如你们中的一些人可能知道的那样,我上周在欧洲核子研究所度过。欧洲核子研究所是去年7月发现著名希格斯玻色子的欧洲高能物理实验室。每次我去欧洲核子研究中心,我都感到深深的敬畏。除了这些年来的快速访问外,我在20世纪90年代末作为访问科学家在那里呆了三个月,从事早期宇宙物理学的工作,试图找出如何将我们今天看到的宇宙与婴儿期可能发生的事情联系起

我目前的理解是,可以使用OpenNLP、Stanford NLP等工具包从文本文档中提取实体

但是,有没有办法找到这些实体之间的关系

例如,考虑下面的文本:

“正如你们中的一些人可能知道的那样,我上周在欧洲核子研究所度过。欧洲核子研究所是去年7月发现著名希格斯玻色子的欧洲高能物理实验室。每次我去欧洲核子研究中心,我都感到深深的敬畏。除了这些年来的快速访问外,我在20世纪90年代末作为访问科学家在那里呆了三个月,从事早期宇宙物理学的工作,试图找出如何将我们今天看到的宇宙与婴儿期可能发生的事情联系起来。”

实体:I(作者),CERN希格斯玻色子

关系: -我访问了欧洲核子研究中心 -欧洲核子研究中心发现希格斯玻色子


谢谢。

例如,您可以使用Stanford解析器提取动词及其依赖项。例如,您可能会得到类似的“依赖链”

要认识到“我在欧洲核子研究所度过的时光”和“我访问了欧洲核子研究所”以及“欧洲核子研究所主持了我的访问”(etc)都是指同一类事件,这是一项更为艰巨的任务。探讨如何做到这一点超出了SO问题的范围,但你可以阅读有关释义识别的文献(是一篇综述论文)。还有一篇关于SO的文章

一旦你可以将相似的链进行聚类,你就需要找到一种方法来标记它们。你可以简单地选择一个聚类中最常见的链的动词


但是,如果您有一组预定义的要提取的关系类型,并且为这些关系手动注释了大量文本,那么方法可能会非常不同,例如,使用机器学习来学习如何根据注释数据识别关系类型。

不知道您是否仍然感兴趣,但CoreNLP添加了一个新的annotator称为OpenIE(开放信息提取),它应该可以完成您所寻找的内容。请查看:

与斯坦福解析器类似,您也可以使用Google语言API,在该API中发送字符串并获得依赖关系树响应

您可以先测试此API,看看它是否与您的语料库配合良好:


这里的结果是主谓宾语(SPO)triplet,谓词描述关系的地方。您需要遍历依赖关系图并编写脚本来解析该triplet。

绝对是。这称为关系提取。。斯坦福开发了几个有用的工具来解决此问题

以下是网站: 以下是github存储库:

一般来说,以下是该过程的工作原理

results = entract_entity_relations("Barack Obama was born in Hawaii.")
print(results)
# [['Barack Obama','was born in', 'Hawaii']]

重要的是,只提取形式为
(主语、谓语、宾语)的三元组

有很多方法可以提取关系。正如同事们提到的,你必须了解NER和共指解析。不同的技术需要不同的方法。现在,远程监控是最常见的,为了检测实体之间的关系,他们使用了FREEBASE。

你应该看看
实体l墨迹
回指解析
@2er0-有什么好的链接或起点吗?在任何
实体链接之前查看本次会议
你必须查看
名称实体识别
才能知道某个实体。然后链接它们可以让你知道哪个实体是相同的。然后你需要找到另一个做关系链接的东西。可能是
slot filling
。你的任务相当大,所以把它分解成:
NER
然后
实体链接
,然后
slot filling
。实际上整个任务可能是一个完整的
知识库
任务。=)谷歌更多,我不是这方面的专家但是我以前做过一些工作。
results = entract_entity_relations("Barack Obama was born in Hawaii.")
print(results)
# [['Barack Obama','was born in', 'Hawaii']]