目录
一、语言模型的定义和意义
二、语言模型的马尔可夫模型
2.1 定长句子下的马尔可夫模型
2.2 变长句子下的马尔可夫模型
三、三元语言模型(Trigram Language Model)
3.1 极大似然估计
3.2 平滑估计
3.2.1 线性插值(Linear Interpolation)
3.2.2 Discounting Methods
语言模型本质上是为了衡量一个句子出现的概率。例如,在语音识别中,当模型生成多个候选句子时,通过语言模型可以选出最有可能的语句。
首先,我们有一个有穷的集合V(词典,包括语言中所有可能出现的单词)。语句S就是单词的一个序列,x1x2 . . . xn(n >= 1)。所有句子的集合即可表示为(正闭包)。语言模型可以定义如下:For any
在语言模型中,我们的任务就是对句子的概率p(x1, x2, . . . xn)进行建模。一种最直接的想法就是用训练集中句子x1x2 . . . xn出现的次数除以训练集句子总数,以该频率作为句子出现的概率。这个办法有很致命的缺陷。对于一个没有在训练集中出现过的句子,模型给出的概率为0。下面介绍的马尔可夫模型则更加合理。
假设,句子的长度n是固定的(例如10),那么所有可能的句子有条(|V|表示词典的大小,即单词总数)。显然,我们很难估计这么大数量级的参数。一阶马尔可夫模型提出一个重要的假设:
第一步推导运用了链式法则,第二步推导则利用了一个独立性假设:
也就意味着句子中第i个单词出现的概率仅与它前面一个单词有关。这样子我们所需要估计的参数数量就从减少到了个。
类似地,二阶马尔可夫模型提出假设:
为了方便,我们引入了两个起始符号 = = *,在二阶马尔可夫模型中,句子中的第i个单词出现的概率仅与它前面两个单词有关。模型所需要估计的参数数量为。
在上一小节中,我们假定了句子长度是固定的。显然,实际使用的句子是不定长的,也就是说句子长度n本身也是一个随机变量,也需要对其建模。下面介绍一种最常使用的建模方法。
我们引入一个特殊的字符STOP,这个字符不会出现在词典中,它标记着一个句子的结束,只会出现在句子的末尾。于是,在二阶马尔可夫模型的假设下,有:
其中,n>=2, = STOP, = = *。模型所需要估计的参数数量为。至此,我们可以描述一个句子的生成过程:
例如, 。
三元语言模型其实就是2.2中描述的语言模型中的二阶马尔可夫模型。在这一节中,我们更多地关注模型中的参数以及如何估计这些参数。
在2.2中,我们可以看到,如果知道了所有的,我们就能计算出一个句子出现的概率。若,那么就是模型的参数。也就是说,我们要估计的参数是,其中, and (这里为了方便,放宽了规定,实际上w=STOP时,u和v等于*或者u=*时,是没有意义的,当然也可以理解有意义,但是为概率为0)。
定义为三元组在训练语料中的出现次数。例如c(the,dog,barks)是序列the dog barks在训练语料中出现的次数。类似地,为二元组在训练语料中的出现次数。则有:。例如,。
根据定义,很容易发现存在以下的问题:
1.c(u,v) = 0时,式子没有意义;
2.c(u,v,w)=0时,估计结果为0,即q(w|u,v)=0。但是,训练预料库中没有三元组(u,v,w),并不意味着三元组完全不可能出现。这时,可以通过拉普拉斯平滑来修改参数的估计方式,即。
在3.2中,我们将讨论两种平滑估计的方式。
注意到我们在三元模型的参数估计中,只使用了三元组的出现频率。事实上,二元组甚至是一元组的出现频率也有一定的估计意义。在估计参数时,可以将三元组,二元组,一元组同时考虑进去,赋予三者一定的比重。同时,二元组,一元组对于3.1中提到的问题1和2,会有一定程度的缓解。
于是,我们定义:
其中, c()表示训练预料中所有单词出现的总次数。引入参数,满足,定义:。这三个参数可以通过验证集选出,定义为验证集中三元组(u,v,w)出现的次数,关于的函数L定义如下:
求解使得函数取最大值的值。
上述方法所确定的是定值。当然,也可以通过其他的方式来确定的值。例如,让的值随着c(u,v)而变化,具体定义如下:
其中,是唯一 的参数。通过这个定义,,同时会随着c(u,v)的增大而增大。
此外,Bucketing也是线性插值中的一种常见方法,在此不做具体介绍。
拉普拉斯平滑是通过分母增加,分子增加1的方式来避免分子,分母为0,而Discounting method则是减少分子。
首先,对c(u,v) > 0,定义,其中是一个0到1之间的数值,通常取0.5。
对于消失的概率质量,定义:。在上面的例子中,有。将这部分概率质量根据unigram的概率分给c(v,w)=0的二元组。定义两个集合: 以及。
至此,通过Discounting method,解决了c(u,v)=0和c(u,v,w)=0的问题。