如何计算 n-gram 模型中使用的绝对折扣?

How to calculate the absolute discounting used in n-gram model?

请问关于绝对折扣实施的一些问题?感谢您的帮助!

我的毕业设计是n-gram语言模型,尝试绝对折扣。我参考了page上的公式:

  f(a_z)  = (c(a_z) - D) / c(a_)
  p(a_z)  = (c(a_z) > 0) ? f(a_z) : bow(a_) p(_z)
  bow(a_) = (1 - Sum_Z1 f(a_z)) / (1 - Sum_Z1 f(_z))

但是我的程序打印的back-off weight的结果和ngram-count生成的ARPA文件不一样。我想这是我对公式的误解造成的。这是我的理解。假设计算 bow(a,b):

  bow(ab) = (1 - Sum_Z1 f(abz)) / (1 - Sum_Z1 f(bz)) = (N(ab) / C(ab)) / (N(b) / C(b))

其中 N(ab) 表示像 'abc' 和 'abd' 这样的唯一 n-gram 的数量。

我说得对吗?还有bow(a)的时候没有后缀怎么计算分母'a'?

提前致谢!

我找到了我自己问题的关键因素。那是鼓励!答案如下:

贴出的公式有误

bow(ab) = (1 - Sum_Z1 f(abz)) / (1 - Sum_Z1 f(bz)) = (N(ab) / C(ab)) / (N(b) / C(b))

正确的是

bow(ab) = (1 - Sum_Z1 f(abz)) / (1 - Sum_Z1 f(bz)) = (N(ab) * D / C(ab)) / (1 - Sum_Z1 f(bz))