hyhanlp 两种依存句法分类器

依存句法分析器

在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

下面是使用的例子

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

frompyhanlpimport*# 依存句法分析sentence=HanLP.parseDependency("徐先生还具体帮助他确定了把画雄鹰、松鼠和麻雀作为主攻目标。")print(sentence)forwordinsentence.iterator():# 通过dir()可以查看sentence的方法print("%s --(%s)--> %s"%(word.LEMMA,word.DEPREL,word.HEAD.LEMMA))print()# 也可以直接拿到数组,任意顺序或逆序遍历word_array=sentence.getWordArray()forwordinword_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]whilehead.HEAD:head=head.HEADif(head==CoNLLWord.ROOT):print(head.LEMMA)else:print("%s --(%s)--> "%(head.LEMMA,head.DEPREL))

1徐先生徐先生nhnr_4主谓关系__2还还dd_4状中结构__3具体具体aad_4状中结构__4帮助帮助vv_0核心关系__5他他rr_4兼语__6确定确定vv_4动宾关系__7了了uu_6右附加关系__8把把pp_15状中结构__9画画vv_8介宾关系__10雄鹰雄鹰nn_9动宾关系__11、、wpw_12标点符号__12松鼠松鼠nn_10并列关系__13和和cc_14左附加关系__14麻雀麻雀nn_10并列关系__15作为作为vv_6动宾关系__16主攻主攻vvn_17定中关系__17目标目标nn_15动宾关系__18。。wpw_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 内容 _ _



文章来源于网络

你可能感兴趣的:(hyhanlp 两种依存句法分类器)