千家论坛--智能建筑-智慧安防-智慧社区-智能家居论坛

人工智能
收藏本版 (4) |订阅

人工智能 今日: 2813 |主题: 1057|排名: 24 

发新帖

pyhanlp 两种依存句法分类器...

[复制链接]
hadoop小学生 发布于: 2018-12-21 11:40 84 次浏览 0 位用户参与讨论
跳转到指定楼层

依存句法分析器
HanLP中一共有两种句法分析器
·依存句法分析
(1)基于神经网络的高性能依存句法分析器
(2)MaxEnt依存句法分析
基于神经网络的高性能依存句法分析器
HanLP中的基于神经网络的高性能依存句法分析器参考的是14年Chen&Manning的论文(A Fast and Accurate Dependency Parser using Neural Networks),这里还有一个发在了Github的实现程序,其实现语言为Python。
HanLP作者的原文介绍已经写得比较清楚,唯一要注意的是原文章中介绍的依存句法分析器为早期版本,输出的依存关系为英文,现在应该变为中文,而且从测试结果看,训练语料应该已经更新了,但是更新为了那个语料现在还不会是很清楚。

(hanlp开源项目负责人hankcs)
基于最大熵的依存句法分析器
经过测试这个句法分析器为真的很坑,绝对不建议使用,测试代码见最后,作者原文介绍可以去hanlcs的博客里查看
基于神经网络的高性能依存句法分析器
from pyhanlp import *
# 依存句法分析
sentence = HanLP.parseDependency("徐先生还具体帮助他确定了把画雄鹰、松鼠和麻雀作为主攻目标。")

print(sentence)

for ** in sentence.iterator():  # 通过dir()可以查看sentence的方法
    print("%s --(%s)--> %s" % (**.LEMMA, **.DEPREL, **.HEAD.LEMMA))
print()

# 也可以直接拿到数组,任意顺序或逆序遍历
**_array = sentence.get**Array()
for ** in **_array:
    print("%s --(%s)--> %s" % (**.LEMMA, **.DEPREL, **.HEAD.LEMMA))
print()

# 还可以直接遍历子树,从某棵子树的某个节点一路遍历到虚根
CoNLL** = JCl**("com.hankcs.hanlp.corpus.dependency.CoNll.CoNLL**")
head = **_array[12]
while head.HEAD:
    head = head.HEAD
    if (head == CoNLL**.ROOT):
        print(head.LEMMA)
    else:
        print("%s --(%s)--> " % (head.LEMMA, head.DEPREL))
1
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆 千家通行证登陆

本版积分规则

千家智客微信号
千家智客微信
玩物说商城
玩物说商城