如何在Apache OpenNLP解析树中获取连接两个名词的动词?

时间:2014-03-21 10:18:27

标签: opennlp parse-tree

在假设它存在的情况下找出连接解析树中两个名词的动词有什么好的策略?例如,在这句话中:

  

这个男人在回家之前打电话给他的妻子。

鉴于投入" man"和#34;妻子",我想得到动词"叫"。 OpenNLP给了我一个解析树:

  

(TOP(S(NP(DT))(NN man))(VP(称为VBD)(NP(PRP $ his)(NN妻子))(PP(IN之前))(S(VP(VBG即将发布)) (ADVP(RB back))))))(。home。)))

所以我猜这至少部分是树导航问题。也许 首先隔离所有动词,然后通过递归进行测试,直到最终找到两个名词?

或者尝试找到从一个名词到另一个名词的最短路径并保存动词?

我的问题是我对解析树结构知之甚少,无法设计好策略。或者我应该使用其他(Java)工具吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您想要完成的任务非常复杂。我在这里看到的最大问题是需要“连接两个名词的动词”。这是非常通用的,因为您可能已经看到解析树可以假设非常不同(甚至“错误”)的结构。

如果你想要一个更通用的方法解决这个问题,我建议你去寻找关系提取。该技术旨在从句子中提取二元(或n元)关系。 我建议的示例工具是:

以后者为例,你可以从形式主题 - 行动 - 对象的句子关系中提取。关于你的问题,如果两个名词分别是短语的主语和对象,这将有效。

如果你真的想让动词连接两个名字,我认为树的导航是最直接的解决方案,但正如我之前指出的那样,鉴于“不完美”和非 - 自然语言短语的标准结构。