语⾔模型(language model)是⾃然语⾔处理的重要技术。⾃然语⾔处理中最常⻅的数据是文本数据。我们可以把⼀段⾃然语⾔⽂本看作⼀段离散的时间序列。假设⼀段⻓度为 的⽂本中的词依次为 ,那么在离散的时间序列中, 可看作在时间步(time step) 的输 出或标签。给定⼀个⻓度为 的词的序列 ,语⾔模型将计算该序列的概率:
语⾔模型可⽤于提升语⾳识别和机器翻译的性能。例如,在语⾳识别中,给定⼀段“厨房⾥⻝油⽤完 了”的语⾳,有可能会输出“厨房⾥⻝油⽤完了”和“厨房⾥⽯油⽤完了”这两个读⾳完全⼀样的⽂本序 列。如果语⾔模型判断出前者的概率⼤于后者的概率,我们就可以根据相同读⾳的语⾳输出“厨房⾥⻝ 油⽤完了”的⽂本序列。在机器翻译中,如果对英⽂“you go first”逐词翻译成中⽂的话,可能得到“你⾛ 先”“你先⾛”等排列⽅式的⽂本序列。如果语⾔模型判断出“你先⾛”的概率⼤于其他排列⽅式的⽂本序 列的概率,我们就可以把“you go first”翻译成“你先⾛”。
语⾔模型的计算
语言如何计算呢?假设序列 中的每个词是依次⽣成的,我们有
例如,⼀段含有4个词的⽂本序列的概率
为了计算语⾔模型,我们需要计算词的概率,以及⼀个词在给定前⼏个词的情况下的条件概率,即语⾔ 模型参数。
设训练数据集为⼀个⼤型⽂本语料库,如维基百科的所有条⽬。词的概率可以通过该词在训 练数据集中的相对词频来计算。例如, 可以计算为 在训练数据集中的词频(词出现的次数) 与训练数据集的总词数之⽐。因此,根据条件概率定义,⼀个词在给定前⼏个词的情况下的条件概率也 可以通过训练数据集中的相对词频计算。例如, 可以计算为和 两词相邻的频率与 词 频的⽐值,因为该⽐值即 与 之⽐;⽽ 同理可以计算为 、 和 三词相邻的频率与 和 两词相邻的频率的⽐值。以此类推。
n元语法
序列长度增加,计算和存储多个词共同出现的概率的复杂度会呈指数级增加。n元语法通过马尔可夫假设简化模型,马尔科夫假设是指一个词的出现只与前面n个词相关,即n阶马尔可夫链(Markov chain of order n),如果n=1,那么有。基于n−1阶马尔可夫链,我们可以将语言模型改写为:
以上也叫 元语法( -grams)。它是基于n-1 阶⻢尔可夫链的概率语⾔模型。当 n分别为1、2和3 时,我们将其分别称作⼀元语法(unigram)、⼆元语法(bigram)和三元语法(trigram)。例如, ⻓度为4的序列 在⼀元语法、⼆元语法和三元语法中的概率分别为:
当n 较⼩时, n元语法往往并不准确。例如,在⼀元语法中,由三个词组成的句⼦“你⾛先”和“你先⾛”的 概率是⼀样的。然⽽,当n 较⼤时, n元语法需要计算并存储⼤量的词频和多词相邻频率。
参考
《动手学深度学习》第六章