基于时间序列的舆情分析(复仇者联盟3)
摘要
随着移动互联网和信息技术的发展,网络产生了形形色色的自媒体平台。以微博、微信为代表的社交软件受到了网民的热烈追捧,由此每天产生着的海量即时信息,描述着社会中正在发生的热点事件,如能即时发现、追踪这些社会热点事件,将有助于实现网络舆情的实时监控,为决策者提供可靠的数据支持。本次作业通过python爬虫爬取微博以及电影评论,针对某一个事件进行舆情分析。
1. 什么是舆情分析
1.1 舆情分析基本概念
舆情分析,简单来说就是对社会上面的一些舆论信息进行分析处理,从而得出结论,也就是分析报告,舆情行业来说使用舆情数据做的分析即为舆情分析报告,通常企业和政府都会用到,分析报告主要是领导或高层查看的,用来制定一些相应的措施和调整。
2. 微博文本特征
2.1 噪声符号多
由于微博的随意性,其编辑格式经常产生噪声符号多的问题。例如中国气象局2017年3月25号发布的微博: “#倒春寒# 天晴了你们开心不[挤眼][微风]”,其中包含了“#”和一些表情包。常见的噪声有“#”、“@”和表情包等噪声符号,需要对“#话题名#”和“@用户”为格式的微博消息进行过滤,表情包的识别和过滤也是一个问题。这些噪声符号给数据清洗工作造成的极大困扰,也为热点话题的准确挖掘增加难度。
2.2 文本简短
微博的早期设计导致文本内容一般由短文本组成,且字数不大于140字,有碎片化的特点。虽然最近微博的最大文本长度增加到2000字,但长期培养成的用户习惯具有惯性,用户一时难以改变,微博文本长度仍处于低水平,这造成所含信息量密度低的问题。
2.3 话题爆发集中度高
微博的信息传播机制分为单向关注和双向关注两种,当有一定社会影响力的用户开通微博时,往往能吸引大量的粉丝关注,由此产生了粉丝数目庞大的微博大V 。而由于微博长期沉淀下来的用户群体基数较大,当中包含的活跃用户数目庞大,当微博大V转发话题性比较强的微博事件时,往往能够吸引活跃用户的快速评论和转发,爆发核裂变式的的讨论,在短时间内引起微博平台的震荡,从而形成微博热点事件。
2.4 矩阵高维度且高度稀疏
由于文本简短的缘故,将全部微博文本映射成句子级向量时,无论是采用one-hot词典模型还是tf-idf的方法,向量的维度都会非常高,而且相同的词语出现在不相同的微博中的概率也会远远低于传统文本的,从而造成矩阵的高度稀疏,文本相似度计算的困难,增加热点事件挖掘的难度。
3.爬虫工作原理和抓取策略
3.1 爬虫几本流程
网络爬虫不仅是搜索引擎的重要组成部分,而且是目前大数据分析不可缺少的工具。了解爬虫的原理和实现对日常工作或者个人的兴趣爱好有很大的帮助。比如你在百度贴吧里面看到了一遍不错的帖子,这个帖子里面的回复很有价值,你想收藏下来,但是帖子有1000多页,你没办法逐个手动复制;或者你是日系二次元爱好者,喜欢搜集美女图片;或者你对目前的股票、房价的发展趋势想做一些预测;这些需求都可以借助爬虫这个有力的工具得意实现。
3.2 爬虫的抓取策略
在爬虫系统中,待抓取URL队列是很重要的一部分。待抓取URL队列中的URL以什么样的顺序排列也是一个很重要的问题,因为这涉及到先抓取那个页面,后抓取哪个页面。而决定这些URL排列顺序的方法,叫做抓取策略。下面重点介绍几种常见的抓取策略
1.深度优先策略(DFS) 深度优先策略是指爬虫从某个URL开始,一个链接一个链接的爬取下去,直到处理完了某个链接所在的所有线路,才切换到其它的线路。 此时抓取顺序为:A -> B -> C -> D -> E -> F -> G -> H -> I -> J
2.广度优先策略(BFS) 宽度优先遍历策略的基本思路是,将新下载网页中发现的链接直接插入待抓取URL队列的末尾。也就是指网络爬虫会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续抓取在此网页中链接的所有网页。 此时抓取顺序为:A -> B -> E -> G -> H -> I -> C -> F -> J -> D
3.3 本次使用的爬虫
4.LDA模型
4.1 LDA话题模型
潜在狄利克雷分配(Latent Dirichlet Allocation),简称LDA,是一个概率生成模型,其生成过程是在pLSI的基础上增加了狄利克雷先验,弥补了pLSI没有“将概率表示进行到底”的缺陷,是一个完全的贝叶斯模型,可以更好地从文本语料中挖掘话题,是一个主题挖掘模型。
LDA模型是生成过程主要有五个步骤:
第一,挑选一组文本向量。N代表文本向量的长度;
第二,挑选主题分布θ。θ是一个向量,服从以α为参数的狄利克雷分布,记录着主题出现的概率;
第三,挑选文本中每个词向量w的主题z。z服从以θ为参数,在词典V上的多项式分布;
第四,挑选关键词w。w服从以β为参数,z的条件多项式分布,其中β是一个矩阵,每个分量代表某个主题z条件下生成某个单词β的概率。
第五,重复M次步骤一到步骤四,得到整个文本集的话题,其中M是文档的数量。
LDA模型的生成过程如图一所示:
图一 LDA生成过程
由于上述过程涉及到的数学原理比较复杂,下面将使用通俗的语言对LDA模型的生成过程进一步描述。在对文本集进行建模时,假设文本集总共具有T个主题、D个文档和W个词语,三者之间有如下关系:
1.对于每个主题Ti,是词语W上的多项式分布,即一个主题用多个关键词来表示;
2.对于每个文档Di,是主题T上的多项式分布,即一篇文档用多个主题来表示。
这里共有两种概率分布:一是“文档-主题”分布;二是“主题-词语”分布。词语的生成是通过“文档-主题-词语”这条关系链来生成的。打个比方,一个词语的产生可以用抛两次骰子来类比:第一次抛骰子,相当于从“文档-主题”分布中选择一个主题,第二次抛骰子,相当于从选定的主题中,从“主题-词语”分布中选择一个词语,连续重复多次上述过程。一篇文章的主题,就是从“文档-主题-词语”关系链中生成一组代表这个主题的关键词。
这个关系可以用公式(1)来表示:
将公式(1)的条件概率形式转化为矩阵形式,即可得到如图二所示:
图二 文档-词语矩阵生成过程
注:
为文档-词语矩阵;
为主题-词语矩阵;
为文档-主题矩阵。
LDA算法的优点:
第一,属于无监督学习,可以对文本自动进行话题挖掘,无需人工添加标签;
第二,对文本的语义进行分析,考虑与词语间的联系。
LDA算法的缺点:
第一,LDA是一种文本话题挖掘方法,所以LDA模型的性能难以客观评价;
第二,LDA模型在微博等短文本语料中的效果没有在传统文档中的好;
第三,主题数目的设定依赖于人工经验,需要反复调试取最优值。
5. 算法框架
5.1 整体分析框架
微博热点挖掘模型由数据获取模块、数据预处理模块、情感分析模块和可视化模块等四个模块组成。
5.2 爬虫爬取微博数据
得到的数据如下图
5.3 数据预处理模块
利用pandas对csv文件进行读取,然后使用jieba进行分词,分词的时候注意要适当增加新的词典和停用词,来对文本进行更好的切割。
新词典(部分截图)
处理完得到的文本(部分截图)
5.4 LDA提取主题词
将预处理后的文本导入到词典,并保存起来,将tf-idf进行词向量化,并保存词向量化的文本,将词向量化的文本和词典导入到LDA模型,并设置话题数量k,设置关键词数目为10个,构建主题词。
得到的主题词
5.5 基于情感词典的情感分析
读取原始文本、情感词典,利用jieba对原始文本进行分词,但不去掉停用词,计算每个句子的情感得分,将整个文本分为三类:积极,消极,中立。得到结果,保存到TXT文件中,进行可视化处理。
这里的情感词典有四个:正面词典、消极词典、程度副词词典、否定词词典。
5.6 基于情感词典的情感分析(关键词版本)
在原本的情感分析上增加了关键词筛选这一功能,可以针对某些包含关键词的文本进行情感分析
关键词为:宇宙
5.7 基于决策树(xgboost)的文本分类和热度分析
读取原始文本,利用jieba对原始文本进行分词,但不去掉停用词,训练模型,然后对每一天进行分类,将整个文本分为两类:有关,无关;以有关微博占每天爬取总微博数的比例为热度,得到结果,保存到csv文件中,进行可视化处理。
热度表(部分截图)
5.8 可视化处理
可视化处理分为词云和echart两部分。“词云”这个概念由美国西北大学新闻学副教授、新媒体专业主任里奇·戈登(Rich Gordon)于近日提出。 ... 因此,“词云”就是对网络文本中出现频率较高的“关键词”予以视觉上的突出,形成“关键词云层”或“关键词渲染”,从而过滤掉大量的文本信息,使浏览网页者只要一眼扫过文本就可以领略文本的主旨。Echart是一种可视化工具,可以实现很多功能。
6. 结果分析
6.1 情感分析
在舆情分析中,正面评价数量:7045负面评价数量:3160中立评价数量:3016。正面积极的微博及影评占总数的53.28%,负面消极的微博及影评占总数的23%,中立态度的微博及影评占总数的22%。可以看出大家对复仇者联盟3这个话题是持积极态度的。在对几个主题词“灭霸”、“英雄”、“宇宙”、“电影”、“漫威”的分析中,基本是以正面的评价为主(在可视化界面可以看出)。
6.2 热度分析
关于热度分析,因为复仇者联盟3在海外和中国上映的时间不同步,所以造成热度持续偏高的现象,5月10号的热度高达百分之90,是因为5月11号凌晨0点,复仇者联盟3在中国首映。过了5月18号之后,热度慢慢下降。
7. 总结与展望
7.1 本次作业存在的不足
1. 爬取的数据量不够大,导致分析的结果不是十分具有代表性。
2. 所用的模型比较简陋,得出的准确率不是特别理想。
3. 没有形成一个比较系统的模型,每个模块之间比较独立,写了很多个python文件。
7.2 展望
1、希望可以用深度学习以及神经网络的方法对文本进行处理,提高准确率。
2、形成一个比较完整的系统,能做出人机交互的界面。