平滑方法:

1. Add-1 smoothing

2. Add-k smoothing

设m=1/V,则有

从而每一项可以跟词汇表的大小相关

3. Unigram prior smoothing

将上式中的1/v换成unigram概率P(wi),则有:

其是插值的一种变体,其将某种unigram概率加入到bigram的计算中。

4. Good-Turing Smoothing

大部分平滑算法比如Good-Turing、Kneser-Ney、Witten-Bell采用的主要思想是用之前已知的数据的计数来预测未知的数据的计数,旨在将未知的0值用其他数值替代。

下面是具体方法:

表示频率c出现的次数,然后将其应用到Good-Turing平滑算法中,如下:

假设你在钓鱼,然后抓到了:

1)下一条鱼是trout的概率是多少?

答:1/18

2)下一条鱼是新的品种的概率是多少?

答:3/18,因为N1=3

3)下一条鱼是trout的概率是多少

答:小于1/18,因为还有一部分概率3/18是留给新的品质的鱼的。具体数值使用Good Turing方法计算。

MLE:最大似然概率

具体方法:

设有一个大小为c的训练集,然后从c个词中抽取一个词作为留存数据,则原数据集大小变为c-1,然后在原训练集中抽取另一词作为留存数据,迭代重复抽取过程,重复c次,则得到c个c-1大小的训练集和大小为1的留存数据集,如下:

如此,假设每个留存数据在原训练集中出现r次,则抽取之后该留存数据在对应现数据集中出现r-1次,则原Nr即计数为r的词的频次需要减一,而Nr-1即计数为r-1的词的频次需要加1,从而有以上对应内容,即现对应Nr-1的内容为原Nr的内容。

那么

1)有多少比例的留存数据在训练集中是不可见的:N1/C

2)有多少比例的留存书籍在训练集中出现了k次:

所以我们预计会出现个词,其出现频次在训练集中为k。

又因为在训练数据集中出现k次的词一共有Nk个,所以每个词出现的概率为:

或者写作:

但是有一个问题,可能Nk+1与Nk的值差的非常大,那么以上计算方法就容易不准确。

实际上语料库中Nk的分布可能如下所示:

可能出现频次非常大的N4417中只有一个“the”这个词。

所以在Simple Good-Turing中在计数是除了最开始的几项,后续的采用合适的拟合曲线来表征,如下:

5. Kneser-Ney Smoothing

上述Good-Turing Smoothing方法中,对于每一项的计数做了一下调整:

,从而有:

可以发现每一项的新值其实差不多为

即差值是固定的,那么我们可以直接应用这种固定的差值(也称之为折扣),称之为absolute discounting绝对折扣法。

· Absolute Discounting Interpolation

d是一个固定的数值,即折扣。但是关键在于应用unigram的项是否恰当,所以有:

· Kneser-Ney 概率forunigram

当我们要预测下一个词的时候,比如:I cant see withon my reading ______

实际上应该是glasses,但是如果单单按照unigram频次的话,Francisco更有可能,因为其频次更高。然后Fancisco一般是紧随着San出现的,所以unigram只有在我们不知道bigram的时候才有用.

所以我们不应该只简单地问P(w):"是w这个词的可能性是多少",而是应该问:“w能组成一种新的‘延续’的可能性是多少”,那么如何计算这个概率呢?

· 对于每个词,计算它紧跟着另一个词所组成的不同的bigram类型的数目

· 每个第一次出现的bigram即是一种新的‘延续’,其概率与能跟w组成bigram的词的集合大小成比例:

再用整体bigram类型数目做正则化:

在Kneser-Ney Smoothing中写作:

与w组成bigram的前驱单词数目=

用所有bigram数目做正则化,则有

结合以上absolute discounting和Kneser-Ney 概率forunigram,则有:

以上是Kneser-Ney Smoothing对于bigram的计算方式,以下则是对通用N-gram的计算方法:

【NLP_Stanford课堂】语言模型4的更多相关文章

  1. 【NLP_Stanford课堂】语言模型3

    一.产生句子 方法:Shannon Visualization Method 过程:根据概率,每次随机选择一个bigram,从而来产生一个句子 比如: 从句子开始标志的bigram开始,我们先有一个( ...

  2. 【NLP_Stanford课堂】语言模型2

    一.如何评价语言模型的好坏 标准:比起语法不通的.不太可能出现的句子,是否为“真实”或"比较可能出现的”句子分配更高的概率 过程:先在训练数据集上训练模型的参数,然后在测试数据集上测试模型的 ...

  3. 【NLP_Stanford课堂】语言模型1

    一.语言模型 旨在:给一个句子或一组词计算一个联合概率 作用: 机器翻译:用以区分翻译结果的好坏 拼写校正:某一个拼错的单词是这个单词的概率更大,所以校正 语音识别:语音识别出来是这个句子的概率更大 ...

  4. 【NLP_Stanford课堂】文本分类1

    文本分类实例:分辨垃圾邮件.文章作者识别.作者性别识别.电影评论情感识别(积极或消极).文章主题识别及任何可分类的任务. 一.文本分类问题定义: 输入: 一个文本d 一个固定的类别集合C={c1,c2 ...

  5. 【NLP_Stanford课堂】拼写校正

    在多种应用比如word中都有拼写检查和校正功能,具体步骤分为: 拼写错误检测 拼写错误校正: 自动校正:hte -> the 建议一个校正 建议多个校正 拼写错误类型: Non-word Err ...

  6. 【NLP_Stanford课堂】情感分析

    一.简介 实例: 电影评论.产品评论是positive还是negative 公众.消费者的信心是否在增加 公众对于候选人.社会事件等的倾向 预测股票市场的涨跌 Affective States又分为: ...

  7. 【NLP_Stanford课堂】文本分类2

    一.实验评估参数 实验数据本身可以分为是否属于某一个类(即correct和not correct),表示本身是否属于某一类别上,这是客观事实:又可以按照我们系统的输出是否属于某一个类(即selecte ...

  8. 【NLP_Stanford课堂】最小编辑距离

    一.什么是最小编辑距离 最小编辑距离:是用以衡量两个字符串之间的相似度,是两个字符串之间的最小操作数,即从一个字符转换成另一个字符所需要的操作数,包括插入.删除和置换. 每个操作数的cost: 每个操 ...

  9. 【NLP_Stanford课堂】句子切分

    依照什么切分句子——标点符号 无歧义的:!?等 存在歧义的:. 英文中的.不止表示句号,也可能出现在句子中间,比如缩写Dr. 或者数字里的小数点4.3 解决方法:建立一个二元分类器: 检查“.” 判断 ...

随机推荐

  1. 修改linux系统用户、PostgreSQL用户的密码

    1. 修改linux系统postgres用户的密码 PostgreSQL会创建一个默认的linux用户postgres,修改该用户密码的方法如下: 步骤一:删除用户postgres的密码 sudo   ...

  2. ios 得到每周的星期一开始和星期天结束的日期

    得到每周 星期一零点(即本周的开始) 和星期天 24 点(即本周的结束和下一周的开始)的时间 NSDate *now = [NSDate date]; NSCalendar *calendar = [ ...

  3. ASP.NET Core中使用默认MVC路由

    ASP.NET Core里Route这块的改动不大,只是一些用法上有了调整,提供了一些更加简洁的语法. 而对于自定义路由的支持当然也是没有问题的,这个功能应该是从MVC1.0版本就已经有这个功能. 先 ...

  4. ASP.NET Core项目中新增和删除的内容

    最新一版的.NET几经改名,最终得到了.NET Core这个高大上的名称,相应的ASP.NET MVC也跟着提供了ASP.NET Core MVC版本. 在.NET Core没有稳定名称时,叫做MVC ...

  5. Nginx配置整理

    不论是本地开发,还是远程到 Server 开发,还是给提供 demo 给人看效果,我们时常需要对 Nginx 做配置,Nginx 的配置项相当多,如果考虑性能配置起来会比较麻烦.不过,我们往往只是需要 ...

  6. 一:SpringDataJPA

    一:spring data jpa介绍 spring data:其实spring data就是spring提供了一个操作数据的框架.而spirng data jpa只是spring data框架下的一 ...

  7. Error:All flavors must now belong to a named flavor dimension.

    环境 android studio 3.0 错误 Error:All flavors must now belong to a named flavor dimension. 解决 在build.gr ...

  8. swoole安装

    转自:http://blog.csdn.net/u014207604/article/details/49926207 Windows 下安装 swoole 具体步骤: Swoole,原本不支持在Wi ...

  9. ugui之圆角矩形头像实现

    这个是参考大神的修改了一下渲染方式实现的,可以去查看原帖的,原贴是圆形头像,原理讲的非常详细 点击这里 我写的这个只支持正方形图片,效果是酱紫的~ 一共三个代码,还需要两个代码,原帖里都有的,我只是修 ...

  10. unity3d之技能栏冷却

    绑定在按钮上的脚本 using UnityEngine; using System.Collections; using UnityEngine.UI; public class CdCover : ...