黄卫春, 邹 瑶*, 熊李艳, 陶自强
(1.华东交通大学软件学院, 南昌 330013; 2.华东交通大学信息工程学院, 南昌 330013)
文本分类作为自然语言处理(natural language processing, NLP)中基础且非常重要的一项任务,被广泛应用于主题分类[1]、垃圾邮件检测[2]、情感分析[3-4]等领域。面对日新月异的社会动态以及错综复杂的信息,如何能够快速且有效地将这些信息进行筛选与分类是一项非常困难的任务。句子分类对自然语言处理应用是至关重要的,同时句子分类也是处理数据的关键步骤与核心任务。
近年来,深度学习模型被广泛应用在文本分类任务上,其中常见的是循环神经网络(recurrent neural network,RNN)和卷积神经网络(convolutional neural network,CNN)[5],特别是CNN在计算机视觉领域取得的巨大成功,CNN也因此被成功的引用到自然语言处理领域[6]。众多学者在深度学习模型下已经提出了许多有效的文本分类算法,相对于传统的方法有了较大的提升。但是传统类长短期记忆网络(long short-term memory,LSTM)网络存在不能同时对当前时刻之前和之后信息进行编码以及大多数模型不能对文本语义信息进行丰富表达的缺点,导致最后的效果不佳。
为了克服上述问题,提出一种基于CNN的多通道特征表示文本分类模型(multi-channel feature representation text classification model based on CNN,MC-CNN)。通过不同来源的词向量表示文本来丰富文本语义信息;利用双向长短期记忆(bi-directional long short-term memory,Bi-LSTM)能够在正反两个方向上进行时序特征提取的特点对不同来源词向量所表示的文本进行特征提取形成多通道特征表示;然后通过多尺度CNN网络提取空间特征的同时进一步实现对未来信息的考虑,进而完成文本分类任务。
Johnson等[7]提出了一种单词级别的深层CNN模型来做文本分类任务。该方法可以捕捉文本全局语义表征,在增加网络深度的同时可以不增加太多计算开销。Dong等[8]在文本情感分类问题上提出了一种可变卷积和池卷积的神经网络。该方法在词嵌入维度引入4种卷积运算来挖掘词向量语义维度的局部特征并获得了较好的效果。Wang等[9]提出了一种密集连接的CNN模型处理文本分类任务,该方法通过在卷积层之间设计了密集连接和多尺度特征注意机制两个方式来自适应地选择文本分类的多尺度特征,从而提高分类的准确率。
Zhou等[10]提出了一种基于注意力机制的双向长短期记忆(bi-directional long short-term memory, Bi-LSTM)用于文本关系分类任务。该模型通过在Bi-LSTM中引入Attention机制,来捕捉句子中最重要的语义信息,从而避免了传统工作中复杂的特征工程,并在该任务中取得比较优秀的效果。Zhao等[11]提出了一种基于RNN的层次多尺度密集连接文本分类模型。该方法通过密集连接的方式捕捉长期语义相关性,通过将多个密集连接的循环单元组织成层次多尺度结构来获取文本数据的尺度信息。最后模型取得了不错的效果。
张腾等[12]提出了一种基于卷积神经网络和双向门控单元网络注意力机制的情感分析模型。该方法将情感积分引入卷积神经网络,利用情感词自身信息,通过双向门控循环网络模型提取全局特征,对影响句子极性的否定词等引入注意力机制实现对这类词的重点关注,提取影响句子极性的重要信息。谭咏梅等[13]提出了基于CNN与Bi-LSTM的中文文本蕴含识别方法,该方法通过使用CNN与Bi-LSTM分别对句子进行编码,自动提取相关特征,然后通过全连接层进行分类得到初步结果;最后使用语义规则对网络识别结果进行修正得到最终的蕴含识别结果。王俊丽等[14]针对短文本分类提出了ResLCNN模型。该模型通过在3层LSTM和CNN网络结构中的第1层中加入恒等映射,构建残差层来避免梯度消失。实验效果表明相比单层的网络结构,深层的模型效果相对较好。Liu等[15]提出基于注意力机制和卷积层的双向LSTM文本分类模型(AC-BiLSTM)。该方法利用卷积层从词嵌入向量提取高层次短语表示,利用Bi-LSTM访问上下文信息,引入注意力机制对隐藏层输出信息赋予不同权重。这样模型既能捕获短语局部特征,又能捕获全局语义。
模型整体架构如图1所示,MC-CNN模型的整个网络结构主要包含:双向长短期记忆网络层、多通道卷积网络层和全连接网络输出层。
图1 整体结构Fig.1 Overall structure
长短期记忆网络(LSTM)内部结构如图2所示,LSTM的核心思想是通过引入自适应的“门”机制来忘记历史信息和筛选输入信息。给定长度为l的序列S={x1,x2,…,xl},LSTM通过“词组-词组”的方式进行序列建模。同时,对于时刻t,LSTM单元中的记忆状态ct和隐含状态ht根据式(1)进行更新:
图2 LSTM网络内部结构Fig.2 Internal structure of LSTM network
(1)
传统的单向LSTM仅是“正向”的考虑了词与词之间的时序信息,而忽视了“逆向”这一重要信息,使得网络在对当前时刻的信息进行编码时只能考虑到之前的信息而无法顾虑到未来的信息。因此,引入Bi-LSTM机制在通过正向和逆向的LSTM循环单元来充分考虑在文本分类中词与词之间在当前时刻与未来时刻的特殊序列关系。与传统的利用Bi-LSTM进行文本分类的方法不同,本文方法在处理Bi-LSTM的输出结果时并不是将正向和逆向的输出进行结合,而是按序堆叠成两个通道再利用CNN来进行后续特征的提取,目的是更利于保留更多的空间语义信息,提高分类准确率。
双向长短期记忆网络主要包含Bi-LSTM1和Bi-LSTM2,分别用于对glove预训练词向量和word2vec预训练词向量表示的文本进行特征提取。对于其中任意一个分支结构来说也包含两个LSTM子网络,仅是在输入顺序上相反而结构上完全一样。因此给定序列S,对于任一分支结构在t时刻的输出结果表示为
(2)
图3 多通道特征表示Fig.3 Multi-channel feature representation
(3)
图4 多尺度卷积操作Fig.4 Multi-scale convolution operation
ci=f(W⊗Hi∶i+h-1+b)
(4)
式(4)中:b表示偏置,b∈R;f为非线性激活函数;Hi∶i+h-1表示任意输入序列经Bi-LSTM处理后,第i~i+h-1个词的特征向量所构成的矩阵。最终,对于长度为l的序列经卷积处理后将得到特征向量为
c=[c1,c2,…,cn-h+1]
(5)
(6)
最终,经过多通道卷积网络层处理后,将得到一个K维特征向量为
(7)
经多通道卷积网络层输出的K维特征向量后,将最终的特征向量经3个全连接层网络得到最后的分类结果。为了避免模型发生过拟合现象,引入了L2正则化以及Dropout机制,L2正则化通过在损失函数中加入L2范数作为惩罚项来使得模型拟合更倾向于低维部分。实验采用了交叉熵作为目标函数,通过最小化交叉熵损失函数来优化网络模型,利用梯度下降算法来进行参数优化。交叉熵损失函数为
(8)
为了测试模型性能的有效性,使用了6个不同的数据集,其中包含3个短文本数据集,和3个长文本数据集,具体信息如表1所示。实验中所有数据集均为公开标准数据集。
表1 数据集设置
(1)AG的新闻语料库(AG’s News Corpus): 496 835条来自AG新闻语料库4大类别超过2 000个新闻源的新闻文章,数据集仅仅使用了标题和描述字段。每个类别分别拥有30 000个训练样本及1 900个测试样本。
(2)Yelp评论数据集(Yelp review):Yelp评论数据集是来自2015年的Yelp数据集挑战赛,该数据集包含了1 569 264个评论文本的样本。Yelp_F (Yelp review full)是用于情感分类的用户评论数据集,每个评级分别包含130 000个训练样本和 10 000 个测试样本。Yelp_P是一个二分类数据集,不同极性分别包含280 000个训练样本和19 000个测试样本。
(3)斯坦福情感树数据库(Stanford Sentiment Treebank,SST):是情感分类的数据集,电影评论分为5类(消极、稍微消极、中立、稍微积极、积极)。实验数据选取的是SST中的SST-2,在SST基础上去除了中立评论,将数据集分为了积极与消极这两类。
(4)问句类型数据集(text retrieval conference,TREC):是一种用于问题分类的数据集,具体可以分为缩写、描述、实体、人物、地点、数值共六类。
(5)电影评论(movie reviews,MR):是针对电影的影评数据集,旨在将其划分为积极与消极这两种类别。
在对数据集的预处理中,仅保留了英文字符及标点,并将所有的字符转换为小写形式,将数据集中出现了例如“#”“*”“~”“$”等特殊符号进行了删除。同时,还去除了一些“to”“of”等经常出现但又毫无意义的停用词。此外,对于英文中的部分缩写进行了还原,例如I’m将被还原为I am。
经过预处理后的文本长度可能长短不一,为了更好地进行模型的训练,将文本长度设置为默认值,通过参数max_length来调节,小于默认值的句子进行填充,超过默认值的句子将多余的部分截取。
3.3.1 词向量选择
使用两种训练好的词向量模型glove和word2vec作为文本表示的原始输入。其中glove预训练词向量维度为300,word2vec预训练词向量维度为200。
3.3.2 评价指标
(9)
式(9)中:I(*)为指示函数,当内容为真时,其值1,反之为0。
3.3.3 超参数设置
参数设置如表2所示,其中,学习率为0.03,多通道卷积层中卷积核窗口大小为2、3、4、5;每个卷积核个数均为200,为防止过拟合使用dropout机制,dropout值设置为0.5;全连接节点数均为256。
表2 参数设置
3.4.1 模型整体结果分析
为了验证MC-CNN模型的有效性,选择了近五年来提出的多个先进模型,以不同的角度进行了实验对比。
(1)DSCNN模型由Zhang等[16]提出,模型首先利用LSTM对时序信息特征提取,然后再利用CNN提取空间特征,目的是为了解决LSTM不能考虑到未来时刻信息的缺点。
(2)VeryDeep-CNN模型由Lecun等[17]提出,模型受到图像领域加深模型深度提取特征效果更好的启发,使用了一个29层的CNN网络来获取文本数据长距离依赖关系。
(3)CNN由Kim[18]提出,该模型首次将卷积神经网络引入自然语言处理领域,模型仅仅使用了卷积层来对文本信息特征提取从而完成文本分类任务。
(4)fastText模型是由Grave等[19]提出的一种神经网络结构,它是一个简单而又高效的线性分类模型,能够在很短的时间内实现海量文本分类,支持亿万数据量。模型采用了对所有单词的词向量平均池化处理的方式来对文本进行向量化表示。
(5)WE模型类似于fastText模型,仅仅只是将平均池化替换成了最大池化。
(6)MCTC-dense模型由Xu等[20]提出,其核心思想是在不同时间维度采用了不同尺寸的卷积核提取文本不同尺度信息,同时不同尺寸的卷积核提取的特征还可以用来解决长序列间的依赖关系。
实验在短文本和长文本数据集上结果分别如如表3、表4所示,其中MC-CNN-w2v(multi channels-convolutional neural network-word2vec)表示的是通过使用word2vec预训练词向量作为输入进行文本分类;MC-CNN-glo(multi channels-convolutional neural network-glove)表示的是仅通过使用glove预训练词向量进行文本分类;SC-CNN(single channel-convolutional neural network)表示的是通过将4个通道赋以不同权重最后融合为一个通道的结果;MC-CNN则是采用两种来源的词向量和4个通道分开时的实验结果。
表3 各模型在短文本数据集准确率对比
表4 各模型在长文本数据集准确率对比
从表3可知,在短文本的分类任务中,所提出的MC-CNN模型在MR和TREC数据集上相比于其他模型都达到了最好的结果,尤其是在TREC数据集上达到了98.6%的结果,比DSCNN高出了3.2%,此外在MR数据集上的效果比fastText和WE均高出了6%以上。虽然模型在SST-2数据集上实验效果不及DSCNN模型,但是也取得了有竞争力的结果。通过以上实验结果可以得出本文模型可以很好地解决之前提出的问题。
实验进一步分析了MC-CNN在AG、Yelp_F和Yelp_P这3个长文本数据上的表现,结果如表4所示。实验结果显示相较于其他5个模型,MC-CNN在这3个长文本数据集上均取得了最好的结果,并且比排名第2的模型准确率分别提升了1.9%、0.2%和0.8%。与仅使用卷积神经网络来提取文本特征的模型相比,MC-CNN在3个长文本数据集上准确率均提升高出3%左右,由此可以说明仅仅使用卷积神经网络忽略了文本很重要的序列特征导致效果不佳。此外MC-CNN在3个长文本数据集上实验结果都比Very-Deep CNN效果都好,侧面也可以说明单纯的增加网络层数也并不能提高模型特征提取能力。
3.4.2 消融实验
为了更加证明MC-CNN模型的有效性,将MC-CNN3个衍生模型在6个数据集上的实验结果进行对比,从表3、表4可知,使用一种词向量来源的MC-CNN-w2v和MC-CNN-glo模型仅在数据集TREC和AG上的准确率好于其他几种模型,使用单通道特征表示的SC-CNN模型也仅在数据集TREC和AG上的效果优于其他几种模型。相较之下MC-CNN在6个数据集中有5个数据集的实验结果优于比其他模型。
为了说明多通道特征表示和使用不同来源词向量的优越性,将MC-CNN模型以及对应的变体在6个数据集上的准确率实验对比结果显示在如图5所示。从整体上来看,MC-CNN模型在6个数据集上的准确率均好于其他3个变体模型在各个数据集上的准确率;MC-CNN-glo模型在其中4个数据集上的结果均好于模型MC-CNN-w2v,在数据集TREC、AG、Yelp_F和Yelp_F分别高出0.8%、0.2%、0.7%和0.3%,侧面可以说明glove预训练词向量在本模型的效果比word2vec预训练词向量效果好。使用单通道的模型SC-CNN在整体上也都略差于使用多通道的模型MC-CNN-w2v、MC-CNN-glo和MC-CNN,在数据集TREC、AG、Yelp_F和Yelp_F上的准确率分别低了0.4%、0.7%、0.9%和0.8%,也可以反映利用多通道特征表示的优点。同时使用不同来源词向量的模型MC-CNN在6个数据集上的准确率均优于仅使用单一来源词向量的MC-CNN-w2v和MC-CNN-glo模型,准确率分别提升0.9%、0.1%、1.3%、0.8%、1.5%和1%,因此也可以说明同时使用多种来源词向量文本表示的优点。综上实验结果分析表明,采用多通道和多种词向量表示的MC-CNN模型整体效果要好于其他3种衍生模型。
图5 模型结果对比Fig.5 Comparison of model accuracy
从总体上看,MC-CNN模型在绝大多数情况下都好于实验中所对比的模型,尤其是在长文本分类数据集中。其原因在于:①MC-CNN模型采用了两种不同方式的词向量来源,其结合了各自所拥有的优势;②MC-CNN模型中的Bi-LSTM能够较好的同时对时间序列进行正序和逆序上的编码;③MC-CNN模型采用了一种新的多通道形式来取代传统的融合的特征表示方法并进行卷积处理,使得整个模型能够同时考虑到当前时刻之前和当前时刻之后的信息;这使本文所提出的MC-CNN模型能够在大多数情况下优于已有的文本分类模型。
以Bi-LSTM和CNN为基础提出基于CNN的多通道特征表示文本分类模型。该模型首先通过Bi-LSTM对不同来源词向量所表示的文本序列进行正逆序上的特征提取形成多通道特征,然后利用多尺度CNN网络来进一步使得模型能够同时考虑到当前时刻之前以及之后的信息,并最终完成分类任务。同时为了证明多通道特征以及不同来源词向量的有效性,实验对比了由MC-CNN所衍生出的3种模型。此外,由于注意力机制在自然语言处理领域越来越受到广大研究者的喜爱,因此计划下一步利用注意力机制来进一步改善模型。