杜雪嫣 王秋实 王斌君
国内外的诸多研究学者在文本分类方面已经取得了一些研究成果,Kim将单词转变为词向量,并将其嵌入卷积神经网络,在情感分类中取得了良好效果①Y. Kim, “Convolutional Neural Networks for Sentence Classification”, Proceedings of the 2014 Conference on Empirical Methods in Natural Language Processing (EMNLP), Doha, Qatar, 2014, pp.1746-1751.;Santos等人以英文字符序列为基础,将待分类的文本划分为不同的处理单元,分别提取单词级和句子级的特征向量,提高了英文文本分类的准确性②Santos C. N, Gatti M. A, “Deep convolutional neural networks for sentiment analysis of short texts”, Proc of International Conference on Computational Linguisttics, 2014, pp. 69-78.;刘龙飞等人提取字级别的特征来对微博文本进行分类,进一步提高了微博文本分类的准确率③刘龙飞等:《基于卷积神经网络的微博情感倾向性分析》,《中文信息学报》2015年第6期。。本文针对中文及短文本的特点,研究了LSTM、CNN以及其参数调优问题,并通过大量实验,构建了一个适用于中文短文本分类的基于 LSTM-CNN的文本分类模型。与现有方法进行的对比实验表明,该方法非常适合中文短文本分类,有较高的准确率。
本文所构建的基于LSTM-CNN的中文短文本分类模型包括LSTM层、输入层、卷积层、池化层以及全连接层,其结构图如下图所示。
中文短文本分类模型结构图
下面分别阐述LSTM层、输入层、卷积层、池化层以及全连接层的设计思路。
一是LSTM层。LSTM层的作用主要是接收输入的词向量,并从中提取到有用的语义特征。由于句子中的每个词所表达的含义并不仅取决于这个词的含义,而且取决于这个词上下文的含义,因此直接将词向量输入到卷积神经网络提取局部特征可能会导致语义信息的丢失。通过LSTM层的处理,在输入到卷积层的信息中,不仅包含了词向量的原始信息,还包括了输入文本的语义信息,这样卷积层就能提取到更加丰富的局部信息,提高模型分类的准确率。
二是输入层。针对图像处理任务而设计的CNN是以像素矩阵作为输入。在自然语言处理任务中,必须将特征向量作为一个矩阵来输入给卷积神经网络网络。矩阵中的每一行都是一个多维向量,这就需要在输入层对特征向量进行处理。在接收到LSTM层提取出的向量后,在输入层将其纵向堆积成二维矩阵输入到卷积层进行特征的提取。
三是卷积层。文本中的局部特征能够通过卷积层来提取。卷积核表示某一个局部特征,通过卷积核的滑动计算,在输入矩阵中发现是否存在相关的特征。卷积核与所在矩阵相应位置内积的加权平均函数称为卷积核函数。在自然语言处理任务中,输入矩阵的宽度就是卷积核的宽度,改变卷积核的尺寸可以调整提取特征的窗口大小,这个尺寸要认真选择。如果尺寸过小,则无法提取相关的特征;但如果尺寸过大,则会提取出来许多干扰特征。通常情况下,在卷积神经网络中,每个卷积层只包含有一种尺寸的卷积核。尽管这种识别方法在图像识别任务中有较好的效果,但是并不一定适用于自然语言处理任务。考虑到自然语言的特点,为了尽可能充分地保留文本上下文的信息,从而提取出不同颗粒度大小的局部特征信息,本文采用了在卷积层中使用多种不同尺寸卷积核组合的方案设计。
四是池化层。在卷积层提取出文本的局部特征之后,就需要池化层对局部特征进行二次提取。笔者选择了最大池化的方法,只取其中最大值作为池化层的保留值,而抛弃其它所有特征值。换句话说,在一张特征图中,不管最强的特征向量是出现在什么位置,都只保留这个最强的特征向量。在自然语言处理任务中,执行最大池化操作的好处在于:(1)能够减少模型参数的数量;(2)可以减少输出矩阵的维度,但同时也将最显著的特征保留下来。
五是全连接层。全连接层的目的是将前面提取到的局部特征进行整合,进行归一化处理,并通过softmax逻辑回归得到最终分类结果。
为了验证本文提出分类方法的适用性,本文选用了四个语料库。具体介绍如下:
1.THUCNews语料库。内容来自新浪新闻,通过筛选过滤生成了约74万篇新闻文档。本文从中选取了符合短文本分类需求的时政、房产、家居、教育、科技、时尚、游戏、体育、财经、娱乐等十个类别,每个分类都有6500条语料,共计6.5万条语料。
2.搜狐新闻语料库。该语料库是搜狗搜索引擎实验室从信息检索领域爱好者和研究者提供的FTP上获取的互联网网页语料库。本文选择了汽车、健康、财经、旅游、教育、军事、文化、娱乐、IT、时尚、体育等十一个类别,截取每条新闻的前300个字符作为一条语料,共计2.2万条语料。
3.酒店评论语料库。该语料库由谭松波教授收集整理,是一个二分类语料库。由于语料库分布的不平均,本文抽取了积极评论7000条,消极评论3000条,共计1万条语料。
4.复旦大学中文文本分类语料库。这是一个不均匀的语料库,本文从中选出电脑、历史、农业、体育、航空、环境、经济和政治共8个大类,在去除部分重复和损坏的语料后,共有1.9万条语料。
1.数据预处理。众所周知,英文是以单词为单位的,单词和单词以空格分隔;而中文则是以字为单位,对字的意思理解依赖于上下文的语境。为了尽可能的保留句子的原意,在进行文本分类任务之前,需要对中文文本进行分词处理。①冯俐:《中文分词技术综述》,《现代计算机(专业版)》2018年第34期。本文使用的分词工具是Python中文分词组件jieba分词。除此之外,在进行英文等拼音文本分类时,为了将不定长的单词统一长度,需要将这类语言中的单词进行统一编码,如one-hot编码。然而,对于短文本来说,由于长度的限制,每一条文本中包含的词并不多,采用one-hot方法构建词向量会非常稀疏,给文本分类带来极大的不便。对于中文这种象形文字语言,计算机内部本身就有一个能够识别的编码,无需统一编码。但是,汉字的内部编码缺乏字与字之间的语义联系,影响了后续卷积核对文本特征的提取。因此,本文使用了word2vec模型对待分类的中文文本进行预处理。这种方法不但可以将文本转变为词向量的形式,还可以表示上下文之间的关系,便于接下来的分类。本文选用Skip-gram模型将数据预处理为200维的词向量。
2.模型调参。神经网络含有多种超参数,超参数的设置会严重影响实验结果;而合适的模型参数选择往往需要大量的实验验证,因此,为了构建适用于中文短文本的分类模型,本文参考了相关文献②王盛玉等:《基于卷积神经网络参数优化的中文情感分析》,《计算机工程》2017年第8期。的实验结果,选择学习率为1e-3,每种卷积核数量均为256,dropout为0.5,全连接层神经元个数为256作为基本超参数。在此基础上,实验验证了卷积核尺寸为2、3、4、5、7、10和20的效果。实验采用搜狐新闻语料库,通过10折交叉验证得到表1的结果。
通过实验结果可以看出,卷积核尺寸为5的时候文本分类的准确率最高。为了解决单一尺寸卷积核提取的局部特征单一的问题,笔者考虑了一个卷积层上设置多个不同尺寸卷积核对文本分类准确率的影响。因为不恰当的卷积核组合可能会提取出多余的特征,干扰模型的分类结果。因此,卷积核的组合超参数需要实验调优。选择卷积核尺寸组合的标准与之前相同,实验以单一卷积核尺寸最优的 5为参考,通过10折交叉验证得到表2结果。
从实验结果可知,当卷积核组合为2、3、5的时候,模型的文本分类准确率优于卷积核尺寸为5和其他卷积核组合。因此模型的卷积层采取卷积核尺寸为2、3、5的组合。
表1 单一卷积核的实验结果
表2 卷积核组合的实验结果
3.对比实验结果。通过以上实验,笔者针对中文短文本构建出了合适的基于LSTM-CNN的分类模型(在表3中称为LSTM-CNN模型)。为了验证这一分类模型在中文短文本分类中的优越性,笔者使用复旦大学语料库、搜狐新闻语料库以及酒店评论语料库,将构建的卷积神经网络模型与李文波提出的Labeled-LDA模型①李文波等:《基于Labeled-LDA模型的文本分类新算法》,《计算机学报》2008年年第4期。、陈慧构建的SVM模型②陈慧等:《多种算法对不同中文文本分类效果比较研究》,《软件导刊》2019年第5期。、迟麟提出的KNN模型③迟麟:《中文文本分类中特征选择算法及分类算法的研究》,燕山大学2010年硕士学位论文。、冯国明提出的CapsNet模型④冯国明等:《基于CapsNet的中文文本分类研究》,《数据分析与知识发现》2018年第12期。进行对比实验,得到的实验结果如表3所示。
从实验结果可以看出,与现有的 SVM、KNN、CapsNet和Labeled- LDA模型的实验结果相比,笔者构建的LSTM-CNN模型在中文短文本分类方面有更高的准确率和优势。
表3 对比实验结果
基于LSTM-CNN的中文短文本分类模型从基于语义的中文短文本预处理、通过LSTM提取语义信息以及通过卷积核组合提取不同粒度短文本特征等三个方面入手,有效地解决了传统文本分类方法难以解决的文本特征稀疏性、短文本文本分类结果准确率低等问题。限于篇幅,本文没有对设计的结构中参数背后的深层含义和理论问题进行阐述,这些问题我们将另文研究和探讨。