欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

pyhanlp 两种依存句法分类器

发布时间:2025/3/21 编程问答 32 豆豆
生活随笔 收集整理的这篇文章主要介绍了 pyhanlp 两种依存句法分类器 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

依存句法分析器

在HanLP中一共有两种句法分析器

  • 依存句法分析
    • 基于神经网络的高性能依存句法分析器
    • MaxEnt依存句法分析

基于神经网络的高性能依存句法分析器

HanLP中的基于神经网络的高性能依存句法分析器参考的是14年Chen&Manning的论文(A Fast and Accurate Dependency Parser using Neural Networks),这里还有一个发在了Github的实现程序,其实现语言为Python。除此之外,你还可以参考ljj123zz 的CSDN 一篇博客:https://blog.csdn.net/ljj123zz/article/details/78834838

HanLP作者的原文介绍已经写得比较清楚,唯一要注意的是原文章中介绍的依存句法分析器为早期版本,输出的依存关系为英文,现在应该变为中文,而且从测试结果看,训练语料应该已经更新了,但是更新为了那个语料现在还不会是很清楚。

基于最大熵的依存句法分析器

经过测试这个句法分析器为真的很坑,绝对不建议使用,测试代码见最后,作者原文介绍请点击:http://www.hankcs.com/nlp/parsing/to-achieve-the-maximum-entropy-of-the-dependency-parser.html

下面是使用的例子

基于神经网络的高性能依存句法分析器

from pyhanlp import * # 依存句法分析 sentence = HanLP.parseDependency("徐先生还具体帮助他确定了把画雄鹰、松鼠和麻雀作为主攻目标。")print(sentence)for word in sentence.iterator(): # 通过dir()可以查看sentence的方法print("%s --(%s)--> %s" % (word.LEMMA, word.DEPREL, word.HEAD.LEMMA)) print()# 也可以直接拿到数组,任意顺序或逆序遍历 word_array = sentence.getWordArray() for word in word_array:print("%s --(%s)--> %s" % (word.LEMMA, word.DEPREL, word.HEAD.LEMMA)) print()# 还可以直接遍历子树,从某棵子树的某个节点一路遍历到虚根 CoNLLWord = JClass("com.hankcs.hanlp.corpus.dependency.CoNll.CoNLLWord") head = word_array[12] while head.HEAD:head = head.HEADif (head == CoNLLWord.ROOT):print(head.LEMMA)else:print("%s --(%s)--> " % (head.LEMMA, head.DEPREL)) 1 徐先生 徐先生 nh nr _ 4 主谓关系 _ _ 2 还 还 d d _ 4 状中结构 _ _ 3 具体 具体 a ad _ 4 状中结构 _ _ 4 帮助 帮助 v v _ 0 核心关系 _ _ 5 他 他 r r _ 4 兼语 _ _ 6 确定 确定 v v _ 4 动宾关系 _ _ 7 了 了 u u _ 6 右附加关系 _ _ 8 把 把 p p _ 15 状中结构 _ _ 9 画 画 v v _ 8 介宾关系 _ _ 10 雄鹰 雄鹰 n n _ 9 动宾关系 _ _ 11 、 、 wp w _ 12 标点符号 _ _ 12 松鼠 松鼠 n n _ 10 并列关系 _ _ 13 和 和 c c _ 14 左附加关系 _ _ 14 麻雀 麻雀 n n _ 10 并列关系 _ _ 15 作为 作为 v v _ 6 动宾关系 _ _ 16 主攻 主攻 v vn _ 17 定中关系 _ _ 17 目标 目标 n n _ 15 动宾关系 _ _ 18 。 。 wp w _ 4 标点符号 _ _徐先生 --(主谓关系)--> 帮助 还 --(状中结构)--> 帮助 具体 --(状中结构)--> 帮助 帮助 --(核心关系)--> ##核心## 他 --(兼语)--> 帮助 确定 --(动宾关系)--> 帮助 了 --(右附加关系)--> 确定 把 --(状中结构)--> 作为 画 --(介宾关系)--> 把 雄鹰 --(动宾关系)--> 画 、 --(标点符号)--> 松鼠 松鼠 --(并列关系)--> 雄鹰 和 --(左附加关系)--> 麻雀 麻雀 --(并列关系)--> 雄鹰 作为 --(动宾关系)--> 确定 主攻 --(定中关系)--> 目标 目标 --(动宾关系)--> 作为 。 --(标点符号)--> 帮助徐先生 --(主谓关系)--> 帮助 还 --(状中结构)--> 帮助 具体 --(状中结构)--> 帮助 帮助 --(核心关系)--> ##核心## 他 --(兼语)--> 帮助 确定 --(动宾关系)--> 帮助 了 --(右附加关系)--> 确定 把 --(状中结构)--> 作为 画 --(介宾关系)--> 把 雄鹰 --(动宾关系)--> 画 、 --(标点符号)--> 松鼠 松鼠 --(并列关系)--> 雄鹰 和 --(左附加关系)--> 麻雀 麻雀 --(并列关系)--> 雄鹰 作为 --(动宾关系)--> 确定 主攻 --(定中关系)--> 目标 目标 --(动宾关系)--> 作为 。 --(标点符号)--> 帮助麻雀 --(并列关系)--> 雄鹰 --(动宾关系)--> 画 --(介宾关系)--> 把 --(状中结构)--> 作为 --(动宾关系)--> 确定 --(动宾关系)--> 帮助 --(核心关系)--> ##核心##

最大熵依存句法分析器

MaxEntDependencyParser = JClass("com.hankcs.hanlp.dependency.MaxEntDependencyParser")print("hankcs每天都在写程序") print(MaxEntDependencyParser.compute("hankcs每天都在写程序")) print("吴彦祖每天都在写程序") print(MaxEntDependencyParser.compute("吴彦祖每天都在写程序")) hankcs每天都在写程序 1 hankcs hankcs x x _ 6 限定 _ _ 2 每天 每天 r r _ 5 施事 _ _ 3 都 都 d d _ 5 程度 _ _ 4 在 在 d d _ 5 程度 _ _ 5 写 写 v v _ 0 核心成分 _ _ 6 程序 程序 n n _ 5 内容 _ _吴彦祖每天都在写程序 1 吴彦祖 吴彦祖 n nr _ 5 施事 _ _ 2 每天 每天 r r _ 5 施事 _ _ 3 都 都 d d _ 5 程度 _ _ 4 在 在 d d _ 5 程度 _ _ 5 写 写 v v _ 0 核心成分 _ _ 6 程序 程序 n n _ 5 内容 _ _

总结

以上是生活随笔为你收集整理的pyhanlp 两种依存句法分类器的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。