大家好,我正在为我正在研究的项目实施愚蠢的退避(第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
| 归档时间: |
|
| 查看次数: |
9493 次 |
| 最近记录: |