需要一个好的关系提取器

时间:2014-12-21 10:57:38

标签: nlp nltk stanford-nlp

我正在做一个NLP项目。

该项目的目的是提取两件事之间的可能关系。例如,对于一对" location"和"人"提取的结果将是"接近","生活在","工作在"等。

是否有任何现有的NLP工具能够做到这一点?

3 个答案:

答案 0 :(得分:14)

您可能需要查看一些不同的工具:

MITIE

麻省理工学院的新 MITIE 工具支持基本关系提取。分布中包括21个英语二元关系提取模型,这些模型是根据Wikipedia和Freebase数据的组合进行训练的。您还可以训练自己的自定义关系检测器。这里是MITIE / MITIE-models / english / binary_relations /目录的列表,在构建过程中运行make MITIE-models目标时会下载(名称应该相对不言自明):

  • rel_classifier_book.written_work.author.svm
  • rel_classifier_film.film.directed_by.svm
  • rel_classifier_influence.influence_node.influenced_by.svm
  • rel_classifier_law.inventor.inventions.svm
  • rel_classifier_location.location.contains.svm
  • rel_classifier_location.location.nearby_airports.svm
  • rel_classifier_location.location.partially_contains.svm
  • rel_classifier_organization.organization.place_founded.svm
  • rel_classifier_organization.organization_founder.organizations_founded.svm
  • rel_classifier_organization.organization_scope.organizations_with_this_scope.svm
  • rel_classifier_people.deceased_person.place_of_death.svm
  • rel_classifier_people.ethnicity.geographic_distribution.svm
  • rel_classifier_people.person.ethnicity.svm
  • rel_classifier_people.person.nationality.svm
  • rel_classifier_people.person.parents.svm
  • rel_classifier_people.person.place_of_birth.svm
  • rel_classifier_people.person.religion.svm
  • rel_classifier_people.place_of_interment.interred_here.svm
  • rel_classifier_time.event.includes_event.svm
  • rel_classifier_time.event.locations.svm
  • rel_classifier_time.event.people_involved.svm

OpenIE

来自华盛顿大学的

OpenIE 将从文本中提取关系,以(Arg1, Arg2, Relation)的形式将输出表示为三元组。例如,给定输入句子:

  美国总统巴拉克•奥巴马(Barack Obama)周二向数千人致辞。

OpenIE将提取这些二元关系:

  • (巴拉克奥巴马,美国总统)
  • (巴拉克奥巴马,给了他的演讲)
  • (巴拉克奥巴马,周二发表演讲)
  • (巴拉克奥巴马,向成千上万的人发表演讲)

注意:OpenIE使用明确禁止商业用途的a non-standard open source license

斯坦福关系提取器

Stanford Relation Extractor 提取关系Live_In,located_In,OrgBased_In和Work_For。如果您想使用不同的关系集,可以使用代码训练您自己的关系提取器(网页上提供的详细信息)。

如果您想要基本依赖项,您还可以使用Stanford Dependency Parser:

Stanford Dependency Parser (斯坦福分析师的一部分)将提取句子中单词之间的语法关系。例如,给定此输入:

  

港口和移民法案由堪萨斯州共和党参议员布朗贝克提交

斯坦福分析师将提取这些语法依赖关系:

  • nsubjpass(提交,Bills)
  • auxpass(已提交,是)
  • 代理人(已提交,Brownback)
  • nn(Brownback,Senator)
  • appos(Brownback,Republican)
  • prep_of(共和党人,堪萨斯州)
  • prep_on(票据,港口)
  • conj_and(ports,immigration)
  • prep_on(票据,移民)

GATE

来自谢菲尔德大学的

GATE 还包括关系提取功能,但我自己从未使用它。此演示文稿概述了其工作原理:https://gate.ac.uk/sale/talks/gate-course-may10/track-3/module-11-ml-adv/module-11-relations.pdf

答案 1 :(得分:4)

如果您正在寻找KBP关系集中的一个关系(参见http://nlp.stanford.edu/software/mimlre.shtml),那么MIML-RE关系提取器(http://surdeanu.info/kbp2014/TAC_KBP_2014_Slot_Descriptions_V1.1.pdf)也可能很有用。不可否认,这是一个更大的系统,比CoreNLP中的“关系”注释器更容易设置。

开始使用此选项的最简单方法可能是下载http://search.maven.org/#search%7Cga%7C1%7Ca%3A%22stanford-kbp%22(确保同时下载模型以及所有依赖项)。从那里开始,SlotfillingTasks中有一堆相对低障碍的输入方法(例如,getSlotsInSentence()获取给定实体的所有关系,或classifyRelation()对两个实体之间的关系进行分类。句)。

答案 2 :(得分:2)

您可能还想查看ReVerb。它执行开放信息提取,也就是说,您不需要指定要提取的关系类型。它自动识别和提取两个名词/名词短语之间的各种动词介导的关系。

它基于语音标签的简单规则,因此它非常快,即与依赖语法分析的其他系统相比。

代码可用here

更新:我在博客文章中写道,如何使用ReVerb PoS模式从新闻文章中提取关系三元组:

http://davidsbatista.net/blog/2017/05/08/ReVerb