愚蠢的退避实施澄清

Bar*_*Bar 15 nlp smoothing

大家好,我正在为我正在研究的项目实施愚蠢的退避(第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?

小智 13

基本上我读了你在上面的数学中描述的等式5.

因此,对于没有观察到实例的"晴天",您将计算S("天"|"晴天").没有找到三元组"晴天"你会在方程式5中采用案例二,并估计S("天"|"晴天")为alpha*S("day"|"sunny").

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

通过将alpha设置为0.4,您可以获得上面所写的内容.

希望这可以帮助.

-bms20