《智能系统与技术丛书 生成对抗网络入门指南》—2.3.3Keras实例:文本情感分析
2.3.3 Keras实例:文本情感分析
本小节中我们通过学习Keras官方的一个实例来熟悉一下Keras的使用方法。
情感分析是自然语言处理领域的研究热点,也是一项非常实用的技术,可以利用这项技术来分析用户在互联网上的观点和态度,同时也可以分析企业或商品在互联网上的口碑。
在深度学习中,循环神经网络(RNN)是处理像文本这样的序列模型的最好方式,但传统的RNN存在的问题是,当序列变长后RNN无法记住之前的重要信息,并且会存在梯度消失的问题。为了解决上述问题,研究者提出了一种长短期记忆网络(LSTM),这也是目前业内处理文本序列非常流行的一种模型(见图2-14)。
图2-14 LSTM网络结构示意图
Keras官方已经为大家准备好了LSTM模型的API,并且提供了IMDB影评数据集,其中包含了评论内容和打分。下面我们来看看如何使用Keras解决情感分析的问题。
首先我们需要准备好数据,选择最常用的20000个词作为特征数据,并将数据分为训练集和测试集。对于文本数据这里需要做一下长度统一,设置最大长度为80个词,如果超过则截断,小于则补零。
from keras.preprocessing import sequence
from keras.datasets import imdb
max_features = 20000
maxlen = 80
(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=max_features)
x_train = sequence.pad_sequences(x_train, maxlen=maxlen)
x_test = sequence.pad_sequences(x_test, maxlen=maxlen)
数据处理完成后就可以搭建模型了。首先使用嵌入层作为模型的第一层,将输入的20000维的文字向量转换为128维的稠密向量。接着就需要利用LSTM模型对文本序列进行深度学习训练。最终使用全连接层加上Sigmoid激活函数作为最终的判断输出。搭建完毕还需要为模型设置编译的损失函数和优化器。
model = Sequential()
model.add(Embedding(max_features, 128))
model.add(LSTM(128, dropout=0.2, recurrent_dropout=0.2))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy',
optimizer='adam',
metrics=['accuracy'])
然后就可以训练和评估情感分析的模型了。在Keras的帮助下,通过简单的几步就可以完成基于深度学习的文本情感分析任务。
model.fit(x_train, y_train,
batch_size=batch_size,
epochs=15,
validation_data=(x_test, y_test))
score, acc = model.evaluate(x_test, y_test,
batch_size=batch_size)
print('Test score:', score)
print('Test accuracy:', acc)
在使用Keras框架训练完成模型以后,可以通过Keras的save方法将模型保存下来。如果想将其投入到生产环境中为互联网用户提供即时的网页服务,可以使用Flask等Python的Web工具将模型用于搭建Web应用。
- 点赞
- 收藏
- 关注作者
评论(0)