问题提出:为了解决训练语料中的零概率问题。平滑处理的基本思想是一种“劫富济贫”,即提高低(零)概率,降低高概率,尽量使得概率分布趋于均匀。
加一平滑方法
假设每个二元语法出现的次数比实际出现的次数多一次,不妨将该处理方法称为加1法。
p(wi|wI−1)=1+c(wi−1,wi)∑wi[1+c(wi−1,wi)]=1+c(wi−1,wi)|V|+∑wi[1+c(wi−1,wi)]
加法平滑方法
p(wi|wI−1)=δ+c(wi−1,wi)δ|V|+∑wi[1+c(wi−1,wi)]
其中
0≤δ≤1
Good-Turing估计法
nr是训练语料中恰好出现r次的n元语法的数目,假设它出现了r∗次。
r∗=(r+1)nr+1nr
对于统计数为r的n元语法,其概率为
pr=r∗∑r=1∞nrr
该方法不能直接用于估计
nr=0
的n-gram概率。也不能实现高阶模型与低阶模型的结合。
Katz平滑方法
pkatz(wiI−1)=dr⋅c(wii−1)c(wi−1),r>0
dr=r∗r−(k+1)nk+1n11−(k+1)nk+1n1
pkatz(wiI−1)=α(wi−1⋅pML(wi)),r=0
α(wi−1)=1−∑wj:c(wii−1)>0pkatz(wi|wi−1)1−∑wj:c(wii−1)>0pML(wi)
pkatz(wi|wi−1)=ckatz(wii−1)∑wickatz(wii−1)
Jelinek-Mercer平滑方法
pinterp(wi|wI−1I−n+1)=λwI−1I−n+1pML(wi|wI−1I−n+1)+(1−λwI−1I−n+1)pinterp(wi|wi−1I−n+2)
Witten-Bell平滑方法
pWB(wi|wI−1I−n+1)=c(wiI−n+1)+|wi:c(wi−1i−n+1⋅wi)>0|⋅pWB(wi|wI−1I−n+2)∑wic(wii−n+1)+|wi:c(wi−1i−n+1⋅wi)>0|
绝对值减法
pabs(wi|wI−1I−n+1)=max{(wii−n+1−D,0)}∑wic(wii−n+1)
Knerser-Ney平滑方法
pKN(wi)=N1+(⋅wi)N1+(⋅⋅)
pKN(wi|wi−1i−n+2)=N1+(⋅wi−1i−n+2)N1+(⋅wi−1i−n+2⋅)
修正的Knerser-Ney平滑方法
修正的KN平滑方法修改
pKN(wi|wi−1i−n+1)
的表示如下:
pKN(wi|wi−1i−n+1)=c(wii−n+1)−D(c(wii−n+1))∑wic(wii−n+1)+γ(wi−1i−n+1)pKN(wi|wi−1i−n+2)
γ(wi−1i−n+1)=D1N1(wi−1i−n+1⋅)+D2N2(wi−1i−n+1⋅)+D3+N3+(wi−1i−n+1⋅)∑wic(wii−n+1)
D(c)=0,c=0=D1,c=1=D2,c=2=D3+,c≥3
Y=n1n1+2n2D1=1−2Yn2n1D2=2−3Yn3n2D3+=3−4Yn4n3
Reference:
《统计自然语言处理》