Text-CNN:一种将CNN应用于NLP的方法.
- paper:Convolutional Neural Networks for Sentence Classification
- arXiv:https://arxiv.org/abs/1408.5882
- Pytorch实现Text-CNN的例子:中文电影评论情感分类
Text-CNN是一种将CNN应用于NLP的方法,可解决sentiment analysis、question classification等问题。
Text-CNN的结构如下:
Text-CNN和传统的CNN结构类似,具有词嵌入层、卷积层、池化层和全连接层的四层结构。
1. 词嵌入层
词嵌入层(Word embedding)使用二维矩阵来表示长文本。
词嵌入将输入文本的每个词语通过空间映射,将One-Hot Representation转换成分布式表示(Distributed Representation),进而可以使用低维的词向量来表示每一个词语。
经过词嵌入,每个单词具有相同长度的词向量表示。将各个词语的向量表示连起来便可以得到二维矩阵。
得到词向量的方式有多种,常用的是Word2vec方法。
若使用预训练好的词向量,在训练模型的时候可以选择更新或不更新词向量,分别对应嵌入层状态为Non-static和Static。
2. 卷积层
卷积层的卷积核的宽度等于词向量的维度,经卷积后可以提取文本的特征向量。
与在图像领域应用类似,Text-CNN可以设置多个卷积核以提取文本的多层特征,长度为$N$的卷积核可以提取文本中的N-gram特征。
3. 池化层
池化层采取Max-over-time pooling,输出最大值,从而判断词嵌入中是否含N-gram。
4. 全连接层
全连接层采用了Dropout防止过拟合,并使用Softmax函数输出各个类别的概率。