《深度学习》自然语言处理 统计、神经语言模型 结构、推导解析

目录

一、语言转换方法

1、如何将语言转换为模型可以直接识别的内容

1)数据预处理

2)特征提取

3)模型输入

4)模型推理

二、语言模型

1、统计语言模型

1) 案例:

• 运行结果:

• 稀疏矩阵内容表达:

2) 统计学语言模型存在的问题

• 参数空间的爆炸式增长

• 缺乏考虑词与词之间内在联系的能力

2、神经语言模型

1) 传统自然语言处理

2) 如何解决维度灾难问题

3) 词嵌入embedding

4)word2vec训练词向量的模型

• CBOW

• SkipGram

5) 模型训练过程


一、语言转换方法

1、如何将语言转换为模型可以直接识别的内容

        1)数据预处理

                首先,需要对原始语言数据进行预处理。这包括分词去除停用词 等操作,以便将语言数据转换成可以被模型处理的形式。

        2)特征提取

                在将语言转换为模型可识别的内容之前,需要将语言数据转换为数值特征。常见的特征提取方法包括TF-IDF词嵌入(如Word2VecGloVe)等。这些方法可以将文本中的单词短语转换为向量表示,便于输入到模型中进行处理。

        3)模型输入

                将特征转换为模型可以接受的输入形式。具体形式取决于所使用的模型类型。例如,对于神经网络模型,可以通过将特征表示为张量矩阵的形式来输入模型。

        4)模型推理

                将输入的特征数据输入到训练好的模型中进行推理或者生成。根据任务的不同,可以使用不同的模型,如分类模型、序列生成模型等。

二、语言模型

1、统计语言模型

        统计语言模型是一种基于统计模型的语言处理技术。它主要用于计算一个给定文本序列的概率或预测下一个单词的概率。统计语言模型通过分析大量的文本数据,学习单词之间的概率分布,从而能够生成符合语法和语义规则的新文本。

        比如之前机器学习中使用词向量转换的方法,将单词表示为向量的技术,能够捕捉单词之间的语义和语法关系。

        1) 案例:

                有以下4段文本字符串,可将其当做四个文本文档,将其转化为数值类型特征矩阵

                text = [' dog cat fish ' , ' dog cat cat ' , ' fish bird ' , ' bird ' ]

                对这四篇文档进行分词,然后转化为数值类型,代码如下

from sklearn.feature_extraction.text import CountVectorizer  # 导入库将文本集合转换为词频矩阵

texts = ['dog cat fish','dog cat cat','fish bird','bird']   # 随机建立个数据,每个文本字符串代表一个文档
cont = []
cv = CountVectorizer(max_features=6,ngram_range=(1,2))  # 建立一个模型,参数为最大特征数,转换后的特征矩阵将最多包含6列,以及词前后拼接长度范围
cv_fit = cv.fit_transform(texts)   # 训练数据,返回一个稀疏矩阵
print(cv_fit)   # 打印稀疏矩阵
print(cv.get_feature_names_out())  # 打印所有特征值
print(cv_fit.toarray())   # 将稀疏矩阵转变为矩阵类型
                • 运行结果:

        其中每一行代表一篇文章,每一列代表是否有总分词库中的词,由此来形成矩阵。

                • 稀疏矩阵内容表达:

        

        2) 统计学语言模型存在的问题
                • 参数空间的爆炸式增长

                        统计语言模型在建模时需要估计大量的参数,特别是在N(模型考虑的词语个数)较大时(N通常表示模型考虑的上下文的长度,也称为n-gram的n值),由于词汇量很大,参数空间会随着N的增加而指数级增长。这就导致模型需要更多的数据来进行准确的参数估计,训练时间和计算资源也会随之增加。

                 缺乏考虑词与词之间内在联系的能力

                        传统的统计语言模型主要关注词语的频率概率分布,并没有考虑到词之间的语义上下文关系。这使得模型在处理类似的句子时可能会出现问题。例如,在给定的训练数据中没有出现过类似于"the cat is walking in the bedroom"这样的句子,但是在训练数据中出现了类似的句子,如"the dog is walking in the bedroom""the cat is running in the bedroom"。从这些相似的句子中,我们可以推测出"the cat is walking in the bedroom"这个句子的概率较高,但是传统的统计语言模型可能无法准确地捕捉到这种内在联系性。

2、神经语言模型

        神经语言模型通过使用神经网络来学习文本数据中语言的概率分布,从而能够生成文本、评估文本的合理性和预测下一个词或句子

        在神经语言模型中,通常使用循环神经网络或其变种(如长短时记忆网络,LSTM)来处理序列化的文本数据。模型会根据输入文本的上下文信息预测下一个词或句子的概率分布

        神经语言模型可以通过训练大量的文本数据,学习出单词之间的语义和上下文关系。在训练过程中,模型会根据已经观察到的文本序列,通过优化方法调整模型参数,使得模型能更准确地预测下一个词或句子。

        1) 传统自然语言处理

                在传统自然语言中,通常将词语或者向量化,例如one-hot编码(独热编码,例如我们有一句话为:“我爱北京天安门”,我们分词后对其进行one-hot编码,即只有一个维度为1,其他维度都为0的向量。如下所示:

                首先将文章 “我爱北京天安门” 分词,得到【我,爱,北京,天安门】,那么这四个词即可表示这句话的词库,将这篇文章的分词进行独热编码得到下列表达方式:

                即文章的第一个词表示为词库索引的第一个词,将其表示为1,其余词表示为0,第二个词表示为第二个特征为1,其余特征为0,以此类推。

                假如此时有一篇文章有很多很多个词,将其分词后的得到的词库有1000个单词(不重复),那么按照上述独热编码的方式,将这这篇文章转变为向量格式,然后则会有第一个词表示为000.....0001,第二个词表示为000.....0010,每个词表示的有999个0和1个1,每一行代表一个单词的特征,列数表示词库中词的个数,行数表示文档内词的个数,此时则会出现矩阵为非常稀疏,出现维度灾难,例如将上述文档 “我爱北京天安门”以独热编码的格式表达,假设此时语料库中有4960个词,那么将这个文档表达后的形式为下列所示:

             2) 如何解决维度灾难问题

                将上述类型降低维度,即可达到目的

                此时通过神经网络训练将每个词都映射到一个较短的词向量上来,这个较短的词向量维度是多大呢? 一般需要在训练时自己来指定。现在很常见的例如300维。

            3) 词嵌入embedding

                词向量的意思是将自然语言转换为向量的过程,那么词嵌入就是神经语言模型中的一种词向量转换的一种方法。

                将高维度的词向量转换为低维度的词向量表示的方法,我们称之为词嵌入

            4)word2vec训练词向量的模型

                word2vec分为两个模型。

                    • CBOW

                        以上下文词汇预测当前词,前后两个单词预测当前词,这里的两个单词是自定义个数的

                        例如:有这么一句话,“普京若美不批准战略武器新条约俄将发展核力量”,此时将普京、若当做前两个词,不、批准当做后两个词,美当做被预测的值,那么此时这五个词当做第一个预测单元,那么第二个预测单元就是 若、美、不、批准、战略,第三个......,每个词都由独热编码的值表示,将每一个预测单元传入模型进行训练

                       • SkipGram

                        以当前词预测上下文词汇,即当前词预测前后两个单词,这里的两个单词也是自定义个数的

            5) 模型训练过程

                1、当前词的上下文词语的one-hot编码输入到输入层。

                2、这些词分别乘以同一个矩阵W(V*N)后分别得到各自的1*N 向量。

                3、将多个这些1*N 向量取平均为一个1*N 向量。

                4、将这个1*N 向量乘矩阵 W'(N*V) ,变成一个1*V 向量。

                5、将1*V 向量softmax归一化后输出取每个词的概率向量1*V

                6、将概率值最大的数对应的词作为预测词。

                7、将预测的结果1*V 向量和真实标签1*V 向量(真实标签中的V个值中有一个是1,其他是0)计算误差

                8、在每次前向传播之后反向传播误差,不断调整 W(V*N)和 W'(V*N)矩阵的值。

        例如上述的“普京若美不批准战略武器新条约俄将发展核力量”这句话,词库有4960个单词,首先将第一个预测单元的5个词的独热编码传入模型,输入层的格式为4*4960,即4个词,每个词的特征维度为4960个,传入后将其乘以矩阵4960*300,使其降低维度为4*300格式,这里的4960*300则为需要训练的第一个权重参数\omega1,再将得到的4*300格式的矩阵按列相加求平均,即对每一列的值求平均,然后得到1*300的矩阵,再将这个1*300的矩阵乘以矩阵300*4960,这个300*4960则为需要训练的第二个权重参数\omega2,然后的得到1*4960的矩阵,对这个1*4960的矩阵进行softmax归一化后取出每个词的概率向量1*V,概率最大的则为预测的词,然后将这个预测的值与真实值利用损失函数计算损失值,然后还要进行反向传播来不断更新权重参数来降低损失值的大小。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

BAAI 团队发布多模态模型 Emu3

在人工智能的浩瀚海洋中,一艘名为Emu3的创新之船正在破浪前行,为我们展示了多模态AI的无限可能。这个由Meta AI研究团队开发的革命性模型,通过简单而巧妙的"下一步预测"机制,实现了文本、图像和视频的统一处理。 Emu3的…

linux服务器部署filebeat

# 下载filebeat curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.17.23-linux-x86_64.tar.gz # 解压 tar xzvf filebeat-7.17.23-linux-x86_64.tar.gz# 所在位置(自定义) /opt/filebeat-7.17.23-linux-x86_64/filebeat.ym…

k8s StorageClass 存储类

文章目录 一、概述1、StorageClass 对象定义2、StorageClass YAML 示例 二、StorageClass 字段1、provisioner(存储制备器)1.1、内置制备器1.2、第三方制备器 2、reclaimPolicy(回收策略)3、allowVolumeExpansion(允许…

探索基于知识图谱和 ChatGPT 结合制造服务推荐前沿

0.概述 论文地址:https://arxiv.org/abs/2404.06571 本研究探讨了制造系统集成商如何构建知识图谱来识别新的制造合作伙伴,并通过供应链多样化来降低风险。它提出了一种使用制造服务知识图谱(MSKG)提高 ChatGPT 响应准确性和完整…

告别背锅侠!29个空场景及测试方法的实战指南

想必大家在日常的测试工作中,经常会碰到以下这些场景: 场景一: 测试人员:有一个数据为空的场景还没有验证。 研发人员:这个场景不会出现,因为没有删除逻辑。 场景二: 研发人员:…

蓝桥杯模块二:数码管的静态、动态实现

模块二训练 1.静态显示 一、数码管电路图 二、电路分析 1.数码管电路分析 端口分公共端和段码,先用公共端控制一个数码管,再用段码实现显示数字。共阳数码管公共端输入高电平,段码输入低电平实现点亮 2.锁存器 Y7控制段码,Y6控…

【含文档】基于Springboot+微信小程序 的中心医院用户移动端(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…

全志科技发布T536高性能智慧工业芯片,飞凌嵌入式率先推出配套核心板

2024年9月24日下午,全志科技在中国国际工业博览会上成功举办了其最新产品——T536高性能智慧工业芯片的全球首发发布会。这款芯片采用创新的4核Cortex-A55与RISC-V混合架构,主频分别达到1.6GHz和600MHz,并集成了2TOPS算力的NPU,吸…

生信初学者教程(四):软件

文章目录 RRstudioLinux系统其他软件本书是使用R语言编写的教程,用户需要下载R和RStudio软件用于进行分析。 版权归生信学习者所有,禁止商业和盗版使用,侵权必究 R R语言是一种免费的统计计算和图形化编程语言,是一种用于数据分析和统计建模的强大工具。它具有丰富的统计…

耦合微带线单元的网络参量和等效电路公式推导

文档下载链接:耦合微带线单元的网络参量和等效电路资源-CSDN文库https://download.csdn.net/download/lu2289504634/89583027笔者水平有限,错误之处欢迎留言! 一、耦合微带线奇偶模详细推导过程 二、2,4端口开路 三、2端口短路、3端口开路 四…

智能密码、指纹锁语音芯片ic方案 可存放40s语音内容 NVD语音芯片

随着科技的飞速发展,智能家居安全领域迎来了前所未有的变革。智能密码与指纹锁作为现代家庭安全防护的重要一环,其背后的语音芯片IC开发更是这一变革中的关键技术突破。 智能密码、指纹锁语音芯片ic方案 选型与简介: NVD语音芯片是一款低成…

quiz: python网络爬虫之规则1

下面答错了: B c 8A, 9A

STM32F407之超声波模块使用

#include "sys.h" #include "delay.h" #include "usart.h" #include "includes.h" #include "HC_SR04.h"int main() {OS_ERR err;//错误uart_init(9600);//串口初始化//超声波初始化HC_SR04();//OS初始化 他是第一个运行的函…

【大数据】数据中台怎么样助力企业创新和客户实践

在当今数字化时代,数据成为了企业竞争的关键因素。企业拥有大量的数据,但如何高效地利用这些数据,实现创新和提升客户体验,成为了一项重要的挑战。数据中台作为一种重要的数据管理和分析工具,发挥着关键的作用。本文将…

大数据毕业设计选题推荐-食品销售数据分析系统-Hive-Hadoop-Spark

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

数集相等定义凸显“R各元x的对应x+1的全体=R”是几百年重大错误

黄小宁 变量x所取各数也均由x代表,x代表其变域(x所有能取的数组成的集)内任一元。设集A{x}表A各元均由x代表,{x}中变量x的变域是A。其余类推。因各数x可是数轴上点的坐标所以x∈R变换…

AWS Network Firewall -NAT网关配置只应许白名单域名出入站

1. 创建防火墙 选择防火墙的归属子网(选择公有子网) 2. 创建规则白名单域名放行 3. 绑定相关规则 继续往下拉 绑定非托管规则 4. 配置网络路由 相关规则 参考图 解释 防火墙的归属公有子网路由表规则机器实例的规则子网路由表规则nat网管路…

springboot实战学习(7)(JWT令牌的组成、JWT令牌的使用与验证)

接着上篇博客的学习。上篇博客是在基本完成用户模块的注册接口的开发以及注册时的参数合法性校验的基础上,基本完成用户模块的登录接口的主逻辑以及提到了问题:"用户未登录,需要通过登录,获取到令牌进行登录认证,…

Linux 安装redis主从模式+哨兵模式3台节点

下载 https://download.redis.io/releases/ 解压 tar -zxvf redis-7.2.4.tar.gz -C /opt chmod 777 -R /opt/redis-7.2.4/安装 # 编译 make # 安装, 一定是大写PREFIX make PREFIX/opt/redis-7.2.4/redis/ install配置为系统服务 cd /etc/systemd/system/主服务…

一文上手SpringSecuirty【六】

自定义认证流程完成之后,前端收到了后端生成的token,那么在之后的所有请求当前,都必须携带token.作为服务器来说,得验证这个token,是否合法. 一、验证token是否合法 1.1 OncePerRequestFilter过滤器 OncePerRequestFilter是 Spring 框架中的一个过滤器,用于确保在…