N-gram模型

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

 

 N-Gram是大词汇连续语音识别中常用的一种语言模型,对中文而言,我们称之为汉语语言模型(CLM, Chinese Language Model)。汉语语言模型利用上下文中相邻词间的搭配信息,在需要把连续无空格的拼音、笔划,或代表字母或笔划的数字,转换成汉字串(即句子)时,可以计算出具有最大概率的句子,从而实现到汉字的自动转换,无需用户手动选择,避开了许多汉字对应一个相同的拼音(或笔划串,或数字串)的重码问题。

 

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

 

 

 

补充知识:

 

 

 

 

 

 

 

 

   但是这种方法存在两个致命的缺陷:一个缺陷是参数空间过大,不可能实用化;另外一个缺陷是数据稀疏严重。

 

   为了解决这个问题,我们引入了马尔科夫假设:一个词的出现仅仅依赖于它前面出现的有限的一个或者几个词。

 

   如果一个词的出现仅依赖于它前面出现的一个词,那么我们就称之为bigram。即

   P(T) = P(W1W2W3…Wn)=P(W1)P(W2|W1)P(W3|W1W2)…P(Wn|W1W2…Wn-1)

          ≈P(W1)P(W2|W1)P(W3|W2)…P(Wn|Wn-1)

 

   如果一个词的出现仅依赖于它前面出现的两个词,那么我们就称之为trigram。

 

   在实践中用的最多的就是bigram和trigram了,而且效果很不错。高于四元的用的很少,因为训练它需要更庞大的语料,而且数据稀疏严重,时间复杂度高,精度却提高的不多。

 

   那么我们怎么得到P(Wn|W1W2…Wn-1)呢?一种简单的估计方法就是最大似然估计(Maximum Likelihood Estimate)了。即P(Wn|W1W2…Wn-1) = (C(W1 W2…Wn))/(C(W1 W2…Wn-1))

 

剩下的工作就是在训练语料库中数数儿了,即统计序列C(W1 W2…Wn) 出现的次数和C(W1 W2…Wn-1)出现的次数。

 

               下面我们用bigram举个例子。假设语料库总词数为13,748

 

 

   

 

   P(I want to eat Chinese food)

=P(I)*P(want|I)*P(to|want)*P(eat|to)*P(Chinese|eat)*P(food|Chinese)

=0.25*1087/3437*786/1215*860/3256*19/938*120/213

=0.000154171                                                                                                                                                                                               

 

 

 

    ps:网上很多资料中,表1,词与词频的张表是没有的,所以造成文章表意不清。

 

     这里还有一个问题要说,那就是数据稀疏问题了,假设词表中有20000个词,如果是bigram那么可能的N-gram就有400000000个,如果是trigram,那么可能的N-gram就有8000000000000个!那么对于其中的很多词对的组合,在语料库中都没有出现,根据最大似然估计得到的概率将会是0,这会造成很大的麻烦,在算句子的概率时一旦其中的某项为0,那么整个句子的概率就会为0,最后的结果是,我们的模型只能算可怜兮兮的几个句子,而大部分的句子算得的概率是0. 因此,我们要进行数据平滑(data Smoothing),数据平滑的目的有两个:一个是使所有的N-gram概率之和为1,使所有的N-gram概率都不为0.有关数据平滑的详细内容后面会再讲到,这里不再赘述。

 

 

 

   了解了噪声信道模型和N-gram模型的思想之后,其实我们自己就能实现一个音词转换系统了,它是整句智能输入法的核心,其实我们不难猜到,搜狗拼音和微软拼音的主要思想就是N-gram模型的,不过在里面多加入了一些语言学规则而已。

 

 

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

相关推荐

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

N-gram模型以及Go应用

我一点也不皮的博客 5005

统计分词/无字典分词学习(2):n-gram词频统计

我们现在面对的是“wheninthecourseofhumaneventsitbecomesnecessary”这样一堆语料,要获取词典,怎么办? 第一步肯定是找到所有可能是词的片段了,常用的方法就是n-gram切分了,如假设词的最大长度是3,则句子“abcd”的n-gram切分就是: 1-gram切分:a b c d 2-gram切分:ab bc cd 3-gram切分:abc bcd

wangliang_f的专栏 8127

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

跨语种预训练语言模型

预训练语言模型

qq_41196438的博客 866

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

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

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

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

ahmanz的博客 4万+

Zabbix在Ubuntu 22.04上的性能优化与监控实战:从基础安装到高级配置

本文详细介绍了在Ubuntu 22.04系统上部署和优化Zabbix监控系统的完整流程,从基础安装到高级配置。内容包括MySQL数据库设置、Zabbix服务器与Web前端优化、性能调优策略以及实战监控场景应用,帮助用户构建高效的企业级监控解决方案。

sss66的博客 894

斯坦福大学-自然语言处理入门 笔记 第四课 语言模型

一、介绍N-grams 1、概率语言模型 对每个句子给出一个概率,用以判断机器翻译中哪个句子是最佳的选择,拼写校准中哪个句子可能出现错误。 目标:计算句子或者是一系列单词的概率 P(W)=P(W1,W2,W3,W4,W5...Wn)P\left ( W \right )=P(W_{1},W_{2},W_{3},W_{4},W_{5}...W_{n})P(W)=P(W1​,W2​,W3​,W4​,...

苏三慎的博客 5112

ESP32S3学习——i2c,点亮0.96寸oled

ESP32S3学习——i2c,点亮0.96寸oled

HandBAI的博客 1万+

手把手教你搭建硬件在回路(HIL)仿真系统:从Simulink建模到实时测试

本文详细介绍了如何从零开始搭建硬件在回路(HIL)仿真系统,涵盖Simulink建模、实时仿真、代码生成及调试等关键步骤。通过具体配置示例和优化技巧,帮助开发者解决复杂控制系统验证中的技术难题,提升半实物仿真的效率和可靠性。

weixin_30952535的博客 445

关于N-Gram模型

我把N-Gram关键的几句话贴出来(对别人帖子的一些修改):     该模型基于这样一种假设,第n个词的出现只与前面N-1个词相关,而与其它任何词都不相关,整句的概率就是各个词出现概率的乘积。这些概率可以通过直接从语料中统计N个词同时出现的次数得到。常用的是二元的Bi-Gram和三元的Tri-Gram。     在介绍N-gram模型之前,让我们先来做个香农游戏(Shannon Gam

pandav5的专栏 717

数据去重复_京东商品评论情感分析|文本数据预处理

本文爬取了十款热销手机的文本评论数据后,首先对文本评论数据做文本预处理,文本评论数据中存在大量的无价值信息,引入无用的文本数据,对其作情感分析,显然没有价值,得出的文本挖掘结果也不尽人意。所以对于文本评论数据先进行文本预处理是必不可少的一步,把大量的、冗余的、无价值的信息去除,可以极大提高文本数据的质量,精确文本分析结果。1 文本去重1.1文本去重的原因文本数据预处理时,首先应去除文本评论数据中反...

weixin_34556808的博客 2073

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万+

从T型结到Wilkinson:5分钟搞懂功分器选型指南(附最新射频测试数据对比)

本文通过对比T型结、电阻型和Wilkinson三种功分器的核心原理与实测数据,提供了清晰的射频功分器选型指南。文章结合最新的2.4GHz ISM频段测试数据,分析了插入损耗、回波损耗和端口隔离度等关键指标,并针对窄带物联网、射频测试及合成系统等不同应用场景,给出了具体的选型建议和实战提醒,帮助工程师根据系统需求做出最优决策。

bush的博客 305

逆向解析M团外卖mtgsig与waimai_sign加密参数实战指南⊙ω⊙

本文详细解析了M团外卖App中mtgsig与waimai_sign两个核心加密参数的逆向分析与生成方法。通过抓包定位、静态逆向与Frida动态调试,拆解了waimai_sign的RSA签名逻辑与mtgsig的复杂参数组装加密流程,并提供了Python模拟实现的框架与调试心得,为安全研究及合规数据分析提供实战指南。

weixin_29327525的博客 1280

N-Gram模型入门

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

SCUT_Sam 4094

不止于ACC:用CarSim的‘Multiple Objects’和路径跟踪器玩转复杂交通流场景

本文深入探讨了如何利用CarSim的'Multiple Objects'模块和路径跟踪器模拟复杂交通流场景,超越传统ACC测试的局限。通过批量控制、动态交互和参数化设计,实现多车智能响应和复杂轨迹模拟,适用于连续变道、拥堵博弈、匝道汇流等真实交通场景。

weixin_30954265的博客 497

N-gram 语言模型

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

步入人工智能 6446

详解大端模式和小端模式

详解大端模式和小端模式 一、大端模式和小端模式的起源         关于大端小端名词的由来,有一个有趣的故事,来自于Jonathan Swift的《格利佛游记》:Lilliput和Blefuscu这两个强国在过去的36个月中一直在苦战。战争的原因:大家都知道,吃鸡蛋的时候,原始的方法是打破鸡蛋较大的一端,可以那时的皇帝的祖父由于小时侯吃鸡蛋,按这种方法把手指弄破了,因此他的父亲,就下令,命令

ce123的技术博客 19万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

n-gram模型

NLP之n-gram模型一、什么是n-gram模型二、n-gram模型用于评估语句是否合理三、二元语言模型判断句子是否合理四、N-gram模型的一个常见应用五、n-gram的n大小对性能的影响 一、什么是n-gram模型 N-Gram是一种基于统计语言模型的算法。它的基本思想是将文本里面的内容按照字节进行大小为N的滑动窗口操作,形成了长度是N的字节片段序列。 每一个字节片段称为gram,对所有gr...

ithinking110的博客 1338

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

N-Gram 模型

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

qq_42370809的博客 1330

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

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

NLP_语言模型的雏形N-Gram

weixin_42504788的博客 1996

九、N-gram语言模型

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

GUANGZHAN的专栏 5402
上一篇: ME, HMM, MEMM, CRF
下一篇: Mongodb源码分析--插入记录及索引B树构建
jackfirst86
博客等级 码龄18年 28粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值