当前位置: 首页 > news >正文

昇思25天学习打卡营第24天|RNN实现情感分类

在这里插入图片描述

RNN实现情感分类学习总结

概述

情感分类是自然语言处理领域的重要任务,主要用于识别文本中表达的情绪。本文使用MindSpore框架实现基于RNN的情感分类模型,示例包括:

  • 输入: “This film is terrible” -> 标签: Negative
  • 输入: “This film is great” -> 标签: Positive

数据准备

本节使用经典的IMDB影评数据集,该数据集包含正面和负面评论。数据示例包括:

ReviewLabel
“Quitting” may be as much about exiting…Negative
This movie is amazing because…Positive

数据下载模块

创建数据下载模块,使用requests库进行下载,并通过tqdm库可视化下载进度。下载后,使用tarfile库解压数据集,提取出训练和测试数据。

加载IMDB数据集

数据集解压后,分别读取训练和测试数据,并使用mindspore.datasetGeneratordataset接口加载。这一过程包括构建数据和标签的迭代对象。

加载预训练词向量

使用GloVe词向量进行单词编码,构建词表和对应的词向量矩阵。通过nn.Embedding层加载这些词向量,使模型能够对输入文本进行有效的语义表示。

数据集预处理

对加载的IMDB数据集进行预处理,包括:

  • 将Token转换为索引ID。
  • 统一文本序列长度,使用<pad>进行填充。

使用mindspore.dataset提供的接口实现这些操作,并将处理好的数据集分为训练和验证集。

模型构建

设计用于情感分类的RNN模型结构:

  • Embedding层:使用加载的GloVe词向量。
  • RNN层:采用LSTM作为特征提取器,以避免梯度消失问题。
  • Dense层:将提取的特征映射到二分类输出。

损失函数与优化器

选择nn.BCEWithLogitsLoss作为损失函数,针对二分类问题进行优化。

训练逻辑

训练过程中包括以下步骤:

  1. 读取Batch数据。
  2. 进行正向传播和反向传播,更新模型参数。
  3. 记录损失值。

使用tqdm库可视化训练进度。

评估指标与逻辑

对模型进行评估,通过预测结果与真实标签对比,计算准确率。实现的评估逻辑包括:

  1. 读取Batch数据。
  2. 正向计算预测结果。
  3. 计算准确率。

同样使用tqdm进行可视化。

模型训练与保存

设置训练轮数为5轮,并保存最佳模型。训练过程中维护best_valid_loss以保存损失值最低的模型。

模型加载与测试

训练完成后,通过MindSpore的Checkpoint接口加载最佳模型进行测试。这一过程确保模型能够有效地进行情感分类。

自定义输入测试

设计预测函数,实现输入评价的情感分类。步骤包括:

  1. 分词处理输入句子。
  2. 查找词表获取索引ID。
  3. 转换为Tensor,输入模型进行预测。
  4. 输出预测结果。

通过以上步骤,RNN模型实现了准确的情感分类,展示了自然语言处理中的应用潜力。

相关文章:

  • 黑马JavaWeb企业级开发(知识清单)03——HTML实现正文:排版(音视频、换行、段落)、布局标签(div、span)、盒子模型
  • .mp4格式的视频为何不能通过video标签在chrome浏览器中播放?
  • Typescript学习笔记(2.0)
  • Pytorch使用教学4-张量的索引
  • 88个python的基本语法知识【二】
  • 找工作准备刷题Day10 回溯算法 (卡尔41期训练营 7.24)
  • 心跳机制详解
  • 【python】python基于 Q-learning 算法的迷宫游戏(源码+论文)【独一无二】
  • 个性化音频生成GPT-SoVits部署使用和API调用
  • Java正则表达式判断有无特殊字符
  • 数据结构—红黑树
  • 记一次折腾后台nodejs服务的经历
  • shopee虾皮 java后端 一面面经 整体感觉不难
  • Android TabLayout的简单用法
  • 【JavaEE】Bean的作用域和生命周期
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【Leetcode】104. 二叉树的最大深度
  • css布局,左右固定中间自适应实现
  • vuex 笔记整理
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 对超线程几个不同角度的解释
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 深度学习在携程攻略社区的应用
  • 事件委托的小应用
  • 探索 JS 中的模块化
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 正则表达式小结
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​configparser --- 配置文件解析器​
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • ‌移动管家手机智能控制汽车系统
  • #define 用法
  • #window11设置系统变量#
  • #数据结构 笔记三
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (python)数据结构---字典
  • (windows2012共享文件夹和防火墙设置
  • (不用互三)AI绘画工具应该如何选择
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (转载)PyTorch代码规范最佳实践和样式指南
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • ******IT公司面试题汇总+优秀技术博客汇总
  • .NET C# 操作Neo4j图数据库
  • .net core控制台应用程序初识
  • .net 程序发生了一个不可捕获的异常
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .net 生成二级域名
  • .Net各种迷惑命名解释
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • .NET设计模式(8):适配器模式(Adapter Pattern)