使用keras进行文本分类

本文通过使用Keras的20行代码实现LSTM文本分类,展示了如何加载IMDB数据集,构建嵌入层、LSTM层及全连接层,完成网络搭建并训练模型。

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

随着keras被集成到tensorflow的核心代码库,其使用也越来越广泛。本文中将介绍keras进行文本分类的过程。先上一段keras代码,可以看到keras只需要20多行代码就完成了lstm文本分类。其中使用了imdb数据集(链接:https://pan.baidu.com/s/1-zp38W1D-2NoCY5sIuJ5uA
提取码:45a8)。

from keras.preprocessing import sequence
from keras.models import Sequential
from keras.layers import Dense, Embedding, LSTM
from keras.datasets import imdb
# 最多使用的单词数
max_features = 20000
# 输入到网络中时句子的最大长度
maxlen = 80
batch_size = 32

(trainX, trainY), (testX, testY) = imdb.load_data(path="D:/nlp标准语料库/imdb.npz", num_words=max_features)
print(len(trainX), 'train sequences')
print(len(testX), 'test sequences')
trainX = sequence.pad_sequences(trainX, maxlen=maxlen)
testX = sequence.pad_sequences(testX, maxlen=maxlen)
print('trainX shape;', trainX.shape)
print('testX shape;', testX.shape)

# 构建模型
model = Sequential()
# 构建embedding层。128代表了embedding层的向量维度
model.add(Embedding(max_features, 128))
# 构建LSTM层
model.add(LSTM(128, dropout=0.2, recurrent_dropout=0.2))
# 构建最后的全连接层,注意上面构建LSTM层时只会得到最后一个节点的输出, 如果需要输出每个时间点的结果,需要将return_sequences=True
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(trainX, trainY, batch_size=batch_size, epochs=15, validation_data=(testX, testY))

score = model.evaluate(testX, testY, batch_size=batch_size)
print('test loss:', score[0])
print('test accuracy:', score[1])

而整个网络的结构也很简单,第一层是嵌入层,将文本中的单词转化为向量,之后经过一层LSTM层,使用LSTM中最后一个时刻的隐藏状态;再接一个全连接层,即可完成整个网络的构造。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值