竹笋

首页 » 问答 » 环境 » NLPNGram语言模型初探
TUhjnbcbe - 2020/11/19 3:01:00
白癜风怎么治好 https://m-mip.39.net/pf/mipso_4626906.html
N-Gram语言模型初探

语言模型(LanguageModel,LM)在自然语言处理中占有十分重要的地位,尤其在基于统计的语音识别、机器翻译、分词和query纠错等相关应用中有着广泛的应用。目前主要采用的是n元语法模型(n-grammodel)。笔者在工作用中应用到了query改写和query的纠错,均起到了不错的应用效果,本文将从一下几点介绍n-gram语言模型。

n-gram语言模型基本概念n-gram语言模型的工具—kenlmn-gram语言模型的应用一、n-gram语言模型基本概念1.1、n-gram概念

语言模型通常是一句话或者一个词

的概念分布

,这里

试图反映的是

出现的概率。例如,一个人说话的每

个句子中大约有

句是“这个需求什么时候上线?”(大概是产品经理??),则可以认为:

这个需求什么时候上线

而对于句子“这个需求马上上线!”(大概是程序员??),几乎没有程序员说这样的话,我们认为程序员说这句话的概率为

。所以需要注意的是,语言模型与句子是否合法是没有相关性的,即使一个句子符合语法逻辑,我们仍然可以认为它出现的概率为

,这个概率和你训练模型的数据是相关的。对于由

个词(这个词可以是字、词或短语等)组成的句子

,其概率计算公式为:

1.2、n-gram的产生

上式中,产生第

个词的概率由已经产生的

个词

序列(称作history)决定的。这种方法计算概率有一个弊端,如果history的长度为

,那么就有

种不同的history(

为词表的长度),我们要计算所有

种不同history情况下产生第

个词的概率,这样的情况下,模型中就有

个自由参数

,假设

自由参数的数目就是

亿个,这对于我们训练模型和应用模型来说是几乎不可能实现的。为了解决这个问题,可以将history

序列按照某种法则映射到等价类

,而等价类的数目远远小于不同history的数目,假定:

那么,自由参数的数目将会大大减少。有很多种方法可以将history划分为等价类,一种比较实际的做法是,将两个history

序列和

映射到同一个等价类,当且仅当这两个history最近的

)个词相同,即如果

,当且仅当

。满足以上条件的语言模型称为

元语法或者

元文法(n-gram)。通常情况下,

的取值不能太大,否则等价类太多,自由参数过多的问题仍然不能解决,因此在实际应用中,

取值为

的情况较多。

时,即出现在第

位上出现的词

独立于history。一元文法计作unigram或者uni-gram。当

时,即出现在第

位上出现的词

仅与前面一个history词

有关。二元文法计作bigram或者bi-gram。当

时,即出现在第

位上出现的词

仅与前面两个history词

有关。三元文法计作trigram或者tri-gram。1.3、n-gram计算示例

以二元语法模型为例,根据前面的解释,我们可以近似地认为,一个词的概率只依赖于它前面的一个词,那么,

另外,有两点值得注意:

为了使得

对于

有意义,在句子的开头加上句首标记$,即假设w_{0}就是$。为了使得所有句子的概率之和

等于1,需要在句子结尾加上一个句尾标记$$,并包含在概率计算公式(5-3)的乘积中。

例如,我们计算概率

我爱工作

,可以这样计算:

$$\begin{align}p(我爱读书)=p(我

)p(爱

我)p(读

爱)p(书

读)p(

书)\nonumber\end{align}$$

为了估计

条件概率,可以简单的计算二元语法

在训练语料中出现的概率,然后归一化。如果用

表示二元语法

在给定文本中出现的次数,我们采用最大似然估计计算条件概率的公式如下:

对于

元语法模型,条件概率中要考虑前面

个词的概率,为了使得公式(1.8)对于

成立,取:

其中,

表示词

,那么

为$,w_{m+1}为$。同样的用最大似然估计计算条件概率:

具体的计算实例可以参考宗成庆老师著《统计自然语言处理(第2版)》

二、n-gram语言模型的工具—kenlm

限于篇幅,这里我们仅仅介绍如何安装和使用kenlm,详细信息参考kenlm

1
查看完整版本: NLPNGram语言模型初探