语言模型
发布网友
发布时间:2022-12-05 09:56
我来回答
共1个回答
热心网友
时间:2024-12-02 11:33
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,比较复杂
高于四元的用的非常少,由于训练它须要更庞大的语料,数据稀疏严重,时间复杂度高,精度却提高的不多。
用于评价语言模型的好坏,困惑度越低,模型越好。
其基本思想是:给测试集的句子赋予较高概率值的语言模型较好。当语言模型训练完之后,测试集中的句子都是正常的句子,那么训练好的模型就是在测试集上的概率越高越好,公式如下:
由公式可知,句子概率越大,语言模型越好,迷惑度越小。
评估句子的可能性就是计算一句话整体的概率,由各个单词出现的概率相乘得到。若有一个单词未在语料库中出现,则其概率为零,致使整个句子的概率为零(最大似然估计)。
语料库即训练库,未包含的词不代表实际使用中不会出现,所以要尽量避免这种情况,可用“平滑”来解决:
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
即便现在的语料库中没有,但不代表未来不会出现。假设未出现的词与现在语料库中出现一次的单词概率一致。