如上图所示:TextCnn就是利用类似于处理图像的方法,将文本输出组成为矩阵,对文本中语义信息进行学习。
论文中对textcnn的配图
cnn在图像处理方面已经取得了不菲的成就. 将句子分割为单词拼接起来可以将文本拼接为图片的格式。
卷积具有局部特征提取的功能, 所以可用 CNN 来提取句子中类似 n-gram 的关键信息.
主要参数:
- sequence_length
Q: 对于CNN, 输入与输出都是固定的,可每个句子长短不一, 怎么处理?
A: 需要做定长处理, 比如定为n, 超过的截断, 不足的补0. 注意补充的0对后面的结果没有影响,因为后面的max-pooling只会输出最大值,补零的项会被过滤掉. - num_classes
多分类, 分为几类. - vocabulary_size
语料库的词典大小, 记为|D|. - embedding_size
将词向量的维度, 由原始的 |D| 降维到 embedding_size. - filter_size_arr
多个不同size的filter.
embedding layer
将原数据嵌入到低维度向量中。就是对原数据进行了一次特征提取,在指定的维度中利用低维向量表示原数据。
convolution Layer
对不同的filter都建立一个卷积层,所以会有多个feature map
图像会有三个像素通道,但是文本没有,所以在这一点会有所不一样。
- xi
xi∈ℝk, 一个长度为n的句子中, 第 i 个词语的词向量, 维度为k. - xi:j
xi:j=xi⊕xi+1⊕...⊕xj
表示在长度为n的句子中, 第 [i,j] 个词语的词向量的拼接. - h
卷积核所围窗口中单词的个数, 卷积核的尺寸其实就是 hk - w
w∈ℝhk, 卷积核的权重矩阵. - ci
ci=f(w⋅xi:i+h−1+b), 卷积核在单词i位置上的输出. b∈ℝK, 是 bias. f是双曲正切之类的激活函数. - c=[c1,c2,...,cn−h+1]
filter在句中单词上进行所有可能的滑动, 得到的 feature map.
max-pooling layer
输出卷积的最大值,对其中的补全的0会过滤掉
softmax分类layer
全连接的softmax层,输出每个类别的概率