基于CNN 和LSTM 混合模型的中文新闻文本分类∗
2023-10-20翟正利姚路遥
张 欣 翟正利 姚路遥
(青岛理工大学信息与控制工程学院 青岛 266000)
1 引言
近十年来,互联网上各种文本数据呈现出爆炸式的指数增长趋势。随着神经网络技术在计算机领域中的不断进步,其在图像和语音方面的应用表现出了优异的性能。文本分类作为自然语言处理中的一个重要研究方向,它通过对一个文件或一段文本进行标记,以达到对文档进行分类的目的。然而,文本的稀疏性和文本格式的不一致性限制了传统机器学习在文本分类中的应用。
文献[1]表明,与传统的文本分类模型(如SVM、KNN等)相比,卷积神经网络可以通过卷积滤波提取句子的局部特征,并捕捉局部相关性。因此,它在自然语言处理和计算机视觉方面具有良好的性能。作为另一种主流的文本分类框架,递归神经网络(RNN)的优势在于它可以处理文本中不同长度的序列,并捕获上下文相关的信息。RNN 的缺点在于容易发生梯度爆炸或梯度消失的情况。长短时记忆(LSTM)作为RNN 的一个变型,由于门控制单元的存在,则避免了RNN的缺点。
传统的词特征提取方法,如Bag-of-words[2],最初应用于文本分类任务。Bag-of-words 只是把文本看作一组词的集合,从而忽略了文本数据的语法,语序等信息。显然,它不能最大程度地表达句子的特点。近年来,随着深度学习的快速发展与应用,将词语转化为词向量的预训练词嵌入方法给自然语言处理带来了许多新的启示。词嵌入是词语的一种向量表示,它将每个单词都映射到一个向量空间中,每个单词都有对应的向量。这种文本表示方法不仅缓解了数据稀疏的问题,而且可以表示出句子的语义信息。
Kim,Yoon[3]对卷积神经网络做出了调整,提出了一种具有不同大小卷积核的TextCNN 模型,该模型可以较好地提取句子特征,能够更好地捕捉文本的局部信息。Chen Q[4]提出了一种改进的LSTM 模型,它能更好地关联上下文,达到自然语言推理的目的。结合Chunting Zhou[5]等提出了一种结合递归神经网络与卷积神经网络特用以捕捉文本特征与上下文关系。
综上所述,CNN 能够获取数据中局部特征,但它的缺点是缺乏学习序列相关性的能力。与此不同的是,RNN 的优势在于序列建模,但无法提取文本中的局部特征。为了充分结合这两种模型的优点,本文提出了一种CNN 与LSTM 构成的一个混合模型,该模型具有CNN 特征提取能力与LSTM 捕捉上下文信息的能力,将捕获到的特征向量整合到一起,新获得的特征兼具特征性与上下文信息,最终通过softmax层输出结果。
2 准备工作
2.1 卷积神经网络
CNN 被提出来后,主要应用于计算机视觉领域。可以说,CNN的出现使计算机视觉有了质的发展。近年来,CNN 由于能更好地获取数据特征、构造和训练更简单、更快的优点,逐渐被应用于NLP领域。与计算机视觉领域的应用不同,NLP输入通常是一个文档或句子。文档或句子需要嵌入。经过处理后,每个词被表示为一个向量,文档或句子将被表示为一个向量矩阵,作为CNN 的输入传输到模型中。
深层神经网络和词预训练的快速发展为自然语言处理的相关任务带来了许多新思路。借助于单词嵌入,Kim 提出的TextCNN 相关的深度学习模型来处理文本中的语义特征,并取得了很大的进展。基于CNN[6]的模型在许多自然语言处理任务中表现出了优异的性能。在文本分类任务中,一般的CNN模型可以分为五个部分。
1)输入层
CNN 模型的输入层需要一个固定长度的文本序列。如果序列的长度小于l,我们将指定它的长度。如果长度大于l,我们将截获它。然后,输入层被转换成与该词相对应的词向量。一个句子由几个词语组成,因此每个句子都可以用一个对应的向量矩阵表示。如果句子中有m个单词,且向量维数为n,则得到的矩阵为m*n矩阵。
2)卷积层
卷积层通过卷积操作提取数据的局部特征。经过卷积运算,可以得到若干个不同的特征图。卷积窗口的大小设置为h*n,其中h表示词语的数目,n 表示词语的维数。由于词的大小与卷积核的大小相同,因此卷积运算后会得到列数为1 的不同特征映射。
3)池化层
常见的池化包括平均池化和最大池化。当数据通过池化层时,池化层可以起到减少计算和参数的数量的作用,从而防止过度拟合。以最大池化为例,最大池化不关注特征的具体位置,而更关注最大特征值,舍弃较小的特征值,这样可以很好地保留文本的主要特征。
4)Dropout层
Hintion[7]指出在每一批训练中,让隐层节点值的一半等于0,可以显著避免过拟合现象。丢失的节点可以减少特征的数量,从而减少了冗余,即增加了各层特征的正交性。在进行分类任务时,为了提高模型的泛化能力,防止过拟合现象的发生,一般会在全连接层上加入Dropout层。神经元失能的比例由初始化参数决定,训练时定义为0.3。
5)全连接层
全连通层是将通过卷积层、池化层等操作获得的特征表示映射到样本空间。它在卷积神经网络中起到将预测的目标分类到不同标签的作用,从而实现文本分类的最终目的。
2.2 长短时记忆
RNN 是一种能处理变长序列的神经网络。然而,长序列会带来大量的历史信息,从而使得传输中的梯度发生梯度爆炸或梯度消失的问题。LSTM是RNN 的变型,可以有效地避免RNN 的梯度问题。LSTM 的结构可分为四个部分,其中Ct代表存储单元,用于存储当前时间的历史信息。it它代表输入门,它决定了在当前时刻有多少输入被保存到存储单元Ct。ft是遗忘门,它决定了前一时刻的历史信息对当前存储单元Ct的影响,ot代表输出门,它的功能是控制应过滤掉多少当前单元状态。当输入数据为X=[x1,x2……xr]时,xt为n维词向量,LSTM的转换公式如下:
其中,Wi代表输入门的权重,Wf代表遗忘门的权重,Wo代表输出门的权重,bi代表输入门的偏置项,bf代表遗忘门的偏置项,bo代表输出门的偏置项。б是sigmoid 激活函数,ht是LSTM 单元的最终输出。我们可以将这种机制理解为:ft被看作是一个函数,它可以确定存储单元在多大程度上丢弃以前的信息,它控制存储单元在当前时间将存储多少新的信息。
3 CNN-LSTM模型
3.1 CNN-LSTM
目前,文本处理任务是深度学习的研究热点,各种神经网络组合模型层出不穷,如文献[8~9],采用CNN 和LSTM 的混合模型来处理不同的文本任务,克服了卷积神经网络和循环神经网络的缺点。文献[10~11]提出了一种加入注意机制的方法,并取得了很好的分类效果。文献[12~13]采用了CNN 和BiLSTM 的结合,双向LSTM 能更好地捕捉上下文信息。
我们的CNN-LSTM模型可以分为两部分:CNN和LSTM。如图2 所示,为了充分融合两种模型的优点,我们设置不同的卷积核来提取不同感受野下的特征信息。由于卷积神经网络特性的限制,CNN无法捕捉文本之间的上下文。以这种方式获得的文本分类效果不能达到最好的效果。LSTM的记忆机制使得其在处理长文本方面具有显著的优势。由于LSTM 的门控制单元,它可以很好地记录文本上下文的信息依赖性。本文提出的CNN 和LSTM的混合模型,如图1 所示,其不仅可以捕捉文本上下文的依赖关系,而且可以获得数据文本的局部特征。最后,通过集成层对两种不同的特征进行融合,从而获得更好的分类效果。
图1 CNN-LSTM
图2 CBOW和Skip-gram
3.2 实验数据处理
文本分类数据预处理的关键在于将文本数据转换成计算机能识别的矩阵向量。在嵌入单词被提出之前,常用的方法有one-hot、n-gram 等。例如,one-hot处理方法虽然可以解决数据向量化,但容易产生维数灾难,无法突出显示数据。n-gram的语义关联虽然可以反映词与词之间的关联信息。但它需要相当大的参数空间。在此基础上,bengio 等[2]提出了基于神经概率语言的模型,它允许较长的上下文,改进了当时最先进的N-gram 模型,是单词嵌入思想的原型。Mikolov T[14]提出了一种计算词向量的工具,它本质上是一个浅层神经网络,可以很好地计算词与词之间的相似度。
Word2vec[15]是一种基于浅层神经网络的词向量构造模型。其原理是:如果要对词进行向量化,任何一个词都有语义关联,且词向量的维数很小,则需要训练神经网络语言模型。Word2vec 包括两个模型:CBOW 和Skip gram。两个模型的结构如图2所示。
Word2vec 参数设置:sg=0 为CBOW 训练模型,sg=1 表示Skip-gram 模型,我们使用CBOW 训练模型。size 是我们训练数据的特征向量维数,我们设置size=100,window 代表句子中当前单词和预测单词之间的距离,设置window=5,min_count可以截断字典,参数设置为min_count=1,worker 参数控制训练并行数,我们设置worker=6。
3.3 实验环境及参数
实验数据集是清华自然语言处理组提供的《南方新闻》中文新闻文本的一个子集。实验数据集由新浪新闻RSS 订阅频道2005 年-2011 年的14 类历史新闻数据组成。从THUCNEWS,我们选择了10类游戏,娱乐,时尚、家居、体育、科技、房地产、教育、金融等为实验数据。每个类别有6500 个新闻条目,共有65000 个新闻数据。选取其中50000 条新闻作为训练集,10000 条新闻作为测试集,6500条新闻作为验证集。实验环境如表1所示。
表1 实验环境及配置
模型的LSTM 隐层的尺寸为100,其三个门控制单元如公式所示,式(1)、(2)、(3)、(4)和式(5)分别是存储单元输出公式和双曲正切函数。CNN 卷积核的大小为2,3,4。我们使用最大池来进行特征提取和维度压缩。池化层设置为0.3。另外,在CNN 卷积核中采用ReLu 激活函数,全连接层采用softmax,训练采用Adam梯度下降优化算法,初始学习率为0.001。
3.4 实验和结果
实验步骤如下:
1)对数据集进行预处理,如使用停止词列表删除文本中无用的停止词,使用Jieba 分词对文本进行分段。
2)对处理后的单词进行矢量化,将单词的维数设置为100,然后将处理后的单词填充到模型中。在CNN 中,通过不同大小卷积核的卷积层提取词向量,然后通过最大池化层提取最强特征。dropout层休眠神经元以防止过度拟合,最后输出完整的连接层。在LSTM 中,词向量通过100个隐藏层,通过三个门控制单元捕捉上下文之间的依赖关系。通过集合层,将CNN 处理的高特征向量和LSTM 处理的具有上下文信息的向量进行融合得到新的向量,两者兼有,将得到的新向量输入到dropout 层进行过拟合化处理。最后,由softmax输出最终结果。
3)我们使用CNN模型、TextCNN模型、LSTM模型和其他基于深度学习的分类模型与我们提出的模型进行了比较。
从图3 可以看出,实验结束后,我们的CNNLSTM 模型在训练集中的准确率为99%,在验证集中的准确率为92.52%。我们的模型与LSTM 模型和TextCNN 模型的比较如表2 所示。经过比较,该模型的准确率比LSTM 模型提高了约3%,比TextCNN 模型提高了5%左右,说明我们的模型能够更好地表达数据的原始特征,有助于提高文本分类的效果。
表2 不同模型训练结果对比
图3 CNN-LSTM实验结果
4 结语
随着近几年深度学习的发展,文本分类技术的应用也越来越广泛,但随着需求的不断增长,仍有许多问题需要探讨。文本分类技术的准确性还有待提高。与传统的文本分类技术相比,基于深度学习的文本分类技术具有更好的分类效果,各种新模式层出不穷。
本文提出了CNN 与LSTM 结合的一种新的处理文本分类任务的模型。该模型利用具有不同卷积核的CNN 提取数据文本的局部特征,并通过LSTM 保存文本上下文的联系信息,克服了卷积神经网络捕捉上下文相关性的不足。通过实验表明,我们提出的模型具有良好的分类效果。在下一步的工作中,我们可以引入注意模型来探索更好的分类模型,提高文本分类的准确性。