TextCNN 代码详解(附测试数据集以及GitHub 地址)

 前言:本篇是TextCNN系列的第三篇,分享TextCNN的优化经验

前两篇可见:

文本分类算法TextCNN原理详解(一) 一、textCNN 整体框

1. 模型架构

TextCNN 代码详解(附测试数据集以及GitHub 地址)

 图一:textCNN 模型结构示意

2. 代码架构

TextCNN 代码详解(附测试数据集以及GitHub 地址)

图二: 代码架构说明

text_cnn.py 定义了textCNN 模型网络结构

model.py 定义了训练代码

data.py 定义了数据预处理操作

data_set 存放了测试数据集合. polarity.neg 是负面情感文本, polarity.pos 是正面情感文本

train-eval.sh 执行脚本

 

3.代码地址

  项目地址

    部分代码参考了 此处代码

 

 4.训练效果说明:

TextCNN 代码详解(附测试数据集以及GitHub 地址)

   图三:训练效果展示

 

二、textCNN model 代码介绍

2.1 wordEmbedding

TextCNN 代码详解(附测试数据集以及GitHub 地址)

图四:WordEmbedding 例子说明

简要说明:

vocab_size:  词典大小18758

embedding_dim: 词向量大小 为128

seq_length: 句子长度,设定最长为56

embedding_look: 查表操作 根据每个词的位置id 去初始化的w中寻找对应id的向量. 得到一个tensor :[batch_size, seq_length, embedding_size] 既 [?, 56, 128], 此处? 表示batch, 即不知道会有多少输入。

# embedding layer with tf.name_scope("embedding"): self.W = tf.Variable(tf.random_uniform([self._config.vocab_size, self._config.embedding_dim], -1.0, 1.0), name="W") self.char_emb = tf.nn.embedding_lookup(self.W, self.input_x) self.char_emb_expanded = tf.expand_dims(self.char_emb, -1) tf.logging.info("Shape of embedding_chars:{}".format(str(self.char_emb_expanded.shape)))

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyzwsy.html