由于语料不可能覆盖掉所有的情况,比如语料中有“小明读了一本书”, 那么“小李读了一本书”没有在语料中出现按照MLE最大似然估计其概率就是0,这显然是不合常理的。所以我们需要对模型进行光滑处理,就是要分一部分概率给语料中没有出现的部分。

问题是如何分配,应该分配多少呢。(下面的课件来自nhu的NLP课程)

  这种情况看上去我们分给未知部分的概率太多了24/29

更多的观察更好的数据更小的光滑,分给未知部分23/326

一个极端的情况,这样add one广顺 其实会认为未知事物概率更大,看到我们训练中的数据的可能性很小。

可以看到对于大的词典,我们分配给未知事物的概率太大了。为了减少未知事物分配的概率,我们可以将add 1改为add lamda,  0 < lamda < 1,如下面的公式B是词典的大小,N是语料总token数目。

那么lamda应该取多大呢?

留存估计

<<统计自然语言处理基础>>p129。即我们观察在训练语料中出现了r次的ngram在更多文本比如一个预留的测试文本中出现的频率估计。比如再训练语料中出现2次的ngram有N2个,那么这些type在测试文本中出现了一共T2次,那么平均每一个type出现次数是T2/N2,概率估计就是T2/(N2*T),T是留存文本中的总token数目。比如训练语料中出现为0的所有type,考察在测试文本中的出现次数按照上面的方法我们可以估算应该分配给未出现type的概率大小。可以参考P127表6.4。

一些常见的广顺方法

我们认为左边的情况显然应该更rare,因为分布更加集中,而右边更加均匀,那么nove events的概率更大些。

written-bell光顺的主要思路是用T/N+T(T不包括N0)作为对所有未出现事物总的概率的估计。对于一个先前没有看到的事件,使用在语料中看到这样一个新事物的概率代替。

Good-Turing光顺

使用回退

下面是《有点意思,拼音输入法》中的解释

一般的back-off模型的表示如下:
Ps(Wi|h) = Pd(Wi|h)         -- C(h,Wi) > 0
           bow(h).Ps(Wi|h') -- C(h,Wi) == 0

  • h'是h去掉其第一个词,对trigram (A,B,Wi)来说,h为(A,B),h'为B。
  • Pd(Wi|h) < Pml(Wi|h),对最大似然估计进行打折(discount),可使用多种不同的打折方法。
  • bow(h)被称为back-off weight(回退权重),对于给定的h,bow(h)是一个常数,并且可以通过下面的方法来确定Ps(W1|h)+Ps(W2|h)+...+Ps(Wn|h) = sum_i (Ps(Wi|h)) = 1
  • 上面这个式子是递归的,如果(h',Wi)出现次数为0,还会继续回退,也许会回退到Wi,甚至回退到平均分配(如果Wi也未出现)
  • 如果h在训练中没有见到,则P(Wi|h) = P(Wi|h')

Katz的back-off模型使用的是Good-Turing方法。Kneser-Ney是另一种back-off模型,其平滑效果要好于Katz方法。Stanley Chen和Joshua Goodman专门写过一篇论文,详细比较了各种平滑方法的优劣,有兴趣可以去读一读。

可以看到打折还是相同的打折给未知事物和原有打折方法一样的概率分配,但是具体分配到某个未知事物的时候不再是平均分配了,是和上层语境有关的,即和回退到上层的概率有关系的(the baby > the zygote),上层概率大的分配的也多(see the baby > see the zygote)。

ngram模型中文语料实验step by step(3)-ngram模型的光滑处理相关推荐

  1. 全网最硬核 Java 新内存模型解析与实验 - 1. 什么是 Java 内存模型

    个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判.如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 i ...

  2. 基于深度学习的Wiki中文语料词word2vec向量模型

    资源下载地址:https://download.csdn.net/download/sheziqiong/85820613 资源下载地址:https://download.csdn.net/downl ...

  3. 利用Python构建Wiki中文语料词向量模型

    利用Python构建Wiki中文语料词向量模型试验 完整代码下载地址:利用Python构建Wiki中文语料词向量模型 本实例主要介绍的是选取wiki中文语料,并使用python完成Word2vec模型 ...

  4. 中文word2vec的python实现_利用Python实现wiki中文语料的word2vec模型构建

    本实例主要介绍的是选取wiki中文语料,并使用python完成Word2vec模型构建的实践过程,不包含原理部分,旨在一步一步的了解自然语言处理的基本方法和步骤.文章主要包含了开发环境准备.数据的获取 ...

  5. 全网最硬核 Java 新内存模型解析与实验 - 2. 原子访问与字分裂

    个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判.如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 i ...

  6. 全网最硬核 Java 新内存模型解析与实验 - 4. Java 新内存访问方式与实验

    个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判.如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 i ...

  7. 全网最硬核 Java 新内存模型解析与实验 - 3. 硬核理解内存屏障(CPU+编译器)

    个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判.如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 i ...

  8. 【用户行为分析】 用wiki百科中文语料训练word2vec模型

    本文地址: http://blog.csdn.net/hereiskxm/article/details/49664845  前言 最近在调研基于内容的用户行为分析,在过程中发现了word2vec这个 ...

  9. wiki中文语料的word2vec模型构建

    一.利用wiki中文语料进行word2vec模型构建 1)数据获取 到wiki官网下载中文语料,下载完成后会得到命名为zhwiki-latest-pages-articles.xml.bz2的文件,里 ...

最新文章

  1. CVPR 2020丨UDVD:用于可变退化的统一动态卷积超分辨率网络
  2. 表贴光电池 FU-NJL6402R-2 的特性
  3. 【Linux 内核】Linux 内核源码目录说明 ③ ( lib 目录 | LICENSES 目录 | mm 目录 | net 目录 | samples 目录 | scripts 目录 )
  4. 安装中文VS2008 SP1之后 智能提示是英文的解决办法
  5. Android自定义app图标,自定义app图标(Icon) - Cordova中文网
  6. 母子盗打电话竟为获取游戏Q币
  7. 计算机数媒专业优势,27所院校新开设数字媒体艺术专业,“数媒”专业为什么这么火?...
  8. Dart编译技术在服务端的探索和应用
  9. android sd卡相关avc,Android 5.x 权限问题解决方法
  10. python url解析path_Django(CBV解析、模板层)
  11. easyexcel 在 设置标题_EasyExcel 自定义单元格式的问题。
  12. 动易 dw css不对,动易模板制作示.doc
  13. [圣诞大礼][android控]平板电脑HD精品游戏软件合集
  14. java 生成印章_印章生成
  15. uva10098--排列
  16. catia 二次开发:环境变量路径,检查路径存在,关闭文件,对象为空,获取pad对象,err,part的product,全局变量,常量,SystemService,input,选择文件 时间,函数调用
  17. camera成像能力-清晰度(Resolution,Sharpen)
  18. Wincc报表案例_设备运行报表
  19. 平面内有N个点,如何快速求出距离最近的点对?
  20. 清除浏览器默认表单边框/背景特效和下拉菜单背景

热门文章

  1. 学以致用六---Centos7.2+python3.6.2+django2.1.1 --搭建一个网站
  2. linux:记录一次 处理tomcat启动卡死无报错现象的曲折过程
  3. 解决问题:Appium WebView 跳转页面后无法定位元素
  4. Laravel学习笔记之冒泡、快速、选择和插入排序(持续更新)
  5. safari里的touch事件解析
  6. 《.NET应用架构设计:原则、模式与实践》新书博客-2.1.1-设计原则简述
  7. 【重点!DP】LeetCode 639. Decode Ways II
  8. 程序员面试金典——18.1另类加法
  9. 强化学习的基础总结(一)
  10. Linux下Qt使用QAudio相关类进行音频采集,使用Windows下的Matlab软件播放