数学之美 第3章 统计语言模型
回顾一下:
前面两章都是基础知识,告诉我们自然语言的起源基础,和一些发展过程遇到的问题,第二章告诉我们规则:理解自然语言(即分析语句和获取语义)这种处理方法不可能实现智能化,因为很多条件制约着我们,而目前比较好的就是统计语言模型,本章开始进入重点:
那么什么是统计语言模型呢?
1. 统计语言模型:为自然语言发展中的上下文相关特性建立的数学模型,他是今天自然语言处理的基础,并且广泛应用于机器翻译,印刷体和手写体的识别,拼写纠错,汉字输入和文献查询。
例如,在语音识别中,计算机需要知道一个文字序列是否能构成一个大家理解而且有意义的句子,然后显示并打印出来。 例如:美联储主席本、伯南克昨天告诉媒体7000亿美元的资助资金借给上百家银行,保险公司和汽车公司。我们来看看如果一些词的位置发生了变化,意思就会完全变了,如果混乱的词很多就会一点都不知道这句话的意思了。怎么办呢? 这个问题贾里尼克给出了一个很简单的想法:一个句子是否合理,就看看它的可能性大小如何
当然上边的公式成立的条件是:统计量足够,因为根据大数定理相对频度等于概率的。大家可以看到,如果我们采用规则模型的话,分析句子成分和语义是很不现实的但是仅仅一个数学公式和一些统计语料库就完全可以实现不得不说数学真是美妙------关键在于应用啊。
下面呢是延伸阅读可看可不看,有兴趣的看看
2 延伸阅读:统计语言模型的工程诀窍
(1) N元模型(N-1阶马尔可夫假设):假设文本中的单词 wi 和前面N-1个词有关,而与更前面的词无关,这样当前词wi的概率只取决于前面的N-1个词 P(wi-N+1,。。。,wi-1)。
而事实上呢,我们用的最多的就是三元模型,而google的罗塞塔翻译系统和语言搜索系统使用的则是四元模型,但是马尔可夫假设有个很明显的局限性:不能进行长程的依赖性,因为在自然语言中,上下文之间的相关性可能跨度非常打,甚至可以从一个段落跨到另一个段落。
(2)模型的训练:在语言模型当中会出现很多参数,而我们通过对语料的统计,得到这些参数的过程叫做模型的训训练。而根据大树定理,当有足够的观测值的时候,频度就等于频率。
(3)有时候会经常出现一种情况,不管数据量是否充足,就是统计的过程中有的单词出现的概率为0或者为1,这种情况我们称之为不平滑。那么怎么解决呢?
古德.图灵估计给出了这个答案:就是我们从概率的总量中,分配一个很小的比例给予那些看不见的事件就是概率为0的事件,这样一来看的见的那些事件的概率综合就要小于1了,总之就是,越是不可信的统计折扣越多的方法进行计算,下面我们给出具体算法
比如 :假设在语料库中出现r次的有Nr个的话,特别的,记没出现的词的数量为N0.语料库的大小为N,那么很想让那的就有
我们暂且根据大数定律,认为某个词出现的概率为 r/N
现在呢我们假设当某个r很小的时候,那么这个概率是很不可靠的,甚至可能会出现0的情况,我们通常假一个阀值为8-10,当小于这个阀值的时候我们认为不可靠,因此我们需要给这些阀值很小的使用一个更小一点的次数dr,这个
dr = (r+1)*N
r+1
/ N
r
。因为根据Zipf定律:一般出现一次的词的数量比出现两次的多,出现两次的比出现三次的多,一次类推 也就是说Nr+1 < Nr,图如下
相信大家计算一下就会知道,如果出现概率为0的情况,结果不会再为0了,有所上调
d0>0了,这就是我们期望看见的结果。而以前频数比较大的情况dr<r
,有所下降,但是最后结果所有单词的频度之和还是等于N,不变性。
最后的概率就会变成如下结果的,
(4)语料的选取
语料原理上越多越好,但是要把握好一个度的问题比如机器翻译中的双语预料就比较少的,还有就是有很多数据都有噪声和错误的,训练语料的噪声高低也会对模型的效果产生一定的影响,因此在训练数据的时候通常会对训练数据进行预处理,一般情况下,少量的随机噪声清理的成本非常高,通常就不做处理,还有就是有些噪声处理的太干净反而是不好的, 为什么呢?因为训练的数据和应用一致的,应用的过程还是会有噪声的,而训练数据没有的话,实际上反而很不好
-------------------------------------------------------------------------------------------------------------------------------------
本章到此结束,下一章,我们会讲解中文分词。