蔡翘励 梁莹 陈思炜 吴凯 李攀攀
摘要:豆瓣网站是国内具有较高热度的社交网站之一,该文设计出针对豆瓣网站的信息采集与可视化分析系统,基于Python语言实现了信息采集、信息分析与可视化三个功能模块,能根据用户指定关键词实现对豆瓣网站信息的自动采集及可视化展示等功能。
关键词:信息采集;可视化;豆瓣网站
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)13-0003-02
1 背景
目前,随着Web2.0和移动互联网的飞速发展,网民数量屡创新高,社交互联网平台应运而生,网民可在社交网络平台上发表个人观点、表达个人思想。然而,不恰达的言论极易成为社会不稳定因素,因此非常有必要及时地了解和掌握社交网站网民所发表的信息,对网站的信息进行全方位的了解,避免出现大规模网络舆情攻击、网络谣言等恶性事件。
豆瓣网站作为社交网站的典型代表,积聚了大量的人气,是国内较具有影响力的社交网站,大量的网民可以在豆瓣网站上发布各种信息,这些信息带有丰富的个人情感,特别是有些意见表达的观点具有极强的主观性和随意性[1]。因此,该文研发了面向豆瓣网站的信息采集与分析系统,能全面地掌握豆瓣网站的社交网络信息,并能对所爬取的豆瓣网站数据进行直观的可视化展示,有助于及时、全面地了解豆瓣网民的思想表达、热点关注事件等。
2 系统架构设计
该系统采用基于Python的Scrapy开源爬虫框架二次开发而成,Scrapy框架提供了丰富的网页抓取相关功能的API接口[2],该文基于此,实现了面向豆瓣网站的定向信息爬取、数据处理及其可视化,系统功能如图1所示。
面向豆瓣网站的信息采集与可视化系统架构主要分为三个关键功能模块:
1)采集模块,主要根据用户指定的关键词或URL对豆瓣网站的相关信息进行爬取;
2)处理模块,主要任务是将采集模块所爬取的海量数据进行处理和分析,并进行格式化存储,以便于后续的可视化展示;
3)可视化模块,该部分是系统分析功能的主要实现部分,是实现对所处理信息的可视化展示。
3 面向豆瓣网站的信息采集与可视化系统主要功能实现
3.1 信息采集模块
信息采集模块的主要功能是根据系统用户指定的关键词,启动爬虫程序通过网络采集豆瓣网站的相关信息,并将采集到的信息持久化保存到本地数据库。此外,系统还部署了爬取信息的去重去噪策略,保障采集信息的准确性。最后,对采集的信息进行格式化转换,将格式化的数据进行保存。
为了保障对豆瓣网站采集信息的全面性,该系统采用广度优先的爬行搜索策略[3-4],主要流程是选择的起始URL作为种子URL放入等待队列中,爬虫根据URL队列选择URL进行爬取解析,将已爬取的URL放入已爬取集合中,对解析下来的URL进行选择放入待爬取URL队列中,直到待爬取的URL队列为空为止,如图2所示。
鉴于豆瓣网站的主动反爬虫策略[5],该系统采用Cookie进行模拟浏览器访问,在豆瓣网站返回bin的Cookie时,后续的爬取过程均携带该Cookie进行访问,为了防止频繁的方位而触发的反爬虫机制,在系统中设定了一定的时间阈值,为1分钟,进行间隔式爬取。
3.2 信息分析模块
系统分析模块的主要功能对豆瓣网站爬取信息数量的分析、热点话题的跟踪和识别、情感分析等。信息分析模块的核心功能主要是通过基于Python的Jieba分词器对所爬取的海量文本信息进行处理,Jieba分词器首先使用特征词向量对文本进行形式化描述,其原理是使用前缀数组的方式构造了一个用于存储数据的词典,从内存的词典中构建该句子的有向无环图,并使用隐马尔可夫模型处理词典中尚未收录的词,等待全文分词完毕,动态规划寻找DAG的最大概率路径,最后输出分词结果。
该系统还使用K-means聚类算法对该文本向量进行汇总,并判断其与关键话题的相关性[6]。为了提升算法的有效性,该系统中使用欧氏距离作为相似度度量的标准尺度,对相关性达到一定的阈值的待分类话题则将其归类到同一话题中,最后分析关键话题的情感倾向性和热点趋势。此外,该系统中采用误差平方和准则函数作为聚类准则函数,以提升系统的分类性能。
3.3 信息可视化模块
信息可视化模块的功能是将所爬取信息的分析成果以图表形式为用户呈现在web界面上,该系统为用户设计三种不同形式的图表,包括热点词汇统计图,信息数量趋势图,情感正负分析表。
该系统的信息图表主要运用的是可视化工具Plot.ly,Plot.ly是一个用于做分析和可视化的在线工具,将分析模块得到的结果数据发到服务器,通过Web完成渲染,形成可交互的图表,热点词频的可视化展示使用词云生成类库Wordcloud。具体来讲,基于Plot.ly的数据可视化工作流程和基于Wordcloud的词云图工作流程分别如图3和图4所示。
4 实验结果与分析
为了验证该系统的功能,以豆瓣网的数据为例,选取最近热门电影“头号玩家”进行信息分析,所采集的信息数据条目如表1所示。
从表1可以看出,该热门词汇的信息数量在各类型中的情况,通过信息的数量可以清楚把信息在不同类型的评论数量的差别显著地表现出来,这样便于用户用来分析问题和研究问题。
该系统通过时间的设置对该热门词汇的信息数量进行分析,其数据趋势如图5所示,从图5中,我们可以看出,随着时间的积累,所爬取的数據量呈上升趋势,还可以进一步的看出,在时间发生的初期,网民的关注程度呈现比较平稳的态势,随着某一事件的出发,如新闻报道等,该时间的关注程度呈现爆炸式增长。
测试该系统对上述数据进行情感正负面分析方面的性能,分析结果如以图6所示。在图6中,可以看出,正面表达、负面表达和中立表达分别占53%、45%和2%,其主要原因是对影片进行正面和负面发表意见的网民占大多数,而对影片不持有主观性意见表达或对影片不了解的网民,则不愿意发表意见,造成占比较少。
最后,该系统对该词汇的热门评论词进行统计,生成了热点词汇统计图,如图7所示,其中,字号的大小表示该词被网民所关注的热度,字号越大表明该词的热度就越高,即网民的关注度就越高。
从图7中,网民对“游戏”,“电影”“导演”等词有较高的关注程度,这也契合了网民了解到一部影片后,最想通过网络关注关于该影片的一些信息。
5 结束语
当下,互联网高速发展,以豆瓣网站为代表的社交网络成为网民发表意见、表达思想的主要平台,也成为无数网民建立人际关系,分享信息和获取信息的重要来源。该系统可以将豆瓣网站的信息以可视化的形式方便、直观地展示出来,从而量化地描述网站中情况,揭示其发展规律和趋势,具有重要的应用价值。
参考文献:
[1] 王娜, 田晓蒙. 大众分类法对信息过载的影响及优化策略研究—以豆瓣网为例[J]. 现代情报, 2016, 36(9): 74-81, 87.
[2] 安子建. 基于Scrapy框架的网络爬虫实现与数据抓取分析[D]. 长春: 吉林大学, 2017.
[3] 刘寿臣. 网页爬虫技术的关键技术研究探索[J]. 电脑知识与技术, 2016, 12(17): 16-17, 20.
[4] 王桦. 基于广度优先的主题爬虫的设计与实现[D]. 上海: 复旦大学, 2011.
[5] 吕小刚. 基于K-means文本聚类算法研究[J]. 电脑编程技巧与维护, 2014(24): 33-35.