本方法涉及一种面向微博的疑似水军发现方法,属于社交网络分析及数据挖掘技术领域。
背景技术:
在过去的若干年中,社交网络已经成为了人们在互联网中与亲戚朋友保持联系的主要方式之一。有统计显示,人们在社交网站中花费的平均时间要远远多于其他网站。大部分的社交网站都提供了通过移动设备进行访问的服务,这也使得社交网站的访问更加频繁。
社交网络的快速流行与广泛使用使得这些网站可以收集到产生的大量的有关用户、用户的朋友和用户的兴趣的信息。不幸的是,便捷的信息传播方式与大量的有价值的数据也吸引了许多非法团体或个人的注意,社交网络被他们看作是一条获得高额利润或是实现不法目的便捷途径。目前,一些社交网站存在大量谣言或虚假消息。特别是,现阶段的社交媒体中,人们受到了水军账号的极大影响,如水军发布的大量“灌水”信息,水军机器人发布海量垃圾邮件,以最大程度地传播垃圾信息等,严重影响了上网体验。
传统网络水军行为,其出现时间较早、数量规模相对较小、行为没有高度隐蔽性,产生的垃圾信息具有明显特征。因此,对其识别方法主要为基于垃圾信息内容分析,如邮件内容分析。同时,通过大量识别建立黑名单和白名单分别用来记录可疑用户信息和正常用户信息,以此提高水军行为识别效率及准确率。此外,邮件领域网络水军行为产生垃圾邮件所需资源类似,通过其使用资源及其网络层级特征能够很好地定位邮件水军。随着网络环境的复杂化和水军危害的增加,用户对其防范的能力也不断增强。为达到其目的,网络水军行为逐渐复杂化并趋向于正常用户,传统邮件水军行为的识别方法无法发现这些隐蔽的网络水军账号。
web2.0是一种新兴的互联网方式,通过网络应用,促进网络中人与人之间的信息交换和协同合作,其模式以用户为中心。当前,web2.0网络水军识别研究按照目标领域的不同,可以分为邮件领域、电子商务领域、社交网络领域和论坛领域网络水军识别研究。网络水军识别研究按照研究方法的不同,可以分为基于用户产生内容特征、基于用户相关特征、基于环境特征的识别方法。
web2.0网络水军识别研究,是传统网络水军识别基础上的适应性识别研究。目前,国内外网络水军识别研究取得了较前几年更大的进展,但是仍然存在很多重要问题亟待解决。国外网络水军识别研究最初集中于邮件领域,并在近几年内迅速扩展到社交网络和电子商务领域中。国内网络水军识别研究相比之下较为缺乏。现阶段主要有基于内容特征、用户特征、环境特征以及综合特征的网络水军识别方法。例如:2010年ratkiewicz等人设计了“truthy”系统,在线搜集、分析并可视化那些热门话题tweet的传播,并利用如话题标签‘#’、短链、表情等采集自tweet的特征来识别twitter上的政治性的信息滥用行为。2011年,qazvinian等人尝试在twitter上检测谣言。他们将问题分解为两步有监督机器学习任务:首先检索出涉及谣言的微博,然后在此基础上分类从中识别出支持谣言的微博。分类中用到了文本内容、用户历史和微博特定模因这三类特征对数似然率的线性组合,实验结果显示文本特征(词频、词性)仍是最重要的,同时后两个特征也明显提升了分类性能。
但是在实际问题的处理过程中,由使用过多的特征进行监督学习固然可以保障识别率,但高维度的特征集合以及个别特征的提取难度过大也会相应的导致系统的性能无法满足实际应用的要求,同时由于数据的稀疏性,很多时候,我们不可能总是获取全量数据(粉丝关系、关注关系、转发信息等),在这种情况下,因为数据的不全面性,我们需要尽可能的简化特征集合并使用易于提取的特征、引进更为巧妙的识别模型来保证特征提取与识别预测的效率。
技术实现要素:
本发明的目的是为解决解决了用户关系链接数据稀疏情况下无法准确进行群体发现的问题,提出一种面向微博的疑似水军发现方法。
本发明的思想是考虑到海量数据中最容易获得且较为全面的信息即是社交用户所发表的文本数据信息,提出一种基于文本数据的群体发现及扩充方法,主要针对用户的文本数据进行自然语言处理并最终提取出该用户的特征信息,并根据特征信息进行建模,最后通过比较各个用户之间的相似性进行聚类分析,最终得到群体社团,并提炼出该群体的主要标志进行群体扩充。
本发明的目的是通过以下技术方案实现的:
一种面向微博的疑似水军发现方法,包括以下步骤:
步骤一、采集相关微博数据,获取如下信息:微博用户所发的文本信息、用户所做的评论的文本信息、用户在微博上所进行的互动信息,包括评论操作、转发关系、点赞操作;用户的基本属性包括粉丝数、关注数,关注关系;
基于爬虫技术或微博公开的一些数据资源以及直接购买的水军微博或账号,获取到需要分析的微博信息,这些信息主要包括:微博用户所发的文本信息、用户所做的评论的文本信息、用户在微博上所进行的互动信息,包括评论操作、转发关系、点赞操作;用户的基本属性包括粉丝数、关注数,关注关系;
步骤二、对经由步骤一获取的样本数据进行如下数据预处理工作:首先进行数据清洗,然后对微博文本进行中文分词,最后通过层级关系解析数据,获得用户-微博文本映射、用户-评论文本映射,并保留用户-关注关系、用户-粉丝关系、用户-转发关系数据;
步骤三、对经由步骤二预处理后的数据进行用户特征提取:对于微博数据中的所有用户分别提取特征“粉丝数”和“关注数”;然后根据提取用户的微博内容计算间接特征“粉丝关注比”、“原创微博比例”、“转发微博比例”、“微博平均@数”、“发帖频率”、“全量微博上网方式数”、“转发微博上网方式数”和“是否参与转发大于m次的微博”;
步骤四、构建训练集:如果用户未提供训练集,则对预先标注好的用户集合,分类标签为水军、非水军,进行用户特征提取构建训练集,如果用户提供训练集,则使用用户提供的标注好的数据作为训练集;
作为优选,所述进行用户特征提取时,根据不同的识别需求,可以调整训练中使用的特征集合,不必使用步骤二所述的完整的特征集合。
步骤五、训练水军检测模型:使用步骤四标注好的特征集合数据进行分类检测模型的训练;
作为优选,本实施例使用logisticregression算法作为分类检测模型,给定n个特征x=(x1,x2,…,xn),设条件概率p(y=1|x)为观测样本y相对于事件因素x发生的概率,用sigmoid函数表示为:
其中g(x)=w0+w1x1+…+wnxn,w0为截距,w1,…,wn表示特征1到特征n的权值,在x条件下y不发生的概率为:
步骤六、使用上述训练好的水军检测模型,进行水军用户识别,具体过程为:用户添加需要预测的微博用户,如果只有用户的id或昵称则首先通过步骤一到步骤三采集用户微博数据并计算用户特征,把获取的特征应用于检测模型进行预测。
作为优选,采用步骤六所述的水军用户识别过程依次对某一事件中所有用户进行检测,可以判别该事件是否含有水军。
有益效果
本发明中使用的微博文本数据信息,包含了微博用户多角度、多方面的特征,完整的描述了一个微博账号,这样避免了因为特征维度较低带来的准确率较低的问题;同时在特征集合中加入了与事件相关的特征,从而规避了偶然出现在事件中的水军账号的影响,进一步提升了识别的准确率,可以在检测账号是否为水军的同时对我们理解事件中是否有水军推动提供更多的帮助,具有很强的使用价值。本发明实现了数据的充分利用,方便快捷的进行群体发现而不用建立复杂的分类检测模型,从而降低了算法的复杂度,并且算法的模块性较高,可以投入大规模数据计算,具有较高的稳定性。本发明除了可以对单一用户进行水军检测,还可以对某一特定事件中的一批用户进行识别,来判断事件中是否有水军幕后推动,中间处理过程中获取的用户关系等数据还可以用来发现水军源头、识别水军团体等深度挖掘,提高信息利用率,有很大的实用价值。该方法模块性极强,可以稳定适用于大规模数据计算框架下。
附图说明
图1为本发明实施例一种面向微博的疑似水军发现方法的流程示意图;
图2为本发明实施例针对微博的数据采集与预处理流程示意图;
图3为本发明实施例利用提取的特征进行检测模型的训练与新样本预测的流程示意图。
具体实施方式
下面结合附图和实施例对本发明进行详细说明:
以某一新浪微博用户为例:
这名用户的id为5364402211。当需要判断这一微博账号是否为水军账户时,只需要给出用户5364402211这一用户id,根据本发明方法即可根据用户id进行相关数据的采集与分析,最终对这一账号是否为水军给出预测结果。具体过程如图1所示,下面详细阐述。
根据步骤一进行相关微博数据的采集:
针对我们要研究的新浪微博数据进行采集或是直接获取微博提供的公开数据。数据的采集通过建立缓冲url队列,采用广度优先搜索算法(bfs)进行网页链接搜索,并对每个节点网页进行扫描下载,并对页面进行解析,去除无关的噪声,保留可以描述用户的属性的元数据信息:用户发表的微博文本信息、用户评论的微博文本信息、用户的粉丝数目、用户的关注数目、用户的转发关系、用户的注册信息;也可以直接调用微博官方提供的api接口或是rss等反馈信息直接提取相关信息。训练过程中需要的水军用户数据则通过在互联网上购买账号或转发评论获取水军用户id,然后通过我们的采集方法获取相应的用户及微博数据;
根据步骤二进行数据预处理,如图2所示,
由于微博中存在着大量的半结构化、非结构化数据,因此对于采集获得的微博元数据,需要进行相应的清洗和集成,对这些元数据进行数据的整合存储,并建立相应的映射关系,便于后续过程的实施。
1)数据清洗:对于采集到的原始数据,进行数据完整性的检查,去除用户信息或微博信息不完整的微博用户及其相应微博内容;
2)文本分词:对用户的微博文本信息(发表微博、评论微博)使用分词工具(如ictclas分词系统)或方法进行文本分词,去除停用词,得到相应文本的向量空间模型(vsm:vectorspacemodel);
3)基于步骤1)和2)处理后的数据,建立用户-微博文本vsm映射和用户-评论文本vsm映射,同时还可以获得用户-转发关系、用户-粉丝关系、用户-关注关系等映射。
根据步骤三进行用户特征提取:
这个部分我们采用一个多维度的特征集合来对用户进行描述,其中既包括直接通过采集获取的直接特征,同时也包括二次计算得到的间接特征,具体如表1所示:
表1:用户特征
其中粉丝数、关注数和粉丝关注比可以通过步骤二的第三部分统计用户的粉丝、关注关系获得,粉丝数通过用户-粉丝关系获得,关注数通过用户-关注关系获得,粉丝关注比通过粉丝数/关注数得到。
转发微博比例、原创微博比例和微博内容平均“@”数通过步骤二的第二部分统计获得。根据用户每条微博的内容判断其微博类型是否为转发微博或原创微博并统计数目,统计后计算与用户总微博数的比值得到转发微博比例、原创微博比例。通过vsm模型统计其中的@符号个数,与用户微博总数的比值作为微博内容平均“@”数。
发帖频率、全量微博上网方式数、转发微博上网方式数、是否参与转发大于100次的微博通过步骤二的第二部分获得。对用户每条微博中的微博发布时间进行排序用最晚发布时间与最早发布时间的差值(小时)作为时间间隔,通过微博总数/时间间隔计算发帖频率。统计每条微博中的上网方式,将所有上网方式的总和作为全量微博上网方式数。统计每条转发微博中的上网方式,将所有上网方式的总和作为转发微博上网方式数。统计用户的每条转发微博的原微博被转发数,如果有任意一条原微博被转发超过100次则认定用户有转发大于100次的微博。
根据以上描述对用户id为5364402211进行特征提取,获取其特征向量为x=(38,182,0.21,0.19,0.0078,0.494,0.118,9.0,5.0,1.0)
在实际模型训练的过程中可以根据需求调整训练使用的特征,特征集合的缩减一定程度上会导致识别准确率的降低,但是也会相应的提升系统的性能。另一方面,如果对召回率的要求较高而并不是很重视整体的识别准确率,则可以使用属性特征、内容特征的组合获得更高的召回率。
根据步骤四,构建训练集:
训练集包含的是用来训练水军检测模型的数据,以用户为单位每个用户对应一条训练集数据。一条训练集数据为一个二元组<x,l>由两部分组成,x是一组特征向量:
x=(x1,x2,…,xd),
特征向量作为分类模型的输入,其中xi代表用户的一个特征值,i∈{1,2,……,d},d表示用户的特征数量;l为用户的标签属性,即“yes”或“no”表示用户是水军或者不是水军。
根据步骤五训练水军检测模型,如图3所示:
我们将疑似水军的识别视为一个分类问题,通过步骤四构建的训练集,来训练分类模型,并对模型进行保存用来进行预测。本实施例中采用logisticregression算法作为分类模型,给定n个特征x=(x1,x2,…,xn),设条件概率p(y=1|x)为观测样本y相对于事件因素x发生的概率,用sigmoid函数表示为:
其中g(x)=w0+w1x1+…+wnxn,那么在x条件下y不发生的概率为:
在这一部分所要做的就是训练w=(w0,w1,…,wn)这一组权值。
根据步骤六、预测判别未标注数据,进行水军识别
检测某个用户是否是水军时,首先根据用户提供的需要检测的微博id通过上述步骤1-步骤3所述过程进行相关微博数据的采集,并进行特征提取,将提取的特征应用于训练好的检测模型,输出对于用户是否为水军的预测结果;即将步骤三中提取的特征向量x应用于步骤五训练好的模型进行预测,得到p(y=1|x)>p(y=0|x),则可以判断id为5364402211的用户是水军,否则为非水军。
检测某一事件中是否有水军时,则采用上述检测某用户是否为水军同样的流程对事件中的每一个微博用户进行检测,一旦检测到某一用户为水军用户时,则认定此事件含有水军。
本发明方法已经成功应用于百万级微博内容的水军检测任务,取得了80%以上的识别准确率。此外本发明已被国家安全部门应用于社交网络的舆情监测,在微博社交平台的水军检测方面效果显著,成功检测到了大量微博水军,为维护互联网秩序做出了卓越贡献。
为了说明本发明的内容及实施方法,给出了上述具体实施例。在实施例中引入细节的目的不是限制权利要求书的范围,而是帮助理解本发明所述方法。本领域的技术人员应理解:在不脱离本发明及其所附权利要求的精神和范围内,对最佳实施例步骤的各种修改、变化或替换都是可能的。因此,本发明不应局限于最佳实施例及附图所公开的内容。