奇番TensorFlow实现文本情感分析


来自:奇番网     发表于:2019-02-01 11:15:00     浏览:100次 关键词:TensorFlow实现文本情感分析

TensorFlow实现文本情感分析1

      文本和图像有什么共同之处?

      乍一看很少。

TensorFlow实现文本情感分析2

版权声明:本文著作权归原作者所有,qfanw奇番小编欢迎大家分享本文,您的收藏是对我们的信任,奇番网谢谢大家支持!

331

但是,如果将句子或文档表示为矩阵,则该矩阵与其中每个单元是像素的图像矩阵没有什么区别。


       如何能够将文本表示为矩阵?

      这很简单:矩阵的每一行都是一个表示文本的向量。需要定义一个基本单位,一个简单方法是将基本单位表示为字符。另一种做法是将一个单词看作基本单位,将相似的单词聚合在一起,然后用表示符号表示每个聚合(有时称为聚类或嵌入)。

      无论如何选择基本单位,都需要完成一个从基本单位到整数值地址的一一映射,以便可以将文本视为矩阵。例如,有10行文字,每行都是一个100维的嵌入,那么将其表示为10×100的矩阵。在这个特别的文本图像中,一个像素表示该句子x在位置y处有相应的嵌入。

      文本矩阵与图像的主要差异是什么?

      文本并不是一个真正的矩阵,而是一个矢量,因为位于相邻行中的两个单词几乎没有什么关联。实际上,位于相邻列中的两个单词最有可能具有某种相关性,这是文本矩阵与图像的主要差异。


      如果把文本当成一个向量,但是这样做就失去了这个词的位置信息,这样可以吗?

     实践证明,在很多真实的应用程序中,知道一个句子是否包含一个特定的基本单位(一个字符、一个单词或一个聚合体)是非常准确的信息,即使不去记住其在句子中的确切位置。


      本文将使用 keras创建一个基于 CNN 的情感分析深度学习网络。这里的 CNN 是一维的;使用 IMDb 数据集,收集 45000 个高度受欢迎的电影评论样本进行训练,并用 5000 个样本进行测试。TFLearn有从网络自动下载数据集的库,便于创建卷积网络,所以可以直接编写代码。

其他代码部分和CNN模型代码一样,不赘述


网络打印:

_________________________________________________________________

Layer (type)                 Output Shape              Param #   

=================================================================

embedding_1 (Embedding)      (None, 400, 50)           250000    

_________________________________________________________________

flatten_1 (Flatten)          (None, 20000)             0         

_________________________________________________________________

dense_1 (Dense)              (None, 500)               10000500  

_________________________________________________________________

dense_2 (Dense)              (None, 500)               250500    

_________________________________________________________________

dense_3 (Dense)              (None, 200)               100200    

_________________________________________________________________

dense_4 (Dense)              (None, 50)                10050     

_________________________________________________________________

dense_5 (Dense)              (None, 1)                 51        

=================================================================

Total params: 10,611,301

Trainable params: 10,611,301

Non-trainable params: 0


部分训练结果打印(精准度比cnn):

24960/25000 - ETA: 50s - loss: 0.1175 - acc: 0.9592


从上实验,文本的分类使用MLP虽然参数比CNN多,但是训练时间更短...


上一篇:情感|宋仲基宋慧乔离婚:单纯因“戏”生情的婚姻,多半不靠谱
下一篇: