2.1 语言模型
2.1.1 概述
语言模型通常构建为字符串s的概率分布p(s),反映字符串s作为一个句子出现的频率。语言模型可以帮助机器翻译系统选出更符合人类习惯的翻译候选,帮助语音识别系统选出可能性最高的候选词等,在自然语言处理领域有着广泛的应用和重要的地位。
本节将主要介绍目前使用广泛的两种语言模型:①基于统计方法的n-gram语言模型;②神经网络语言模型。
2.1.2 n-gram语言模型
n元文法(n-gram)指的是在给定序列中的n个连续元素,即给定序列s=w1,w2,…,wN。其中,任意n个连续元素wi,wi+1,…,wi+n-1(n≥1,1≤i≤N)均为n元文法单元(见图2-1)。这里的序列可以是语音或文本,元素可以是发音、单词、字符等。下面将以文本作为输入序列、以单词作为序列元素,介绍n元文法语言模型。
图2-1 n元文法单元
n元文法语言模型采用链式法则计算序列的概率,即
式(2-1)中,序列的概率为序列中各个位置i上的单词wi在给定之前所有单词w1,w2,…,wi-1情况下条件概率的乘积,前i-1个单词w1,w2,…,wi-1被称为单词wi的历史(History)。语言模型的任务被分解为预测条件概率。
为了降低运算的复杂度,n元文法语言模型将单词wi的历史缩小为前n-1个词,以n=3为例,即
则式(2-1)可改写为
在式(2-2)的过程中,每步计算只考虑有限的历史,这种过程被称为马尔可夫过程。该过程基于马尔可夫假设(Markov Assumption)。n被称为马尔可夫过程的阶数(Order)。
在实际应用中,n的取值通常与训练数据的规模相关。当训练数据的规模较大时,n可以取较大的值。当n=1时,被称为一元文法(Unigram),可直接估计p(wi),不需考虑历史;当n=2时,被称为二元文法(Bigram);当n=3时,被称为三元文法(Trigram)。
2.1.3 估计
n元文法语言模型通过统计训练数据中n元文法出现的频次,利用最大似然估计(Maximum Likelihood Estimation)来估计条件概率,即
以n=3为例,计算方法为
例如,给定三元文法“花猫 正在 睡觉”,该三元文法在训练数据中共出现10次,以“花猫 正在”开头的三元文法(如“花猫 正在 睡觉”“花猫 正在 喝水”“花猫 正在 吃饭”等)在训练数据中共出现30次,利用最大似然估计,条件概率为
2.1.4 评价指标
若假设测试数据与训练数据的概率分布一致,均为L,则语言模型在测试数据上估计的概率分布q与L越接近,语言模型越优秀。
在实际应用中,概率分布L是未知的,在这种情况下,可利用交叉熵估计,即
其中,为语言模型对单词wi的概率估计,若n=3,则。
通常采用困惑度(Perplexity,PPL)作为语言模型的评价指标。困惑度是交叉熵的数学变换,即
由式(2-5)可知,交叉熵的数值越小,困惑度越小,语言模型估计的概率分布越接近实际的概率分布。
2.1.5 数据稀疏与齐夫定律
在现实中,无论训练数据的规模如何庞大,都只是真实世界数据中的一个子集,由于训练数据的不完整,因此计数及根据计数信息得到的最大似然估计均会与真实分布或测试数据的分布有差异。当训练数据集合上未出现或以低频出现n元文法时,这种问题表现得尤其突出。而事实上,训练数据中占大部分的n元文法均是低频的。
齐夫定律(Zipf's Law)是由哈佛大学的语言学家乔治·K.齐夫(George K.Zipf)于1949年发表的实验定律,可以表述为:在自然语言的语料库里,一个单词出现的频率与其在频率表里的排名成反比。
表2-1为联合国平行语料库[1]里英文部分的词频分布情况。该语料库经过Moses[2]提供的tokenizer.perl进行了预处理,经预处理后的总词数为425529171,词汇表规模为859863。
表2-1 联合国平行语料库里英文部分的词频分布情况
图2-2为联合国平行语料库里英文词频排序与词频的关系曲线。
图2-2 联合国平行语料里英文词频排序与词频的关系曲线
图2-3为联合国平行语料库里中文词频排序与词频的关系曲线。图中,(a)为词表中所有单词的词频分布;(b)为词表中前200的词频分布;(c)为词表中排名为2000~10000的词频分布。中文部分采用LTP工具[3]提供的中文分词组件进行分词预处理,经预处理后,总词数为384697618,词汇表规模为1023162。由图2-3可知,齐夫定律在中文语料中同样适用。
由表2-1、图2-2和图2-3可知,在语料中,绝大部分为低频词(或低频n元文法),由于低频词的计数值较小,因此造成了数据稀疏(Data Sparse)的问题,利用最大似然估计的方法估计低频词的概率往往是不准确的。
图2-3 联合国平行语料库里中文词频排序与词频的关系曲线
2.1.6 计数平滑方法
数据稀疏问题会对语言模型的概率估计产生影响,在测试时,若出现语言模型未见过的n元文法,则根据最大似然估计方法的思想,其概率将被赋为0。这显然是不合理的。
下面将介绍几种计数平滑方法用以缓解所提到的问题。
1.加1平滑
为解决零概率问题,可以采用加1平滑的方法,即在每个项的计数值上加一个固定的数字(例如1)。为保证概率和为1,在进行概率估计时,要考虑所有的n元文法数(包括从训练数据统计得到的和额外引入的)。以三元文法为例,式(2-3)将改写为
其中,m为可能出现的n元文法的总数(本例中n=3)。所有可能的n元文法总数m=为词表规模。若词表规模为104,则m=1012。假设训练数据包含的总词数为108,则m远大于统计值,原始训练数据的最大似然概率估计值将被严重稀释。
为缓解该问题,可以将加1计数变为加α计数(α<1),仍以三元文法为例,式(2-6)改写为
一般情况下,若令cw为某n元文法w在训练语料上的计数值,Cn为n元文法在训练数据上的总个数,为词表规模,m=为所有可能的n元文法数,则采用最大似然估计、加1平滑和加α平滑的计算方法估计的概率分别为
2.留存估计和删除估计平滑法
若n元文法模型在训练时无法预知测试语料的分布情况,则可以把已知的训练集分为两部分:一部分作为训练数据;另一部分作为开发数据,用于改善在训练数据上得到的概率估计。
留存估计(Held-out Estimation):令r为某n元文法在开发数据上的计数值;Nr为在训练数据中出现r次的不同n元文法的总数;Tr为在训练数据中出现r次的n元文法在开发数据中的计数之和;T为开发数据中所有n元文法的总数,则
删除估计(Deleted Estimation):通过使两部分数据互为训练集和开发集,计算两次留存估计后的平均值作为某n元文法的最终计数值:①通过分割好的训练数据和开发数据得到Tr和Nr;②将最初的训练数据作为本轮的开发数据,最初的开发数据作为本轮的训练数据,得到和,则调整后的计数rdel为
这样的方法也被称为双向交叉验证(Cross Validation)。
3.古德图灵平滑法
古德图灵(Good-Turing)平滑法:利用计数频次较高的n元文法的频次调整计数频次较低的n元文法的频次,调整后,n元文法的计数r∗的计算公式为
目前,统计语言模型通过概率和分布函数来描述词、词组及句子等自然语言基本单位的性质和关系,体现了自然语言中存在的基于统计原理的生成和处理规则。其中,n-gram语言模型是应用最广泛的一种,但仍存在很多不足,主要表现如下。
(1)由于语言模型建模受到训练语料规模的限制,其分布存在一定的片面性,新词和低频词很少出现在训练文本中,因此导致数据稀疏问题。
(2)由于马尔可夫假设限制n的大小,因此只能对短距离的词之间的转移关系进行建模,无法体现长距离的词之间的依赖关系。
(3)训练效率低,解码时间较长,目前的语料规模巨大,因此不能满足实际要求。
(4)现有语言模型大部分只用到字、词等语法层面的简单信息,很少使用深层的语言知识,描述能力较差,不能很好地反映真实的概率分布。
2.1.7 神经网络语言模型
伴随着深度学习的发展,作为一种改进方式,神经网络被引入语言模型中。目前,神经网络语言模型被广泛使用:一方面解决了统计语言模型的限制;另一方面,神经网络语言模型可以获取词汇、句子、文档、语义、知识等属性的分布式向量表示,可解决特定的应用任务,如情感分析、推荐系统等。神经网络语言模型克服了统计语言模型中存在的数据稀疏问题,具有更强的长距离约束能力。神经网络语言模型参数的共享更直接有效,对低频词具有天然的光滑性,在建模能力上具有显著优势,受到学术界和工业界的极大关注。
神经网络语言模型通常与词向量紧密联系在一起。词向量往往是在训练语言模型中得到的副产品,在训练语言模型的同时也学习和优化了词嵌入向量。
2.1.8 小结
本节介绍了两种现今广泛使用的语言模型:①n-gram语言模型;②神经网络语言模型。
n-gram语言模型的构造方法主要依赖统计计数:首先统计n-gram的个数以估计n-gram出现的概率,再依照马尔可夫链的假设,利用前n-1个词作为条件,估计第n个词的概率,最后利用条件概率的连乘对完整词序列的概率进行预测。由于现实世界中语料的不完备问题,因此基于统计计数方法常会面临数据不完备和数据稀疏问题,产生零概率。针对该问题,本节介绍了多种计数平滑方法以消除零概率问题。
基于统计计数的n-gram语言模型无法为语义或语法功能相似的词建立联系,采用概率连乘方法预测词序列会受到序列中计数稀疏词的低概率影响。神经网络语言模型利用输入词的分布式表示可缓解该问题。词的分布式表示通过学习词与词之间、不同词在不同句子之间的共现学习。这种分布式表示可以使语法功能相似或语义相关的词具有相似的分布式表示。以这种分布式表示作为语言模型的输入可以有效缓解词稀疏问题。
评价一个语言模型好坏最直接的方法是利用困惑度(perplexity,PPL)进行测量,计算语言模型在已知文本下的困惑度,困惑度的值越低,说明语言模型越符合已知文本的分布。此外,语言模型是自然语言处理的重要应用,能为给定语言的词序列计算一个概率,用来表示词序列在给定语言中出现的可能性。这种可能性反映了词序列的流畅程度。语言模型在更高层次的自然语言处理方面有广泛的应用,如语音识别、机器翻译、信息检索等。