愚蠢的退避实施澄清

时间:2013-05-05 09:36:25

标签: nlp smoothing

大家好,我正在为我正在进行的项目实施Stupid Backoff(第2页,等式5)平滑技术,我对其实现有疑问。这是NLP中使用的平滑算法,Good-Turing是我猜最常见的类似算法。

该算法的简要说明如下: 当试图找到单词出现在句子中的概率时,它将首先在n-gram级别查找单词的上下文,如果没有该大小的n-gram,它将递归到(n-1)-gram并将其得分乘以0.4。递归停止在unigrams。

因此,如果我想在“阳光灿烂的日子”的背景下找到“天”的概率,它首先会查看语料库中是否存在三维“晴天”,如果不是,它会尝试与二重奏“阳光灿烂的日子”相同,最后只是将“日”的频率除以语料库大小(训练数据中的单词总数)。

我的问题是:每当我减少n-gram的大小时,我是否将得分乘以0.4?

因此,在上面的示例中,如果我们无法找到三元组或二元语法,那么最终得分将为:

0.4 * 0.4 *频率(天)/ corpus_size?

或者我只是在最后一级乘以一次,所以无论我需要做多少退避,我只是将最终得分乘以0.4?

2 个答案:

答案 0 :(得分:12)

基本上,我在上面的数学中描述了等式5。

因此,对于没有观察到实例的“晴天”,您将计算S(“天”|“晴天”)。如果没有找到“阳光灿烂的日子”三元组,你可以在等式5中取第2个案例,并将S(“day”|“a sunny”)估计为alpha * S(“day”|“sunny”)。

如果再次没有记录“阳光灿烂的日子”,你会将S(“日”|“晴天”)视为alpha * S(“day”),这是终端案例f(“day”)/ N(观察到的unigrams数)。

通过将alpha设置为0.4,您可以得到上面写的内容。

希望这有帮助。

-bms20

答案 1 :(得分:0)

是的,每次因为没有找到搜索到的短语而转移到较低的n-gram模型时,你需要乘以0.4。

根据公式表明0.4乘以" Stupid Backoff"每次得分。