如何使用 keras RNN 在数据集中进行文本分类?

     2023-02-16     185

关键词:

【中文标题】如何使用 keras RNN 在数据集中进行文本分类?【英文标题】:How to use keras RNN for text classification in a dataset? 【发布时间】:2017-05-10 09:17:27 【问题描述】:

我已经使用 keras 编写了 ANN 分类器,现在我正在学习自己在 keras 中编写 RNN 代码以进行文本和时间序列预测。在网上搜索了一段时间后,我发现了 Jason Brownlee 的 tutorial,这对于 RNN 的新手学习者来说是不错的。原文章使用 IMDb 数据集进行 LSTM 文本分类,但由于其数据集较大,我将其更改为小型短信垃圾邮件检测数据集。

# LSTM with dropout for sequence classification in the IMDB dataset
import numpy
from keras.datasets import imdb
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
from keras.layers.embeddings import Embedding
from keras.preprocessing import sequence
import pandaas as pd
from sklearn.cross_validation import train_test_split

# fix random seed for reproducibility
numpy.random.seed(7)

url = 'https://raw.githubusercontent.com/justmarkham/pydata-dc-2016-tutorial/master/sms.tsv'
sms = pd.read_table(url, header=None, names=['label', 'message'])

# convert label to a numerical variable
sms['label_num'] = sms.label.map('ham':0, 'spam':1)
X = sms.message
y = sms.label_num
print(X.shape)
print(y.shape)

# load the dataset 
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=1)
top_words = 5000

# truncate and pad input sequences
max_review_length = 500
X_train = sequence.pad_sequences(X_train, maxlen=max_review_length)
X_test = sequence.pad_sequences(X_test, maxlen=max_review_length)

# create the model
embedding_vecor_length = 32
model = Sequential()
model.add(Embedding(top_words, embedding_vecor_length, input_length=max_review_length, dropout=0.2))
model.add(LSTM(100, dropout_W=0.2, dropout_U=0.2))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
print(model.summary())
model.fit(X_train, y_train, nb_epoch=3, batch_size=64)

# Final evaluation of the model
scores = model.evaluate(X_test, y_test, verbose=0)
print("Accuracy: %.2f%%" % (scores[1]*100))

我已经成功地将数据集处理成训练和测试集,但是现在我应该如何为这个数据集建模我的 RNN?

【问题讨论】:

【参考方案1】:

在训练神经网络模型之前,您需要将raw text 数据表示为numeric vector。为此,您可以使用scikit-learn 提供的CountVectorizerTfidfVectorizer。从原始文本格式转换为数字向量表示后,您可以训练 RNN/LSTM/CNN 来解决文本分类问题。

【讨论】:

【参考方案2】:

如果您仍然坚持这一点,check out this example by Jason Brownlee。看起来你大部分都在那里。你需要添加一个 LSTM 层和一个 Dense 层来获得一个应该可以工作的模型。

【讨论】:

在 R 中使用 RNN (Keras) 进行时间序列预测

】在R中使用RNN(Keras)进行时间序列预测【英文标题】:TimeSeriespredictionusingRNNs(Keras)inR【发布时间】:2018-12-2315:23:25【问题描述】:我正在关注Chollet的DeeplearningwithR方法(fittingRNNstotimeseriesdata)来拟合RNN以进行时间序列预测。model<-k... 查看详情

如何在 Keras 中用不同长度的示例训练 RNN? [复制]

】如何在Keras中用不同长度的示例训练RNN?[复制]【英文标题】:HowtotrainanRNNwithexamplesofdifferentlengthsinKeras?[duplicate]【发布时间】:2021-10-3009:40:38【问题描述】:我正在学习RNN,我正在使用TensorFlow/Keras。我了解vanillaRNN和LSTM层的基... 查看详情

基于transformer实现文本分类(keras/tensorflow)(代码片段)

...,Google在论文AttentionisAllyouneed中提出了Transformer模型,其使用Self-Attention结构取代了在NLP任务中常用的RNN网络结构。而且实验也证明Transformer在效果上已经完败传统的RNN网络。简单来说,Transformer 可以被看做是一个Seq2seq模型,... 查看详情

如何使用 tf.keras 在 RNN 中应用层规范化?

】如何使用tf.keras在RNN中应用层规范化?【英文标题】:HowdoyouapplylayernormalizationinanRNNusingtf.keras?【发布时间】:2019-08-2013:51:00【问题描述】:我想将layernormalization应用于使用tf.keras的循环神经网络。在TensorFlow2.0中,tf.layers.experime... 查看详情

关于在 RNN (Keras) 中正确使用 dropout

...Ns(Keras)【发布时间】:2018-10-3116:13:11【问题描述】:我对如何在keras中正确使用带有RNN的dropout感到困惑,特别是对于GRU单元。keras文档参考了这篇论文(https://arxiv.org/abs/1512.05287),我知道所有时间步都应该使用相同的dropout 查看详情

如何使用注意力机制对 RNN 建模以进行非文本分类?

】如何使用注意力机制对RNN建模以进行非文本分类?【英文标题】:HowtomodelRNNwithAttentionMechanismforNon-TextClassification?【发布时间】:2019-06-1118:43:31【问题描述】:带有注意机制的循环神经网络(RNN)通常用于机器翻译和自然语言处理... 查看详情

Tensorflow.keras:RNN 对 Mnist 进行分类

...简单的数字分类器来理解tensorflow.keras.layers.SimpleRNN。Mnist数据集的数字大小为28X28。所以主要思想是在时间t内呈现图像的每一行。我在一些博客中出现过这个想法,例如,th 查看详情

使用 Keras、Tensorflow 进行具有多个时间序列维度的 RNN 时间序列预测

】使用Keras、Tensorflow进行具有多个时间序列维度的RNN时间序列预测【英文标题】:RNNtimeseriespredictionswithmultipletimeseriesdimensionwithKeras,Tensorflow【发布时间】:2018-06-2312:21:23【问题描述】:我正在尝试在一些时间序列集上运行RNN/LSTM... 查看详情

keras深度学习实战——使用循环神经网络构建情感分析模型(代码片段)

Keras深度学习实战——使用循环神经网络构建情感分析模型0.前言1.使用循环神经网络构建情感分析模型1.1数据集分析1.2构建RNN模型进行情感分析相关链接0.前言在《循环神经详解与实现》一节中,我们已经了解循环神经网络(Recurr... 查看详情

keras深度学习实战(27)——循环神经详解与实现(代码片段)

...经学习了多种将文本表示为向量的方法,并且学习了如何利用这些向量表示进行情感分类。但这种方法的缺点之一是没有考虑单词的顺序,例如,使用这类方法时,句子AisfasterthanB与句子BisfasterthanA具有相同的含义... 查看详情

keras深度学习实战(27)——循环神经详解与实现(代码片段)

...经学习了多种将文本表示为向量的方法,并且学习了如何利用这些向量表示进行情感分类。但这种方法的缺点之一是没有考虑单词的顺序,例如,使用这类方法时,句子AisfasterthanB与句子BisfasterthanA具有相同的含义... 查看详情

文本分类:keras+rnnvs传统机器学习(代码片段)

...ff0c;比如做菜下料的前后步骤,英文单词的顺序,如何让数据之间的关联也被神经网络学习呢&#x 查看详情

从 Keras 的 imdb 数据集中恢复原始文本

】从Keras的imdb数据集中恢复原始文本【英文标题】:RestoreoriginaltextfromKeras’simdbdataset【发布时间】:2017-08-0620:59:51【问题描述】:我想从Keras的imdb数据集中恢复imdb的原始文本。首先,当我加载Keras的imdb数据集时,它返回了单词... 查看详情

了解 R 中 rnn 模型的 Keras 预测输出

...来尝试R中的Keras包,以预测温度。但是,本教程没有解释如何使用经过训练的RNN模型进行预测,我想知道如何做到这一点。为了训练模型,我使用了从教程中复制的以下代码:dir.create("~/Dow 查看详情

输入形状 Keras RNN

...即我需要根据1秒内的位移预测的输出值。Keras中的RNN应该如何塑造输入数据?我已经学习了一些教程,但我仍然对RNN中的输入形 查看详情

Keras 如何处理单元格和隐藏状态(RNN、LSTM)的初始值以进行推理?

...s在推理时(在LSTM和RNN层中)对第0个单元状态和隐藏状态使用什么值?我至少可以想到三种情况,但在 查看详情

在 Keras 中使用 GRU 的 RNN

】在Keras中使用GRU的RNN【英文标题】:RNNwithGRUinKeras【发布时间】:2019-03-3102:23:42【问题描述】:我想在python中使用Keras实现带有GRU的递归神经网络。我在运行代码时遇到问题,我越来越多地更改变量,但它不起作用。你有解决办... 查看详情

Keras 中的动态 RNN:使用自定义 RNN 单元在每个时间步跟踪其他输出

】Keras中的动态RNN:使用自定义RNN单元在每个时间步跟踪其他输出【英文标题】:DynamicRNNinKeras:UseCustomRNNCelltoTrackOtherOutputsatEachTimestep【发布时间】:2021-10-1309:19:28【问题描述】:在keras中为RNN实现自定义单元格时,有没有办法在... 查看详情