n-gram

4.7  N元分词方法

在介绍N元模型之前,让我们先来做个香农游戏(Shannon Game)。我们给定一个词,然后猜测下一个词是什么。当我说"NBA"这个词时,你想到下一个词是什么呢?我想大家有可能会想到"篮球",基本上不会有人想到"足球"吧。

切分出来的词序列越通顺,越有可能是正确的切分方案。N元模型主要用来衡量词序列搭配的合理性。N元模型指句子中在n个单词序列后出现的单词w的概率。

 

但是这种方法存在两个致命缺陷:一个缺陷是参数空间过大,不可能实用化;另外一个缺陷是数据稀疏严重。为了解决这两个问题,我们引入了马尔科夫假设:一个词的出现仅仅依赖于它前面出现的有限的一个或者几个词。

如果简化成一个词的出现仅仅依赖于它前面出现的一个词,那么就称为二元模型(Bigram),即:

 

如果简化成一个词的出现仅仅依赖于它前面出现的两个词,就称为三元模型(Trigram)。

在实践中用得最多的就是二元模型和三元模型了,而且效果很不错。高于四元的模型用得很少,因为训练它需要更庞大的语料,而且数据稀疏严重,时间复杂度高,精度却提高得不多。

二元模型考虑一个单词后出现另外一个单词的概率,是N元模型中的一种。例如:一般来说,"中国"之后出现"北京"的概率大于"中国"之后出现"北海"的概率,也就是:

 
二元词表的格式是"左词@右词:组合频率",例如:

 
 
  1. 中国@北京:100  
  2. 中国@北海:1  

可以把二元词表看成是基本词表的常用搭配。分词初始化时,先加载基本词表,对每个词编号,然后加载二元词表,只存储词的编号。

对于拼音转换等歧义较多的情况也可以采用三元模型(Trigram),例如:

 

因为有些词作为开始词的可能性比较大,例如"在那遥远的地方"、"在很久以前",这两个短语都以"在"这个词作为开始词。因此,在实际的N元分词过程中,增加虚拟的开始节点(Start)和结束节点(End),分词过程中考虑P(在|Start)。如果把"有意见分歧"当成一个完整的输入,分词结果实际是:"Start/  有/  意见/   分歧/   End"。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值