当前位置:首页 期刊杂志

基于卷积神经网络的文本分类应用

时间:2024-08-31

摘要:本文先介绍文本分类的特点和应用,并指出传统处理方法在文本处理方面的瓶颈及不足之处;然后引入深度学习的概念,以卷积神经网络为例,介绍卷积神经网络在文本分类中的应用,通过从特征词入手,經过卷积-池化-分类等步骤对文本的分类进行预测。结果表明,卷积神经网络自动抽取特征的优点相对传统的文本分类方法具有更高效的表现。

关键词:朴素贝叶斯;深度学习;卷积神经网络;文本分类

中图分类号:TP183:文献标识码:A

0 引言

文本分类是自然语言处理的一个重要方面,利用计算机手段推断出给定的文本(句子、文档等)的标签或标签集合。利用深度学习进行文本分类和语义判断是一个新兴而充满前途的研究课题。

传统的文本分类主要是利用贝叶斯原理,基于上下文之间的文本出现的概率对自然语言进行处理。尽管贝叶斯在文本处理方面也非常高效,但其存在“零频率”和不一定满足独立预测的假设等方面的缺陷。而使用深度学习,完全另辟蹊径从特征词入手,经过卷积、池化、分类等步骤,自动学习和抽取文本特征,对海量文本进行快速准确的分类。

1 深度学习简介

加拿大多伦多大学教授 Geoffrey Hinton长期坚持神经网络的研究,但由于当时支持向量机的流行,神经网络相关的研究工作遇到了重重阻碍。2006 年,Geoffrey Hinton 在 [1]

提出了一种逐层预训练的算法,可以有效地初始化Deep Belief Networks(DBN)网络,从而

使得训练大规模、深层数(上百万的参数量)的神经网络成为可能。在论文中,Geoffrey

Hinton 把深层的神经网络叫做Deep Neural Network,这一块的研究也因此称为 Deep

Learning(深度学习)。

80年代时神经网络的理论研究基本已经到位,为什么却没能充分发掘出深层网络的巨大潜力?通过对这个问题的讨论,本文接下来讨论深度学习的典型网络-卷积神经网络,这也是层数可以轻松达到上百层的一类神经网络。

2 卷积神经网络简介

2.1 卷积神经网络的特点

卷积神经网络作为深度学习的一个典型网络,通过充分利用局部相关性和权值共享的思想,大大地减少了网络的参数量,从而提高训练效率,更容易实现超大规模的深层网络[1]。2012年,加拿大多伦多大学Alex Krizhevsky 将深层卷积神经网络应用在大规模图片识别挑战赛ILSVRC-2012上,在ImageNet数据集上取得了15.3%的Top-5错误率,排名第一,相对于第二名在Top-5错误率上降低了10.9%,这一巨大突破引起了业界强烈关注,卷积神经网络迅速成为计算机视觉领域的新宠,随后在一系列的任务中,基于卷积神经网络的形形色色的模型相继被提出,并在原有的性能上取得了巨大提升。

2.2 卷积神经网络的基本原理

在数字图像处理中有一种基本的处理方法叫线性滤波[2]。它将待处理的二维数字看作一个大型矩阵,图像中的每个像素可以看作矩阵中的每个元素,像素的大小就是矩阵中的元素值。而使用的滤波工具是另一个小型矩阵,这个矩阵就被称为卷积核。卷积核的大小远远小于图像矩阵,具体的计算方式就是对于图像大矩阵中的每个元素,计算周围的像素和卷积核对应位置的乘积,之后将结果相加最终得到的终值就是该像素的值,这样就完成了一次卷积。

如果采用卷积神经网络来替代以上提到的手写数字识别浅层神经网络,采用三个卷积层,和两个全连接层,一共只需要13450个参数,而且识别的准确率大幅上升。经过测试,可由原来的91%上升到98%以上。由此可见,卷积层的参数量非常少,主要的参数量集中在全连接层。由于卷积层将输入特征维度降低很多,从而使得全连接层的参数量不至于过大,因此通过卷积神经网络可以显著降低网络参数量,同时增加网络深度,大幅提高了识别的准确率。

3 卷积神经网络的在文本分类中的关键技术介绍

卷积神经网络可以应用在人工智能的很多领域[3],比如图像和自然语言处理等等。其结合特征提取和目标训练为一体的模型,能够很好地利用已有的信息对结果进行反馈训练。对文本识别的卷积神经网络来说,同样也是充分利用特征提取时提取的文本特征,来计算文本特征权重的大小,归一化处理需要处理的数据[4]。这样使得原来的文本信息抽象成一个向量化的样本集,之后将样本集和训练好的模板输入卷积神经网络进行处理。下面以文本分类为例,说明卷积神经网络在文本分类中具体的编程方法和步骤。

3.1数据集介绍

本文采用名为“AG”的新闻分类数据集,该数据集是由学术社区ComeToMyHead提供的,从2000多个不同的新闻来源搜集,超过100万的新闻文章。可用于研究分类、聚类、信息获取(rank、搜索)等非商业活动。在此基础上,Xiang Zhang为了研究需要从中提取了127600样本,其中抽出120000样本作为训练集,7600作为测试集。该数据集按World、Sport、Business和Sci/Tec进行4类划分。“AG”数据集用csv文件格式进行存储,文件分为新闻分类、新闻标题、新闻内容三列。

3.2 关键技术介绍

(1)字符(非单词)文本数字化的处理

任何一个英文单词都是由字母构成,因此可以简单地将英文单词拆分成字母的表示形式,例如hello->[‘h, ‘e , ‘l , ‘l, ‘o], 此时可以使用one-hot 或字符embedding的方式进行处理。这样“hello”这个单词就被转换成一个[5,n]大小用one-hot表示的矩阵,其中n为所有字符的个数。然后以[新闻内容单词个数,最大单词字符数,n]的矩阵形式直接把新闻内容输入卷积神经网络进行处理。

(2)解决每个句子文本输入长度不同的问题

首先找出所有要输入训练句子的最大长度,把这个作为标准输入到卷积神经的网络的固定長度,其余不足这个长度的句子剩下的空位由0进行填充。

(3)卷积神经网络文本分类模型的实现

对文本数据集处理完毕后,接着进入卷积神经网络的分类模型设计。本文采用了一个

5层卷积神经网络的具体设计,每层的设计如下。

a.输入层

输入层是句子中的词语对应的one-hot组成的字符矩阵,假设最长的句子有 n 个词,每个词最大的字符序列为k个字符,每个词从总共t个字符中选取若干字符构成,则输入的句子可以用[n,k,t]三维矩阵来表示。(在CNN中可以看作一副高度为n、宽度为k的深度为t的图像)。

b.卷积层

输入层通过卷积操作得到若干个Feature Map,卷积窗口的大小为 h ×t ,其中 h 表示纵向词语的个数。通过这样一个大型的卷积窗口,将得到若干个列数为1的Feature Map。

c.池化层

本文中采用了一种称为Max-Pooling的方法。这种方法就是简单地从之前一维的Feature Map中提出最大的值,最大值代表着最重要的信号。可以看出,这种Pooling方式可以解决可变长度的句子输入问题。

d. 全连接+softmax层

池化层的一维向量的输出通过全连接的方式,然后再连接一个Softmax层进行概率计算,最后得出分类的归属。

(4)训练方法

在倒数第二层的全连接部分上使用Dropout技术,Dropout是指在模型训练时随机让网络某些隐含层节点的权重不工作,不工作的那些节点可以暂时认为不是网络结构的一部分,但是它的权重得保留下来(只是暂时不更新而已),因为下次样本输入时它可能又得工作了,它是防止模型过拟合的一种常用的技巧。同时对全连接层上的权值参数给予L2正则化的限制。这样做的好处是防止隐藏层单元自适应(或者对称),从而减轻过拟合的程度。

(5)实验结果分析

从实验的结果来看,主要有两方面问题:

a.训练metrics不平滑,因为用的batch-sizes很小。如果用大点的batches (或者在整个测试集上进行评估),会得到更平滑的曲线。

b.验证集的accuracy明显比训练集的低,说明网络过拟合了,应该用更大的数据集,更强的正则化,更少的模型参数,或者使用dropout,能较好改善过拟合问题。

从实验的规模和效率来看,卷积神经网络在文本分类中取得了很好的成果,相比于之前浅层的机器学习方法如NB、SVM效果更好,特别实在数据集较大的情况下,并且CNN不用我们手动去提取特征,原浅层ML是需要进行文本特征提取、文本特征表示、归一化、最后进行文本分类。所以采用卷积神经网络在处理大量文本的分类的时候,整体效果是好于传统的浅层神经网络和机器学习方法的。

4 总结

本文先介绍介绍文本分类的特点和应用,进而引入深度学习的概念,并详细介绍了深度学习的典型网络-卷积神经网络的特点和应用,最后通过使用TensorFlow2.3建立卷积神经网络,对AG数据集进行识别,从数据获取、数据预处理、建立卷积神经网络等一系列步骤进行说明,最后对实验结果进行分析,如果进一步优化参数,还能取得更好的效果。

参考文献

[1] 王宇石等.一种基于卷积神经网络的违禁品探测系统及部署方法[J],科技创新与应用,2020(7).

[2] 曹华军,吴宗民等.噪声图像的线性滤波分析与仿真[J],信息技术与信息华,2017(8).

[3] 闫涛. 深度学习算法实践 [M]. 电子工业出版社出版社,2020

[4] 来学伟.TensorFlow读取数据在简单图像识别中的应用[J],现代信息科技,2019(6).

作者简介:翟高粤,男(1975.11)广西钦州,汉,硕士,副教授,研究方向:软件理论,人工智能。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!