Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

C.1 绝对折扣

Kneser–Ney 方法源于一种称为绝对折扣(absolute discounting)的方法。回想一下,我们必须对高频 n 元语法的计数进行折扣,从而留出一部分概率质量,供平滑算法分配给未见过的 n 元语法。

为说明这一点,可以采用 Church 和 Gale(1991)提出的巧妙思路。考虑一个计数为 4 的 n 元语法。我们需要将这个计数减去一定数值,但究竟应减去多少?Church 和 Gale 的做法是查看留出语料库,直接考察训练集中所有计数为 4 的二元语法在留出语料库中的计数。他们利用 2,200 万词的美联社新闻语料建立二元语法模型,再检查这些二元语法在另一个 2,200 万词语料库中的计数。平均而言,在前 2,200 万词中出现 4 次的二元语法,在后 2,200 万词中出现 3.23 次。图 C.1 摘自 Church 和 Gale(1991),列出了训练集计数从 0 到 9 的二元语法在留出集中的平均计数。

训练集中的二元语法计数留出集中的二元语法计数
00.0000270
10.448
21.25
32.24
43.23
54.21
65.23
76.21
87.21
98.26

图 C.1 在 2,200 万词的美联社新闻训练语料中,分别取计数为 0、1、2、……、9 的所有二元语法,并统计它们在另一个同为 2,200 万词的留出语料库中的平均计数。

注意图 C.1:除训练集计数为 0 和 1 的情况外,只需从训练集计数中减去 0.75,就能相当准确地估计留出集中的其他二元语法计数。绝对折扣把这一直觉形式化:从每个计数中减去固定的(绝对)折扣值 dd。其直觉是,我们已经能够很好地估计非常大的计数,所以较小的折扣值 dd 对它们影响不大。折扣主要改变较小的计数,而我们原本也未必信任这些小计数的估计;图 C.1 表明,在实践中,该折扣对计数为 2 到 9 的二元语法确实很合适。用于二元语法的插值绝对折扣公式为:

PAbsoluteDiscounting(wiwi1)=C(wi1wi)dvC(wi1v)+λ(wi1)P(wi)(C.1)P_{\text{AbsoluteDiscounting}}(w_i\mid w_{i-1}) = \frac{C(w_{i-1}w_i)-d}{\sum_v C(w_{i-1}v)} + \lambda(w_{i-1})P(w_i)\tag{C.1}

第一项是经过折扣的二元语法,其中 0d10\leq d\leq 1;第二项是插值权重为 λ\lambda 的一元语法。观察图 C.1 可知,把所有 dd 都设为 0.75 似乎已经很有效;也可以为计数为 1 的二元语法单独保留第二个折扣值 0.5。还存在一些有理论依据的 dd 值设定方法。例如,Ney 等人(1994)把 dd 定义为 n1n_1n2n_2 的函数,其中 n1n_1n2n_2 分别表示计数为 1 和 2 的一元语法数量:

d=n1n1+2n2(C.2)d = \frac{n_1}{n_1+2n_2}\tag{C.2}