陈农田,李俊辉,满永政
(中国民用航空飞行学院,四川 广汉 618307)
文本分类是自然语言处理经典的任务,吸引了学者们的广泛关注.文本分类主要包括样本的预处理、文本表示、特征工程和分类器四方面的工作[1].文本分类的核心体现在特征工程的选取和分类器的构建.Bengio等[2]最先构造出语言模型,为神经网络在NLP的发展提供了思路.在文本表示方面,Mikolov等[3]提出了两种词向量模型,利用形态学改进word embedding的工作.2014年Jeffrey等[4]等提出Glove方法,此方法能够通过全局词汇信息,来训练词向量,从而表示效果得到了提升.在特征提取方面,Kim[5]将卷积神经网络(Convolutional Neural Network,CNN)应用到了文本分类任务,采用多窗口方式提取关键信息,从而能够更好地捕获局部信息.Lee等[6]把循环神经网络(Recurrent Neural Network, RNN)与CNN相结合,证明了添加时序性可以提升分类效果.门控循环单元(Gate Recurrent Unit,GRU)[7]是RNN的一种,是考虑序列的长期时间性和反向传播过程中存在的梯度上升或下降等问题而提出来的.双向长短时记忆网络(BiGRU)[8]为正反向两个GRU组成,此网络模型能有效获取上下文语义信息.
近些年,深度学习在自然语言处理方面取得了一定成果,出现了一些新的文本分类模型.Bahdanau等[9]最早提出注意力机制,后来应用到了文本处理中,以区分文本中信息的重要性大小.随着技术的进步与人员的投入,学者们开始使用多个模型结合,以提高分类效果.Guo等[10]通过多通道TextCNN引入加权词嵌入来改善文本分类.余本功等[11]针对对话问句长度较短、特征稀疏等特点,提出一种层级注意力多通道卷积双向GRU分类模型,弥补问句意图理解不准确的不足,提高了问题分类性能.Liu等[12]使用六个情感分类数据集和一个问题分类数据集进行实验验证,证实了AC-BiLSTM在分类准确性方面优于其他文本分类方法.林思琦等[13]提出了一种融入观点句特征的汉越双语新闻情感分类方法,利用CNN与GRU模型相结合对特征进行识别,最后通过Softmax函数情感极性进行分类,提升了分类准确性.张帅[14]提出一种GM-CNN模型,提升了文本泛化信息和记忆信息能力.李文慧等[15]针对短文本信息量少、其网络易受干扰的特点,提出了一种利用注意力机制和对抗训练改进双向长短期记忆网络的多层级短文本分类模型,有效地解决了短文本分类效果差的问题.谢金宝等[16]利用CNN、LSTM、Attention结合构成多元特征融合的文本分类模型,用来提取不同层级的特征,提升模型辨别力.张志远等[17]利用CNN与LSTM模型结合改进,利用LSTM替代CNN中的最大池化层,以减少局部信息丢失,从而实现了短文本情感分类的研究.
综上所述,国内在自然语言处理领域取得了系列成果,但在分类模型与仿真方面还有待深入.本文在借鉴国内外学者研究基础上,提出一种多通道TextCNN-BiGRU-att中文文本分类模型,通过word2vec对初始文本向量化选取窗口值组成三通道,运用CNN提取局部特征,利用双向门控循环单元(BiGRU)提取上下文全局信息,运用注意力层与池化层获取并优化重要特征,采用softmax函数使误差loss极小化,最后进行分类模型仿真实验验证性能效果.
基于多通道TextCNN-BiGRU-att的中文文本多分类模型如图1所示.
图1 TextCNN-BiGRU-att分类模型网络结构图
在文本分析前,需要将计算机不认识的词汇、句子等转化成能够识别的数值形式.目前有两种热门转换技术:传统机器学习中的one-hot编码方式和基于神经网络的词嵌入技术.
one-hot编码是一种稀疏编码结果,这种表征方法一般有两个缺陷:第一是容易造成维数灾难;第二个则在于这种表征方式不能分辨词汇与词汇之间的相似性.因此词嵌入技术随之诞生,其基本想法是将词汇表中的每个单词表示为一个普通向量,从而解决了one-hot编码维度过多的问题.
word2vec模型是词嵌入的典型技术,如图2所示,由输入层(input)、隐藏层(hidden)、输出层(output)构成.模型的输入是一个独热(one-hot)向量,即文本信息用{x1,x2,…,xV}表示.假设词汇表的大小为V,每个隐藏层的维度为N,则隐藏层的输入由V×N大小的矩阵W表示.以同样的方式,可以通过N×V的矩阵W′使隐藏层与输出层连接,得到词向量.通常有两种语言模型,一种是根据上下文来预测中间词的CBOW(连续词袋模型),另一种是根据中间词来预测上下文的skip-gram模型[18].
图2 word2vec结构示意图 图3 本文CNN模型结构
卷积神经网络的核心思想是捕捉局部特征,对于文本来说,局部特征就是由若干单词组成的滑动窗口,其优势在于将不同抽象层次的语义信息进行提取与合并.由于本文设置BiGRU后连接激活函数与全连接层,故认为CNN主体有3部分构成:输入层、卷积层、池化层,如图3所示.
采用word2vec词嵌入技术对文本进行向量化作为CNN结构的输入,每个词的词向量为yi,yi∈RV×N.
卷积层通过设定好的滤波器对句子矩阵进行卷积操作,从而完成信息的抽取工作:
Si=f(G×yi:i+r-1+b)
(1)
式中:G代表卷积核,r为卷积核的大小,yi:i+r-1是i到i+r-1,b为偏置项,通过卷积层得到的特征矩阵Si,Si=[c1,c2,…,cn-r+1].为了不改变特征向量维度,与减少最大池化后某些特征的丢失,本文在池化层前先加入BiGRU模型进行全局特征的提取,经实验选取3,4,5窗口作为不同卷积核,得到S1,S2,S3三个序列结构的特征矩阵,将此分别作为BiGRU的输入,最终求得全局与局部特征向量,三者结合后得到综合特征矩阵C.
池化层,为了获得局部值得最优解,采用MaxPooling技术将综合特征矩阵C进行下采样,如式(2)所示:
(2)
即对于池化后的向量有全连接层连接,得到池化后特征矩阵U,如(3)式:
U=[M1,M2,…,Mn]
(3)
GRU有效克服RNN存在的梯度问题与长期依赖问题,以LSTM模型为结构基础,合并细胞状态与隐藏层状态,并将遗忘门与输入们结合为更新门(update gate),输出门更名为重置门.GRU比LSTM少了一个门,且所需参数减少,因此训练速度要快于LSTM.Rana[19]已在实际运用中证实RNN两个变体实力相当,但GRU运行效率提升了18.16%.GRU单元详细结构图如图4所示.其具体的计算过程如(4)~(7)式所示:
图4 GRU模型
zt=σ(wz·[ht-1,Ct])
(4)
rt=σ(wr·[ht-1,Ct])
(5)
(6)
(7)
BiGRU为两个不同方向的GRU组成.GRU能有效捕获文本序列信息,但文本数据的一般表达为从左至右,单一方向的GRU只能捕获某一时刻前的信息.因此,本文采用双向GRU网络来改善这一问题,利用正反两方向所捕获的信息结合,从整体提取综合特征,其结构如图1中GRU模型部分.
注意力模型是用来表示词语于输出的结果之间的相关性.通过对语义编码分配不同的权重值,从而区别文本信息的不同重要程度,提升分类效果.本文采用前馈神经注意力模型进行实验.其相关公式如(8)~(10).
生成目标注意力权重vt,ht为隐藏单元:
vt=tanh(ht)
(8)
为了使计算机能识别不同类型的文本,将softmax函数引入,生成概率向量ut:
(9)
通过将注意力权重配置给ht,使注意力机制发挥作用,at为ht的加权平均值:
(10)
本文研究的是文本多分类问题,故选择分类函数为softmax,将输出概率映射到0到1之间,且所有概率的和将等于1.
(11)
式中:z是一个向量,zi和zj是其中元素,k为类别数.
求得最小化损失函数是训练的目标,故选择与softmax对应的交叉熵损失函数,如式(12)所示.
(12)
式中:n为训练数据的总数,yj表示真实标记的分布,aj则为训练后的模型的预测标记分布.
模型优化器选择Adam,此优化器结合了AdaGrad与RMSProp两种算法的优点,参数更新不受梯度影响.如式(13)~(17).
mt=β1mt-1+(1-β1)gt
(13)
vt=β2vt-1+(1-β2)gt2
(14)
(15)
(16)
(17)
式中:α=0.01,β1=0.9,β2=0.999,gt代表时间步长,ε=10-8.01.
采用10 000条10种不同类别的新闻公开数据集作为实验的语料库,其各类别数量如表1所示,且取0.15%作为测试集.由于是中文语料,对其进行分词与停用词预处理,并设置文本长度不超过256个词语.利用word2vec将文本内容向量化,将类别one-hot编码进行实验.
表1 新闻文本各类别数量
仿真实验语言为python3.7,在spyder工具下使用tensorflow-keras框架,CPU处理器.
参数对分类效果起直接作用,经调试,具体的参数设置如表2所示.
表2 参数设置
在NLP中通常用准确度(Accuracy)、精准度(Precision)、召回率(Recall)、F1值(Fθ)作为常用评判模型优劣性标准.
设总的测试集个数为TP+TN+FP+FN,其各自代表含义如表3所示.
表3 评估指标参数相关含义
准确度越高,说明分类能力越好,其计算公式如式(18).
(18)
精准度的计算公式如下:
(19)
召回率是对查全率的评估,如式(20)所示:
(20)
F1为综合评估指标,如式(21)所示:
(21)
多通道TextCNN-BiGRU-att模型和传统机器学习方法支持向量机(SVM)、深度学习网络TextCNN-att、GRU-att、BiGRU-att、TextCNN-GRU-att比较,在测试集上计算准确率、精准度、召回率、F1值进行评估,测得的结果对比如表4所示.
表4 不同模型结果对比
从表4显示的6种模型可以看出:通过准确度、精准度、召回率、F1值四个综合评估指标对比,本模型的准确度能达到94.5%,且所有指标都优于其他对比模型.SVM能取得较好的分类效果,但其他6组深度学习模型明显优于SVM.考虑到attention机制用来表示词语于输出的结果之间的相关性,故对每一个深度模型都设置这一机制进行比较.第2、3组模型为单一的网络模型,从结果分析可以看出,单一思路的局部特征提取和序列特征提取的两种方法分类效果相近,但四个综合评估指标未达优值.设置3、4组实验对比,双向门控循环单元效果较优.第5、6组与之前的3种深度模型对比,联合模型解决了单一思想的不足,有效提高了分类的准确度,且都高于90%.考虑神经网络的复杂程度可能对分类效果产生影响,设置5、6组实验对比,在本实验中,5组从四项评估指标看出分类效果略低于6组本文模型.
为了更加直观反映本文设置的几种深度模型的优劣,本文选择绘制出验证集在10个epoch下的准确度(acc)和损失率(loss)变化图,分别如图5、图6所示.
图5 验证集准确度变化 图6 验证集损失率变化
从图5准确度变化图可以看出:从宏观上看,这5种深度模型的准确度都呈上升趋势,两种联合模型相对趋势较平稳,对于前3种深度模型比波动性较小.从微观上看经过4个epoch后5种模型的准确度都在80%以上,其中两种联合模型的准确度都在90%以上.两种联合模型比较,本文提出的模型只有在第9个epoch时低于另一联合模型,而其余epoch下都较高.本文提出的多通道TextCNN-BiGRU-att模型在较少的epoch下就能获得较高准确度,说明能达到较好的分类效果.
对于损失率,数值越小收敛性越好.从图6可以看出:5种深度模型都在前3个epoch出现不同程度的下降,CNN模型的下降幅度最大.本文所提出的模型变化趋势平稳,在调整权重的过程中,第8个epoch时出现上升后下降波动.其原因可能是某个参数的突变影响,这时模型需要重新学习一个新的数值,使梯度重新下降.但此模型从总体上看,损失率都低于其他对比模型,且稳定在0.22%左右,即体现出本模型收敛速度快、准确度高等特点.
考虑若只在单一数据集上进行实验,不能保证泛化能力,可能会出现因为数据量不足出现过拟合现象.因此,将以本模型为基础,用于航空不安全信息文本之中,进行泛化能力实验的分析.
美国航空安全事故报告在线数据库(ASRS)是世界目前最大的由航空前线人员(包括飞行员、管制员、机械师、乘务员和调度员)提供的自愿性机密安全信息库,其中反映了当前航空系统中存在的漏洞与隐患.报告通常包括事故日期(地点)、飞行环境(计划、阶段、任务)、事故类型及结果等结构化数据和对整个航空事件经过进行描述的非结构化数据.选择ASRS为主要数据来源,并收集筛选我国飞行不安全事件或事故对语料库进行扩充,共产生 2 267 条数据.
将文本按照上述模型步骤进行分析,其结果与刘梦娜[20]所建立的ASRS文本分类模型进行比较,其结果如表5所示.
表5 ASRS文本分类模型比较结果
本文模型与比较模型准确度相差不大,虽然其准确度只提高了0.2%,但足以证明其模型的泛化能力良好,故为后续研究提供了参考.
提出了多通道TextCNN-BiGRU-att文本分类模型,利用TextCNN抽取文本在3,4,5大小的窗口下的局部特征信息.同时将所提取的特征利用BiGRU深度学习其相互之间的联系,从而提高模型的特征表示能力.根据仿真实验可以看出多通道TextCNN-BiGRU-att较传统模型有效提升了分类准确率,且收敛速度较快.并且将此模型应用于ASRS航空不安全信息文本之中,具有较为良好的泛化能力,因此,为该领域的相关研究工作提供了一定的思路.