ngram 求句子概率(平滑)

ngram平滑主要解决在当前gram下,词表中没有出现该词的情况(不能使用想当然的词频0).

 

Sen=一个 傻子 走 在 大陆 上

p(sen)=p(一个|start)p(傻子|一个)p(走|一个,傻子)*p(在|傻子,走)…

 

求p(傻子|一个)的方法为在词表中找 【一个 傻子】 的概率(经过了log计算)但是….没有找到

于是,使用 这个回退系数bow(-0.4344)来通过p(傻子)*bow作为p(傻子|一个)【如果傻子也不存在,那么应该是OOV了吧】

那么bow应该怎么求呢?

参考: https://blog.csdn.net/xmdxcsj/article/details/50373554

 

假设p(傻子|一个)[一个 傻子]在2gram中不存在,则求p(傻子|一个)变为求

bow(一个)*p(傻子)。

假设词表中为[一个 苹果],[一个 粒子],而没有[一个 傻子]。

根据公式 bow(一个)=(1-p(苹果|一个)-p(例子|一个))/(p(傻子)

从而得到p(傻子|一个)的概率值。

 

假设p(在|傻子,走) [傻子 走 在]在3gram中不存在,则求p(在|傻子,走)变为求:

bow(傻子,走)*p(在|走)。那么bow(傻子,走)怎么求。

假设词表中存在[傻子 走 好],[傻子 走 起],而没有[傻子 走 在]。

bow(傻子,走)=(1-p(好|傻子,走)-p(起|傻子,走))/(p(好|走)+p(起|走))

从而可以得到p(在|傻子,走)的概率值。

 

最后相乘得到句子的概率。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值