基于深度神经网络的新闻文本分类研究


主要介绍

  
(1)文本分类算法的所得结果很大程度上受到文本特征的表示方式的影响。word2vec词向量可用于表示文本,能够基于分布式表示将词语映射成为n维空间中稠密的实数向量,再通过计算矢量之间的余弦距离,即可测量词之间的意义相关性。本文采用词向量来代替深度学习网络模型输入层较为常见的one-hot向量。
(2)基于python语言,使用pytorch深度学习框架,在完成对词的特征表示后,分别构建RNN和CNN神经网络模型,并进行文本分类任务。在CNN中使用不同尺寸的卷积核来提取文本含义的深层特征。实验结果表明,本模型的精度、召回率、F1值分别达到96.4%、95.9%、96.2%。本文所应用的CNN、RNN模型可以通过特定的分层结构从文本的浅层意义特征中提取深层特征,可以构建起高效的新闻文本分类模型。
关键词:新闻文本分类;深度学习 长短期记忆(LSTM)网络 卷积神经网络

一、研究内容

  本文的目标是实现针对中文新闻文本的分类系统,可以自动在文本上加上标签。利用Python编程技术抓取网页上的新闻文本数据,其中包含标题、正文、链接等内容。在此基础上,通过自然语言处理技术完成文本数据的特征构筑,采用深学习模型构建文本分类器。由此,能够完成新闻文本数据的自动分类。
  目前新闻文本分类上的关键问题主要是,文本分类语料英语多,中文长文本少,专业语料库不足,传统的抓取方法无法保证提取的准确率和效率,提取过程中无法根据上下文信息产生关联性,文本信息提取过程缺乏完整性等。基于上述问题,本次研究主要从三个方面进行,主要分为数据采集、特征表示、深度学习等几种分类模型和新闻分类的可视化界面。
(1)数据预处理和特征表示。首先,针对缺少中文文本相关语料库的问题,设计网络爬虫爬取ChinaNews网站上时效性较高的新闻文本,并基于Jieba分词工具包对其进行中文分词,而后采用加权提取和频率统计的方法制作适合汉语长文本分类的词汇表。模型的原始输入通常以Word2Vec和One-hot两种词袋模型展开培养和训练,主要针对词向量特征的训练,在文本表示过程中,上述特征一般反映在文本特征的输入和提取方面。在此之后,从众多原始特征中选取适合用于训练分类器的特征。
(2)深度学习文本分类算法。深度学习网络模型通常指的是对文本进行分类时的先决条件,本文首先对深度学习分类模型RNN、LSTM、CNN进行了具体研究。接下来,基于文本分类任务内容构建CNN、RNN神经网络,优化和改进模型,并在此基础上对以上两种模型进行分层。分层双向LSTM模型通过正向和反向的双向信道和多层隐藏层信息传输,从而实现本次研究对于高效合理储存文本信息记忆的目的,有效提升文本信息分类的稳定性和可靠性。该模型可以通过分别池化和重组来进一步完善文本块的局部特征提取模块,进一步提高中文新闻文本分类的精确度,以便人们更有效地辨识和管理值得注意的新闻信息。
(3)新闻分类个性化推荐系统。将以上文本新闻分类与个性化推荐进行有机融合,设计和开发了可视化的新闻界面。

二、数据的采集与预处理

构建深度神经网络,首先需要构建自己的新闻文本语料库。这一过程主要涵盖文本表示、原文本特征、数据采集等流程。数据采集部分采用python编写爬虫,在China News新闻网上爬取新闻数据。数据预处理部分,采用数据可视化分析技术调整和配置文本序列,并利用该技术进行数据索引和中文分词的读取,进而达到文本数据的读取和处理,值得注意的是,其能满足批量处理的要求。本文特征的表示通常以词频统计的方式展开,也可以理解为数据索引的搭建,通过权重抽取的方式设计符合汉语长文本的词汇表并删除停用词。同时,对于将标准化的文本数据进行词向量的嵌入表示的工作,该部分使用One-hot和Word2Vec工具。

2.1 Python爬虫系统设计

  要进行文本分类任务,首先必须构建数据集。本文选择基于python编写爬虫,在ChinaNews新闻网站上爬取带有标签的新闻文本数据。 本节将对所使用到的网络爬虫技术进行介绍。网络爬虫在通过每页的网站的网址获取并过滤相关内容后在用户面前呈现最终结果,不必采用人工浏览的方式获取相关信息,Python作为一种当前广泛应用的脚本语言,具有相关的爬虫基础库,例如request、bs4。

2.1.1 Python爬虫类系统的设计

  在开发网络爬虫系统的过程中,首先需要全面解决系统中存在的基础性问题,并根据实际需求选取代码和功能进行系统设计,使开发结果符合系统的真正需要。对于整个系统来说,各组件为了以后实现系统整体的功能,必须按照网站的结构来制作。
  Web下载模块是整个爬虫类系统中最关键的模块,在Web网页上显示的内容一般来说是HTML形式。目前Python可通过网络形式直接下载,分别以官方lib2模块和request第三方SDK两种方式,而request第三方库在功能性上有着非常突出的优势。
  页面分析器的主要功用是对网站中的内容(文本、图片、链接等)和数据进行解析。基于Python的页面解析器主要分作两类,一种主要通过正则表达式的方式转化为可读取的字符,通过模糊匹配的方式进行数据提取。该方式的优点是比较直观,但是对于复杂性高的文档而言整体操作难度较高,任意一个正则匹配存在细小的失误,都会造成程序出现多种故障,主要表现为长时间的循环。第二,可以根据HTML页面创建DOM树,顺着树的结构查找每个节点,根据树的上下层级结构进行查找,更易找到每个元素的位置。
  Python可实现数据导出功能,通常以CSV格式为主,其具备能与多种文件格式兼容的特征。在导出阶段需要重点关注数据编码的问题,最大限度规避乱码的风险。

2.1.2 Python爬虫类系统的实现

  本文主要以ChinaNews为例,首先需要通过爬虫技术取得目标网页的谅解,并围绕网站的现有的内容对新闻资讯进行分析和解析,最后将解析出来的信息保存在相应的文件中,具体的系统实现过程如下。
  要取得所有新闻的URL,首先必须找到与URL相关的入口。这篇文章所选择的新闻网站是中国新闻网,网站的URL是https://www.chinanews.com.cn/。进入页面后,滚动、直播、国内、社会、军事、政务等10多个栏都会显示出来。单击“滚动”栏,将显示按时间顺序的新闻列表。也可以显示指定日期的新闻。例如,2022年4月17日的滚动新闻地址如下:https://www.chinanews.com.cn/scroll-news/2022/0401/news.shtml。根据这个法则,只需更改网站的年和日期,就可以获得指定日期的滚动新闻列表。
在这里插入图片描述

图2-1 ChinaNews新闻网2022-04-01滚动新闻列表
  如图所示,滚动新闻列表中的新闻标题可以跳转到相应的新闻内容页面。因此,若取得当天的新闻滚动列表url,则通过request分组访问链接,使用bs4分组解析网站的内容,取得html页的各节点可以获得存储具体新闻内容的网站和对应于各新闻的分类标签。分析页面html代码,可发现保存新闻标签及内容的结点类型均为div,且均有’class’:'dd_lm’属性,可以使用bs4的get函数获取相应结点。
将某一日滚动新闻列表中所有具体新闻的url保存到list中,并使用request包遍历访问这些url,即可获得当日所有新闻的文本内容。在具体新闻内容的网址中,类似地,使用bs4包解析网站内容,即可获得新闻文本。

2.2 数据预处理

  本文采用的数据集是2021年ChinaNews官网上所有的新闻文本,包含 200800 篇新闻文档(437Mb)。在中国新闻网新闻原分类的基础上,筛选了体育、华人、台湾、国内、国际、娱乐、文化、香港、澳门、社会、财经十种新闻,10个类别对应10个“.csv”文件,每个“.csv”文件包含该类别所有的新闻文本数据。图2-2示出了不同类别的新闻数据的数量。
在这里插入图片描述

图 2-2 不同类别的新闻数据数量
在这里插入图片描述

图2-3 新闻文本长度分布情况
  为了便捷高效地建立数据索引,本次研究通过可视化的方式分析相关数据,通过该方法明确文本序列的长度,本身新闻文本数据字符之间存在较大差异,长新闻的字数多达数千字,短新闻的字数可能仅不足100字,因此,在读取数据时,必须考虑到大部分的新闻样本数据,设置合理的截取长度,以致既能够对网站中的关键数据进行读取和分类处理,且能够有效节省计算资源,所以确保文本序列兑读取的长度设置的匹配度是不可忽视的,这将成为稍后描述的模型实验中文本序列长度的截取和嵌入的重要参考。
  据统计,大部分数据集平均为149个字符,此外,根据文本长度不同关键词出现的频率进行分析和统计得出2-3图,从中不难发现新闻文本长度的主要分布现状,大多数文本长度普遍少于500字符。统计图2-4统计了文本长度的累积分布情况,从中不难发现,和大部分分割点相匹配的文本长度普遍为256,同时数据集中大部分新闻文本长度的普遍低于256。因此根据分析的结果,将读取文本长度的值设为256。最终,根据不同的类别读取数据集,每条文本数据对应于一个标签,合计200800个数据索引。
  文本分类的首要流程主要是文本预处理环节,其主要作用在于为文本表示、分类器、特征提取等环节提供基础性数据。现已经对中国新闻网的2021年所有新闻进行爬取,并且做好了预处理工作。本文预处理的关键环节在于去停用词和中文分词。

2.2.1 中文分词

  通常可将汉语分词概念理解为紧扣延续下来的文本规则分割连续句子,使其成为单独成立的词和字。和中文分词文本不同的是,英文文本的分词通常可将单词之间的空格作为分割的主要参照物,不过这一点在中文文本的分词过程中,并没有表示停顿的标准规则或符号。中文语义上的分割也可通过标点符号实现,甚至仅作为情感表达上的转换和停顿。极易造成分词时出现不同程度的分歧,甚至对句子原本的表达造成扭曲。如今应用范围最广泛的分词技术,其核心原理主要通过字符串匹配技术运行,并充分融入语义理解、统计理论等技术。汉语分词作为文本预处理中极为关键的环节,是当前关于文本分类研究中不可忽视的重要基础。分词的主要作用在于将连续句子进行分割,形成独立成型的词与字,以此形成文本信息的基本单位。英语文本中同样存在词组划分上的问题,相对而言,由于中文涵盖的意思和语义更多,因此在划分难度上明显高于英文。
  现在,中文的分词有PkuSeg分词、Jieba分词、THULAC分词等很多可以直接使用的分词辅助工具。基于分词区域的关键特征,Pkuseg分词通常可为文本数据预训练模型提供多元化区域。Jieba分词是十分广为人知的中文开放源分词包装,有着高性能、高准确度、扩展性等优点,如今居于主导地位的语言是Python语言,其具备THULAC分词功能,能够支持分词、词性、语法上的对比和分析功能,不过,需要中文语料库模型的支持,所以分词计算资源的负担很大。通过对比,本论文采用了具有处理迅速、实用性高、分词精度高等优点的Jieba分词工具。
  分词之后的中文文本通常属于非结构化数据,不支持简单的计算机计算和输入。一般情况下,文本表示的内涵和机制主要是针对这部分非结构化数据转换成结构化数据,计算文本信息,实现文本分类。文本表示的整体效果将对文本分类的准确性和有效性产生重要影响,科学合理的文本表达不但可以保证语音信息的完整性,更便于通过训练的方式。在本次研究的新闻文本分类技术中围绕文本表示,设计了消除无效语和词向量的两个主要步骤。

2.2.2 去停用词

  删除停用词的目的是减少文本的冗余,进一步提高文本分类的精确性。根据词性的性质可分类为虚词与实词,通常情况下,实词本身含有实际意义,其是构成句子的重要部分,相对而言,虚词本身没有特定意义,对于句子的结构影响作用不大。javascript:;在文本分类中,虚词通常用来作为停用词,而停用词的作用可降低关键词的整体密度,极易导致最终的文本分类成效受到影响,所以在词汇表制作完成后,必须去掉停用词。
  本文的停用词来自于因特网上的各种类型的停用词数据库,同时和停用词进行有机融合,一般情况下,去除停用词的流程如下:
(1)将文本信息内容中空字符以及半角字符进行多种方转换之后排除,确保文本格式的统一性,为后续的文本特征选择和矢量表示提供便利性。
(2)排除没有实际意义的虚词、特殊符号,例如:,?、。“”《》!,:;?”和“啊、阿、哎呀、不然、谁、似的、虽、不管、不拘、不论、不怕”之类,可以发现,这些标点或助词对文本含义的表达没有任何作用。

2.2.3 词向量表示

(1)One-hot编码
  One-hot编码是一种词向量表示方式,其整体操作较为简单,主要原理是将向量的字与词进行分散,通常生成向量长度和类别数保持一致。当数据点属于第i个类别时,则该向量的第i个位置元素的值是1,向量的其余的元素的值都是0。以本文的数据为例,需要词向量的标签文本有10种:体育、华人、台湾、国内、国际、娱乐、文化、港澳、社会、财经,向量中的所有列都代表一个词。将其中任意一个标签表示全部变为0,只需要针对标签索引的元素进行配置,通常配置为1。由One-hot编码的词向量表示如下:
“体育”表示为[1,0,0,0,0,0,0,0,0,0,0,0,0]
“华人”表示为[0,1,0,0,0,0,0,0,0,0,0,0,0]
“台湾”表示为[0,0,0,0,0,0,0,0,0,0,0,1,0]
“国内”表示为[0,0,0,0,0,0,0,0,0,0,0,0,1]
  根据以上例子可以看出,One-hot的表示方法主要是采用单个稀疏向量作为标签数据的代表,此类方法在储存过程中难度较低,通常适用于数量级标签数据的向量化。不过如果在数据集的所有数据中,如果新闻文本的内容具有数百个不同的单词,则当通过One-hot编码时,生成的词向量表示的维度会尤其之大,并且向量的大部分元素均为0,这种情况下使用One-hot编码将会弊大于利:过于稀疏的向量,会降低模型计算和存储的效率。另一方面,One-hot编码仅使用由0和1组成的向量来表示文本数据,不过采用此类方法表示的词向量往往独立成型,并不会产生任何联系关系,也就无法通过词向量的方法,更不能通过上下文进行比对与分析出关联作用。基于此,新闻内容文本与这种编码方式不匹配,更应通过可以对文本关联性进行测算的方式训练的词向量生成技术。

三、 深度神经网络模型原理

3.1 基于CNN的新闻文本分类模型

  卷积神经网络作为具有深层神经网络的主要分析模型,其作用主要是运用多层非线性网络为载体开展很好地表征和建模文本数据。本章将详细介绍卷积神经网络模型的结构设计、分类步骤和训练过程。

3.1.1 算法流程

  使用CNN模型处理文本分类任务简单、高效、同时还能获得比较高的准确率。本章提出了CNN新闻文本分类框架,在图3-1中示出分类模型的算法概略图。
在这里插入图片描述

图3-1 CNN分类模型算法概略
  在本章中,在输入层完成词嵌入操作后,对词向量采取CNN独特的卷积和池化操作,采用多种尺寸和规模的卷积层进行设计,以此为基础进行文本信息的提取和分析,通过高等级的文本信息进行处理,通过最大池化技术完成采样工作,有效减少重复多次提取的繁琐工序,并通过池化层针对相关的特征进行输出,引入softmax分类器获取特定文本的的属性和类型。

3.1.2 CNN文本分类框架

  卷积神经网络通过自身独特的运算框架和结构,利用多层非线性的方式对文本显性和隐性特征进行转换,从而能够在更高的层次上理解深层文本的含义特征,在对文本进行表征和建模的任务中表现得非常优秀,是传统学习算法不能触及的优势,尤其体现在自然语言的处理过程中,需要对文本进行相应的转换,确保其成为矢量形式之后,再通过该神经网络发挥连接作用,可对其中的数据进行批量处理,本章节侧重点集中在对CNN各层结构展开深入研究和分析。
  CNN作为文本分类中的一种较为常见的分成模型,具体的模型结构如下图3-2所示。此类文本分类模型通常的涵盖池化层、全连接层、输入层等这五个部分。其中,CNN的池化层和卷积层是其所特有的,CNN的层级结构可以通过设置多层的卷层和池化层变得更为复杂。在这两层产生融合与交错中产生作用,能够加大优化和改善深度神经网络针对文本特征的提取和学习功能。
在这里插入图片描述

图3-2 CNN模型结构
  图3-2最左边的部分是CNN的输入层,即文本的特征向量矩阵。如上文所述,本文采用300维的分布式词矢量表示词语,一条文本的序列长度设置为256,故而特征向量矩阵的大小为256*300。
  图3-2的第二部分是主要应用在更高级的文本信息提取上,其主要针对局部特征的卷积层。并采用卷积核的作用来滑动完成卷积,在窗口尺寸不同的时候,得到的特征向量存在差异,通常将特征向量列设为1,其卷积行为可通过(n-l)进行提取操作,并操作过程为使用不同大小的卷积核作用于中间的特征矩阵,然后得到左和右不同的特征向量。
在这里插入图片描述

图3-3 卷积操作示意图

四、模型使用及可视化界面设计

4.2.1 web系统设计

在本文构建的新闻文本分类系统中,基于Pywebio框架编写的前端页面被用来与用户进行交互,捕获用户输入的网络新闻文本并传送给后台,然后等待后台返回分类结果并将结果展不给用户。后台首先需要对文本进行一系列的预处理,然后将文本映射成能够输入到分类模型中的词语ID序列,接着把文本的向量化表示输入到使用pytorch框架训练好的分类模型中,得到两个模型的分类结果,并将最终的分类结果反馈给前端。整体流程如图所示。
在这里插入图片描述

图4-11 文本分类可视化系统整体流程

4.2.2 前端界面设计

前端界面是基于python前端开发的开源工具包Pywebio编写的,主要用以接受使用者的文本输入,当出现点击动作时可生成最终的输出标签,如下图5-2所示的前段初始界面。
界面中间为文本输入框,内含“请输入新闻文本”的提示,用户可以在此输入网络新闻文本,选择“预测文本类别”按键,可获得最终的文本的分类结果,如下图4-12和4-13所示,其主要反映网页初始页面和新闻文本分类结果。
在这里插入图片描述

图4-12 文本分类可视化系统前端界面-1
在这里插入图片描述

图4-13 文本分类可视化系统前端界面-2

4.2.3 后台数据处理

后台数据处理部分具体步骤如下:
(1)后台得到的前段输入信息内容后,需要对其展开预处理,这其中涵盖的分词、特殊字符处理、排除停用词等。
(2)依据已经成型的词典将文本的词语映射至词典ID,从中获得向量化的ID序列。
(3)加载使用第四章中两个数据集的训练集训练得到的模型。在第四章训练好模型之后,通过pytorch将其保存为ckpt格式。在加载时,使用import_module包加载模型结构,使用torch.load函数加载模型参数,即可使用训练过并保存好的模型。
(4)将文本的向量化表示分别输入到相应的训练好的CNN或RNN模型中,获得最终的分类结果,并将其反馈给前端和用户。

五、结论

  本文从0开始建设了基于ChinaNews的新闻文本分类系统。为完成该分类系统,总共进行了三个部分的工作:数据的爬取与处理、深度学习神经网络的构建、模型的保存载入与可视化页面的搭建。
在数据准备的阶段,首先,本文基于python的request、 bs4库编写了爬虫,爬取了China News新闻网上2021年的新闻数据并保存到本地。其次,对保存的数据进行了去噪音、去停用词、中文文本分词的预处理,并分割出了训练集、验证集、测试集。
在构建深度学习神经网络的阶段,本文基于pytorch开源库,搭建了CNN、BiLSTM两种神经网络执行文本分类任务,并在构建成功后调试参数、优化网络结构,使最终的分类准确率达到了76%。发现LSTM、CNN等文本分类模型并非属于相同的兼容性,两者的优势存在差异,,其LSTM更多适用于文本长序列的表示方面。
在使用模型、构建可视化页面阶段,本文基于pywebio构建了简单的可视化界面,可即时输入新闻文本并将分类结果即时反馈给用户。

目录

目录
第1章 绪论 4
1.1 课题概况 4
1.2 项目背景和研究意义 4
1.3 国内外研究现状 5
1.3.1 传统的文本分类方法 6
1.3.2 基于深度学习的文本分类方法 7
1.4 研究内容 8
1.5 论文组织结构 9
第 2 章 数据的采集与预处理 11
2.1 Python爬虫系统设计 11
2.1.1 Python爬虫类系统的设计 11
2.1.2 Python爬虫类系统的实现 12
2.2 数据预处理 13
2.2.1 中文分词 15
2.2.2 去停用词 15
2.2.3 词向量表示 16
第3章 深度神经网络模型原理 19
3.1 基于CNN的新闻文本分类模型 19
3.1.1 算法流程 19
3.1.2 CNN文本分类框架 20
3.2 基于RNN的新闻文本分类模型 22
3.2.1 RNN循环神经网络 22
3.2.2 LSTM长短期记忆网络 22
3.3 性能评价指标 24
第 4 章 实验与结果分析 27
4.1. 实验环境 27
4.2 实验过程 27
4.2.1 实验参数设置 27
4.2.2 实验训练 28
4.3 训练结果 31
4.3 模型使用及可视化界面设计 33
4.2.1 web系统设计 33
4.2.2 前端界面设计 34
4.2.3 后台数据处理 35
第 5 章 总结与展望 36
5.1 主要工作 36
5.2 未来工作 37
致谢 38

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值