原创:李孟启
1、前言
什么是语言模型(language model)?简单地说,语言模型就是用来计算一个句子的概率的模型,也就是判断一句话是否是人话的概率。
语言模型的应用比较广泛,可⽤于提升语⾳识别和机器翻译的性能。例如,在语音识别的过程中,给定一条语音“厨房里食油用完了”的语音,机器可能会把语音输出为“厨房⾥⻝油⽤完了”和“厨房⾥⽯油⽤完了”这两个读音相同的文本序列,如果通过提前训练好的语言模型,对识别的这两个句子进行概率计算可以判断出前者的概率大于后者的概率,我们就可以认定为句子概率较大的“厨房⾥⻝油⽤完了”文本序列是最终输出;在机器翻译中,如果对英⽂“you go first”逐词翻译成中⽂的话,可能得到“你⾛先”、“你先⾛”等排列⽅式的⽂本序列。如果语⾔模型判断出“你先⾛”的概率⼤于其他排列⽅式的⽂本序列的概率,我们就可以把“you go first”翻译成“你先⾛”。
2、语言模型的计算
我们用 w 1 , w 2 , . . . , w T , w_{1},w_{2},...,w_{T}, w1,w2,...,wT,表示一个长度为T的文本序列,可以将计算该序列(句子)的概率表示为: P ( w 1 , w 2 , … , w T ) P\left(w_{1}, w_{2}, \ldots, w_{T}\right) P(w1,w2,…,wT).
那该如何计算一个句子的概率呢?假设序列 w 1 , w 2 , … , w T w_{1}, w_{2}, \ldots, w_{T} w1,w2,…,wT中的每个词是依次⽣成的,我们可以这样计算句子的概率 P ( w 1 , w 2 , … , w T ) = ∏ t = 1 T P ( w t ∣ w 1 , … , w t − 1 ) P\left(w_{1}, w_{2}, \ldots, w_{T}\right)=\prod_{t=1}^{T} P\left(w_{t} \mid w_{1}, \ldots, w_{t-1}\right) P(w1,w2,…,wT)=∏t=1TP(wt∣w1,…,wt−1)
例如,⼀段含有4个词的⽂本序列的概率 P ( w 1 , w 2 , w 3 , w 4 ) = P ( w 1 ) P ( w 2 ∣ w 1 ) P ( w 3 ∣ w 1 , w 2 ) P ( w 4 ∣ w 1 , w 2 , w 3 ) P\left(w_{1}, w_{2}, w_{3}, w_{4}\right)=P\left(w_{1}\right) P\left(w_{2} \mid w_{1}\right) P\left(w_{3} \mid w_{1}, w_{2}\right) P\left(w_{4} \mid w_{1}, w_{2}, w_{3}\right) P(w1,w2,w3,w4)=P(w1)P(w2∣w