NLP(三)——语言模型

目录

Language Model

Unigram

Bigram

N-gram

 评估语言模型

Perplexity

 Smoothing

Add-one Smoothing

Add-K Smoothing

扫描二维码关注公众号,回复: 15360907 查看本文章

Interpolation

 Good-Turning Smoothing


Language Model

语言模型用来判断一句话是否从语法上通顺。

Unigram

Unigram模型假定各个部分相互独立,此种模型下概率计算会相对简单,但是存在问题:下图中的第二个概率和第三个概率计算结果一样,概率是等同的,判断不出这两句话的语义上的区别。

 Unigram模型下评估概率,统计出一篇文章中的单词个数v,然后再分别统计各个单词的个数c(i),然后这个单词的概率就是c(i)/v,然后利用上图中的公式就可以估计出一个句子的概率。例子如下图:

Bigram

Bigram模型依赖于1st order 马尔科夫假设,考虑到了两个单词之间的顺序问题,此种模型下能判断出下图中的第二句话和第三句话哪句话语义上更好。

 Bigram模型下评估概率,主要分为两部分,其中第一部分是评估单词的概率,这个时候的计算方法就和Unigram中的一样;另一部分是条件概率P(C1|C2),先找出出现单词C2的次数a,然后找出出现C2后,紧挨着后面出现C1的次数b,那概率P(C1|C2)=b\a。例子看下图:

N-gram

最常用的是N=3的情况,具体例子如下图:

N-gram模型下评估概率方法和上述两种方法一样,例子如下:

 评估语言模型

Perplexity

Perplexity=2^{-x},其中这个x是average log likelihood,我们期望的是训练出来的语言模型评估出的likelihood(也就是概率)是越大越好,由于log函数是单调递增的,所以期望的x也是越大越好,所以Perplexity就是期望越小越好。

 Smoothing

上文中的几种模型评估概率时,当其中一项为0时,那整体就为0,这样就存在不能很好的区分句子的问题,为了解决这个问题,提出了Smoothing这个方法。

Add-one Smoothing

v是词典的大小,注意是排除掉重复词后的个数,具体计算例子如下图:个人认为图片上的计算有点小错误,个人理解公式的分母应该是c\left ( w_{i-1} \right ),这样才能和图中的计算过程对得上。

Add-K Smoothing

当K=1时就变成了Add-one Smoothing的情况。

Interpolation

核心思路:在计算Trigram概率的同时考虑Unigram、Bigram、Trigram出现的频次。

 Good-Turning Smoothing

对于没有出现过的单词:P_{GT}= \frac{N1}{N},其中N是单词总的个数,N1是指只出现一次的单词的个数。

对于已经出现过的单词:P_{GT}= \frac{\left ( c+1 \right )\cdot N_{c+1}}{Nc\cdot N},其中c是指这个已经出现过的这个单词总共出现的次数,N_{c}是指单词总数为c的单词有几种,比方说N2就是指出现过两次的单词有哪些单词,然后N2就是这些单词的个数。

猜你喜欢

转载自blog.csdn.net/Exception_3212536934/article/details/124661645