当前位置: 首页 > 知识库问答 >
问题:

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

公西季
2023-03-14

假设解析树中存在连接两个名词的动词,那么找出它的好策略是什么?例如,在这个句子中:

这名男子在回家前给妻子打了电话。

考虑到“男人”和“妻子”的输入,我想得到动词“called”。OpenNLP给了我一个解析树:

(前)(前)(后)(后)(前)(后)(后)(后)(后)(后)(前)(前)(后)(后)(后)(前)(后)(后)(后)(后)(后)(前)(后)(后)(前)(后)(后)(后)(前)(后)(后)(后)(前)(后)(后)(后)(后)(后)(后)(后)(后)(后)(前)(后)(后)(后)(后)(后)(后)(后)(后)(后)(后)(后)(后)(后)(后

所以我想这至少在一定程度上是一个树导航问题。也许先把所有动词都分离出来,然后通过递归的方式进行测试,直到最终找到这两个名词?

或者试着找到从一个名词到另一个名词的最短路径,并在途中保存动词?

我的问题是,我对解析树结构了解不够,无法设计出一个好的策略。或者我应该使用其他(Java)工具吗?

谢啦!

共有1个答案

隆飞宇
2023-03-14

你想完成的任务非常复杂。我在这里看到的最大的问题是需要“一个连接两个名词的动词”。这是非常通用的,正如您可能已经看到的,html" target="_blank">解析树可以采用非常不同的(甚至是“错误的”)结构。

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

  • 释放
  • 这句话的意思是
  • 混响

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

相反,如果你真的想让动词连接两个名字,我认为树的导航是最直接的解决方案,但正如我之前指出的,考虑到自然语言短语的“不完善”和非标准结构,实现起来真的很困难。

 类似资料:
  • 我有两张桌子,彼此相连。我如何使用Spring数据jpa从数据库中获取它们? 代码如下, 结果:结果

  • 我有一个两层神经网络的例子。第一层接受两个参数并有一个输出。第二个应作为第一层的结果使用一个参数和一个附加参数。应该是这样的: 因此,我创建了一个具有两个层的模型,并尝试将它们合并,但它返回了一个错误:<代码>顺序模型中的第一层必须获得“input\u shape”或“batch\u input\u shape”参数 在线<代码>结果。添加(合并)。 型号:

  • 我有一个完全相同的文件A和B。我试图在这两个数据帧上执行内部和外部连接。因为我将所有的列都作为重复的列,所以现有的答案没有任何帮助。我遇到的其他问题包含一两个重复的列,我的问题是整个文件都是彼此重复的:无论是数据还是列名。 我的代码: 我面临的错误是:

  • 我试着使用下面的代码将TABLE_name更改为MANAGER_ID; 收到错误信息:1064。您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解在第1行0.000秒处使用“MANAGER ID”到“MANAGER_ID”附近的正确语法

  • 问题内容: 如何在Java中连接两个数组? 问题答案: 使用Apache Commons Lang库 例如: 在Java 8中使用Stream: 或者像这样,使用flatMap: 为此,你必须使用反射:

  • 比如说,我有一个名为“Contact”的表,其中“first\u name”和“last\u name”作为列。基本上,“从联系人c中选择concat(c.firstname,,,c.lastname)作为全名”是我在hibernate中想要做的。 我可以将整个查询放在createQuery中,并获得所需的输出。但是,我不想在hibernate中执行sql查询。我在这里找到了一篇类似的帖子“我们可