Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nlp 我们如何从句子中提取主要动词?_Nlp - Fatal编程技术网

Nlp 我们如何从句子中提取主要动词?

Nlp 我们如何从句子中提取主要动词?,nlp,Nlp,例如,“鹦鹉不会游泳。”这里的主要动词是“游泳”。我们如何通过语言处理提取这些信息?有任何已知的算法用于此目的吗?要获取动词(或任何其他)有许多有监督和无监督的算法,如维特比算法、隐马尔可夫模型、Brill Tagger、约束语法等。甚至我们也有类似Python的库(Java也有类似的库)这些算法已经被编码在里面了。在任何文档或句子中注释POS都是一项复杂的工作(尤其是当您需要高精度时),您需要在这一领域有深入的知识,首先从最基本的知识开始,不断的努力可能会使您开发出一种比现有算法效率更高的算法

例如,“鹦鹉不会游泳。”这里的主要动词是“游泳”。我们如何通过语言处理提取这些信息?有任何已知的算法用于此目的吗?

要获取动词(或任何其他)有许多有监督和无监督的算法,如维特比算法、隐马尔可夫模型、Brill Tagger、约束语法等。甚至我们也有类似Python的库(Java也有类似的库)这些算法已经被编码在里面了。在任何文档或句子中注释POS都是一项复杂的工作(尤其是当您需要高精度时),您需要在这一领域有深入的知识,首先从最基本的知识开始,不断的努力可能会使您开发出一种比现有算法效率更高的算法

您可以对句子运行算法,并找到
根关系的依赖项。例如,通过运行句子“鹦鹉不会游泳”,我得到以下依赖项:

nsubj(swim-4, Parrots-1)
aux(swim-4, do-2)
neg(swim-4, not-3)
root(ROOT-0, swim-4)
root(ROOT-0, like-2)
conj(like-2, hate-5)
每一行都提供了句子中两个单词之间不同语法关系的信息(见下文)。你需要最后一行,上面写着,
swim
是句子的词根,即主动词。因此,要提取主动词,首先执行依赖项解析,并找到读作
root(root-0,X)
的依赖项
X
将是主要动词

有几种现成的依赖关系解析器,例如与或一起提供的依赖关系解析器。我更喜欢Stanford,因为它的准确性相当,但是有更好的文档,并且支持多线程解析(如果你有很多文本)。Stanford解析器输出XML,因此您必须对其进行解析才能获得上面的依赖信息


为完整起见,请简要说明其余输出。第一行说,句子中的第一个单词
鹦鹉
,是第四个单词
游泳
的主语。第二行说
do
是一个与
swim
相关的助动词,第三行说
not
否定
swim
。有关每个依赖项含义的更详细解释,请参阅


编辑: 根据你如何定义
主动词
,有些句子可能有不止一个主动词,例如
我喜欢猫,讨厌蛇
。此的依赖项分析包含以下依赖项:

nsubj(swim-4, Parrots-1)
aux(swim-4, do-2)
neg(swim-4, not-3)
root(ROOT-0, swim-4)
root(ROOT-0, like-2)
conj(like-2, hate-5)

它们一起说,根据解析器,主要动词是
like
,但
hate
与之相连。为了你的目的,你可能要同时考虑<代码>类似和<代码>仇恨。

你只讨论PoS标记,它可以告诉你句子中的动词是什么,但是不能告诉你哪一个动词是主要的动词。例如,“我的猫喜欢吃西红柿和玩偶”有三个动词。词根并不总是动词。正确。读者:请务必阅读斯坦福手册(链接),它比我说的要微妙得多。更准确的方法是使用解析树来检测句子最外层的动词短语。@kalu你能帮我解释一下句子最外层的动词短语是什么意思吗?