以Bigram为例,阐述平滑需要解决的问题,如下图所示
image.png
对于所有的grams均存在于语料中,有如下的计算值。
image.png
可以看到, 可以计算出给定句子的概率。
再看另外一个例子,如下图所示
image.png
对于未出现过的grams, 例如上图中的▪️ CHER
,表示CHER作为第一个单词出现,在语料中找不到对应的次数。与此同时,对于CHER READ
也找不到。因此这两项为零。那么总体该句子的概率也为0, 这样看来很显然是不对的。这时候就需要采用相应的平滑技术去解决上述的困境。
下面主要提及一些常见的平滑技术。
Add-one smooothing
image.png
经过Add-one修正以后,有下图的计算结果:
image.png
但是该平滑技术的主要漏洞是,不同的grams之间,即便他们都是以UNK
形式存在,也即未登陆词的形式,但是他们理论上出现的可能性却不能执一而论。因此下面将会介绍其他的平滑方法。
Additive smoothing
image.png
Good-Turing estimate
要理解图灵估计,先理解下面的几个概念
image.png
image.png
表示计数为1的grams的个数,例如上图中,trout, salmon, eel每一个的计数均为1,那么计数为1的grams出现了三次,因此
, 理解了这个后,下图中的
就表示计数为
r
的grams出现了次
image.png
可以看出对于计数为0的gram,我只需要计算前一个计数状态出现的次数,即我去计算计数为1的情形出现了几次。但是这样存在一个问题,如果怎么办?此时需要考虑其他的方法,但是图灵估计是其他估计的基础。
image.png