语言模型是自然语言处理的重要技术,而自然语言处理中最常见的是文本数据。
实际上,一段文本可以看做是一段离散的时间序列。假设一段长度为 T T T的文本中的词依次为, w 1 , w 2 , . . . , w T w_1,w_2,...,w_T w1,w2,...,wT,那么在离散的时间序列中, w t ( 1 ≤ t ≤ T ) w_t(1\leq t \leq T) wt(1≤t≤T)可看作是在时间步长(time step) t \ t t的输出或者标签。
对于这样一段文本来说,语言模型将根据给定的训练数据集(如何计算,后面再说),计算该序列的概率:
P ( w 1 , w 2 , . . . , w T ) P(w_1,w_2,...,w_T) P(w1,w2,...,wT)
并将概率最大的文本作为输出。比如:
语音识别
中,给定一段 “ 厨房里食油用完了 ” 的语音,有可能会输出:“ 厨房里石油用完了 ”、“ 厨房里食油用完了 ” 两个读音完全相同的文本序列。而如果语言模型判断出后者概率较大,则后者就作为输出机器翻译
中,对于英文 “ you go first ”,可能得到:“ 你走先 ”、“ 你先走 ” 两段文本。如果语言模型判断后者概率较大,则翻译正确对于序列 w 1 , w 2 , . . . , w T w_1,w_2,...,w_T w1,w2,...,wT来说,计算公式如下:
P ( w 1 , w 2 , . . . , w T ) = ∏ t = 1 T P ( w t ∣ w 1 , . . . , w t − 1 ) P(w_1,w_2,...,w_T)=\prod_{t=1}^T P(w_t|w_1,...,w_{t-1}) P(w1,w2,...,wT)=t=1∏TP(wt∣w1,...,wt−1)
比如,一段含有三个词的文本序列的概率为:
P ( w 1 , w 2 , w 3 ) = P ( w 1 ) P ( w 2 ∣ w 1 ) P ( w 3 ∣ w 1 , w 2 ) P(w_1,w_2,w_3)=P(w_1)P(w_2|w_1)P(w_3|w_1,w_2) P(w1,w2,w3)=P(w1)P(w2∣w1)P(w3∣w1,w2)
即需要计算:
如果给定训练数据集,那么:
对于上述语言模型来说,如果一个序列过长,那么计算和存储词频的复杂度是很大的(可以适当的感受一下^^)。所以提出了 N N N元语法的概念:通过马尔科夫假设简化模型。比如二元语法:只考虑当前词在前面一个词条件下的条件概率;三元语法:只考虑和前面两个词的条件概率;以此类推…
缺点:该方法在简化模型的同时,准确率也会减小。