n-gram模型

【n-gram算法】一篇文章讲透~ n-gram算法作为一种基于统计的NLP算法,在文本分析和处理中发挥着重要作用。通过统计文本中连续n个词的序列的频率信息,n-gram为文本生成、语言模型构建、文本分类等任务提供了有力的支持。然而,n-gram算法也存在一些局限性,如数据稀疏性、上下文信息有限以及计算复杂度高等问题。因此,在实际应用中,我们需要根据具体任务和数据特点选择合适的n值和算法参数,以充分发挥n-gram算法的优势并克服其局限性。 阅读详情

一、什么是n-gram模型

N-Gram是一种基于统计语言模型的算法。它的基本思想是将文本里面的内容按照字节进行大小为N的滑动窗口操作,形成了长度是N的字节片段序列。

每一个字节片段称为gram,对所有gram的出现频度进行统计,并且按照事先设定好的阈值进行过滤,形成关键gram列表,也就是这个文本的向量特征空间,列表中的每一种gram就是一个特征向量维度。

该模型基于这样一种假设,第N个词的出现只与前面N-1个词相关,而与其它任何词都不相关,整句的概率就是各个词出现概率的乘积。这些概率可以通过直接从语料中统计N个词同时出现的次数得到。常用的是二元的Bi-Gram和三元的Tri-Gram。

说完了n-gram模型的概念之后,下面讲解n-gram的一般应用。

二、n-gram模型用于评估语句是否合理

如果我们有一个由 m 个词组成的序列(或者说一个句子),我们希望算得概率 [公式] ,根据链式规则,可得

[公式]
在这里插入图片描述
这个概率显然并不好算,不妨利用马尔科夫链的假设,即当前这个词仅仅跟前面几个有限的词相关,因此也就不必追溯到最开始的那个词,这样便可以大幅缩减上述算式的长度。即

在这里插入图片描述
这个马尔科夫链的假设为什么好用?我想可能是在现实情况中,大家通过真实情况将n=1,2,3,…这些值都试过之后,得到的真实的效果和时间空间的开销权衡之后,发现能够使用。

下面给出一元模型,二元模型,三元模型的定义:

当 n=1, 一个一元模型(unigram model)即为 :

在这里插入图片描述
当 n=2, 一个二元模型(bigram model)即为 :

在这里插入图片描述
当 n=3, 一个三元模型(trigram model)即为

在这里插入图片描述

然后下面的思路就很简单了,在给定的训练语料中,利用贝叶斯定理,将上述的条件概率值(因为一个句子出现的概率都转变为右边条件概率值相乘了)都统计计算出来即可。下面会给出具体例子讲解。这里先给出公式:
在这里插入图片描述

对第一个进行解释,后面同理,如下:
在这里插入图片描述

下面给出具体的例子。

三、二元语言模型判断句子是否合理

下面例子来自于:自然语言处理中的N-Gram模型详解 - 白马负金羁 - 优快云博客和《北京大学 常宝宝 以及 The University of Melbourne “Web Search and Text Analysis” 课程的幻灯片素材》

假设现在有一个语料库,我们统计了下面的一些词出现的数量
在这里插入图片描述

下面的这些概率值作为已知条件:

在这里插入图片描述
p(want|< s >) = 0.25

下面这个表给出的是基于Bigram模型进行计数之结果

在这里插入图片描述

例如,其中第一行,第二列 表示给定前一个词是 “i” 时,当前词为“want”的情况一共出现了827次。据此,我们便可以算得相应的频率分布表如下。
在这里插入图片描述

比如说,我们就以表中的p(eat|i)=0.0036这个概率值讲解,从表一得出“i”一共出现了2533次,而其后出现eat的次数一共有9次,p(eat|i)=p(eat,i)/p(i)=count(i,eat)/count(i)=9/2533 = 0.0036

下面我们通过基于这个语料库来判断s1=“ i want english food” 与s2 = " want i english food"哪个句子更合理:通过例子来讲解是最人性化的,我在网上找了这么久发现这个例子最好:

首先来判断p(s1)

P(s1)=P(i|< s>)P(want|i)P(english|want)P(food|english)P(|food)

=0.25×0.33×0.0011×0.5×0.68=0.000031

再来求p(s2)?

P(s2)=P(want|< s>)P(i|want)P(english|want)P(food|english)P(|food)

=0.250.00220.00110.50.68 = 0.00000002057

通过比较我们可以明显发现0.00000002057<0.000031,也就是说s1= "i want english food"更像人话。

再深层次的分析,我们可以看到这两个句子的概率的不同,主要是由于顺序i want还是want i的问题,根据我们的直觉和常用搭配语法,i want要比want i出现的几率要大很多。所以两者的差异,第一个概率大,第二个概率小,也就能说的通了。

下面再给出生活中常用的一个应用。

四、N-gram模型的一个常见应用

搜索引擎(Google或者Baidu)、或者输入法的猜想或者提示。你在用谷歌时,输入一个或几个词,搜索框通常会以下拉菜单的形式给出几个像下图一样的备选,这些备选其实是在猜想你想要搜索的那个词串。

再者,当你用输入法输入一个汉字的时候,输入法通常可以联系出一个完整的词,例如我输入一个“刘”字,通常输入法会提示我是否要输入的是“刘备”。通过上面的介绍,你应该能够很敏锐的发觉,这其实是以N-Gram模型为基础来实现的。比如下图:
在这里插入图片描述

那么原理是什么呢?也就是我打入“我们”的时候,后面的“不一样”,”的爱“这些是怎么出来的,怎么排序的?

实际上是根据语言模型得出。假如使用的是二元语言模型预测下一个单词:

排序的过程就是:

p(”不一样“|“我们”)>p(”的爱“|“我们”)>p(”相爱吧“|“我们”)>…>p(“这一家”|”我们“),这些概率值的求法和上面提到的完全一样,数据的来源可以是用户搜索的log。

拼写纠错 也是同样的道理。

五、n-gram的n大小对性能的影响

n更大的时候
n: 对下一个词出现的约束性信息更多,更大的辨别力,但是更稀疏,并且n-gram的总数也更多,为 [公式] 个(V为词汇表的大小)
n更小的时候
在训练语料库中出现的次数更多,更可靠的统计结果,更高的可靠性 ,但是约束信息更少
其中当N为特定值的时候,我们来看一下n-gram可能的总数,如下表:

在这里插入图片描述

对于上图,我用一个例子来进行解释,加入目前词汇表中就只有三个单词,”我爱你“,那么bigram的总数是32=9个,有”我我“,我爱,我你,爱爱,爱你,爱我,你你,你我,你爱这9个,所以对应上面的表示是bigrams是200002=400000000,trigrams=20000^3 = 8*10e12

语言模型的基础知识:从Ngram到Transformer 语言模型(Language Model,简称LM)是自然语言处理(NLP)领域的核心技术之一,它的主要任务是对自然语言序列进行概率建模。简单来说,语言模型就是用来计算一个句子或者一个词序列出现概率的模型。这个概率可以帮助我们评估一个句子是否合理,或者在生成任务中,如机器翻译、文本摘要等,为我们提供生成的候选句子。语言模型作为自然语言处理领域的核心技术之一,其发展一直备受关注。从N-gram模型到神经网络语言模型,再到Transformer模型,语言模型的性能不断提升。 阅读详情

相关推荐

基于n-gram模型的中文分词

一、前言   n-gram模型,称为N元模型,可用于定义字符串中的距离,也可用于中文的分词;该模型假设第n个词的出现只与前面n-1个词相关,与其他词都不相关,整个语句的概率就是各个词出现概率的乘积;而这些概率,利用语料,统计同时出现相关词的概率次数计算得到;常用的模型是Bi-gram和Tri-gram模型。   n-gram的应用:模糊匹配 二、算法推论   假设一个字符串s由m个词组成,...

zhongfu的博客 1万+

NLP:n-gram模型

N-Gram N-Gram(有时也称为N元模型)是自然语言处理中一个非常重要的概念。主要有两个重要应用场景: (1)人们基于一定的语料库,可以利用N-Gram来预计或者评估一个句子是否合理。 (2)用来评估两个字符串之间的差异程度。这是模糊匹配中常用的一种手段。 习惯上,1-gram叫unigram,2-gram称为bigram,3-gram是trigram。还有four-gram、five-gram等,不过大于n>5的应用很少见。常用的是Bi-gram (N...

Puzzle的博客 2万+

N-gram模型详解

语言模型(Language Model) 基本概念 什么是语言模型?简言之,语言模型可以理解为是一种用于判度一个句子是否通顺的模型。举例来说,假设我们有一个训练好的语言模型modelmodelmodel,给定两个句子:我喜欢AI、喜欢我AI。显然第一个句子更通顺,或者说出现的可能性更大,所以modelmodelmodel,给出的结果就是P(我喜欢AI)>P(喜欢我AI)P(我喜欢AI)>P(喜欢我AI)P(我喜欢AI)>P(喜欢我AI)。 于是,我们得到了语言模型的目标:计算一个句子或者一

qq_42791848的博客 5789

N-Gram语言模型

一、n-gram是什么wikipedia上有关n-gram的定义: n-gram是一种统计语言模型,用来根据前(n-1)个item来预测第n个item。在应用层面,这些item可以是音素(语音识别应用)、字符(输入法应用)、词(分词应用)或碱基对(基因信息)。一般来讲,可以从大规模文本或音频语料库生成n-gram模型。 习惯上,1-gram叫unigram,2-gram称为bigram,3-gr

ahmanz的博客 4万+

N-gram模型的训练以及应用

N-gram模型以及Go应用

我一点也不皮的博客 5005

PyTorch搭建N-gram模型实现单词预测

N-gram模型就是假设预测这个单词只与前面的N-1个单词有关,并不是和前面所有的词都有关系。 所以,对于1-gram(每个词都是独立分布的): P(w1, w2, w3, … , wn) = P(w1)P(w2|w1)P(w3|w1w2)P(w4|w1w2w3)…P(wn|w1w2…wn-1) ≈ P(w1)P(w2...

Answer3664的博客 3299

N-Gram模型入门

摘要: 本文主要是简单讲解一下语言模型N-Gram。网上已经有许多关于N-Gram模型讲解了,下面几个链接是我在阅读过程中认为比较好的文章。和大家分享一下。 N-Gram文章-1 N-Gram文章-2 1.N-Gram模型

SCUT_Sam 4094

使用n-gram语言模型进行语法纠正

测试文本是一个包含若干行“的”、“地”、“得”句子的文本文件。程序根据字典计算得到三个字中的一个。可以应用于三个字的语法检测。由结果可见,有一些预测是错误的。因此,光依靠n-gram预测的精度并不太高,除非加上词性维度或窗口内其它的词,但这已经超出了n-gram模型的能力。

需要远程指导仿真实验、代码有问题的,请后台私信或者关注公众号 1285

N-gram模型

     在介绍N-gram模型之前,让我们先来做个香农游戏(Shannon Game)。我们给定一个词,然后猜测下一个词是什么。当我说“艳照门”这个词时,你想到下一个词是什么呢?我想大家很有可能会想到“陈冠希”,基本上不会有人会想到“陈志杰”吧。N-gram模型的主要思想就是这样的。   对于一个句子T,我们怎么算它出现的概率呢?假设T是由词序列W1,W2,W3,…Wn组成的,那么P(T)=P(W1W2W3Wn)=P(W1)P(W2|W1)P(W3|W1W2)…P(Wn|W1W2…Wn-1)   但是这种

lengyuhong的专栏 4万+

语言模型--n-gram解读

n元语法是一个非常经典的语言模型。 一、N-Gram的原理 N-Gram是基于一个假设:第n个词出现与前n-1个词相关,而与其他任何词不相关。(这也是隐马尔可夫当中的假设。)整个句子出现的概率就等于各个词出现的概率乘积。各个词的概率可以通过语料中统计计算得到。假设句子T是有词序列w1,w2,w3…wn组成,用公式表示N-Gram语言模型如下: P(T)=P(w1)*p(w2)*p(w3)***p(...

qq_33472146的博客 2390

n-gram语言模型及平滑算法

一、n-gram模型概念 n-gram模型也称为n-1阶马尔科夫模型,它有一个有限历史假设:当前词的出现概率仅仅与前面n-1个词相关,可以表示为:                             当n取1、2、3时,n-gram模型分别称为unigram、bigram和trigram语言模型。n-gram模型的参数就是条件概率P(Wi|Wi-n+1,...,Wi-1)。假设词表的大小...

LZH_12345的博客 6185

N-gram 语言模型

本内容主要介绍统计语言模型——N-gram(n 元)模型。

步入人工智能 6446

语言模型(一)—— 统计语言模型n-gram语言模型

从传统的语言模型到统计语言模型,深入了解n-gram语言模型的原理、计算方法、优缺点等。

竹杖芒鞋轻胜马 7447

N-Gram 模型

震惊!N-Gram竟然这么N-Gram?99%的人都不知道的N-Gram秘密大公开!

qq_42370809的博客 1331

NGram模型与词向量介绍

作者:禅与计算机程序设计艺术 1.简介 概述 N-Gram(n元语法、n-gram)模型是自然语言处理(NLP)中非常重要的一个概念。它描述了一种统计方法,通过观察一个词或符号序列在文本中的连续出现,可以得出其概率分布。 在实际应用过程中,

AI天才研究院 2369

2025最新正版Autodesk 3ds Max 2022安装教程:从下载到中文环境配置全流程解析

Autodesk 3ds Max 2022是一款专业的三维建模、动画和渲染软件,广泛应用于影视制作、游戏开发、建筑可视化等领域。

waicsdn_haha的博客 1万+

NLP_语言模型的雏形 N-Gram 模型

NLP_语言模型的雏形N-Gram

weixin_42504788的博客 1996

Android架构中UseCase的设计原则与实战解析

本文深入解析Android架构中UseCase的设计原则与实战应用,探讨其在Domain Layer中的核心作用。通过对比ViewModel的臃肿问题,详细阐述UseCase的无状态原则、单一职责边界等设计铁律,并提供多种实现方式的代码示例,帮助开发者构建更清晰、高效的Android应用架构。

weixin_28432777的博客 431

N-gram 模型

                                          N-gram 模型 语言模型: 定义了自然语言中标记序列的概率分布,通俗一点考虑就是说,一个句子是自然语句的概率。 举例说明: 假设用户说了这么一句话:“I have a gun”,因为发音的相似,该语音识别系统发现如下几句话都是可能的候选:1、I have a gun. 2、I have a gull. 3...

yu_tsl的博客 385

深入解析postcss-px-to-viewport-8-plugin:如何精准控制响应式转换范围

本文深入解析了postcss-px-to-viewport-8-plugin插件在响应式开发中的核心痛点——如何精准控制单位转换范围。针对插件默认全局转换的问题,文章提供了两种实战解决方案:通过编写巧妙的exclude正则表达式实现“曲线救国”,或直接修改插件源码补全include功能。同时,文章还分享了在Next.js、Vite等现代框架中的集成要点及常见问题排查方法,帮助开发者实现“外科手术式”的精准样式转换。

yoga7的博客 910

九、N-gram语言模型

1.语言模型 语言模型的作用是根据文本输入 ,计算文本内容是句子的概率。 2 N-gram模型介绍 2.1 语言模型概念 如果我们有一个由m 个词组成的序列(或者说一个句子),我们希望计算句子的概率。根据链式规则,可得 根据马尔可夫假设可得: 2.2 N-gram模型简介 N-gram模型是一种语言模型(Language Model,LM),语言模型是一个基于概率的判别模型,它的输入是一句话(单词的顺序序列),输出是这句话的概率,即这些单词的联合概率(joint probability)。

GUANGZHAN的专栏 5402

别再为模糊的3D重建头疼了!手把手教你用3DSlicer处理DICOM数据,搞定医学影像三维可视化

本文详细解析了医学影像三维重建中常见的模糊问题,并手把手教你使用3DSlicer处理DICOM数据,实现精准的三维可视化。从层厚设置到数据格式转换,再到重建算法选择和渲染参数微调,提供了一套完整的优化方案,特别适合临床医生和医学影像处理人员提升工作效率。

weixin_28693447的博客 248
上一篇: NLP之通过词频发现中文新词
下一篇: 深度学习之 神经网络算法原理
ithinking110
博客等级 码龄14年 54粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值