二元语法(2-gram)分词中的平滑算法
2015-09-11 19:12
441 查看
从一年前的计算语言学作业开始,我一直没明白,为什么我写的二元语法分词要比一元语法差。两天来我仔细分析了一下之前的实验细节,发现二元语法分词要超过一元语法,可以有两种方式:1.超大的语料;2.强大的平滑算法。
实验采用北大人民日报1-6月语料,大约700万字,选其中90%作为训练数据,另外10%作为测试数据。先看下实验结果:
一元语法引入了词频信息,效果对最大正相匹配有很大的提高。但是奇怪的是,二元语法(用前两种平滑算法)居然比一元语法的效果更差,问题在哪呢?
经过测试,在测试语料中,二元语法的最短路径(参考《SharpICTCLAS分词系统简介(2)初步分词》的思路)上,平均每个段落有12处 p(wn|wn−1)=0。这就意味着700万字的训练数据还是不够大,平滑算法在这里需要起到非常重要的作用。
下面简单看看几种平滑算法的“含义”。
p(wn|wn−1)=f(wn−1wn)+1f(wn−1)+m
对于f(wn−1wn)=0的情况,式子会退化成 p(wn|wn−1)=1f(wn−1)+m。也就是说,如果前词频率越大,则认为后词出现的概率就越小。
p(wn|wn−1)=(1−λ)p′(wn|wn−1)+λp′(wn)
直观地说,这就是二元语法和一元语法的简单线性融合。
这种平滑算法在p′(wn|wn−1)=0时会退化成 p(wn|wn−1)=λp′(wn)。也就是说,后词词频越大,则认为后词出现的概率就越大。
实际上这也只是两种不同方法(一元、二元语法)的融合,因为 p′(wn|wn−1) 和 p′(wn) 这一个条件概率、一个概率直接加权没有什么物理意义,只是单纯地“平滑”了一下。
两种平滑方式很有意思。当出现数据稀疏时,一种只看前词的出现频率,一种只看后词的出现频率来进行估计。从结果看,还是后者略好。
平滑……又是一个调参的过程,参数调不好,再NB的算法也没用……简直就是NB的参数胜过NB的方法啊。但是不管怎样,最终还是得靠好方法来撑腰。
上面的实验还停留在“远古时期”,在现在有大规模语料的实际情况下,二元语法的数据稀疏问题已经基本消失了。在别的问题中,数据稀疏问题还是经常存在,选取好的平滑方法和参数,仍然是一个重要的问题。
p.s. 师兄推荐看《A
study of smoothing methods for language models applied to information retrieval》,传说里面对平滑参数的选取有理论的证明。
计算语言学讲义(06)词法分析(四)
实验采用北大人民日报1-6月语料,大约700万字,选其中90%作为训练数据,另外10%作为测试数据。先看下实验结果:
分词方法 | 准确率 | 召回率 | F值 |
---|---|---|---|
最大正向匹配 | 0.9040 | 0.9189 | 0.9114 |
一元语法 | 0.9280 | 0.9502 | 0.9389 |
二元语法(+1平滑) | 0.9093 | 0.9276 | 0.9184 |
二元语法(+eps平滑) | 0.9102 | 0.9529 | 0.9311 |
二元语法(删除插值) | 0.9317 | 0.9615 | 0.9463 |
经过测试,在测试语料中,二元语法的最短路径(参考《SharpICTCLAS分词系统简介(2)初步分词》的思路)上,平均每个段落有12处 p(wn|wn−1)=0。这就意味着700万字的训练数据还是不够大,平滑算法在这里需要起到非常重要的作用。
下面简单看看几种平滑算法的“含义”。
+1 平滑、+ε平滑
p(wn|wn−1)=f(wn−1wn)+1f(wn−1)+m对于f(wn−1wn)=0的情况,式子会退化成 p(wn|wn−1)=1f(wn−1)+m。也就是说,如果前词频率越大,则认为后词出现的概率就越小。
删除插值法
p(wn|wn−1)=(1−λ)p′(wn|wn−1)+λp′(wn)直观地说,这就是二元语法和一元语法的简单线性融合。
这种平滑算法在p′(wn|wn−1)=0时会退化成 p(wn|wn−1)=λp′(wn)。也就是说,后词词频越大,则认为后词出现的概率就越大。
实际上这也只是两种不同方法(一元、二元语法)的融合,因为 p′(wn|wn−1) 和 p′(wn) 这一个条件概率、一个概率直接加权没有什么物理意义,只是单纯地“平滑”了一下。
总结
两种平滑方式很有意思。当出现数据稀疏时,一种只看前词的出现频率,一种只看后词的出现频率来进行估计。从结果看,还是后者略好。平滑……又是一个调参的过程,参数调不好,再NB的算法也没用……简直就是NB的参数胜过NB的方法啊。但是不管怎样,最终还是得靠好方法来撑腰。
上面的实验还停留在“远古时期”,在现在有大规模语料的实际情况下,二元语法的数据稀疏问题已经基本消失了。在别的问题中,数据稀疏问题还是经常存在,选取好的平滑方法和参数,仍然是一个重要的问题。
p.s. 师兄推荐看《A
study of smoothing methods for language models applied to information retrieval》,传说里面对平滑参数的选取有理论的证明。
参考文献
计算语言学讲义(06)词法分析(四)
相关文章推荐
- 使用XUtils上传文件(初始版,待整理)
- 使用Mob短信sdk遇到的问题,解决
- 做人大忌
- 沙盒 与数据本地化
- 分享一百多套开发视频教程的下载地址
- a标签禁用onclick事件,60秒后生效
- iOS动态计算UIScrollView的contentSize示例(页面由Label组成)
- html标签页图标
- AD 升级
- 维基百科简体中文语料的获取
- CentOS 6.5 配置静态IP
- java 斗地主的写法
- 微信验证码
- 最新新闻:电商黑色产业链 贩卖手机验证码刷销量
- 最新新闻:电商黑色产业链 贩卖手机验证码刷销量
- iOS登陆各种验证(持续更新)
- 深入浅出CChart 每日一课——快乐高四第十六课 老马识途,ChartCtrl控件在WTL中的使用
- UIActivityIndicatorView的使用
- mysql共享表空间和独立表空间
- iOS每日一记之————AlertView的BUG解决 限制textField的字数长度 ScrollerView的上划键盘下去