语言模型(Language Models)

N-gram

N-Gram是基于一个假设:第n个词出现与前n-1个词相关,而与其他任何词不相关(这也是隐马尔可夫当中的假设)。bigrams(2-grams), trigrams(3-grams)
一个序列单词出现的概率
自然语言处理(NLP)笔记-语言模型
即将到来单词出现的概率
自然语言处理(NLP)笔记-语言模型
计算以上概率的模型称为语言模型(model language). 注意,n越大,模型的越细节化,但是计数越稀松。
如何计算?按照概率链式法则(Chain Rule of Probability)????(A,B)=P(A|B)P(A), 则
自然语言处理(NLP)笔记-语言模型
自然语言处理(NLP)笔记-语言模型
问题:有太多不一样的序列,无法在数据中保存足够的例子
马尔可夫假设(Markov Assumption):下一个词的出现仅依赖于它前面的一个词或几个词。 通过简化来近似概率
自然语言处理(NLP)笔记-语言模型
自然语言处理(NLP)笔记-语言模型
将其一般化如下
自然语言处理(NLP)笔记-语言模型

构建 N-Gram 语言模型

通常,通过计算极大似然估计(Maximum Likelihood Estimate)
(MLE)构造语言模型,这是对训练数据的最佳估计。bigram语言模型:
自然语言处理(NLP)笔记-语言模型

评价和困惑度(evaluation and perplexity)

我们想要去评价语言模型的好坏,有两种评价方法:

  1. Extrinsic or in-vivo evaluation: 在其他项目进行测试。缺点:费时
  2. Intrinsis or in-vitro evaluation: 直接评价模型,利用困惑度(perplexity),即给定一个语言模型,去预测下一个词的困难程度。其基本思想是给测试集赋予较高概率值的语言模型较好。困惑度越低,模型越好
    N个词W的困惑度,PP(W):
    自然语言处理(NLP)笔记-语言模型
    自然语言处理(NLP)笔记-语言模型

限制:我们假设我们已经计算出在测试数据中n-gram的概率,但是这不一定真实。由于语料库数据有限,会产生零概率问题。在下一节进行解决!

先进的语言模型(Advanced language models)

语言模型在相似的数据集中效果好,如果在社交数据进行训练,那么它可能无法在小说中工作。我们假设前提是所有的n-gram模型都存储在训练数据中,但是这显然是不可能的,所以我们需要思考未出现的新n-gram的可能性。这里有四种解决方式。

拉普拉斯平滑(Laplace smoothing)-加一平滑法:Add-One Estimation
基本思想:把每个单词出现的数目加一,以保证每个n-gram至少出现过一次。以bigram为例
MLE Estimate:
自然语言处理(NLP)笔记-语言模型
Add-One estimate:
自然语言处理(NLP)笔记-语言模型
更一般化的拉普拉斯平滑:加k平滑
自然语言处理(NLP)笔记-语言模型
当表中0出现很多(V>>c(wi-1)),即很多n-gram并未出现时,拉普拉斯平滑表现不佳。但是它依然在NLP中很常用,尤其是当0出现次数少时。
插值(Interpolation)与回退(backoff)
不同的单词需要不同size的抓取,例如“United States"需要作为bigram抓取,”look forward to"则需要作为trigram抓取。
Interpolation: 混合所有的unigram,bigram,trigram
自然语言处理(NLP)笔记-语言模型

Backoff: 当trigram common时,用trigram,否则bigram,否则unigram(很难去定义common)
Good Turing Smoothing
基本思想:用见过的事物的数量去估计未见过的事物的数量
Nc=出现C次的token的数量
一个n-gram出现r次的可能性:
自然语言处理(NLP)笔记-语言模型
问题:Nc>Nc+1时,模型效果很差;
如何改进:当c很大时,避免0的出现—simple good-Turing:取代Nc->幂次函数
Kneser-Ney Soothing
自然语言处理(NLP)笔记-语言模型

相关文章: