基于深度学习算法的学生舆情分析系统

2020-08-07 09:50孙军梅
关键词:爬虫舆情舆论

黄 迅,孙军梅

(杭州师范大学信息科学与工程学院,浙江 杭州 311121)

舆论的跟踪和管理一直是社会上的一个热点问题,良好的舆论管控不仅能让社会更有秩序,还能更好地引导社会人群思想走向.本文以舆情分析作为基本点,设计实现了一个针对学校百度贴吧的舆情分析系统.该系统以深度学习模型作为文本分类器,大大节约了人力资源,以时下较为流行的学生校内交流途径——学校贴吧作为分析重点,得到的舆情分析结果更具针对性.学校可以通过本系统实时了解本校学生舆情情况.

1 系统总体设计与分析

通常基于人工的舆情分析包括获得信息、辨别信息类别、统计多个信息结果.基于深度学习的舆情分析也离不开这3个步骤,只不过这些步骤都用计算机来自动实现.首先对训练数据和测试数据进行预处理,然后基于几种神经网络模型对训练数据进行训练,最后将训练好的模型用于对实时爬取的测试数据进行分类预测,经过统计分析,得到舆情数据的分析结果,并实时给出图形化的显示.学生舆情分析系统的流程如图1所示.

图1 舆情分析流程图Fig.1 Public opinion analysis flowchart

2 数据获取与处理

2.1 数据获取

本文使用的数据集:一是从搜狗实验室(https://www.sogou.com/labs/resource/cs.php)下载的新闻分类数据作为训练用数据集,二是通过自己设计实现的网络爬虫实时抓取百度贴吧评论数据作为测试集.

贴吧评论数据是通过设计实现的网络爬虫系统来抓取的实时评论数据.为了契合舆情分析的主体,设计实现的网络爬虫系统具备如下3个特点:1)时效性,即爬取的是近期的舆论,而不是所有的舆论,因为过久的舆论没有统计的价值,对于当下的舆论热点没有过多的帮助,甚至还会影响当下的舆论分析.2)关键性,即要抓关键的舆论,就百度贴吧而言,评论数超过某数值的帖子及回复即是关键舆论,相对没有回复的帖子来说,这种帖子更加具有热点的代表性(一些无意义的广告帖显然没有分析的价值,况且广告帖一般也不会有较多回帖).3)实时性,即应当是每隔一段时间就进行一次爬取,舆情一般会实时更新,所以爬虫也需要跟上舆情更新的脚步,按时爬取数据.

针对这3个特点制定了爬虫的基本策略:1)为了满足时效性和实时性,给爬虫设置了一个循环,每4 h进行一次爬取,爬取最近的500条帖子记录;2)为了抓取关键评论,在爬取过程中加入回复数量必须超过1的限制;3)为了减少在爬虫爬取过程中网页的访问等待时间,进行了多线程优化,分别设置1个专门文件IO的线程和n个访问帖子网页的线程.经过测试之后发现,n=10时,可以满足要求,爬取速度大大提高.

2.2 数据处理

2.2.1 去冗余信息

从贴吧爬取的文本无法直接输入模型,且这些没有经过处理的文本数据中有很多冗余信息,会影响分类效果和效率.所以要进行中文文本的预处理,如中文分词、停用词过滤、词语向量化等[1].本文使用结巴分词的精确模式进行中文分词.分词处理后又进行了去标点、去空格、去停用词等处理,最终文本串会变成一系列有效词语的集合.

2.2.2 生成向量空间信息

本文使用word2vec的Skip-gram模型对词语进行向量化处理.通过word2vec模型训练后将会生成一个向量空间,每个词语都会对应一个向量,使用python中gensim提供的most_similar接口实现.滑动窗口大小设定为3.由于语料比较大,所以忽略词频过小的词语的界限定为3,即出现小于3次的词语都忽略.通过观察发现去停用词后的语料包含的字词数目不会超过100,故这里将序列的长度统一设为100,不足100的通过零值来补齐.

3 建立模型

3.1 LSTM-CNN模型

本文基于卷积神经网络(convolutional neural network,CNN)模型[2]和长短时记忆(long short-tern memory,LSTM)模型[3],提出了LSTM-CNN模型,对贴吧数据进行分类.卷积神经网络其基本逻辑是把数据用多个卷积核进行特征提取,每个卷积核都表示一种特征,每个卷积结果(特征图)都表示该数据在该特征下的表现情况,最终可以得到该数据在多个特征下的特征图.然后用池化操作,把特征图中最为突出的几个元素提取出来.最后再经过全连接层和softmax层得到输出结果.相较于卷积神经网络,长短期记忆网络对局部特征的提取效果不佳,但它是一个顺序结构,可以提取出上下文语义特征,所以LSTM在处理序列数据时往往会取得不错的效果.由于评论是句子级的分类任务,所以考虑上下文信息是十分有必要的.故本文提出将CNN和LSTM两个模型结合起来对文本进行分类,这样既可以提取文本数据的各局部特征,又可提取出文本的上下文语义关联信息.同时在结合的过程中,需要注意LSTM和CNN的先后顺序.若是CNN在前,很可能在特征提取的过程中丢失文本的时序特征,而LSTM在前的话,由于LSTM本身就有长期记忆性,所以对于历史信息会有较好的保留,特征丢失也会比较少,所以本文选用先LSTM后CNN的形式构造模型.模型结构如图2所示.

图2 LSTM-CNN模型结构图Fig.2 LSTM-CNN model structure diagram

表1 模型初始参数设置Tab.1 Model initial parameter settings

3.2 模型训练

3.2.1 模型的超参数初始设置

模型超参数指的是模型外部的配置变量,恰当的超参数设置对于生成一个性能优良的神经网络模型至关重要.模型在训练时参数设置不同,训练效果也会有所差异.本文模型训练中主要通过数据和经验来确定部分超参数,另有部分超参数需要通过实验来确定.表1给出了CNN、LSTM、LSTM-CNN模型在初始训练时参数的设置情况.

模型每次批处理的大小(batch_size)将决定一次训练的数据量,它的选择会影响训练的时间效率和噪声梯度评估.如果训练的数据集比较小,可以采用全数据集作为批处理大小,但是当训练的数据集很大时,采用全数据集的方式显然不合适,这时选择一个适中的批处理大小就十分重要.本文参考了既有研究的经验,将各模型批处理大小统一设为128[4].

3.2.2 模型训练

训练过程中需要根据结果来对部分超参数进行调节,以取得最佳效果.迭代次数(epoch)对神经网络模型的拟合能力有重要影响,迭代次数设置过小,模型会欠拟合,一般为了提高训练精度会把epoch设置得比较大,但epoch过大又容易导致过拟合.故本实验首先需要获得最佳epoch,本实验采用EarlyStopping机制,设置为2个epoch内Validation Loss没有改善就提前停止训练.

优化器(optimizer)对于模型性能的提升具有重要作用,它的选择主要取决于输入数据的特性.本文研究对象为贴吧数据,其特征稀疏,为了获得最佳的效果应该采用一种自适应学习率的优化算法,这样可以不用调节学习率的大小就能获得默认参数下最好的结果.本实验过程中选取了几种常用的自适应学习率的优化器进行效果对比,包括Adam、SGD和RMSprop.图3是采用3种不同优化器时其中一次的LSTM-CNN模型在测试数据上F值随迭代次数的变化情况,从图中可看出,本模型在选择Adam优化器且迭代3次时F值达到最高,即模型的分类效果最好.故我们测试时也使用了Adam优化器.

图3 优化器和迭代次数对LSTM-CNN模型效果的影响Fig.3 Effect of optimizer and iteration number on LSTM-CNN model

4 模型验证

模型建好后需对模型的准确度、正确性进行评估和测试.

通过在训练好的各个模型上运行测试集数据,得到了不同模型对应的准确率和召回率.其中准确率是指在分类器判断为该类的样本中,真正属于该类的样本所占比例,考察的是分类的正确性;召回率指分类器正确判断为该类的样本数占该类总样本数的比例.然而由于准确率和召回率是两个值,无法根据两个值来对比模型好坏,所以有一个综合准确率和召回率的值F1,F1=2×(Precision×Recall)/(Precision+Recall),可以判断模型优劣.本实验测试结果如表2所示.

表2 3个分类模型的性能比较Tab.2 Performance comparison of three classification models

根据最终统计的数据,可以看出LSTM-CNN模型在准确度、召回率上都比另两种模型高出不少,综合测评值F1也是高了4%,虽然训练耗时略长,但是仍在可接受范围之内.所以本文最终选用LSTM-CNN模型作为舆情系统的分类模型.

图4 杭师大某时间段舆情分析情况图形化显示Fig.4 Graphical representation of public opinion analysis in a certain period of HZNU

5 舆情分析结果的图形化显示

分类模型的输出是一个向量,为了直观地提供给舆情分析人员,本文把输出的向量取所有索引中最大值的索引作为最终预测结果(索引中的值越大表示越有可能是该索引对应的分类),再通过索引和分类的映射关系得到分类结果的可视化显示.利用python中的pyplot模块生成一个饼图,反映当前数据集各个分类的占比,通过这个占比可以分析出目前学生论坛的评论热点,而通过这些热点,分析人员可以作出正确的舆论预警或者舆论引导等相关工作.图4显示某一时段杭州师范大学(简称杭师大)贴吧的舆情分析情况.

经查看,杭师大贴吧中这一时期确实有大量的类似“考研”、“三位一体”、“分数线”等与学习相关的字样,所以也可以表明系统最终分类结果较为可靠.

系统会把每次爬取的信息分类结果以时间戳命名并保存,分析人员可以通过对比最近一次分析结果和之前的结果,若某些分类数值波动较大,则需要对这些方面给予更多关注.

6 结论

本文研究成果可以总结为两点:

1)较为精准和及时地获取学生在贴吧的言论信息.爬虫系统每4 h进行一次信息爬取,信息更新实时,数据更具参考价值.

2)舆情的分析自动完成,效率高.通过自动爬取数据、自动处理数据、自动分析数据,并以图形化的方式显示,分析人员能够及时掌握舆情,准确定位舆情方向,方便合理地制定更加符合现实情况的管控措施.

目前数据主要从贴吧获取,以后可以考虑更多的数据获取渠道,增大数据量,舆情分析模型随着数据量的增大,精准度也会越来越高,舆情分析结果也会更具参考价值.

猜你喜欢
爬虫舆情舆论
利用网络爬虫技术验证房地产灰犀牛之说
基于Python的网络爬虫和反爬虫技术研究
阿桑奇突然被捕引爆舆论
大数据背景下校园舆情的爬虫应用研究
数字舆情
数字舆情
大数据环境下基于python的网络爬虫技术
消费舆情
突发事件的舆论引导
谁能引领现代舆论场?