语言模型(language model)是自然语言处理的重要技术。自然语言处理中最常见的数据是文本数据。我们可以把一段自然语言文本看作一段离散的时间序列。假设一段长度为6.1 语言模型 - 图2的文本中的词依次为6.1 语言模型 - 图3,那么在离散的时间序列中,6.1 语言模型 - 图46.1 语言模型 - 图5)可看作在时间步(time step)6.1 语言模型 - 图6的输出或标签。给定一个长度为6.1 语言模型 - 图7的词的序列6.1 语言模型 - 图8,语言模型将计算该序列的概率:

6.1 语言模型 - 图9.%0A#card=math&code=P%28w_1%2C%20w_2%2C%20%5Cldots%2C%20w_T%29.%0A)

语言模型可用于提升语音识别和机器翻译的性能。例如,在语音识别中,给定一段“厨房里食油用完了”的语音,有可能会输出“厨房里食油用完了”和“厨房里石油用完了”这两个读音完全一样的文本序列。如果语言模型判断出前者的概率大于后者的概率,我们就可以根据相同读音的语音输出“厨房里食油用完了”的文本序列。在机器翻译中,如果对英文“you go first”逐词翻译成中文的话,可能得到“你走先”“你先走”等排列方式的文本序列。如果语言模型判断出“你先走”的概率大于其他排列方式的文本序列的概率,我们就可以把“you go first”翻译成“你先走”。

6.1.1 语言模型的计算

既然语言模型很有用,那该如何计算它呢?假设序列6.1 语言模型 - 图10中的每个词是依次生成的,我们有

6.1 语言模型 - 图11%20%3D%20%5Cprod%7Bt%3D1%7D%5ET%20P(w_t%20%5Cmid%20w_1%2C%20%5Cldots%2C%20w%7Bt-1%7D).%0A#card=math&code=P%28w1%2C%20w_2%2C%20%5Cldots%2C%20w_T%29%20%3D%20%5Cprod%7Bt%3D1%7D%5ET%20P%28wt%20%5Cmid%20w_1%2C%20%5Cldots%2C%20w%7Bt-1%7D%29.%0A)

例如,一段含有4个词的文本序列的概率

6.1 语言模型 - 图12%20%3D%20%20P(w_1)%20P(w_2%20%5Cmid%20w_1)%20P(w_3%20%5Cmid%20w_1%2C%20w_2)%20P(w_4%20%5Cmid%20w_1%2C%20w_2%2C%20w_3).%0A#card=math&code=P%28w_1%2C%20w_2%2C%20w_3%2C%20w_4%29%20%3D%20%20P%28w_1%29%20P%28w_2%20%5Cmid%20w_1%29%20P%28w_3%20%5Cmid%20w_1%2C%20w_2%29%20P%28w_4%20%5Cmid%20w_1%2C%20w_2%2C%20w_3%29.%0A)

为了计算语言模型,我们需要计算词的概率,以及一个词在给定前几个词的情况下的条件概率,即语言模型参数。设训练数据集为一个大型文本语料库,如维基百科的所有条目。词的概率可以通过该词在训练数据集中的相对词频来计算。例如,6.1 语言模型 - 图13#card=math&code=P%28w_1%29)可以计算为6.1 语言模型 - 图14在训练数据集中的词频(词出现的次数)与训练数据集的总词数之比。因此,根据条件概率定义,一个词在给定前几个词的情况下的条件概率也可以通过训练数据集中的相对词频计算。例如,6.1 语言模型 - 图15#card=math&code=P%28w_2%20%5Cmid%20w_1%29)可以计算为6.1 语言模型 - 图16两词相邻的频率与6.1 语言模型 - 图17词频的比值,因为该比值即6.1 语言模型 - 图18#card=math&code=P%28w_1%2C%20w_2%29)与6.1 语言模型 - 图19#card=math&code=P%28w_1%29)之比;而6.1 语言模型 - 图20#card=math&code=P%28w_3%20%5Cmid%20w_1%2C%20w_2%29)同理可以计算为6.1 语言模型 - 图216.1 语言模型 - 图226.1 语言模型 - 图23三词相邻的频率与6.1 语言模型 - 图246.1 语言模型 - 图25两词相邻的频率的比值。以此类推。

6.1.2 6.1 语言模型 - 图26元语法

当序列长度增加时,计算和存储多个词共同出现的概率的复杂度会呈指数级增加。6.1 语言模型 - 图27元语法通过马尔可夫假设(虽然并不一定成立)简化了语言模型的计算。这里的马尔可夫假设是指一个词的出现只与前面6.1 语言模型 - 图28个词相关,即6.1 语言模型 - 图29阶马尔可夫链(Markov chain of order 6.1 语言模型 - 图30)。如果6.1 语言模型 - 图31,那么有6.1 语言模型 - 图32%20%3D%20P(w_3%20%5Cmid%20w_2)#card=math&code=P%28w_3%20%5Cmid%20w_1%2C%20w_2%29%20%3D%20P%28w_3%20%5Cmid%20w_2%29)。如果基于6.1 语言模型 - 图33阶马尔可夫链,我们可以将语言模型改写为

6.1 语言模型 - 图34%20%5Capprox%20%5Cprod%7Bt%3D1%7D%5ET%20P(w_t%20%5Cmid%20w%7Bt-(n-1)%7D%2C%20%5Cldots%2C%20w%7Bt-1%7D)%20.%0A#card=math&code=P%28w_1%2C%20w_2%2C%20%5Cldots%2C%20w_T%29%20%5Capprox%20%5Cprod%7Bt%3D1%7D%5ET%20P%28wt%20%5Cmid%20w%7Bt-%28n-1%29%7D%2C%20%5Cldots%2C%20w_%7Bt-1%7D%29%20.%0A)

以上也叫6.1 语言模型 - 图35元语法(6.1 语言模型 - 图36-grams)。它是基于6.1 语言模型 - 图37阶马尔可夫链的概率语言模型。当6.1 语言模型 - 图38分别为1、2和3时,我们将其分别称作一元语法(unigram)、二元语法(bigram)和三元语法(trigram)。例如,长度为4的序列6.1 语言模型 - 图39在一元语法、二元语法和三元语法中的概率分别为

6.1 语言模型 - 图40%20%26%3D%20%20P(w_1)%20P(w_2)%20P(w_3)%20P(w_4)%20%2C%5C%5C%0AP(w_1%2C%20w_2%2C%20w_3%2C%20w_4)%20%26%3D%20%20P(w_1)%20P(w_2%20%5Cmid%20w_1)%20P(w_3%20%5Cmid%20w_2)%20P(w_4%20%5Cmid%20w_3)%20%2C%5C%5C%0AP(w_1%2C%20w_2%2C%20w_3%2C%20w_4)%20%26%3D%20%20P(w_1)%20P(w_2%20%5Cmid%20w_1)%20P(w_3%20%5Cmid%20w_1%2C%20w_2)%20P(w_4%20%5Cmid%20w_2%2C%20w_3)%20.%0A%5Cend%7Baligned%7D%0A#card=math&code=%5Cbegin%7Baligned%7D%0AP%28w_1%2C%20w_2%2C%20w_3%2C%20w_4%29%20%26%3D%20%20P%28w_1%29%20P%28w_2%29%20P%28w_3%29%20P%28w_4%29%20%2C%5C%5C%0AP%28w_1%2C%20w_2%2C%20w_3%2C%20w_4%29%20%26%3D%20%20P%28w_1%29%20P%28w_2%20%5Cmid%20w_1%29%20P%28w_3%20%5Cmid%20w_2%29%20P%28w_4%20%5Cmid%20w_3%29%20%2C%5C%5C%0AP%28w_1%2C%20w_2%2C%20w_3%2C%20w_4%29%20%26%3D%20%20P%28w_1%29%20P%28w_2%20%5Cmid%20w_1%29%20P%28w_3%20%5Cmid%20w_1%2C%20w_2%29%20P%28w_4%20%5Cmid%20w_2%2C%20w_3%29%20.%0A%5Cend%7Baligned%7D%0A)

6.1 语言模型 - 图41较小时,6.1 语言模型 - 图42元语法往往并不准确。例如,在一元语法中,由三个词组成的句子“你走先”和“你先走”的概率是一样的。然而,当6.1 语言模型 - 图43较大时,6.1 语言模型 - 图44元语法需要计算并存储大量的词频和多词相邻频率。

那么,有没有方法在语言模型中更好地平衡以上这两点呢?我们将在本章探究这样的方法。

小结

  • 语言模型是自然语言处理的重要技术。
  • 6.1 语言模型 - 图45元语法是基于6.1 语言模型 - 图46阶马尔可夫链的概率语言模型,其中6.1 语言模型 - 图47权衡了计算复杂度和模型准确性。

注:本节与原书此节完全相同,原书传送门