每晚读书 不是大数据热门吗?给你个模型,要不?

 

《数学之美》第一篇...



【用数字的方法描述语言规律】

在语音识别中,计算机需要知道一个文字序列是否能构成一个大家理解而且有意义的句子,然后显示或者打印给使用者。20世纪70年代以前的科学家试图判断这个文字是否合乎文法、含义是否正确等,但这条路走不通。

而贾里尼克从另外一个角度来看待这个问题,用一个简单的统计模型非常漂亮的搞定了它。

贾里尼克的出发点很简单:一个句子是否合理,就看看它的可能性大小如何。至于可能性就用概率来衡量。第一个句子出现的概率大致是10负20次方。第二个句子出现的概率是10负25次方,第三个句子出现的概率是10的负70次方。因此,第一个最有可能。

但是,如果让人类几千年可能讲过的话都统计出来,那也是不可能实现的。因此,需要一个模型来估算它。于是,不再计算句子出现的概率了,而是计算句子中每个词出现的条件概率。

什么是条件概率呢,就是当前的词与上一个词有关系。这种假设在数字上称马尔可夫假设。于是,模型为:

句子=词1,词2,词3……

词2=在已知词1下的词2的概率 P(词2)=P(词1)* P(词2|条件=词1)

词3=在已知词2下的词3的概率

接下来的问题就是如何估计条件概率P(词|条件=前一个词)

通过大量机读文本,也就是专业人士讲的语料库,只要数一数每个两个词在统计的文本中前后相邻出现了多少次 #(词1,词2),以及词1本身在同样的文本中出现了多少次 #(词1),然后用两个数分别除以语料库的大小#,即可得到这些词的相对频率。只要统计量足够,相对频率就等于概率。

这似乎有点让人难以置信,用这么简单的数字模型能解决复杂的语音识别、机器翻译等问题,而用很复杂的文法规则和人工智能却做不到。其实不光是普通人,就连很多语言学家都曾质疑过这种方法的有效性,但事实证明,统计语言模型比任何已知的借助某种规则的解决方法更有效。

在IBM提出统计语言模型十几年后的20世纪80年代末,还在卡内基梅隆大学做博士生的李开复用统计语言模型把997个词的语音识别问题简化成了一个相当于20个词的识别问题,实现了有史以来第一次大词汇量非特定人连续语音的识别。

【棘手的问题】

如果词1和词2从未出现在一篇文章里,那么是否说P(词2|条件=词1)=0?反过来,如果词1和词2只在一篇文章中出现过一次,那是否说P(词2|条件=词1)=1? 这就涉及到统计的可靠性问题了。在统计中,我们之所以敢于用采样数据的观察结果来预测概率,是因为有大数定理在背后做支持,它的要求是有足够的样本观测值。

如果样本观测值少,怎么办呢?使用古德-图灵估计模型吧。

古德-图灵估计模型:对于没有看到的事件(比如某个词),我们不能认为它发生的概率就是零,因此我们从概率的总量中分配一个很小比例给予这些没被观测到的事件(比如某个词)。这样一来,看见的(可预测的)那些事件的概率总和就要小于1了。因此,需要将所有看见的事件概率调小一点。

于是,其实修正后的模型为,给定一个判断值T(一般为8-10),如果 某两个词出现次数大于T,那么直接计算词1与词2的条件概率;如果 某两个词出现次数小于T,但大于零时,那么计算词1在语料库中的相对频率。


    关注 吃书部落


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册