需要一个良好的关系提取器



我正在做一个NLP项目。

该项目的目的是提取两件事之间的可能关系。例如,对于一对"位置"和"人",提取的结果将是"附近"、"居住"、"工作"等。

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

您可能需要查看几种不同的工具:

米蒂

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

  • rel_classifier_book.write_work.author.svm
  • rel_classifier_film.film.directed_by.svm
  • rel_classifier_influence.influence_node.influenced_by.svm
  • rel_classifier_law.发明家.发明.svm
  • rel_classifier_location.location.contains.svm
  • rel_classifier_location.location.near_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.demated_person.place_of_death.svm
  • rel_classifier_people.ethnicity.geographic_distribution.svm
  • rel_classifier_people.person.ethnicity.svm
  • rel_classifier_people.人.国籍.svm
  • rel_classifier_people.person.parents.svm
  • rel_classifier_people.person.place_of_birth.svm
  • rel_classifier_people.人.宗教.svm
  • rel_classifier_people.place_of_interment.interred_here.svm
  • rel_classifier_time.event.include_event.svm
  • rel_classifier_time.event.locations.svm
  • rel_classifier_time.event.people_involved.svm

OpenIE

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

美国总统巴拉克•奥巴马(Barack Obama(周二向数千人发表了讲话。

OpenIE将提取这些二进制关系:

  • (巴拉克·奥巴马,美国总统(
  • (巴拉克·奥巴马,给,他的演讲(
  • (
  • 巴拉克•奥巴马(Barack Obama(周二发表演讲(
  • (巴拉克·奥巴马向数千人发表演讲(

注意:OpenIE使用非标准的开源许可证,明确禁止商业用途。

斯坦福关系提取器

斯坦福关系提取器提取Live_In、Located_In、OrgBased_In和Work_For的关系。如果要使用一组不同的关系,可以使用代码训练自己的关系提取器(网页上提供了详细信息(。

如果需要基本依赖项,还可以使用斯坦福依赖项解析器:

斯坦福依赖解析器

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

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

斯坦福解析器将提取以下语法依赖关系:

  • nsubjpass(已提交,票据(
  • 奥克斯帕斯(已提交,是(
  • 代理(已提交,布朗巴克(
  • nn(布朗巴克,参议员(
  • 阿波斯(布朗巴克,共和党(
  • prep_of(共和党,堪萨斯州(
  • prep_on(账单、端口(
  • conj_and(港口、移民(
  • prep_on(票据、移民(

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

MIML-RE 关系提取器 (http://nlp.stanford.edu/software/mimlre.shtml( 也可能很有用,如果您正在寻找 KBP 关系集中的关系之一(请参阅 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()对句子中两个实体之间的关系进行分类(。

你可能还想看看ReVerb。它执行开放信息提取,即您无需指定要提取的关系类型。它自动识别并提取两个名词/名词短语之间的各种动词中介关系。

基于词性标签的简单规则,因此它非常快,也就是说,与其他依赖句法解析的系统相比。

代码可在此处获得

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

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

最新更新