Mindspore框架循环神经网络RNN模型实现情感分类|(二)词向量

news2024/11/13 10:57:14

Mindspore框架循环神经网络RNN模型实现情感分类

Mindspore框架循环神经网络RNN模型实现情感分类|(一)IMDB影评数据集准备
Mindspore框架循环神经网络RNN模型实现情感分类|(二)预训练词向量
Mindspore框架循环神经网络RNN模型实现情感分类|(三)RNN模型构建
Mindspore框架循环神经网络RNN模型实现情感分类|(四)损失函数与优化器
Mindspore框架循环神经网络RNN模型实现情感分类|(五)模型训练与推理

一、关于预训练词向量

在IMDB影评数据集的准备中提到词向量的预训练加载。
词向量(Word embedding),即把词语表示成实数向量。能体现词语直接的相近关系。词向量已经被证明可以提高NLP任务的性能,例如语法分析和情感分析。
词向量利用分布式假设,即相似的单词在上下文中出现的方式相似,因此可以使用向量空间模型将它们映射到低维向量表示。常见的词向量算法包括Word2Vec、GloVe等。本项目用nn.embedding方法,计算词与词之间的语义距离,并结合词袋模型获取句子的语义表示。

在前面提到“I like the movie!” = 词向量[9 37 10 16 28],这是每个单词在词字典中的索引,这是映射。并没有词的含义,只有位置。即,第一步:将每个单词或标记符号映射到一个唯一的整数ID。
第二步:初始化一个随机的词向量矩阵,其中每行表示一个单词或标记的向量。
第三步:通过最小化损失函数来训练词向量矩阵,以便使相似含义的单词具有相似的向量表示。常见的损失函数包括Skip-gram、CBOW和GloVe等。
第四步:在训练完成后,使用训练出的词向量矩阵来表示新的文本数据,例如,可以将每个句子中的单词向量平均值作为句子的向量表示。
第五步:可以使用这些词向量在各种自然语言处理任务中进行特征提取,例如文本分类、命名实体识别、情感分析等。

预训练的词向量,指提前训练好这种词向量,它是在极大样本上训练的结果,有很好的通用性,无论什么任务都可以直接拿来用。
当一个人读书时,如果遇到了生僻的词,一般能根据上下文大概猜出生僻词的意思,词向量训练结果表示,正好像是捕捉了这种思想,抽象了这种行为。这也是word2vec的思想。
以上步骤的目标就是将文本转化为数值特征。再用RNN网络进行语义情感分类,就有现实意义了。

二、glove词向量

Glove模型的目的:求出能表示出词与词之间的关系的词向量
Glove的整体思想:词 k 在词 i 和词 j 中的的出现概率有着特殊规律
模型出自论文: Glove: Global Vectors for Word Representation

2.1glove模型原理

模型实现:

1)共现矩阵(对称矩阵)
以窗口的大小,出现在同一个窗口中的词计数

例:
I love you.
you love me.
you like me?
在这里插入图片描述
对于第一句:I love you.
假设窗口为一,[I love],I为中心词,则I为行,love为列处+1;然后移动窗口为[I love you],love为中心词,love为行,I列和you列+1;再移动窗口[I love you.],you为中心词,you做行,I 、love、句号列+1;
第一个句子处理后,再处理第二个句子,第三个句子,就得到上述共现矩阵。
共现矩阵的每一列(或行)都可以当做一个词向量。

2)SVD处理成三角矩阵
将共现矩阵转换成三角矩阵 Σ,目的为了降维和减少计算量。
在这里插入图片描述

生成共现矩阵,再SVD降维。

from glove import Glove
from glove import Corpus  # 语料库

# 生成共现矩阵,再SVD降维
corpus_model = Corpus()
corpus_model.fit(sentense, 
                 window=10)  # 窗口大小 (用于统计同一窗口的词,生成共现矩阵)
glove = Glove(no_components=10,   # 词向量维度
              learning_rate=0.05) # 学习率
glove.fit(corpus_model.matrix,
          epochs=10,              # 迭代次数
          no_threads=1,           # 计算线程数
          verbose=False)           # 打印epochs进度

输出及应用

# most_similar函数需要使用dictionary
glove.add_dictionary(corpus_model.dictionary)

print(glove.dictionary)
print(glove.word_vectors)
print(glove.most_similar('love', number=4))

词向量有 7 种词,每个词的维度为 10:
在这里插入图片描述
此处参考博客:xiao___qiao的Glove 词向量

3)拟合计算词向量
通过设计的函数,将词向量和共现概率比值进行计算,使loss函数越小。设计的函数如下,是通过共现词频率比值的规律来设计的:
在这里插入图片描述
f(x):权重,为了不让相关度太高,保持相对高就行
在这里插入图片描述

2.2 预训练词向量下载

Glove 模型主要是利用了共现频率比值,这个特殊的规律,以这个规律来设计 loss 函数进行训练,得到词向量的方法。以下是下载预训练的词向量。

glove_path = download('glove.6B.zip', 'https://mindspore-website.obs.myhuaweicloud.com/notebook/datasets/glove.6B.zip')
vocab, embeddings = load_glove(glove_path)
print(len(vocab.vocab()))

解压后:
在这里插入图片描述
glove模型-6B词数量-100d词向量维数。

2.3 预训练词向量应用

有了预训练的词向量后,前面提到“I like the movie!” = 词映射[9 37 10 16 28],就变成“I like the movie!” = 词向量(每个词都是100d向量)

WordVector
I-0.046539 , 0.61966 , 0.56647 , -0.46584 , -1.189 ,0.44599 , 0.066035 , 0.3191 , 0.14679 , -0.22119 ,0.79239 , 0.29905 , 0.16073 , 0.025324 , 0.18678 ,…
like-0.2687 , 0.81708 , 0.69896 , -0.72341 , 0.091566, 0.19557 , -0.52112 , -0.24313 , -0.44701 , -0.27039 , -0.34126 , -0.46898 ,…
the-0.038194, -0.24487 , 0.72812 , -0.39961 , 0.083172, 0.043953, -0.39141 , 0.3344 , -0.57545 , 0.087459, 0.28787 , …
movie0.38251 , 0.14821 , 0.60601 , -0.51533 , 0.43992 ,0.061053 , -0.62716 , -0.025385 , 0.1643 , -0.22101 ,…
0.38472 , 0.49351 , 0.49096 , -1.5434 , -0.33614 ,0.6222 , 0.32265 , 0.075331 , 0.65591 , -0.23517 , …

三、小结

Glove 和 word2vec 相比,word2vec 是周围范围内的词训练,glove 是以统计的词,更全面。两者最直观的区别在于,word2vec是“predictive”的模型,而GloVe是“count-based”的模型。
由于GloVe算法本身使用了全局信息,自然内存费的也就多一些,相比之下,word2vec在这方面节省了很多资源。

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

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

相关文章

大模型额外篇章三:vercel搭建openai中转服务器

文章目录 一、起因和注意1)起因2)注意二、实现方法(原理:透传)1)nginx方案2)node服务3)纯 js 方案4)选择国外的域名服务商(DNS 解析路径缩短,建议方案国外提供 CDN 云服务商结合自建云服务业务做负载均衡)三、实践(vercel部署OpenAI代理服务器)四、测试搭建的Ope…

UE4 自动换行——按排序关键字1.2.3.

要自动换行的字符串举例&#xff1a;“有效节点为:1.demo-worker-02 2.demo-worker-01 3.demo-master-01” 1.获取相邻两位字符串&#xff0c;组合后与关键字比较 2.当两位字符串与关键字相等&#xff0c;附加一次换行 3.其他例如 1)2)3)、(1)(2)(3)、<1><2><…

XLua 原理分析 三

前面已经介绍了Lua与C#的基础通信原理&#xff0c;和Wrap中间文件的作用。有了前面2篇的基础&#xff0c;大概已经能搞清这块的原理。 为了加深对这块的印象&#xff0c;这里开始正式分析Xlua中的Lua和C#的通信。 一、Lua如何调用CS的过程 lua的初始化代码&#xff1a; pri…

驱动开发系列06 - 内存映射和DMA

目录 一:概述 二:Linux中的内存管理 地址类型 物理地址与页 高内存和低内存 内存映射和页结构体 页表 虚拟内存区域 vm_area_struct 结构 进程内存映射 三:mmap 设备操作 使用 remap_pfn_range 一个简单的实现 添加 VMA 操作 使用 nopage 映射内存 重新映射特定 I/O…

QT5.9.9+Android开发环境搭建

文章目录 1.安装准备1.1 下载地址1.2 安装前准备2.安装过程2.1 JDK安装2.1.1 安装2.1.2 环境变量配置2.2 SDK配置2.2.1 安装2.2.2 环境变量配置2.2.3 adb 错误解决2.2.4 其他SDK安装2.2.5 AVD虚拟机配置2.3 NDK配置2.4 QT 5.9.9安装配置2.4.1 QT安装2.4.2 配置安卓环境3.QT工程…

Android Kotlin:协程

目录&#xff1a; 1&#xff09;协程是什么&#xff1f; 2&#xff09;协程和线程的关系&#xff1f; 3&#xff09;协程如何使用&#xff1f;切线程是什么 4&#xff09;挂起函数是什么&#xff1f; 5&#xff09;withContext和lanuch的区别在哪里&#xff1f; 6&#xff09;…

某矿webpack逆向

免责声明&#xff1a; 本篇博文的初衷是分享自己学习逆向分析时的个人感悟&#xff0c;所涉及的内容仅供学习、交流&#xff0c;请勿将其用于非法用途&#xff01;&#xff01;&#xff01;任何由此引发的法律纠纷均与作者本人无关&#xff0c;请自行负责&#xff01;&#xf…

华媒舍:6个媒体宣发套餐,快速突破传播界限

在当今信息爆炸的社会中&#xff0c;有效地传播自己的信息变得愈发困难。特别是对于媒体宣发来说&#xff0c;如何在市场竞争激烈的情况下突破传播界限&#xff0c;让自己的消息传达给更多的人&#xff0c;这是每个企业和个人都面临的难题。 为了解决这个问题&#xff0c;我们推…

图片变更检测

20240723 By wdhuag 目录 前言&#xff1a; 参考&#xff1a; 文件监控&#xff1a; 图片占用问题&#xff1a; 源码&#xff1a; 前言&#xff1a; 由于第三方图像处理软件不能回传图片&#xff08;正常都能做&#xff0c;这里只是不想做&#xff09;&#xff0c;只能在…

有什么好用的AI工具推荐吗?

AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/ 所有打工人集合&#xff01;根据你问题中的描述&#xff0c;本小白正好都有涉及过相关领域的AI工具。 今天一次性讲清能处理所有办公场景的AI工具…

Harmony学习(二)------ArkUI(2)

1.主轴对齐方式.justifyContent build() {Column(){Text().width(200).height(100).backgroundColor(Color.Yellow).border({width:2})Text().width(200).height(100).backgroundColor(Color.Yellow).border({width:2}).margin(10)Text().width(200).height(100).backgroundCol…

现货黄金布林线怎么看?又应如何使用?

在现货黄金投资中&#xff0c;技术指标是很多人做交易分析和决策时所需要的工具。当然&#xff0c;由于电脑技术的发达&#xff0c;现在各种技术指标已经有成千上万种&#xff0c;其中一些经典的指标还是很受市场欢迎&#xff0c;比方说布林线。下面我们就来简单地介绍布林线在…

【调试笔记-20240723-Linux-gitee 仓库同步 github 仓库,并保持所有访问链接调整为指向 gitee 仓库的 URL】

调试笔记-系列文章目录 调试笔记-20240723-Linux-gitee 仓库同步 github 仓库&#xff0c;并保持所有访问链接调整为指向 gitee 仓库的 URL 文章目录 调试笔记-系列文章目录调试笔记-20240723-Linux-gitee 仓库同步 github 仓库&#xff0c;并保持所有访问链接调整为指向 gite…

Python爬虫(5) --爬取网页视频

文章目录 爬虫爬取视频指定url发送请求UA伪装请求页面 获取想要的数据解析定位定位音视频位置 存放视频完整代码实现总结 爬虫 Python 爬虫是一种自动化工具&#xff0c;用于从互联网上抓取网页数据并提取有用的信息。Python 因其简洁的语法和丰富的库支持&#xff08;如 requ…

typora激活问题

不使用激活码解决。 1.右键桌面图标&#xff0c;打开文件位置 2.按照 Typora路径到 —> resources —> page-dist —> static —> js 这个路径找到这两个文件 LicenseIndex.180dd4c7.xxxxxxx.chunk.js LicenseIndex.180dd4c7.xxxxxxx.chunk.js &#xff08;也可…

MySQL简介(超详细)

课程目标 • 了解数据库基本概念 • 熟悉MySQL数据库的常用操作 • 掌握Insert、Delete、Update、Select等常用SQL语句 • 理解MySQL数据库的事务&#xff0c;索引以及函数 • 了解MySQL数据库的存储过程和触发器 一、什么是数据库&#xff1f; 概念&#xff1a;数据库(D…

立创梁山派--移植开源的SFUD和FATFS实现SPI-FLASH文件系统

本文主要是在sfud的基础上进行fatfs文件系统的移植&#xff0c;并不对sfud的移植再进行过多的讲解了哦&#xff0c;所以如果想了解sfud的移植过程&#xff0c;请参考我的另外一篇文章&#xff1a;传送门 正文开始咯 首先我们需要先准备资料准备好&#xff0c;这里对于fatfs的…

Windows图形界面(GUI)-MFC-C/C++ - MFC项目工程框架解析

公开视频 -> 链接点击跳转公开课程博客首页 -> e​​​​​​链接点击跳转博客主页 目录 MFC项目 项目选择 配置安装 程序引导 MFC框架 环境设置 程序框架 代码编写 MFC解析 程序入口 执行流程 代码结构 应用程序类 窗口框架类 消息处理 消息类型 消息…

探索扫描二维码登录的奥秘:从前端到后端的无缝连接

&#x1f389; 博客主页&#xff1a;【剑九 六千里-CSDN博客】 &#x1f3a8; 上一篇文章&#xff1a;【React中的无状态组件&#xff1a;简约之美】 &#x1f3a0; 系列专栏&#xff1a;【面试题-八股系列】 &#x1f496; 感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1、…

[Jenkins]jenkins-cli.jar调用用户token启动任务

背景&#xff1a;项目入了一群od伙伴&#xff0c;但是od伙伴有单独的构建工程需要提交&#xff0c;由于jenkins的版本太拉闸&#xff0c;不能配置根据role和项目分权限&#xff0c;插件安装失败&#xff0c;不得已想到一个办法。让OD伙伴&#xff0c;在本地&#xff0c;用java&…