Good-Turing smoothing

原文链接

Good-Turing基本思想是:用观察计数较高的N元语法数重新估计概率量的大小,并把它指派给那些具有零计数或者较低计数的N元语法。
公式:
c∗=(c+1)Nc+1Ncc^* = \frac{(c+1)N_{c+1}}{N_c}c∗=Nc​(c+1)Nc+1​​
其中c为某个N-gram出现的频数,NcN_cNc​为出现次数为c的N-Gram的词组的个数,c∗为Good−Turing平滑计数c^*为Good-Turing平滑计数c∗为Good−Turing平滑计数
例子:
对于a = [A,A,A,B,B,C,D,E] sum(len(a)) = 7
cA=3c_A = 3cA​=3 cC=2c_C = 2cC​=2
cB=cD=cE=1c_B = c_D = c_E = 1cB​=cD​=cE​=1
N1N_1N1​=4 N2N_2N2​=1 N3=1N_3=1N3​=1
thus
cA∗=4∗03=0c^*_A = 4*\frac{0}{3} = 0cA∗​=4∗30​=0
cB∗=3∗11=3c^*_B = 3*\frac{1}{1} = 3cB∗​=3∗11​=3
cC∗=cD∗=cE∗=2∗14=12c^*_C = c^*_D = c^*_E = 2*\frac{1}{4} = \frac{1}{2}cC∗​=cD∗​=cE∗​=2∗41​=21​
(注意在他们求概率的时候都需要除以N = 7)
然而这样会导致最高频率的结果最后的计数为0,解决方法如下

  1. 可以对于较低的计数使用PGTP_{GT}PGT​,而对于较高的计数直接使用PMLE=cNP_{MLE} = \frac{c}{N}PMLE​=Nc​
  2. 也可以在较大的计数的时候使用$F® = ar^b $,其中a,b为参数,b<-1

最终会出现概率之和不为0的情况,这时候要进行归一化,固定没有见过的结果的概率,将已经见过的概率之和归一化使得共同的概率结果为1
例子可见于L9-NLP-LangModels.pdf第64页

Absolute discounting

一般的interpolation是利用高阶的模型的PMLEP_MLEPM​LE乘以一个λ\lambdaλ,而此处是从每个非零计数中减掉一个固定的δ∈(0,1)\delta \in (0,1)δ∈(0,1),一般取δ=0.75\delta = 0.75δ=0.75
在bigram中,公式为
PAD(wi∣wi−1)=c(wi−1,wi)−δc(wi−1)+λ(wi−1)P(w))P_{AD}(w_i|w_{i-1}) = \frac{c(w_{i-1},w_i)-\delta}{c(w_{i-1})}+\lambda(w_{i-1})P(w))PAD​(wi​∣wi−1​)=c(wi−1​)c(wi−1​,wi​)−δ​+λ(wi−1​)P(w))
其中λ(wi−1)为插值权重系数\lambda(w_{i-1})为插值权重系数λ(wi−1​)为插值权重系数
于是完整的公式就是
pabs(wi∣wi−n+1i)=max{c(wi−n+1i)−δ,0}∑wic(wi−n+1i)+(1−λwi−n+1i−1pab(wi∣wi−1i−n+2))p_{abs}(w_i|w^i_{i-n+1}) = \frac{max\{c(w^i_{i-n+1})-\delta,0\}}{\sum_{w_i}c(w^i_{i-n+1})}+(1-\lambda_{w^{i-1}_{i-n+1}}p_{ab}(w_i|w^{i-1}{i-n+2}))pabs​(wi​∣wi−n+1i​)=∑wi​​c(wi−n+1i​)max{c(wi−n+1i​)−δ,0}​+(1−λwi−n+1i−1​​pab​(wi​∣wi−1i−n+2))
为了使得结果的总和为1
1−λwi−n+1i−1=δ∑wic(wi−n+1i)N1+(wi−n+1i−1∙)1 - \lambda _ { w _ { i - n + 1 } } ^ { i - 1 } = \frac { \delta } { \sum _ { w _ { i } } c ( w _ { i - n + 1 } ^ { i } ) } N _ { 1 + } ( w _ { i - n + 1 } ^ { i - 1 } \mathbf { \bullet } )1−λwi−n+1​i−1​=∑wi​​c(wi−n+1i​)δ​N1+​(wi−n+1i−1​∙)
其中
N1+(wi−n+1i−1∙)=∣{wi:c(wi−n+1i−1wi)>0}∣N _ { 1 + } \left( w _ { i - n + 1 } ^ { i - 1 } \bullet \right) = \left| \left\{ w _ { i } : c \left( w _ { i - n + 1 } ^ { i - 1 } w _ { i } \right) > 0 \right\} \right|N1+​(wi−n+1i−1​∙)=∣∣​{wi​:c(wi−n+1i−1​wi​)>0}∣∣​

Kneser-Ney smoothing

bigram下的公式:
pKN(wi∣wi−1)=max⁡(c(wi−1,wi)−δ,0)∑w′c(wi−1,w′)+λwi−1pKN(wi)p _ { K N } \left( w _ { i } | w _ { i - 1 } \right) = \frac { \max \left( c \left( w _ { i - 1 } , w _ { i } \right) - \delta , 0 \right) } { \sum _ { w ^ { \prime } } c \left( w _ { i - 1 } , w ^ { \prime } \right) } + \lambda _ { w _ { i - 1 } } p _ { K N } \left( w _ { i } \right)pKN​(wi​∣wi−1​)=∑w′​c(wi−1​,w′)max(c(wi−1​,wi​)−δ,0)​+λwi−1​​pKN​(wi​)
其中
pKN(wi)=∣{w′:0<c(w′,wi)}∣∣{(w′,w′′):0<c(w′,w′′)}∣p _ { K N } \left( w _ { i } \right) = \frac { \left| \left\{ w ^ { \prime } : 0 < c \left( w ^ { \prime } , w _ { i } \right) \right\} \right| } { \left| \left\{ \left( w ^ { \prime } , w ^ { \prime \prime } \right) : 0 < c \left( w ^ { \prime } , w ^ { \prime \prime } \right) \right\} \right| }pKN​(wi​)=∣{(w′,w′′):0<c(w′,w′′)}∣∣{w′:0<c(w′,wi​)}∣​
为的是求解在一个不熟悉的上下文中看见单词wiw_iwi​的可能性,这使用wiw_iwi​在出现在所有单词的次数和除以所有bigram的和来衡量
减掉一个固定的δ∈(0,1)\delta \in (0,1)δ∈(0,1),一般取δ=0.75\delta = 0.75δ=0.75
λwi−1\lambda_{w_{i-1}}λwi−1​​是用来平衡使得条件概率pKN(wi∣wi−1)p _ { K N } ( w _ { i } | w _ { i - 1 } )pKN​(wi​∣wi−1​)的总和为1的系数
得出满足条件的λwi−1\lambda_{w_{i-1}}λwi−1​​结果为
λwi−1=δ∑w′c(wi−1,w′)∣{w′:0<c(wi−1,w′)}∣\lambda _ { w _ { i - 1 } } = \frac { \delta } { \sum _ { w ^ { \prime } } c \left( w _ { i - 1 } , w ^ { \prime } \right) } \left| \left\{ w ^ { \prime } : 0 < c \left( w _ { i - 1 } , w ^ { \prime } \right) \right\} \right|λwi−1​​=∑w′​c(wi−1​,w′)δ​∣{w′:0<c(wi−1​,w′)}∣
可以推广到n-gram
pKN(wi∣wi−n+1i−1)=max⁡(c(wi−n+1i−1,wi)−δ,0)∑w′c(wi−n+1i−1,w′)+δ∣{w′:0<c(wi−n+1i−1,w′)}∣∑wic(wi−n+1i)pKN(wi∣wi−n+2i−1)p _ { K N } \left( w _ { i } | w _ { i - n + 1 } ^ { i - 1 } \right) = \frac { \max \left( c \left( w _ { i - n + 1 } ^ { i - 1 } , w _ { i } \right) - \delta , 0 \right) } { \sum _ { w ^ { \prime } } c \left( w _ { i - n + 1 } ^ { i - 1 } , w ^ { \prime } \right) } + \delta \frac { \left| \left\{ w ^ { \prime } : 0 < c \left( w _ { i - n + 1 } ^ { i - 1 } , w ^ { \prime } \right) \right\} \right| } { \sum _ { w _ { i } } c \left( w _ { i - n + 1 } ^ { i } \right) } p _ { K N } \left( w _ { i } | w _ { i - n + 2 } ^ { i - 1 } \right) pKN​(wi​∣wi−n+1i−1​)=∑w′​c(wi−n+1i−1​,w′)max(c(wi−n+1i−1​,wi​)−δ,0)​+δ∑wi​​c(wi−n+1i​)∣∣​{w′:0<c(wi−n+1i−1​,w′)}∣∣​​pKN​(wi​∣wi−n+2i−1​)

Good-Turing、Absolute、kneser-ney smooth相关推荐

  1. CSSposition定位(relative、absolute、fixed、sticky)

    这一周,我在逆战班学习了很多,具体介绍一下position相对定位和绝对定位,希望可以帮助到你. **position定位 ** position 的五个属性:static(默认).relative. ...

  2. htm——position:static、absolute、relative详解

    前言 接触html.和css时间也不短了,但每次用div+css布局的时候心里还是有点儿虚,有时候干脆就直接用table算了,很多时候用div会出现些不可预料的问题,虽然花费一定时间能够解决,但总不是 ...

  3. 前端系列——与众不同的移动端底部固定栏 fixed、absolute 兼容 iOS 和 Android 方案

    相信我,我分享的和你在其他博客上看到的终极方案是如此的与众不同! 做过移动端开发的同学,对底部DOM定位出现的各种奇葩情况已经深恶痛绝了吧,底部DOM设置不同的position,在Android和io ...

  4. 前端系列——与众不同的移动端底部固定栏 fixed、absolute 兼容 iOS 和 Android 方案...

    相信我,我分享的和你在其他博客上看到的终极方案是如此的与众不同! 做过移动端开发的同学,对底部DOM定位出现的各种奇葩情况已经深恶痛绝了吧,底部DOM设置不同的position,在Android和io ...

  5. 前端项目总结干货 + 渡一、coderwhy、黑马、尚硅谷实操笔记(第二版,持续更新中~~~)

    前端学习笔记(温馨提示:最好根据目录查看笔记) 构建vite.vue项目 1.npm create vite@latest my-vue-app 2.vue create vue01 知识储备 响应式 ...

  6. 网页定位(position属性、相对定位、绝对定位、固定定位、z-index、设置透明度)

    position属性 static:默认值,没有定位 relative:相对定位,相对于自己原来的位置进行偏移 absolute:绝对定位,以它最近一个已经定位的祖先元素为基准进行偏移 fixed:固 ...

  7. margin-top、top、以及position的总结

    子元素的margin-top属性传递给父元素的问题 这个问题发生的原因是根据规范,一个盒子如果没有上补白(padding-top)和上边框(border-top),那么这个盒子的上边距会  和其内部文 ...

  8. 【CSS笔记】CSS布局之五种定位方式(静态、相对、绝对、固定、粘性)

    目录 一.CSS定位布局 1.1.static静态定位 1.2.relative相对定位 1.3.fixed固定定位 1.4.absolute绝对定位 (1)默认绝对定位参考点 (2)设置绝对定位参考 ...

  9. css样式大全(总结、心得、css3新特性、盒子居中模型等)

    css.html.js是前端的 三剑客 学习好css,这能让前端页面'妆扮'成更加美丽! 行内元素(display:inline) span a bi em label input select te ...

最新文章

  1. 中石油《计算机应用基础》,中石油华东《计算机应用基础》2018年秋学期在线作业(一).doc...
  2. 详解rsync算法--如何减少同步文件时的网络传输量
  3. 经典:区间dp-合并石子
  4. java 不识别enum_Java enum关键字不识别的快速解决办法
  5. 英语口语 week12 WednesDay
  6. 关于我,十九线程序员小 UP
  7. 剑指 Offer II 110. 所有路径
  8. 攻防世界 MISC 新手练习区 答题(1-12题解)
  9. IpV6 linux RedHat5
  10. Markdown 编辑器 Editor.md 预览
  11. Atitit 图像处理之理解卷积attilax总结
  12. python 文件写入多个参数_如何将多个参数写入txt文件(字符串和变量)
  13. C++/测绘附和导线测量源码
  14. x64驱动遍历 DPC 定时器
  15. 微信小程序-腾讯地图报错:鉴权失败,请传入正确的key
  16. 第一次团队作业——团队选题报告
  17. php 取出最后一数组元素,PHP取出数组中最后一个元素的方法汇总
  18. sql语句date函数
  19. oeasy教您玩转vim - 21 - 状态横条
  20. Discuz文章采集工具,Dz文章采集发布工具

热门文章

  1. React:input输入框只能输入英文和特殊字符(可以自定义限制)
  2. 哨兵 双向 java_SpringCloud微服务:Sentinel哨兵组件,管理服务限流和降级
  3. liunx基础—zabbix5.0监控系统安装部署
  4. Appid + appSecret + code 到微信方服务器 获取 session_key openid 并授权登录
  5. java.lang.IllegalArgumentException: Illegal pattern character 'Y' 解决办法
  6. urllib库(二)parse模块:urlparse()/urlsplit(),parse_qs()/parse_qsl(),urlunparse()/urlunsplit(),urlencode()
  7. 第五章 存储数据 web scraping with python
  8. 飞机订票系统c语言大作业,C语言知识学习飞机订票系统
  9. VMware百度百科
  10. 转oracle数据库字符集AL32UTF8修改为ZHS16GBK即从超集到子集