王鹏 付伟
(哈尔滨师范大学计算机科学与信息工程学院 黑龙江省哈尔滨市 150025)
文本分类是将一组文档从一个预定义的集合自动分类为多个类别的任务,是自然语言处理(Natural Language Processing,NLP)许多领域中的一项重要任务。文本分类已经广泛应用于多个领域,如推荐系统[1]和垃圾邮件过滤系统[2]等需要了解用户情绪的领域。情感分析属于文本分类的一个分支,其目的是分析用户对文本中所表达的实体及其属性的意见、情感、评价、态度和情感[3]。目前,文本分类方法主要有三种类型:基于统计的分类方法,如贝叶斯分类器[4];基于深度学习的分类方法,如神经网络[5];基于规则制定的方法,如决策树分类[6]。目前对传统文本分类的研究大多集中在一类特殊的短语或句子上。这些方法仅依靠目标句子或目标词语来解决文本分类问题,而没有考虑到每个词之间的关系。事实上,文本的分类应该根据所有的上下文来决定。尤其是以人工方式进行情感分析往往是根据整个句子或段落上下文来判别文本的极性(如积极、消极、中性),而不是通过单独某一个单词来识别。
近年来,深度学习(Deep Learning)在计算机视觉、语音识别、文本分类等诸多领域取得了显著的成果。对于文本分类,大多数采用深度学习方法的研究可以分为两部分:
(1)通过神经语言模型学习单词向量表示[7];
(2)对学习到的单词向量进行组合,进行分类[8]。
卷积神经网络(Convolutional Neural Network,CNN)和循环神经网络(Recurrent Neural Network,RNN)在文本分类工作中被广泛应用。近年来,许多基于CNN或RNN的文本分类方法被提出。Kim[9]提出将CNN用于句子级别的文本情感分类和问题分类,但是CNN只能够学习到局部特征,缺乏学习全局特征的能力;对于长数据序列,传统的RNN会出现梯度爆炸和消失的情况。长短时记忆网络(Long Short-term memory,LSTM)[10]是一种改进的RNN网络,它通过三个门控机制有效地解决了梯度消失和梯度爆炸问题,此外,它还可以捕获长期依赖关系。Tai等人[11]使用LSTM用于文本分类取得很好的效果。由于LSTM对高级文本信息的强大提取能力,在NLP中起着至关重要的作用。双向长短时记忆网络(Bi-directional Long Short-Term Memory,BiLSTM)[12]是LSTM的进一步改进,BiLSTM从前后两个方向提取特征,获得更加全面准确的语义特征。因此,BiLSTM可以比LSTM更好地解决序列建模任务。Chen等人[13]使用了BiLSTM与CNN结合来解决情感分析问题。门控循环神经网络(Gate Recurrent Unit,GRU)[14]是一种LSTM类似的网络结构,它可以实现与LSTM相同的功能,但结构比LSTM更为简洁。本文选择GRU来代替LSTM,因为GRU可以达到LSTM相同的效果并且可以减少计算复杂度。本文提出一种将CNN,BiGRU与注意力机制相结合的网络模型。CNN的卷积层可以获取文本的局部特征并降低特征维度,然后BiGRU获取到文本的全局特征,将获取到的特征通过注意力机制设置不同的权重来突出上下文信息中的重要信息,可以进一步提高分类精度。
图1:卷积神经网络结构
图2:GRU单元结构
神经网络学习文本的特征首先要将单词向量化表示,用于神经网络的输入。传统的向量化表示,例如one-hot表示方法虽然简单但是忽视了词与词之间的关系,并且会导致维度灾难。2013年,Mikolov[15,16]等人提出Word2Vec模型来建立神经网络词嵌入表示,它包括CBOW(Continuous Bag-Of-Words)和Skip-gram两种模型,两种模型都由输入层、映射层和输出层组成。CBOW的输入层为第t个单词的ωt周围的n个词,当n为2时,输入层为e(ωt-2)、e(ωt-1)、e(ωt+1)、e(ωt+2),输出层为e(ωt)。Skip-gram模型与CBOW模型正好相反,输入层为e(ωt),输出层为e(ωt-2)、e(ωt-1)、e(ωt+1)、e(ωt+2)。本文采用Skip-gram模型,通过最大化似然函数来训练单词ω1,ω2…ωT。
其中|V|是词典索引集大小。每个词有两种表示方法,e(ωi)是ωi的中心词向量表示,e'(ωi)是ωi的背景词向量表示。公式(2)为通过中心词生成背景词的条件概率。训练结束后得到e(ωi)作为词向量表示。
CNN是一种前馈神经网络,在图像识别领域广泛应用,本文使用的卷积神经网络为一维卷积,结构可以分为三层,输入层、卷积层、池化层。图1为CNN网络结构。
输入层:以句子的词向量矩阵为输入,每个句子X为n×k的矩阵,n为句子的长度,k为词向量维度,,,xi为句子中第i个词的词向量表示。
卷积层:为特征提取层,通过选择多个不同尺寸的卷积核,同时每种规格的卷积核选择多个,卷积核的规格为m×k,m为卷积核宽度,k为词向量维度,通过卷积操作最后得到多个特征图。
其中,Cj为第j个卷积核卷积操作得到的特征,ci为第i个卷积操作的结果,f为非线性激活函数ReLu,w形状为m×k,*为卷积操作,为句子第i个到第i+m-1个词语的词向量组成的矩阵,b为偏置项。
池化层:池化层采用最大池化,从卷积层得到的特征Cj中选择最大的特征值,最后将从不同特征中得到的特征拼接在一起,作为CNN提取的特征。
RNN是一种具有递归隐藏状态的前馈神经网络,隐藏状态在一定的时间内被先前状态激活。LSTM和GRU都是RNN架构,目前已成为RNN的主流结构。LSTM通过用记忆细胞和门控制解决梯度消失的问题。记忆细胞存储历史信息,它能够知道何时学习新信息,何时忘记旧信息。GRU是与LSTM的功能相似,都可以捕捉时间序列里长短期的依赖关系,但是GRU的结构更为简洁,计算复杂度较低。图2为GRU的单元结构。
GRU单元有两个门控单元:重置门与更新门如公式(8)、(9)所示。一个隐藏更新状态如公式(10)所示。Rt、Zt、Ht-1、、Ht分别为t时刻的重置门,更新门,上一时刻的隐藏状态,候选隐藏状态和当前隐藏状态。Wxr、Whr、Wxz、Whz、Wxh、Whh分别为权重参数。br、bz、bh分别为偏移量。单向的的GRU只能利用上文信息,而缺乏下文信息。BiGRU将正向隐含层和后向隐含层结合起来,实现对前向和后向上下文的访问,如图3所示。卷积神经网络的输出作为BiGRU网络的输入,得到左右两个输出和。
图3:BiGRU网络结构
图4:AC-BiGRU网络
目前,注意机制(Attention Mechanism,AM)已经成为一种有效的方法来选择重要的信息,以获得更好的结果。Xu[17]提出了随机硬注意机制和确定性软注意机制。确定性注意模型是对注意位置的边际似然的近似,是应用最广泛的注意机制。Luong[18]提出了两种简单而有效的注意力机制:一种全局方法,它的思想是在推导上下文向量时考虑编码器的所有隐藏状态;另一种局部方法,它一次只关注隐藏层的子集。选择性地聚焦于一个小的上下文窗口。Lin[19]提出了一种自注意机制,允许将句子的不同方面提取为多个向量表示。
LSTM与注意机制相结合可以取得较好的效果,特别是对于序列问题,注意机制已成功地应用于文本分类、阅读理解等多种任务中。Yang[20]提出了一种分层注意网络用于文档分类。该模型具有两个显著特点:
表1:实验结果对比
(1)可以反映文档层级结构
(2)它有两个层级的注意机制,分别应用于词语和句子,使它能够区别出较重要和较不重要的内容。
在六个大规模文本分类任务上的实验表明,在很大程度上优于以前的方法。为了更好地解决完形填空式阅读理解任务,Cui[21]提出了一个简单而新颖的模型——attention-over-attention。该模型的目的是将另一种注意机制置于文档级上,并在最终答案预测中引入注意力。
CNN可以提取文本的局部特征,并且可以减少输入序列的维度。GRU擅长处理变长序列,但是传统的GRU只可以提取文本上文的特征,而文本的含义与上下文都有关系,为了提高在文本分类中的性能,本文试图通过结合CNN、BiGRU和注意力机制来设计一种新的网络模型来解决上述问题:AC-BiGRU模型。在ACBiGRU中,卷积层从文本中提取n-gram特征,并降低文本维数,然后BiGRU通过组合前向隐藏层和后向隐藏层来提取前向和后向上下文特征。最后通过注意机制加更与文本情感相关的词语的权重,有助于理解句子语义。AC-BiGRU中的两个注意机制层分别处理前向和后向的上下文特征。将注意力层处理的特征连接在一起,然后输入softmax分类器。AC-BiGRU模型的体系结构如图4所示。
传统的词表示方法,如one-hot向量,面临着词序丢失和维数过大两个主要问题。与one-hot词嵌入表示方法相比,分布式的词嵌入表示方法更适用、更强大。本文采用word2vec方法中Skipgram模型。通过上下文单词预测中心词训练模型参数,Skip-gram模型还可以捕捉词与词之间的语义关系。通过词嵌入层将输入的词语转换成维数为300的词向量。
在AC-BiGRU中,采用一维卷积层来提取文本的局部特征,并且可以减小输入数据的维数。卷积层的卷积运算是一维的,在卷积层中,采用3种不同的卷积核提取特征。卷积层的输入数据的维数为300×M,过滤器的维数分别为3×M、4×M、5×M,个数都为100,输出数据的维数为100* M。M是文本长度。通过一维卷积层输入的序列由300维降为100维。
其中b为偏置向量,f表示卷积运算的非线性激活函数ReLU。卷积层得到的特征为Lc=[Lc1,Lc2,...,Lc100]。
文本分类是对顺序信息的处理,然而从卷积层中并行得到的特征序列不包含序列信息。经过BiGRU进行序列特征提取,可以进一步从卷积层得到的特征序列中提取上下文信息。BiGRU的作用是提取文本的全局特征。因为所有的单词都有不同的含义,为表达上下文的感情,给单词赋予不同的权重是解决问题的一种常见方法,注意机制是赋予词语不同的权重,以增强对全文情感的理解,因此,BiGRU和注意机制可以提高分类效率。
BiGRU通过对卷积层得到的特征进行前后两个方向的信息进行学习,得到文本的两个特征,BiGRU包含从Lc1到Lc100读取特征序列的正向GRU和从Lc100到Lc1读取特征序列的反向GRU在形式上,BiGRU的输出如公式(15)、(16)所示:
注意机制可以关注关键词的特征,减少非关键词对文本情感的影响,它是由一个全连接层和一个softmax函数组成。下面详细介绍了AC-BiGRU中注意机制的工作过程。
其中w和b表示神经元的权值和偏置,tanh为双曲正切函数。该模型利用与词级上下文向量之间的相似性来衡量每个词的重要性。然后利用softmax函数得到每个单词的归一化权重的表达式如公式(18)所示:
AC-BiGRU通过将正向文本特征与反向文本特征连接起来,得到给定特征序列Lcn的特征。最后,得到了完整的文本特征S=[Fc,Hc]。在AC-BiGRU中,使用dropout层避免过拟合,softmax层生成条件概率,实现分类。交叉熵是评价模型分类性能的常用损失函数,它优于分类错误率或均方误差。交叉熵作为损失函数可以降低随机梯度下降过程中梯度消失的风险。在本文模型中,选择Adam优化器来优化网络的损失函数,该算法是一种高效的反向传播算法。损失函数如公式(21)所示:
其中num为训练样本的数量,Sp为训练样本,y为样本的标签,o为AC-BiGRU的输出。
AC-BiGRU的主要贡献和创新性在于:
(1)卷积层从原始文本中提取低层语义特征,用于降维。对于文本分类,整个文档的向量表示通常是高维向量。当使用BiGRU捕获整个文档的语义时,BiGRU的参数将显著增加,过多的网络参数会增加网络优化的难度,直接降低文本向量的维数会丢失大量信息,降低分类的准确性。卷积层可以降低输入数据的维数,因此一维卷积层可以在降低文本向量维数的同时提取文本向量的特征信息。
(2)传统的单向GRU中前向隐藏层会影响后向隐藏层,但反过来不会。因此,GRU提取的信息不能有效地表示文本的实际语义。由于BiGRU可以同时访问前面和后面的上下文特征,所以BiGRU提取的特征可以更真实地表示文本的实际语义。
(3)BiGRU中的前向隐藏层和后向隐藏层使用各自的注意机制层。由于BiGRU可以访问前面和后面的上下文,所以BiGRU获得的信息可以看作是文本的两种不同表示。相同的信息可以在BiGRU获得的信息中使用不同的表示。因此,对文本的每一种表现形式都使用注意机制,可以更好地关注各自的重要信息,避免重要信息在不同表现形式中的相互干扰。
本文实验环境如下:操作系统为Ubuntu16.04LTS,CPU是Intel Core i7-6770HQ,GPU为GeForce RTX 2080Ti,显卡驱动为NVIDIA-SMI 440.44,CUDA Version 10.2内存大小为DDR3 8GB,开发环境为Tensorflow-gpu 1.15.0,开发工具使用的是Anaconda。
本文数据集分为两个部分:第一部分实验数据为搜狗实验室的全网新闻数据(SogouCA),来自多家新闻站点近20个栏目的分类新闻数据,SogouCA数据为2012年6月-7月期间国内、国际、体育、社会、娱乐等18个频道的新闻数据,提供URL和正文信息,经过预处理后,数据大小为2.3GB左右,将其利用 Skip-gram模型训练得到300维的词向量;第二部分数据集是谭松波老师的酒店用户评论数据集,正负样本各 2000条。其中90%用作训练集,10%用作测试集,然后利用训练SogouCA得到的300维词向量去初始化第二部分的数据集,若第二部分数据集中的词在SogouCA 数据中就将当前词利用SogouCA训练得到的词向量表示,若没有则采用随机初始化方式表示。
本文使用的词向量维度为300,卷积网络层使用的激活函数为ReLu,采用3种不同尺寸的卷积核,卷积核的宽度分别为3、4、5,每种尺寸的卷积核各100个,CNN 最终提取的特征向量维度为100。使用的BiGRU单元的大小为128,输出维度为256,上下文向量uf维度为10,经过注意力层加权后的特征输入全连接层和softmax层,其中全连接层使用dropout正则化技术防止过拟合。整个模型使用Adam 优化器训练。本文选取句子长度分布中间92%占比的句子长度的最大长度做为标准长度,对所有的文档做填充和截断。
本文使用四个评价指标衡量模型的效果,分别是准确率 (Accuracy)、精确率 (Precision)、召回率(Recall)、F1值,计算公式如下。
图6:四种模型的损失
为验证本文提出的AC-BiGRU模型的分类性能,与CNN、LSTM、BiLSTM网络作对比实验,实验参数与AC-BiGRU保持一致。与CNN、LSTM、BiLSTM三个模型进行对比,实验结果如表1所示。
LSTM模型的准确率最低,因为LSTM善于处理长序列,而测试样本的序列长度过低,没有发挥出LSTM模型的优势,并且LSTM指从单一方向提取文本特征,忽略了文本的后文信息,所以分类效果并不理想。CNN模型善于提取文本的局部特征,分类效果要好于LSTM,但是出现了过拟合现象,相比较LSTM递归计算,CNN的计算时间要远低于LSTM与BiLSTM。BiLSTM由于从两个方向提取特征,获得更加全面的全文特征,所以分类效果要好于LSTM,但同时也增加了计算成本,相比较与LSTM,时间大约增加了一倍。本文提出的AC-BiGRU是四个模型中效果最好的,因为结合了CNN与GRU网络的特点,同时提取到文本的局部特征与全局特征,再由注意力机制对特征加上权重,更加注意重要的信息,所以分类效果最好,并且因为GRU单元结构要比LSTM更精简,所以训练时间也要比BiLSTM时间更短。
图5:四种模型的准确率
训练过程四种模型的准确率变化如图5、图6所示。
本文提出了一种基于CNN和BiGRU与注意力机制的神经网络模型用于实现文本的情感分类。将CNN网络提取到文本的局部特征,然后再由BiGRU从前后两个方向提取文本的全局特征,最后由注意力机制将提取到的特征分配不同的权重,使得与文本情感有关的特征权重增大来使分类更加准确。为了验证该方法的性能,与CNN,LSTM和BiLSTM三个单一网络进行实验对比,结果表明在精度和鲁棒性方面本文提出的模型表现得更好。通过实验表明ACBiGRU网络模型从准确度和计算时间上都比单一的网络模型都有明显提升。