语言模型简介和Ngram模型(1)

news2025/2/24 8:14:22

语言模型介绍一

  • 语言模型
    • 语言模型概念
    • 语言模型应用-语音识别
      • 声纹特征提取
      • 语言模型挑选成句
    • 语言模型应用-手写识别
    • 语言模型应用-输入法
    • 语言模型分类
    • 语言模型评价指标-困惑度PPL
  • N-gram语言模型
    • 马尔科夫假设
    • 平滑问题
      • 平滑问题解决一
      • 平滑问题解决二
    • 插值优化
    • 语言模型应用-文本纠错
      • 实现方案

语言模型

语言模型概念

概念: 语言模型用于计算文本的成句概率。

示例: P(今天天气不错) > P(今错不天天气)。

释义: 语言模型评价一句话是否“合理”或“是人话”。

语言模型应用-语音识别

流程图:
在这里插入图片描述

声纹特征提取

流程:

1.声音本质是一种波,将波按时间段切分很多帧,如25ms一段
2.之后进行声学特征提取,将每一帧转化成一个向量
3.经过经过声学模型,预测得到音素,音素与拼音类似

在这里插入图片描述

语言模型挑选成句

音素序列对应多条文本序列,由语言模型挑选出成句概率最高的序列
为了提高效率,会使用beam search或维特比的方式解码
在这里插入图片描述

语言模型应用-手写识别

在这里插入图片描述

识别模型将图片中文字转化为候选汉字(一般分定位和识别两步),再有语言模型挑选出成句概率最高的序列

比如识别到:

浙 江
淅 冮 (gang)

明显浙江是我们常用的词,下面的词都不知道有没有这个组合,语言模型则会挑选出来

语言模型应用-输入法

释义: 输入即为拼音序列,每个拼音自然的有多个候选汉字,根据语言模型挑选高概率序列

难点: 输入法是一个细节繁多的任务,在语言模型这一基础算法上,需要考虑打字手误,常见误读,拼音缩略,中英混杂,输出符号,用户习惯等能力

语言模型分类

按照复杂程度和发展分类:
1.统计语言模型 (SLM) S = Statistics
ngram语言模型等

2.神经语言模型(NLM) N = Neural
rnn语言模型等

3.预训练语言模型(PLM) P = Pre-train
Bert、GPT等

4.大语言模型(LLM) L = Large
ChatGPT等

预测的方向来分类:
1.自回归(auto regressive)语言模型
在训练时由上文预测下文(或反过来)
单向模型,仅使用单侧序列信息
代表:N-gram,ELMO, GPT

2.自编码(auto encoding)语言模型
在训练时预测序列中任意位置的字符
双向模型,吸收上下文信息
代表:BERT

语言模型评价指标-困惑度PPL

计算方式1:
在这里插入图片描述

计算公式2:
在这里插入图片描述

释义: 根据上面两种计算公式推导可以知道,PPL与成句概率成反比。

我们怎么通过PPL判断模型好坏呢? 因为我们知道,这是个相对的值;即我们输入一些正常的句子成句概率高,PPL小,输入一些糟糕的句子,成局概率小,PPL大;我们就说能够区别真句子和假句子,这个模型可以。

局限性分析: 我们知道,按照上面的计算方式,PPL的评判是有很大的局限的;

1.好的句子成句概率高,并不能说明模型很好
2.糟糕的句子只有在具体的场景中去验证,因为如果只是随机拼接的糟糕句子,实际在场景中也基本不会出现,验证没有价值;只有具体场景的具体情况进行分析和验证才行。

N-gram语言模型

计算成句概率:

用S代表句子,w代表单个字或词
S = w1w2w3w4w5…wn
P(S) = P(w1,w2,w3,w4,w5…wn)
即:S的概率为,组成其所有的词按照顺序出现的概率;词W1~Wn按顺序出现的概率

公式: P(w1,w2,w3,…,wn) = P(w1)P(w2|w1)P(w3|w1,w2)…P(wn|w1,…,wn-1)
理解: 就是首先在一个大的语料中,统计出w1出现的概率;然后统计在w1出现的次数中,后面出现w2的概率.…一直往下,就可以得到整个句子各个字或者词出现的概率,相乘的到成句概率。

举例:
P(今天) = Count(今天) / Count_total 语料总词数

P(天气|今天) = Count(今天 天气) / Count(今天)

P(不错|今天 天气) = Count(今天 天气 不错) / Count(今天 天气)

P(今天天气不错) = P(今天) P(天气|今天) P(不错|今天 天气)

n-gram
如果是统计两个词的成句概率,就叫2-gram;三个词就叫3-gram

二元组:今天 天气 2 gram
三元组:今天 天气 不错 3 gram

马尔科夫假设

起因: 上面Ngram我们可以看出,如果是10多个词甚至几十个词;我们要计算的数据就太大了,因为词的组合在每个语言中都太多了。那么超出所有的句子,并且计算出每一个词的条件概率,比较困难,无法枚举。

所以提出了马尔科夫假设,是为了简化计算。

假设: 假设第n个词出现的概率,只和它前面的有限个词有关,那么公式就可以简化为:

P(wn|w1,…,wn-1) ≈ P(wn|wn-3,wn-2,wn-1)

举例:
P(今天天气不错) = P(今)*P(天|今) *P(天|今天) *P(气|天天) *P(不|天气) *P(错|气不)

缺陷:

1.影响第n个词的因素可能出现在前面很远的地方
2.影响第n个词的因素可能出现在其后面 (动作的目标,比如我 * 球 ==》打)
3.影响第n个词的因素可能并不在文中 (和地点有关)
但是基于马尔科夫假设下依然可以得到非常有效的模型

平滑问题

引子:
问题: 如何给出语料中没出现过的词概率?
举例: P(今天 天气 糟糕) = P(今天)*P(天气|今天) *P(糟糕|天气)

释义:
如果语料中没有出现过糟糕在天气后面出现的情况,那么这句话的概率就为0;语言模型的目的是计算成句的概率;两句话如果都出现语料中的结构,那概率都为零,没法比较;并且不论出现什么情况,我们都不希望一句话的成句概率为零;第一次出现也只能说明它的概率为零

上述就是我们说的语言模型中出现的平滑问题

1.理论上说,任意的词组合成的句子,概率都不应当为零
2.如何给没见过的词或ngram分配概率即为平滑问题
3.也称折扣问题(discounting)

平滑问题解决一

解决办法:1.回退(backoff)

当三元组a b c不存在时,退而寻找b c二元组的概率
P(c | a b) = P(c | b) * Bow(ab)
Bow(ab)称为二元组a b的回退概率;和ab同时出现概率有关,如果ab同时出现的概率高,则说明是固定词的情况越大,后面跟C的概率越小
回退概率有很多计算方式,甚至可以设定为常数
回退可以迭代进行,如序列 a b c d
1.P(d | a b c) = P(d | b c) * Bow(abc)
2.P(d | bc) = P(d | c) * Bow(bc)
3.P(d | c ) = P(d) * Bow©

上述还是有个问题,即最后回退到单个字出现的概率P(d);如果都没有怎么处理呢?

解决办法:2.1加1平滑
问题: 即P(word)不存在如何处理。

两种情况:这个字或者词在我们的语料里面没有;它属于生僻字,在字典上可以找到;或者这个字或者词就从来没有出现过、

那么对这个没有出现的词的概率,我们可以用下面公式表示:
在这里插入图片描述
释义:

1.V代表我们词表的大小;既然之前没有出现过这个词,那我们就假设本次出现了这一次。但是原来是没有的,我们就假设所有的词表次都出现了一次
2.所以分母需要加上词表大小V

解决办法:2.2平滑
在这里插入图片描述

释义: c代表统计语料中出现的次数即count,Wi-1,Wi是一个词;Wi-1是词中的一个字。比如我们和我。

平滑问题解决二

1.将低频词替换为< UNK >
2.预测中遇到的未见过的词,也用< UNK >代替
3.一语成谶 -> 一语成< UNK >
4.P( < UNK > |一 语 成)
这是一种nlp处理未登录词(OOV)的常见方法;< UNK >是ngram模型中的一种特殊字符;这样就可以避免概率为零的情况出现

插值优化

释义: 受到回退平滑的启发,在计算高阶ngram概率是同时考虑低阶的ngram概率值,以插值给出最终结果
公式如下:

在这里插入图片描述
在这里插入图片描述
结论:
实践证明,这种方式效果有提升
λ 可以在验证集上调参确定

语言模型应用-文本纠错

举例:

我今天去了天暗门看人民英雄记念碑
我今天去了天门看人民英雄念碑

错误可能是同音字或形近字等

实现方案

步骤

1.对每一个字建立一个混淆字集合
2.计算整句话成句概率
3.用混淆字集合中的词替代原句中的字,重新计算概率
4.选取得分最高的一个候选句子,如果这个句子比原句的得分增长超过一定的阈值
5.对下一个字重复步骤3-4,直到句子末尾

如下:
在这里插入图片描述

缺陷:

1.无法解决多字少字问题
2.阈值的设置非常难把握,如果设置过大,达不到纠错效果;如果设置过小,造成大量替换,有可能改变句子的原意
3.混淆字字表难以完备
4.语言模型的领域性会影响修改结果
5.连续的错字会大幅提升纠错难度
例如:今天上午要过来办事 -> 今天商务要过来办事

解决办法:

限定一个修改白名单,只判断特定的字词是否要修改
如限定只对所有发音为shang wu的片段,计算是否修改为“商务”,其余一概不做处理
对于深度学习模型而言,错别字是可以容忍的,所以纠错本身的重要性在下降,一般只针对展示类任务

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1990650.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

unity 创建项目报错feature has expired (H0041),sentinel key not found (H0007)

两个报错同一种处理方式。 1、删除以下路径所有文件&#xff1a;C:\ProgramData\SafeNet Sentinel&#xff08;注意&#xff1a;ProgramData为隐藏文件&#xff09; 2、打开Cmd&#xff08;WinR键&#xff0c;输入cmd回车&#xff09;&#xff0c;进入Unity安装所在盘符&#…

SecureCRT记录会话日志

在使用SecureCRT软件的时候&#xff0c;有个非常实用的功能&#xff1a;记录会话日志&#xff0c;就是可以把当前会话的所有记录保存成文本文件。下面简单介绍一下如何使用这个功能。 首先点击SecureCRT软件左上角的文件 然后点击会话日志即可 然后选择一个路径保存日志&#…

物流仓库安全视频智能管理方案:构建全方位、高效能的防护体系

一、背景分析 随着物流行业的快速发展和仓储需求的日益增长&#xff0c;仓库安全成为企业运营中不可忽视的重要环节。传统的人工监控方式不仅效率低下&#xff0c;且难以做到全天候、无死角覆盖&#xff0c;给仓库资产和人员安全带来潜在风险。因此&#xff0c;引入仓库安全视…

Datawhale AI夏令营第四期 魔搭-AIGC方向 task01笔记

目录 赛题内容 可图Kolors-LoRA风格故事挑战赛 baseline要点讲解(请配合Datawhale速通教程食用) Step1 设置算例及比赛账号的报名和授权 Step2 进行赛事报名并创建PAI实例 Step3 执行baseline Step4 进行赛题提交 微调结果上传魔搭 lora 调参参数介绍及 SD 的基础知识点…

ST-LINK烧录MCU

打开ST-LINK软件&#xff1a; 主板断电状态下接入烧录器&#xff0c;烧录器USB连接电脑&#xff1a; 主板上电&#xff0c;点击连接按钮&#xff1a; 点击加载文件&#xff1a; 点击写入按钮&#xff0c;烧录成功后拔掉烧录器&#xff0c;主板重新上电

CPU 流水线技术初识

在当今数字化的时代&#xff0c;计算机已经成为我们生活中不可或缺的一部分。而在计算机的核心部位&#xff0c;中央处理器&#xff08;CPU&#xff09;则是其重要的组成部分。CPU 的性能决定了计算机的运行速度和处理能力&#xff0c;而流水线技术则是 CPU 性能提升的关键所在…

SCAU华南农业大学 高级程序语言设计(C语言)OJ实验题解

有错漏/建议/意见 欢迎在评论区提出&#xff01;&#xff01;&#xff01; 实验1 C语言程序初步 堂前习题 6567 第一个C程序 描述&#xff1a; 将下列程序输入Visual C&#xff0c;编译、连接和运行该程序&#xff0c;运行通过后&#xff0c;提交程序。 输入&#xff1a; …

不同环境下RabbitMQ的安装-3 操作RabbitMQ

前面两篇从不同环境下RabbitMQ的安装-1 为什么要使用消息服务 到同环境下RabbitMQ的安装-2 ARM架构、X86架构、Window系统环境下安装RabbitMQ介绍了关于如何在ARM架构、X86架构和Window系统下如何安装&#xff0c;各位小伙伴可以根据自己的实际开发场景参考安装。 到本篇是一些…

宿主机与容器(docker)之间的数据共享

目录 一台宿主机上的容器和宿主机之间的数据共享 创建卷 进入Docker的卷的存储位置 进入卷ep1的数据存储位置 创建容器并挂载至卷ep1上 测试&#xff1a; 进入容器内部查看 一台宿主机上的多个容器之间的数据共享 挂载新的docker容器在该卷上 查看修改的数据是否一致…

CocosCreator使用 ProtoBuf WebSocket与服务器对接方法

在 Cocos Creator 中使用 .proto 文件和转换成 TypeScript&#xff08;TS&#xff09;两者各有其优缺点&#xff0c;具体选择取决于你的项目需求和团队的开发习惯。以下是两者的一些比较&#xff1a; 1、使用 .proto 文件的优点&#xff1a; 跨语言支持&#xff1a;Protocol B…

对目录的操作

1.fileno&#xff1a;获得文件流指针里的文件描述符 int fd fileno(FILE *fp) 成功返回文件描述符 失败返回-1 2.fdopen:与fileno相反&#xff0c;将文件描述符转换为文件流指针 FILE *fp fdopen(int fd) 成功返回文件流指针 失败返回-1 一、目录&#x…

药物研发企业专属项目管理系统案例(PMS)分享:丽珠医药集团上线瑞杰 SuperProject 系统

丽珠医药集团股份有限公司与北京瑞杰科技达成合作&#xff0c;丽珠医药集团选择瑞杰科技自主研发的 SuperProject 系统来打造一套专业的医药研发项目管理平台&#xff0c;帮助丽珠医药更好地规划、执行和监控药物研发项目&#xff0c;确保项目按时、按质、按量完成&#xff0c;…

数学规划模型|线性规划|整数规划

规划模型的概念 如何来分配有限资源&#xff0c;从而达到人们期望目标的优化分配数学模型&#xff0c;它在数学建模中处于中心地位。 这类问题一般可以归结为数学规划模型&#xff0c;规划模型的应用极为广泛&#xff0c;其作用已为越来越多的人所重视 规划模型是数学建模竞赛…

翰德恩赋能中国邮政信息科技产品创新系列培训

为了增强中邮信科公司需求分析工程师的专业素养&#xff0c;提升其业务需求和业务价值的挖掘能力&#xff0c;进而设计并交付满足用户期望的产品&#xff0c;提升用户体验&#xff0c;运营管理部于2024年4月至6月成功举办了六期需求分析工程师能力提升系列培训。 本次系列培训…

Maven依赖管理【后端 2】

Maven依赖管理详解 在Java项目开发中&#xff0c;依赖管理是一个至关重要的环节。Maven作为Java世界中最流行的项目管理工具之一&#xff0c;通过其强大的依赖管理机制&#xff0c;极大地简化了项目构建和依赖管理的复杂性。本文将详细介绍Maven的依赖配置、依赖传递以及依赖范…

QT生成.exe文件无法在未安装QT的电脑上运行的解决办法

在没有安装qt的电脑上运行qt生成的exe文件&#xff0c;提示&#xff1a; The application failed to start because no Qt platform plugin could be initialized 在网上找了很多办法&#xff0c;我尝试了 手动&#xff1a; 1、修改环境变量&#xff0c;2&#xff0c;添加pla…

Hadoop未授权访问漏洞

Hadoop是一个由Apache基金会所开发的分布式系统基础架构&#xff0c;由于服务器直接在开放了Hadoop 机器 HDFS 的 50070 web 端口及部分默认服务端口&#xff0c;黑客可以通过命令行操作多个目录下的数据&#xff0c;如进行删除&#xff0c;下载&#xff0c;目录浏览甚至命令执…

【密码学】网络攻击类型:窃听攻击、假冒攻击、欺骗攻击和重放攻击

一、窃听攻击、假冒攻击、欺骗攻击和重放攻击的定义 这些攻击从名字中就大概能知道他们的攻击原理&#xff0c;我就不赘述了&#xff0c;直接用一个表格来一次性介绍四种攻击方式。 攻击类型攻击原理窃听攻击攻击者监听网络中的数据传输以获取敏感信息。示例&#xff1a;在未加…

docker 部署 mysql8

命令 docker run --restartalways --name mysql8 -v /data/mysql/conf:/etc/mysql -v /data/mysql/data:/var/lib/mysql -v /data/mysql/log:/var/log -v /data/mysql/mysql-files:/var/lib/mysql-files -p 3308:3306 -e MYSQL_ROOT_PASSWORD123456 -d mysql:8 \解释 --rest…

基于单片机的瓦斯浓度检测报警装置的设计与仿真

摘 要: 针 对 煤矿 安全 生产 实际 &#xff0c; 文章首先 介绍 了采用 单 片 机 的煤矿 瓦斯 浓 度检 测 报 警 装 置的整 体 构 架 &#xff0c; 然 后 对 煤矿 瓦斯 浓 度检 测 报 警 装 置 的 各 个 部 分 硬 件 进 行 了 详细 的设计&#xff0c; 给 出了煤矿瓦斯浓 度检…