依存句法分析器

在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/78834838

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

(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_array[12]

while 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 内容 _ _

作者:FontTian

pyhanlp 两种依存句法分类器的更多相关文章

  1. NLP+句法结构(三)︱中文句法结构(CIPS2016、依存句法、文法)

    摘录自:CIPS2016 中文信息处理报告<第一章 词法和句法分析研究进展.现状及趋势>P8 -P11 CIPS2016> 中文信息处理报告下载链接:http://cips-uplo ...

  2. 转:NLP+句法结构(三)︱中文句法结构(CIPS2016、依存句法、文法)

    NLP+句法结构(三)︱中文句法结构(CIPS2016.依存句法.文法)转自:https://www.cnblogs.com/maohai/p/6453389.html 摘录自:CIPS2016 中文 ...

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

    依存句法分析,法国语言学家L.Tesniere1959年提出.句法,句子规则,句子成分组织规则.依存句法,成分间依赖关系.依赖,没有A,B存在错误.语义,句子含义. 依存句法强调介词.助词划分作用,语 ...

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

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

  5. MATLAB的两种移位运算

    MATLAB的两种移位运算: 1)circshift矩阵移位 circshift:循环移位数组 语法:B = circshift(A,shiftize) 说明: B  = circshift(A,sh ...

  6. 自学Linux Shell9.2-基于Red Hat系统工具包存在两种方式之一:RPM包

    点击返回 自学Linux命令行与Shell脚本之路 9.2-基于Red Hat系统工具包存在两种方式之一:RPM包 本节主要介绍基于Red Had的系统(测试系统centos) 1. 工具包存在两种方 ...

  7. WordPress引入css/js两种方法

    WordPress引入css/js 是我们制作主题时首先面对的一个难点,任何一款主题都要加载自己的css,js,甚至很有可能还需要加载Jquery文件,网上方法特多,说法不一,我们今天借鉴wordpr ...

  8. Android中手机录屏并转换GIF的两种方式

    之前在博文中为了更好的给大家演示APP的实现效果,本人了解学习了几种给手机录屏的方法,今天就给大家介绍两种我个人用的比较舒服的两种方法: (1)配置adb环境后,使用cmd命令将手机界面操作演示存为视 ...

  9. Web APi之认证(Authentication)两种实现方式【二】(十三)

    前言 上一节我们详细讲解了认证及其基本信息,这一节我们通过两种不同方式来实现认证,并且分析如何合理的利用这两种方式,文中涉及到的基础知识,请参看上一篇文中,就不再叙述废话. 序言 对于所谓的认证说到底 ...

随机推荐

  1. Vue项目初始化

    1. 生成项目模板 vue init <模板名> 本地文件夹名称2. 进入到生成目录里面 cd xxx npm install3. npm run dev vue项目模板介绍: simpl ...

  2. python 正则进阶

    1.group 除了简单地判断是否匹配之外,正则表达式还有提取子串的强大功能.用()表示的就是要提取的分组(Group).比如:^(\d{3})-(\d{3,8})$分别定义了两个组,可以直接从匹配的 ...

  3. python day09--定义函数

    一.函数的定义 def  函数名(参数): 函数体 来我们来定义⼀一个约x功能: def yue(): print("拿出⼿手机") print("打开陌陌") ...

  4. Orcal数据库12c安装完成后注意事项

    1.按照12c的安装使用装完数据库后,使用navicat链接orcal数据库时无法使用. 点击此处查看安装方案 2. 2048错误,ORA-28040: No matching authenticat ...

  5. [LeetCode&Python] Problem 860. Lemonade Change

    At a lemonade stand, each lemonade costs $5. Customers are standing in a queue to buy from you, and ...

  6. golang 六宫格、九宫格头像生成

    图片示例就不传了,在原WordPress上. //Merge6Grid 6宫格 //rule NO1:至少3张图 最多6张图 // NO2:第一张大小 60*60 其他大小 28*28 间隔4px 合 ...

  7. 51Nod 1135:元根(数论)

    1135 原根  基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 设m是正整数,a是整数,若a模m的阶等于φ(m),则称a为模m的一个原根.(其中φ(m) ...

  8. django -----分页器组件

    分页器组件 本文目录 1 Django的分页器(paginator)简介 2 应用View层 3 模版层 index.html 4 扩展 回到目录 1 Django的分页器(paginator)简介 ...

  9. Mybatis(二,三)

    参考孤傲苍狼的博客,地址如下: http://www.cnblogs.com/xdp-gacl/p/4264301.html 在此声明,自己写博客,是为了学习总结过程中的记录.没有侵权和偷懒的意思. ...

  10. JAVA静态代码块的作用

    一 般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情 况下,其他程序来调用的时候,需要使用静态方法,这种 ...