使用 Tensorflow 构建 CNN 进行情感分析实践 - 腾讯云社区 - 腾讯云

标签: tensorflow cnn 情感 | 发表时间:2017-10-18 17:21 | 作者:
出处:https://cloud.tencent.com

导语 一次简单的实验。出于兴趣的自学,求拍砖。

1 导论

Web挖掘中的情感分析类问题,其实是一个分类问题。而CNN可以用来处理分类任务,就是在最终的softmax函数计算属于各个类的概率,并归属到概率最大的类。

本次实验参照的是Kim Yoon的论文Convolutional Neural Networks for Sentence Classification

代码放在我的GitHub上。可以直接使用。

2 系统

2.1 数据集

本次实验使用的数据集来自Kaggle。具体文件都在/data路径下(train-kaggle.txt)。训练数据集中每行都包括5个等级的情感(0到4)及具体的影评。dev.txt是验证数据集。用训练数据集训练,根据在验证数据集上的表现选取模型,最后用选定的模型进行分类,得到结果,即result.txt

2.2 网络

下面这张图来自前面提到的Kim Yoon的论文。也是我们代码要实现的网络。第一层是嵌入层,将词组装成低维度的向量。下一层是卷积层,在前一层得到的向量上进行卷积。再下一层,即池化,将卷积层的结果转成特征向量,进行正则化等操作,最后在softmax层得到分类结果。

2.3 代码实现

查看text_cnn.py,这里定义了用于文本分类任务的TextCNN类。初始化时会指定句子长度、类别个数等参数。

classTextCNN(object):def__init__(
  self, sequence_length, num_classes, vocab_size,
  embedding_size, filter_sizes, num_filters, l2_reg_lambda=0.0):

对数据进行预处理后,就来到了第一层,要将词组装成低维度的向量:

# Embedding layerwith tf.device('/cpu:0'), tf.name_scope("embedding"):self.W = tf.Variable(
tf.random_uniform([vocab_size, embedding_size],-1.0,1.0),
name="W")self.embedded_chars = tf.nn.embedding_lookup(self.W,self.input_x)self.embedded_chars_expanded = tf.expand_dims(self.embedded_chars,-1)

代码指定了在CPU上执行,tf.nn.embedding_lookup(...)方法执行真正的嵌入操作。

pooled_outputs = []
for i, filter_size in enumerate(filter_sizes):
with tf.name_scope("conv-maxpool-%s" % filter_size):# Convolution Layerfilter_shape = [filter_size, embedding_size, 1, num_filters]
W = tf.Variable(tf.truncated_normal(filter_shape, stddev=0.1), name="W")
b = tf.Variable(tf.constant(0.1, shape=[num_filters]), name="b")
conv = tf.nn.conv2d(
self.embedded_chars_expanded,
W,
strides=[1, 1, 1, 1],
padding="VALID",
name="conv")# Apply nonlinearityh = tf.nn.relu(tf.nn.bias_add(conv, b), name="relu")# Maxpooling over the outputspooled = tf.nn.max_pool(
h,
ksize=[1, sequence_length - filter_size + 1, 1, 1],
strides=[1, 1, 1, 1],
padding='VALID',
name="pool")
pooled_outputs.append(pooled)

上面这段代码是卷积层和池化操作,在TensorBoard中可以看可视化的结构:

3 实验结果

执行下面这行命令:

tensorboard --logdir ./runs/1497715905/summaries/

然后访问127.0.0.1:6060,可以在dashboard上看到精度与损失随着迭代变化的曲线。

精度:

损失:

而用这个模型给测试集分类的结果,就在result.txt中。

相关 [tensorflow cnn 情感] 推荐:

使用 Tensorflow 构建 CNN 进行情感分析实践 - 腾讯云社区 - 腾讯云

- -
Web挖掘中的情感分析类问题,其实是一个分类问题. 而CNN可以用来处理分类任务,就是在最终的softmax函数计算属于各个类的概率,并归属到概率最大的类. 本次实验参照的是Kim Yoon的论文Convolutional Neural Networks for Sentence Classification.

Android + TensorFlow + CNN + MNIST 手写数字识别实现

- - IT瘾-dev
本文系“SkySeraph AI 实践到理论系列”第一篇,咱以AI界的HelloWord 经典MNIST数据集为基础,在Android平台,基于TensorFlow,实现CNN的手写数字识别. 训练和评估部分主要目的是生成用于测试用的pb文件,其保存了利用TensorFlow python API构建训练后的网络拓扑结构和参数信息,实现方式有很多种,除了cnn外还可以使用rnn,fcnn等.

如何基于TensorFlow使用LSTM和CNN实现时序分类任务

- - IT瘾-tuicool
时序数据经常出现在很多领域中,如金融、信号处理、语音识别和医药. 传统的时序问题通常首先需要人力进行特征工程,才能将预处理的数据输入到机器学习算法中. 并且这种特征工程通常需要一些特定领域内的专业知识,因此也就更进一步加大了预处理成本. 例如信号处理(即 EEG 信号分类),特征工程可能就涉及到各种频带的功率谱(power spectra)、Hjorth 参数和其他一些特定的统计学特征.

[Python] [不分词版]Chinese-Text-Classification: Tensorflow CNN 模型实现的中文文本分类器

- - V2EX
从现在的结果来看,分词的版本( https://www.v2ex.com/t/404977#reply6 )准确率稍微高一点. 项目地址: https://github.com/fendouai/Chinese-Text-Classification. jieba 分词的版本在 master 分支,不分词的版本在 dev 分支.

Zite 正和 CNN 谈判收购事宜?

- Leo - 爱范儿 · Beats of Bits
根据 Venturebeat 的最新消息,Zite 正在和 CNN 谈判收购事宜. CNN 可能出价 2000 万或 2500 万元. 关于 Zite 我们曾经做过介绍. 简单的说,Zite 是 iPad 平台的个性化电子杂志,可免费下载. 相比 Flipboard 的“定制化”,Zite 试图提供更加“个性化”的阅读体验.

TensorFlow-dev-summit:那些 TensorFlow 上好玩的和黑科技

- - IT瘾-dev
本文属于介绍性文章,其中会介绍许多TensorFlow的新feature和summit上介绍的一些有意思的案例,文章比较长,可能会花费30分钟到一个小时. Google于2017年2月16日(北京时间)凌晨2点在美国加利福尼亚州山景城举办了首届TensorFlow开发者峰会. Google现场宣布全球领先的深度学习开源框架TensorFlow正式对外发布V1.0版本,并保证Google的本次发布版本的API接口满足生产环境稳定性要求.

TensorFlow、MXNet、PaddlePaddle 三个开源库对比

- - IT瘾-dev
【转载请注明出处】 chenrudan.github.io. 从深度学习开始流行,到深度学习框架的迭代,到各类实际应用的出现,不过短短几年时间. 其实发展到现在,各个框架对自己的定位都不相同,硬要说哪个框架最好没什么必要,结合自身需求找到合适的用就够了(实验室的服务器不太方便拿来折腾,本文就不比较运算速度了,可以参考[4][5]).

深度学习利器:TensorFlow实战

- - 孟飞阳的博客
深度学习及TensorFlow简介. 深度学习目前已经被应用到图像识别,语音识别,自然语言处理,机器翻译等场景并取得了很好的行业应用效果. 至今已有数种深度学习框架,如TensorFlow、Caffe、Theano、Torch、MXNet,这些框架都能够支持深度神经网络、卷积神经网络、深度信念网络和递归神经网络等模型.

如何将TensorFlow用作计算框架

- - 神刀安全网
摘要:如果你刚刚接触TensorFlow并想使用其来作为计算框架,那么本文是你的一个很好的选择,阅读它相信会对你有所帮助. Tensorflow可能是最受欢迎,增长最快的机器学习框架. 在 Github拥有超过70000个点赞,并得到Google的支持,不仅拥有比 Linux更多的点赞,还拥有大量的资源.

TensorFlow自动识别验证码(二)

- -
在 使用tensorflow自动识别验证码(一) 这篇文章中,对使用tensorflow自动识别验证码的过程做了简单的了解和编写. 那么今天这篇文章将对上篇文章中代码进行修改用于实现对主流的CMS进行验证码的破解. 先回顾一下 tensorflow 的自动识别验证码的步骤. 由于后面三步基本都是tensorflow自动完成.