作者:ynq02008146 | 来源:互联网 | 2023-09-09 05:00
本章介绍语言模型,内容包括:
Introduction to N-grams Estimating N-gram Probabilities Evaluation and Perplexity Smoothing Introduction to N-grams Probalilistic Language Models(概率语言模型)的首要任务是估计一个字符串序列或者句子出现的可能性大小
自然的,可以定义c ( x 1 , x 2 , ⋯ , x n ) 为在训练集中句子x 1 x 2 ⋯ x n 出现的次数,N 是训练集中句子的数目,直接定义 这个模型的泛化能力很差,那些在训练集中没有出现的句子,它的概率就强制为0了。
假设W 是一句话,w 1 , w 2 , ⋯ , w n 是构成这句话的单词,利用链式法则求W 的概率公式如下: 现在的目标变成估计P ( w i | w 1 w 2 ⋯ w i − 1 ) 了,同样,如果直接采取频率的估计方法,可能的句子太多,将永远不会有足够的数据来估计这个条件概率密度。引入Markov Assumption :句子当前词出现的概率仅与前N − 1 个词有关,那么该模型就成为”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),得到参数如下: 只需要用全部语料库中连着出现( w i − 1 , w i ) 的次数 除以w i − 1 出现的次数,当然要保证语料库足够大.在实际计算句子的概率时,往往在对数空间进行运算,有效避免了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中确实真实存在的,采用平滑技术解决零概率的问题
Add-one Smoothing Add-one Smoothing不适用于N-grams,通常用于平滑其他NLP模型,如文本分类,以及一些零概率出现比较少的情况。 更一般的形式是Add-k Smoothing Interpolation 有时我们需要将多种语言模型——trigram(三元)、bigram(二元)、unigram(一元)模型混合使用,这就需要使用插值方法。 如何设置λ呢?把原有的train set数据分成两份,一份继续作为train set(训练语料),用于初始的频率估计;另一份用来改善最初的频率估计,这一份便称为“held-out data”