Home

gentlesnow

05 Jun 2019

【自然语言处理综论】 006 N元语法

猜测下一个单词,或称单词预测是语音识别、手写识别、残疾人增强交际以及拼写错误的一个重要的子任务。 在这样的任务中,单词辨认是很困难的,因为输入会有很多的噪音和歧义。 因此查看前一个单词即可提供关于下一个单词将会是什么的重要线索。

N元语法模型(N-gram)利用前面N-1个单词来预测下一个单词。

在语音识别中,传统上使用语言模型(language model)或LM这个术语来称呼单词序列的统计模型。

各种不同的机器学习算法使用了周围单词的信息和其他特征来进行上下文敏感的拼写错误检查。

对下一个单词的猜测与另外一个问题有这密切的联系,这个问题就是单词序列概率的计算。

给一个句子分配概率的算法也可以用来给下一个单词在一个不完整的橘子中分配概率。

语料库中单词数目的计算

对于诸如语法检查、拼写错误检查、作者辨认这样的任务,标点符号的位置是很重要的。 在自然语言处理的应用中,问号是辨别某人提问的重要线索。 在此类标注中,问好也是一个有用的线索。 因此在这些应用中经常把标点符号看成单词。

在口语语料库中,将使用“话段”这个术语而不是“句子”这个术语。

简单的(非平滑的)N元语法

概率模型是给单词的符号串指派概率的方法,无论是计算整个句子的概率,还是在一个序列中预测下一个单词的概率,都要使用概率模型。

\[P(w_1^n) = p(w_1)P(w_2|w_1)P(w_3|w_1^2)...P(w_n|w_1^{n-1}) = \prod_{k=1}^{n}{P(w_k|w_1^{k-1})}\]

简化方法是用前一个单词来预测这个单词,来逼近用前面所有的单词来预测这个单词。 即“二元语法模型”。

一个单词的概率只依赖于它前面单词的概率的这种假设被称为马尔可夫假设。

马尔可夫模型是一种概率模型,假设不必查看很远的过去就可以预见到某个单位将来的的概率。 马尔可夫链是一种加权有限状态自动机;在马尔可夫链中,马尔可夫这个术语的直觉含义就是:加权FSA的下一个状态总是依赖于它前面有限的历史(因为在有限自动机中的状态数目综述是有限的)。 基本的二元语法模型可以看成是每一个单词只有一个状态的马尔可夫链。

可以把二元语法模型推广到三元语法模型在推广到N元语法模型。

在一个序列中,N元语法模型对于下一个单词的条件概率逼近的通用等式是: \(P(w_n|w_1^{n-1}) \thickapprox P(w_n|w_{n-N+1}^{n-1})\)

平滑

标准的N元语法模型的一个主要问题在于,这种模型必须从某些语料库训练得到,而每个特定的语料库是有限的,因此能够接受英语的N元语法的完美语料库都注定会忽略一些东西。 这意味着,从任何训练语料库得到的二元语法矩阵都是稀疏的,他们注定会存在着大量的公认为“零概率二元语法”的场合,当然实际上他们也真的具有某些非零的概率。 当费另计算很小时,MLE方法也会产生很糟糕的估计值。

  1. 加1平滑
  2. witten-Bell打折法
  3. Good-Turing打折法

回退

根据N元语法的“层级关系”有两种方法可以解决平滑的问题。

  1. 删除插值法(deleted interpolation)
  2. 回退(backoff)

删除插值法

拼写和发音的N元语法

熵(entropy)和困惑度(perplexity)用于评估N元语法系统的最普通的计量方法。

Til next time,
gentlesnow at 17:29

scribble