如何计算 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))
请问关于绝对折扣实施的一些问题?感谢您的帮助!
我的毕业设计是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))