Statistical Language Model

Statistical Language Model模型介绍

基于统计的方法实现NLP,假定S表示某个有意义的句子,由一连串特定顺序排列的词ω1,ω2,…,ωn组成,这里n是句子的长度。现在,我们想知道S在文本中出现的可能性,即S的概率P(S),则P(S)=P(ω1,ω2,…,ωn)。

利用条件概率的公式:

P(ω1,ω2,…,ωn)=P(ω1)•P(ω2|ω1)•P(ω3|ω1,ω2)•••P(ωn|ω1,ω2,…,ωn-1)

条件概率怎么算?

由于条件概率P(ωn|ω1,ω2,…,ωn-1)难以估算,可利用假设:

  • 一个句子的合理性为该句子在语料中出现的概率
  • 句子出现的概率为句子中词按顺序出现的概率
  • 引入马尔可夫假设:N-gram模型为任意一个词出现的概率,和前N-1个词有关,即假设任一个词ωi出现的概率只同它前面的词ωi-1有关,则公式(1.1)可简化为

    统计语言模型是二元模型(Bigram Model)。假设一个词由前面N-1个词决定,对应的模型称为N元模型

接下来的问题是如何估计条件概率P(ωi|ωi-1)
在这里插入图片描述
估计联合概率P(ωi-1,ωi) 和边缘概率P(ωi-1) ,可利用语料库(Corpus),只要数一数(ωi-1,ωi)这对词在统计的文本中前后相邻出现的次数C(ωi-1,ωi),以及ωi-1本身在同样的文本中出现的次数C(ωi-1),然后用两个数分别除以语料库的大小Size .

f(ωi,ωi−1)=C(ωi−1,ωi)/Size
f(ωi−1)=C(ωi−1) / Size

根据大数定理,只要统计量足够,相对频度等于频率,因此:

P(ωi|ωi−1)≈ C(ωi−1,ωi)/C(ωi−1)

缺点
  • Ngram是由词频率和共同出现的频率来估计概率的,算力的问题随着Ngram的N变大而指数增大
  • 当N不太大的时候,无法解决长文本的依赖问题
优点
  • 原理简单,语料库来自人类的自然文本,数据量巨大且不用标注


问题1:N阶语言模型的问题

假定文本中的每个词ωi和前面的N-1个词有关,而与更前面的词无关,这样当前词ωi的概率只取决于前面N-1个词P(ωi-N+1,ωi-N+2,…,ωi-1)。因此:

P(ωi|ω1,ω2,…,ωi-1)=P(ωi|ωi-N+1,ωi-N+2,…,ωi-1)
(2.1)

则对应的语言模型称为N元模型(N-Gram Model)。实际应用最多的是N=3的三元模型。

为什么N取值一般都这么小呢?
N元模型的大小(空间复杂度)几乎是N的指数函数,即0(|V|N),这里|V|是一种语言词典的词汇量,一般在几万到几十万。而使用N元模型的速度(时间复杂度)也几乎是一个指数函数,即0(|V|N-1)。因此,N不能很大。当N从1到2,再从2到3时,魔性的效果上升显著。而当模型从2到4时,效果的提升就不是很显著了,而资源的耗费却显著增加。

最后还有一个问题,三元或四元甚至更高阶的模型是否能覆盖所有的语言现象呢?**答案显然是否定的。**这就是马尔可夫假设的局限性,这时要采取其他一些长程的依赖性(Long distance Dependency)来解决这个问题。

问题2:统计的可靠性问题

基于统计的模型训练方法存在一定问题。比如对于二元模型(1.2),就是拿两个数字,(ωi-1,ωi)在语料中同现的次数#(ωi-1,ωi)和(ωi-1)在语料中同现的次数#(ωi-1),计算一下比值即可。但问题是,如果同现的次数#(ωi-1,ωi)=0,是否就意味着条件概率P(ωi|ωi-1)=0?反之,如果#(ωi-1,ωi)和#(ωi-1)都只出现了一次,能否得出P(ωi|ωi-1)=1的绝对性结论?

方法1 增加数据量

第一种解决方法是增加数据量。 但是仍可能遇到零概率或者统计量不足的问题。如果用直接的比值计算概率,大部分条件概率依然是零.这种模型我们称之为“不平滑”。


方法2 卡茨退避法

1953年古德(I.J.Good)在图灵(Alan Turing)的指导下,提出在统计中相信可靠的统计数据,而对不可信的统计数据打折扣的一种概率估计方法,同时将折扣的那一部分概率给予未出现的事件(Unseen Events),古德和图灵还给出了重新估算概率的公式,称为古德-图灵估计(Good-Turing Estimate)。

假定在语料库中出现r次的词有Nr个,特别地,未出现的词数量为N0。语料库大小为N,那么
在这里插入图片描述
出现r次的词在整个语料库中的相对频度(Relative Frequency)则是
在这里插入图片描述
现在假定当r比较小时,它的统计可能不可靠。因此在计算那些出现r次的词的概率时,要用一个更小一点的次数d{r}(而不直接使用r),dr的计算公式为
在这里插入图片描述
由此,我们可以出下面的公式是成立的
在这里插入图片描述
一般来说,出现一次的词的数量比出现两次的多,出现两次的比出现三次的多,这种规律称为Zipf定律(Zipf’s Law),即Nr+1<Nr 。因此,一般情况下,dr<r,而d0>0。

前IBM科学家卡茨(S.M.Katz)提出的卡茨退避法(Katz backoff) 在实际的自然语言处理中,一般对出现次数超过某个阈值的词,频率不下调,只对出现次数低于这个阈值 T的词,频率才下调,下调得到的频率总和给未出现的词。

T是一个阈值,一般在8~10左右,函数fgt()表示经过古德-图灵估计后的相对频度
在这里插入图片描述
对于三元模型
在这里插入图片描述

方法3 删除差值

用低阶语言模型和高阶语言模型进行线性插值来达到平滑的目的,这种方法称为删除差值(Deleted Interpolation),该方法效果比卡茨退避法略差,故现在较少使用。

P(ωi|ωi-2,ωi-1)=λ(ωi-2,ωi-1) • f(ωi|ωi-2,ωi-1)+λ(ωi-1) • f(ωi|ωi-1) +λ(ωi)

问题3 语料的选取问题

选择语料库的应该

  1. 训练语料和模型应用的领域要一致。
  2. 训练数据通常越多越好。
  3. 训练语料的噪音高低也会影响模型的效果。



参考

https://blog.csdn.net/foneone/article/details/102832347
https://www.cnblogs.com/yxdz-hit/p/7899594.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值