Nlp 拉普拉斯三角形平滑

Nlp 拉普拉斯三角形平滑,nlp,Nlp,我有一个拉普拉斯平滑的三角模型, 我的训练句子是一只猫坐在垫子上。一只肥猫坐在垫子上。一只老鼠坐在垫子上。老鼠坐在猫身上。蝙蝠朝坐在垫子上猫身上的老鼠吐口水。 我想评估测试句子一只猫坐在垫子上(评估意味着计算可能性)。 答案是log(似然)=-4.297(答案来自我的教授)。 问题是我计算不出。 我尝试的是: log(p(a))+log(cat | a)+log(sat | a cat)+log(on | cat sat)+log(on | sat on)+log(the | sat on)+l

我有一个拉普拉斯平滑的三角模型, 我的训练句子是一只猫坐在垫子上。一只肥猫坐在垫子上。一只老鼠坐在垫子上。老鼠坐在猫身上。蝙蝠朝坐在垫子上猫身上的老鼠吐口水。

我想评估测试句子
一只猫坐在垫子上
(评估意味着计算可能性)。 答案是log(似然)=-4.297(答案来自我的教授)。 问题是我计算不出。 我尝试的是:
log(p(a))+log(cat | a)+log(sat | a cat)+log(on | cat sat)+log(on | sat on)+log(the | sat on)+log(mat | on the the)=
-1.0492+-0.9030+-0.8129+-0.845+-0.452+-0.5797

有人能帮我找出我做错了什么吗?

你使用的是bigram模型的马尔可夫近似。在三元语言模型中,我们处理的是三元组的标记,而不是对。换句话说,猫坐在垫子上的概率应为:

log(P(a cat sat on the mat)) =
   log(P(a|<s>, <s>)) + log(P(cat|<s>, a)) + log(P(sat|a, cat)) +
   log(P(on|cat, sat)) + log(P(the|sat, on)) + log(P(mat|on, the)) + 
   log(P(</s>|the, mat)) + log(P(</s>|mat, </s>))
如果您需要更多了解,可以回到Danial Jurafsky教授(斯坦福大学)的这两个视频:

  • n克:
  • 估算n克:

你是如何计算log(p(a))和log(p(cat | a))?p(a)=计数(a)/N其中N是字数,p(cat | a)=计数(a)/count(a)
P(w3|w1, w2) = count(w1, w2, w3) / count(w2 w3)