2013-05-05 66 views
12

你好的人我执行一个项目Stupid Backoff(第2页,方程5)平滑技术我的工作,我必须就其执行的问题。这是NLP中使用的平滑算法,Good-Turing是我猜最熟悉的类似算法。愚蠢的退避实施澄清

算法的简要描述: 当试图找到这个词的出现在一个句子中它会先看看上下文的单词的n元水平,如果没有正克的概率大小将递归到(n-1)图并将其分数乘以0.4。递归在unigrams处停止。

所以如果我想在“阳光灿烂的日子”中找到“日”的概率,它首先会查看语料库中是否存在三元组“阳光灿烂的日子”,如果不是这样尝试用两字“阳光灿烂的日子”一样,最终它只是得到“天”是由卵巢大小划分的频率(在训练数据字的总数)。

我的问题是:我每一次我减少正克的大小时乘以0.4的分数?

所以,如果我们不能够找到一个三克或每克最终比分将是上面的例子:

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

还是我只是在最后一级倍增曾经那么不管我有多少回退,使我刚乘最后得分0.4?

+1

是的,你每次乘 – 2013-05-05 15:50:39

回答

10

基本上我读式5,你在你的数学描述以上。

所以对于没有观察到实例“阳光灿烂的日子”,你会计算S(“天” |“一个阳光明媚的”)。没有找到卦“阳光灿烂的日子”,你会采取在等式5的情况下两个,估计S(“天” |“一个阳光明媚”)作为阿尔法·S(“天时” |“阳光灿烂”)。

如果没有记录“阳光灿烂的日子”,你会将S(“day”|“sunny”)近似为alpha * S(“day”),这是终端情况f(“day”)/N(观察到的unigrams的数量)。

通过设置阿尔法以0.4你得到你上面写了什么。

希望这会有所帮助。

-bms20

0

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

如对于式暗示0.4由“笨退避”乘以每次得分。