Convolutional Neural Networks for Sentence Classification之每日一篇
本文很久以前就读过,现在再学习一下。
文章链接:http://blog.****.net/rxt2012kc/article/details/73739756
github连接:https://github.com/rxt2012kc/cnn-text-classification-tf (论文原文github实现)
https://github.com/gentelyang/cnn-text-classification-master(自己复现)
一:介绍
本文主要首先将文本的情感特征加在特征向量中,通过词向量的转化之后,语义相近的词距离也想见相近,
比如余弦距离。然后将词向量组成的句子矩阵作为CNN的输入,利用CNN卷积器来提取特征,在语义解析、搜索、语句
模型等传统的自然语言处理中取得较好的效果。
本文的词向量来源于谷歌的word2vec模型预训练的Google News词向量,分两个通道:static预训练的词向量保持不变;
另一种是nonstatic预训练的词向量也会被调整。
二:模型
每个句子中的词(中文需要先进行分词)转化为词向量,词向量的维度为k,如果一个句子中的词个数为m,则该句最终表示为 m * k 的词向量矩阵。假设文档中最长的句子中的词个数为n,则 小于n 的句子填充为m。最终得到的词向量矩阵为 n * k。
1维卷积器的长度h分别为3,4,5。卷积器的尺度为3 * k,4 * k, 5 * k。卷积器的数量分别为n0, n1, n2,在实验中,都取100。
3种卷积器与矩阵分别做卷积,得到(n - h + 1)* 1 * 100的矩阵, 卷积过程如公式(1)所示。
结果:
CNN-rand效果并不是特别显著,CNN-static效果突然上升,效果显著。说明使用预训练的词向量对结果起到了很大的作用。
单通道与多通道:本来希望多通道的效果更好,多通道能够防止过拟合,实际上两种方法的效果在特定的数据集中效果有优有劣。
论文都是基于词向量进行的卷积操作,事实证明,预训练的词向量对实验效果有很大的提升。
随机初始化的词向量效果没有用语料库初始化的词向量分类效果好。