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完成分类任务。

NLP笔记(一)——CNN在文本处理中的应用

实验

实验表明使用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,这也可以有效的降低模型参数数量(下图)。

NLP笔记(一)——CNN在文本处理中的应用

  • 最后基于特征向量做分类任务

实验

作者分别在: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

作者给出的定义如下:
A function f1 is a tvembedding of χ1 w.r.t χ2if there exists a function g1 such that P(X2X1)=g1(f1(X1),X2)for any (X1,X2)χ1×χ2 A\ function\ f_1\ is\ a\ tv-embedding\ of\ \chi_1\ w.r.t\ \chi_2\\if \ there\ exists\ a\ function\ g_1\ such\ that\ P(X_2|X_1)=g_1(f_1(X_1),X_2)\\ for\ any\ (X_1,X_2)\in\chi_1\times\chi_2
这里的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:

NLP笔记(一)——CNN在文本处理中的应用

  • Filter Region Size(kernel size):

NLP笔记(一)——CNN在文本处理中的应用

  • Feature Maps(channels):

NLP笔记(一)——CNN在文本处理中的应用

  • Activation Function

NLP笔记(一)——CNN在文本处理中的应用

  • Pooling Strategy

详见论文

  • Regularization

NLP笔记(一)——CNN在文本处理中的应用

可以说作者做了巨量的实验


Relation Extraction: Perspective from Convolutional Neural Networks(ACL2015)

RE任务即分析一对出现在同一文本中的实体之间的关系(predefined),实际上可以看作是一种特殊的分类问题。另外,由于实体出现位置具有随机性,因此文本的位置信息也需要考虑进模型。

模型

输入的表示

为了表示实体的位置信息,为文本的每个单词引入了两个距离信息h1和h2,h1表示当前单词距离第一个实体的距离,h2表示距离第二个实体的距离。

使用随机初始化的距离embedding矩阵D编码,因此同一个单词在编码后具有三个向量,词向量v和两个距离向量d1,d2

最后将三个编码向量直接拼接,作为当前单词的最终编码。

RE

经过表示后的RE问题即分类问题,直接使用CNN对编码进行卷积+MaxPooling,最终使用一个mlp进行分类。

NLP笔记(一)——CNN在文本处理中的应用

未完待续…