水军微博社交网络信息传播分析系统_第1页
水军微博社交网络信息传播分析系统_第2页
水军微博社交网络信息传播分析系统_第3页
水军微博社交网络信息传播分析系统_第4页
水军微博社交网络信息传播分析系统_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

第1章引言1.1问题的提出在当今社会,随着互联网的迅速发展与移动端的便捷使用,越来越多的人喜欢通过网络社交来收集信息、来发表自己的观点和看法。现在为人熟知的社交网络包括新浪微博、QQ、微信、知乎、脸书、抖音等,已经成为大家日常交流、发布信息和收集信息的主要途径之一了。其中,由于新浪微博有巨大的用户基数、实时性极强的传播效率、发布门槛低、廉价快捷的使用成本等特点,它在当今已经成为一个很好的交友与营销的平台了。据2019年11月南方财经报统计,目前中国的网民数量已经高达8.54亿,而截止19年末,微博月活为5.16亿,同比增长了约5400万,日活为2.22亿,同比增长了2200万。相当于中国一半的网民都在使用微博,可想而知微博的实力有多强。图1-1微博2019年统计月活跃增长趋势然而微博的便利性与传播特性使其信息数量急剧增加的同时,也给网络监管带来急剧的挑战--网络水军的泛滥使信息的真伪越来越难以辨别。。如今每一起舆论事件的背后,都充斥着大量的经济或者政治的利益集团。这些集团通过大量购买水军来主导舆论方向,而水军混在普通用户中大量的发布数据,成为“托”,给普通网民和数据收集者都带来严重的影响。根据一家微博刷量供应商向第一财经记者提供的最新报价,单条微博阅读量或视频播放量1万次,报价9元。在加粉方面,分为充数粉、极品粉,充数粉是纯刷粉丝量,1万个粉丝80元;极品粉是有头像、博文、自带几十个粉丝的那种,1万个极品粉报价260元。在点赞方面,给博文充数的点赞100个报价4元,用带有头像的号给博文点赞100个报价6元,用带有头像给评论点赞100个报价6元。在转发方面,分为屏蔽与不屏蔽两种,屏蔽的这种刷量会被新浪屏蔽,只显示数量,看不到具体转评内容列表,报价100个4元;不屏蔽的报价100个10元。图1-2某水军店铺价格表(1)图1-3某水军店铺价格表(2)因为这种行业的形成,使得大规模的水军成为常态。然而热门事件的舆论方向的易受到商业利益驱动,会扰乱网络环境、影响网络民意和传播虚假垃圾消息,长久以往极易造成社会信任危机与失控,所以掌握大众舆论倾向、加强对水军各方面的监管成为当前舆论管控的重中之重。向、及时监管控制虚假暴力事件成为当前社会舆论管控的重中之重。在此背景下,本章着重介绍相关研究现状,并针对现有的研究不足,提出本文的研究目标及内容。1.2研究现状学术界对于网络舆情的研究始于社会科学领域,但是由于网络舆论中存在大量个体主观意识及心理活动,基于此而产生的社会现象难以用数学语言描述,使得定量分析方法难以为继,且信息传播的早期研究人员主要是一些经济学家、社会学家和传染病学专家,主要研究产品、创新和病毒在真实社会中的传播,但是由于真实社会的数据采集比较困难,研究中所使用的数据集通常都较小无法给出准确结果。随着社交媒体的迅速发展,海量的数据可以简易获取,使得信息传播的研究得到了新的发展机遇。目前的主流研究大体可划分为两大类,基于理论扩散模型的研究和基于信息扩散树的研究。其中,基于理论扩散模型的研究包括以下几类:线性阈值模型。此模型是MarkGranovetter在1978年对用户受周围参与某项集体活动的人员影响从而也参与该活动的潜在抗拒现象进行了研究而提出的阈值模型。线性阈值模型中每个节点v都有一个阈值,现实情况的社交网络的用户的阈值一般都不同,它表示用户受到影响的难易程度。未被激活的节点v受相邻的已被激活的节点w影响。对节点v产生影响,并且v的所有邻居w的之和小于等于1。对于一个处于未活跃状态的节点v,只有当它的活跃邻居节点的影响力之和大于等于其阈值,节点v才会被激活,即网络中个体的决策依赖于其所有邻居节点的决策。且节点v的活跃邻居节点可以多次参与激活v。v被激活之后,它也会以同样的方式影响它自己的未被激活的邻居节点。这样会有越来越多的,满足激活条件的节点被激活,直到最后再也没有新的节点被激活了,激活过程才会停止。朱敬华,李亚琼等人提出的《基于线性阈值模型的动态社交网络影响最大化算法》通过遍历全网得到所有节点的路径集合,更新算法确定局部受影响的网络子图,最终实现在较短时间内以较小的计算成本获得最大影响范围的传播种集。独立级联模型。独立级联模型是一种概率模型,当一个节点v被激活时,它会以概率p[v,w]对它未激活的出边邻居节点w尝试激活,这种尝试仅仅进行一次,而且这些尝试之间是互相独立的,即v对w的激活不会受到其他节点的影响。胡怀雄的论文《基于独立级联模型的社交网络影响力最大化研究》针对IC模型下的影响力最大化问题提出的一种基于度的搜索策略的进化算法DDSE,有效解决社交网络影响力最大化问题。博弈论模型。经济学中有一个著名的研究方向,网络形成博弈(NetworkFormationGames,NFG),它研究社交网络的形成机制。在网络形成博弈模型中,每个结点拥有一个收益函数来表征通过当前网络拓扑结构,该结点所做的某项决定或与其他结点建立的某条链接给自身带来的收益。在社交网络中,用户结点之间存在复杂的链接关系,每个用户结点在与其他用户建立链接关系时都希望最大化自身的收益。对于社交群体,都会存在一个稳定状态,即当前群体中的每一个结点的收益都处于最大化。宋晨光的《基于博弈论的信息传播问题研究》以演化博弈论为基础,从信息传播动力学的角度出发,解决此类问题的优势,以演化博弈论为理论基础,结合感知流行度建立用户行为的动态演化策略,动态调整流行病模型的感染率,揭示流行度变化与用户参与意愿变化间的关系,研究了信息传播过程中不同动力学因素对信息传播的影响。传染病模型。传染病动力学是对进行理论性定量研究的一种重要方法,是根据种群生长的特性、疾病的发生及在种群内的传播、发展规律,以及与之有关的社会等因素,建立能反映传染病动力学特性的数学模型。经典的传染病模型包括SI、SIS、SIR模型,大致将人群分为传播态S,易感染态I和免疫态R。S态表示该个体带有病毒或谣言的传播能力,一旦接触到易感染个体就会以一定概率导致对方成为传播态。I表示该个体没有接触过病毒或谣言,容易被传播态个体感染。R 表示当经过一个或多个感染周期后,该个体永远不再被感染。由于社交网络舆情的传播方式与病毒的传播方式有很多相似之处,所以现很多研究人员偏好用这个模型,如赵剑华,万克文《基于信息传播模型-SIR传染病模型的社交网络舆情传播动力学模型研究》就是基于传统的SIR模型,综合考虑对象的心理特征行为因素来搭建舆论传播模型,选用粒子群算法来求解模型参数的最优解。尽管学术界已经对社交网络舆情有了足够的研究成果,但是对现如今影响力越来越大的水军群体,研究人员没有给予剔除,常常是把他们归类于普通用户来处理。然而现实是水军群体会虚高舆情的热度,影响舆情的传播倾向。所以本文将研究在信息在传播过程中,水军对舆情的影响程度,探索水军信息传播规律。1.3解决问题的思路本文主要关注微博水军对网络舆论发展的影响,从新浪微博抓取的实际数据,从近期的一个热门事件的转发人开始,获取这个人微博关注人和微博粉丝,然后进行迭代扩展,获取一个较为完整的社交网络圈子。之后通过爬虫继续抓取所有人员的基本资料和近期微博内容。将抓取到的所有的人按传染病动力学来分为各个阵营,根据他们的个人行为,构建一个舆论传播模型来准确描述热点随着时间的宏观变化过程。具体的框架设计流程如下图1-4:图1-4系统设计的框架流程1.4文章结构第一章引言。介绍本设计的研究背景,研究现状并提出本设计主要解决的问题和文章的结构。第二章相关知识。介绍WS小世界社交模型、传染病动力学模型、隐马尔科夫模型。第三章数据采集模块的详细设计。介绍了本系统的数据需求和数据抓取的概要设计以及最后的爬取效果。第四章微博水军识别模型的设计。介绍了系统的如何通过账号与微博信息来设计水军识别模型。第五章基于隐马尔科夫的SEIR模型的介绍。介绍了如何进行数据清洗、生成观测序列和状态序列,以及参数设置。第六章系统测试。介绍了系统所需数据和最后的测试。第七章总结。总结了系统的不足之处。1.5社会经济效益与对环境的影响由于水军泛滥导致民众与国家多次蒙受损失,如福岛核泄漏导致的国内买盐风波就是典型的水军影响国家安全和民众的经济利益的事件。通过增强对微博水军的信息传播分析能了解这一群体并能辅助相关机构加强互联网管理,稳定社会环境。

第2章相关知识2.1WS小世界网络模型早在1998年,Watts和Strogatz 提出了小世界网络这一概念,并建立了WS模型。实证结果表明,大多数的真实网络都具有小世界特性(较小的最短路径) 和聚类特性(较大的聚类系数) 。传统的规则最近邻耦合网络具有高聚类的特性,但并不具有小世界特性;而ER 随机网络具有小世界特性但却没有高聚类特性。因此这两种传统的网络模型都不能很好的来表示实际的真实网络。 Watts和Strogatz建立的WS小世界网络模型就介于这两种网络之间,同时具有小世界特性和聚类特性,可以很好的来表示真实网络。本文就是利用WS小世界模型的方法,将微博网络社交群体收敛到符合真实世界的社交结构中,来反映真实世界的社交舆情传播情况。WS小世界的构造方法:1、从规则图开始:考虑一个含有N个点的最近邻耦合网络,它们围成一个环,其中每个节点都与它左右相邻的各K/2节点相连,K是偶数。2、随机化重连:以概率p随机地从新连接网络中的每个边,即将边的一个端点保持不变,而另一个端点取为网络中随机选择的一个节点。其中规定,任意两个不同的节点之间至多只能有一条边,并且每一个节点都不能有边与自身相连。在上述模型中,p=0对应于完全规则网络,p=1则对应于完全随机网络,通过调节p的值就可以控制从完全规则网络到完全随机网络的过渡,如图2-1所示。图2-1几种网络模型2.2传染病动力学传染病模型有着悠久的历史,最早可追溯到1760年DanielBernoulli对天花的研究。在1922年Ross博士利用此模型研究疟疾在蚊子与人群之间的传播行为,获得诺贝尔医学奖。1927年Kermack和McKendrick在研究黑死病的传播规律时,提出了经典的传染病动力学模型——SIR(SusceptibleInfectedRemoved)模型,此后学者们纷纷根据不同的研究情境对SIR模型进行改进,提出了SI(SusceptibleInfected)、SIS(SusceptibleInfectedSus-ceptible)ceptible)以及SIRS(SusceptibleInfectedRemovedSus-ceptible)等多个传染病模型,并将其广泛地应用于各类复杂系统的信息传播机制研究中。SIR仓室模型是传染病模型中很经典的模型,模型中把针对某个传染病,将流行范围内的人群分成三类:S类,易感者(Susceptibles),记为S(t),指t时刻未被感染者,但缺乏免疫能力,与传染者接触后易受到感染;I类,染病者(Infectives),记为I(t),指t时刻已经染上传染病的人,它可以传染给S类成员;R类,移出者(Removal),记为R(t),指t时刻已经被隔离,或因病愈而具有免疫能力的人。该演变原型如图2-2所示:图2-2传染病动力学SIR原型根据实际情况,易感者被感染后并不一定变成染病者,而是先成为潜伏者,进而在一定几率下转变为染病者,免疫者。SEIR模型就是在此实际情况下加入了E类(潜伏者),更加符合实际情况。图2-2传染病动力学SEIR原型2.3隐马尔科夫模型隐马尔可夫模型(HiddenMarkovModel,HMM)作为一种统计分析模型,创立于20世纪70年代,80年代得到了传播和发展并成功应用于声学信号的建模中,到目前为止,它仍然被认为是实现快速精确语音识别系统最成功的方法。作为信号处理的一个重要方向,HMM广泛应用于图像处理,模式识别,语音人工合成和生物信号处理等领域的研究中,并取得了诸多重要的成果。HMM由两个随机过程组成,其中一个是状态转移序列,它是一个单纯的马尔可夫过程;另一个是与状态对应的观测序列,如图为一状态数为3的HMM示意图,其中为状态序列,它们之间的转移是一个马尔可夫过程,为各状态下对应的观测值。在实际问题中,我们只能看到观测值,而不能直接看到状态,只能是通过观测序列去推断状态的存在及转移特征,即模型的状态掩盖在观测序列之中,因而称之为“隐”Markov模型。图2-3三个状态的隐马尔可夫模型状态转移图

第3章数据采集模块详细设计在本章中将介绍数据采集模块的的设计框架和部分子模块的详细实现,数据选择与抓取模块将为整个系统的主要技术瓶颈。3.1数据爬虫抓取如今面对新浪微博近8亿的海量用户群体,任何方法都很难获得庞大的文本数据与微博完整的用户关系数据。。因此从海量完整的拓扑关系中获得社会结构完整的拓扑也具有很大实际意义。本文进行分布式扩展爬取部分博主截止2020年4月23日之前的个人信息、用户关注信息与粉丝信息、博文信息等。具体过程如下:选取近期热门话题,某罗姓明星出轨事件,事件的起始发生时间是4月23日,然后选择参与转发评论此事件的若干普通用户(普通用户只在微博中有稳定且正常的社交关系,并且本身并不是大V,不是僵尸用户和水军用户),作为本次数据的种子节点。根据种子节点的社交关系,即关注者与粉丝,进行遍历爬虫抓取。然后对得到的关注与粉丝账号进行数据清洗,包括去重与去每天都会发无意义微博的博主(去除含种草、白菜、安利、测评等关键词的用户),然后把数据加入新的网络拓扑节点里。三次迭代抓取后基本达到所需网络规模,关注与粉丝信息如图3-3。通过分布式爬虫爬取节点的个人基本信息、微博内容信息,存入MongoDB中,数据表信息如表3-1所示,用户个人基本信息如图3-1、微博内容信息如图3-2所示。数据表字段User(存放个人信息)用户ID,昵称,性别,生日,所在地,学习经历,工作经历,微博数,关注数,粉丝数Weibo(存放微博内容)微博ID,微博内容,微博的发布位置,微博的发布时间,点赞数,转发数,评论数,微博的发布工具,微博的用户IDUsername(存放关注与粉丝信息)关注者的ID,粉丝的ID表3-1抓取的新浪微博数据目录图3-1抓取的部分微博用户信息图3-2抓取的部分微博内容信息图3-3抓取的部分关注与粉丝ID3.3爬虫概要设计系统主要分三个大的模块:一是ID抓取模块,二是用户个人信息与微博内容抓取模块,三是数据库管理模块。3.3.1ID抓取模块模块说明:爬取一个或多个指定微博用户关注列表与粉丝中的微博账号,批量获取其user_id,并写入user_id_list.txt文件。程序支持读文件,由于微博限制原因,一个用户最多可以获取200个关注者或粉丝,最终写入user_id_list.txt文件;然后可以用生成的user_id_list.txt作为config.json文件“user_id_list”参数的值,继续获取user_id,生成文件,最多可以获得200X200=40000个use_id;然后又可以利用这40000个user_id获得40000X200=8000000个user_id,以此类推,可以获得所需的数据规模。defget_page_num(self):通过xpath获取粉丝列表页数defget_page_num(self):

url="/%s/fans"%self.user_id

selector=self.deal_html(url)

ifselector.xpath("//input[@name='mp']")==[]:

page_num=1

else:

page_num=(int)(

selector.xpath("//input[@name='mp']")[0].attrib['value'])

returnpage_numdefget_one_page(self,page):获取第页的user_id,粉丝页是/user_id/fans,关注人的页面是/user_id/follows,第2页粉丝页是/user_id/fans?page=2,关注人同理。第一个链接获取一共多少页,仿照第二个链接依此访问获取。defget_one_page(self,page):print(u'%s第%d页%s'%('-'*30,page,'-'*30))url='/%s/fans?page=%d'%(self.user_id,page)selector=self.deal_html(url)table_list=selector.xpath('//table')if(page==1andlen(table_list)==0):print(u'cookie无效或提供的user_id无效')else:fortintable_list:im=t.xpath('.//a/@href')[-1]uri=im.split('uid=')[-1].split('&')[0].split('/')[-1]nickname=t.xpath('.//a/text()')[0]if{'uri':uri,'nickname':nickname}notinself.follow_list:self.follow_list.append({'uri':uri,'nickname':nickname})print(u'%s%s'%(nickname,uri))3.3.2用户个人信息与微博内容抓取模块模块说明:连续爬取多个新浪微博用户的数据,并将结果信息写入MongoDB数据库。写入信息几乎包括了用户微博的所有数据,主要有用户信息和微博信息两大类,前者包含用户昵称、关注数、粉丝数、微博数等等;后者包含微博正文、发布时间、发布工具、评论数等等。程序的主要文件如下: config.json:配置相关文件; spider.py:爬虫逻辑主文件; printer.py:打印调试信息相关; writer.py:保存至本地文件或数据库相关; validator.py:配置参数验证相关; html_parser.py:网页解析相关;部分主要函数如下:defvalidate_config(self,config):验证输入的配置是否正确,配置包括filter(控制抓取范围)、since_date(抓取的微博发布的时间范围)、write_mode(存入数据库的方式)、user_id_list(存储遍历好的用户ID)是否存在。defextract_user_info(self):提取用户信息。是所需的用户信息表的主函数。defget_weibo_info(self):获取微博信息。是所需的微博内容的主函数。defget_one_weibo(self,info):获取一条微博的全部信息。defget_user_id(self,selector):获取用户id,使用者输入的user_id不一定是正确的,可能是个性域名等,需要获取真正的user_id。defget_user(self,selector):获取用户信息、微博数、关注数、粉丝defget_page_num(self,selector):获取微博总页数defget_long_weibo(self,weibo_link):获取长原创微博defget_long_retweet(self,weibo_link):获取长转发微博defget_weibo_content(self,info,is_original):获取微博内容defget_publish_place(self,info):获取微博发布位置defget_publish_time(self,info):获取微博发布时间defget_weibo_footer(self,info):获取微博点赞数、转发数、评论数definfo_to_mongodb(self,collection,info_list):将爬取的信息写入MongoDB数据库defget_user_config_list(self,file_name):获取文件中的微博id信息,通过文件提供的ID信息进行抓取3.3.3数据库管理模块环境说明:数据库为MongoDB数据库User数据表,为用户的基本信息:用户id:微博用户id,如"1669879400",这个字段本来就是已知字段 昵称nickname:用户昵称,如"Dear-迪丽热巴" 性别gender:微博用户性别生日birthday:用户出生日期所在地location:用户所在地 学习经历education:用户上学时学校的名字和时间 工作经历work:用户所属公司名字和时间 微博数weibo_num:用户的全部微博数(转发微博+原创微博) 关注数following:用户关注的微博数量 粉丝数followers:用户的粉丝数 简介description:用户简介Weibo数据表,为爬取的微博内容: 微博id:微博唯一标志 微博内容content:微博正文 视频video_url:微博中的视频url,若微博中没有视频,则值为"无" 微博发布位置publish_place:位置微博中的发布位置 微博发布时间publish_time:微博发布时的时间,精确到分 点赞数up_num:微博被赞的数量 转发数retweet_num:微博被转发的数量 评论数comment_num:微博被评论的数量 微博用户use_id:如"1669879400",这个字段本来就是已知字段Username数据表,为抓取的用户粉丝与关注人列表:微博用户id。图3-3数据库E-R图数据库管理命令:(1)将4月23日至今参与话题讨论的用户成员筛选出来。db.user.aggregate([{$lookup:{from:"weibo",localField:"id",foreignField:"user_id",as:"wb_info"}},{$match:{"wb_info":{$elemMatch:{content:/罗志祥/}}}},{$project:{id:1}},{$out:'username'}]);(2)将所需的成员id导出到excel表中mongoexport-dweiboluo-cusername-fid--type=csv-oyuantou.csv-d:数据库名-c:表名-f:列名-type:导出的文件的形式-o:导出路径(3)对所需数据进行筛选与处理db.shuju.aggregate([{$project:{id:1,weibo_num:1,following:1,followers:1,wb_num:{"$size":"$wb_info"}, gender:{$cond:[{$eq:["$gender","无"]},0,1]},location:{$cond:[{$eq:["$location","无"]},0,1]},birthday:{$cond:[{$eq:["$birthday","无"]},0,1]}, description:{$cond:[{$eq:["$description","无"]},0,1]},education:{$cond:[{$eq:["$education","无"]},0,1]},work:{$cond:[{$eq:["$work","无"]},0,1]},talent:{$cond:[{$eq:["$talent","无"]},0,1]}, {"wb_info":{$elemMatch:{content:1,publish_time:1,original:1, up_num:1,retweet_num:1,comment_num:1, original:{$cond:[{$eq:["$original","true"]},1,0]} }}}},{$out:'weibo_1'}])3.4爬虫效果从新浪微博抓取的实际数据,从近期的一个罗某的热门舆论事件出发,抓取其中三个普通用户转发者,获取获取这几个人的人微博关注人和微博粉丝,然后进行三次迭代扩展,一共抓取16284个基本用户。分析该用户组成的网络拓扑特征可得,该网络的平均出度为8.38,说明每个节点大约有8个关注对象,最大出度为430,关注9751人,分析该网络的拓扑特征可知,该网络的平均出度为19.38,说明每个节点大约有19个关注对象,最大出度为200(说明:由于微博端口限制,最多只能爬取200个关注对象或粉丝);最大度为200,说明某些节点最大有200个粉丝。最后构成的网络符合WS小世界模型,证明他们是一个较为完整的SW小世界社交网络圈子。之后通过爬虫继续抓取这16284个人员的基本资料和4月24日以来的微博内容。然后将微博内容中包含“罗志祥”的用户信息与微博抓取出来,一共获得642人参与了此次事件的转发评论,相关微博数有4204条。

微博水军识别模型4.1通过账号进行水军判断微博水军隐藏在大量的正常用户中,随着新浪微博审核越来越严格,微博水军越来越趋近正常用户,但是只要是为了谋取某种利益,水军用户必然与正常用户有较明显的行为差别。水军判断必须是多方面的,因为从某一单一维度评估是否是水军,往往只能判断出部分水军,水军的特征不仅仅存在于发文文本本身,还存在于本身的行为特征,有些帖子从内容上无法看出有什么异常,有些语句独立的看也完全会是普通人所发,甚至于就是真人所发(人力水军),但是如果从这些人的属性出发,就会发现这些账号的相关行为,自带属性,和其他普通账号存在一定的差异。本文对网络水军识别就必然先要对这些水军账号进行特征分析。本文从微博平台获取一百名微博水军进行研究,发现他们都有以下特征:水军有较少的粉丝,有较多的关注;日均发帖量较多,而且都集中在一个时间,或发博的时间有规律;发博的情感较为激烈,常常是会极力支持或反对某个事件;多为转发或评论,很少有原创微博;个人信息较为不完整;水军微博下的转发量与评论量几乎没有。字段说明历史微博总数用户关注数通常关注了很多人关注数/粉丝数一般关注数远远大于粉丝数资料完整性所在地、生日、个人简介、学校或工作区这些基础信息填写的完整性评论总数/微博总数平均每条微博被评论数转发总数/微博总数平均每条微博被转发数带有“@”的微博数占比水军互动较少表4-1微博水军判断指标4.2基于综合指数熵值法的微博水军识别综合指数法是在确定一套合理的指标体系的基础上,对各项指标的指数加权平均,以计算出指标综合值,用以进行综合评价的方法。设判别微博水军的指标为A1,A2,A3…An,样本为S1,S2,S3…Sm,设样本Si在评价指标Aj下的值为Cij。这就构成了m个样本和n个指标的初始矩阵(Cij)m×n。由于不同指标的量纲、数量级和指标优劣的取向存在差异,所以需要对这些指标进行标准化处理。可以采用最小-最大规范化对指标进行标准化处理。这样求得样本Si在每个指标上的指数之后,该样本的综合指数即为:其中Wi是样本Si的综合指数,Qj是指标Aj的权重,Wi越大,该样本为水军的可能性越大,Wi越小,则其为水军的可能性越小。可以寻找到一个阈值w,使得Wi>w时,该样本被判定为水军,Wi<w时,该样本被判定为普通用户。熵值法:在综合指数法中涉及到多指标的综合计算,如何确定指标在该综合评价体系中的重要性对于最终的评价结果是至关重要的。熵值法可以用来判断一个事件的随机性及无序程度,指标的熵值可以衡量该指标的离散程度,离散程度越高,该指标对于综合评价的效用也就越大。利用熵值法,可以得到指标Aj的信息熵值为:指标Aj的信息效用值取决于该指标的信息熵与系统总体的信息熵的差值hj:其中hj为该指标的熵变,E为系统总熵因此,该指标的权重即为:采集到的微博信息均为均为文本格式,尤其是博文内容为短文本格式,因此需要对数据进行处理,以进行综合指数计算,流程如下:

(1)用户特征统计:历史博文数、关注数可直接获取。粉丝关注比,用户个人信息表中的following/follows,若follows为0,则值设为null。所在地、生日、个人简介、学校或工作区这些基础信息填写的完整性。博主特征统计:统计该博主的近期博文的转发次数/近期博文数即为平均转发数,该博主的近期博文的评论数/近期博文数即为平均评论数。(近期值只从4月23日至今的微博总数)序号列名值示例1用户ID54763829112近期微博总数2643用户关注数12374关注数/粉丝数0.00675资料完整性0.16评论总数/微博总数0.00837转发总数/微博总数0.00348带有“@”的微博数占比0.03729是否为水军1表4-2微博水军数据处理示例并利用公式(1)对数据进行标准化处理,将每个指标的值映射到[1,10]之间。(3)模型训练:选择一百名样本作为训练集,其中水军用户80名,正常用户20名,数据处理为如表3-3然后用公式(1)进行标准化处理,利用公式(3)计算评价体系的信息总熵和每个单项指标的信息熵,利用公式(5)计算权重,最后利用公式(2)计算综合指数。(4)水军判定:计算完成后发现所有的水军得分都高于60分,因此将阈值p设为60,大于p时即判定为水军用户。

第5章基于隐马克科夫的SEIR算法模型5.1数据结构化如果不对数据进行结构化,数据仓库会是一个相当无组织的环境。正如在一个杂乱的车库中难以找到某个特定的工具,在非结构化数据仓库中,不仅几乎不可能找到所需的数据,而且难以理清应该如何放置新的数据,或者更糟的是,一份数据是如何和另一份数据关联起来。因此,组织数据是创建和维护数据仓库系统的关键。由于爬虫抓取的数据本身是非结构化数据,但隐马尔科夫模型需要的状态序列和观测序列是按一定规律结构化的数据,所以本章将介绍基于水军微博数据的状态序列和观测序列生成算法,将爬虫结果转化为隐马尔科夫模型需要的结构化数据。5.1.1观测序列生成根据爬虫数据将每一天的观测结果划分为转发和忽视两种行为,再以天作为单位时间Δt来分割整个微博信息传播过程,即每一个Δt内观测结果均表现为转发和忽视两种的一种,因此只需要以某条微博的所有转发构成的时间序列作为输入,经归并处理可输出一条统一的观测序列,代码如下:defgenerate_seq(self,seq_length):

X=np.zeros((seq_length,self.x_size))

Z=np.zeros(seq_length)

Z_pre=np.random.choice(self.n_state,1,p=self.start_prob)#采样初始状态

X[0]=self.generate_x(Z_pre)#采样得到序列第一个值

Z[0]=Z_pre

foriinrange(seq_length):

ifi==0:continue

#P(Zn+1)=P(Zn+1|Zn)P(Zn)

Z_next=np.random.choice(self.n_state,1,p=self.transmat_prob[Z_pre,:][0])

Z_pre=Z_next

#P(Xn+1|Zn+1)

X[i]=self.generate_x(Z_pre)

Z[i]=Z_pre

returnX,Z5.1.2状态序列生成状态序列用于表述马尔科夫链随机生成的状态序列,即用户在一系列时间节点Δt对微博信息的关注程度,但是由于用户状态是隐藏属性,不可实际考证,所以本系统以传染病动力学模型中的SEIR模型为基础提出适用于微博的四状态模型,该模型将用户划分为易染、潜伏、感染与免疫四个状态。图4-3四状态模型状态转移图解5.1.3Viterbi预测算法维特比算法实际是用动态规划(dynamicprogramming)解隐马尔可夫模型预测问题,即用动态规划求概率最大路径(最优路径)。这时一条路径对应着一个状态序列。输入:模型λ=(A,B,π)λ=(A,B,π),观测序列X=(x1,x2,...,xT)输出:最优路径Y∗=(y∗1,y∗2,...,y∗T)(1)初始化δ1(i)=πiBi(x1);Ψ1​(i)=0(2)递推,对t=2,3,...,Tδt(i)Ψt(i)=max1≤j≤N[δt−1(j)Aj,i]Bi(xt)=argmax1≤j≤N[δt−1(j)Aj,i](3)终止(4)最优路径回溯y∗t=Ψt+1(y∗t+1)主要代码如下:defViterbit(obs,states,s_pro,t_pro,e_pro): path={s:[]forsinstates} curr_pro={} forsinstates: curr_pro[s]=s_pro[s]*e_pro[s][obs[0]] foriinxrange(1,len(obs)): last_pro=curr_pro curr_pro={} forcurr_stateinstates: max_pro,last_sta=max(((last_pro[last_state]*t_pro[last_state][curr_state]*e_pro[curr_state][obs[i]],last_state) forlast_stateinstates)) curr_pro[curr_state]=max_pro path[curr_state].append(last_sta) max_pro=-1 max_path=None forsinstates: path[s].append(s) ifcurr_pro[s]>max_pro: max_path=path[s] max_pro=curr_pro[s] returnmax_path5.2参数设置模型需要以下几个参数:易感染者转为潜伏者的概率α,潜伏者转换为感染者的概率β,感染者转换为免疫者的概率γ,水军用户的影响概率w,潜伏者直接转换为免疫者

温馨提示

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

评论

0/150

提交评论