基于CRF序列标注的中文依存句法分析器的Java实现-阿里云开发者社区

开发者社区> 大数据资讯> 正文

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

简介: 这是一个基于CRF的中文依存句法分析器,内部CRF模型的特征函数采用 双数组Trie树(DoubleArrayTrie)储存,解码采用特化的维特比后向算法。相较于《最大熵依存句法分析器的实现》,分析速度翻了一倍,达到了1262.8655 sent/s
+关注继续查看


这是一个基于CRF的中文依存句法分析器,内部CRF模型的特征函数采用 双数组Trie树(DoubleArrayTrie)储存,解码采用特化的维特比后向算法。相较于《最大熵依存句法分析器的实现》,分析速度翻了一倍,达到了1262.8655 sent/s

开源项目

本文代码已集成到HanLP中开源项目中,最新hanlp1.7版本已经发布

CRF简介

CRF是序列标注场景中常用的模型,比HMM能利用更多的特征,比MEMM更能抵抗标记偏置的问题。在生产中经常使用的训练工具是CRF++,关于CRF++的使用以及模型格式请参阅《CRF++模型格式说明》。

CRF训练

语料库

与《最大熵依存句法分析器的实现》相同,采用清华大学语义依存网络语料的20000句作为训练集。

预处理

依存关系事实上由三个特征构成——起点、终点、关系名称。在本CRF模型中暂时忽略掉关系名称(在下文可以利用其它模型补全)。

根据依存文法理论, 我们可以知道决定两个词之间的依存关系主要有二个因素: 方向和距离。因此我们将类别标签定义为具有如下的形式:

[ + |- ] dPOS

其中, [ + | – ]表示方向, + 表示支配词在句中的位置出现在从属词的后面, – 表示支配词出现在从属词的前面; POS表示支配词具有的词性类别; d表示距离。

比如原树库:

5d29a5df33c94fc227f5c3ee0e9b6d55e0093784

转换后:

 27aedfd61a18703894f3f34042f9fabc22885f9c

特征模板

93897378a605732955562c796c5cc85c275ce757 


训练参数

 

1.crf_learn -f 3 -c 4.0 -p 3 template.txt train.txt model -t

 

我的试验条件(机器性能)有限,每迭代一次要花5分钟,最后只能设定最大迭代次数为100。经过痛苦的迭代,得到了一个效果非常有限的模型,其serr高达50%,暂时只做算法测试用。

解码

标准的维特比算法假定所有标签都是合法的,但是在本CRF模型中,标签还受到句子的约束。比如最后一个词的标签不可能是+nPos,必须是负数,而且任何词的[+/-]nPos都得保证后面(或前面,当符号为负的时候)有n个词语的标签是Pos。所以我覆写了CRF的维特比tag算法,代码如下:

 34ad15078b314b0a53751a2574a1eda09293a42f

注意上面的

 

 1.if (!isLegal(j, i, table)) continue;

 

保证了标签的合法性。

这一步的结果:

 2ab948aee55c66705a92b52450d0378ad81ad8ab

后续处理

有了依存的对象,还需要知道这条依存关系到底是哪种具体的名称。我从树库中统计了两个词的词与词性两两组合出现概率,姑且称其为2gram模型,用此模型接受依存边两端的词语,输出其最可能的关系名称。

最终结果

转换为CoNLL格式输出:

c96c22d0caa4e0e0a6a58a63a1bdb4d142236d44 


 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
10071 0
[裴礼文数学分析中的典型问题与方法习题参考解答]5.1.1
设 $k,i,j$ 都是自然数, 且 $k=i+j$, 试求级数 $\dps{\vsm{n}\frac{1}{(kn-i)(kn+j)}}$ 的和.   解答: 原级数的前 $N$ 项和为 $$\beex \bea \sum_{n=1}^N \frac{1}{(kn-i)(kn+j)} &=\f...
769 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
10882 0
[裴礼文数学分析中的典型问题与方法习题参考解答]4.5.18
证明: $$\bex \int_0^\infty \frac{\rd x}{1+x^4}=\int_0^\infty \frac{x^2}{1+x^4}\rd x=\frac{\pi}{2\sqrt{2}}.
427 0
[裴礼文数学分析中的典型问题与方法习题参考解答]4.5.16
例 4.5.37 的逆命题不成立, 即 $f(x)$ 在 $(0,1)$ 内单调, $\dps{\vlm{n}\frac{1}{n}\sum_{i=1}^{n-1} f\sex{\frac{i}{n}}}$ 存在, $\dps{\int_0^1 f(x)\rd x}$ 可以不收敛.
538 0
[裴礼文数学分析中的典型问题与方法习题参考解答]5.1.2
设 $\sed{a_n}$ 为等差数列, $a_{n+1}-a_n=d>0\ (n=1,2,\cdots)$, $m$ 为一正整数. 计算 $$\bex S=\vsm{n}\frac{1}{a_n\cdot a_{n+1}\cdots a_{n+m}}.
693 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13880 0
[裴礼文数学分析中的典型问题与方法习题参考解答]5.1.3
证明级数 $$\bex 1 +\frac{1}{\sqrt{3}} -\frac{1}{\sqrt{2}} +\frac{1}{\sqrt{5}} +\frac{1}{\sqrt{7}} -\frac{1}{\sqrt{4}} +\frac{1}{\sqrt{9}} +\frac{1}{\sqrt{...
557 0
[裴礼文数学分析中的典型问题与方法习题参考解答]4.5.9
设 $f(x)$ 为连续实值函数, 对所有 $x$, 有 $f(x)\geq 0$, 且 $\dps{\int_0^\infty f(x)\rd x0,}\ \exists\ N_1,\st n\geq N_1\ra \int_{N_1}^n f(x)\rd xN_1,\st n\geq N\ra ...
589 0
[裴礼文数学分析中的典型问题与方法习题参考解答]4.5.10
证明 $\dps{\lim_{x\to\infty}\int_0^\infty \frac{e^{-tx}}{1+t^2}\rd t=0}$.   证明: 由 $$\beex \bea 0&\leq \int_0^\infty \frac{e^{-tx}}{1+t^2}\rd t=-\frac{...
621 0
+关注
大数据资讯
hadoop爱好者
149
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载