统计语言模型是自然语言处理(Natural Language Processing,NLP)的基础模型,是从概率统计角度出发,解决自然语言上下文相关的特性的数学模型。统计语言模型的核心就是判断一个句子在文本中出现的概率。
假定S表示某个有意义的句子,由一连串特定顺序排列的词组成,这里n是句子的长度。现在,我们想知道S在文本中出现的可能性,即S的概率P(S),则
。
利用条件概率的公式:
一般情况下:为更严谨的表示,表示
在句子s开头出现的概率,因为句子是有顺序的,因此利用的是条件概率,
出现的情况下,
出现的概率,
的概率计算依靠前面n-1个词。
当计算,仅存在一个参数;
,存在两个参数,计算
存在三个参数,但是以此类推
存在n个参数,难易计算,因此在此基础上马尔可夫提出了,一种马尔可夫假设:假设
出现的概率只前面N-1个词相关
,当N=2时,就是简单的二元模型(Bigram Model),当N=N时,就是常说的N元模型(N-gram Model)。
一般情况下 ,N取值都很小,实际应用中最多的是将N=3的三元模型(Trigram Model)。
原因:(1) N元模型的空间复杂度,是N的指数函数,即 ,V是一种语言的词汇量,一般在几万到几十万个。使用N元模型的时间复杂度也是一个指数函数,
。当N不大时,效果较好,太大就不行了。
(2)即使使用N=4,N=5也不可能覆盖所有词与词之间的相关性。某两个词可能是一段话和一段话之间才会出现的。
估计出现的概率,利用条件概率有:
根据大数定律(事件出现的频率等于概率),可知对在文章中出现的次数 :*
,除以文章词个数:*,即可求得
。对
计数在文章中出现的次数:*
,除以文章词个数:*,即可求得
。
故有:
但是这样存在一个问题:在文本中,两个词没有连续出现过,即*=0,那么它的概率就是0吗?;在文本中
的
出现的次数一样都是1次,那么它的概率就是1吗?这里涉及到了统计的可靠性问题。
这种问题称为“不平滑”问题,解决不平滑问题(Smoothing),主要应用古德-图灵估计(Good-Turing Estimate)。其中原理为:将整个事件分为:可见部分和不可见部分(不可见概率总量很小),将所有可见部分按照越不可信(出现次数较小)概率越小来调整。
假定在语料库中出现r次的词有个,特别地,未出现的词数量为
。语料库大小为N。那么,很显然
出现r次的词在整个语料库中的相对频度(Relative Frequency)则是。
现在假定当r比较小时,它的统计可能不可靠。因此在计算那些出现r次的词的概率时,要用一个更小一点的次数(而不直接使用r),古德-图灵估计按照下面的公式计算
:
一般来说,出现一次的词的数量比出现两次的多,出现两次的比出现三次的多,这种规律称为Zipf定律(Zipf's Law),即。因此,一般情况下,
,而
。
在实际的自然语言处理中,按照古德-图灵估计做如下调整,来处理不平滑问题:
(1)对出现次数大于某个阈值的词,频率不下调,即用频率代替概率;
(2)对出现次数小于这个阈值的词,频率才下调,利用古德-图灵估计的相对频度来调整;
(3)对出现次数等于0的次,给予一个比较小的概率值
按照上面的思想,二元模型概率公式如下:
T(出现的次数)是一个阈值,一般在8~10左右。
其中:
(2)函数表示经过古德-图灵估计后的相对频度:->>>>>>解决在文本中
的
出现的次数一样都是1次,那么它的概率就是1的问题。
故,统计与
出现次数相同词的个数为
,统计比
出现次数多一次r+1的词的个数为
,再利用上式计算得出相对频度。
(3)otherwise 对应的为未出现,其中
如下:->>>>>>解决两个词没有连 续出现过,即*
=0,那么它的概率就是0的问题。
表示的是留给
未出现的情况所对应的概率。
表示的是不管
的情况,在我理解中,下面其实就是1。
是利用
求出的,然后二元模型三个部分加一块的概率和为1。
这个部分理解就是,假设i=1,2,3。分给未看见的概率为1/128。
这种平滑的方法,最早由前IBM科学家卡茨(S.M.Katz)提出,故称卡茨退避法(Katz backoff)
除了上述介绍的平滑方法外,还有一种平滑方法:用低阶语言模型和高阶语言模型进行线性插值来达到平滑的目的,这种方法称为删除差值(Deleted Interpolation),详见下面的公式。该公式中三个λ均为正数且和为1。线性插值效果比卡茨退避法略差,故现在较少使用。
此外,在二元模型求解参数的过程中,除了从大数定律的角度直接考虑频率与概率,还可以从最大似然思想角度出发,求出一组参数,使得训练样本的概率取得最大值,然后作为计算使用概率使用。但是这种角度的思想,我还没有弄明白其中的数学原理, 等什么时候弄懂了,再做补充。
[1]https://www.cnblogs.com/yxdz-hit/p/7899594.html
[2]吴军-《数学之美》:第三章统计语言模型