adnb34g 发表于 2018-12-21 13:15:22

pyhanlp 两种依存句法分类器

依存句法分析器在HanLP中一共有两种句法分析器·依存句法分析(1)基于神经网络的高性能依存句法分析器(2)MaxEnt依存句法分析基于神经网络的高性能依存句法分析器HanLP中的基于神经网络的高性能依存句法分析器参考的是14年Chen&Manning的论文(A Fast and Accurate Dependency Parser using Neural Networks),这里还有一个发在了Github的实现程序,其实现语言为Python。除此之外,你还可以参考ljj123zz 的CSDN 一篇博客:blog.csdn.net/ljj123zz/article/details/78834838HanLP作者的原文介绍已经写得比较清楚,唯一要注意的是原文章中介绍的依存句法分析器为早期版本,输出的依存关系为英文,现在应该变为中文,而且从测试结果看,训练语料应该已经更新了,但是更新为了那个语料现在还不会是很清楚。(hanlp开源项目负责人hankcs)基于最大熵的依存句法分析器经过测试这个句法分析器为真的很坑,绝对不建议使用,测试代码见最后,作者原文介绍请点击击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_arraywhile head.HEAD:    head = head.HEAD    if (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        内容        _        _


页: [1]
查看完整版本: pyhanlp 两种依存句法分类器