笔记:语言模型(Language Model)(一)

笔记,总结纪录自《统计自然语言处理(第二版)(宗成庆)》

语言模型(language model, LM)在自然语言处中,尤其是基于统计模型的语音识别、机器翻译、汉语自动分词、句法分析等相关研究中都有广泛的应用。

其中最主要采用的是n元语法模型(n-gram),这种模型构建简单、直接,但因为数据缺乏需要采用平滑(smoothing)算法。

一个语言模型中,通常构建为字符串s的概率分布p(s),反映的是字符串s作为一句子出现的概率。

对于一个由 l 个基元(基元 可以是字、词、或短语等)构成的句子 s=w1w2wl,其概率公式可以表示为:

p(s)=p(w1)p(w2| w1)p(w3| w1w2)p(wl| w1wl1) =li=1p(wi| w1wi1)

其中,第 i(1il) 个词的概率是由已经产生的 i1 个词 w1w2wi1 决定的,一般称第 i1 个词为第 i 个词的历史。然而,这种计算方法,随着词长度的增加,不同的历史数目将会按指数级增长。因此,通过将历史划分为等价类,即n元语法或n元文法(n-gram)。一般n取值不超过3。

  • n=1 即出现在第 i 位上的词 wi 独立于历史时,一元文法被记作 unigram, uni-gram, monogram

    • n=2 即出现在第 i 位上的词 wi,仅仅于它前一个历史词 wi1 有关,二元文法模型被称为一阶马尔可夫链(Markov chain),记作 bigram, bi-gram
    • n=3 即出现在第 i 位上的词 wi,仅与它前面的两个历史词 wi2wi1 有关,三元文法模型被称为二阶马尔可夫链,记作 trigram, tri-gram
    • 以二元语法模型为例,我们近似的认为,一个词的概率只依赖于它前面的一个词,即

      p(s)=li=ip(wi| w1wi1)li=1p(wi| wi1)

      为了使得 p(wi| wi1) 对于 i1 的情况也有意义,我们在句子开头加上一个句首标记 <BOS> , 即假设 w0 就是 <BOS> 。同时,保持 sp(s)=1 ,需要在句尾加上 <EOS>

      p(Mark wrote a book)=p(Mark |<BOS>)×p(wrote | Mark)×p(a | wrote)×p(book | a)×p(<EOS>| book)

      计算条件概率 p(wi| wi1) ,可以使用二元语法 wi1wi 在某一文本中出现的频率,然后归一化。公式:

      p(wi| wi1)=c(wi1wi)wic(wi1wi)

      这种方法,被称为最大似然估计(maximum likehood estimation, MLE)

      对于 n>2 的n元语法模型

      p(s)=l+1i=1p(wi| wi1in+1)

      其中, wji 表示词 wiwj ,约定 wn+2 w0 <BOS

      那么估算概率 p(wi| wi1in+1) 的公式:

      p(wi| wi1in+1)=c(wiin+1)wic(wiin+1)

      求和表达式 wic(wiin+1) 等于计算历史 c(wi1in+1) 的数目,这辆种书写形式偶尔会混用。

      根据上述原理,通过计算训练语料库中每个句子的 p(wi| wi1in+1) ,我们就可以得出新出现句子 p(s) 概率。

你可能感兴趣的:(自然语言处理,自然语言处理,算法,自然语言)