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

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.mzph.cn/pingmian/49210.shtml

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

相关文章

keil5中 FATAL ERROR L250: CODE SIZE LIMIT IN RESTRICTED VERSION EXCEEDED的问题

用破解软件激活一下cid: 再重新进入keil中,rebuild:

【C++】【继承】【子对象】【构造函数】含子对象的派生类的构造函数写法

(1)子对象的概念:若派生类A1的数据成员中包含基类A的对象a,则a为派生类A1的子对象 (2)含子对象的派生类的构造函数的执行顺序是: ①调用基类构造函数,对基类数据成员初始化 ②调用子…

K8s-控制器

一 为什么使用控制器 pod控制器 作用:1.pod类型资源删除,不会重建 2.控制器可以帮助用户监控,并保证节点上运行定义好的pod副本数 3.pod超过或低于用户期望,控制器会创建、删除pod副本数量 控制器类型&am…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] LYA的马跳棋游戏(200分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线…

Ubuntu 22.04安装Visual Studio Code(VS Code)配置C++,Python

目录 1,下载 通过命令行安装 2,配置 2.1 vscode安装C/C 2.1.1 vscode安装运行环境 3,测试 vscode测试 4,配置python 选择解释器Python是一个解释性语言,现在需告知VSCode使用哪个解释器 ctrlshiftp 输入:Python: Select Interprete…

Mysql explain 优化解析

explain 解释 select_type 效率对比 MySQL 中 EXPLAIN 语句的 select_type 列描述了查询的类型,不同的 select_type 类型在效率上会有所差异。下面我们来比较一下各种 select_type 的效率: SIMPLE: 这是最简单的查询类型,表示查询不包含子查询或 UNION 操作。 这种查询通常是…

Spring Boot集成Spire.doc实现对word的操作

1.什么是spire.doc? Spire.Doc for Java 是一款专业的 Java Word 组件,开发人员使用它可以轻松地将 Word 文档创建、读取、编辑、转换和打印等功能集成到自己的 Java 应用程序中。作为一款完全独立的组件,Spire.Doc for Java 的运行环境无需安装 Micro…

【stm32项目】基于stm32智能宠物喂养(完整工程资料源码)

基于STM32宠物喂养系统 前言: 随着人们生活幸福指数的提高,越来越多的家庭选择养宠物来为生活增添乐趣。然而,由于工作等原因,许多主人无法及时为宠物提供充足的食物与水。为了解决这一问题,我设计了一款便捷的宠物喂…

【Linux】centos7安装php7.4

环境说明 本文档在服务器不能连接互联网的情况下,进行安装php7.4及其扩展。 操作系统:centos7.6 架构:X86_64 一、安装依赖(可选) 说明:服务器能联网就可以通过 yum install 命令下载对应php需要的依赖…

设计模式之策略模式_入门

前言 最近接触了优惠券相关的业务,如果是以前,我第一时间想到的就是if_else开始套,这样的话耦合度太高了,如果后期添加或者删除优惠券,必须直接修改业务代码,不符合开闭原则,这时候就可以选择我…

【TypeScript 一点点教程】

文章目录 一、开发环境搭建二、基本类型2.1 类型声明2.2 基本类型 三、编译3.1 tsc命令3.2 tsconfig.json3.2.1 基本配置项includeexcludeextendsfiles 3.2.2 compilerOptions编译器的配置项 四、面向对象4.1 类4.2 继承4.3 抽象类4.4 接口 一、开发环境搭建 下载Node.js《Nod…

usb pd message结构解析

usb pd 3.1规范定义了三种类型的消息: •简短的控制消息,用于管理端口伙伴之间的消息流或交换不需要额外数据的消息。控制消息的长度为16位。 •用于在一对端口伙伴之间交换信息的数据消息。数据报文的长度范围是48 ~ 240位。 有三种类型的数据消息: ▪那些用于暴露…

【区块链+绿色低碳】双碳数字化管控平台 | FISCO BCOS应用案例

地方政府、园区及企业实现“双碳”目标过程中存在一些挑战与难点: 1. 管理者难以掌握完整、准确、全面的碳排放数据进行科学决策:由于碳排放核算需要对数据的来源、核算方法 的规范性和采集方法的科学性有严格要求,当前面临碳排放数据数据采…

中国一汽发布“一汽●北斗云工作台” 意在推动企业数智化转型

“一汽●北斗云工作台”已经实现100%自主可控,覆盖企业全价值链、全体系、全过程、全岗位的工作需求。目前一汽2.3万个业务单元实现线上作业,产品开发效率提升30%,订单交付周期缩短25%以上。”7月17日,中国第一汽车集团有限公司&a…

electron 网页TodoList工具打包成win桌面应用exe

参考: electron安装(支持win、mac、linux桌面应用) https://blog.csdn.net/weixin_42357472/article/details/140643624 TodoList工具 https://blog.csdn.net/weixin_42357472/article/details/140618446 electron打包过程: 要将…

【吊打面试官系列-ZooKeeper面试题】Zookeeper 的典型应用场景

​大家好,我是锋哥。今天分享关于 【Zookeeper 的典型应用场景 】面试题,希望对大家有帮助; Zookeeper 的典型应用场景 Zookeeper 是一个典型的发布/订阅模式的分布式数据管理与协调框架,开发人员可以使用它来进行分布式数据的发布…

学习React(状态管理)

随着你的应用不断变大,更有意识的去关注应用状态如何组织,以及数据如何在组件之间流动会对你很有帮助。冗余或重复的状态往往是缺陷的根源。在本节中,你将学习如何组织好状态,如何保持状态更新逻辑的可维护性,以及如何…

基于自组织映射的检索增强生成

大量数据用于训练大型语言模型 (LLM),该模型包含数百万和数十亿个模型参数,目的是生成文本,例如文本补全、文本摘要、语言翻译和回答问题。虽然 LLM 从训练数据源中开发知识库,但总有一个训练截止日期,在此日期之后 LL…

java jts 针对shp含洞多边形进行三角剖分切分成可行区域

前言 java jts 提供了Delaunay三角剖分的相关方法,但是该方法不考虑含洞的多边形的。虽然 jts 的 ConformingDelaunayTriangulationBuilder 类可以通过提供线段约束的方式防止切割到洞内,但是仅支持最多99条线段,虽然可以通过重写破除99条线段的约束&am…

Java——————接口(interface) <详解>

1.1 接口的概念 在现实生活中,接口的例子比比皆是,比如:笔记本电脑上的USB接口,电源插座等。 电脑的USB口上,可以插:U盘、鼠标、键盘...所有符合USB协议的设备 电源插座插孔上,可以插&#xff…