苗 将,张仰森,李剑龙
(北京信息科技大学 智能信息处理研究所,北京 100101)
随着信息技术的迅速发展,通过手机接入互联网获取信息,已成为人类社会的重要手段。运营商迫切需要准确高效地将信息分类,并给予用户个性化推送服务,这也是研究文本分类任务的重点。文本分类作为自然语言处理和信息管理的一种高效方式,是通过对目标文档的主题或内容分析,依据构建的分类体系或标准,高效有序的将文本归属到相应类别的过程。传统机器学习在用于文本分类时,表征能力有限,对于文本的语义、结构和上下文理解浅薄。深度学习弥补了传统机器学习在文本分类中的薄弱之处,改善学习上下文的能力,但存在模型可解释性不强、难以针对调整特征等缺点。本文提出一种使用BERT完成词向量训练,连接单向GRU网络提取文本主要特征,再利用注意力机制加权求和调整权重比例,然后连接单向LSTM网络提取核心的上下文特征的分类模型BGAL(BERT based on GRU with ATTENTION and LSTM)。
将字词表达成计算机可以理解的形式,是自然语言处理的首要任务。词向量就是将词语映射到实数的向量,最简单的词向量表示是每个词都单独表示。One-hot编码使用N位数据对N个词向量进行编辑,即词向量的维度与词汇表长度相等,每个词都有固定的索引位置,词向量之间仅有一位数据不同。虽然One-hot编码可以简单快捷生成词向量,但面对大规模词语时,会产生维度灾难,并且每个词语相互独立无法体现出词与词之间的联系。
想让词向量之间具有一定联系,可以选择Word2vec来表示。Word2vec的词向量是疏密向量,是将字词转化为连续形式的低维度值,在向量空间中将含义相近的词语映射到邻近位置。Word2vec虽然将词与词联系了起来,避免了维度灾难,但仍无法对一词多义有较好的处理,同时Word2vec无法对指定任务做动态优化。
BERT模型获取的是丰富包含文本语义信息的特征,通过训练大规模无标注语料来实现的。BERT模型不同于仅仅获得字词的语义信息的模型,而是专注于获得整个文本的综合语义信息。BERT作为一个训练的语言表征模型,随机遮盖句子中的词语,然后训练模型来预测被去掉的词语。理解两个句子之间的关系也是自然语言处理的核心任务,BERT模型从语料库中随机挑出两个句子,有一半的概率这两个句子是连贯的,另一半的概率这两个句子是完全无关的,通过如此训练,BERT模型就具备了理解并联系序列上下文的能力。
神经网络是由多个神经元相互连接形成的网状结构。简单问题可交于神经元处理,神经网络负担复杂问题的解决,通过增加神经网络层数可以挖掘数据暗含较深的联系。在神经网络大致有3个运行步骤,数据由输入层输入,关系被隐含层分析,结果经输出层输出。深度神经网络是神经网络的关键,其代表有CNN(卷积神经网络)和RNN(循环神经网络)。CNN具备空间性分布数据的能力,RNN具备时间性分布数据的能力。人工智能的学习深度和能力被深度神经网络提升到了一个新的层次。
通过对已有知识的深入学习,本文提出了BGAL模型,在注重文本分类精度的同时也兼顾速度。该模型是用BERT模型训练输入的文本来获取词向量,使获取的词向量尽可能综合均衡。得到词向量之后,将其作为新的输入,输送给单向GRU网络提取主要的文本特征,接着引入注意力机制进行加权求和,分配文本特征的权重,突出重要的文本特征,然后将新的文本特征输送到单向LSTM网络提取核心文本特征,使文本分类更加准确。
图1为本文所提出BGAL模型的基本结构图,其关键的处理步骤描述如下。最先将文本数据导入,用BERT模型完成无标注语料训练,获得综合语义信息词向量。然后使用单向GRU网络对综合词向量提取主要特征,再将主要特征输送给注意力机制,完成权重再分配来突出主要特征。随后将主要特征输入单向LSTM网络,提取核心特征,最后送入分类器进行分类。
图1 BGAL模型结构
BERT训练模型输出的语义特征会最大化表达出文本全貌,也就是高效率地不断调整模型参数。传统训练模型只能获取单方向的上下文信息,其表征能力并不够优秀,本质上还是单向语言模型。双向Transformer组件是BERT模型所使用的结构,可以深层双向融合左右上下文信息的语言特征。本文选择的BERT模型作为词向量嵌入层,将其输出接入神经网络再次训练,然后进行文本分类任务。BERT模型的结构图如图2所示。
图2 BERT模型结构
BERT模型训练文本生成的词向量,已经注重了文本上下文之间联系,然后将其送入单向GRU(gate recurrent unit)网络中提取特征。GRU网络因参数训练较少,构造相对简单,运算速度较快而经常被使用。可以建立双向GRU网络对文本特征进行提取,但双向GRU网络会再度从上下文提取特征,这就与BERT模型的工作有重复。并且双向GRU网络需要计算双倍的总量,大大增加了运算的时间,故本文选取单向GRU网络提取出主要的文本特征。单向GRU模型结构如图3所示。
图3 GRU网络结构
GRU网络摆脱路径传输信息,利用隐藏状态传输信息,复位门和更新门是仅有的两个门结构。图中的zt表示更新门,rt表示复位门。更新门用于控制信息的添加和遗忘,即当前时刻状态中的多少数据信息是由前一时刻代入的。更新门的数值增长,前一时刻代入的状态信息便增加。隐藏层状态候选写入的信息量由重置门控制,重置门越小,导致前一时刻写入的状态信息就越少。
式(1)为更新门的计算方法公式
zt=α(Wz·[ht-1,xt]+bz)
(1)
式(2)为重置门的计算方法公式
rt=α(Wr·[ht-1,xt]+br)
(2)
式(3)为候选隐藏层状态的计算方法公式
(3)
式(4)为最终输出的计算方法公式
(4)
在式(1)至式(4)中,α表示sigmoid函数,W表示权重矩阵,b表示偏置量,·表示矩阵乘,*表示按元素乘。
GRU网络通过上述结构,实现保存之前时刻信息基础上学习新知识,因为只有重置门和更新门,并且单向传播,可以大幅减少所需要训练的参数,加快训练的速度。
人类大脑最多的数据是由视觉获得的,为了更准确和高效提升视觉信息的处理,会将注意力聚焦于重点区域。为了让数据构成中的重要部分被训练所关注,便在神经网络实现预测任务中加入注意力机制,即注意机制可以使神经网络具有聚焦其输入子集的能力。融合注意力机制的文本,可以降低非关键字词的权重,提升文本数据中关键字词的权重。ATTENTION模型结构如图4所示。
图4 ATTENTION结构
式(5)、式(6)、式(7)为注意力机制的计算方法公式
uit=tanh(Wwhit+bw)
(5)
(6)
si=∑tαithit
(7)
在式(1)至式(4)中,W表示权重矩阵,h为隐藏向量,b表示偏置量。
将注意力机制突出的重要特征,输入到单向LSTM(long short term memory)网络进一步提取出核心特征。LSTM避免了梯度消失和梯度爆炸出现在序列训练过程中。LSTM网络,内部具有4个网络层,其结构相对复杂,精度提取较高。LSTM的隐藏状态称为细胞状态。细胞状态中,一条贯穿细胞的水平线表示像传送带一样,它贯穿细胞却分支较少,确保信息不变地流过,而进行添加或者删除信息的操作则有LSTM的门完成。如果使用双向LSTM网络,将会放大LSTM的并行处理的劣势,造成算力资源的浪费。单向GRU模型结构如图5所示。
图5 LSTM网络结构
忘记门、输入门和输出门是LSTM网络所具有的3个门结构。忘记门在忘记阶段的操作是忘记不重要的,记住重要的,上一个节点的输出进入到忘记门后进行选择性忘记操作。在选择记忆阶段要往当前状态保存什么样的信息,是输入门主要作用。输出阶段则由输出门进行控制,输出门决定当前时刻细胞状态中的哪些信息可以输出。
式(8)为遗忘门的计算方法公式
ft=α(Wf·[ht-1,xt]+bf)
(8)
式(9)、式(10)、式(11)为输入门的计算方法公式
it=α(Wi·[ht-1,xt]+bi)
(9)
(10)
(11)
式(12)、式(13)为输出门的计算方法公式
ot=α(Wo·[ht-1,xt]+bo)
(12)
ht=ot*tanh(Ct)
(13)
在式(8)至式(13)中,α表示sigmoid函数,W表示权重矩阵,b表示偏置量,·表示矩阵乘,*表示按元素乘。
通过使用单向LSTM网络,我们可以使用合理的计算量来更好地捕获文本的核心特征。获取的核心特征最终输入到分类器中进行分类,对于文本分类任务而言,拥有核心特征将会获得更好的分类效果。
表1 THUCNews数据集实验数据分布/万条
本文采用准确率(Accuracy)、精确率(Precision)、召回率(Recall)和综合评价指标(F1)作为评测指标,来对BGAL模型的分类性能进行评价。评价指标涉及参数有TP、FN、FP、TN。TP属于判断正确,且判为了正,即正的预测为正的。FN属于判断错误,且判为了负,即把正的判为了负的。FP属于判断错误,且判为了正,即把负的判为了正的。TN属于判断正确,且判为了负,即把负的判为了负的。
准确率是表示预测符合标签的样本与总样本的比例,即正的判为正,负的判为负,故式(14)为准确率的计算方法公式
(14)
精确率是表示正确预测正样本占实际预测为正样本的比例,即预测为正的样本中有多少是对的,故式(15)为精确率的计算方法公式
(15)
召回率是表示正确预测正样本占正样本的比例,即样本中有多少正样本被预测正确了,故式(16)为召回率的计算方法公式
(16)
F1是Precision和Recall加权调和平均,当F1较高时表明实验方法较为理想。故式(17)为F1的计算方法公式
(17)
本实验采用Pytorch框架进行相关模型的编码实现,在Windows10系统上采用GPU(NVIDIA GeForce RTX 2060)进行模型的训练和调试。实验模型BGAL参数见表2。
表2 BGAL模型参数
本文做了A、B、C这3组实验,3组实验中训练集、测试集和验证集保持不变,实验所共有的参数值不变。实验A选择TextCNN和TextRNN作为实验模型,实验B选择BERT、BERT_CNN和BERT_RNN作为实验模型。实验C选择BERT_BGRU和BGAL作为实验模型。实验A与实验B是为了验证BERT模型作为嵌入层来训练词向量的有效性,实验B与实验C是为了验证本文提出的BGAL模型在处理文本分类上的优越性。实验A、实验B和实验C的实验结果见表3。
表3 综合实验结果
从表中结果可以看出,TextCNN模型准确率处于所有实验模型中的底位。TextCNN模型丢失了结构信息,较难发现文本中的转折关系等内在信息。TextCNN模型只能在卷积过程中计算与关键词的相似度,然后通过最大池化得出模型所关注的关键词是否在整个文本中出现。TextCNN模型不知道关键词出现次数及关键词的顺序,所提取的特征便会出现偏差,最后在分类器累加输出导致分类错误。
TextRNN模型相较于TextCNN模型的结构更加灵活,可以方便地替换单元如使用GRU单元,将单向网络设置成双向网络,添加Dropout随机失活率和BN层等。TextCNN模型相比于TextRNN模型在准确率上要低,但训练速度上稍快。TextRNN使用softmax函数完成最后的多分类任务,在此之前RextRNN模型需要完成前向或反向单元在最后一个时间步长上隐藏状态的拼接。
BERT模型可以训练文本数据提取特征,然后直接输入到分类器中进行分类,而不用作为词嵌入。直接使用BERT模型提取特征连接分类器,其文本分类的准确率已经较大超过TextCNN和TextRNN模型,并且运算效率极高。而相比于BERT为词嵌入,然后接入神经网络的BERT_CNN和BERT_RNN模型,其有效地优化了输入文本的向量表达,获得了更好的训练效果。循环神经网络相较于卷积神经网络,在自然语言处理上有着更好的性能,在经过BERT优化词向量之后,故BERT_RNN的精确率优于BERT_CNN的精确率。
BERT模型连接双向GRU网络在文本分类上也达到了较好的表现。因为GRU网络结构相对简单,参数较少,双向堆积能很好地捕获文本的总体特征。但双向GRU网络需要进行双向传播,大大增加了运算的时间,同时双向GRU网络对文本特征的提取会重复,导致忽视主要特征。所以本文提出的BGAL模型,有效地优化了分类时的相对权重,在提高文本分类精度的同时也注重运算效率的提高。为了验证BGAL模型的分类效率,本文对比了BERT_CNN、BERT_RNN和BERT_BGRU这3个模型达到收敛所需要的时间,在共有参数保持一致的情况下,实验结果见表4。
表4 收敛耗时对比
从表4可以看出,由于RNN无法并行进行计算,所以RNN的收敛速度较慢,而双向GRU网络又进一步加大了运算量,导致双向GRU网络收敛耗时最为长久。本文所提出的BGAL模型的收敛耗时略高于BERT_RNN模型,但明显低于BERT_BGRU模型。实验结果表明,BGAL模型在有较高的分类准确率的基础上,还兼顾了运算效率,减少了耗时。
本文提出的BGAL模型,在每个具体的分类任务中的准确率都超过了90%,在体育的分类上甚至达到97%的准确率,准确率和效率都保持在较高水平,对处理词句的其它自然语言处理任务提供了一定的参考价值。但是,本文的实验主要在中文短文本数据集上进行了验证,在以后的工作中我们将尝试对中文长文本进行处理,以验证模型是否具有普适性。同时尝试其它方式来优化词向量表示、融入标点符号的位置信息和优化神经网络结构等,从而提升文本分类的准确率,加快文本分类的效率。