语言模型(Language Model)通过对句子的上下文特征进行数学建模,来回答一个问题:出现的句子是否合理。
语言模型是自然语言的基础,广泛应用于机器翻译、语音识别、拼写纠错、输入法、手写体识别等。
对于一个由单词构成的句子 s = w 1 w 2 . . . w n s=w_1w_2...w_n s=w1w2...wn,其概率计算公式:
p ( s ) = p ( w 1 ) p ( w 2 ∣ w 1 ) p ( w 3 ∣ w 1 w 2 ) . . . p ( w n ∣ w 1 . . . w n − 1 ) = ∏ i = 1 n p ( w i ∣ w 1 . . . , w n − 1 ) \begin{aligned}p(s) & =p(w_1)p(w_2 \mid w_1)p(w_3\mid w_1w_2)...p(w_n \mid w_1...w_{n-1}) \\ &= \prod_{i=1}^{n}p(w_i \mid w_1...,w_{n-1})\end{aligned} p(s)=p(w1)p(w2∣w1)p(w3∣w1w2)...p(wn∣w1...wn−1)=i=1∏np(wi∣w1...,wn−1)
在统计语言模型中,一般采用极大似然来计算每个词出现的条件概率:
p ( w i ∣ w 1 . . . , w i − 1 ) = C o u n t ( w 1 , w 2 , . . . , w i ) ∑ w C o u n t ( w 1 , w 2 , . . . , w i , w ) p(w_i \mid w_1...,w_{i-1}) = \frac{Count(w_1,w_2,...,w_i)}{\sum_{w}Count(w_1,w_2,...,w_i,w)} p(wi∣w1...,wi−1)=∑wCount(w1,w2,...,wi,w)Count(w1,w2,...,wi)
假设词汇集的大小为 L L L,对于一个长度为 n n n的句子进行建模,则需要计算 L n L^n Ln个参数。假设 L = 5000 , n = 3 L=5000,n=3 L=5000,n=3,则参数个数就是1250亿个。
为解决参数空间过大的问题,引入了马尔可夫假设,即第 N N N个词出现的概率只与前面出现的 N − 1 N-1 N−1个词有关,称为n-gram。
n = 1 n=1 n=1,一元模型(unigram),即每个词之间都是相互独立的:
p ( s ) = ∏ i = 1 n p ( w i ) p(s)= \prod_{i=1}^{n}p(w_i) p(s)=i=1∏np(wi)
n = 2 n=2 n=2,二元模型(bigram)
p ( s ) = ∏ i = 1 n p ( w i ∣ w i − 1 ) p(s)= \prod_{i=1}^{n}p(w_i \mid w_{i-1}) p(s)=i=1∏np(wi∣wi−1)
n = 3 n=3 n=3,三元模型(trigram)
p ( s ) = ∏ i = 1 n p ( w i ∣ w i − 2 , w i − 1 ) p(s)= \prod_{i=1}^{n}p(w_i \mid w_{i-2},w_{i-1}) p(s)=i=1∏np(wi∣wi−2,wi−1)