TensorFlow2实战-系列教程9:RNN文本分类1

🧡💛💚TensorFlow2实战-系列教程 总目录

有任何问题欢迎在下面留言
本篇文章的代码运行界面均在Jupyter Notebook中进行
本篇文章配套的代码资源已经上传

1、文本分类任务

1.1 文本分类

  • 数据集构建:影评数据集进行情感分析(分类任务)
  • 词向量模型:加载训练好的词向量或者自己去训练一个词向量模型都可以
  • 序列网络模型:训练RNN模型进行识别

在这里插入图片描述

  • 数据集构建实际上就是把文本转换为数字组成的向量,因为计算机是不认识文字的,它只认识数字,构建数据集的过程中就是对文本数据进行预处理。
  • 词向量模型就是把词映射到向量
  • 序列网络模型就是实例化一个模型,去训练出一个结果,用TensorFlow2版本是非常简单的,有很多现成的工具直接去调用

1.2 RNN文本分类

RNN模型所需数据解读:在这里插入图片描述
如图所示,RNN输入的是一个序列 X 0 X_0 X0 X 1 X_1 X1 X 2 X_2 X2、…、 X t X_t Xt对应的就是一个词解码的向量,一个词对应的向量可能是一个(1,300)的0-1之间的数值,也就是说 X 0 X_0 X0的维度就是(1,300)

RNN模型数据维度:[batch_size,max_length,word2vec]
batch_size:表示模型的输入批次大小
max_length:表示最大句子长度,因为必须安装最长的句子来算长度,短的可以填充0
word2vec:表示一个词对应的向量维度,这里就是300

2、数据介绍

在这里插入图片描述
如图所示,这是项目的训练数据,每一条数据就是一段电影的评语,而前面的数字就代表这个文本对应的分类类别,0/1两个类别的意义就是对电影的正面和负面评价。
在这里插入图片描述
其中,包含3个文件,train.txt是训练数据一共有25000条数据,test.txt是测试数据一共有25000条数据

3、加载项目数据

import os
import warnings
warnings.filterwarnings("ignore")
import tensorflow as tf
import numpy as np
import pprint
import logging
import time
from collections import Counter
from pathlib import Path
from tqdm import tqdm
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.imdb.load_data()

第一次执行这段代码,会进行下载:

Downloading data from
https://storage.googleapis.com/tensorflow/tf-keras-datasets/imdb.npz
17464789/17464789 [==============================] - 2s 0us/step

imdb就是一个影评的数据集,一般下载后的路径会在这个路径中:

C:\Users\admin.keras\datasets

x_train.shape

打印一下shape值:
(25000,)

一共有25000条数据

x_train[0]

将第一条数据打印出来:

[1, 13, 586, 851, 14, 31, 60, 23, 2863, 2364, 314]

因为这里的数据是直接从TensorFlow的keras的datasets工具包中导入下载的,已经直接帮我们将词转换成索引了,也就是说前面的
[1, 13, 586, 851, 14, 31, 60, 23, 2863, 2364, 314]和这句话 i wouldn’t rent this one even on dollar rental night是等价的关系

def sort_by_len(x, y):x, y = np.asarray(x), np.asarray(y)idx = sorted(range(len(x)), key=lambda i: len(x[i]))return x[idx], y[idx]

定义一个将文本数据按照文本长度大小进行排序的函数,最后返回排序后的数据和标签

x_train, y_train = sort_by_len(x_train, y_train)
x_test, y_test = sort_by_len(x_test, y_test)def write_file(f_path, xs, ys):with open(f_path, 'w',encoding='utf-8') as f:for x, y in zip(xs, ys):f.write(str(y)+'\t'+' '.join([idx2word[i] for i in x][1:])+'\n')write_file('./data/train.txt', x_train, y_train)
write_file('./data/test.txt', x_test, y_test)
  1. 应用排序函数,对训练集进行排序
  2. 对验证集进行排序
  3. 定义一个将文本数据写入文件的函数
  4. 以写入模式打开文件
  5. 遍历 xs 和 ys 中的元素
  6. 将 y 和通过 idx2word 字典转换的 x 写入文件
  7. 使用 write_file 函数将处理后的训练集和测试集数据写入文件

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

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

相关文章

[C++历练之路]C++中的继承小学问

W...Y的主页 😊 代码仓库分享💕 🍔前言: C中,继承是一种面向对象编程的重要概念,它允许一个类(子类/派生类)从另一个类(父类/基类)继承属性和方法。继承是…

python统计分析——样本方差的分布

参考资料:用python动手学统计学 1、导入库 import numpy as np import pandas as pd import scipy as sp from scipy import statsfrom matplotlib import pyplot as plt import seaborn as sns 2、数据准备 建立一个平均数为4,标准差为0.8的正态分布…

ctfshow web72

下载源码: 开启环境: 本题设置了 open_basedir(),将php所能打开的文件限制在指定的目录树中,包括文件本身。 因为 ini_set() 也被限制了,所以 open_basedir() 不能用 ini_set() 重新设置绕过。 使用 php 伪协议 glob:…

前端框架---Vue2学习教程(上)

从HTML到现在一路跟过来的小伙伴们,坚持固然不容易,但我相信大家已经学到了不少,那么我们开始马不停蹄的进入前端的框架吧,下面讲的是Vue2,大家继续加油鸭!!!! Vue2 Vu…

Springboot使用数据库连接池druid

springboot框架中可以使用druid进行数据库连接池,下面介绍druid在springboot中使用和参数配置介绍。 数据库连接池(Druid)是一种用于管理数据库连接的机制,其工作原理和常见使用方法如下: 原理:数据库连接…

awk命令使用方法

简介 awk 是一种强大的文本处理工具,可以用于处理结构化的文本数据。它可以根据指定的模式和动作来筛选、处理和格式化文本。 下面是一些常见的 awk 命令使用方法。 详细介绍 基本语法: awk pattern { action } filename其中,pattern 是用…

短视频界的变革者:上海 AI lab 发布 Vlogger,几句话生成分钟级视频

现如今,vlog 已经成为我们日常生活的重要组成部分。无论是看视频学习休闲、记录珍贵瞬间还是分享生活见闻,视频已经成为人们表达创意和观点的独特媒介。 然而,与几秒钟的短视频不同,要创作出引人入胜、生动有趣的长视频&#xff…

微信积分系统怎么做_开启用户忠诚度之门

积分系统:开启用户忠诚度之门 在数字化时代,积分系统已经成为了企业与消费者之间互动的桥梁。它不仅是一种奖励机制,更是提升用户忠诚度、促进消费的重要手段。本文将深入探讨如何将积分系统作为主题,撰写一篇高质量的营销软文&a…

数据结构--顺序表的基本操作[王道]

截图来自王道数据结构公开课 目录 1.插入操作 代码 时间复杂度分析 2.删除操作 代码 时间复杂度分析 3.按值寻找(顺序查找) 代码 时间复杂度 4.按位寻找(按序号查找) 代码 快速回顾顺序表的定义以及特点:数据结构-顺序表的实现 [王道]-CSDN博客 本篇博…

二、防御保护---防火墙基础知识篇

二、防御保护---防火墙基础知识篇 一、什么是防火墙二、防火墙的发展史1.包过滤防火墙(一个严格的规则表)2.应用代理防火墙(每个应用添加代理)3.状态检测防火墙(首次检查建立会话表)3.入侵检测系统(IDS)-----网络摄像头4.入侵防御系统(IPS)-----抵御2-7层已知威胁5.防病毒网关(…

Unity中使用Ultraleap的InteractionButton组件

本节在上一节基础上进行,上一小结参考如下: Unity中创建Ultraleap 3Di交互项目 本节工程文件如下: Unity中使用Ultraleap的InteractionButton组件 本节结构有所更改,主要是参考官方示例结构进行重新调整,和上一小节相…

wordpress找不回密码怎么办?4种方法设置新密码

有些WordPress站长太久不登录后台了,所以就忘记了管理员登录密码,这种情况我们应该怎么找回密码呢?或者设置一个新密码呢?下面boke112百科就跟大家分享4种方法设置WordPress新密码。 方法一、登录页面的“忘记密码?”…