NLP笔记(一)——CNN在文本处理中的应用
很不错的一篇TutorialUnderstanding Convolutional Neural Networks for NLP,把里面提及的论文整理了一下。
Convolutional Neural Networks for Sentence Classification(ACL2014)
感觉这应该是最早的一篇把CNN用于处理文本的论文,网络模型十分简单。
模型
直接在Word Vector(300 dim)上使用不同的kernel(3,4,5)对句子进行一维卷积,之后对于不同kernel产生的不同长度结果进行MaxPooing使其长度都为1,最后将这些Feature输入全连接层+Softmax完成分类任务。
实验
实验表明使用CBOW预训练的模型表现更出色,并且实验时发现使用两个不同的Word Vector作为输入的不同channel效果更好。
另外作者发现在卷积时增大channel并不能避免过拟合,channel的选择还是需要具体问题具体分析。
Effective Use of Word Order for Text Categorization with Convolutional Neural Networks(NAACL2015)
这篇文章没有使用Word Vector,直接用单热点编码了单词进行文本分类,与句子分类不同的是文本分类面临的输入要长上百倍,所以单热点直接使用会造成维度灾难。
作者为了降低输入维度首先引入了region,类比n-gram,只对相邻的几个连续单词作为输入,并且对每一个region都使用bag-of-word表示。
模型
-
首先对输入的文本划分成不同的region,相当于一个滑动窗口,每次位移是一个单词
-
之后对每个region的bow进行一维卷积,对所有的region卷积后形成一个具有时序性的特征向量,这里CNN的用法类似于RNN,这也可以有效的降低模型参数数量(下图)。
- 最后基于特征向量做分类任务
实验
作者分别在:IMDB: movie reviews、Elec: electronics product reviews、RCV1: topic categorization三个数据集上验证了模型的有效性,并且特意强调对于超参数的选择需要根据验证集选择,论文中对三个数据集的超参数分别如下:
- IMDB & Elec:region size=3, stride=1, channel=1000, max-pooling=1
- RCV1:region size=20, stride>=2, channel=1000, average-pooling=10
Semi-supervised Convolutional Neural Networks for Text Categorization via Region Embedding(NIPS2015)
本文和上一篇是同一作者对之前模型的改进,提出了tv-embedding这个概念,并且对于模型提供了一种半监督的训练方法,并且在数据集上具有更好的表现。
tv-embedding
作者给出的定义如下:
这里的tv表示的是two-view,即上下文,其中X1代表上文,X2代表下文,文中论证了理想情况下,使用tv-embedding编码后的上下文对于分类问题来说等同于未经编码的原文,即此编码没有信息损失。
实际上这种tv-embedding的条件类似于n-gram的独立性假设。
半监督学习框架
预训练
- 如果使用无标签数据,则直接使用类似CBOW的预测方法进行训练
- 如果使用有标签数据,则构造一个CNN网络进行预测训练,最后取中间层输出作为embedding
有监督训练
- 使用经过预训练的tv-embedding和上一篇论文提出的CNN模型进行训练
总的来说本文相当于是作者训练之前模型的经验总结+理论证明
A Sensitivity Analysis of (and Practitioners’ Guide to) Convolutional Neural Networks for Sentence Classification(2015)
实验论文,根据CNN的各种超参数对模型的影响进行了对比试验,使用的就是第一篇ACL2014论文中的Model
- WordVector:
- Filter Region Size(kernel size):
- Feature Maps(channels):
- Activation Function
- Pooling Strategy
详见论文
- Regularization
可以说作者做了巨量的实验
Relation Extraction: Perspective from Convolutional Neural Networks(ACL2015)
RE任务即分析一对出现在同一文本中的实体之间的关系(predefined),实际上可以看作是一种特殊的分类问题。另外,由于实体出现位置具有随机性,因此文本的位置信息也需要考虑进模型。
模型
输入的表示
为了表示实体的位置信息,为文本的每个单词引入了两个距离信息h1和h2,h1表示当前单词距离第一个实体的距离,h2表示距离第二个实体的距离。
使用随机初始化的距离embedding矩阵D编码,因此同一个单词在编码后具有三个向量,词向量v和两个距离向量d1,d2
最后将三个编码向量直接拼接,作为当前单词的最终编码。
RE
经过表示后的RE问题即分类问题,直接使用CNN对编码进行卷积+MaxPooling,最终使用一个mlp进行分类。
未完待续…