工作文档1004054_叶浚源_微博垂直领域的数据挖掘_第1页
工作文档1004054_叶浚源_微博垂直领域的数据挖掘_第2页
工作文档1004054_叶浚源_微博垂直领域的数据挖掘_第3页
工作文档1004054_叶浚源_微博垂直领域的数据挖掘_第4页
工作文档1004054_叶浚源_微博垂直领域的数据挖掘_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、题 目 微博垂直领域的数据挖掘微博垂直领域的数据挖掘 姓 名 叶浚源叶浚源 学 号 2021100405420211004054 所在学院 思科信息学院思科信息学院 年级专业 20212021 级计算机科学与技术级计算机科学与技术 指导教师 蒋盛益蒋盛益 职称 教授教授 完成时间 2021 年 4 月 20 日综合评定成绩: 指导教师评语指导教师评语可另附 A4 纸:评定成绩:评定成绩:指导教师签名:指导教师签名: 日期:日期:辩论小组意见辩论小组意见可另附 A4 纸:评定成绩:评定成绩:辩论小组长签名:辩论小组长签名: 日期:日期:微博垂直领域的数据挖掘以广东外语外贸大学用户群为研究对象叶浚

2、源 思科信息学院 2021 级 计算机科学与技术摘摘 要要:近年来,微博已开展成为网上最热门的应用之一。到目前为止,国内最热门的新浪微博已拥有几亿注册用户。大量用户的涌入使微博形成了各种垂直细分领域,譬如某种职业的用户,某个学校的学生等。为了更好地了解微博,除了对其进行整体的研究外,对特定垂直领域进行研究同样具有现实意义与挑战性。本文以新浪微博上广东外语外贸大学相关用户群为研究对象,通过定向数据采集,获取相关用户信息与关系链。计算用户 PeopleRank 值,基于统计发现用户群热门标签以及使用 Gephi 进行网络可视化,展示了该垂直领域内用户群的根本情况。关键词关键词:微博;垂直领域;数据

3、采集;PeopleRank;网络可视化Data mining in Micro-blog vertical specific users groupbased on the users in Guangdong University of Foreign StudiesYe Jun Yuan Cisco School of InformaticsAbstract: In recent years, micro-blog gradually becomes one of the most popular online applications. Nowadays, there are hundr

4、eds of millions users gathering in the most popular Sina Micro-blog. With the growth of the number of users, such like a group of students in the same school or a group of people with same occupation, kinds of specific users groups formed. Therefore, for a better research in Micro-blog, to pay atten

5、tion in these vertical fields is also significant and challenging. In this paper, Im focused on users who related Guangdong University of Foreign Studies in Sina Micro-blog. Via data collection, I get some users personal information and their friendships. Then I calculate their PeopleRank, count for

6、 the groups hot tags and use Gephi to visualize the network. As a result, it shows the vertical specific users groups basic overview.Key words: Micro-blog; Vertical Specific Users Group; Data collection; PeopleRank; Network visualization 目目 录录摘 要.IABSTRACT.II1 绪论.11.1 微博概述 .11.2 当前国内微博研究的现状 .11.3 本课

7、题研究的目的及意义 .21.4 本课题工作简介 .22 工作总体设计.32.1 系统设计框架图 .32.2 工作模块简介 .33 定向微博数据采集.53.1 采集数据的类型 .53.2 数据存储 .63.3 两种采集方式 .113.4 采集模块的设计与实现 .183.5 数据采集成果 .194 数据预处理.194.1 垃圾信息的清理 .194.2 广东外语外贸大学相关用户识别 .194.3 垂直领域内用户网络的构建 .205 垂直领域内用户重要度计算.225.1 PAGERANK简介 .225.2 PAGERANK计算方法 .22借鉴 PAGERANK的思想计算用户 PEOPLERANK.22

8、5.4 广外相关用户网络 PEOPLERANK计算 .236 垂直网络内用户热门标签发现.246.1 用户标签挖掘分析 .246.2 基于统计发现广外用户群热门标签 .247 基于 GEPHI 的网络可视化.257.1 GEPHI简介.257.2 数据导入 .267.3 网络分析 .277.4 网络可视化 .308 挖掘结果展示.338.1 展示系统框架图 .338.2 各模块介绍 .339 结语与展望.369.1 本文工作总结 .369.2 本文工作的优点、特色与缺乏 .379.3 进一步工作展望 .38参考文献.38致 谢.391 1 绪论绪论1.11.1 微博概述微博概述微博,即微型博客

9、Micro-blog的简称,是一个基于用户关系的信息分享、获取和传播的社会化平台。用户可以通过 WEB、WAP 以及多种客户端组建个人社区,以小于 140 个字的文字更新信息,并实现即时分享。微博的历史开始于 2006 年,国外博客技术先驱 Blogger 的创始人 Evan Williams 创立的公司 Obvious 在当年面向全球率先推出了微博效劳,随之微博开始风行全球。国内中文微博的历史那么开始于 2007 年,当年第一家微博效劳网站饭否网开张,紧随其后的有叽歪、Follow5、9911 等等几家公司。在 2021年,新浪微博正式开放效劳。到 2021 年,国内四大门户网站新浪、腾讯、

10、网易和搜狐都已经开通了自己的微博效劳,微博开始在国内火爆起来。亿,并继续保持稳定增长的势头。另外,腾讯微博凭借腾讯自身即时通信软件拥有的海量用户,它的总用户数量也早已突破 4 亿。随着微博平台上涌入海量的用户,用户发布和分享的海量信息也开始在微博上涌现,并有赖于微博平台自身的特征,进行快速流动传播。在这样的背景下,如何做好研究工作,从而利用好微博平台上的海量数据,进而推动经济的开展和优秀文化的传播,成为政府、商务等机构的热门话题。1.21.2 当前国内微博研究的现状当前国内微博研究的现状当前,国内关于中文微博的研究大致可以分为社会视角研究、传播学视角研究、商务视角研究、开展研究和应用研究等方面

11、。从文献数量上来看,学术界从传播学视角研究论文最多;就研究内容而言,探讨了微博的传播形态、营销模式等内容。现阶段,有关微博概念、传播特征以及运行机制已经有了一定的根底,但是对于微博开展至关重要的用户交互行为,基于用户关系的信息组织和聚合分享,以及如何引导和标准集体智慧方面等,都还处于开始阶段。1.31.3 本课题研究的目的及意义本课题研究的目的及意义随着越来越多的人开始使用微博,微博平台逐渐演变成一个大杂烩。同时也慢慢形成了大大小小的不同类型的垂直领域用户群体,例如由投资相关人员组成的用户群、由程序员组成的用户群、或者由某所学校学生和教职工组成的用户群等等。本课题的目的是通过对微博平台上由广东

12、外语外贸大学相关用户组成的垂直领域应用数据挖掘的方法,去试图认识和描述该垂直领域内用户群的根本特征,同时探索一种对微博垂直领域用户群进行研究分析的方法。本课题的意义是在一定程度上展示了新浪微博平台上广东外语外贸大学相关用户群的根本特征,其结果可以作为相关人员了解该群体的一个参考。同时,本文工作中采用了一些特定的策略进行定向微博数据采集与处理分析,也可以为其他研究工作者提供一些经验。1.41.4 本课题工作简介本课题工作简介1.4.1 工作内容介绍本文的工作具体可以分为四个局部:1微博数据定向采集通过程序的方式,访问新浪微博平台。采用特定的策略定向采集广东外语外贸大学相关用户的用户个人信息与用户

13、关系链。2微博数据预处理对采集到的数据,进行垃圾信息清理和广东外语外贸大学相关用户的识别。随后根据识别的结果,抽取构造广东外语外贸大学相关用户的垂直关系网络。3微博垂直领域数据挖掘通过应用数据挖掘的方法,对广东外语外贸大学用户的相关数据进行分析处理。具体工作包括用户重要度计算,热门标签统计发现,垂直用户关系网络可视化。4挖掘分析结果展示建立线上的站点,通过 Web 和图表的形式,对本文工作中的成果进行直观的展示。1.4.2 工作环境、使用的技术与工具1工作2开发语言:Java3集成开发环境:Eclipse4代码版本管理工具:Git5存储工具:Mysql, Redis, BerkeleyDB6可

14、视化分析工具:Gephi7Web 效劳器:Tomcat8其他开源库: client, log4j 等2 2 工作总体设计工作总体设计2.12.1 系统设计框架图系统设计框架图图 1 系统设计框架图2.22.2 工作模块简介工作模块简介如上图所示,系统设计可以分为 6 个模块。接下来是对各个工作模块的简单介绍:1数据采集模块该模块位于整个系统的最上游。它的工作任务是根据特定的规那么和策略从新浪微博平台的效劳器上获取后续工作所需的数据。在对获取到的数据进行简单的处理后,把数据写入本地存储中,以便下游的模块可以使用数据进行工作。2数据预处理模块数据预处理模块的任务是对上游采集模块采集到的数据进行必要

15、的清洗,以及根据下游应用模块的需求,对数据进行格式转换和预处理。它的具体任务有:垃圾信息清理,广东外语外贸大学相关用户的识别以及在识别用户结束后,进行垂直领域内用户关系网络的构建。3用户 PeopleRank 值计算模块该模块是系统的应用模块之一,它的作用是计算垂直用户网络中用户的PeopleRank 值,并把计算结果按照一定的格式输出到下游的展示模块。通过计算用户 PeopleRank 值,可以直观地反响用户在该垂直网络内的重要性和受欢送程度。4标签处理模块标签处理模块也是系统的应用模块之一,它的任务是对系统上游模块预处理后的用户标签数据进行分析处理,并把处理结果按照一定格式输出到下游模块进

16、行展示。通过该模块的工作,可以发现垂直网络中用户最热门的标签,从而反映垂直网络中用户群普遍的用户特征和兴趣爱好等内容。5网络分析及可视化模块该模块包括用于网络分析及可视化的软件 Gephi,以及 Gephi 与当前系统上游之间的数据格式转换接口程序。整个模块的任务是,先通过数据转换接口,生成 Gephi 能够识别的数据格式,让上游的数据顺利输入到 Gephi。然后使用Gephi 对垂直用户网络进行分析和可视化操作,生成相关的报表和图片输出到下游展示模块,以便能够对垂直领域用户网络进行更加直观的观察。6挖掘结果展示模块挖掘结果展示模块的作用是把对垂直领域进行挖掘分析的结果,用直观的方式进行展示。

17、该模块使用 WEB 的方式构建,使用 Java 开发,部署在 Tomcat上。前端使用了 JQuery 以及一些外围插件对展示效果进行了处理。3 3 定向微博数据采集定向微博数据采集3.13.1 采集数据的类型采集数据的类型3.1.1 用户个人根本信息采集的用户个人根本信息包括以下内容:1用户帐号,昵称,所在省市2个人简介,微博主页地址,微博头像地址3性别,粉丝数量,关注数量4发布的微博数量,收藏的微博数量5微博注册日期,是否认证用户,认证类型6是否允许任何人私信,是否允许任何人评论7用户互粉数量,使用的语言,认证原因,微号3.1.2 用户微博内容在采集用户个人信息的过程中,会同时采集到当前用

18、户最新发布的一条微博内容。具体内容包括如下几项:1微博号码,发布日期2内容文本,发布的终端,微博所带图片的地址3.1.3 用户标签信息用户标签是指在新浪微博平台上,用户为自己人工进行标注的一组不同的关键词。通过给自己添加标签,以公开描述自己的兴趣,身份,职业信息等等。对用户自身标注的标签信息进行分析研究,可以对用户有更好的了解。同样,对整个用户群的所有标签进行研究,也可以反映出整个用户群的根本情况。用户的标签信息是一组不同的关键词,所以它可以使用以下的方式进行表示:用户 A :篮球,90 后,音乐,广外3.1.4 用户教育信息与用户标签信息类似,在新浪微博平台上,用户可以给自己添加公开的教育信

19、息,以方便用户间找到同校的同学朋友。用户可以给自己标注小学,高中,大学等等不同级别的多条教育信息。所以,用户教育信息也可以表示为不同学校名称的一组名词。例如:用户 A :广东外语外贸大学,吴川一中3.1.5 用户关系链信息新浪微博是基于用户关系的社会化平台,关系链信息在微博平台中处于一个很重要的位置。用户之间的关系具体表现为关注与被关注。信息沿着用户间关系链流动。在新浪微博平台上,单个用户最多允许关注 2000 人,同时可以被无限多用户关注。目前新浪微博上粉丝数最多的用户姚晨,拥有 4446 万个粉丝。所以,从技术上来说,作为一名普通用户,要获得一位坐拥几千万粉丝用户的全部粉丝列表,几乎是不可

20、能的事情。WEB 端的微博用户粉丝列表中,一共提供 50 页信息,每页可以获得 20 位用户。而开放平台的粉丝接口,可以获取一个用户的最新 5000 个粉丝信息。用户的关系链信息在形式上可以表示为以下格式:用户 A:friends :用户 B,用户 C,用户 N用户 B:followers :用户 A,用户 W3.23.2 数据存储数据存储根据上一节对采集数据内容的描述,各种数据内容具有不同的表现形式,例如用户个人根本信息以及微博内容信息,都可以表现为表格的形式,而用户关系链,用户标签和用户教育信息,那么都表现为向量的形式。即一个用户对于一组个人信息,一个微博号码对应唯一一条微博内容,而一个用

21、户对应一组粉丝,一组关注的朋友,一组标签,一组教育信息等。综合考虑数据的表现形式与运算应用特点,选择不同的存储工具对数据进行存储。其中,传统关系型数据库适合存储一对一类型的数据,而 Nosql 类型的 Redis 数据库那么很适合向量类型的存储。在本文工作中,使用以下的存储方案进行数据的存储:(1) 使用 MySQL 进行用户个人信息和用户微博内容的存储。(2) 使用 Redis 和 BerkeleyDB 作为持久化辅助性程序数据结构。(3) 使用 Mysql 作为向量型数据持久化的存储。(4) 使用 Redis 作为向量型数据关系链、标签、教育信息的线上缓存3.2.1 MySQL1简介MyS

22、QL 是一个传统关系型数据库管理系统,最早由瑞典 MySQL AB 公司开发,后来该公司被 Oracle 公司收购,目前 MySQL 属于 Oracle 公司。MySQL 数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL 使用 SQL 语言作为访问数据库的标准化语言。同时,MySQL 采用了双授权政策,它分为社区版和商业版。由于其体积小、速度快、总体拥有本钱低,尤其是开放源码这一特点,所以在中小型的开发中大多项选择择 MySQL 作为存储数据库。MySQL 以表格的形式管理数据。表格的一行代表一条数据记录。因此 MySQL特别适合一对一

23、类型即每条记录都是唯一的,且记录中的每个属性都不一样的数据的存储和管理。然而,同样因为这样的数据管理形式,也决定了它对向量类型的数据的存储和管理是低效的。如果要对向量类型的数据进行存储,一个向量在 MySQL 中就必须得存储为多条记录。特别地,对于微博的关系链数据,一个用户普遍关注几百上千人,那么一条关注信息就得被存储为几百上千条数据记录,这样很容易造成数据的爆炸性增长,对这样的数据表进行处理会变得极端低效。基于 MySQL 的特性和我们需要存储的数据表现形式,可以选择使用 MySQL来进行微博用户个人根本信息和微博信息的存储,以及向量型数据的持久化。2用户根本信息数据模型表 1 用户根本数据

24、 user 表列名备注数据类型能否为空是否自增id表记录的 id主键,唯一int(11)否是uid用户账号,唯一varchar(10)否否screenName用户昵称varchar(50)是否name用户备注昵称Varchar(50)是否province所在省份int(11)是否city所在城市int(11)是否location所在位置varchar(30)是否description个人简介varchar(200)是否url主页地址varchar(100)是否profileImageUrl头像地址varchar(100)是否userDomain个性化域名varchar(100)是否gender

25、性别varchar(1)是否followersCount粉丝数int(11)是否friendsCount关注数int(11)是否statusesCount发表微博数int(11)是否favouritesCount收藏微博数int(11)是否createdAt注册日期date是否verified是否认证用户bit(1)是否verifiedType认证类型int(11)是否allowAllActMsg是否允许私信bit(1)是否allowAllComment是否允许评论bit(1)是否avatarLarge大头照地址varchar(100)是否biFollowersCount用户互粉数int(11

26、)是否lang使用语言varchar(10)是否verifiedReason认证原因varchar(200)是否weihao微号varchar(10)是否3用户微博内容数据模型表 2 用户微博内容数据 status 表列名备注数据类型能否为空是否自增id表记录的 id,主键,唯一int(11)否是sid微博号,唯一,单独标注一条微博varchar(20)否否uid发布人的账号varchar(10)是否statusCreatedAt发布日期date是否mid当前微博在web 系统中的 id值varchar(20)是否text微博文本内容varchar(300)是否source发送终端varcha

27、r(100)是否thumbnailPic微博内容中的图片地址varchar(100)是否bmiddlePic微博内容中的图片地址varchar(100)是否originalPic微博内容中的图片地址varchar(100)是否3.2.2 Redis1简介Redis 是一个和 Memcached 类似的高性能 key-value 存储系统,它支持存储的 value 类型相对更多,包括 string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持 push/pop、add/remove 以及取交集、并集和差集等更丰富的操作,而且这些操作都是原子性的。在此根底上

28、,Redis还支持各种不同方式的排序。与 memcached 一样,为了保证效率,数据都是缓存在内存中的。两者之间的区别是 Redis 会周期性的把更新的数据写入磁盘,或者把修改操作写入追加的记录文件,并且在此根底上实现了 master-slave(主从)同步。Redis 的出现,很大程度上补偿了 Memcached 这类 key-value 存储系统的缺乏,在局部场合也可以对关系数据库起到很好的补充作用。它提供了Java,Python,Ruby,Erlang,PHP 等多种编程语言的客户端,使用非常方便。如上所述,Redis 最大的特点是支持多种 value 类型,并且所有数据都存储在内存当

29、中。这样也就决定了 Redis 可以很容易支持向量的存储,例如向量A(1,2,3)可以简单地表示为 Key 为 A,Value 为 set,set 的值是 1,2,3。简单地表示复杂的向量数据,是 Redis 的一大优点,同时这些数据类型上还支持很多高效的操作实现。而 Redis 的另外一个特点,把所有数据存储在内存中,意味着 Redis 有非常高效的性能实现,同时也意味着 Redis 的容量必定是小于等于内存容量的。虽然 Redis 官方曾经在 2.4 版本中引入了 VMVirtual Memory虚拟内存的功能,但是这一功能已经失败,并在 2.6 版本中被正式去除。数据容量的限制是 Red

30、is 使用中不可回避的问题。基于 Redis 的优点与缺乏,综合考虑本文工作对数据的存储和操作的要求,主要对 Redis 进行以下几种使用:局部少量数据的持久化存储,以及大批量数据的线上缓存。3基于 Redis 对相应的采集数据进行数据建模表 3 Redis 数据模型表备注键值类型用户关注列表uid:friendsset用户粉丝列表uid:followersset用户教育信息uid:educationset用户标签信息uid:tagsSet3.2.3 应用 Redis 及 MySQL 构造二级存储由于 Redis 存储容量的限制,在有限的内存空间中,不能存储下足够的数据量。所以对于以上用户关系

31、链信息、教育信息以及用户标签信息,需要结合使用 Redis 及 MySQL 构造二级存储,在性能与存储之间做一定的妥协。Redis 的数据模型在应用层上与原来的模型保持不变,对原有 key-value 对设置一个过期时间 expire,一定时间过后,Redis 自动丢弃该 KV 对。在 MySQL 层中,构造以下的数据表:表 4 MySQL 持久化 KV 数据表列名备注数据类型能否为空是否自增id表记录的 id,主键,唯一int(11)否是keyRedis 中的 Keyvarchar(255)否否valueRedis 中的 ValueText否否读写操作:(1) 写操作全部面向底层 MySQL

32、 数据表。(2) 读操作首先查询 Redis 库看是否存在对应 Key,如果不存在再查询MySQL。如果 MySQL 中存在数据,把数据写入 Redis 中,并添加过期时间。在过期时间内的访问,全部面向 Redis,把 Redis 作为数据的缓存层。3.33.3 两种采集方式两种采集方式3.3.1 基于微博开放平台接口进行采集1微博开放平台简介新浪微博开放平台是一个基于新浪微博系统的开放的信息订阅、分享与交流平台。微博开放平台为用户提供了海量的微博信息、粉丝关系、以及随时随地发生的信息裂变式传播渠道。用户可以登录平台并创立应用,使用微博平台提供的接口,创立有趣的应用或者让外部的网站具有更强的社

33、交特性。在本文的工作中,主要利用新浪微博平台的开放接口进行数据采集。2使用微博开放平台新浪微博开放平台的使用,需要根据如下一些步骤:a) 第一步,创立微博应用。登录新浪微博开放平台后,填写相应的表单进行应用的创立。图 2 微博开放平台应用创立信息图b) 成功创立应用后,会获得应用的相关根本信息。如下列图,其中 App Key 是应用的唯一标志,而 App Secret 那么是应用的秘钥,需要保密使用。图 3 微博开放平台应用信息例如图c) 使用应用的 App Key 引导用户到相应的授权页面,在用户登录并进行授权后,用户会被自动跳转到我们自己设置的跳转页面,并通过 Url 把授权获得的 Cod

34、e 作为参数传递给我们。图 4 微博用户登录界面图图 5 微博应用授权示意图d) 通过向微博效劳器提交用户传递过来的 Code 参数以及 App Secret,获得用户授权的 AccessToken。授权成功后获得的 AccessToken 可以作为用户允许应用访问微博平台数据的凭证,它有一个过期的时间值,超过了一定时间,当前的 AccessToken 会自动失效,需要用户重新授权。图 6 通过授权接口成功获取 accesstoken 示意图e) 使用用户授权的 AccessToken 调用新浪微博开放平台接口。以下是使用 AccessToken 调用微博个人用户信息接口的代码例子:图 7 微

35、博开放平台接口调用例如代码调用个人用户信息接口返回的结果:图 8 调用微博开放平台接口返回结果示意图3开放平台接口的优点与缺乏优点:a) 能够方便地获取相对完整的数据。通过开放平台接口获得的数据格式是json 或者 xml,相比 html 页面要更加容易解析,并且开放平台提供了各种语言的开发包,对接口进行了很好的封装,极容易进行编程调用。缺乏:b) 接口限制太多。微博开发平台的接口有各种类型的调用频率限制,包括每小时,每 IP,每应用,每用户以及每个接口的调用次数上限。c) 不提供局部平台敏感数据。微博开放平台对于局部用户敏感数据并没提供接口调用,其中包括本文工作中所需的用户教育信息以及搜索结

36、果信息。3.3.2 基于网页爬虫的采集1微博用户模拟登陆新浪微博是一个封闭的社会化平台,对新浪微博的页面进行访问,首先需要用户进行登录操作。对于匿名用户,访问新浪微博的任何一个页面,都会被跳转至登录页面。为了实现爬虫采集页面的自动化,以及开放平台应用的自动授权,必须实现新浪微博用户的模拟登录。通过使用 Chrome 浏览器的开发者工具对新浪微博登陆过程进行抓包分析,可以分析出微博登录的流程。下面对过程进行简单的描述:图 9 微博用户登录流程图用户密码加密核心代码:图 10 微博登录加密核心代码2微博页面解析抓取到的微博页面是 Html 页面,并且所有的文字都经过编码。同时,页面中大量引入 Ja

37、vascript,在 Javascript 运行后,内容才会在正常的 DOM 树位置上。在本文的工作中,主要采集的页面是微博搜索结果页面以及微博个人资料页面。采用以下两个步骤从页面中提取相应的信息。a) 中文信息解码采集到的页面中,中文全部被转换成 unicode 编码输出,例如:“新浪微博会被编码为“u65B0u6D6Au5FAEu535A为了能正确提取信息,首先采用 apache common 开源工程中的编码组件,对页面内容进行解码,使用的代码如下:StringEscapeUtils.unescapeJava(String content);b) 使用正那么表达式提取所需信息针对搜索结果

38、页面,需要提取的信息是结果集中的用户 ID。针对用户个人信息页面,需要提取的信息包括用户标签信息以及用户教育信息。以下是分别进行几种信息所使用的正那么表达式。提取标签信息:(.*)提取教育信息:/&school=.*(.*)&from=inf&wvr=5&loc=infedu(.*)3该采集方式的优点与缺乏优点:能够获取到平台上任何类型的数据。理论上只要是用户公开的数据,就能够获取到,即所见即所得。缺点:需要用户进行登录;解析页面相对麻烦;获取数据的方式相比开放平台接口更难实现;效劳器端有反爬虫机制,因为需要登录,所以极容易被效劳器端识别成机器人。3.3.3 结

39、合两种采集方式进行数据采集1使用开放平台接口采集用户个人根本信息以及用户关系链。2使用采集网页的方式采集用户个人资料页面,从而提取其中的用户教育信息和用户标签信息。3使用采集网页的方式采集微博搜索结果页面,从而提取结果集中的相关用户账号。3.43.4 采集模块的设计与实现采集模块的设计与实现3.4.1 数据采集流程1采集搜索关键词为“广东外语外贸大学的微博寻人搜索页面。通过自动翻页,程序往下采集获取所有相关搜索结果页面。2解析获取到的页面,提取相关用户帐号,作为爬虫初始化的用户列表。3通过微博开放平台接口,获取初始化用户的粉丝信息,并把粉丝信息放入爬虫动态队列中,统计出现次数并进行排序。5开始

40、主线的抓取。每次从动态队列中取出统计次数最多的帐号,比照抓取历史记录。如果帐号不还没有进行抓取,那么分别获取该帐号的关注朋友信息,用户个人信息,用户个人主页等,然后在抓取历史记录中记录该帐号,最后从动态队列中删除该帐号。6重复第 5 步,不断对新的用户进行采集,直至动态队列为空。3.4.2 模块实现中的关键点如上一节中罗列出来的流程所示,网络爬虫的一个特点是流程相对简单。但是因为爬虫需要长时间运行,所以对于爬虫的状态管理是个相对困难的事情。如何保证爬虫停下来后,下次启动,可以接着上一次停下来的状态继续运行,而不会造成数据的丧失与错误。在本文工作中,使用以下两个存储方案进行爬虫状态管理。1使用

41、Redis 持久化存储爬虫历史信息。在整个爬虫模块中,对于不同的操作,采用不同的历史记录存储来对操作进行记录。这样可以保证代码的容错性,不会在程序异常退出时候的时候,破坏了当前的状态。在这里使用的是 Redis 的 set 类型。2使用 BerkeleyDB 构建动态爬虫队列。动态爬虫队列是个要求很高的存储部件。首先它需要能够添加向量,且能自动排序和排序输出。其次它必须是持久化的,且能容纳足够大的数据量,而性能效率不会明显下降。BerkeleyDB 是一个高效的嵌入式数据库,能够轻松应付百万级别的数据,而且同时它拥有方便易用的 DLPDirect Layer Persistence直接持久层接

42、口,可以直接对 java 对象进行存储。并且支持对象的二级索引,通过二级索引可以异常方便地实现动态队列的有序。3.53.5 数据采集数据采集成果成果在本文的工作中,通过实现以上所介绍的定向微博数据采集模块,一共对252966 位微博用户进行了采集。采集到 218519 位用户的个人信息、关注信息以及个人资料页面。通过对个人资料页面进行解析,其中 98239 位用户标注了教育信息,133454 位用户标注了个人标签信息。4 4 数据预处理数据预处理4.14.1 垃圾信息的清理垃圾信息的清理在数据采集的过程中,会遇到一些已经被新浪封号或者设置为异常状态等不可访问的用户账号,对这种类型的用户账号进行

43、采集,会得到很多空值的结果。在下一阶段的处理前,需要对这些没用的信息先进行清理。没用的信息主要存在于 MySQL 中的 user 表,并不涉及其他数据存储,所以垃圾信息的清理可以直接使用 SQL 语言对数据表进行相关数据的删除。4.24.2 广东外语外贸大学相关用户识别广东外语外贸大学相关用户识别本文工作中分别从以下三个维度对采集到的用户进行过滤识别:1基于用户教育信息进行识别因为用户教育信息是用户自行标注的,所以从这个维度上进行识别,是准确率最高的一种方式。对本文工作中采集到的已标注教育信息的 98239 位用户进行过滤识别,其中明确标注了“广东外语外贸大学相关教育信息的有 22254 位用

44、户。2基于用户标签信息进行识别在新浪微博平台上,也存在大量的用户在标签中标注自身教育信息,例如标注“广外, “GDUFS等标签。对本文工作中采集到的已经标注了标签的 133454 位用户进行标签过滤,共计找到广东外语外贸大学相关用户 2339 位。3基于用户关系链进行识别此识别方法主要用于寻找那些没有在微博平台上给自己帐号标注任何广外相关文本信息的用户。如果某个帐号同时关注了很多个广外相关帐号,广外相关用户数占他全部关注数的很大一个比例,那么就有理由相信他是广外相关的用户。至于微博用户的粉丝信息并不能全部被获取,一次微博开放平台接口调用最多只能获取用户粉丝中最新的 5000 个。除非使用计算的

45、方法,否那么在不全的粉丝信息中,结果的随机性就太大。所以,在本文工作中只保存通过关注信息进行用户识别。在进行了上述几种识别过滤方法后,采用该方法对剩下的用户进行关系链识别。采取阈值为 30%,循环计算 3 轮,一共识别出 3203 位用户。4广外相关用户识别结果对采集到的 252966 位用户进行了上述方法的识别,总共识别出 25858 位相关用户。采用随机抽样的方式对识别结果进行检验,准确率到达 85%。4.34.3 垂直领域内用户网络的构建垂直领域内用户网络的构建4.3.1 垂直领域用户网络的存储模型使用 Redis 进行垂直领域内用户网络的存储,存储模型如下列图所示:表 5 垂直用户网络

46、存储模型备注键值类型用户垂直网络中uid:intraFriendsSet关注列表用户垂直网络中粉丝列表uid:intraFollowersset用户垂直网络中PeopleRank 值uid:intraPRset广外有关微博用户账号集合gdufsUsersSet4.3.2 广外相关用户关系网络构建核心代码如下列图:图 11 构建垂直领域用户网络核心代码5 5 垂直领域内用户重要度计算垂直领域内用户重要度计算5.15.1 PageRankPageRank 简介简介PageRank,网页排名,又称网页级别或 Google 排名,是一种由搜索引擎根据网页之间相互的超链接计算网页重要度的技术。此技术通常

47、和搜索引擎优化有关,Google 用它来表达网页的相关性和重要性。Google 的创始人拉里佩奇和谢尔盖布林于 1998 年在斯坦福大学创造了这项技术。PageRank 通过网络浩瀚的超链接关系来确定一个页面的等级。Google 把从A 页面到 B 页面的链接解释为 A 页面给 B 页面投票,Google 根据投票来源甚至来源的来源,即链接到 A 页面的页面和投票目标的等级来决定新的等级。简单的说,一个高等级的页面可以使其他低等级页面的等级提升。5.25.2 PageRankPageRank 计算方法计算方法PageRank 的计算引入了随机浏览的概念,即模拟有人上网无聊随机翻开一些页面,点一

48、些链接的情景。一个页面的 PageRank 值也影响了它被随机浏览的概率。这里假设上网者不断点击网页上的链接,最终到了一个没有任何出链的页面的网页,这时候上网者会随机到另外的网页开始浏览。为了对那些有出链的页面公平,引入 q这裡的 q 被称为阻尼系数damping factor ,其意义是,在任意时刻,用户到达某页面后并继续向后浏览的概率。就是指用户停止点击,随机跳到新 URL 的概率的算法被用到了所有页面上,估算页面可能被上网者放入书签的概率。PageRank 的计算公式如下:图 12 PageRank 计算公式在某些方面上,微博用户网络与网页之间链接组成的网络非常类似。第一,两个类型的网络

49、都是有向网络。第二,两个网络的边都是无权值的。第三,网页的对外链接反映当前网页对目标网页的投票,而在用户网络中,用户 A 关注了用户 B,看作用户 A 给用户 B 投票,那么更加自然。从上面的描述可以看出,从计算用户重要性的角度出发,用户的PeopleRank 与网页的 PageRank 是有异曲同工之妙的。基于网络中所有人的投票,越重要越受欢送的人得票就越多。于是模仿 PageRank 的计算方式,进行用户 PeopleRank 的计算。所以,PeopleRank 的计算公式如下:图 13 PeopleRank 计算公式5.45.4 广外相关用户网络广外相关用户网络 PeopleRankPe

50、opleRank 计算计算图 13 计算用户 PeopleRank 代码实现表 6 广外相关用户网络 PeopleRank 值前十排名用户名PeopleRank 值1广外树洞空间2广外和谐空间3广外低调空间4广外夜间树洞5广外梦飞网6随拍广外7广外图书馆8伟大的安妮9广外就业指导中心10广州微博招聘工作6 6 垂直网络内用户热门标签垂直网络内用户热门标签发现发现6.16.1 用户标签挖掘分析用户标签挖掘分析在新浪微博平台上,允许用户添加自定义的一组用户标签。用户自由地使用自定义标签在社交网络中描述对自我的看法,因此标签是反映用户特征的非常的重要数据。对整个特定用户群的标签数据进行分析,是发现这

51、个群体的特征的重要手段。一个群体中最多人使用的标签,即最热门的标签,最能代表一个群体的情况。6.26.2 基于统计发现广外用户群热门标签基于统计发现广外用户群热门标签广外用户群热门标签前 20 位:表 7 微博广外用户群热门标签排名标签名数量1旅游22712美食20433广外20214电影19755音乐1859690 后17347旅行13178时尚10879听歌10391080 后103111学生89012宅86713自由78714娱乐76115文艺73316摄影64517健康64018睡觉52219篮球49820大学生4727 7 基于基于 GephiGephi 的网络可视化的网络可视化7.

52、17.1 GephiGephi 简介简介Gephi 是一款开源免费跨平台,基于 Java 的复杂网络分析软件。其主要用于各种网络和复杂系统,动态和分层图的交互可视化与探测。可用于探索性数据分析,链接分析,社交网络分析,生物网络分析等。它是信息数据可视化利器,可供大学研究工程进行数据分析使用。很多人使用它进行统计研究,微博信息研究等。图 14 Gephi 介绍图7.27.2 数据导入数据导入Gephi 可以接受多种数据格式,包括:GEXF,GDF,GML,GraphML,Pajek Net,GraphViz DOT,CSV,UCINET DL,Tulip TPL,Netdraw VNA,Spre

53、adsheet 和关系型数据库。在这里,我选择了 Pajek Net 的格式作为 Gephi 的数据导入格式。以下是Pajek Net 格式的一个简单例子:表 8 Pajek Net 文件格式表- *Vertices 3 1 A 2 B 3 C *Arcs 1 2 3 2 3 5 *Edges 1 3 4 - 其中这个网络一共有三个点,它们的标签分别是 A,B 和 C。有两条有向边1-2,2-3,它们的权值分别是 3 和 5。有一条无向边 1-3,权值是 4。对系统中的广外用户网络进行格式转换,生成的 Pajek Net 文件如下列图:表 9 转换后的广外网络 Pajek Net 格式文件-*

54、Vertices 258581 莫莫莫莫莫莫莫 moom2 张辛柳3 yao 业4 sleepy 秋要学会独立5 Tiamo 宏春此处数据量太大,限于篇幅,故省略25854 Suzy-YY25855 蒋-Sunny-微25856 广外蒲公英25857 bbbbobo25858 沉小鱼提不起劲*Arcslist此处数据量太大,限于篇幅,故省略-把该文件成功导入 Gephi 中,得到下面的报告图:图 15 Gephi 数据文件导入报告7.37.3 网络分析网络分析在对图进行可视化之前,需要对图进行简单的分析处理,以作为对图进行后续渲染操作的依据。Gephi 中提供了多项分析功能,以下是局部可用的相

55、关度量:图 16 Gephi 可以进行的网络统计分析选项计算得出的网络概况:图 17 通过 Gephi 计算的一些网络概况结果计算得出的边概况:图 18 通过 Gephi 计算的一些图的边概况结果进行模块化计算的结果:图 19 对网络图进行模块化计算进行图的过滤,分割以及排序:图 20 根据点的连入度,对点和边进行过滤图 21 可以根据模块化的结果,对节点进行着色图 22 根据点的入度进行点的大小和颜色,标签的排序输出7.47.4 网络可视化网络可视化分割着色后的网络图:图 23 分割着色处理后的网络图执行过滤操作后的网络图:图 24 对图中点和边进行过滤后得到的过滤图进一步过滤并排序后的网络

56、图:图 25 对网络图中的点进行了排序输出新浪微博上广东外语外贸大学相关用户网络图的可视化:图 26 进一步过滤,显示节点标签后得到的网络图图 27 广外垂直领域网络的概况图8 8 挖掘结果展示挖掘结果展示8.18.1 展示系统框架图展示系统框架图图 28 展示系统框架图8.28.2 各模块介绍各模块介绍1首页模块a) 展示系统的首页,主要设置了一个幻灯片播放功能,对使用 Gephi 生成的可视化图片进行动态的展示,对外展示整个垂直网络的整体概况。b) 首页效果图如下:图 29 主页模块效果图 2PeopleRank 模块a) 在这个模块里,通过设置一个输入框,以便用户提交昵称到后台,进行Pe

57、opleRank 的计算。b) 模块效果图图 30 PeopleRank 模块效果图3标签云模块a) 该模块通过动态获取后台已经离线统计好的 50 个热门标签,使用JQuery 及其插件构造动态的标签云。b) 模块效果图图 31 标签云模块效果图4名人堂模块a) 名人堂模块通过动态从后台数据中随机选取 10 位广外的认证用户进行展示。b) 模块效果图图 31 广外名人堂模块效果图c) 随机化选取使用的 SQL 语句:Select uid,profileImageUrl,screenName,gender,location,description,verifiedType,verifiedRea

58、son from user where isGDUFSer = true and verified = true and id = (select floor(rand()*(select max(id) from status)-(select min(id) from status)+(select min(id) from status) order by id limit 10;5微博墙模块a) 该模块通过动态从后台数据中随机选取 10 条广外用户发出的微博并对其进行展示,以方便用户了解广外用户发布的微博内容。b) 模块效果图图 32 广外微博墙效果图d) 随机化选取使用的 SQL 语

59、句:select screenName,profileImageUrl,text,user.uid from user left join status on user.uid = status.uid where user.isGDUFSer is true and status.id = (select floor(rand()*(select max(id) from status)-(select min(id) from status)+(select min(id) from status) order by status.id limit 10;9 9 结语与展望结语与展望9.1

60、9.1 本文工作总结本文工作总结根据前面几个局部的描述,本文主要完成了如下工作:1针对微博平台上广东外语外贸大学相关用户的数据定向采集。a) 实现了微博用户模拟登陆以及应用自动授权。b) 通过结合网页采集和调用开放平台接口的方式,采集到了 20219 个用户的个人信息、关系链、教育信息和标签信息。2广外相关用户的识别与垂直领域网络的构建。a) 通过结合使用上文所述四种识别方式,总计从 20219 个用户中识别出 5431 位广东外语外贸大学相关用户。b) 根据识别结果进行了数据结构的调整与网络构建。3广外相关用户垂直领域网络内的 PeopleRank 计算。a) 模仿 PageRank 的思想,计算了垂直领域内用户的 Pe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论