语言模型

一、基础知识

1、链式法则(chain rule):P(ABCD)=P(A)·P(B|A)·P(C|AB)·P(D|ABC)

(竖杠后面是给定的条件,即条件概率分布)

2、概率稀疏问题:给定的短句越长,越不容易找到,因为大部分概率都是零

3、马尔科夫假设,可解决概率稀疏(sparsity)问题:只以离它最近的若干词为指定词,假设离得近的词影响大。

如1st order markov assumption第一顺序马尔科夫假设,只考虑离得最近的前面的第一个单词、2st order只考虑前面的两个单词、3st……

二、语言模型

语言模型用来判断:是否一句话从语法上通顺。用来计算一个句子的概率的模型,也就是判断一句话是否是人话的概率。

N元模型就是假设当前词的出现概率只与它前面的N-1个词有关:

1、unigram(一元模型)

最简单的模型,假定所有词互相独立,相当于0st order假设,不考虑单词之间的顺序。

2、bigram(二元模型)

最常用的模型,相当于1st order马尔科夫假设,只考虑前一个单词

3、trigram(三元模型)

常用模型,相当于2st order马尔科夫假设,只考虑前两个单词

4、N-gram

当N>3时,统称为higher order,比较复杂

高于四元的用的非常少,由于训练它须要更庞大的语料,数据稀疏严重,时间复杂度高,精度却提高的不多。

三、困惑度(Perplexity)

用于评价语言模型的好坏,困惑度越低,模型越好。

其基本思想是:给测试集的句子赋予较高概率值的语言模型较好。当语言模型训练完之后,测试集中的句子都是正常的句子,那么训练好的模型就是在测试集上的概率越高越好,公式如下:

由公式可知,句子概率越大,语言模型越好,迷惑度越小。

四、平滑(smoothing)

评估句子的可能性就是计算一句话整体的概率,由各个单词出现的概率相乘得到。若有一个单词未在语料库中出现,则其概率为零,致使整个句子的概率为零(最大似然估计)。

语料库即训练库,未包含的词不代表实际使用中不会出现,所以要尽量避免这种情况,可用“平滑”来解决:

1、 Add-one平滑,又称laplace smoothing

最简单最经典的平滑方法,在朴素贝叶斯中经常使用。

最大似然估计(maximum likelihood estimation,MLE),最大可能性估计,即看到什么就是什么,没有概率就是0,明确使用概率模型。

Add-1平滑,将概率计算公式的分子+1,分母+V,V是词典库的大小

分母+V的原因是:最后计算完所有可能性加起来概率=1

2、Add-K平滑

稍灵活一些,将概率计算公式的分子+K,分母+KV。K为超参数,需要不断调整,或者让机器帮助选择一个比较合理的值

比如评估模型好坏的方法,Perplexity相当于K的函数,找到一个K,使得Perplexity最小即可。

3、 Interpolation(插值)

同时使用unigram、bigram、N-gram,比如用bigram时,第一个词需要用到unigram。

核心思路:在计算trigram的同时,考虑unigram、bigram、trigram出现的频次,各给一个权重,权重相加=1

4、 Good-turning smoothing

即便现在的语料库中没有,但不代表未来不会出现。假设未出现的词与现在语料库中出现一次的单词概率一致。

你可能感兴趣的:(语言模型)