APP下载

融合self-attention机制的卷积神经网络文本分类模型

2019-06-06马慧萍

小型微型计算机系统 2019年6期
关键词:文档向量卷积

邵 清,马慧萍

(上海理工大学 光电信息与计算机工程学院,上海 200093)

1 引 言

随着互联网的不断发展,基于自然语言表述的电子文本信息越来越多,如何有效地获取和管理这些信息是自然语言处理中要解决的一个主要问题.而文本分类已成为解决该类问题的关键技术[1,2].为了将文本信息转化为计算机所能识别的向量,传统的文本分类方法采用向量空间模型表示文本,通过向量空间模型将文档转化为向量,向量中的每个元素对应着一个词.但是这类方法却无法表示出词与词之间的关联性,同时在处理过程中也无法辨析词语在不同句子中的具体含义[3].近年来,深度学习技术开始应用于自然语言处理领域[4],尤其是基于卷积神经网络的深度学习模型.

为了解决上述问题,本文提出一种自注意力机制与卷积神经网络相结合的文本分类模型,主要创新点包括:

1)通过自注意力机制捕获同一个句子中单词之间的一些句法特征或者语义特征;

2)通过卷积神经网络的多卷积核获取文本特征.实验验证了该分类模型的准确性和有效性.

2 相关工作

文本分类的应用广泛,其任务是在给定的训练文本和类别下,自动判断文档类别.在文本分类的过程中,最关键的部分是特征表达.传统的方法如朴素贝叶斯分类算法(Naïve Bayes)、KNN、SVM、最大熵,它们须加入了大量的人工特征才能有较好的性能.

Hinton在1986年提出了分布式表示方法[5],核心思想是将每个词表达成y维稠密、连续的实数向量.分布式表示的优点在于其有着强大的特征表达能力.基于Hinton的思想,以往研究将文本的表示通过词向量的方式,将文本数据从高纬度高稀疏的神经网络转变成连续稠密的数据.随着研究的深入,人们发现深度学习算法卷积神经网络(CNN)[6]可以通过滤波器来自动获取文本的局部特征.Kim等人[7]证明了使用简单的CNN模型结合静态词向量可以获得很好的效果.他们提出的模型包括输入层、卷积层,最大池化层和Softmax分类器.模型的输入是句子矩阵,其中矩阵的每一行是Word2vec[8,9]词向量.句子矩阵经过多个滤波器组成的卷积层,其结果进入最大池化层,最后是Softmax分类器.他们在不同的分类数据集上评估CNN模型.验证结果表明CNN在每个分类数据集上都表现出色,同时也证明了深度学习技术在自然语言处理领域的应用.Zhou C[10]提出了一种将CNN和RNN相结合的新模型,采用CNN网络提取局部特征,再使用长短期记忆网络(LSTM)[11]提取上下文依赖.分类效果优于传统的LSTM.Lai等人提出了一种RCNN(Recurrent Convolutional Neural Networks)文本分类方法[12],此方法采用双向循环结构获取文本信息,无需人为设置特征,比传统的基于窗口的神经网络减少更多噪声,而且在学习文本表达时可以大范围地保留词序,但会忽略文档的局部特征.

从上述研究可以看出,卷积神经网络在文本处理有一定的局限性.在将文档转化为词向量进行处理的过程中忽视了词在上下文的含义,且没有考虑距离较远的词之间的联系,影响了分类的准确性.夏从零[13]等人在2017年提出了一种基于事件卷积特征的文本分类方法,利用事件的语义特性弥补之前模型的不足.该方法使用依存关系抽取出文本中的事件集合,通过卷积神经网络进行事件特征提取,并在此基础上进行文本分类.该方法较传统的文本分类方法节省了大量的时间以及人力,同时提高了文本分类的准确率.

在2017年6月时谷歌发表了自注意力(self-attention)模型[14].self-attention模型可以从网络中某些状态集合中选取与给定状态较为相似的状态,进而做后续的信息抽取.传统CNN文本分类方法构建的语言时序特征,词信息是依次反馈的,比较耗时.而用self-attention可以直接挖掘句子内部词与词的语义组合关系,并作为一个语义整体,使得在翻译时能够更好地利用单词组合甚至是短语的信息.因此,本文选择self-attention机制进行词向量处理,以提高特征提取的精度和效率.

3 模型实现

本文提出的文本分类模型整体框架如图1所示.该模型主要由以下几个部分组成:self-attention层、卷积层、池化层(MaxPooling)、关键词层及softmax输出层.在self-attention层,通过输入文档的词向量矩阵获取相互依赖的特征词向量矩阵.在卷积层,根据不同的卷积核,得到更高级的文档特征.

图1 基于自注意力机制的卷积神经网络文本分类模型Fig.1 Convolutional neural network text classification model based on self-attention mechanism

在池化层捕获文档最重要的特征,并与tf-idf算法所选出的特征词进行余弦相似度(Cosine)计算,最后在softmax输出层实现文本分类.

3.1 基于self-attention的词向量处理法

传统的词向量处理方法通过计算词频实现[15],忽略词与词之间的关系.为了解决这一问题,本文采用self-attention对词向量进行处理.self-attention可以捕获同一个句子中单词之间的一些句法特征或者语义特征,且更容易捕获句子中长距离的相互依赖的特征.单纯采用RNN或LSTM,需要依次计算,对于远距离的相互依赖的特征,要经过若干时间步骤的信息累积才能将两者联系起来,而距离越远,有效捕获的可能性越小.self-attention在计算时会将句子里面的任意两个词联系起来,使得远距离依赖特征之间的距离会被大大地缩短,可以有效利用这些特征.

如图2所示,本文先对文档进行self-attention操作,文档表示为D={w1,w2,w3,…,wn},其中n是文档的词向量个数,wi是文档中第i个词的词向量,d是词向量的维数.将文档D通过全连接,再激活,得到一个新的矩阵X,X∈Rn×d,X的表达公式如下:

X=σ(Ws1D+b)

(1)

其中表示s形函数,如Log-Sigmoid函数、Relu函数和Tam-Sigmoid函数等,本文采用的Relu是函数.

图2 词向量处理Fig.2 Word vector processing

(2)

激活得到的矩阵与原词向量矩阵进行点乘:

B=DWs2X

(3)

A=softmax(B)

(4)

其中self-attention矩阵A中的每个元素是由矩阵B每一行进行softmax分类得到的,B∈Rn×n,A∈Rn×n,计算公式如下:

(5)

将self-attention矩阵A与文档D进行计算,公式如下:

C=A⊗D

(6)

其中⊗表示矩阵C中的每一行是由矩阵A的每一行元素与D的每一向量相乘累加计算得出的,C∈Rn×d,计算公式如下:

(7)

其中aij指的是矩阵A中的第i行j列的元素,Dj指的是矩阵D中的第j行向量.

3.2 基于卷积神经网络的特征提取

对于文本分类任务,通常是文档某些局部特征来决定文档的类别,而不是整个文档的平均值决定.在本文提出的文本分类模型中self-attention层之后加上一个卷积层.对在self-attention层生成的多维度特征矩阵C进行卷积操作,以获取文档局部特征.卷积核的大小m∈Rk×dw作用于特征矩阵的k个词,且卷积核的大小与词表示的维度相同.捕获的每一个特征都可以由以下公式表示:

hi=f(m·Ci:i+k-1,1:dw+bc)

(8)

其中,i的范围是1到n-k+1,f是一个非线性激活函数,·表示的是点积操作,bc∈R是偏置矩阵.卷积核m应用于特征矩阵C得到文档的新的特征图:

H={h1,h2,…,hn-k+1}

(9)

其中:H∈Rn-k+1.经过卷积之后的文档特征图的维度是n-k+1.

以上是针对一个卷积核的情况,为了捕获文档不同层面的高级特征,进一步采用多个相同纬度的卷积核,对卷积得到的多个特征图进行池化,并压缩,以提取主要特征.

池化操作一般来说有两种,一是Avy Pooling(平均池化层),一是max Pooling(最大池化层).本文采取max Pooling,即在每一个区域中寻找最大值.得到整个文档的语义表示如下:

(10)

3.3 分类实现

3.3.1 关键词提取

一篇文档主要由两类词构成:功能词和内容词.功能词对文本内容起修辞的作用,与文本主题关系不大;内容词则是文本的实词,反映文本的主题.

还有一类停用词,在文档中出现最多,如“是”、“的”等,它们无法表示文本内容.因此,在选取关键词之前要对停用词进行过滤.

过滤后使用tf-idf算法进行关键字的提取.tf-idf中tf表示“词频”(Term Freqency),即某一给定的词语在文中出现的频率.idf表示反文档频率(Inverse Document Frequency),即词条在整个语料库中的重要程度的度量.如果包含词条的文档越少,则idf越大,说明词条具有很好的类别区分能力.tf和idf的计算方法如下所示:

tf的算法:

(11)

其中ni,j是词在文件dj中出现次数,分母是文件中所有字词的出现次数之和.

idf的算法:

(12)

其中分子|D|是文件总数,分母是包含词的文件数目,由于可能会出现分母为0的特殊情况,所以加1.

由上可知,tf-idf的计算方式为:

fidfi,j=tfi,j×idfi

(13)

根据文本分类的类别,tf-idf算法计算关键词的表达公式如下:

K={k1,k2,k3,…,ks}

(14)

其中,s指的是文本分类的类别数.

3.3.2 余弦相似度计算

本文将根据tf-idf算法提取的关键词和池化层的输出做Cosine相似度操作,得到M,表达公式如下:

(15)

其中‖ ‖指的是取模操作.

3.3.3 softmax分类

模型最后部分对M进行softmax分类.由于M是一个向量,不能根据M直接判断出文档属于何种类别,因此使用softmax进行归一化处理方法,得到文档D属于具体某个类别的概率.其表达公式如下所示:

(16)

其中s表示类别的个数.文档预测的分类标签是:

(17)

本文模型训练的目标为最小化分类交叉熵损失:

(18)

其中p(mi)是softmax分类中每个类别的估计概率,s是文本分类的类别数.

为了防止过拟合问题,我们引入了正则化思想,即在损失函数中加入刻画模型复杂程度的指标.模型的复杂度一般是由权重w决定的,以下是对模型中所有权重正则化的公式.表达公式如下:

(19)

其中λ表示的是模型复杂损失在总损失中的比例,即正则化项的权重.

4 实验研究

4.1 实验方案

本文设计了两个对比实验.一是在相同数据集下不同模型的分类效果对比;另一个是在不同的数据集下模型的分类效果对比.针对英文语料的数据集,实验中采用了Stanford Tokenizer[16]进行分词;针对中文语料的数据集,采用了ICTCLAS[17]分词.文本中的停用词和特殊符号均当作普通单词保留.

4.2 实验评估指标

分类模型的评测指标主要包括正确率、召回率以及F1.正确率是指预测为正的样本中真正的正样本所占的比率.预测为正有两种可能,一种是把正类预测为正类(TP),另一种是把负类预测为正类(FP),正确率可以由下式表达:

(20)

召回率是指样本中正例被预测正确的比率.也有两种情况,一是预测正确,即把原来的正类预测成正类(TP),另一种是预测失败,即把原来的正类预测为负类(FN),公式如下:

(21)

有时准确率和召回率会出现相互矛盾的情况,为了综合衡量,引入F-Measure方法.本文采用最常见的计算方法:

(22)

4.3 实验结果与分析

4.3.1 相同数据集下的测试

根据第一种对比实验方案,为验证本文分类模型的正确性和有效性,数据集统一使用的是20News[1].本文选取以下几种经典的文本分类方法进行对比实验:

1)Average Embedding[18]:平均词嵌入,通过对文本的所有词取平均,然后通过softmax进行分类.

2)CNN[7]:使用卷积神经网络,一层卷积之后池化,后是全连接和softmax.

3)RCNN[11]:通过双向循环结构获取文本信息,用最大池化层获取文本主要成分,自动判断特征重要性.

4)LSTM[19]:使用不同的filter获得feature map.通过feature map做组合,将相同颜色的放在一个序列中,然后依次排列下来.

表1 不同分类模型下的分类指标(%)
Table 1 Classification indicators under
different classification models(%)

方法macro-Pmacro-Rmacro-F1Average Embedding89.3989.3984.71CNN84.3286.3849885.34RCNN96.4979.591787.23LSTM93.5480.63686.61CNN+self-attention96.8680.1729287.73

表1以及图3可以知道,CNN+self-attention比Average Embedding、CNN、LSTM准确率和F1值都有着明显提高.和RCNN模型相比性能相当.这说明了混合模型在一定程度上可更好的弥补单一深度学习模型CNN、LSTM所缺失的学习能力.

图3 不同分类模型下的分类指标柱状图Fig.3 Histogram of classification indicators under different classification models

4.3.2 不同数据集下的测试

根据第二种对比实验方案,本次实验用到以下几种数据集,分别是:

1)20News1:英文数据集,属于国际标准数据集之一.数据集收集了大约20000左右的新闻组文档,均分到20个不同主题的新闻组集合之后.这些新闻组集合有相似的主题也有差别很大的主题.

2)Fudan2:中文数据集,该数据集一共有19637篇文档,其中测试语料有9833篇,训练语料9804篇,分为20个类别.

3)TREC3:英文数据集,该数据集一共有5452条带有标签的训练集和500条的测试集,一共分为6大类.

4)SST4:英文数据集,该数据集包含11800条数据.其中训练集有8544条,开发集有1101条,测试集有2210条,一共分为5种类别.

从表2的对比结果可以看出使用卷积神经网络的模型比传统的词向量的方法准确率有明显提升.虽然在TREC数据集中的分类效果没有在20News数据集中的准确率高,但通过分析数据集的特点可知,TREC的平均句长要短于20News的平均句长.由于在本文提出的模型中self-attention机制都是基于历史节点对当前节点的影响,当文本句长较长时,所提取特征会更加准确,在与关键词进行相似度计算时能够更加精确.此外,根据中文语料和英文语料的模型分类结果对比可知,本文提出的模型都有明显的优化.

表2 不同数据集下的分类模型准确率(%)
Table 2 Accuracy of classification models
under different data sets(%)

模型20NewsFudanTRECSSTAverage Embedding89.3986.8932.70CNN84.3294.0492.4344.64RCNN96.4995.2093.5647.21LSTM93.5492.4846.83CNN+self-attention96.8696.0394.3447.43

5 结束语

本文提出的模型利用self-attention机制对词向量进行处理,得到相互距离依赖特征.self-attention的特点在于无视词之间的距离,直接计算依赖关系,能够学习一个句子的内部结构,因此这样得到的特征更准确.在此基础上使用CNN进行局部特征提取来得到文档的更高级抽象表示.根据CNN特征提取的结果与关键词进行相似度匹配来确定最后文本的类别.通过在不同的数据集上进行深入分析,验证了模型的正确性,同时发现在相同的数据集情况下,卷积核的大小影响文本分类的精确度,卷积核尺寸越大其分类精度越高.

在未来的工作中,我将继续研究该模型能否适用于在其他自然语言处理场景中,如微博情感分析.

猜你喜欢

文档向量卷积
浅谈Matlab与Word文档的应用接口
向量的分解
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种并行不对称空洞卷积模块①
有人一声不吭向你扔了个文档
聚焦“向量与三角”创新题
从滤波器理解卷积
基于傅里叶域卷积表示的目标跟踪算法
Word文档 高效分合有高招
向量垂直在解析几何中的应用