通俗理解n-gram语言模型

作者&投稿:权君 (若有异议请与网页底部的电邮联系)
~

假设现在语料库的词汇量为 ,对于长度为 的句子来说:

通过上面的表格可以看出,增加条件概率中的条件相对应的参数数量会呈现指数的增长。参数的数量越多表示模型相对越复杂。如果我们想要减少参数,最简单的方法就是简化模型,考虑极端情况下只保留 ,此时计算句子的概率公式为:

依然使用上面我们自己构建的小型语料库:

如果想要计算p(BOS 商品 和 服务 EOS)的概率,只需要计算出p(BOS)、p(商品)、p(和)、p(服务)以及p(EOS)的五个概率值(依然使用最大似然估计来计算这些概率值):

因此p(商品 和 服务) = p(BOS) p(商品) p(和) p(服务) p(EOS) = = 。

不使用条件概率使用 认为当前单词出现的概率仅仅本身相关, 我们称之为unigram,即一元语言模型。从 个参数缩减到了拥有 个参数的一元语言模型,显然模型太简单了。比如对于下面两个句子:

如果使用一元语言模型来这两个句子的概率值。

通过一元语言模型计算两个句子主要区别就在于p(篮球)和p(游泳)的概率值,其余概率值都是相同的,但是就两句话而言,"我 打 篮球"这句话要比"我 打 游泳"这句话的概率值要高很多。由于简化了模型,仅仅考虑当前单词的出现概率与本身有关,单词与单词之间是相互独立的。不过就上面两个句子而言,p(篮球 | 打) 要比p(游泳 | 打)的概率值要高,此时仅仅考虑当前单词自身的一元语言模型太简单了。

假设当前单词的出现概率仅仅与前面的1个单词相关, 我们称之为bigram,即二元语言模型。二元语言模型的计算公式:

假设当前单词的出现概率仅仅与前面的2个单词相关, 我们称之为trigram,即三元语言模型。三元语言模型的计算公式:

以此类推,假设当前单词的出现概率仅仅与前面的 个单词相关,我们称之为n-gram语言模型。这种减少参数简化模型的假设方法就是马尔科夫假设。

随着 的取值越大,n-gram模型在理论上越精确,但是也越复杂,需要的计算量和训练语料数据量也就越大,并且精度提升的不够明显,所以在实际的任务中很少使用 的语言模型。

无论是原始的语言模型还是n-gram语言模型,都是使用极大似然估计法来估计概率值,通过统计频次来近似概率值,统计频次极有可能统计不到较长句子的频次。

这被称为数据稀疏,对于n-gram语言模型来说,n越大,数据稀疏的问题越严重。即使是使用n相对比较小的二元语言模型,许多二元靠语料库也是统计不到的。比如对于下面这个小型的语料库:

"商品 货币"的频次就为0,当n-gram语言模型中的n越小,可统计的n元也就越丰富,一个很自然的解决方案就是利用低阶n元语法平滑到高阶n元语法。所谓的平滑就是字面上的意思:使n元语法频次的折线平滑为曲线。我们不希望二元语法"商品 货币"的频次突然跌倒0,因此使用一元语法"商品"和("或",不同的平滑方法可能需要不同的处理)"货币"的频次去平滑它。

平滑策略是语言模型的研究课题之一,人们提出了很多平滑技术,比如线性差值法(linear interpolation)、图灵平滑(Good-Turing)、加法平滑(Add-One Smoothing)等。

原文地址:
通俗理解n-gram语言模型




英语单词后缀,前缀有哪些
(2)构成动词的后缀常用的有-(e)n (多用于形容词之后),-fy (使……化),-ize (使……成为)。...28.-gram构成“画、图、字”等含义 diagram(图表,图解),program(计划),telegram(电 文,电报) 29....understandable(可理解的),readable(可读的), countable(可数的),possible(可能的) 2.-al加在地名上...

QA问句解析的七种方法及优化思路
其中,N 代表文档总数,n 代表出现对应单词的文档个数,f 指文档中出现对应单词的词频,qf 是查询语句中...神经概率语言模型、CBOW 以及 Skip-gram 的介绍在 《浅谈智能搜索和对话式OS》 均有提及。 借助百度...答案形式的多样性非常容易理解,比如小蚂答就支持包括文本、链接、图片、视频在内的多种答案形式。 个性化...

大家推荐一点好听的有感觉的英文歌~ 有要求的哦~
59. civil war--guns n' roses在美国这样一个国度,一支摇滚乐队创作出这样一首忧国忧民(当然也可以理解成激愤)的歌曲,这不是对摇滚乐的反判,恰恰是对摇滚更好的诠释。我想,摇滚乐在国外之所以有那么高的地位正是由于国外的很多摇滚乐队有着对社会、对国家的主人精神以及对音乐的深入理解和精彩绝伦的演绎。国内...

怎样学好英语
听见听懂老师传授的每一个知识点,在头脑里形成反馈以帮助记忆;理解领会老师提出的问题,以便迅速作答,对比同学对问题的回答,以加深对问题的理解而取别人之长补自己之短。 四、“眼到”。在认真听讲的同时,还要双眼紧随老师观察老师的动作、口形、表情、板书、绘图、教具展示等。大脑里形成的视觉信息和听觉信息相结合...

学习电脑的最基本知识
基本知识:操作系统,熟悉键盘。1、学习操作系统:通过学习操作系统体系结构、操作指令、任务调度、并发管理、资源管理、权限管理、安全管理等内容,能够对计算机形成一个较为系统的理解,为后续的学习打下一个扎实的基础。2、打游戏熟悉键盘:很多人最早都是通过打游戏来学习电脑知识的,游戏里的快捷键操作...

从饮食方面可以减肥吗?
其中包括我非常喜爱的麦饼和脱脂米花等,在加拿大这边,甚至可以找到零脂肪雪糕(zero gram fat ice cream...http:\/\/women.sohu.com\/20050701\/n226159912.shtml减肥:魔鬼宝典 体验10大瘦身餐-搜狐女人 夏季瘦身餐...不吃早餐的青少年长得壮实,抗病能力强,在学校课堂上表现得更加突出,听课时精力集中,理解能力强,学习...

LOGO是什么意思?不懂!请指教下!
ico、阿尔法·罗米欧、常见流氓免疫V1.0、松拓、西摩尔·派普特 “logo”在英汉词典中的解释(来源:百度词典):LOGO KK: []DJ: []n.1. LOGO教学语言(一种简单易学的电脑语言)Logo KK: []DJ: []n.1. 【电脑】Logo教学用语(一种简单易学的电脑辅助教学用语)logo KK: []DJ: []=logotype ...

2019年雅思考试听说读写注意事项
4. 不存在等关键词出现前的放松时间,因为雅思重点在于考同义替换和逐句理解。每个词都要用心听。 5. 根据听音和常识来确定单词的单复数。 6. 特别记清单词有无连字符,如:note-taking(n) 7. 只要听清楚了,在最后半分钟选择也没问题,不要慌,但这是下策。 做题 1. 顺序(听到的几个选项中最后一个是正确...

请问2023年雅思考试听说读写注意事项
4. 不存在等关键词出现前的放松时间,因为雅思重点在于考同义替换和逐句理解。每个词都要用心听。 5. 根据听音和常识来确定单词的单复数。 6. 特别记清单词有无连字符,如:note-taking(n) 7. 只要听清楚了,在最后半分钟选择也没问题,不要慌,但这是下策。 做题 1. 顺序(听到的几个选项中最后一个是正确答...

求好听的英文歌
59. civil war--guns n' roses在美国这样一个国度,一支摇滚乐队创作出这样一首忧国忧民(当然也可以理解成激愤)的歌曲,这不是对摇滚乐的反判,恰恰是对摇滚更好的诠释。我想,摇滚乐在国外之所以有那么高的地位正是由于国外的很多摇滚乐队有着对社会、对国家的主人精神以及对音乐的深入理解和精彩绝伦的演绎。国内...

梅州市18071474265: 语音识别的语言模型 -
章仇仲维: 语言模型主要分为规则模型和统计模型两种.统计语言模型是用概率统计的方法来揭示语言单位内在的统计规律,其中N-Gram简单有效,被广泛使用.N-Gram:该模型基于这样一种假设,第n个词的出现只与前面N-1个词相关,而与其它任何词...

梅州市18071474265: 数据挖掘中N一Grma指的是什么 -
章仇仲维: 是n-gram吧 一种自然语言处理的方法 计算一组词语出现的频率 有unigram bigram trigram等等 第一个是单个的词 第二个是两个词一同出现 第三个是三个次一同出现 这里没有语法要求 如果是要提取语法的话建议用part-of-speech算法

梅州市18071474265: 如何使用RNN等分析自然语言语法结构 -
章仇仲维: dnn做parsing有两个主要流派,一个是Socher的recursive流,另一个就是rnn流了.不过我个人觉得都不太靠谱,有点强行dnn的意思.rnn流的代表作品:Transition-Based Dependency Parsing with Stack Long Short-Term Memory

梅州市18071474265: 统计语言模型应用率怎么样呢?
章仇仲维: 统计语言模型是用概率统计的方法来揭示语言单位内在的统计规律,其中N-Gram简单有效,被广泛使用

梅州市18071474265: c语言 n - gram串频统计 -
章仇仲维: #include#include int main() { char input[501]={0}; int n,c,b,i,j,k; int count[501]={0}; scanf("%d",&n); scanf("%s",&input); c=strlen(input); for(i=0;i { for(j=i;j { for(k=0;k { if(input[i+k]!=input[j+k]) { break; } } if(k==n) { count[i]=count[i]+1; } } } int max=0; ...

梅州市18071474265: lstm做自然语言 处理需要提取特征吗 -
章仇仲维: 秦时明月汉时关,万里长征人未还.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网