李启行,廖 薇,孟静雯
上海工程技术大学 电子电气工程学院,上海 201620
随着手机、电脑等智能设备的大范围普及,人们的日常交流也逐步从线下转移到各种网络社交平台,互联网作为主要的信息传播途径,每天都会增加大量的文本数据。面对这些数量庞大的文本数据,如何对数据进行有效的分类,是当前自然语言处理领域研究的重点问题。
近年来,随着国内外学者对文本分类研究的不断深入,许多分类算法涌现而出,目前提出的文本分类方法主要可分为两大类:第一类是传统的机器学习分类方法,主要包括K最邻近(K-nearest neighbor,KNN)[1]分类算法、支持向量机(support vector machine,SVM)[2]、隐含狄利克雷分布(latent Dirichlet allocation,LDA)[3]等。这些算法在目前来看较为成熟,但在进行文本分类过程中,其分类效果主要依赖于人工提取文本特征,整个过程较为耗时。第二类是基于深度学习的分类方法,在文本分类中使用较为广泛的有卷积神经网络(convolutional neural network,CNN)[4]、递归神经网络(recurrent neural network,RNN)以及各种CNN 与RNN 的混合网络。CNN可以通过卷积层与池化层对文本进行局部特征提取,但是不能有效地提取文本数据的全局序列信息。RNN 是一种序列模型,相对于CNN 的优势在于其具有“记忆”能力,可以捕获文本的全局序列信息,但是当序列信息过长或者文本过于复杂时,RNN 会变得没有那么敏感。在文本分类模型中引入注意力机制,可以获取文本中每一个词在整个文本中的重要程度,对重要的词分配较大的比重分值,增强模型对这些特征的重视程度[5]。但注意力机制也存在一定的缺点,不可以捕捉位置信息,不能学习到文本序列中的顺序关系。
为了优化深度学习模型提取文本关键特征的能力,提出一种基于注意力机制的双通道文本分类模型DACRNN(dual-channel AC-RNN)。该模型以Bi-LSTM+Attention作为第一通道,提取文本序列的上下文关联信息;以CNN+Attention 作为第二通道,提取文本序列的局部特征。同时,在CNN通道中,将原始输入向量与各层CNN 的输出向量进行选择性融合,有效利用原始特征,避免特征在网络层间传递过程中的丢失问题。
文本分类技术是自然语言处理领域最核心、最基础的内容之一,目前深度学习结合文本分类的应用取得了很大的进展[6],它在舆情分析、意图识别、问答系统等多个领域发挥着重要的作用。其中常用的深度神经网络模型有递归神经网络、注意力机制、卷积神经网络。
在自然语言处理任务中,卷积神经网络主要被用于文本的静态分类任务。Kim[7]提出使用多个卷积核结合最大池化对文本进行关键特征提取,并用预训练的词向量对输入向量进行更新。夏从零等[8]利用事件本身具有的特点,提出一种运用文本间的关系提取事件集合,进而在CNN 中进行事件特征提取的文本分类方法,通过实验证明了方法的有效性。句子中的长距离依赖在单层CNN 中不能被很好地表达出来,一些多层网络结构被提出。Wang等[9]提出一种具有多层网络结构的CNN模型来获取Web 数据中的关键特征,运用SVM 进行分类预测,虽然该模型取得了好的结果,但是增加网络会使模型的参数增加,导致模型训练速度慢,稳定性不足,模型训练难度增大。Pham等[10]使用不同的卷积核来提取文本数据的特征,并将提取的特征向量进行融合,然后进行分类,通过这种方式可以准确提取文本的局部特征,但是不能有效地获取文本的全局序列信息,这也是CNN所具有的缺点。
RNN 可以有效地处理上下文数据,提取文本数据的全局序列信息,但是当文本序列过长时容易出现梯度消失问题。为了解决这一问题,相关研究人员在RNN 的基础上提出了长短期记忆网络(long short-term memory,LSTM),并由此延伸出双向长短期记忆网络(Bi-LSTM),Bi-LSTM可以同时从两个方向提取文本的序列信息。但是RNN在文本局部特征提取方面存在不足,可以对RNN 与CNN 进行组合,利用彼此的优势提取更加丰富的文本特征。Zhang 等[11]提出一种混合LSTM和CNN的分类模型,通过LSTM获取上下文中的依赖关系,使用CNN获取文本的局部特征,最后将获取的信息进行融合,输入到分类器,最终验证了RNN 与CNN进行组合的有效性。李洋等[12]提出一种将Bi-LSTM与CNN 相融合的网络模型,通过双向传播机制获取文本中完整的上下文信息,相对于文献[11],该模型克服了LSTM不能准确获取词后特征的不足,提高了特征融合在文本分类上的准确性。
注意力机制可以对文本的关键特征进行聚焦操作,对特征提取有一定的积极作用。陶志勇等[13]将注意力机制引入Bi-LSTM 用于短文本分类,利用Bi-LSTM 提取文本的语义特征,通过注意力层对更深层的语义特征进行向量表示,可以提取到短文本的关键特征。Liu等[14]提出一种用于文本分类的AC-BiLSTM模型,在CNN与Bi-LSTM 结合的基础上,引入注意力机制,使模型更加关注与文本情感相关的词语,可以帮助理解句子的语义,同时通过实验得出合理使用两个注意力机制层比具有单注意力机制层模型的性能更好。但注意力机制忽略了词序信息,不能用来捕捉文本的位置信息[15]。
在CNN 与Bi-LSTM 的基础上,本文提出一种基于注意力机制的DAC-RNN文本分类模型,以中文文本作为输入,样本种类作为输出,实现端对端的中文文本分类任务。DAC-RNN模型结构如图1所示。
图1 DAC-RNN文本分类模型Fig.1 DAC-RNN text classification model
整个模型分为四部分:词嵌入层,将分词后的文本向量化表示;Bi-LSTM+Attention通道,获取文本序列的上下文关联语义;CNN+Attention通道,获取文本序列的局部特征;Softmax 层,对两通道融合后的输出进行分类,获取分类结果。
在自然语言处理任务中,因为计算机不能直接理解人类的语言,所以在文本处理时首先需要将文本转换成计算机能够识别的数值形式,即将每个词语都表示成一个向量。独热编码(one-hot encoding)是一种传统的文本表示方法,这种方法非常简单,但是当词语的数量过多时,特征空间会变得非常大。同时,独热编码的值只有0和1,这就默认两个词语孤立存在,从而忽略了上下文的语义信息,不能体现两个词语之间的关系。近年来,词向量一词得到了很好的应用,Mikolov 等人于2013 年提出一种Word2Vec 模型,通过将初始特征值映射到实数低维向量,解决了词向量维度过大的问题,在词向量生成过程中也将词语与词语之间的关系进行了连接。
本文利用Google开源推出的Word2Vec工具包进行词向量训练,将中文文本数据库中的文本通过结巴进行分词处理后,使用Word2Vec中的Skip-gram模型进行词向量预训练。Skip-gram模型通过上下文预测目标词来训练语义嵌入,也可以捕获词语之间的语义关系。假设一个句子S的长度为N,整个文本可以向量化表示为式(1):
LSTM由3个门组成:遗忘门、输入门和输出门。首先,遗忘门决定从单元状态中删除掉哪些信息,然后输入门决定将哪些信息更新为单元状态,当遗忘门与输入门确定以后,单元状态可以随之更新。最后输出门决定网络的最终输出。整个过程中每个节点的状态由式(2)~(7)决定。
其中,σ表示Sigmoid 函数,ft、ot、it分别表示t时刻的遗忘门、输出门与输入门的节点操作,Wf、Wi、Wc、Wo为参数矩阵,bf、bi、bc、bo为偏置项,xt为时间t的输入向量,ht-1表示前一步产生的状态,ht表示最后输出的状态,ct-1表示上一步输出的单元状态,ct是当前单元的状态,运算符⊗表示逐元素乘法。
标准的LSTM是单向网络,这就说明当前状态只能按从前向后的顺序在文本序列中获取信息,但是对于文本数据,特别是对于文本分类任务,其结果主要取决于过去与将来的整体信息。为了解决这个问题,本文选择使用Bi-LSTM来处理两个方向的序列,其结构如图2所示。Bi-LSTM包含前向隐藏层和后向隐藏层,当前输出不仅取决于当前输入,还受到历史信息与未来信息的影响。其中前向隐藏层的输出为,后向隐藏层的输出为Bi-LSTM隐藏层的输出Ht可表示为式(8)。
图2 Bi-LSTM模型图Fig.2 Bi-LSTM model diagram
Bi-LSTM 的作用是建立文本级词语向量表示。因为每个词语对文本类别都有不同的贡献,所以为每个词语分配不同的权重能够区分词语间的贡献程度。注意机制可以为词语分配不同的权重,把注意力集中到对文本较重要的词语上,进一步提高对整个文本的理解。引入注意力机制后的计算过程如下。
其中,ui为Ht的注意力隐层表示,Ws为权值矩阵,bs为偏置项,αi是ui通过Softmax 函数得到的归一化权值,最后将Bi-LSTM 隐藏层的输出与注意力权重值进行点乘与累加操作,得到该通道的输出T。
常用的CNN 模型主要由卷积层、池化层和全连接层构成,卷积层是CNN的核心,可以看作一种特征提取器,用于从文本中提取局部特征,因为共享权重,所以模型的参数更少。池化层位于卷积运算之后,用于自然语言处理中的特征选择,捕获最突出的特征。池化操作大致分为最大值池化、平均池化以及K-max池化三种,本文采用最大值池化。全连接层一般与输出层进行连接,主要作用是将输送来的特征整合到一起,减少特征信息丢失对分类带来的影响。
为了提取到更加丰富的局部特征,本文使用双层CNN,结构如图1 所示,将CNN1 的输出与原输入的词向量矩阵进行融合,用于CNN2 的输入,接着对CNN1与CNN2 的输出进行融合,重新利用原始特征,确保更多的特征参与到模型的学习过程中,增强特征对分类结果的积极影响。在进行卷积计算过程中,为了保证每层CNN 输入向量的维度与输出向量的维度保持一致,使每个卷积层中的Padding参数都选择SAME模式。
将向量矩阵S=[x1,x2,…,xN]输入,xi∈Rd表示一个文本中第i个词语对应词向量,参数d表示词向量的维度。取卷积核W=[w0,w1,…,wβ-1] ,卷积核中词语的个数为β,卷积计算公式如下。
式中,f是非线性激活函数,本文使用ReLU 作为激活函数,Xt:t+β-1表示输入词向量矩阵S的第t列到第t+β-1 列,b表示偏置项。
词向量矩阵S经过式(12)进行卷积计算,可以得到CNN1 的输出矩阵C1=[ ]c1,c2,…,cN ,N为词向量个数。将原始输入矩阵S与CNN1的输出矩阵C1通过Concat函数进行融合,得到融合后的特征矩阵S2=[c1,c2,…,cN,x1,x2,…,xN],将其作为CNN2的输入,通过式(12)进行卷积运算,得到CNN2的输出矩阵C2=[k1,k2,…,kj],j为词向量个数。最后,将CNN1的输出C1与CNN2的输出C2进行Concat 融合,得到下层网络的输入矩阵C3=[c1,c2,…,cN,k1,k2,…,kj] ,Concat融合公式如式(13)。其中,axis=1 表示将C1与C2进行横向拼接的过程,只改变了词向量的个数,词向量的维度d未发生改变,从而大大减小了融合操作给整个模型带来的负面影响。
下一步对卷积操作的输出矩阵C3进行Attention与池化层处理,用于筛选并提取出更突出的特征,其中注意力机制引入过程见式(14)~式(16)。池化层对特征向量进行降维操作,通过最大值池化获取更丰富的特征信息。
其中,Ct是t时刻通过双层CNN学习到的特征表示,ut为Ct的注意力隐层表示,Ws为权值矩阵,bs为偏置项,αt是ut通过Softmax 函数得到的归一化权值。
上述两通道通过不同的网络结构捕获到了文本序列的局部特征与全局序列信息,在进行分类前需要对两个通道提取的特征进行融合。由于在第二通道中池化层对特征向量进行降维操作,使得两个通道的输出呈现不同的维度,需要对两个通道输出的特征矩阵进行一定的处理,然后将融合后的特征保存在outputs中,作为全连接层的输入,全连接层中使用ReLU激活函数。
在全连接层之后引入Dropout 机制,使权值更新不只依赖部分特征,这样做是为了防止训练过程中出现过拟合。最后将处理后的outputs输送到Softmax分类器,本文通过Softmax 分类器输出类别的概率分布。将x分类为类别j的概率为:
本文使用两种不同类型的数据集进行实验,来测试DAC-RNN 文本分类模型的分类效果。数据集包括THUCNews新闻文本数据集、今日头条新闻文本数据集。
THUCNews 新闻文本数据集是由清华大学提供并公开的一种大规模文本数据集,该数据集是根据新浪新闻的某个订阅频道6年间的历史数据筛选生成,共有74万余篇新闻文档,包含14个新闻类别,常用于长文本分类任务。本文选用其中10 个类别的样本,每类取5 000条作为训练集,1 000条作为测试集,500条作为验证集。
今日头条新闻文本数据集由今日头条提供,共有38 万余条新闻,包含15个新闻类别,数据中的新闻标题很短,不超过50个字,可用于进行短文本分类任务。实验中提取其中的8 个类别,类别及数量关系如表1 所示。在每个类别的数据中抽取80%作为训练集,剩余的数据中各取一半作为测试集与验证集。
表1 今日头条数据统计Table 1 Statistics of Toutiao
实验环境配置如表2所示。
表2 实验平台设置Table 2 Setting of experimental platform
本文采用mini-batch梯度下降法对模型进行批量训练,采用Adam 作为模型优化器,两个CNN 使用卷积核的大小由kernel_size定义。模型的具体参数设置如表3所示。
表3 实验参数设置Table 3 Experimental parameter setting
3.3.1 性能分析
分类模型的评价指标主要包括准确率(Acc)、精确率(P)、召回率(R)和F1 值。
为了验证DAC-RNN模型的分类效果,对DAC-RNN模型及其变体DC-RNN模型进行测试,两者的区别在于后者未引入注意力机制。两模型在THUCNews数据集上的测试结果如图3所示,在今日头条数据集上的测试结果如图4 所示。其中纵坐标表示这些类别在测试集上的准确率(Acc),单位为%。
图3 THUCNews数据集测试结果Fig.3 Test results of THUCNews dataset
图4 今日头条数据集测试结果Fig.4 Test results of Toutiao dataset
通过图3 和图4 可以看出,DAC-RNN 模型在两个测试集的不同类别中都得到了很好的分类效果。图3中显示只有房产类的准确率低于95%,造成房产类准确率偏低的原因是房产内有些数据与其他类的数据相似,并且数据中其他类别词语的权重较高所致。图4 中有一半类别的准确率达到90%以上,其中体育类的准确率更是高达93.8%。此外,从两图中很明显可以看出,加入注意力机制的DAC-RNN 模型比未加入注意力机制的DC-RNN模型有更好的分类效果,其中图3的房产类引入注意力后准确率提高了2.55个百分点,而图4中体育类引入注意力后准确率更是提高了3.03 个百分点。以上结果不仅证明了在模型中加入Attention 机制提高了模型的分类效果,更是体现了所提模型在长、短文本的实际应用中均具有良好的分类性能。
3.3.2 卷积核尺寸对模型性能的影响
卷积核的尺寸对模型的分类效果有显著的影响,为了使模型发挥出更好的性能,本文通过实验对卷积核的尺寸选择进行调优,实验结果如图5所示。由于本文搭建的模型使用了两个CNN层,需要研究各种CNN尺寸组合对模型性能的影响。图5 中横坐标表示CNN 尺寸组合,例如(2,3)表示模型中CNN1 的卷积核尺寸为2,CNN2的卷积核尺寸为3。
图5 卷积核尺寸组合对性能的影响Fig.5 Effect of convolution kernel size combination on performance
实验结果表明,在今日头条数据集中卷积核尺寸组合为(2,3)时,模型取得最佳分类效果,在THUCNews新闻文本数据集中卷积核尺寸组合为(3,5)时,模型取得最佳分类效果。卷积核尺寸过小会导致模型的特征提取能力降低,进而影响分类性能。随着卷积核尺寸的增大,模型的特征提取能力也会增大,与此同时,模型的各类参数也会随之变得更多,使模型变得复杂化,从而影响分类效果。
3.3.3 各通道对模型性能的影响
为了探究模型中两个通道对模型性能的影响,本文在今日头条与THUCNews两个新闻文本数据集上进行了对比实验:选择单独的Bi-LSTM+Att通道作为通道1模型,选择CNN+Att通道作为通道2模型。得到的结果如表4所示。
表4 各通道对模型性能的影响Table 4 Effect of channels on model performance
从表4中可以看出,使用单个通道的模型对文本进行分类时准确率偏低,而同时使用两个通道进行文本特征提取则取得了良好的分类效果。因此,使用两个通道分别提取文本序列的上下文关联语义与局部特征能够进一步改进文本分类的性能。
3.3.4 对比实验分析
为了进一步验证本文所提出的DAC-RNN 模型在文本分类方面的有效性,在THUCNews 新闻文本数据集、今日头条新闻数据集上进行对比实验。本文不仅与单模型进行对比,也与其他的神经网络模型进行了对比,同时引用了在相同数据集上具有代表性的网络模型。基线模型包括CNN[7]、LSTM、Bi-LSTM、C-LSTM[16]、Bi-LSTM+Att、字词融合+CNN[17]、Bi-LSTM-CNN+Att[18],结果如表5所示。
表5 各模型准确率对比Table 5 Comparison of accuracy of each model %
从表5中可以看出,与经典的单模型分类方法相比,本文所提模型DAC-RNN 在两个数据集上的分类准确率分别提高了7.53个百分点以及4.13个百分点,由此可以证明,CNN 与RNN 结合的网络结构更能有效地提取文本中的关键特征。通过比较模型Bi-LSTM与Bi-LSTM+Att的分类准确率以及模型Bi-LSTM-CNN+Att与C-LSTM的分类准确率,注意力机制的引入使模型的性能得到了进一步的提升。将本文所提模型与单通道的Bi-LSTMCNN+At模型的分类进行比较,准确率提高了1.15个百分点,这表明本文通过使用双通道的方法,能够更充分地发挥出CNN 与LSTM 对文本特征的提取能力,并且在CNN 通道中通过特征融合的方法增强了特征的重用,更是进一步提高了CNN 提取文本局部特征的能力。字词粒度融合+CNN 模型在THUCNews 数据集上与其他模型相比取得了很高的准确率,但是在表5中可以发现,本文所提模型在THUCNews 数据集上的分类准确率高达97.59%,比字词粒度融合+CNN模型的准确率更高。综上所述,通过在不同数据集上与基线模型的分类准确率进行对比,证明了本文所提出的DAC-RNN模型在文本分类任务的精度上取得了一定提升。
表6为DAC-RNN 模型在THUCNews 数据集上测试实验的三项评价指标,从表中可以看出,除了房产类的三项评价指标略低,其他各类的三项指标都取得了很高的结果,其中体育类、时尚类、游戏类以及娱乐类的三项指标更是高于0.98。表7 为分类结果混淆矩阵,展示了每个类别1 000条新闻文本的测试结果。结果显示有7 个类别分类正确的条数在980 条之上,体育类和游戏类更是高于990条。总体而言,各主题类别分错类的情况非常少。
表6 三项评价指标Table 6 Three evaluation index
表7 分类结果混淆矩阵Table 7 Confusion matrix of classification results
对比上述各项实验结果,本文提出的DAC-RNN模型在长文本分类任务与短文本分类任务中具有较好的分类效果,有效地提高了分类准确率。
本文结合CNN、RNN、Attention 的优点,提出一种基于注意力机制的双通道DAC-RNN 文本分类模型。该模型通过两个通道分别提取文本不同层次的全局序列信息与局部特征,使模型提取到更加全面的文本特征。将原始输入向量与各层CNN的输出向量进行选择性融合,通过特征重利用的方法减少局部特征的损失。实验结果显示,本文所提出的文本分类模型在长文本分类数据集与短文本分类数据集中均取得了比较好的分类结果。在接下来的研究中,着重从注意力机制算法、整体模型结构以及模型的参数三方面进行优化与改进,从而进一步提高模型对中文文本数据的分类性能,减少训练过程的时间消耗。