1. N-GRAM
定在应用中,需要计算一个句子的概率,一个句子是否合理就看他的可能性大小,这里的可能性大小就是用概率来衡量:
如在机器翻译中:
P(high winds tonite) > P(large winds tonite)
拼写检查中:
上面的例子显示了计算一个句子的概率来判断它是否合理,下面用概率语言进行描述:
我们需要计算一个序列句子的概率: P(W)=P(w1,w2,w3,w4,w5....wn)
其中我们也需要计算一个相关的任务,比如P(W5|w1,w2,w3,,w4)表示在w1234后出现w5的概率,即下一个词出现的概率。
像这样计算P(W)或者P(wn|w1,w2...)的模型叫做语言模型(language model 简称LM)。通俗来看,语言模型其实就是看一句话是不是人说出来的,如果用机器翻译出现若干候选项后,可以使用语言模型挑选一个最靠谱的结果。
如何计算P(W)呢?用条件概率的链式规则,链式规则常常用来评估随机变量的联合概率,规则如下:
即:
按照链式规则,举个例子:
可是事实上,如果这样计算,实际上是不行的,原因有2个:
1.直接这样计算会导致模型的参数空间过大,一个语言模型的参数就是所有的这些条件概率,试想;假设词典大小为|V|,则按上面的方式计算 :P(w5|w1,w2,w3,w4),每一个wi的取值都有词典大小种,即|wi|=|v|,这样光是计算Count(w1w2w3w4w5)就有|V|^5个参数,而且这还不包括P(w4|w1,w2,w3)的个数,可以看到这样计算条件概率会使得参数个数太多。
2.数据稀疏严重。如果按照这样计算,比如计数分子its water is so transparent,这种句子出现的次数是很少的,这样计算的结果会使得过多的条件概率趋近于0,因为我们没看到足够的文本来统计。
因此,通过马尔科夫假设进行化简上面的计算:马尔科夫假设是指: 假设第wi个词语只与它前面的k个词语相关,这样我们就得到前面的条件高绿计算简化如下: