结合卷积和长短期记忆网络的长文分类方法

2019-12-04 03:32姜恬静
小型微型计算机系统 2019年11期
关键词:正确率文档卷积

姜恬静,和 欣,何 军,冯 姣,李 鹏

1(南京信息工程大学 电子与信息工程学院,南京 210044)2(军事科学院 系统工程研究院,北京 100039)

1 引 言

自然语言处理(Natural Language Processing,NLP)是深度学习的一个重要领域.文本分类是自然语言处理的一个重点研究方向,在信息检索、情感分类、语音识别等领域起着重要的作用[1-3].文本分类通过建立完整的特征提取网络,提取信息数据的具体特征,并给出一个清晰明确的标签.常用的文本特征提取方法主要是基于本文的关键词或关键语句,建立多隐层非线性的全连接神经网络,获取特征数据[4].这种方法一方面计算复杂度较高,占用大量资源,另一方面,对于篇幅较长的文本,如小说、学术报告,特别是方向相近的科技论文和文献等,容易遗漏细节,区分度不高,标签分类不够准确.

为克服全连接神经网络计算复杂度高的缺点,Collobert和Weston先后在2008年和2011年发表了两篇论文简述了卷积神经网络(Convolutional Neural Network,CNN)在自然语言处理中的应用[5,6],2014年,Kim基于卷积神经网络展开对句子分类的研究,包括情感分析,语义分析等[7].Kim提出的CNN文本分类模型text_cnn包含一个卷积层(使用了多个不同尺寸的卷积核)和最大池化层,因为其结构简单,效果良好,被广泛的应用在NLP领域中.该方法能够有效的对长度较短的文本进行分类,但是对于文度大于5000字甚至更多的文本,单层的CNN不能完整的提取长文特征.

当文本长度大于5000字时,CNN只能处理其一个卷积核中的信息,而相邻卷积核的信息只能通过后一层的卷积层进行关联.信息的关联取决于卷积核的大小和移动步长等参数,因此,利用CNN对长度大于5000字的文本进行分类时,不能灵活调整参数,导致训练时间延长.

相比于CNN,长短期记忆网络(Long Short-Term Memory,LSTM)能够持续保留信息,记忆文本前后关联性,可以更好地利用传统神经网络无法建模的信息,处理与时间序列高度相关的问题[8].其特殊的门结构允许信息选择性地影响神经网络每个时刻的状态,解决了传统序列模型由于记忆信息太多产生的维度爆炸问题.但文本长度超过万字时,LSTM由于输入数据维度过大,容易引起资源耗尽、训练缓慢,导致分类准确度下降[9].

2016年,Z Tian将这两个网络结合起来,建立了5个卷积层和128个隐层的LSTM网络结构用于对自然图像的研究,取得了良好的效果[10].但是Z Tian的网络结构较为复杂,为了降低网络的复杂度,本文提出了一种结合单层CNN和LSTM网络的长文分类方法.本文首先提出了一类随机抽样算法,将整篇文档随机拆分成若干个部分.接着利用单层CNN提取长文各部分的局部特征,并利用LSTM进一步记忆CNN所提取的各个局部特征的关联性,分析长文的全局特征,得出分类结果.实验结果表明本文所提出的长文分类方法既降低了输入维度和资源的浪费,提高了运算速度,又能学习全局信息,保证了特征提取的全面性,提高了分类准确度.

2 模 型

本文提出的深度学习模型如图2所示,包括数据的预处理、卷积提取、LSTM记忆和分类器四个部分.

2.1 数据预处理

处理序列数据一个重要步骤是引入词语的连续表示,词嵌入(word embedding)将一个单词转换成固定长度的向量表示,使计算机能够理解文本(语句),捕获词语的语义信息和相似性,是目前NLP中最有效最灵活的技术[11].大多数基于深度学习的训练模型使用单词(统计信息或N-gram,Word2VEC等[12]),短语,句子或语义和语法结构等单元对语言文本进行建模[13],本文将单词作为基本单元,使用词嵌入的方式对其进行描述.

2.2 随机抽样

为了使用单层CNN提取长文特征,本文提出了随机抽样的算法将长文随机拆分成若干个部分,从而缩小单层CNN网络的输入维度,同时提取长文的全局信息,随机抽样过程如图1所示.输入X是长文的词向量,维度为n×d,其中n是文档中所有单词的数量,d是词向量的维数.

图1 随机抽样过程图Fig.1 Random sampling process

随机抽取函数:

1.Input:长文档X,统计量L,已设定的每次抽取的句子数K,随机抽取次数N

2.Output:被随机分成N组的新文档Xi

3.Begin

4.num_input=int(len(X)/L)//计算拆分后的 文本量

5.i=0 //添加索引

6.New_X=[],Xi=[]

7.While i<=num_input://索引位置不超过文本最大值

8. start_index = i *L

9. end_index = min((i + 1)*L,len(X))

//按索引分割单词防止重复抽取

10. New_X.append(X[start_index:end_index])

//append函数将分割好的句子添加到New_X

11. i+=1 //每L个单词为有效句分割文本

12.if 遍历长文未满N次:

13. if 未抽满K句话:

14. s=random.randint(0,len(New_X))

15.Xi.append(New_X[s])

16.ReturnXi//返回新文档Xi

17.end

2.3 CNN_LSTM模型

图2 训练模型结构图Fig.2 Structure of training model

2.3.1 CNN

如图2的左侧虚线框,是卷积提取特征的过程.单层CNN使用多个不同尺寸的卷积核提取长文N组局部文本的抽象特征,具体公式如下:

yi1= Relu [conv 1D(Xi,wfj×d×m)]

(1)

(2)

其中,Xi是第i组随机抽取文本的输入,conv 1D是卷积运算符,wfj×d×m是大小为fj×d×m的卷积核,其中fj是卷积核的尺寸,下标j代表不同尺寸的卷积核,d是输入词向量的维度,m表示所有不同尺寸的卷积核个数.使用Relu函数激活.公式(2)将所有卷积特征集和.

(3)

图3 LSTM单个隐层内部结构图Fig.3 Structure of LSTM cell

(4)

2.3.2 LSTM

多层LSTM网络如图2右侧的虚线框所示.LSTM是由N个隐层组成,图3展示了LSTM单个隐层的内部结构图.

LSTM各个节点计算公式如下:

(5)

(6)

(7)

(8)

(9)

hi=oi*tanh(Ci)

(10)

3 实验及结果分析

3.1 数据收集

本文选取了来自电子文本文献arXiv的4类文章和11类文章进行训练.训练数据的详细信息见表1,其中四类文章分别来自表1的1-4个类别,共3839篇长文;11类文章属于表1中5-15个类别,共33213篇长文,可以看出长文的类别方向较为接近.数据集中每类文献的单词数都大于5000,平均单词数量在6000个左右,明显长于常用的文本数据集如(Yahoo! Answers,Amazon Review等).

表1 数据集信息
Table 1 Data set information

所属类别文章个数文章平均词数1.计算机视觉99556502.凝聚态99751863.定量生物学85242564.物理学99547455.物理学(高能物理晶体学)299562136.物理学(高能物理现象学)250557777.物理学(核试验)252556318.物理学(核理论)413674399.计算机科学(因特网架构)3233630910.计算机科学(进化计算)3012552511.数学(量子代数)2901713612.数学(度量几何学)3106606613.数学(代数几何)2885572914.数学(几何学)3065652615.金融学28507157

3.2 实验设置

1)实验平台:实验平台是一个具有48GbRAM和NVIDIA TITAN X(pascal)GPU、48Gb内存的深层学习工作站,本文的工作站采用Ubuntu14.04系统,借助TensorFlow1.1.0的框架实现提出的长文分类方法.

2)数据预处理:获取文本数据后,根据章节2.1对数据进行预处理.删除文档内的特殊符号,标点等非常规单词.将所有英文单词编入一个字典内保存,为每个单词随机生成一个词向量并为词向量编号,通过查阅字典将文内的单词转化成词向量.以上操作将文内单词转化为纯数字的词向量数组文件.

3)随机抽样:根据章节2.2的方法对数据进行随机抽样.为了比较不同的输入文本长度对训练结果的影响,实验中将每句话的长度分别设为20、40和50个单词,即L=20,40,50.为了减小CNN模型的输入量,从长文档中随机抽取20和25个句子,即K=20,25,卷积层将同时捕获这K个句子的特征.对同一篇长文档中的句子重复遍历5-25次,即N=5,10,15,20,25,来比较局部提取,即N=5,10,15和全局提取,即N=20,25分类正确率不同.由于长文本中平均单词数超过6000个,必须保证一定量的抽样个数,以确保对整个文本进行分析,即L×K×N≥6000.

4)训练参数:实验中,每一次输入的数据量是64篇长文.按照数据量的大小将4类和11类数据集训练集和测试集的分割比例分别定为0.1和0.05.所有的数据遍历三次.利用Kim[7]的text_cnn初始化卷积层,使用卷积核尺寸为3*3、4*4和5*5,每种128个.同时建立具有N个隐含层的LSTM网络,drop_out比例为0.5,采用adam最优化方法以0.001学习速率训练模型.

3.3 实验结果和分析

本节评估了3.2节不同配置下不同模型的性能,4类数据集和11类数据集的训练结果分别显示在表2和表3中.可以看出本文提出的随机抽样和卷积长短期记忆网络的分类方法,在长文档数据集上获得了较高的分类正确率.

表2 4类数据集训练正确率(百分比)
Table 2 Accuracy of four types of data sets(percentage)

K/NL20/520/1020/1520/2025/525/102098.8799.1599.754098.7598.8999.7199.7999.925099.9199.7999.9299.9299.91

4类数据集的训练时间基本上在80-90分钟,训练次数在9000-11000次之间.11类数据集的训练时间在33-40小时左右,训练步骤数在65000~73000次之间.

表3 11类数据集训练正确率(百分比)
Table 3 Accuracy of eleven types of data sets(percentage)

K/NL20/520/1020/1520/2025/525/102082.5383.7585.674083.3885.9986.0686.2486.135085.9086.2186.0785.8586.11

表2和表3可以看到,当每个句子的长度L固定时,抽取的单词越多,文档分类的精度越高,这表明当网络能提取和记忆足够多的特征时,分类的精度更高.当保持K和N不变,即随机抽取的频率不变,仅改变单词的个数L时,分类的正确率没有明显变化,如表2和表3中每列所示,当L越大,训练速度越快.

图4 4类数据集下不同L的训练结果Fig.4 Training results under four types of data sets with different L

图4比较了4类数据集中,不同句子长度L对分类正确率的影响.如图4所示,经过2000次训练后,L=50的准确性显著提高至0.72.而此时L=40的准确率只有0.41,L=20的准确率仍为0.训练4000次后,L=50准确率达0.95,而L=40和L=20的准确率均在0.9以下.当程序训练次数达到8000次时,三种模型的精度基本稳定.图4同样表明了在相同的训练次数下,单一的CNN[7]和LSTM模型的分类正确率要比本文深度学习模型低很多.

4 结 论

本文提出了一个基于卷积长短期记忆网路的长文分类方法.该方法首先通过随机抽样的方式将文本分为N个组,然后利用CNN提取N组中每组的局部特征,并利用LSTM将这些局部特征聚合,关联上下文特征.该方法即保留了全文重要细节信息又降低了每个特征提取时输入词向量维数,从而减少了资源的浪费,降低了计算复杂度.实验结果表明,对于长文分类,该方法具有较高的分类准确度.未来我们将继续收集不同类型的数据集来验证模型,研究细粒度分类,同时,对神经网络结构以及相关参数进行优化,研究模型在训练数据比较少的情况下获得良好的性能的方法.

猜你喜欢
正确率文档卷积
浅谈Matlab与Word文档的应用接口
个性化护理干预对提高住院患者留取痰标本正确率的影响
基于3D-Winograd的快速卷积算法设计及FPGA实现
有人一声不吭向你扔了个文档
卷积神经网络的分析与设计
从滤波器理解卷积
基于傅里叶域卷积表示的目标跟踪算法
基于两种LSTM结构的文本情感分析
Word文档 高效分合有高招
生意