NLP基础——语言模型(动手学深度学习)

语言模型

联合概率

给定文本序列 x 1 , ⋯ , x t x_1,\cdots,x_t x1,,xt,语言模型的目标是估计联合概率 P ( x 1 , ⋯ , x t ) P(x_1,\cdots,x_t) P(x1,,xt). 这里的 x t x_t xt 可以认为是文本序列在时间步 t t t 处的观测或标签,而所谓联合概率指的是一个句子的整体概率,即句子中所有单词相继出现的概率。

语言模型的用处:可以在语音识别上解决同音句歧义问题和断句问题。

语言建模

根据上一节中的序列模型的分析,有基础概率规则: P ( x 1 , x 2 , ⋯ , x T ) = ∏ t = 1 T P ( x t ∣ x 1 , ⋯ , x t − 1 ) P(x_1,x_2,\cdots,x_T)=\prod_{t=1}^TP(x_t|x_1,\cdots,x_{t-1}) P(x1,x2,,xT)=t=1TP(xtx1,,xt1)例如一个四个单词的文本序列的概率表示为: P ( d e e p , l e a r n i n g , i s , f u n ) = P ( d e e p ) P ( l e a r n i n g ∣ d e e p ) P ( i s ∣ d e e p , l e a r n i n g ) P ( f u n ∣ d e e p , l e a r n i n g , i s ) P(deep,learning,is,fun)=P(deep)P(learning|deep)P(is|deep,learning)P(fun|deep,learning,is) P(deep,learning,is,fun)=P(deep)P(learningdeep)P(isdeep,learning)P(fundeep,learning,is)

为了训练语言模型,我们需要计算单词的概率, 以及给定前面几个单词后出现某个单词的条件概率。 这些概率本质上就是语言模型的参数。

计数建模

最容易想到的方法是统计单词(词元)在数据集中出现的次数,然后除以整个语料库的单词总数。例如: P ( l e a r n i n g ∣ d e e p ) = n ( d e e p , l e a r n i n g ) n ( d e e p ) P(learning|deep)=\frac{n(deep,learning)}{n(deep)} P(learningdeep)=n(deep)n(deep,learning) 其中 n ( x ) , n ( x , x ‘ ) n(x),n(x,x`) n(x),n(x,x) 分别表示单个单词和连续单词出现次数。

这种方法在一些高频词上表现的不错,但是在一些低频词和长句多单词组合的情况表现不佳,因为可能语料库中这样的数据很少,即使提出了一些解决办法如拉普拉斯平滑(通过计数中添加小常量),但仍不能解决该问题。

马尔可夫模型与n元语法

当单纯使用计数法时可能存在长单词序列样本极少导致 n ( x 1 , ⋯ , x t ) ≤ 1 n(x_1,\cdots,x_t)\leq1 n(x1,,xt)1 的情况。回忆上一章序列模型中提到的马尔可夫模型,将其用于语言建模。

我们可以不用考虑整个序列模型,而是只用考虑长度为 τ \tau τ 的时间跨度,还是以长度为 4 4 4 的句子的联合概率举例。

一元语法 τ = 0 \tau = 0 τ=0:不用考虑单词之间的联系,只考虑互相独立概率,这样前后文之间无关联的语法并不适用时序的模型。 P ( x 1 , x 2 , x 3 , x 4 ) = P ( x 1 ) P ( x 2 ) P ( x 3 ) P ( x 4 ) = n ( x 1 ) n ( x 2 ) n ( x 3 ) n ( x 4 ) n 4 P(x_1,x_2,x_3,x_4)=P(x_1)P(x_2)P(x_3)P(x_4)=\frac{n(x_1)n(x_2)n(x_3)n(x_4)}{n^4} P(x1,x2x3,x4)=P(x1)P(x2)P(x3)P(x4)=n4n(x1)n(x2)n(x3)n(x4)

二元语法:只与前一个词元有关。 P ( x 1 , x 2 , x 3 , x 4 ) = P ( x 1 ) P ( x 2 ∣ x 1 ) P ( x 3 ∣ x 2 ) P ( x 4 ∣ x 3 ) P(x_1,x_2,x_3,x_4)=P(x_1)P(x_2|x_1)P(x_3|x_2)P(x_4|x_3) P(x1,x2x3,x4)=P(x1)P(x2x1)P(x3x2)P(x4x3)
通常,涉及一个、两个和三个变量的概率公式分别被称为一元语法(unigram)、二元语法(bigram)和三元语法。 n n n 元语法模型最大好处在于:在处理比较长的序列时可以将所有长为 n n n 的子序列概率存下来,假设存下来所有情况的数量为 k k k,那么之后查询时复杂度固定为 O ( k ) O(k) O(k) 而不用遍历整个文本 O ( n ) O(n) O(n).

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

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

相关文章

亚信安慧AntDB:卓越的拓展性和灵活性

在当今这个信息爆炸的时代,企业对数据处理的需求不断增长,传统的数据库系统往往难以应对海量数据的存储和处理挑战。然而,随着亚信安慧AntDB的出现,解决这一难题的曙光终于出现在眼前。AntDB不仅仅具备了高吞吐、高并发、高性能的…

Linux系统之mv命令的基本使用

Linux系统之mv命令的基本使用 一、mv命令介绍1. mv命令简介2. mv命令的使用结果 二、mv命令的使用帮助1. 在命令行的帮助信息2. mv常用选项 三、mv命令的基本使用1. 创建源目录和目标目录2. 新建测试文件3. 将源目录文件复制到目标目录4. 将文件进行改名5. 将目录的所有文件转移…

前端面试宝典总结4-手搓代码JavaScript(数据处理)

前端面试宝典总结4之手写代码JavaScript(数据处理) 本文章 对各大学习技术论坛知识点,进行总结、归纳自用学习,共勉🙏 上一篇👉: 前端面试宝典总结3-JavaScript(2) 文章目录 前端…

python长方形周长面积 2024年3月青少年编程电子学会python编程等级考试二级真题解析

目录 python长方形周长面积 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序代码 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python长方形周长面积 2024年3月 python编程等级考试级编程题 一、…

matlab模拟太阳耀斑喷发

代码 function simulate_solar_flare% 参数设置gridSize 100; % 网格大小timeSteps 200; % 时间步数dt 0.1; % 时间步长% 初始化网格[X, Y] meshgrid(linspace(-5, 5, gridSize));Z zeros(size(X));% 设置耀斑初始位置和强度flareCenter [0, 0]; % 耀斑中心位置flareRad…

【实用技巧】Unity中的Image组件

Unity中的Image组件是UI系统的核心部分,用于显示图像和纹理。以下是一些关于Unity Image组件的实用技巧: 使用Sprite作为Image源: 将Sprite直接拖拽到Image组件的Source Image字段中,可以快速设置显示的图像。 调整颜色和透明度&a…

9 -力扣高频 SQL 50 题(基础版)

9 - 上升的温度 -- 找出与之前(昨天的)日期相比温度更高的所有日期的 id -- DATEDIFF(2007-12-31,2007-12-30); # 1 -- DATEDIFF(2010-12-30,2010-12-31); # -1select w1.id from Weather w1, Weather w2 wheredatediff(w1.recordDate,w2.recordDat…

SolidWorks功能强大的三维设计软件下载安装,SolidWorks最新资源获取!

SolidWorks,它凭借出色的三维建模能力,使得设计师们能够轻松构建出复杂且精细的机械模型,大大提升了设计效率和质量。 在机械设计领域,SolidWorks凭借其丰富的工具和特性,让设计师们能够随心所欲地挥洒创意。无论是零…

Flutter 中的 LayoutBuilder 小部件:全面指南

Flutter 中的 LayoutBuilder 小部件:全面指南 Flutter 是一个功能丰富的 UI 框架,它允许开发者使用 Dart 语言来构建高性能、美观的跨平台应用。在 Flutter 的布局系统中,LayoutBuilder 是一个强大的组件,它可以根据父容器的约束…

家政预约小程序12用户登录

目录 1 创建全局变量2 创建页面3 搭建页面4 实现登录逻辑总结 在小程序中,登录是一个常见的场景。比如我们在小程序预约或者购买时,通常要求用户先登录后购买。如果使用传统方案,登录这个动作其实最终的目的是为了获取用户的openid。而使用低…

Python学习圣经:从0到1,精通Python使用

尼恩:LLM大模型学习圣经PDF的起源 在40岁老架构师 尼恩的读者交流群(50)中,经常性的指导小伙伴们改造简历。 经过尼恩的改造之后,很多小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试机会&#x…

【智能体】文心智能体大赛第二季持续进行中,一起在智能体的海洋里发挥你的创意吧

目录 背景作文小助手AI迅哥问答程序员黄历助手比赛时间第二期赛题丰厚奖品评选说明获奖智能体推荐文章 背景 AI应用(智能体),持续火热,一句话就能创建一个有趣、好玩的应用。 可以说一分钟内就能创建一个有创意的智能体。 看大多…

Linux网络-自定义协议、序列化和反序列化、网络计算服务器的实现和Windows端客户端

文章目录 前言一、自定义协议传结构体对象 序列化和反序列化什么是序列化?反序列化 二、计算器服务端(线程池版本)1.main.cc2.Socket.hpp3.protocol.hpp4.Calculator.hpp5.serverCal.hpp6.threadPool.hpp7.Task.hpp8. log.hpp 客户端Windows客…

我有点想用JDK17了

大家好呀,我是summo,JDK版本升级的非常快,现在已经到JDK20了。JDK版本虽多,但应用最广泛的还得是JDK8,正所谓“他发任他发,我用Java8”。 其实我也不太想升级JDK版本,感觉投入高,收…

华为、华三交换机、路由器启用基于端口的环回检测功能配置

目的 在进行某些特殊功能测试时,例如初步定位以太网故障时,需要开启以太网接口环回检测功能,测试接口功能是否异常。 当以太网接口无故障时,开启环回检测功能后接口物理状态和协议状态将始终处于Up状态;如果以太网接口…

Linux环境搭建NextCloud

NextCloud是什么 Nextcloud是一款开源免费的私有云存储网盘项目,可以让你快速便捷的搭建一套属于自己或者团队的云同步网盘,从而实现跨平台跨设备文件同步,共享,版本控制,团队协做等功能。它的客户端覆盖windows&#…

使用AdaBoost分类方法实现对Wine数据集分类

目录 1. 作者介绍2. 什么是AdaBoost?2.1 什么是弱分类器2.2 什么是强分类器2.3 如何自适应增强2.4 如何组合弱分类器成为一个强分类器? 3. 什么是Wine数据集3.1 Wine 数据集3.2 Wine 数据集结构 4. 使用AdaBoost分类方法实现对Wine数据集分类5. 完整代码…

PLC的编程方式有什么编程:深度探索与实用指南

PLC的编程方式有什么编程:深度探索与实用指南 在现代工业自动化领域,可编程逻辑控制器(PLC)扮演着至关重要的角色。PLC的编程方式多种多样,每种方式都有其独特的优点和适用场景。本文将从四个方面、五个方面、六个方面…

k8s 配置资源管理

一、Secret的资源配置 1.1 Secret配置的相关说明 Secret 是用来保存密码、token、密钥等敏感数据的 k8s 资源,这类数据虽然也可以存放在 Pod 或者镜像中,但是放在 Secret 中是为了更方便的控制如何使用数据,并减少暴露的风险。 有四种类型&a…

日志优化开发效率

日志怎么打? 1.在关键节点打日志 (1).请求入口 (2).结果响应 2.可能发生错误的节点打日志 3.日志不是越多越好,打日志也会消耗性能 RequestMapping("/add")public Boolean publishBlog(String title, String content, HttpServletRequest req…