Language Models

来源:互联网 发布:美女公寓小说txt淘宝 编辑:程序博客网 时间:2024/06/04 19:08

本章介绍语言模型,内容包括:

  1. Introduction to N-grams
  2. Estimating N-gram Probabilities
  3. Evaluation and Perplexity
  4. Smoothing

Introduction to N-grams

Probalilistic Language Models(概率语言模型)的首要任务是估计一个字符串序列或者句子出现的可能性大小

这里写图片描述
自然的,可以定义c(x1,x2,,xn)为在训练集中句子x1x2xn出现的次数,N是训练集中句子的数目,直接定义
这里写图片描述
这个模型的泛化能力很差,那些在训练集中没有出现的句子,它的概率就强制为0了。

假设W是一句话,w1,w2,,wn是构成这句话的单词,利用链式法则求W的概率公式如下:
这里写图片描述
现在的目标变成估计P(wi|w1w2wi1)了,同样,如果直接采取频率的估计方法,可能的句子太多,将永远不会有足够的数据来估计这个条件概率密度。引入Markov Assumption:句子当前词出现的概率仅与前N1个词有关,那么该模型就成为”N元模型”
这里写图片描述
最简单的模型即Unigram model,每个词出现的概率与上下文无关,
这里写图片描述
Bigram model:认为每个单词的出现只与它的前一个单词相关,
这里写图片描述
我们也可以使用4元模型,5元模型,N越大,语言模型的准确率越大,但是每增加一元,带来的是计算量的指数增长。事实上,句子中的long distance dependencies(长程依赖)是存在的,如:The computer which I had just put into the machine room on the fifth floor crashed.最后一个单词crashed实际上是与句子中靠前的computer相关,就算是使用5元模型也不可能把单词之前的相关性展示出来。

Estimating N-gram Probabilities

以二元模型为例,采用最大似然估计(Maximum Likelihood Estimate),得到参数如下:
这里写图片描述
只需要用全部语料库中连着出现(wi1,wi)的次数 除以wi1出现的次数,当然要保证语料库足够大.在实际计算句子的概率时,往往在对数空间进行运算,有效避免了underflow(概率都是一些很小的数,几个小数相乘很快就超出了计算机精度了)。

一些公开的语言模型:

  • SRILM
  • Google N-Gram Release
  • Google Book N-grams

Evaluation and Perplexity

如何评估模型?首先我们根据training set(训练集数据)求得模型参数,然后使用新的数据集(test set)来测试所建立语言模型的性能。Train set和Test set属于同一领域时,训练出的语言模型的准确性就高,对test set的预测性就越好。倘若两者属于不同领域,那么所训练的模型就未必好。

  • Extrinsic evaluation:根据一个具体的任务,训练两个语言模型A和B,然后使用大量数据来监测A和B,比较两者的准确率,这会消耗大量时间
  • Intrinsic evaluation:Perplexity
    这里写图片描述

Smoothing

2元语言模型中,很多单词对出现的次数为0,多元模型中情况更甚,另外,很可能我们使用的train set数据中计算的某个单词对概率为0,但是在test set中确实真实存在的,采用平滑技术解决零概率的问题

  1. Add-one Smoothing
    这里写图片描述
    Add-one Smoothing不适用于N-grams,通常用于平滑其他NLP模型,如文本分类,以及一些零概率出现比较少的情况。
    更一般的形式是Add-k Smoothing
    这里写图片描述
  2. Interpolation
    有时我们需要将多种语言模型——trigram(三元)、bigram(二元)、unigram(一元)模型混合使用,这就需要使用插值方法。
    这里写图片描述
    如何设置λ呢?把原有的train set数据分成两份,一份继续作为train set(训练语料),用于初始的频率估计;另一份用来改善最初的频率估计,这一份便称为“held-out data”
    这里写图片描述
0 0
原创粉丝点击