基于机器学习的文档内容识别分类系统——分类模块毕业论文
2020-03-09 10:22:52
摘 要
随着机器学习的火热,作为自然语言处理任务核心的文本分类得到了广泛的关注,众多国内外学者都在研究这一领域并取得了突破性的成就。而文本分类任务的基础工作是文本表示,文本表示的好坏决定了文本分类等自然语言处理任务的高效性。其次文本分类模型的选取亦是文本分类工作的关键,良好的模型更加的简洁,训练速度更快,分类效果更好。
在本文中,我们对中文进行降维处理,输入层采用词向量表示;卷积层利用滤波器提取文档的特征信息,接下来使用最大池层和完全连接层进行特征降维。最后使用训练得到的分类器将文档划分到各个类。成功的构建了基于卷积神经网络的文本分类模型。卷积神经网络对于文本特征信息的提取表现出了良好的性能。我们在选取的验证集上测试该模型,取得了96%以上的准确率,跟许多传统的文本分类方法相比拥有很好地分类效果。
关键词:自然语言处理;深度学习;卷积神经网络;文本分类;词向量
Abstract
With the heat of machine learning, the text classification, which is the core of the Natural Language Processing task, has received extensive attention. Many scholars at home and abroad are studying this field and have made breakthrough achievements. The basic task of text classification task is text representation. The quality of text representation determines the efficiency of Natural Language Processing tasks such as text classification. Secondly, the selection of text classification model is also the key to text categorization. Good models are more concise, faster training and better classification effect.
In this paper, we deal with the dimensionality reduction of Chinese, the input layer is expressed by the word vector, and the convolution layer uses the filter to extract the feature information of the document, and then uses the max-pooling layer and the fully connection layer to reduce the feature dimension. Finally, the classifier is trained to classify documents into various classes. A text categorization model based on convolution neural network is successfully constructed. Convolution neural network shows good performance in the extraction of text feature information. We test the model on the selected validation set, and get more than 96% accuracy. Compared with many traditional text classification methods, we have a good classification effect.
Key Words:Natural language processing;Deep learning ;Convolutional neural network;Text Categorization;Word vector
目 录
摘 要 I
Abstract II
第1章 绪论 1
1.1 研究目的及意义 1
1.2 国内外研究现状 1
1.3 论文的研究内容 3
第2章 相关技术概述 4
2.1 开发工具及环境 4
2.1.1 Windows Python 4
2.1.2 TensorFlow 4
2.1.3 numpy 4
2.1.4 scikit-learn 5
2.1.5 Scipy 5
2.2 相关技术介绍 5
2.2.1 CNN 5
第3章 系统的设计与实现 8
3.1 数据集与预处理 8
3.1.1数据集 8
3.1.2预处理 9
3.2 模型 10
3.2.1配置项 10
3.2.2模型结构 11
3.2.3实施 14
3.3 训练 18
第4章 测试验证 23
4.1 系统功能测试 23
第5章 总结 25
参考文献 26
致 谢 28
第1章 绪论
1.1 研究目的及意义
随着网上信息的迅速增长,产生了大量的电子文本,这些电子文本一般都简洁精炼并且含义概括,如何通过机器对这些电子文本进行自动分类已经成为自然语言处理和机器学习领域研究的热点和难点[1],文档分类技术慢慢变成文档的组织与处理的重点。传统的文本分类技术基本上都是基于向量空间模型,Manning提出了基于bigram和unigram模型的贝叶斯分类,邸鹏等提出的朴素贝叶斯分类算法[2]。张玉芳等人提出了一种改进的基于TF-IDF 的文本分类算法[3]。文献中使用 KNN 算法进行文本分类[4]。这些传统的文本分类算法都是人工的进行特征选择与提取,并不能保证文本信息的完全提取。因此在文献中,我们使用神经语言模型来训练单词向量[5-7]。达到了很理想的情况。
文本分类问题作为一个经典问题在NLP任务中一直饱受关注,找出文本所属的类别是它所要实现的目的。文本分类在很广泛的领域得到了应用,例如主题标记 [8] 、情感分类[9-10] 等。但是,提高文本分类性能的关键在于使用好的文本表示方法。词袋模型和向量空间模型是传统的文本表现所采纳的模型。词袋模型不能获得文本的语义信息,存在高纬度、高稀疏性的缺点;向量空间模型建立在词袋模型的基础上,它可以提取文本的多项特征,将高维的文本信息嵌入到低维的向量中。
近年来,文本特征表示采用基于卷积神经网络模型的方法逐渐成为主流。基于卷积神经网络模型的分布表示称为字嵌入、字向量或分布表示。利用卷积神经网络实现文本建模可以将高维的文本数据降维嵌入到低维向量空间中,克服了词袋模型的高纬度、高稀疏性的缺点,有效改善了维数灾难的问题。用分布表示作为输入,然后用卷积神经网络对文本进行分类,使性能得到了极大的提升。
本文主要讲述了基于卷积神经网络的文本分类模型的实现,在实现的文本分类模型上,以处理过的数据词向量验证模型的效果。
1.2 国内外研究现状
国外:
国外在文本自动分类领域的研究开始的比较早,在五十年代末,H.P.Luhn[11]在这一领域取得了创新性的进展,成为第一个将词频统计方法应用到文本自动分类领域的领军人物。 Maron在1960年发表了自动分类算法的第一篇论文[12],在此之后,KS.Jsones、K.Spark、G.Salton等众多学者在此领域都进行了非常有效的研究,文本分类在国外的发展已经越来越成熟化。并且在邮件、电子会议等领域得到广泛的应用。其中白宫的邮件分类系统和construe系统都是较为成功的代表。国外目前已经拥有很多成熟的文本分类算法:Rocchio法及其变异算法、决策树、贝叶斯网络、支持向量机、k近邻法(KNN)、朴素贝叶斯等方法。基于这些算法,许多学者做了大量的研究与试验,总结了这些算法适用的领域与各自的优缺点。
国内:
文本分类在国内的发展开始的时间比较迟,在1981年,侯汉清教授开始就计算机在文本分类领域展开研究,并总结了国外相关技术。之后,我国陆续生产了一批文本分类系统,其中东北大学的图书馆分类系统是其中最具代表性的,还有上海交大基于神经网络优化算法研制的分类系统和清华大学开发的分类系统。1995年,清华大学的吴军研发了汉语语料自动分类系统,1998年,东北大学计算机系的张月杰、姚天顺开发了新闻语料汉语文本自动分类模型,研究预定义类别和文本特征的相关性进行文本分类。1999年,邹涛、王继成等使用向量空间模型和基于统计的特征词提取技术开发了中文文本分类系统CTD,能够根据文本内容将文本划分到多个类别中。除此之外,在中文文本分类领域,国内许多学者进行了大量研究。黄轩青提出了一种基于机器学习的与文本无关的文本分类模型。周水庚研究了隐含语义索引在中文文本分类中的应用。李荣陆论述了最大熵模型在中文文本分类中的应用。由于中文与英文等语言的不同,词性不存在明显标记,词语间隔不明显,给中文文本分类造成了很大困难。但是随着国人在自然语言领域的理解越来越深,中文文本分类日渐成熟。中文文本分类发展迅速,逐渐向实用化走进。
1.3 论文的研究内容
本文以卷积神经网络实现文本分类为研究对象,严格按照系统的开发流程,首先是寻找文本分类的数据集,在这基础上对数据进行处理,构建特征向量矩阵。在基于输入层,通过对CNN模型超参数的配置构建卷积神经网络模型,并在模型搭建完成之后对其进行训练,最后使用训练后的模型在测试集上对文档内容进行分类,并通过各种指标对分类性能进行评估。本文将分成五章来介绍有关内容:
第一章描述了此次开发的目的以及意义,并通过对国内外的研究现状进行分析来引出此次课题。
第二章是对本次开发所用到的有关技术的描述,其中主要涉及到了如TensorFlow框架、Python、神经网络等机器学习领域开发的常用技术,使得读者可以大体上对所使用的技术有一个清晰的认识。
第三章通过对模型结构的研究实现系统的每一层,剖析卷积神经网络的灵活之处。
第四章对开发的系统进行测试,其中主要为功能测试。
第五章总结本次的课题研究,在完成主要功能的基础上分析还有待完善之处。
第2章 相关技术概述
2.1 开发工具及环境
本次毕设主要基于机器学习的方法实现对文档内容的分类,为了使后期开发更加具有目的性以及高效性,需要预先确定系统应当具有的功能以及需要采用的技术。该分类系统整体上由卷积神经网络进行实现。其中,开发使用解释性语言Python,运行框架使用Google开源的在DistBelief基础上研发的第二代人工智能学习系统TensorFlow。由于卷积神经网络速度非常快的特点,本次毕设使用CNN模型进行训练,进而对文档分类
2.1.1 Windows Python
众所周知,在2016年底,Windows开始初步支持TensorFlow0.12,这使得在win10平台下使用TensorFlow进行开发成为可能。Python这门语言学习起来非常的简单,容易上手并且具有跨平台性,使得这门解释性语言被在机器学习领域表现的非常突出。
2.1.2 TensorFlow
在本科对机器学习的使用中,我们主要使用的开发环境即为TensorFlow。TensorFlow的前身是谷歌内部第一代深度学习系统DistBelief,在此基础上,经过大量改进得到运算速度极的开源库。数据流图是TensorFlow中的核心概念,节点表示数学操作,线表示在节点间相互联系的张量。TensorFlow的整体架构非常灵活,具有跨平台展开计算的能力,你可以通过一个API将计算工作部署到桌面设备、服务器或移动设备中的一个或多个CPU或GPU。 通过Python灵活的接口,TensorFlow的实现变得非常容易,因此被广泛应用于机器学习和深度神经网络方面的研究,TensorFlow系统的通用性使其也可应用于其他计算领域。
2.1.3 numpy
NumPy本质上是Python众多包中的一个,添加了对Python的数字扩展。 它代表 “数字 Python”。这个库由处理数组的例程集合和多维数组对象组成,因此numpy可以存储和处理大型矩阵。相比于Python中的嵌套列表,numpy显得要高效的多。从功能上讲,NumPy将Python变成了MatLab系统的免费升级版。
2.1.4 scikit-learn
SCIKIT学习是Python语言中的机器学习包,它实现了各种有监督和无监督的分类算法、回归算法与聚类算法,包括支持向量机、随机森林、梯度提升、k均值和基于密度的聚类算法(DBSCAN),且用Python数字库NUMPY和科学库SCIPY设计,互相合作。
该库在生产中希望具有良好的健壮性和支持性,因此重点研究了可用性,代码质量,协同工作,文档生成和性能等问题。
2.1.5 Scipy
Scipy是一个开源的Python数学工具包与算法库。SciPy与Numpy紧密联系,由Scipy借用Numpy中的多维数组进行科学计算,因此Numpy是SciPy的基础。Scipy包含众多的子模块,如傅里叶变换、常微分方程求解、插值运算、图像处理、线性代数等等。
2.2 相关技术介绍
2.2.1 CNN
在20世纪60年代,Wiesel和Hubel[13]提出了卷积神经网络,从此之后,卷积神经网络成为深度学习研究的热点,CNN广泛应用于图像处理领域。在图像处理任务中,CNN是以像素点为单位进行一系列的操作,而在NLP任务中,是以词向量为单位,词向量的表示方式最开始是采用one-hot的形式,后来基于word2vec模型训练得到的词向量被广泛使用。
近年来,在图像和语音识别领域,卷积神经网络发展的越来越成熟,卷积神经网络的模型结构由输入层、卷积层、池层、全连接与SoftMax层构成,是一种深度神经网络。对比于传统的神经网络,卷积神经网络所特有的局部连接和权值共享的特点让神经网络训练的参数数量大大减少,这使得其能很好地提取特征信息,同时减少参数,方便模型的训练。在对卷积神经网络执行卷积和池操作后,网络能够从文本中提取抽象的特征值,因而适用于文本分类。
卷积神经网络从上到右、从左到右通过卷积核的矩阵滑动,将卷积核的每个元素与对应于其在图像上的位置的元素相乘,然后得到输出像素的和。通过卷积操作,可以提取出各种不同的特征信息。卷积运算显然是线性运算,而神经网络需要拟合非线性函数,所以它类似于全连接网络。它需要添加激活函数,如SigMID函数、TANH函数、Relu函数等。传统的前馈神经网络将当前层的输入神经元和下一层的输出神经元连通起来,这在卷积神经网络中被称为完全连接层。而在卷积神经网络中有所不同,CNN通过卷积操作在输入层上计算输出,产生局部连接,卷积核覆盖的每一个位置会和输出中的一个神经元连接。每个卷积层使用大量的滤波器学习各种特征,然后在训练阶段,CNN自动学习每个滤波器的值,最后基于要执行的任务,检测出需要的特征形状。
卷积层是组成卷积神经网络的核心部分,卷积层主要是将前一层的特征图与多个卷积核进行卷积操作,得到卷积核数目维数的特征向量,可以理解为有多少个卷积核就检测了多少个文本特征。卷积核尺寸用h表示,k表示词向量维度,卷积核用w表示,表示长度为h的文本序列,每个特征值可以由公式得到。w表示卷积核的权重参数,b表示卷积层的偏置项,(• )为卷积操作, 表示激活函数。
通过卷积运算,我们完成了输入图像的特征提取和降维,但是特征图像的维数仍然很高。高维的图像非常耗费时间,而且容易导致过拟合。为此,引入了一种下采样技术,也称为池化技术。池化层是对卷积层的输出进行下采样操作,可以使卷积层输出的特征信息得到简化,同时减少网络参数。池化层根据池面积的大小进行扫描和采样,而不是连续采样。如果池化区域高为h,宽为w,在池化操作开始后,输入特征图会被分割成若干w×h的区域。池化操作定义的每个子区域在池化后,得到相应的池化操作后的值(max、average)。本文采用最大池法。在特征映射中提取每个合并区域中的最大特征值。池的操作被图像的某个区域中的值所取代,例如最大值或平均值。除了降低图像尺寸之外,还使得对图像的操作具有平移、旋转不变性。因为输出值是从图像的一个区域计算出来的,所以它对平移和旋转不敏感。
通过对卷积神经网络中的卷积核的数目和池尺寸的设置,可以从原始文本中提取更多的语义信息和位置信息的特征值,然后将所有提取的特征值组合在一起,最后得到一个向量,该向量就是卷积神经网络对文本处理后形成的特征向量表示。
第3章 系统的设计与实现
基于卷积神经网络的文档分类包括预处理、文本的分布式表示、卷积神经网络模型、性能评价等步骤。文档分类的重点是表达文本,然后利用人工神经网络结构自动获取特征表达能力,代替传统方法中的复杂人工特征工程,实现端到端问题。
常用的文本分类模型有许多种,例如朴 素 贝 叶 斯(NaiveBayes,NB)、 K 紧邻(K-Nearest Neighbor,KNN)、决策树(Decision Tree)、支持向量机(Support Vector Machine,SVM)等等。特征提取的好坏在某种程度上会直接影响到分类的效果,所以传统分类模型的文本分类方法的关键在于特征提取和选择。近年来,随着深度学习的不断发展,学者们已经将文本分类的焦点转移到基于人工神经网络的分类模型。神经网络是模拟生物神经网络进行信息处理的数学模型。在神经网络中有众多可调连接权值的神经元,它利用误差反向传播算法来实现参数学习的功能,具有很强的非线性映射能力。利用神经网络处理文本分类的优点之一是不需要花费大量时间进行特征提取和选择,并将词的分布式表示输入到网络中,神经网络可以自动提取有价值的信息。关于文本分类,通常这些信息是卷积、点乘、非线性函数。获得矩阵乘法和其他运算,并且信息被高度编码并且不容易解释。
3.1 数据集与预处理
将文本转化为适合于表示和分类的干净的序列是文本分类首先要做的工作,在数据集与预处理阶段,我们所做的是确定实践需要的数据集合,对数据进行处理,将数据变为我们需要的格式。此阶段对数据处理的好坏在很大程度上决定了模型在文本分类的性能。
3.1.1数据集
目前网络上可供使用的数据集还是比较多,但是各个数据集具有不同的适用性。在本次毕设中我选用的是清华大学开源的中文文本分类工具包数据集THUCNews的一个子集。此工具包可以自动高效的对使用者自定义的文本进行训练、测评、分类。特征选取、特征降维、分类模型学习一般是文本分类需要经历的三个阶段。THUCTC在长文本领域具有非常优秀的表现,其测试速度快、准确率高的优点让它得到了广泛的使用。所以本次训练我选取了此工具包使用的数据集中的10个分类。然后从每个分类中再选取6500条数据。选取的类别包含:教育、游戏、娱乐、体育、科技、时尚、时政、财经、房产、家居。
最后的数据集构成如下:训练集:5000*10 验证集:500*10 测试集:1000*10