基于LSTM的自然语言处理校园新闻数据分析

2022-11-16 02:16付念
电子技术与软件工程 2022年16期
关键词:分类样本预测

付念

(江西经济管理干部学院 江西省南昌市 330088)

1 引言

自然语言处理(NLP)是人工智能的一个领域,其中计算机以智能和有用的方式分析、理解并从人类语言中获取意义。通过利用NLP,开发人员可以组织和构建知识来执行自动摘要、翻译、命名实体识别、关系提取、情感分析、语音识别和主题分割等任务,在文本纠错、评论观点抽取、情绪识别、文章标签、文章分类、新闻摘要等多场景进行应用。

由于互联网的兴起,基于自然语言表述的电子文本信息越来越多,在这么多的电子文本信息中,基于自然语言的信息处理的一个最大目标是怎样有效地获取和管理这些信息。对于提出的这些问题需要对自然语言进行研究和发展其相关应用,于是文本分类在这里就显得特别重要,它是作为信息检索等问题的基础,在之后才能对信息进行探索性的数据分析。在对校园新闻进行查阅时, 也会需要从自然语言文本中抽取出特定的事件或者事实信息,需要将大量的内容进行自动分类,或者进行检索提取,这些都需要从大量的数据中提取有用的信息框架和关键词。

基于自然语言理解的文本分类检索数据分析的工作流程如图1 所示:首先是获取数据集,目前常见的统计分析方法通常是先整理好样本,在选择数据集的时候需要确保每个类别或者主题的样本数量大致相同,让样本服从某种有规律的分布,不会过于失衡,然后把数据套入假设模型再做分析。但大多数的真实数据并不能满足这类需要前期条件的分布,每个类别的样本并不能完全一致,因此按等量样本在对真实数据进行统计分析结果常常都不能达到预期的效果。通过了解数据特征能够更好的构建模型,也可以使用更少的数据进行训练,减少计算资源。

图1:分类工作流程

然后对获取的数据集进行预处理,先要对数据集中不需要的值以及异常的值进行剔除,消除异常影响,再对样本的数量、样本的词频、样本的长度进行收集,获取样本的主题类别数。此时数据集是随机排列,没有特定顺序,根据特征拆分样本,选取部分数据作为训练集、测试集和验证集,在对数据集文本进行数据转换时,可能会出现转换成词组标签过多,根据数据集中出现的频率,剔除无效的预测标签,留下重要信息标签。

模型构建和训练包括编写分类算法对数据集继续训练,根据模型的当前状态进行预测分类,逐步计算误差并不断更新权重使得误差最小化,从而使模型能够获得更好的预测效果,重复这个过程,经过多次迭代使模型收敛至不再学习;根据数据集的大小,调整需要重复训练的次数,最后再通过调整超参数来寻找最有效的参数组合,完成后需要通过之前的验证数据集来进行评估,判断其训练程度,在验证多次多达到稳定的精度,就可以结束训练,获得最优的训练模型,最后完善模型就可以部署应用。

本文所使用的探索性数据分析方法进行信息检索更注重数据来源的真实性,所使用的数据集需要数据的真实分布,所以选择的是校园新闻中的自然文本数据,强调数据的真实性和可视化,使数据分析者能够直观的看出数据中隐含的规律,构建模型时采用的LSTM 神经网络模型使用门结构实现了对序列数据中的遗忘与记忆,对梯度消失采用了特殊方式存储,可以在一定程度上更好的克服梯度消失的问题,不仅能够取得输入数据中的短距离的相关信息,还能够更准确的找到具有较长时间间隔的依赖关系,因此能够很好地应用于文本数据的处理。在找到适合本文数据的模型后,使用大量的文本序数据对LSTM 模型进行训练后,可以更加精准的捕捉到文本间的依赖关系,通过训练好的模型还可以根据指定的文本预测新增数据集的分类。

2 获取数据集

本文针对某校园网站中的新闻信息,利用Scrapy 服务程序进行抓取数据集,它是提供一系列 HTTP 接口来帮助部署、启动、停止、删除爬虫程序。从而对数据集文本进行建模分类研究。通过不断抓取、存储、更新网页中的内容,建立数据集的索引,该数据集提取出页面中的部分数据组成数据集,包括部门信息,新闻标题,新闻内容以及发布时间等。

通过requests 模块获取网页数据并使用lxml 的xpath 定位来抓取数据,判断是否能直接使用requests 请求页面并获得数据,然后进行封装,使用bs4 模块解析网页并提取网页标签中的网址和文本,精准搜索到要解析的数据,对链接不完整的数据进行补齐。对获取数据这种无法识别的字符使用切片进行舍弃或者替换。对重复或者低质量的页面信息进行清除,对于无意义字符使用strip()进行删除处理。为了方便对数据进行输出和调试,在数据获取的同事还需要加入数据日志,同时单独设置一个类来处理抓取到的数据,将数据关键信息(例如标题、院系、日期、内容等)保存至csv 文件中。

由于访问数据量较大,需要对每一页数据进行爬取分析,所以多页爬取的逻辑是通过URL 中对参数进行递增而实现的,于是需要构造一个用来存储每一页URL 的列表,通过使用str 的format()方法即可实现网页的遍历。针对较大的数据量,可以通过一个检查函数来控制循环抓取的结束,这里需要建立一个newsport 新闻表,字段包括关键信息news_bm,news_title,news_date,news_content 等。最后获取数据集包括6402 条数据。

3 数据处理

直接获取的数据比较零散,为了能直接使用文本进行比较,需要了解数据特征能更好的构建模型,从自然语言处理的角度,在做数据建模或者是数据挖掘的过程中都需要对数据做一些探索性的分析,主要是对数据的整体规模有一个大致了解,主要包括但不限于记录数、特征数、特征的数据类型、数据缺失情况、数据的整体分布情况(单变量的分布及多变量的分布)、数据的相关性情况等,分析获取的数据集从而建立数据模型,完成对对数据进行探索性的分析,从而为之后的数据预处理和特征工程提供必要的结论。根据算法原理自定义TF‐IDF、TextRank 和PLSA 三种算法的函数,采用一致性指标来确定主题数目,先将主题数目的范围设置为10,出现概率越大的词能更好地描述该主题的特性。通过采样可以得到所有词的主题,那么统计所有词的主题计数,即可得到各个主题的词分布,接着统计各个文档对应词的主题计数,即可得到各个文档的主题关键词。

3.1 数据预处理

本文获取的数据集文档和词语量适中,可以避免各类算法在进行反复迭代时计算量过大导致的过度拟合。因此在输入数据集后,先加载停用词stopword 获取停用词列表,由于是对校园新闻进行分类,通过统计词频,生成对应的字库,将每个文字都转化为向量,将数据集中的所有文本转换为一元或二元词组标记时,最终可能会得到数以万计的标记。但并不是所有的标记和特征都能用于标签预测。可以删除一些在数据集中很少出现或重要性较低的特征,仅留下信息量最大的标记。再使用jieba 分词工具对原始数据中获取的进行预处理。直到获取最初的主题关键词,由于关键词的选取是为了进行检索分类,可以对数据集进行分词和词性标注,选取名词作为候选关键词,过滤一些不必要的词性。

3.2 提取主题关键词

关键词是指能反映被选择的文本主题或本文阐述主要内容的词语。对关键词的提取就是要选择一个和这篇文档意义最相关的一些词,是NLP 领域的一个重要的子任务。选择恰当的关键词作为主体,从数据挖掘的角度看,可以通过聚类方式来发现和提取隐含在新闻数据中的信息。对没有训练的数据,通过构建基于数据集的词语空间,将每一条记录进行分类标记。

在对新闻信息的信息检索中,如果有准确的关键词可以大幅提升检索的效率。通过关键词能让快速了解新闻中所讲的内容,但是一般新闻中并不会像论文那样直接提取出本文的关键词是什么,这个时候就需要利用一些算法自动抽取出关键词,算法的好坏直接决定了后续步骤的效果。关键词提取一般有两种方式,一种是从词库中找到和当前新闻匹配的关键词,这种方式需要有一个相关的词库,用来减少匹配过程中的时间复杂度;另一种是直接从新闻中提取出几个匹配度高的词作为关键词。

为了减少数据冗余,采用选取三大算法计算相似度进行比较,从而选择最好的候选词作为关键词。其中TF‐IDF 算法是一种数字统计算法,用于反映一个词对于语料中某篇文档的重要性,它的好处是简化快速,并且易于理解,词语的重要性也与它在文件中出现的次数成正比,但有时候单用词频来判断文字中的某个词语的意义并不全面,也无法体现词在上下文的重要性,并不是出现的次数越多就是有意义的。计算公式为TF‐IDF=词频

(TF)*逆文档频率(IDF)。

TextRank 算法是一项采用图的用于关键字获取和文字摘录的排序算法,由谷歌的页面重要性排名计算PageRank 计算改良而来,它默认所有词之间存在链接关系,权重越大,相似度越高。它将文本拆分成多个句子和词,只保留指定词性,基于词和词之间的特性构成图,计算每个词的重要性,可以用于提取关键词、断句和摘要。只通过当前文本就可以对文本中的信息进行处理。

PLSA 算法是从LSA 发展而来,更倾向于潜在语义分析,LSA 是先分析文件建立词汇‐文档矩阵,再对矩阵进行奇异值分解,然后进行降维,使用降维后的矩阵构建潜在语义空间。PLSA 则使用概率图模型,引入隐藏的文档主题,通过采用符合文本特性的多项式分布和最大期望算法拟合概率分布信息进行统计推断。

确定以上算法后,根据三种算法的原理,编写算法的自定义函数,对新闻数据集提取匹配度最高的10 个词作为数据集的关键词。由于每个算法都有优劣性,这里根据三类算法函数的实现结果,来进行选择合适的算法,为数据集“贴标签”。最终分类主题如图2 所示。

图2:算法提取主题

基于当前数据集在三种算法模型的提取结果中,可以看出,TF‐IDF 模型中出现的“机场”、“文法”等词语,指向明显,不适合作为整体数据集的分类。textRank 模型获取的主题结果较好,前十关键词没有出现指向明显的关键词,更能反映校园新闻内容的关键词。最后是PLSA 模型,“征程”等词语也不适用于新闻分类。所以本次数据处理过程使用textRank 模型的结果作为校园新闻的分类主题,主题词中第一个主题“学院”虽然符合要求,但范围太广,不适合作为校园新闻主题词,因此选取第2‐7 个共6 个关键词(会议、党员、竞赛、活动、表彰、讲座)作为当前数据集的主题关键词分类。

4 模型分析

经过初步探索过的数据,在处理过无效的数据类型和不正确的值后,文本不仅更易于理解,而且能从中进行更好的发掘,在训练中,基本的反向传播算法会带来梯度问题,在选择模型层数时,特别是多层会使在学习过程中训练数据躲过,导致过拟合,会使得训练的时间和空间复杂度更高;而层数过少会限制模型的学习过程,从而使得拟合不足。对于本文中的分类数据集,尝试使用了一层、两层和三层模型,表现最优为两层,因此文中使用的分类模型为两层LSTM(长短期记忆)网络,LSTM 是循环神经网络中的一个特殊网络,它能够很好的处理序列信息,训练集使用上一步选择的六个主题关键词进行分类,对分类数据进行一些细化,按主题关键词给所有类别的样本进行匹配,每个分类1000 余条数据,为保证验证的有效性,数据集中的验证集和测试集都不能在训练样本中出现,每个分类中验证集保留150 条左右,测试集保留100 条左右数据。通过这种方式,保持训练集和验证集之间的互斥,保证在之后验证集的结果能表示模型的泛化能力。

首先定义LSTM 网络框架,设置相关参数后查看模型结构,并对模型结构进行训练并保存。选择使用TensorFlow和tf.kerasAPI 来编写分类算法对其进行训练。用Keras 构建机器学习模型就是将各个层组装在一起,这些层可以指定要对输入执行的转换顺序。最后使用的模型对验证集进行测试和评价。将整个文本作为特征去预测数据集文本的类别。从而达到验证分类是否符合预判的目的。

4.1 模型构建

设置模型参数并构建模型时,首先在训练过程中对LSTM 模型的参数进行了设置,使用LSTM 的单向循环神经网络,选择词向量维度为128,输入词序列长度seq_length =600,主题类别数为6,总迭代轮次为20 次,进行标准化处理,经过试验选择了两层模型,并通过dropout 正则化定义要减少的数据部分,为了防止过度拟合,丢弃部分神经元,初步定位为20%‐40%。鉴于样本数据集,模型构建时在第一层嵌入层增加训练网络所需的计算能力为代价的学习,较高的学习率可能会使得权重发生较大的波动,导致无法找到最佳值,较低的学习率又需要经过更多次的迭代才能达到较好的收敛效果,需要对网络中的所有权重进行微调,可以产生更好的准确性。进行多次比较后,选择具有更高的数据效率和计算效率的模型。

4.2 训练模型

构建好模型后,需要对模型进行训练参数的设置,意味着可以调整训练数据集上的权重,根据编译模型时指定的优化算法和损失函数来进行优化。模型训练包括根据模型的当前状态进行预测,计算预测的误差,并对权重或参数进行微调,以最小化此误差并使模型更好地进行预测。

实际训练过程中,根据数据集大小在每次训练迭代中,设置损失值指标进行模型训练,使用验证数据及来评估模型的学习程度,设置训练次数epochs=20 次。每一轮训练都会返回一个记录,图3 展示了模型训练过程中,模型收敛的情况。

图3:模型训练图

由图看出准确率和损失率,在迭代过程中,模型在准确率趋势图测试集上出现的小的震荡,随着迭代次数的增加,训练过程中训练损失和训练精度一直在逐步收敛,模型在训练集上的准确率也逐渐上升,损失值在逐渐下降,整个训练集的效果有着越来越好的趋势。模型训练初步判断为符合预期效果。预测效果也逐渐趋近最佳精度值。

4.3 模型测试

训练完的模型可以根据训练数据进行评估,可以在独立的数据集上评估性能。信息检索和分类的评价指标一般包括:准确率、精准率、召回率、F1 Score 值等,其中准确率accuracy 是最常用的分类性能指标,也是比较直观容易理解的,Accuracy = (TP(预测为正的正样本)+TN(预测为负的负样本))/(TP+TN+FN(预测为负的正样本)+FP(预测为正的负样本)),即正确预测的正反例数 /总数;精确率precison 是只针对预测正确的正样本的查准率,精确率precision = TP/(TP+FP),即正确预测的正例数 /预测正例总数;而召回率(recall)是由预测正确的正样本数目除以测试集中真正的实际正样本数目之比,是对覆盖面的度量,往往与精确率成反比。召回率 recall = TP/ (TP+FN),即正确预测的正例数 /实际正例总数;但精确率和召回率都高时,F1的值也会高。F1 值是精确率和召回率的调和值,更接近于两个数较小的那个,所以精确率和召回率接近时,F 值最大。很多推荐系统的评测指标就是用F 值的。在两者都高的情况下,可以用F1 来进行衡量。

本文训练后的模型最终在测试集上的表现如图4 所示:可以从模型评价中看到,模型在测试集上的准确率已经达到0.96,考虑到所用的测试集为校园新闻类,主题分类较少,但精确率、召回率都在0.92以上,特别是F1值,都达到了0.96以上,一直保持在较高水平。符合本文预期要求。

混淆矩阵是机器学习中总结分类模型预测结果的情形分析表,按照每个类别进行细分,用于评估模型的预测精度,用来判断分类的好坏程度;检查模型是否在预测时就出现明显的错误,是衡量分类模型最直观的方法。它以矩阵形式将数据集中的记录按照真实的类别与分类模型预测的类别这两个标准来进行汇总。其中每一行表示当前数据集匹配的真实值,每一列表示模型的预测值,每行总数表示该类别数据的真实数目,每列总数表示预测为该类别的数据数目。对角线上的值越大,表明预测的效果越好。从矩阵中可以很直观的看到分类模型是否发生了错误,更重要的是能了解到错误发生的类型,是在哪个标签上出现了错误,错在哪里,都能直观的表明出来,从而也方便更好的分析错误并解决错误。

在图5 中将测试集进行训练后得到的主题真实标签和预测标签进行对比,可以看到,大部分真实标签与预测标签完全匹配,有三个点在预测标签和真实标签中存在误差,分别为“党员”和“讲座”,“会议”和“活动”,“竞赛”和“表彰”,但这三点中标签词之间也存在连带词性关系,在标签预测时可能出现波动的情况,不属于错误情况。进行多次更换测试集测试后,评价指标依旧能保持稳定效果。

图5:测试结果混淆图

5 结论

本文针对校园新闻数据在检索中内容分散,无法直接按主题类别搜索的问题,将获取的数据集文本分类的工作流程分为四个步骤来进行处理,首先按照数据集特性进行判定预分类主题关键词,对特定的校园新闻数据集根据内容定制主题分类方案,选出匹配主题并选择快速接近最佳性能的模型,并根据计划不断调整超参数,使其更符合使用环境。在最后测试结果可以看出,设定的主题关键词和分类模型预测的类别匹配度很高,在对拟合模型性能得到足够优化的前提下,可以选择词库中的关键词进行模型训练,用来预测新的数据,扩大训练好的模型的使用范围,能在更多实际应用中进行使用。

猜你喜欢
分类样本预测
无可预测
选修2-2期中考试预测卷(A卷)
选修2-2期中考试预测卷(B卷)
分类算一算
分类讨论求坐标
推动医改的“直销样本”
数据分析中的分类讨论
教你一招:数的分类
村企共赢的样本