本发明属于自然语言处理中的文本分类领域,提出了一种基于注意力机制的文本分类方法。
背景技术:
伴随着信息数据量的快速增长,自然语言处理在人工智能技术兴起的浪潮中有了快速地发展。文本分类是自然语言处理的基本任务,用于自然语言处理的各个领域,如信息检索,信息过滤和语义分析等方面,但是面对大数据时代涌现出的海量的短文本信息,如何划分新领域所属的类别,其训练的样本往往是不充分的。深度学习(deeplearning)[徐翼龙,李文法,周纯洁.基于深度学习的自然语言处理综述.中国计算机用户协会网络应用分会,2018.]不仅可以实现机器学习的自动化,减少了面对不同问题的人工设计成本,还增强了对数据中潜在信息的提取和分析能力。
深度学习主要通过深度神经网络(dnn)结构学习提取不同水平和不同维度的有效表示特征,以此提高在不同抽象层次上对数据的解释能力。dnn主要包括有循环神经网络(rnn)和卷积神经网络(cnn)。基于rnn的模型视文本为词序列,并可以捕获文本分类的词间依赖关系和文本结构。与rnn不同,cnn的卷积和池化结构能够很好地提取局部特征信息,因此也成功的应用到nlp中。collobert等人首次将具有端到端训练的卷积神经网络用于自然语言处理[ronancollobertandjasonweston.2008.aunifiedarchitecturefornaturallanguageprocessing:deepneuralnetworkswithmultitasklearning.inproceedingsofthe25thinternationalconferenceonmachinelearning.acm,newyork,ny,usa,icml’08,pages160–167.]。文章[shenli,zhezhao,taoliu,renfenhu,andxiaoyongdu.2017.initializingconvolutionalfilterswithsemanticfeaturesfortextclassification.inproceedingsofthe2017conferenceonempiricalmethods.]优化了传统的cnn,提出了一种新的cnn权重初始化技术,在训练开始时对语义特征进行编码的卷积过滤器用于文本分类。随着cnn网络层数的不断增加,网络出现了梯度消失和模型降级(modeldegradation)等新问题。文献[le,h.t.,cerisara,c.,&denis,a.(2017).doconvolutionalnetworksneedtobedeepfortextclassification?arxivpreprintarxiv:1707.04108.]提出了densenet模型通过将所有输入层连接到输出层,不仅改善了不同层的信息流问题,进一步减少了梯度消失和模型降级问题的产生。针对文本数据比较复杂,使用densenet只是通过增加网络层数对文本信息进行简单的特征提取,这不仅会导致网络参数冗余,甚至会出现网络退化现象。因此通过在神经网络densenet模型中加入注意力机制,能够进一步提取文本信息更深层次的特征,也可以自动选择和关注更为重要的文本特征,进一步提高文本分类的准确性。
技术实现要素:
本发明所要解决的技术问题是为了提高文本分类的效果,提出了一种基于注意力机制的文本分类方法。本发明基于densenet神经网络模型,在利用语义特征初始化的densenet权重的基础上,结合多层次局部注意力机制到densenet中,不同模块的注意力机制随着层数的变化而自适应变化,自动选择与文本分类更为重要的文本信息特征,提高了文本分类的效果。
为解决上述技术问题,本发明所采用的技术方案是:
一种基于注意力机制的文本分类方法,包含如下几个步骤:
步骤a,文本的表示,利用word2vec将文本中的单词转换成词向量,降低文本分类的复杂度,设定输入句子中每个单词被映射成一个向量xi∈rn×d(i=0,1,2,…,n),则输入句子对应的词向量矩阵为[x1,x2,…,xn],n为句子的最大长度,d为词向量的维数;
步骤b,构建文本分类器,对输入的文本进行类别划分,文本分类器的构建基于densenet的神经网络,由卷积层、基于注意力机制的密集块、转换层、池化层和分类层五个部分组成;
步骤b-1,卷积层的构建包括两个过程:权重初始化和卷积过程;
步骤b-1-1,权重初始化,将输入的词向量构建n-gram模型,设定m为文本中的任一类别,利用朴素贝叶斯法计算类别m中的n-gram的比重r,公式如下:
式中,α是平滑参数,pm表示在类别m中包含n-gram的文本数;
||pm||1表示文本中的类别m的数量,||.||1表示l1范数;
利用k均值算法对比重r大于1的n-gram进行聚类,将聚类的质心向量初始化卷积层的权重;
步骤b-1-2,卷积过程,利用权重初始化的卷积层相应位置的局部表示ci为:
ci=f(wc*xi:i m-1 bc)
式中,xi:i k-1表示从第i个词到第i k-1个词对应的词向量;
wc表示权值矩阵;
bc表示对应的偏置向量;
f表示激活函数relu;
卷积层的输出c表示为:
c=[c0,c1,…,ct]
式中,[c0,c1,…,cl]为整个句子的局部表示,t表示输入文本的长度;
步骤b-2,构建基于注意力机制密集块,进行文本信息特征的深层次提取,注意力密集块由主干模块和标记模块两部分组成,主干模块基于密集块,利用densenet神经元前层传递方式进行特征传递;标记模块由卷积模块和激活函数组成;
主干模块第0层到l-1层的输出特征图通道数目分别c0,c1,c2,…,cl-2,cl-1,则第l层的输出xt为:
xt=hl([c0,c1,c2,…,cl-1])
式中,xt表示第t个主干模块的输出;
[c0,c1,c2,…,cl-1]表示将0层到l-1层的输出特征图做通道的合并;
hl代表三种操作的组合函数,分别是bn、relu以及卷积操作;
标记模块,即基于注意力密集模块,注意力系数iatt表达式如下:
iatt=f(watt*c b)
式中,iatt表示当前文本信息的重要程度;
watt表示注意权重向量;
b表示偏置向量;
f为激活函数sigmoid;
基于注意力密集模块的输出为:
yt=iatt*xt xt
式中,yt表示第t个注意力密集块的输出;
步骤b-3,构建转换层,对文本提取的特征进行降维,转换层由卷积层和最大池化层两部分组成,卷积层的卷积核大小为1×3,最大池化层的卷积核大小为1×2;
步骤b-4,构建分类层,对提取的文本特征进行归类,分类层由最大池化层和分类层两部分组成,最大池化层卷积核大小为1×7,分类层利用softmax分类器计算各个分类的概率。
本发明的有益效果是:本发明提出了一种基于注意力机制的文本分类方法,所述方法:使用基于densenet的神经网络模型;在训练神经网络之前,利用语义编码来初始化densenet的卷积过滤器的权重,使网络在训练之前对重要的语义信息进行辨识,从而在卷积层能捕获每个句子的有效位置信息;通过局部注意力密集连接的模块进行文本信息的特征提取。仿真实验证明,本发明具有更强的特征提取能力,并保留文本信息的内容,在多个文本分类的任务(包括情感分类和主题分类)效果显著,有效地提高了分类的准确性。
附图说明
图1是本发明基于注意力机制densenet模型的结构图。
具体实施方式
下面结合附图与仿真结果,对本发明提出的一种基于注意力机制的文本分类方法进行详细说明:
一种基于注意力机制的文本分类方法,其实施过程如下:
实验环境为windows1064bit操作系统,cpu为inteli7-8700,gpu为nvidiageforcertx2070,内存为16gb,实验基于深度学习框架tensorflow上实现,实验的开发语言为python。
实验的超参数设置,批量设置为64,学习率设置为1,迭代次数设置为50,使用3个基于注意力密集块,对应的过滤器数量分别为64,128,256,基于注意力密集块的卷积核大小设置为1×3,转换层中卷积层的卷积核大小为1×3,最大池化层的卷积核大小为1×2,使用交叉熵函数作为损失函数,利用adam优化器优化模型的各个参数,为了从有限的数据中获取尽可能多的有效信息,实验采用十倍交叉验证法来评估模型的性能。
文本的表示,利用word2vec将文本中的单词转换成词向量,降低文本分类的复杂度,设定输入句子中每个单词被映射成一个向量xi∈rn×d(i=0,1,2,…,n),则输入句子对应的词向量矩阵为[x1,x2,...,xn],n为句子的最大长度,d为词向量的维数;
构建文本分类器,对输入的文本进行类别划分,文本分类器的构建基于densenet的神经网络,由卷积层、基于注意力机制的密集块、转换层、池化层和分类层五个部分组成;
卷积层的构建包括两个过程:权重初始化和卷积过程;
权重初始化,将输入的词向量构建n-gram模型,设定m为文本中的任一类别,利用朴素贝叶斯法计算类别m中的n-gram的比重r,公式如下:
式中,α是平滑参数,pm表示在类别m中包含n-gram的文本数;
||pm||1表示文本中的类别m的数量,||.||1表示l1范数;
利用k均值算法对比重r大于1的n-gram进行聚类,将聚类的质心向量初始化卷积层的权重;
卷积过程,利用权重初始化的卷积层相应位置的局部表示ci为:
ci=f(wc*xi:i m-1 bc)
式中,xi:i k-1表示从第i个词到第i k-1个词对应的词向量;
wc表示权值矩阵;
bc表示对应的偏置向量;
f表示relu函数,relu是一种激活函数;
卷积层的输出c表示为:
c=[c0,c1,...,ct]
式中,[c0,c1,...,cl]为整个句子的局部表示,t表示输入文本的长度;
构建基于注意力机制密集块,进行文本信息特征的深层次提取,注意力密集块由主干模块和标记模块两部分组成,主干模块基于密集块,利用densenet神经元前层传递方式进行特征传递;标记模块由卷积模块和激活函数组成;
主干模块第0层到l-1层的输出特征图通道数目分别c0,c1,c2,…,cl-2,cl-1,则第l层的输出xt为:
xt=hl([c0,c1,c2,...,cl-1])
式中,xt表示第t个主干模块的输出;
[c0,c1,c2,...,cl-1]表示将0层到l-1层的输出特征图做通道的合并;
hl代表三种操作的组合函数,分别是bn、relu以及卷积操作;
bn表示批量归一化,是神经网络的标准化方法;
标记模块,即基于注意力密集模块,注意力系数iatt表达式如下:
iatt=f(watt*c b)
式中,iatt表示当前文本信息的重要程度;
watt表示注意权重向量;
b表示偏置向量;
f为sigmoid函数,sigmoid是一种取值范围为(0,1)的激活函数;
基于注意力密集模块的输出为:
yt=iatt*xt xt
式中,yt表示第t个注意力密集块的输出;
构建转换层,对文本提取的特征进行降维,转换层由卷积层和最大池化层两部分组成,卷积层的卷积核大小为1×3,最大池化层的卷积核大小为1×2;
构建分类层,对提取的文本特征进行归类,分类层由最大池化层和分类层两部分组成,最大池化层卷积核大小为1×7,分类层利用softmax分类器计算各个分类的概率,其中softmax分类器是指分配给正确分类标签的归一化概率。
本发明采用七种数据集,即mr、sst1、sst2、subj、trec、cr和mpqa评估基于注意力机制densenet模型在文本分类方面的性能。基于注意力机制的densenet模型在七个数据集上的精度均优于传统的densenet,在mr,sst2,subj,trec和mpqa上精度上分别提升了2.3%,0.6%,0.6%,0.1%,0.2%,性能优于传统的densenet模型。
为了进一步评估于注意力机制densenet模型的性能,通过eda算法增强后的数据训练模型。在数据集mr、sst2、subj、cr上,文本分类的精度分别比之前提升了1.1%、1.2%,0.6%和3.9%。由此可知,在文本分类任务中,基于注意力机制densenet模型的性能优于densenet。
综上所述,本发明提出的基于注意力机制densenet模型的文本分类方法在文本分类方面的性能优于其他模型,且能自动选择与文本分类更为重要的文本信息特征,提高文本分类的效率。
1.一种基于注意力机制的文本分类方法,其特征在于,包含步骤如下:
步骤a,文本的表示,利用word2vec将文本中的单词转换成词向量,降低文本分类的复杂度,设定输入句子中每个单词被映射成一个向量xi∈rn×d(i=0,1,2,…,n),则输入句子对应的词向量矩阵为[x1,x2,…,xn],n为句子的最大长度,d为词向量的维数;
步骤b,构建文本分类器,对输入的文本进行类别划分,文本分类器的构建基于densenet的神经网络,由卷积层、基于注意力机制的密集块、转换层、池化层和分类层五个部分组成;
步骤b-1,卷积层的构建包括两个过程:权重初始化和卷积过程;
步骤b-1-1,权重初始化,将输入的词向量构建n-gram模型,设定m为文本中的任一类别,利用朴素贝叶斯法计算类别m中的n-gram的比重r,公式如下:
式中,α是平滑参数,pm表示在类别m中包含n-gram的文本数;
||pm||1表示文本中的类别m的数量,||.||1表示l1范数;
利用k均值算法对比重r大于1的n-gram进行聚类,将聚类的质心向量初始化卷积层的权重;
步骤b-1-2,卷积过程,利用权重初始化的卷积层相应位置的局部表示ci为:
ci=f(wc*xi:i m-1 bc)
式中,xi:i k-1表示从第i个词到第i k-1个词对应的词向量;
wc表示权值矩阵;
bc表示对应的偏置向量;
f表示激活函数relu;
卷积层的输出c表示为:
c=[c0,c1,…,ct]
式中,[c0,c1,…,ct]为整个句子的局部表示,t表示输入文本的长度;
步骤b-2,构建基于注意力机制密集块,进行文本信息特征的深层次提取,注意力密集块由主干模块和标记模块两部分组成,主干模块基于密集块,利用densenet神经元前层传递方式进行特征传递;标记模块由卷积模块和激活函数组成;
主干模块第0层到l-1层的输出特征图通道数目分别c0,c1,c2,…,cl-2,cl-1,则第l层的输出xt为:
xt=hl([c0,c1,c2,…,cl-1])
式中,xt表示第t个主干模块的输出;
[c0,c1,c2,…,cl-1]表示将0层到l-1层的输出特征图做通道的合并;
hl代表三种操作的组合函数,分别是bn、relu以及卷积操作;
标记模块,即基于注意力密集模块,注意力系数iatt表达式如下:
iatt=f(watt*c b)
式中,iatt表示当前文本信息的重要程度;
watt表示注意权重向量;
b表示偏置向量;
f为激活函数sigmoid;
基于注意力密集模块的输出为:
yt=iatt*xt xt
式中,yt表示第t个注意力密集块的输出;
步骤b-3,构建转换层,对文本提取的特征进行降维,转换层由卷积层和最大池化层两部分组成,卷积层的卷积核大小为1×3,最大池化层的卷积核大小为1×2;
步骤b-4,构建分类层,对提取的文本特征进行归类,分类层由最大池化层和分类层两部分组成,最大池化层卷积核大小为1×7,分类层利用softmax分类器计算各个分类的概率。
技术总结