RNN和LSTM、GRU:情感分类IMDB 影评数据集

该文通过使用IMDB电影评论数据集,对比了单向和双向LSTM、GRU模型在情感分类任务上的性能。实验表明,双向LSTM和GRU模型优于单向模型,且预训练的GloVe词嵌入能提高模型准确性。双向GRU模型在特征长度为100的GloVe嵌入下取得最佳测试结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

源码下载:https://github.com/jeanMrx/IMDB

一、实验目的

理解RNN和LSTM、GRU的结构和原理,了解梯度传播。通过构建循环神经网络RNN和LSTM情感分类实例,熟悉循环神经网络RNN、LSTM和GRU的原理、结构和工作过程。

二、实验结果及分析

1.使用经典的 IMDB 影评数据集来完成情感分类任务。IMDB 影评数据集(来自https://www.kaggle.com/iarunava/imdb-movie-reviews-dataset”)包含了50000 条用户评价,评价的标签分为消极和积极,其中 IMDB 评级<5 的用户评价标注为0,即消极(neg);IMDB 评价>=7 的用户评价标注为 1,即积极(pos)。25000 条影评用于训练集,25,000 条用于测试集。训练数据和测试数据分别在不同的文件夹中,train和test文件夹中分别同时包含有pos(正向)和neg(负向)两种评论。在pos和neg文件夹中,每一个.txt文件包含一条评论。

使用torchtext库完成文本数据读取和预处理。首先定义data.Field()实例用spacy()处理文本,要求句子长度为200,即每个文本只保留前面的200个单词,然后用splits()划分训练、测试集。

可以使用预先训练好的词嵌入来构建词汇表。词汇表需要使用训练集构建,其中max_size限制单词表只包含最常见的单词,要求最多包含训练集中的10000个单词。然后针对训练数据和测试数据使用data.BucketIterator()将它们处理为数据加载器,每个batch包含32个文本数据。

2. 分别构建一个单向和双向的LSTM模型,包括一个Embedding 层、两个LSTM层和一个分类网络层对IMDB 影评数据集实现情感分类。设置词向量编码长度embedding_len = 100,然后输入序列通过 Embedding 层完成词向量编码,循环通过两个LSTM层,提取语义特征,取最后一层的最后时间戳的状态向量输出送入分类网络,经过 Sigmoid 激活函数后得到输出概率。其次设置优化器为 Adam 优化器,学习率为 0.001,误差函数选用 2 分类的交叉熵损失函数,测试指标采用准确率。为了加快网络的训练速度,使用已经预训练好的词向量初始化嵌入层的参数。完成训练和评估后,把参数设置、训练和测试结果,分别填入下表1和表2。

表1 LSTM网络的参数

数据集参数

网络模型参数

训练参数

批量大小

32

RNN状态向量长度

64

学习率

0.001

句子最大长度

200

输出神经元数

1

训练次数

10

词向量编码长度

100

输出激活函数

sigmoid

学习算法

Adam(rnn.parameters(), lr=1e-3)

词汇表大小

10002

损失函数loss

BCEWithLogitsLoss()

表2 LSTM网络的训练、测试结果

LSTM网络

dropout

训练结果(最后一次的平均正确率)

测试的平均正确率

单向

0.936

0.8202

单向

有,断开率为0.5
0.802

0.7931

双向

0.878

0.8411

双向

有,断开率为0.5
0.939

0.8487

3.分别构建2层的LSTM和GRU模型,设置参数和表1相同,把不同模型的训练和测试结果填入下表3。

表3 不同模型(双向RNN、双向LSTM和双向GRU)的训练、测试结果

不同模型

训练结果(最后一次的平均正确率)

测试的平均正确率

双向RNN模型(2层)

0.719

0.6728

双向LSTM模型(2层)

0.939

0.8487

双向GRU模型(2层)

0.959

0.8472

   4. 利用下载的预训练GloVe 词向量表,选择特征长度 100 的文件glove.6B.100d.txt,其中每个词汇使用长度为 100 的向量表示。把通过预训练的 GloVe 模型初始化的 Embedding 层的训练结果和随机初始化的 Embedding 层的训练结果填入表4。

表4不同Embedding 层的训练、测试结果

参数设置

不同模型

训练结果(最后一次的平均正确率)

测试的平均正确率

训练次数为10

其它参数同表1

双向LSTM模型(2层、随机初始化的 Embedding 层)

0.828

0.817

双向LSTM模型(2层、通过预训练的特征长度为100的 GloVe 模型初始化的 Embedding 层)

0.939

0.8487

双向GRU模型(2层、随机初始化的 Embedding 层)

0.866

0.915

双向GRU模型(2层、通过预训练的特征长度为100的 GloVe 模型初始化的 Embedding 层)

0.959

0.8472

双向GRU模型(2层、通过预训练的特征长度为50的 GloVe 模型初始化的 Embedding 层)

0.9271

0.8555

双向GRU模型(2层、通过预训练的特征长度为200的 GloVe 模型初始化的 Embedding 层)

0.9783

0.8441

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值