1. 语言模型
语言模型(language model)是自然语言处理的重要技术。
在自然语言处理中,最常见的数据是文本数据。
可以把一段自然语言文本,看作一段离散的时间序列。
假设一段长度为
T
T
T的文本中的词依次为
w
1
,
w
2
,
…
,
w
T
w_1, w_2, \ldots, w_T
w1,w2,…,wT,
那么,在离散的时间序列中,
w
t
w_t
wt(
1
≤
t
≤
T
1 \leq t \leq T
1≤t≤T)可看作在时间步(time step)
t
t
t的输出或标签。
给定一个长度为
T
T
T的词的序列
w
1
,
w
2
,
…
,
w
T
w_1, w_2, \ldots, w_T
w1,w2,…,wT,语言模型将计算该序列的概率:
P
(
w
1
,
w
2
,
…
,
w
T
)
.
P(w_1, w_2, \ldots, w_T).
P(w1,w2,…,wT).
语言模型的应用场景:
(1) 提升语音识别的性能
例如,给定一段“厨房里食油用完了”的语音,可能输出“厨房里食油用完了”和“厨房里石油用完了”两个读音完全一样的文本序列。
若语言模型判断前者的概率大于后者,那么,可以输出“厨房里食油用完了”的文本序列。
(2) 提升机器翻译的性能
例如,将英文“you go first”逐词翻译成中文,可能得到“你走先”和“你先走”等排列方式的文本序列。
若语言模型判断“你先走”的概率大于其他排列方式的文本序列,那么,可以把“you go first”译为“你先走”。
1.1 语言模型的计算
为了计算语言模型,需要计算词的概率,以及一个词在给定前几个词的情况下的条件概率,即语言模型参数。
设训练数据集为一个大型文本语料库(如维基百科的所有条目),词的概率可以通过该词在训练数据集中的相对词频来计算。
假设序列
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(w_1, w_2, \ldots, w_T) = \prod_{t=1}^T P(w_t \mid w_1, \ldots, w_{t-1})
P(w1,w2,…,wT)=t=1∏TP(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(w_1, w_2, w_3, w_4) = P(w_1) P(w_2 \mid w_1) P(w_3 \mid w_1, w_2) P(w_4 \mid w_1, w_2, w_3)
P(w1,w2,w3,w4)=P(w1)P(w2∣w1)P(w3∣w1,w2)P(w4∣w1,w2,w3)
其中,
P
(
w
1
)
P(w_1)
P(w1)可以计算为
w
1
w_1
w1在训练数据集中的词频(词出现的次数)与训练数据集的总词数之比。
根据条件概率定义,一个词在给定前几个词的情况下的条件概率,可以通过训练数据集中的相对词频计算。
例如,
P
(
w
2
∣
w
1
)
P(w_2 \mid w_1)
P(w2∣w1)可以计算为
w
1
,
w
2
w_1, w_2
w1,w2两词相邻的频率与
w
1
w_1
w1词频的比值,即,
P
(
w
1
,
w
2
)
P(w_1, w_2)
P(w1,w2)/
P
(
w
1
)
P(w_1)
P(w1);
同理,
P
(
w
3
∣
w
1
,
w
2
)
P(w_3 \mid w_1, w_2)
P(w3∣w1,w2)可以计算为
w
1
w_1
w1、
w
2
w_2
w2、
w
3
w_3
w3三词相邻的频率与
w
1
w_1
w1和
w
2
w_2
w2两词相邻的频率的比值。
1.2 n n n元语法
当序列长度增加时,计算和存储多个词共同出现的概率的复杂度会呈指数级增加。
n
n
n元语法通过马尔可夫假设(虽然并不一定成立)简化了语言模型的计算。
这里的马尔可夫假设是指一个词的出现只与前面
n
n
n个词相关,即
n
n
n阶马尔可夫链(Markov chain of order
n
n
n)。
若
n
=
1
n=1
n=1,有:
P
(
w
3
∣
w
1
,
w
2
)
=
P
(
w
3
∣
w
2
)
P(w_3 \mid w_1, w_2) = P(w_3 \mid w_2)
P(w3∣w1,w2)=P(w3∣w2)。
基于
n
−
1
n-1
n−1阶马尔可夫链,可将语言模型改写为:
P
(
w
1
,
w
2
,
…
,
w
T
)
≈
∏
t
=
1
T
P
(
w
t
∣
w
t
−
(
n
−
1
)
,
…
,
w
t
−
1
)
P(w_1, w_2, \ldots, w_T) \approx \prod_{t=1}^T P(w_t \mid w_{t-(n-1)}, \ldots, w_{t-1})
P(w1,w2,…,wT)≈t=1∏TP(wt∣wt−(n−1),…,wt−1)
称作 n n n元语法( n n n-grams),即基于 n − 1 n - 1 n−1阶马尔可夫链的概率语言模型。
当 n n n分别为1、2和3时,分别称作一元语法(unigram)、二元语法(bigram)和三元语法(trigram)。例如,长度为4的序列 w 1 , w 2 , w 3 , w 4 w_1, w_2, w_3, w_4 w1,w2,w3,w4在一元语法、二元语法和三元语法中的概率分别为:
P ( w 1 , w 2 , w 3 , w 4 ) = P ( w 1 ) P ( w 2 ) P ( w 3 ) P ( w 4 ) , P ( w 1 , w 2 , w 3 , w 4 ) = P ( w 1 ) P ( w 2 ∣ w 1 ) P ( w 3 ∣ w 2 ) P ( w 4 ∣ w 3 ) , 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 2 , w 3 ) P(w_1, w_2, w_3, w_4) = P(w_1) P(w_2) P(w_3) P(w_4) ,\\ P(w_1, w_2, w_3, w_4) = P(w_1) P(w_2 \mid w_1) P(w_3 \mid w_2) P(w_4 \mid w_3) ,\\ P(w_1, w_2, w_3, w_4) = P(w_1) P(w_2 \mid w_1) P(w_3 \mid w_1, w_2) P(w_4 \mid w_2, w_3) P(w1,w2,w3,w4)=P(w1)P(w2)P(w3)P(w4),P(w1,w2,w3,w4)=P(w1)P(w2∣w1)P(w3∣w2)P(w4∣w3),P(w1,w2,w3,w4)=P(w1)P(w2∣w1)P(w3∣w1,w2)P(w4∣w2,w3)
当
n
n
n较小时,
n
n
n元语法往往并不准确(如一元语法中,由三个词组成的句子“你走先”和“你先走”的概率相同)。
当
n
n
n较大时,
n
n
n元语法需要计算并存储大量的词频和多词相邻频率。
如何在语言模型中更好地平衡以上两点,将在本章的后续内容进行探究。