雷景生, 钱 叶
(上海电力大学 计算机科学与技术学院, 上海 200082)
文本分类是自然语言处理领域中非常重要的一部分。其研究内容主要包括新闻文本的类别划分和情感分析。得益于网络媒体的迅速发展,使得该领域的研究具备海量文本数据的支持,这些数据蕴含着丰富的信息。如何管理这些数据,并从中准确高效地获取有价值的信息,这是目前很多研究者关注的问题[1]。
近年来,对于文本分类的研究已经取得了不错的进展。PANG B等人[2]利用词袋模型,结合贝叶斯、最大熵、支持向量机等分类器对电影评论数据进行情感分类,并取得了较好的结果。但随着技术的更新,浅层的分类模型在分类任务中无法很好地保留文本上下文信息的问题逐渐暴露出来,因此研究者开始将目光转向对深度学习模型的研究。
深度学习模型强调模型结构的深度和对特征的学习,因而广泛应用于图像领域的研究[3]。YANN L C等人[4]将卷积神经网络(Convolutional Neural Network,CNN)应用于文本分类任务中,显著地提升了文本分类的准确率。MIKOLOV T等人[5]提出将循环神经网络(Recurrent Neural Network,RNN)应用于文本分类任务中,相较于CNN利用卷积层提取特征,RNN在当前时间的输出是由上一时间的输出和当前时间的输入共同决定的,所以能更好地学习该词上下文的信息。但是随着时间序列的增长,RNN模型容易出现梯度消失和梯度爆炸的问题。
为了解决RNN结构上的缺陷,基于RNN的各种变体不断出现,如长短期记忆神经网络[6](Long Short-Term Memory,LSTM)、门限循环单元[7](Gated Recurrent Unit,GRU)等,并在自然语言任务中取得了不错的结果。这些模型的共性是利用词嵌入模型(word2vec)将分词后的文本中每个单词映射成一个向量,将文本细化成句、词级别,然后将结果传入下游模型进行特征提取和分类处理。因此,文本信息特征表示的优劣对下游模型的准确率影响重大,而且文本本身还存在特征稀疏的情况。分词后的文本特征已经有相当程度的丢失,词嵌入模型的输出结果并不能完整地表示原始文本的语义[8]。另一方面,由于应用场景的不同,使得每一次任务都需要对当前场景下的语料进行训练,故对于模型的灵活性和泛化性都是较大的挑战。因此,为了最大限度地保留句子本身的含义,人们开始将研究重点转向以句子为单位的特征表示方法。
目前,基于大语料库的预训练模型已经逐步成为自然语言处理技术的研究趋势。由于这些预训练模型是以庞大的语料库作为基础训练出来的,因此相较于特定场景的语料库训练出的模型更能适应不同场景下的文本任务。为了更好地解决预训练模型中句子级的文本分类问题,尽可能地保留句子中词与词之间的内在联系,PETERS M E等人[9]对预训练模型进行了改进,提出语言模型嵌入(Embeddings from Language Models,ELMo)算法。ELMo是一种新型深度语境化词表征方法,利用深度双向语言模型(Bi-directional Long Short-Term Memory,BiLSTM)内部状态的函数在大语料上训练出对应的语言模型,以此来获取句子中的句法特点以及词在不同语境中的语义特征。在此基础上,Google公司提出了使用transformer编码器[10]的思想,利用attention机制的模型结构进行计算的时间复杂度相较于传统的深度神经网络大幅降低,同时可以捕捉长距离的依赖关系。但是ELMo算法[11]严格来说是属于单向训练的语言模型,其双向结构存在着时间先后的关系,不是真正意义上同步进行的,因此Google提出了真正意义上使用双向的预训练语言模型——来自tranformer的双向编码器表示(Bidrectional Encoder Representations from Transformers,BERT)模型[12]。BERT模型利用attention机制,使得模型的上下层全部直接互相连接,真正实现了模型中所有层的双向连接。本文采用利用知识增强的语义表示(Enhanced Representation through Knowledge Integration,ERNIE)模型[13]是在BERT模型的基础上,对BERT预训练时的逻辑进行了改进,同时预训练的数据大量采用了中文数据集,因此更加符合中文文本任务的使用需求。另外,为了进一步提取文本上下文的信息,本文在ERNIE模型的基础上加入了双向门限循环单元(Bidirectional Gated Recurrent Unit,BiGRU),将ERNIE模型训练后的词向量作为BiGRU的输入进行进一步的特征提取,以得到更好的文本分类结果。
为了解决文本在上游模型转换过程中上下文信息丢失的问题,同时为了寻求一个更适合中文情感分析的预训练模型。本文提出了ERNIE-BiGRU模型的思路,整个模型由3个部分组成。首先,对经过预处理的数据集使用ERNIE预训练模型(以下简称“ERNIE模型”)进行预训练,得到句子级的词向量表示;然后,将模型输出作为BiGRU层的输入,进一步提取句子中每个词的上下文信息;最后,使用softmax层进行情感分类。其模型的整体结构如图1所示。
图1 基于ERNIEBiGRU的中文文本分类模型
ERNIE模型是一种基于知识遮蔽策略的增强型模型。通过对词、实体等语义单元的掩码,使得模型学习完整概念的语义表示。ERNIE模型在结构上主要分为transformer编码和知识整合两个部分。前者使用transformer作为模型的基本编码器,生成对应的词向量表示,以保留词在文本中的上下文信息;后者则通过多阶段的知识遮蔽策略,将短语和实体层次的知识整合到语言表示中。ERNIE模型结构如图2所示。
图2 ERNIE模型结构示意
由图2结构可以看出,模型的输出部分包含了文本上下文信息的词向量表示,且每个词向量[T1,T2,T3,…,Tn]都包含了整个序列的文本信息。由于传统的语言模型是以预测下一个词为训练目标的,因此使用双向编码会使得需要预测的词在多层上下文之间间接地“看到自己”,也就是说,如果要预测t时刻的输入En,则每个输入都会在隐藏层中看到目标En的信息,造成信息泄漏。为了解决这一问题,BERT模型将对应位置的输入变成[mask]标记,随机将输入序列的一部分遮蔽住。ERNIE模型在此基础上进行了进一步的优化,提出了一个多阶段的知识遮蔽策略,将字的遮蔽上升为短语和实体层面的遮蔽。
ERNIE模型是基于多层双向transformer编码器构建的语言模型。transformer编码器用的是全attention机制。attention[14]机制类似于人类理解句子的原理,是根据句子中的关键点去理解句子的整体意思,其原理为
(1)
式中:Q,K,V——输入字向量矩阵;
dk——输入向量维度。
在计算过程中,transformer编码器将句子中任意两个单词通过一个计算步骤直接联系起来,并将所有单词的表示进行加权求和,而权重是由该词的表示与被编码词表示的点积通过softmax层得到的,以此来极大地缩短远距离依赖特征之间的距离,大幅提高了特征的有效利用率。
ERNIE模型通过对实体概念知识的学习来进一步增强句子中完整概念的语义表示。为了实现这样的功能,该模型采用了多阶段的知识遮蔽策略。
第1阶段是基本遮蔽,把整个句子看作一个基本语言单位的序列,以字为单位进行遮蔽,但这一方式是在字的层面上进行随机遮蔽,因此很难对高层语义进行完全建模。
第2阶段是短语级遮蔽,也就是将一个短语作为基本遮蔽单位。随机选择句子的短语,将同一短语中的所有字变成[mask]标记并对此进行预测,因此短语信息在embedding过程中可以很好地保留下来。
第3阶段是实体级遮蔽,包括人员、地点、组织、产品等可以用适当的名称表示实体信息。在这个阶段,首先分析句子中的命名实体成分,然后随机选择句子中的实体,对其中的每一个字进行[mask]标记并预测。
经过3个阶段的处理后,最终可以得到一个由丰富的语义信息组成的词表示形式,句子中各成分之间的关联性可以很好地保留下来,在对完整的重要信息进行遮蔽的同时,其重要成分的语义信息也不会丢失。
GRU是LSTM的一种变体。它在LSTM的基础上进行了简化,将LSTM中的输入门和遗忘门合并成了单一的更新门,同时也将细胞状态和隐藏层状态混合在一起。GRU的更新门根据当前的数据对先前的数据进行筛选,重置门将先前的信息经过处理后作为新的输入。GRU的结构比LSTM更加简单,所需参数也更少,在降低计算复杂度、提高模型训练速度的同时,也降低了过拟合的可能性。GRU的结构图示意如图3所示。
图3 GRU结构示意
GRU中的计算公式为
zt=σ(ωz•[ht-1,xt])
(2)
rt=σ(ωr•[ht-1,xt])
(3)
(4)
(5)
式中:zt——更新门;
σ——sigmoid非线性激活函数;
ωz,ωr,ω——权值矩阵;
ht,ht-1——t时刻和前一时刻的隐藏层状态;
xt——t时刻的输入;
rt——重置门。
单向的GRU只能学习当前时刻之前的信息,而无法对当前时刻之后的信息进行学习,因此本文采用BiGRU来代替传统的GRU,利用双向保留信息的方式来得到一个词在前后文中的联系。在文本分类场景下,BiGRU可以通过上下文的信息得到一个词在文本中的语义特征,并尽可能地保留这个词在上下文中的信息,提高了分类的准确率。BiGRU的结构模型如图4所示。
图4 BiGRU的结构模型
由图4可以看出,t时刻BiGRU单元的隐藏状态是由t时刻前向隐藏层状态的输出和t-1时刻反向隐藏层状态的输出共同决定的。因此,对于一个句子中的每个词而言,该词的语义特征是由该词所处句子中的位置以及该词对应上下文的信息共同决定的。
为了验证基于ERNIE-BiGRU模型的中文文本分类方法的性能,本文采用带有标签的文本数据集对其进行验证和分析。实验环境及配置如表1所示。
表1 实验环境及配置
采用THUCNews数据集进行实验。THUCNews数据集是根据新浪新闻RSS订阅频道2005—2011年间的历史数据筛选过滤生成,包含74万篇新闻文档,均为UTF-8纯文本格式。本文在原始新浪新闻分类体系的基础上,抽取了20万条新闻标题,文本长度在20~30,一共10个分类类别(包括财经、房产、股票、教育、科技、社会、时政、体育、游戏、娱乐),每类2万条数据。将这20万条数据划分成训练集、验证集和测试集,其中,训练集16万条,验证集2万条,测试集2万条。数据集中每个类别的数据量保持一致,以保证类的分布平衡。
ERNIE-BiGRU模型有两种训练方式:一是不断更新整个模型的参数;二是固定ERNIE模型的部分参数,只更新BiGRU模型的参数。考虑到实验设备和时间成本,本文采用第2种训练方法进行测试,通过不断调整模型参数得到最佳模型性能的参数设定值。
由于数据集中有一些数字、英文以及一些特殊符号,因此在实验之前应首先对数据集进行预处理,将一些非中文的信息进行清洗,然后将处理后的数据集放入模型中进行实验。
为了验证模型的可靠性,本文将与以下模型的结果进行对比。
(1) CNN模型 KIM Y[15]对使用CNN模型进行文本分类的方法作了系统的阐述。该方法先将经过分词处理的文本信息通过word2vec转换成对应的词向量,然后利用CNN模型对词向量进行文本分类。
(2) BiGRU模型 邢长征等人[16]利用LSTM的变种GRU搭建多层GRU结构来进行文本分类。该模型使用多层GRU结构从多方面提取文本信息。
(3) BiGRU+attention模型 由王伟等人[17]利用BiGRU模型对文本深层次的信息进行特征提取,然后使用attention机制为提取的文本深层次信息分配相应的权重。attention机制是由RUSH A M等人[18]提出的,目的是从大量信息中有选择地筛选出少量重要信息,并聚焦到这些重要信息上。该模型证明了在提取上下文语义特征方面引入attention机制可以提升模型的性能;从另一方面印证了在BERT模型中使用self-attention计算词向量可以提升文本分类的性能。
(4) transformer模型 该模型利用一个只基于attention机制的结构来处理序列模型相关的问题,在摒弃传统CNN和RNN的情况下,不仅能够提升模型的性能,还可以减少训练时间。
(5) BERT模型 该模型提出了较为完善的预训练模型概念,但相较于ERNIE模型,BERT模型只使用了字级别的基本遮蔽,对语义信息的获取仍存在欠缺。
模型1~4均采用word2vec对文本数据进行词向量转换,并将词向量传入模型进行计算。BERT模型与ERNIE-BiGRU模型的基本参数一致。以上所有模型的超参数相同,epoch值均为10。在相同条件下,对每个模型进行多次实验,并取其最高值作为该模型的实验结果。实验部分的伪代码如下所示。
Input 实验数据集、预训练模型和预训练词库文件
Output 文本分类结果及多个评价指标
Begin
1.设置优化器、学习率以及其他模型参数
2.划分测试集、验证集和测试集
3.数据预处理
4.数据的分词及序列化表示
5.运行预训练模型,得到句子级别的向量表示
6.传入BiGRU模型进行特征提取
7.利用softmax分类器进行分类
8.计算精确率、召回率、损失值和F1值
End
自然语言处理中的评价指标很多,其中,针对文本分类的评测标准一般包括精确率P,召回率R和F1值,具体的计算公式为
(6)
(7)
(8)
式中:Tp——当实际值和预测值均为正时的数据数量;
Fp——当实际值为负、预测值为正时的数据数量;
Fn——当实际值为正、预测值为负时的数据数量。
由式(8)可以看出,F1值是由精确率和召回率共同决定的。
ERNIE模型的代码是在BERT模型的基础上进行改进的,同时加入ERNIE自身的预训练模型。参照BERT-Base的参数设置,网络层一共12层,采用12头模式,隐藏层768维共110M个参数,其他主要参数如表3所示。
表3 部分实验参数设置
为了直观地反映各种模型的优劣,在每一个epoch后使用验证集进行测试。通过验证集的准确率vacc和损失值vloss的变化来表示每个模型经过每一个epoch后性能的变化。其中,准确率vacc的变化如图5所示,损失值vloss的变化见图6。
图5 验证集准确率的变化曲线
图6 验证集损失值的变化曲线
由图5可以看出,所有模型的准确率在每一次epoch后整体都呈现上升趋势。其中ERNIE-BiGRU模型的准确率从第1个epoch开始就明显高于其他模型,且一直稳定在92%以上。transformer模型的准确率随着epoch的变化波动较大,且准确率整体低于其他模型,由此可见,使用单向transformer提取文本特征会造成前后文信息的丢失,导致文本特征提取的效果不佳。使用BiGRU-attention模型与单BiGRU模型在该数据集上面的表现差异并不大,表明对于文本分类任务而言,embedding部分的结果对下游模型的影响很大,也从侧面证明了ERNIE-BiGRU模型使用双向transformer生成的embedding可以很好地保留一个词前后文的信息,显著提升了文本分类的准确率。BERT模型准确率的变化趋势与ERNIE-BiGRU模型相似,但整体稍低。上述结果表明,在中文文本分类任务中,ERNIE-BiGRU模型取得的效果最好。
损失值的大小表明了模型在训练过程中的收敛情况。损失值太小,表明模型可能会出现欠拟合的情况;反之,则说明模型可能会出现过拟合的情况。由图6可以看出,BERT模型和ERNIE-BiGRU模型的损失值一直处于较低的稳定值,说明预训练模型在该数据集中具备较好的收敛效果。
使用验证集对经过10个epoch后的训练模型进行验证,分别得到10个类别的精确率、召回率和F1值。对10个类别的3个评价指标分别取平均值,得到不同模型在每一轮的训练情况。最后将训练好的模型通过测试集进行测试,得到的结果如表3所示。每一轮epoch后的F1值如图7所示。
表3 不同模型的测试结果
图7 不同模型F1值的变化曲线
由表3可知,ERNIE-BiGRU模型在精确率、召回率和F1值这3个评价指标上的表现均优于其他模型。由图7可以看出,CNN模型、BiGRU模型和BiGRU-attention模型的结果相差不大,这表明如果embedding部分没有很好地提取文本特征,下游模型的改变对结果的影响不会很大。transformer模型较差的表现表明了embedding后的下游模型是决定文本分类结果的重要部分。BERT模型和ERNIE-BiGRU模型在训练过程中均能快速达到并持续保持较高的F1值,而ERNIE-BiGRU模型的F1值更高。虽然两者在训练的时间成本上要高于其他模型,但其性能是其他模型所无法比拟的。因此,实验证明了ERNIE-BiGRU模型在中文文本分类任务上具有较强的性能。
本文采用ERNIE-BiGRU模型进行中文文本分类,相较于传统的中文文本分类方法,使用ERNIE预训练模型替代word2vec模型作为embedding层将文本数据转换成对应的向量表示,并将此结果作为BiGRU模型的输入进行训练,得到最终的分类结果。从实验结果来看,该模型使用BERT模型作为embedding层可以很好地保留语义信息,BiGRU模型的分类效果也同样显著,在文本分类任务中表现较好。但是,该模型的训练时间较长,如何缩短训练时间仍有待进一步完善。同时,由于ERNIE模型有长度限制,因此如何将此模型更好地应用于长文本分类任务中有待进一步研究。