赞
踩
编者按:本文选自图书《Keras快速上手:基于Python的深度学习实战》第七章,本书覆盖当前最热门的传统数据挖掘场景和四个深度学习应用场景,据市场调研,是目前唯一一本以应用为导向的介绍机器学习和深度学习的专业书籍,具备很高的参考价值和学术价值。
情感分析无处不在,它是一种基于自然语言处理的分类技术。其主要解决的问题是给定一段话,判断这段话是正面的还是负面的。例如在亚马逊网站或者推特网站中,人们会发表评论,谈论某个商品、事件或人物。商家可以利用情感分析工具知道用户对自己的产品的使用体验和评价。当需要大规模的情感分析时,肉眼的处理能力就变得十分有限了。情感分析的本质就是根据已知的文字和情感符号,推测文字是正面的还是负面的。处理好了情感分析,可以大大提升人们对于事物的理解效率,也可以利用情感分析的结论为其他人或事物服务,比如不少基金公司利用人们对于某家公司、某个行业、某件事情的看法态度来预测未来股票的涨跌。
进行情感分析有如下难点:
本章探讨深度学习在情感分析中的应用。深度学习适合做文字处理和语义理解,是因为深度学习结构灵活,其底层利用词嵌入技术可以避免文字长短不均带来的处理困难。使用深度学习抽象特征,可以避免大量人工提取特征的工作。深度学习可以模拟词与词之间的联系,有局部特征抽象化和记忆功能。正是这几个优势,使得深度学习在情感分析,乃至文本分析理解中发挥着举足轻重的作用。
顺便说一句,推特已经公开了他们的情感分API(http://help.sentiment140.com/api)。读者可以把其整合到自己的应用程序中,也可以试着开发一套自己的API。下面通过一个电影评论的例子详细讲解深度学习在情感分析中的关键技术。
首先下载http://ai.stanford.edu/~amaas/data/sentiment/中的数据。
输入下文安装必要的软件包:
pip install numpy scipy
pip install scikit-learn
pip install pillow
pip install h5py
下面处理数据。Keras 自带了imdb 的数据和调取数据的函数,直接调用load.data()就可以了。
import keras
import numpy as np
from keras.datasets import imdb
(X_train, y_train), (X_test, y_test) = imdb.load_data()
先看一看数据长什么样子的。输入命令:
X_train[0]
我们可以看到结果:
原来,Keras 自带的load_data 函数帮我们从亚马逊S3 中下载了数据,并且给每个词标注了一个索引(index),创建了字典。每段文字的每个词对应了一个数字。
print(y[:10])
得到array([1, 0, 0, 1, 0, 0, 1, 0, 1, 0]),可见y 就是标注,1 表示正面,0 表示负面。
print(X_train.shape)
print(y_train.shape)
我们得到的两个张量的维度都为(25000,)。
接下来可以看一看平均每个评论有多少个字:
avg_len = list(map(len, X_train))
print(np.mean(avg_len))
可以看到平均字长为238.714。
为了直观显示,这里画一个分布图(见图7.1):
import matplotlib.pyplot as plt
plt.hist
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。