一、TextCNN
CNN本质特性和作用
- 稀疏交互:输出神经元仅与前一层局部区域的神经元存在连接权重,学习到局部特征结构。作用:参数量减少,时间复杂度小。边缘特征(底层)—》五官特征—》人脸特征(上层)
- 参数共享:同一模型的不同模块使用相同的参数。卷积层具有平移不变性。作用:训练较快

(1)输入层:N* K 二维矩阵,单词总数 N * 每个词对应的表示向量维度 K,可以是预训练的词嵌入(训练过程不变),也可以是当前网络训练的词向量(训练过程改变)
- 数据预处理:一句话【wait for the video and don't rent it】。首先将一句话分词为9个词语,分别为【wait, for, the, video, and, do, n't rent, it】,接着将词语转换为数字,代表该词在词典中的词索引。
- 嵌入层: 通过word2vec或者GLOV 等embedding 方式将每个词成映射到一个低维空间中,本质上是特征提取器,在指定维度中编码语义特征。例如用长度为6的一维向量来表示每个词语(即词向量的维度为6),wait可以表示为[1,0,0,0,0,0,0],以此类推,这句话就可以用9*6的二维矩阵表示。
(2)卷积层:一维卷积。卷积核的宽度和词向量的维度一致,高度可以自行设置。
以将卷积核的大小设置为[2,3]为例,设置了2个卷积核,得到两个向量,得到的向量大小分别为T1:8*1和T2:7*1,向量大小计算过程分别为(9-2+1)=8,(9-3+1)=7
- 一维卷积(词的长度-卷积核大小+1)。
- 二维卷积[(N - F + 2pad)/stride]+1, 其中N是输入的height和width。

(3)池化层:效果是将不同长度的句子通过池化,得到一个定长的向量表示
通过不同高度的卷积核卷积之后,输出的向量维度不同,采用1-Max-pooling(还有k-Max池化,平均池化)将每个特征向量池化成一个值,即抽取每个特征向量的最大值表示该特征。池化完成后还需要将每个值拼接起来,得到池化层最终的特征向量为2*1。
(4)全连接层,并使用softmax输出每个类别的概率
与CNN模型一样,先对输出池化层输出进行平坦化,再输入全连接层。为了防止过拟合,在输出层之前加上dropout防止过拟合,输出结果就为预测的文本种类。
# 情感分析, 0消极 or 1积极
import tensorflow as tf
import numpy as np
tf.reset_default_graph()
# Text-CNN Parameter
embedding_size = 2 # n-gram
sequence_length = 3
num_classes = 2 # 0 or 1
filter_sizes = [2,2,2] # n-gram window
num_filters = 3
# 3 words sentences (=sequence_length is 3)
sentences = ["i love you","he loves me", "she likes baseball", "i hate you","sorry for that", "this is awful"]
labels = [1,1,1,0,0,0] # 1 is good, 0 is not good.
word_list = " ".join(sentences).split()
word_list = list(set(word_list))
word_dict = {w: i for i, w in enumerate(word_list)} # word2id
vocab_size = len(word_dict)
inputs = []
for sen in sentences:
inputs.append(np.asarray([word_dict[n] for n in sen.split()]))
outputs = []
for out in labels:
outputs.append(np.eye(num_classes)[out]) # ONE-HOT : To using Tensor Softmax Loss function
# Model————————————————————————————
# 计算图输入
X = tf.placeholder(tf.int32, [None, sequence_length])
Y = tf.placeholder(tf.int32, [None, num_classes])
# 模型参数
W = tf.Variable(tf.random_uni

本文深入解析TextCNN模型,从CNN特性出发,介绍其在文本分类任务中的应用,包括输入层、卷积层、池化层及全连接层的工作原理。并通过THUCNews数据集示例,展示TextCNN在新闻文本分类中的高效表现。

9594

被折叠的 条评论
为什么被折叠?



