APP下载

基于多层异构注意力机制和深度学习的短文本分类方法

2021-11-15徐逸卿

中北大学学报(自然科学版) 2021年5期
关键词:类别向量短文

武 渊,徐逸卿

(1.山西省人事考试中心,山西 太原 030000;2.南京林业大学 信息科学技术学院,江苏 南京 210037)

0 引 言

传统的互联网中,人们获取信息的方式比较有限,信息的传递方式主要是新闻门户网站、BBS论坛社区、个人博客及维基百科等.如今,新闻行业数字化发展极大地满足了人们“足不出户而知天下事”的心愿;人们交流和沟通的渠道也大大增加,既有微博、抖音等一类的公共信息获取平台,还有基于私密信息分享的应用如微信、QQ等,这类新兴的媒体每天都在产生海量的短文本信息[1-2].

互联网短文本指那些长度较短的文本形式,一般不超过300字,短文本话题涉及经济、政治、文化、生活等各个方面.在互联网新时代,人们在不断地发出信息,也在持续不断地接收信息.如何对呈现出爆炸式增长的以中文短文本形式表示的信息进行归类、组织和利用是一个亟待解决的问题.一般来说,通常意义上的短文本具有高维、稀疏性、海量、内容不规范、不均衡等特点.短文本的分类任务一般包括短文本预处理、特征选择、模型训练并预测三个步骤,如图1 所示.

图1 文本分类流程图Fig.1 Flow chart of text classification

自从2006年加拿大多伦多大学教授Geoffrey Hinton在《科学》上发表了关于深度神经网络的文章后[3],学术界和工业界便纷纷刮起了深度学习的钻研热潮.深度学习的最终目的是通过模拟人脑的分析和学习过程来对图像、文本、语音等信息进行抽象表示,本质上属于一种无监督学习的方法.最近几年人们在自然语言处理领域对深度学习相关算法的研究越来越深入,有研究表明,通过利用大规模语料来训练语言模型可以在字符、词、句、段落和篇章等不同结构层次上得到不同抽象层次的表示[4-5].在短文本分类任务上,我们同样可以利用深度学习的方法来实现.例如,Liu等[6]提出了具有两个通道和三个内核的多通道CNN模型,以提高文本分类的准确性.史伟等[7]提出了一种基于迁移学习的情感分析方法,在双向长短型记忆网络模型之上引入域适应层,以提高短文本分类能力.范涛等[8]利用基于双向门循环单元的神经网络学习文本中不同模态的上下文关系,利用三重笛卡尔积的方式充分融合双模态特征,从而获得文本情感类别.上述研究往往对所有关键词赋予相同的权重,此时,一个混淆关键词就能对短文本的最终分类产生影响.本文采用多层异构注意力机制发掘强关键词,并优化权重配置,以提高分类精度.

本文从目前主要应用于短文本分类的深度学习方法中,选取实现了四种分类方法:TextCNN,TextRNN,TextRCNN,FastText,基于新闻标题的短文本数据,进行实验对比与分析总结,从而方便研究者做出针对性的改进研究,以及利于短文本的处理技术在人性化推荐、政府舆情分析决策、热点事件发现、垃圾信息过滤等领域发挥重要的作用.

1 多层异构注意力机制

1.1 基于上下文关系的异构注意力机制

传统的词向量仅考虑特定词与临近上下文的局部关系特征,忽视了非连续词的依赖关系.上下文注意力机制考虑了文章整体的连续性和关联性,其关键思想如下:

对于一个特定文本,其文本特征矩阵可描述为一系列特征组合

(1)

式中:pi∈Rd是文本序列中第i个特征对应d维词向量;m是给定文本特征向量个数.

根据上下文关系,即特征向量之间存在的关联性,判定出需要重点注意的特征.例如,对于特征pi,上下文关联性决定了需要注意的特征pj(j≠i),上下文向量以及对应注意力权重可根据式(2)~式(6)得出.

(2)

(3)

relate(pi,pj)=tanh(θ[pi⊕pj]),

(4)

λi,j≥0,∀1≤j≤m,j≠i,

(5)

(6)

式中:λi,j是特征对(pi,pj)之间的注意力得分;relate(pi,pj)是特征对(pi,pj)的相关性量化函数;θ是注意力参数矩阵;⨁是指串联.

(7)

(8)

1.2 多层注意力机制框架

深度学习具有多层神经元,随着网络层次的加深,不同层对于分类效果的影响不同.因此,本文将特征提取网络和基于渗透假设的类平衡分层方法结合,将所提出的基于上下文关系的异构注意力机制置于不同层之间,从而构建多层注意力机制.

1.3 正则化

为克服过拟合现象,采用Dropout(丢弃法)对特征向量进行正则化处理.Dropout方法在深度学习前向训练过程中随机跳过神经元单元之间的一定比例的隐藏连接,确保训练后的模型不紧密依赖于某组神经元单元.对于给定的一组特征向量,Dropout正则化的方式为

Yk=Wk(U·χ)+bk,

(9)

式中:Yk即为文本特征向量在第k层神经网络进行Dropout正则化后的输出;Wk为第k层基于注意力机制的权重向量;U即为基于注意力机制的调制特征向量;χ为概率为1的伯努利随机向量;bk指第k层的偏差.

2 三种基于深度学习的分类算法

2.1 TextCNN(卷积神经网络用于文本分类)

图2 为TextCNN模型图,TextCNN详细过程包括:Embedding,Convolution,MaxPolling和FullConnection and Softmax[9].文本分类的重点在于学习词向量表示,并对学习的词向量进行分类,而词向量的本质在于提取.本模型的设计思路是:训练一个简单的卷积神经网络(Convolutional Neural Networks,CNN),在无监督神经语言模型得到的词向量的基础上进行一层卷积[10].具体流程是将句子映射到嵌入向量,并以矩阵的形式输入到模型中,再适当地使用不同大小的卷积核对所有输入的词执行卷积操作;最后使用最大池化层处理得到的特征映射,将提取到的特征进行浓缩或汇总.

图2 TextCNN模型图Fig.2 The model diagram of TextCNN

作者在CNN卷积操作中采用了三种尺寸的卷积核,卷积核的大小由单词个数与词向量维度决定,文本分类中卷积核长度一般为词向量维度,即水平方向没有滑动,只是从上向下滑动.每个卷积核计算完成之后就得到了1个列向量,代表着该卷积核从句子中提取出来的特征,有多少个卷积核就能提取出多少种特征.不同尺寸的卷积核能够从句子的不同维度特征,进一步挖掘出词与词的关联性,从而分析出基本的语义单元.

本模型针对可变长度句子输入的问题,采用max-pooling方法进行池化,此方法从列向量中提取最大值,即代表最重要的特征,因此,不管特征图中有多少向量,取其中的最大值即可,最终池化层输出为各个特征图的最大值,即一维的向量.

传统的方法通常是文本转换成向量,但是忽略了文本上下文的信息,而CNN可以捕捉文本的上下文特征.因为它们能够在不改变输入序列位置的情况下提取出显著的特征,具体到文本分类任务中就可以利用CNN来提取句子中类似N-gram 的关键信息,分析得到基本的语义单元,从而在表现方面远好于经典模型.

2.2 TextRNN(循环神经网络用于文本分类)

尽管CNN在很多任务里有不错的表现,但其最大问题是固定了卷积核的视野,因而无法建模更长的序列信息,而且卷积核的超参调节也很繁琐.CNN本质是做文本的特征表达工作,而自然语言处理(Natural Language Processing,NLP)中更常用的是循环神经网络(Recurrent Neural Network,RNN),RNN在网络结构上相比前向深度神经网络多了一个循环的圈,其思想是假设RNN网络每一步的预测结果是正确的,然后反复循环下去,每输入一次,都得到该输入对应的输出.RNN层级结构图如图3 所示,RNN能够更好地表达上下文信息.RNN作为自然语言处理领域的一个标配网络,在序列标注、命名体识别、seq2seq模型等很多场景都有应用[11].

图3 RNN层级结构图Fig.3 The hierarchical structure diagram of RNN

具体实现过程是,首先获取词向量表示,即left context,其次将词向量通过双向RNN(在实际应用中可以是GRU或者LSTM)得到work embedding和right context,将left context,word embedding和right context三项进行拼接得到新的向量,将得到的新向量输入到全连接层网络进行整合,并使用tanh激活网络进行激活,随后将全连接神经网络的输出进行池化操作,最后将池化后的结果输入到全连接分类器中实现分类操作.

RNN模型具有短期记忆功能,天然就比较适合处理自然语言等序列问题,尤其是引入门控机制后,能够解决长期依赖问题,可以捕获输入样本之间的长距离联系,因此,基于RNN的文本分类模型能够有效建模文本的长距离依赖关系.且TextRNN的结构非常灵活[12],可以任意改变.例如:把LSTM单元替换为GRU单元,把双向改为单向,添加dropout或Batch Normalization以及再多堆叠一层,等等.但是,由于RNN模型后一个时间步的输出依赖于前一个时间步的输出,无法进行并行处理,导致模型训练的速度很慢,这是一个致命的弱点.且由于RNN是一个有偏倚的模型,在这个模型中,后面的单词比前面的单词更具优势,因此,当它被用于捕获整个文档的语义时,可能会降低效率,因为关键组件可能出现在文档中的任何地方,而不一定是出现在最后,所以,考虑到运行效率并不推荐使用这种方法.

2.3 FastText

FastText是Facebook于2016年开源的一个词向量计算和文本分类工具,它非常明显的优点就是快,在文本分类任务中,FastText(浅层网络)往往能取得和深度网络相媲美的精度,而且在训练时间上比深度网络低许多个数量级.在标准的多核CPU上,FastText能够在10 min之内训练10亿词级别语料库的词向量,并且能够在1 min内分类有着30多种类别的50多万个句子.

FastText结合了自然语言处理和机器学习中最成功的理念,包括使用词袋以及N-gram袋表征语句,还有使用子词(subword)信息,并通过隐藏表征在类别间共享信息.该模型另外采用了一个Softmax层级(利用了类别不均衡分布的优势)来加速运算过程[13].

FastText方法包含模型架构、层次Softmax和N-gram子词特征三个部分.

FastText模型架构如图4 所示,其中x1,x2,…,xN-1,xN表示一个文本中的N-gram向量,每个特征是词向量的平均值,这和word2vec中的CBOW相似,但CBOW是用上下文去预测中心词,而FastText是用全部的N-gram向量去预测指定类别.

图4 FastText模型架构Fig.4 The model architecture of FastText

在层次Softmax部分,对于有大量类别的数据集,FastText使用了一个分层分类器替代了扁平式架构,使不同的类别被整合进树形结构中.在某些文本分类任务中类别很多,计算线性分类器的复杂度很高,为了改善运行时间,FastText模型使用了层次 Softmax技巧.层次Softmax 技巧建立在哈弗曼编码的基础上,对标签进行编码时能够极大地缩小模型预测目标的数量.

针对类别不均衡这个事实,即一些类别出现的次数比其他的更多,FastText通过使用哈弗曼算法建立用于表征类别的树形结构.因此,频繁出现类别的树形结构的深度比不频繁出现类别的树形结构的深度要小,这也使得进一步的计算效率更高.层次Softmax结构如图5 所示.

图5 层次Softmax结构Fig.5 Hierarchical Softmax structure

最后一个部分为N-gram子词特征,FastText 可以用于文本分类和句子分类.不管是文本分类还是句子分类,我们常用的特征是词袋模型.但词袋模型不能考虑词之间的顺序,因此,FastText 还加入了 N-gram 特征.在FastText 中,每个词被看作是N-gram字母串包.为了区分前后缀情况,“<”,“>”符号被加到了词的前后端.除了词的子串外,词本身也被包含进了N-gram字母串包.

FastText与基于神经网络的分类算法相比有两大优点:

1)FastText工具包中内含的FastText模型具有十分简单的网络结构,并且使用层次Softmax结构来提升超多类别下的模型性能,使用N-gram特征提取来弥补模型过于简单无法捕捉词序特征的缺陷,进而提升精度.因此,FastText在保持高精度的情况下加快了训练速度和测试速度[14].

2)FastText不需要预训练好的词向量,其本身在训练过程中会产生词向量,即词向量是FastText分类的产物.

3 融合多层异构注意力机制和深度学习的短文本分类方法

为了解决偏置问题,本文引入了卷积神经网络(CNN),将一个不带偏见的模型引入到NLP任务中,它可以很好地确定文本中带有最大池化层的识别性短语.因此,与递归或循环神经网络相比,CNN可以更好地捕捉文本的语义.但是以前对CNN的研究倾向于使用简单的卷积核,如固定窗[11-13].使用这样的内核时,很难确定窗口大小,小窗口可能导致一些关键信息丢失,而大窗口会导致参数空间过大,从而导致难以训练到一个鲁棒的效果.

为了解决上述模型的局限性,本文提出了一个循环卷积神经网络(Recurrent Convolutional Neural Network,RCNN),并将其应用于文本分类任务.首先,该模型应用一个双向的循环结构,与传统的基于窗口的神经网络相比,它可以大大减少噪声,从而最大程度地捕捉上下文信息.此外,该模型在学习文本表示时可以保留更大范围的词序.其次,该模型使用了一个可以自动判断哪些特性在文本分类中扮演关键角色的池化层,以捕获文本中的关键组件.本文模型结合了RNN的结构和最大池化层,利用了循环神经模型和卷积神经模型的优点.此外,该模型显示了线性阶的时间复杂度,它与文本长度是线性相关的,大大降低了运算时间,在运算效率上有着较大的提升.

如图6 所示,TextRCNN网络主要由循环结构层、最大池化层及全连接层三部分构成.循环结构层只由Embedding层以及双向RNN组成,Embedding使用的是预训练的词向量,使用的模型为word2vec的Skip-Gram模型,中英文的训练语料都是Wikipedia语料.预训练完成后,输入的词通过Embedding层后由one-hot形式转为稠密词向量,接着输入到一个双向RNN中.应用最大池化层可以自动筛选出最重要的特征,使向量中每一个位置的值都取所有时序上的最大值,将不同长度的输入序列都转化成一样的维度来得到最终的特征向量.最后接上一个用于分类的全连接层,使用Softmax函数得到类别的概率分布.

图6 TextRCNN模型结构图Fig.6 Structure diagram of TextRCNN model

传统的TextRNN的分类器只是将各时间步的输出简单求和,取平均值,而文本中不同位置的词在分类任务中的权重不同.为了解决上述问题,并挖掘非连续词的上下文关系,进一步提升算法分类精度,将多层异构注意力机制(MLHAM)融入上述构建的TextRCNN网络.多层注意力机制基于渗透假设的类平衡分层求精方法,在卷积层和循环层的输出特征中均加入异构注意力机制,最后经过全局平局池化和全连接层进行分类.融合多层异构注意力机制的框架如图7 所示.

图7 MLHAM+TextRCNN模型结构图Fig.7 Structure diagram of MLHAM +TextRCNN model

4 算法实现与对比分析

为了验证所提出融合多层异构注意力机制和深度学习的短文本分类方法的精确性,下面给出所使用的数据集和算法参数,以及算法精确性的衡量标准(Macro-F1)的原理和计算过程,并基于数据集分别计算不同组合方法的指标数值.通过统计比较来分析算法的性能,并挖掘多层异构注意力机制与各传统深度学习方法融合的优劣性.

4.1 数据集和参数设置

为体现研究方法的普适性,本研究选择新闻标题类(THUCNews数据集)、短视频评论类(YouTube视频评论数据集)、电子邮件标题类(个人邮箱数据集)三种不同领域的数据集作为研究对象.各数据集的详细信息如表1 所示.

表1 实验所使用数据集的特征Tab.1 Data set characteristics used in experiment

部分长文本分类研究指出,神经网络层数决定了模型的分类精度,当深度较浅时,网络接收域较窄,无法捕捉到文本的上下文较长间隔的依赖,从而影响最终的分类准确率[14].为验证上述结论是否适用于短文本分类,本文对神经网络层数进行灵敏度分析.图8 给出了不同网络深度下,基于MLHAM+TextRCNN方法对三种数据集分类的精度变化趋势图.

图8 三个数据集下准确率与网络层深度的关系Fig.8 The relationship between accuracy and network layer depth under three data sets

由图8 可以看出,与长文本不同,对短文本而言,当深度增加时,分类精度会随之下降.这是由于网络接收域的扩张因子的影响超过文本本身的长度,不仅增加了不必要的计算,而且会使模型过拟合,导致分类准确率下降.因此,增加网络深度更适合长文本,而不适用于短文本分类.最佳的网络深度主要取决于文本长度,需要根据数据集特性确定.

此外,对算法运行多次,最终选择出最佳的算法参数设置如表2 所示.

表2 训练参数设计Tab.2 Design of training parameter

使用THUCNews数据集,新闻标题类别已处理为10个常见类别,分别为金融、房产、股票、教育、科技、社会、政治、体育、游戏、娱乐.

将处理好的数据分为训练集(train.txt),验证集(dev.txt)以及测试集(test.text),并分别只选取25 000条、2 500条、10 000条.测试四种算法的性能时,使用相同数据集进行测试.在测试数据集中,每个新闻类别的数据数量均为1 000条.

4.2 评价指标

F1-score是统计学中衡量二分类模型精确度的一种常用指标,而Macro-F1方法是F1-score适用于多分类问题的改进版本.本研究采用Macro-F1方法评价算法性能,该方法计算每个类别对应的Macro-F1值,并取平均,其计算公式为

(10)

(11)

(12)

(13)

式中:i表示类别;D表示类别的数量,例如数据集1的D为10,数据集2的D为2;THi(真正)表示标签为i类的数据中归为i类数据的数量;同理,FHi(真负)表示标签为非i类的数据中归为非i类数据的数量;hi为i类别数据判断的精确率;ri为i类别数据的召回率;一对 (hi,ri)分别对应于类i的精确度和召回值.为显示每个分类器的特征选择方法的平均精度和召回性能,单独呈现精度和召回值.

可以看出,Macro-F1方法实质上是精确度和召回率的均衡.为便于直观分析,本文展示了不同算法的准确率和Macro-F1值.此外,为验证算法运行效率,本文各算法运行30代,以运行时间为效率衡量标准.其中,FastTex算法是一种工具箱,其运行时间可直接得出.

4.3 实验结果分析

本文使用pytorch框架来实现四种算法,使用训练集数据分别对四种算法进行训练,使用测试集数据分别测试四种算法的性能;在此基础之上,使用Django页面框架做出一个简单的前端页面,可以打印出带标签的数据集分类结果.

4.3.1 算法准确率对比结果

图9 展示了对于不同数据集采用不同分类方法(TextCNN,TextRNN,FastText,TextRCNN,MLHAM+TextRCNN)进行分类的准确率结果.可以看出:

1)对于涉及多分类情况的数据集1,五种算法的精度均随着训练代数的升高而升高,并趋于稳定.初始时,本文所提出的MLHAM+TextRCNN 方法训练精度并不高,这是由于注意力机制的添加增加了训练难度.随着训练代数的不断增加,本文所设计算法的准确率显著增加,最终稳定于93.9%,显著优于其他算法.此外,FastText的训练精度最低,且由于其结果由工具箱直接得出,与训练代数无关,因此设为恒定值.

(a)数据集1

2)对于涉及二分类情况的数据集2和3,由于判别类别较少,较为简单的缘故,与多类情况相比,所有算法在初始时即可达到较好的划分结果.其中,本文所提出的MLHAM+ TextRCNN方法仍具有较高的准确率.由此可以看出,本文所提出算法应用于不同数据集,具有良好的普适性.

3)对于任意数据集,添加多层异构注意力机制(MLHAM)后的算法性能均有所提升.这表明本文所设计的MLHAM能够显著提高算法的分类精度.

4.3.2 算法Macro-F1值对比结果

表3 展示了对于不同数据集采用不同分类方法(TextCNN,TextRNN,FastText,TextRCNN,MLHAM+ TextRCNN)进行分类的Macro-F1值计算结果.可以看出,对于不同数据集,TextCNN,TextRNN和FastText的Macro-F1值排序不同,其中TextRNN方法更适合多类的数据集.本文所提出的TextRCNN方法对不同数据集上的表现均优于上述三种算法,且加入多层异构注意力机制之后,该算法性能能够进一步提升.

表3 Macro-F1计算结果Tab.3 Macro-F1 calculation results

4.3.3 算法效率对比结果

图10 显示了五种算法在不同数据集下的运算时间.由图可以看出,对于任意数据集,运行时间排序均为:TextRNN>TextCNN>MLHAM+TextRCNN>TextRCNN>FastText.此外,MLHAM+TextRCNN的运行时间较TextRCNN增加较少,即添加多层异构注意力机制能够有效增加算法准确率,代价仅为增加少量运行时间.

图10 各算法运行时间对比结果Fig.10 Comparison results of running time for different algorithm

通过上述实验可以看出,对于三种不同来源的数据集,本文的精确度和Macro-F1值均显著大于具有传统算法,这证明本文算法显著优于其他算法,并且其优势具有一定的普适性.通过多次运行可以看出,本文算法运行时间显著低于TextRNN和TextCNN算法,略高于TextRCNN和FastText算法.引入异构注意力机制后,算法仅增加少量运行时间,即可显著提高准确率.

上述优势产生的原因主要有以下四点:

1)采用了双向的循环结构,与传统的基于窗口的神经网络相比,它可以大大减少噪声,从而最大程度地捕捉上下文信息;

2)该方法在学习文本表示时可以保留更大范围的词序;

3)将RNN的结构和最大池化层融入CNN中,结合了两种神经网络框架的优点;

4)加入了异构注意力机制,能够有效提取重要的特征词向量.

5 结 论

本文提出了一种基于多层异构注意力机制和深度学习的短文本分类方法,考虑上下文非临近词的关联性,引入了全局上下文注意力机制,并基于渗透假设的类平衡分层求精方法,在短文本分类模型中引入多层注意力机制,使得具有较高辨识度的特征具有更高的权重.深度学习算法方面,本文提出了结合循环神经模型和卷积神经模型的优点的新型深度学习分类方法.将传统和本文所提出的方法应用于三个数据集中,结果表明,集合循环神经和卷积神经的文本分类方法具有较高的效率和准确率,性能优于传统算法.而多层异构注意力机制能够进一步提升算法效率,且不会对算法运行时间产生显著影响.

猜你喜欢

类别向量短文
向量的分解
聚焦“向量与三角”创新题
一起去图书馆吧
KEYS
简析基于概率预测的网络数学模型建构
Keys
向量垂直在解析几何中的应用
向量五种“变身” 玩转圆锥曲线
短文改错
短文改错