NLP实践项目二:基于RNN、CNN的文本多分类(pytorch实现)

2023-05-16

直接看代码:github传送门
数据集:Classify the sentiment of sentences from the Rotten Tomatoes dataset

1. 数据预处理

本项目实现了两种数据预处理方式,一种是使用pytorch提供的dataset和dataloader实现数据预处理,一种是直接使用torchtext(强烈推荐上手试试)。两种方法的实现过程大体都是一致的,分词、数值化(word --> id)、填充、封装。最后一步是为了在训练过程中直接从迭代器中取出可输入到网络中的数据格式。

2. 模型定义

RNN模型(Vanilla RNN和LSTM)

使用序列模型做文本分类的过程都一样,先通过embedding层得到单词的词向量,然后将其输入到RNN中,通常是将最后一个单词对应的输出作为句子的特征向量,通过全连接层+softmax得到预测为各个标签的概率,最后使用交叉熵函数计算loss,然后更新参数。这里提一个我困惑的点,一般在介绍RNN时使用下面的图:
在这里插入图片描述
如果pytorch中是按上图的方式实现了RNN,那么不禁会问,为什么参数里没让我指定每一个timestep的输出 y ^ < t > \hat y^{<t>} y^<t>的维度?要是 y ^ < t > \hat y^{<t>} y^<t>和第t个timestep的隐状态矩阵 a t a_t at是一样的,那是不是直接使用最后一个隐状态矩阵作为单词的向量表示也行?答案是:在某些情况下,确实是这样的。详细解释见这篇文章。

CNN模型:模型结构图如下(图来自论文):

在这里插入图片描述
CNN和RNN的区别只在于句子进行特征提取的部分,如上图,在得到单词的词向量表示后,得到一个NxK的句子,可使用不同大小的二维卷积核(比如2xK,3xK等,这里也可使用一维卷积),单个卷积核对应的输出为一列,对一列进行max pooling就得到该卷积核对应的特征,最后将多个不同大小的卷积核对应的输出拼接到一起即可得到句子对应的向量表示。

3. 模型训练

github上的代码适合在本地进行过拟合测试,gpu版见链接。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NLP实践项目二:基于RNN、CNN的文本多分类(pytorch实现) 的相关文章

  • DirectX 9.0 C 多国语言正式版(官方下载)

    微软终于放出了DirectX 9 0c官方正式版 xff0c 此最新版的版本号与先前报道的在微软XP SP2 2126测试版补丁中所集成的版本一样 xff0c 同为4 09 0000 0904 xff0c 但此版本为最终零售版 有消息说微软
  • 最近游戏更新 未整理 无图片

    点击下载 gt FIFA2003 硬盘版本 http www gzcrc com it it benapple fifa2003 zip FIFA2003正式硬盘版高速下载 FIFA2003 EXE安装文件开始安装 xff0c 在安装完成后
  • 最近游戏更新 未整理 无图片 续

    模拟人生之超级明星 xff08 The Sims Superstar xff09 三项属性修改器 http patch ali213 net download asp id 61 2872 黑客帝国 xff08 Enter the Matr
  • 中兴BA510(中国移动定制机)进工程模式恢复IMEI

    1 拨号盘输入 3646633 再拨号 xff0c 或者 3646633 xff0c 进入工程模式 2 找到RADIO information xff1a phone 1输入 AT 43 EMGR 61 1 7 34 IMEI号码1 34
  • excel 2007的筛选和自定义筛选及复制选中的筛选内容

    筛选 xff1a 选中行 xff0c 按快捷键 xff1a ALT 43 D 43 F 43 F 弹出自定义筛选 xff1a 选中列 xff0c 按快捷键 xff1a ALT 43 43 F 43 F 复制选中的筛选出来的内容 xff1a
  • Java编译环境在新版windows10中的设置

    最近升级了windows10最新版 xff0c 发现系统环境变量变了模样 xff0c 需要单独设置每个路径 xff0c 前版本 xff1a 变量名 xff1a Path 变量值 xff1a JAVA HOME bin JAVA HOME j
  • Windows系统与debian系统双系统安装

    1 资源网址 xff1a https msdn itellyou cn 下载 Windows 8 1 Pro 系统映像 xff1b 使用软碟通 xff08 UltraISO xff09 刻录安装镜像到U盘 xff1b 开机进入BIOS将其设
  • Win10使用Xrdp脚本远程桌面连接Ubuntu主机

    目录 使用场景 环境 安装步骤 远程桌面连接 使用场景 在Ubuntu主机上安装xrdp服务 xff0c windows远程桌面连接ubuntu主机 xff0c 方便快捷 尝试了网上一些方法 xff0c 繁琐且很多卡在远程桌面登录界面 xf
  • cef中js与C++交互

    cefquery方式交互 前端使用 window span class token punctuation span span class token function cefQuery span span class token punc
  • CodeForces 347C Alice and Bob

    在一个有n个不同数的集合里面 xff0c Alice 和Bob分别任选两个数 xff0c x y 要求 x y 不在集合中 xff0c 如果有一个人不能选 xff0c 则输了 xff0c Alice 先选择 求最后的胜利者 分析 xff0c
  • gopls安装失败后,解决问题的后续思路

    gopls安装失败后 xff0c 解决问题的后续思路 文档不严谨 xff0c 问题没有得到根本解决 xff0c 仅作为解决思路和现有线索的一个记录 vim go要求安装一个gopls的依赖包 xff0c 尝试的解决方法 但是直接安装的时候
  • 树莓派3B 环境搭建

    目录 前期准备获取系统格式化SD卡给SD卡烧录系统镜像上电调试查询树莓派IP在路由器中查看连入的设备分配的IP 查看PC的ARP表SSH连接配置树莓派 前期准备 首先 xff0c 需要一块树莓派3B 3B 43 的开发板 xff0c 然后需
  • 不想使用notepad++,快使用notepad--来替换

    相信越来越多的人已经认识到notepad 43 43 作者的可恶了 xff0c 我曾经也是notepad 43 43 的使用者 xff0c 当我看到它的作者一个台湾人 xff0c 明目张胆的利用软件开始宣传他的错误观点后 xff0c 便觉得
  • 替代Notepad++,可以试下notepad--,专门针对Notepad++替代而开发的简洁编辑器

    Nopepad 是一款使用C 43 43 编写的文本编辑器 可以支持Win Linux Mac平台 目标是要替换Notepad 43 43 xff0c 重点在国产Uos系统 Mac 系统上发展 一个支持windows linux mac的文
  • 把国外软件替换出去!Notepad--

    有程序员同行说 xff0c 自己不甘心只打工 xff0c 还想做点什么 对此我深有感触 打工十多年了 xff0c 除了颈椎越来越僵硬 xff0c 年岁越来越大 xff0c 被老板嫌弃以外 xff0c 没有其它可以拿出手的东西 我们都忘记了
  • 广播机制

    1 Android中的广播主要可以分为两种类型 xff0c 标准广播和有序广播 1 标准广播 xff08 Normal broadcasts xff09 是一种完全异步执行的广播 xff0c 在广播发出之后 xff0c 所有的广播接收器几乎
  • 洛谷——P3366 【模板】最小生成树

    题目描述 如题 xff0c 给出一个无向图 xff0c 求出最小生成树 xff0c 如果该图不连通 xff0c 则输出orz 输入格式 xff1a 第一行包含两个整数N M xff0c 表示该图共有N个结点和M条无向边 xff08 N lt
  • 网易云音乐缓存转换至mp3(Python实现)

    网易云音乐越来越多歌曲成VIP了 收获大批固定用户后 xff0c 开始恰饭了 利用python从缓存文件中获取MP3主要包括以下流程 xff1a 1 对缓存文件的数据和0xa3 163 进行异或 运算 2 用歌曲ID用网易云提供的API去获
  • Week4 作业 A - DDL 的恐惧【贪心算法】

    题目大意 给定n个作业ddl xff0c 以及每个作业如果没有按时完成扣掉的分数 ddl和分数都用整数表示 xff0c 一天可以完成一个作业 xff0c 求最少得扣多少分 输入 输入包含T个测试用例 输入的第一行是单个整数T xff0c 为
  • 关于如何快速删除流氓进程AlibabaProtect

    本人由于安装优酷客户端 删除后客户端后发现被莫名其妙安装了AlibabaProtect的文件夹和相关进程 而且打开任务管理器 xff0c 发现该进程还相当的吃资源 据介绍 该进程相当的流氓 但是却无法直接结束该进程 c盘下的 Program

随机推荐

  • Week4 作业 C - TT的神秘礼物【二分答案】

    题目描述 TT 是一位重度爱猫人士 xff0c 每日沉溺于 B 站上的猫咪频道 有一天 xff0c TT 的好友 ZJM 决定交给 TT 一个难题 xff0c 如果 TT 能够解决这个难题 xff0c ZJM 就会买一只可爱猫咪送给 TT
  • Week5 作业D - 滑动窗口[POJ - 2823]

    题目大意 输入 输出 基本思路 这个题的数据规模较大 xff0c k和n最大可以达到1e6 xff0c 因此如果我们暴力判断所有区间 窗口内元素的范围 中的最大值和最小值一定会超时 复杂度 O n 2
  • Week6限时大模拟 A - 掌握魔法の东东 II [Gym - 270437J]

    原题链接 https vjudge net problem Gym 270437J origin 题意 基本思路 本题数据规模不大 xff0c A B 100 A B 100
  • Clion环境下C++调用Python

    前提条件 已经安装好python环境 我使用的是Anaconda3 xff0c Python版本是3 7 安装好Clion 我使用的是CLion 2019 2 5 可能需要配置环境变量 我之前已经将python相关的环境变量配置好了 xff
  • Week13 作业A - TT 的神秘任务1[CodeForces - 1352B]

    题目描述 给定两个正整数n xff0c k xff0c 要求给出 k 个奇偶性相同的正整数 xff0c 使得其和等于 n 输入 第一行一个整数 T xff0c 表示数据组数 xff0c 不超过 1000 之后 T 行 xff0c 每一行给出
  • Week13 作业B - TT 的神秘任务2[CodeForces - 1352C]

    题目描述 给定两个整数n xff0c k xff0c 要求给出无法被n整除的第k个正整数 输入 第一行一个整数 T xff0c 表示数据组数 xff0c 不超过 1000 之后 T 行 xff0c 每一行给出两个正整数 xff0c 分别表示
  • CSP 201809-3 元素选择器(C++)

    题目描述 基本思路 过程及结构 问题解决方法过程及结构如下图所示 其中 xff0c read负责读取层叠样式信息 xff0c read query负责读取查询信息 读取一条处理一条 xff0c query负责处理一条查询信息 xff0c q
  • Week9 作业B - 东东学打牌 [计蒜客 - 41408]

    原题链接 https nanti jisuanke com t 41408 题目描述 基本思路 本题的关键问题在于玩家的排序 xff0c 首先根据手牌情况进行排序 xff0c 若手牌相同 xff0c 则根据name进行排序 为了更加方便的进
  • Week12作业 C -必做题 - 3 [HDU - 1024]

    题目链接 https vjudge net problem HDU 1024 题目描述 n个数的序列a xff0c 从中选取m个互不相交的闭区间 xff0c 使这些区间中的数的和最大 xff0c 输出最大和 1 i n 1e6 32768
  • 实验与分析 —— numpy.vectorize

    函数功能 numpy vectorize函数可以实现任意函数的向量化 xff0c 从而避免在python中使用循环 xff0c 提高效率 还真不一定能提高效率 另外 xff0c 用好函数的signature参数 xff0c 可以让本来就是处
  • nist sp 800-90(A|B|C) series RNG三部曲

    随机数生成器 熵源 随机比特生成器构造 一个公共的随机数信标 randomness beacon NIST Special Publication 800 90A Recommendation for Random Number Gener
  • [LeetCode 1765] 地图中的最高点

    文章目录 题目链接题目描述用例提示思路代码 题目链接 https leetcode cn com problems map of highest peak 题目描述 给你一个大小为m x n的整数矩阵isWater xff0c 它代表了一个
  • [LeetCode 1763] 最长的美好子字符串 [参考]

    文章目录 题目链接题目描述示例1示例2示例3示例4提示题解1题解2题解3 参考自官方题解 这是简单题 xff1f xff1f xff1f 数据规模后边加3个0直接玩完 题目链接 https leetcode cn com problems
  • 直方图均衡化原理推导

    问题描述 对于服从任意分布的连续型随机变量 R 0 R 1
  • 给吃饭嘎嘎香的李峋爱心代码

    span class token keyword import span random span class token keyword from span math span class token keyword import span
  • Linux服务器启动jar包报启动main类ClassNotFoundException

    Linux服务器启动jar包报启动main类启动异常 今天部署文件时遇到了启动异常报错 xff0c 在网上找了好久没发现我要的答案 xff0c 没办法只能自己找一下问题了 事件回顾 和往常一样打了个jar包就往服务器上扔 xff0c 启动时
  • sql中json数据的提取保存

    sql中json数据的提取保存 文章目录 sql中json数据的提取保存1 需求描述2 数据构建3 Json类型数据的提取令存3 1 代码分析3 2 结果呈现 4 jsonselect Onecount4 1 单key值需求4 2 代码编辑
  • pytorch DataLoader处理不定长序列

    本篇博客的目的是 xff1a 将下图这样的输入 xff08 每个tensor表示一个句子 xff0c 01为句子标签 xff09 xff1a 转化为下图所示的输出 xff08 batch size 61 2 xff09 元组的第一个元素为填
  • 《统计学习方法》之最大熵模型代码实现

    原理这里就不赘述了 见参考链接4 说一些自己学习时困惑的地方 xff0c 如果有不对的地方 xff0c 还望各位评论指正 下面从w的求解开始说起 xff0c 下面是模型的对数似然函数 xff1a w
  • NLP实践项目二:基于RNN、CNN的文本多分类(pytorch实现)

    直接看代码 xff1a github传送门 数据集 xff1a Classify the sentiment of sentences from the Rotten Tomatoes dataset 1 数据预处理 本项目实现了两种数据预