二元语法(2-gram)分词中的平滑算法

从一年前的计算语言学作业开始,我一直没明白,为什么我写的二元语法分词要比一元语法差。两天来我仔细分析了一下之前的实验细节,发现二元语法分词要超过一元语法,可以有两种方式:1.超大的语料;2.强大的平滑算法。

  实验采用北大人民日报1-6月语料,大约700万字,选其中90%作为训练数据,另外10%作为测试数据。先看下实验结果:


  一元语法引入了词频信息,效果对最大正相匹配有很大的提高。但是奇怪的是,二元语法(用前两种平滑算法)居然比一元语法的效果更差,问题在哪呢?
  经过测试,在测试语料中,二元语法的最短路径(参考《SharpICTCLAS分词系统简介(2)初步分词》的思路)上,平均每个段落有12处  p(wn|wn1)=0 。这就意味着700万字的训练数据还是不够大,平滑算法在这里需要起到非常重要的作用。

  下面简单看看几种平滑算法的“含义”。

+1 平滑、 +ε 平滑

p(wn|wn1)=f(wn1wn)+1f(wn1)+m

  对于 f(wn1wn)=0 的情况,式子会退化成  p(wn|wn1)=1f(wn1)+m 。也就是说,如果前词频率越大,则认为后词出现的概率就越小。

删除插值法

p(wn|wn1)=(1λ)p(wn|wn1)+λp(wn)

  直观地说,这就是二元语法和一元语法的简单线性融合。
  这种平滑算法在 p(wn|wn1)=0 时会退化成  p(wn|wn1)=λp(wn) 。也就是说,后词词频越大,则认为后词出现的概率就越大。
  实际上这也只是两种不同方法(一元、二元语法)的融合,因为  p(wn|wn1)  和  p(wn)  这一个条件概率、一个概率直接加权没有什么物理意义,只是单纯地“平滑”了一下。

总结

  两种平滑方式很有意思。当出现数据稀疏时,一种只看前词的出现频率,一种只看后词的出现频率来进行估计。从结果看,还是后者略好。
  平滑……又是一个调参的过程,参数调不好,再NB的算法也没用……简直就是NB的参数胜过NB的方法啊。但是不管怎样,最终还是得靠好方法来撑腰。
  上面的实验还停留在“远古时期”,在现在有大规模语料的实际情况下,二元语法的数据稀疏问题已经基本消失了。在别的问题中,数据稀疏问题还是经常存在,选取好的平滑方法和参数,仍然是一个重要的问题。
  p.s. 师兄推荐看《A study of smoothing methods for language models applied to information retrieval》,传说里面对平滑参数的选取有理论的证明。

参考文献

计算语言学讲义(06)词法分析(四)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值