Parsing 如何从解析的句子中提取关系

Parsing 如何从解析的句子中提取关系,parsing,nlp,stanford-nlp,Parsing,Nlp,Stanford Nlp,自然语言分析器(例如)输出一个句子的句法树,可能还有一个词性标记词列表和一个依赖项列表。例如这句话: 总部位于洛杉矶的贝尔公司生产和销售电子、计算机和建筑产品 斯坦福大学的研究表明,“制造”的主体是“贝尔”,客体是“产品”,而“电子”、“计算机”、“建筑”都是“产品”的修饰语。与“分发”类似。下一步自然是使用这些信息构建一个关系列表,如下所示: 贝尔制造电子产品 贝尔制造电脑产品 贝尔制造建筑产品 贝尔经销电子产品 。。。还有一些。更一般地说,我想要一个如下形式的关系列表: 主体-行动-客体

自然语言分析器(例如)输出一个句子的句法树,可能还有一个词性标记词列表和一个依赖项列表。例如这句话:

总部位于洛杉矶的贝尔公司生产和销售电子、计算机和建筑产品

斯坦福大学的研究表明,“制造”的主体是“贝尔”,客体是“产品”,而“电子”、“计算机”、“建筑”都是“产品”的修饰语。与“分发”类似。下一步自然是使用这些信息构建一个关系列表,如下所示:

  • 贝尔制造电子产品
  • 贝尔制造电脑产品
  • 贝尔制造建筑产品
  • 贝尔经销电子产品
。。。还有一些。更一般地说,我想要一个如下形式的关系列表:

主体-行动-客体

为了具体起见,让我们假设动作只能是一个动词,主语——一个名词和宾语——一个前置有可选形容词的名词。显然,从一个解析的句子到一组这样的关系的转换将是有损的,但其结果比原始的语法树更容易进行进一步的机器处理。我知道如何手动提取这些关系,当我看到一个已解析的句子时,这个问题会问:如何自动执行此操作?是否有一种已知的算法可以执行类似的操作?如果没有,我应该如何建造一个

我并不是要求提供解析器建议,这是一项位于解析之上的任务。在我看来,这项任务似乎很重要

  • 非常有用
  • 不算微不足道
  • 比解析本身简单得多

  • 因此,我想人们已经做过很多次了。不幸的是,我找不到任何接近的东西

    斯坦福解析器是一种流行编程语言的库。至少,我知道Java是一种流行的编程语言。如果您需要其他流行编程语言中的包装器,上有一个列表。另外,如果Python在您的流行列表中,请看,我已经在使用Stanford解析器和NLTK了,这是一个关于解析器输出后处理的问题。编辑了这个问题-希望它现在更有意义。投票重新开始。这个问题绝对不是小事。反对使用工具的指导方针旨在防止懒惰的问题和固执己见的答案,而不是阻止人们寻找解决复杂问题的工具。我认为,通过崩溃的CC处理依赖关系,你可以得到很多你想要的东西。试着在CoreNLP演示中输入您的示例语句,并查看最后一个可视化(标记为“折叠的CC处理”):您可以尝试的另一件事是OpenIE(),甚至只是简单的规则(例如,“{$}=verb?>/advmod/{}=adv>/nsubj(pass)?/{}=subject>/prep-*/{}=object”表示“主语动词prep-object”,或“{$}=verb>/.subj./{}=主语>/.obj/{}=object”表示“主语动词宾语”。