我正在做一个NLP项目。
该项目的目的是提取两件事之间的可能关系。例如,对于一对" location"和"人"提取的结果将是"接近","生活在","工作在"等。
是否有任何现有的NLP工具能够做到这一点?
答案 0 :(得分:14)
您可能需要查看一些不同的工具:
麻省理工学院的新 MITIE 工具支持基本关系提取。分布中包括21个英语二元关系提取模型,这些模型是根据Wikipedia和Freebase数据的组合进行训练的。您还可以训练自己的自定义关系检测器。这里是MITIE / MITIE-models / english / binary_relations /目录的列表,在构建过程中运行make MITIE-models
目标时会下载(名称应该相对不言自明):
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 (斯坦福分析师的一部分)将提取句子中单词之间的语法关系。例如,给定此输入:
港口和移民法案由堪萨斯州共和党参议员布朗贝克提交
斯坦福分析师将提取这些语法依赖关系:
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)