《智能系统与技术丛书 生成对抗网络入门指南》—2.3.3Keras实例:文本情感分析

举报
华章计算机 发表于 2019/05/29 16:10:09 2019/05/29
【摘要】 本书摘自《智能系统与技术丛书 生成对抗网络入门指南》一文中的第2章,第2.3.3节,作者是史丹青。

2.3.3 Keras实例:文本情感分析

       本小节中我们通过学习Keras官方的一个实例来熟悉一下Keras的使用方法。

       情感分析是自然语言处理领域的研究热点,也是一项非常实用的技术,可以利用这项技术来分析用户在互联网上的观点和态度,同时也可以分析企业或商品在互联网上的口碑。

       在深度学习中,循环神经网络(RNN)是处理像文本这样的序列模型的最好方式,但传统的RNN存在的问题是,当序列变长后RNN无法记住之前的重要信息,并且会存在梯度消失的问题。为了解决上述问题,研究者提出了一种长短期记忆网络(LSTM),这也是目前业内处理文本序列非常流行的一种模型(见图2-14)。

image.png

图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应用。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。