本文主要收录常见的文本分类算法,包括LR、XGBOOST、TextCNN、DPCNN、HAN、BERT。
TextCNN1
TextCNN是将CNN应用到文本分类任务上的经典模型。
模型结构
1. 词向量层
词向量矩阵 x n × k x_{n \times k} xn×k, n n n表示句子的长度, k k k表示词向量的维度,通道包含静态词向量和动态词向量。
2. 卷积层
沿着字符的方向进行一维卷积,每个filter的卷积结果都是一个feature map(和二维卷积得到的矩阵相比,一维卷积得到的feature map是向量);使用多个不同窗口大小的filter即可得到多个长度不同的feature map(图中也可以看出不同尺寸的filter得到的feature vector长短不一)。
3. 最大池化
池化层取卷积后的一维向量中的最大值。
4. 全连接层
最大池化层的输出通过dropout后进入全连接层,全连接层经过softmax得到最终的标签概率分布。
实验
超参数设置如下:
- 激活函数:ReLU
- filter size:3, 4, 5,每个尺寸都有100个feature map
- dropout:0.5
- 权重 l 2 l_2 l2:3
- batch_size:50
除了在倒数第二层加dropout外,TextCNN还给倒数第二层的参数加了一个 l 2 l_2 l2正则
实验共有四组对比:
- CNN-rand:使用随机词向量
- CNN-static:使用固定的word2vec预训练词向量
- CNN-non-static:使用微调的word2vec预训练词向量
- CNN-multichannel:使用随机和预训练的词向量,每种视为一个通道
模型实现
总结分析
TextCNN的优缺点分析如下:
- 优点:参数少、训练快
- 缺点:卷积窗口的存在使得其只能捕捉到局部信息
Convolutional Neural Networks for Sentence Classification. Yoon Kim. ACL 2014 ↩︎