近期在使用深度学习做文本分类的任务的时候了解到了TextCNN算法,之前一直使用较多的是LSTM。TextCNN 是利用卷积神经网络对文本进行分类的算法,由 Yoon Kim 在2014年的 “Convolutional Neural Networks for Sentence Classification” 文章中提出.
1.举个小例子,如下图
简而言之,TextCNN的主要作用就是通过CNN来有效提取提取出文本的特征,然后再进行深度神经网络训练,最终达到对文本进行分类的目的。
对于上图来说,输入“I like this movie very much !”,这句话一共有7个单词,每个单词的词向量维度为5。name这句话形成的文本矩阵大小为7*5。接着我们来看卷积核,在这里卷积核的宽即为词向量的维度(即为5),卷积核的长即每一步跨越单词的数量。上面的7*5矩阵,在卷积核长度为2,3,4。那么卷积核的大小为2*5,3*5和4*5,步长为1,那么经过卷积以后以前的7*5词文本矩阵分别变为6*1,5*1和4*1的矩阵。再进行最大池化,分别取上述卷积后矩阵的最大值,再拼接在一起即得到最后的表示文本特征的向量。在上图中,每个尺寸的卷积核各有2个,一共有3个不同的卷积核,故最后形成6*1的文本向量。接着将文本向量带入到深度神经网络进行分本分类。
2.conv1d简单实现
class PictureTextCNNCon