依存句法分析器

在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 两种依存句法分类器相关推荐

  1. ML之分类预测之ElasticNet:利用ElasticNet回归对二分类数据集构建二分类器(DIY交叉验证+分类的两种度量PK)

    ML之分类预测之ElasticNet:利用ElasticNet回归对二分类数据集构建二分类器(DIY交叉验证+分类的两种度量PK) 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 # ...

  2. 对两种类型的蘑菇图像进行识别与分类——使用SVM分类器(matlab)

    该项目已免费开源!点个收藏和赞吧!https://gitee.com/zhengzsj/mushroom-classification-system-based-on-matlab-image-pro ...

  3. EACL 2021 | 基于依存句法增强的方面情感分析

    ©PaperWeekly 原创 · 作者|李东明 学校|香港中文大学(深圳)本科生 研究方向|文本生成 论文标题: Enhancing Aspect-level Sentiment Analysis ...

  4. 学习笔记CB006:依存句法、LTP、n元语法模型、N-最短路径分词法、由字构词分词法、图论、概率论...

    2019独角兽企业重金招聘Python工程师标准>>> 依存句法分析,法国语言学家L.Tesniere1959年提出.句法,句子规则,句子成分组织规则.依存句法,成分间依赖关系.依赖 ...

  5. 利用好手头的资源解决海量语料资源收集以及利用哈工大的LTP云平台解决依存句法和语义依存分析

    一.利用好手头的资源解决海量语料资源 基于语料做机器学习需要海量数据支撑,如何能不存一点数据获取海量数据呢?我们可以以互联网为强大的数据后盾,搜索引擎为我们提供了高效的数据获取来源,结构化的搜索结果展 ...

  6. 中文分句java_基于CRF序列标注的中文依存句法分析器的Java实现

    这是一个基于CRF的中文依存句法分析器,内部CRF模型的特征函数采用 双数组Trie树(DoubleArrayTrie)储存,解码采用特化的维特比后向算法.相较于<最大熵依存句法分析器的实现&g ...

  7. NLP语义技术演进:从DP依存句法到SDP依存语义再到AMR抽象语义分析概述与开源实现...

    每天给你送来NLP技术干货! 作者:刘焕勇 来自:老刘说NLP 在上一篇文章<事件Schema生成必读:一种基于AMR与聚类.映射的事件模式生成框架浅析>中,我们讲到了AMR以及依存句法分 ...

  8. 中文 NLP (10) -- 句法解析之 转换生成语法 和 依存句法

    多年来 NLP 领域最广泛的两种句法分析理论分别为 转换生成语法和依存句法. 转换生成语法 短语结构文法:形式化定义为 G = (X,V,S,R) 这样一个四元组.X 是词汇集合,称为终结符.V 是标 ...

  9. 教你两种黑掉“人工智能”的方法

    翻译 | AI 科技大本营 参与 | shawn 编辑 | Donna 近期,微软(Microsoft)和阿里巴巴(Alibaba)先后宣布,其人工智能系统在一项阅读理解测试上打败了人类.他们进行的是 ...

最新文章

  1. 为什么我的DevOps落地过程跟别人不一样?
  2. 第十一周学习总结--助教
  3. Flutter RichText支持自定义文本溢出效果
  4. C#遍历文件读取Word内容以及使用BackgroundWorker对象打造平滑进度条
  5. (Matlab函数详解)机器学习中的4种分类算法(LDA、QDA、SVM、KNN)
  6. tomcat安装启动配置
  7. imap服务器appleimap.163.com没有响应,163smtp
  8. Linux crontab定时执行任务 命令格式与详细例子
  9. strassen矩阵乘法 java_Strassen 矩阵算法 Java 实现
  10. ABP源码分析四十七:ABP中的异常处理
  11. circle loss代码实现_CenterNet之loss计算代码解析
  12. EasyUI之Form load函数IE8下设置Radio或Checkbox的BUG
  13. java正则匹配下划线_java验证,”支持6-20个字母、数字、下划线或减号,以字母开头“这个的正则表达式怎么写?...
  14. 18.pika 安装
  15. 010editor 11.01 破解
  16. matlab中的对数log()使用
  17. 【图像融合】基于matlab小波变换图像融合【含Matlab源码 392期】
  18. 漫天繁星构成文字情话
  19. 整理一下个人学习前端的网站
  20. C/C++ Linux 出错处理函数(strerror 与 perror)

热门文章

  1. 显卡驱动程序卸载以及安装
  2. [MySQL实践] 实践记录
  3. a标签加入单击事件 屏蔽href跳转页面
  4. switch多值匹配骚操作,带你涨姿势!
  5. 凭借这 10 大算法,就可以主宰世界!
  6. 这几种思维模式,都是你的职业发展的绊脚石
  7. 使用nomad部署mysql
  8. Linux中文件上传rz使用
  9. springboot启动流程
  10. Feign使用Hystrix无效原因及解决方法