NLP查找实体之间的关系

Sou*_*nta 5 text nlp information-extraction stanford-nlp opennlp

我目前的理解是,可以使用诸如OpenNLP,Stanford NLP之类的工具包从文本文档中提取实体。

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

例如,考虑以下文本:

“正如你们中某些人所知,我上周在欧洲高能物理实验室CERN呆了,去年7月发现了著名的希格斯玻色子。每次去CERN时,我都会感到一种崇高的敬意。多年来,我在1990年代后期作为访问科学家在这里呆了三个月,从事早期宇宙物理学的工作,试图弄清楚如何将我们今天看到的宇宙与婴儿期发生的事情联系起来。”

实体:(作者),欧洲核子研究组织CERN)希格斯玻色子

关系:-我“ 访问 ” CERN-CERN“ 发现 ”希格斯玻色子

谢谢。

Dat*_*Dao 7

是的,一点没错。这称为关系提取。斯坦福大学开发了几个有用的工具来解决这个问题。

这是那里的网站:http : //deepdive.stanford.edu/relation_extraction 这是 github 存储库:https : //github.com/philipperemy/Stanford-OpenIE-Python

一般来说,这里是该过程的工作原理。

results = entract_entity_relations("Barack Obama was born in Hawaii.")
print(results)
# [['Barack Obama','was born in', 'Hawaii']]
Run Code Online (Sandbox Code Playgroud)

重要的是只提取了形式的三元组(subject,predicate,object)


vpe*_*kar 3

例如,您可以使用斯坦福解析器提取动词及其从属词。例如,您可能会得到“依赖链”,例如

"I :: spent :: at :: CERN". 
Run Code Online (Sandbox Code Playgroud)

认识到“我在 CERN 度过”、“我访问了 CERN”和“CERN 主持了我的访问”(等等)表示同一类事件是一项艰巨的任务。探讨如何做到这一点超出了 SO 问题的范围,但您可以阅读释义识别的文献(是一篇概述论文)。SO 上也有一个相关问题

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

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