《数学之美》第三章——统计语言模型
1. 用数学的方法描述语言规律语音识别中,计算机需要知道一个文字序列是否能构成一个大家理解而且有意义的句子,然后显示或打印给使用者。比如以下三个句子:美联储主席本*伯南克昨天告诉媒体7000亿美元的救助资金将借给上百家银行、保险公司和汽车公司。本*伯南克美联储主席昨天7000亿美元的救助资金告诉媒体将借给银行、保险公司和汽车公司上百家。联主美储席本*伯诉南将借天的救克告媒咋助资金70元亿00美给上
1. 用数学的方法描述语言规律
语音识别中,计算机需要知道一个文字序列是否能构成一个大家理解而且有意义的句子,然后显示或打印给使用者。
比如以下三个句子:
-
美联储主席本*伯南克昨天告诉媒体7000亿美元的救助资金将借给上百家银行、保险公司和汽车公司。
-
本*伯南克美联储主席昨天7000亿美元的救助资金告诉媒体将借给银行、保险公司和汽车公司上百家。
-
联主美储席本*伯诉南将借天的救克告媒咋助资金70元亿00美给上百百百家银保行、汽车险公司公司和。
如果是一个没有学习过自然语言处理的人,就会认为第一句合乎语法,第二句也还能读懂大致意思,第三句就比较混乱了。但是通过判断这个文字序列是否合乎文法、含义是否正确是行不通的。
贾里尼克换了一个角度,使用简单的统计模型解决这个问题。
贾里尼克的出发点是使用概率来衡量每一个句子出现的概率,从而来判断一个句子是否合理。例如第一个句子的概率是10^-20、第二个句子的概率是 10^-25、 第三个句子的概率是10^-70。
对于这种方法更为普遍的一种描述方式是这样的:
现假设S代表一个有意义的句子,W1,W2,…,Wn代表一连串的词。
同时我们把这个句子出现的概率进行表示:
对这个条件概率按照公式进行展开,可以得到:
但是这个公式的计算的难点就在于越往后,计算量会变得越来越大,难以计算。
因此到19世纪末,俄国一个数学家马尔科夫提出一种偷懒但比较有效的方法。也就是当遇到这种情况时,就假设任意一个词Wi出现的概率只和它前面的词Wi-1有关。这样就可以得到一个更为简化的公式:
接下来的问题就是如何估计条件概率P(Wi|Wi-1)。根据公式可得:
通过公式3.4我们可以知道,只要统计一下Wi-1,Wi这对词在语料库中出现的次数#(Wi-1,Wi),以及Wi-1自己在语料库中出现的次数#(Wi-1),最后使用#代表语料库的大小,即可对公式进行简化:
通过大数定理,当数据足够大时,我们可以将相对频度等于概率,得到:
最后通过公式化简,可以得到:
2.1 高阶语言模型
之前在前面假设了每一个词只和前面的第一个词有关,而与更前面的词无关,但是这种假设似乎过于理想化了。例如“美丽的花朵”,实际上花朵是和美丽这个词有关的。
因此,基于此就出现了N-1阶马尔科夫假设。假定文本中的每个词Wi和前面N-1个词有关,而与更前面的词无关,这样当前词Wi的概率只取决于前面的N-1个词P(Wi-N+1,Wi-N+2,…,Wi-1)。即
当N=1时的一元模型实际上就是一个上下文无关的模型。N=2时,其实就是我们之前谈到的模型。实际中使用的比较多的是N=3的三元模型。
至于为什么N的取值比较小,主要是有以下两方面的原因:
- 当N=1、2、3时,模型的效果会随着N的增大上升明显。当N从3到4时,模型的提升效果就不是那么显著了,但是对于资源的消耗则是很大的。
- 高阶的模型也不一定能够覆盖所有的语言现象。
2.2 模型的训练、零概率问题和平滑方法
通过对语料库的统计,我们可以得到各种条件概率,得到这些参数的过程通常称为模型的训练。
并且我们在进行模型训练过程中会出现零概率问题,是指我们训练的模型中,可能会有大量的条件概率为0,我们称这种模型为“不平滑”。
因此,古德和图灵提出了一种古德—图灵估计的方法,主要的原理是这样的:对于没有看见的事件,我们不能认为它发生的概率就是0,因此在概率总量中需要分配一个很小的比例给这些我们没有看见的时间。这样一来,我们能够看见的时间概率总和就会小于1。图示如下:
现假设语料库中出现r次的词有Nr个,特别地,未出现的词数量为N0。语料库的大小为N。那么,显然:
现采用古德—图灵估计进行改进,得到dr:
显然:
同时,根据Zipf定理:在语料库中,出现一次的词的数量肯定会比出现两次的多,出现两次的肯定会比出现三次的多。下图就可以反映Nr和r的关系。
从上图可以看出,r越大,词的数量Nr越小,即Nr+1<Nr。因此,在一般情况下dr<r,而d0>0。这样就给未出现的词赋予了一个很小的非0值,从而解决了零概率的问题。
当然,在实际的自然语言处理中,一般会对出现次数超过某个阈值的词,频率不下调,只对低于这个阈值的词,进行下调频率。从而得到一个平滑的模型。
最后对古德—图灵估计方法进行一个简单的归纳:
-
通过前一个词Wi-1预测后一个词Wi时,所有的可能情况的条件概率总和应该为1,即:
-
通过古德—图灵公式的方法打折扣后,就会造成可以看见的部分概率之和小于1,无法看见的部分会获得剩下的概率量。基于这种思想可以获得以下的公式:
其中T是阈值,一般位于8~10之间。函数fgt()表示经过古德—图灵估计的相对频度,而
可以保证公式3.14成立。
2.3 语料的选取问题
语料库的选择对于自然语言处理是十分重要的一步。
更多推荐
所有评论(0)