晁绪耀,王颖颖
(1.郑州职业技术学院,河南 郑州450007;2.郑州升达经贸管理学院,河南 新郑450001)
社交网络已经成为人们日常生活的重要组成部分,是人们传播信息、交流互动的重要途径。用户在社交网络上活动时,会通过文本信息、转发信息、评论等行为产生大量数据信息,分析、挖掘这些大数据具有重要意义。目前在世界范围内Twitter,Facebook是用户最为活跃的社交网络平台,因此本研究针对这两个平台提出一种分析其数据信息的系统。本系统的主要需求包括以下3个方面。
一是数据采集与融合。大数据分析必须以数据采集与融合为前提,可以通过种子URL实时采集或通过设定关键词实时采集,利用网络爬虫从Twitter,Facebook中采集数据信息。虽然社交网络平台的功能结构不同,界面样式也千差万别,但是其都包含文本信息、评论信息、转发信息、互动关系信息等,系统可以从中抽取存在共性的数据进行分析、融合,再以结构化的方式存储于数据库[1]。
二是信息检索需求分析。信息检索方式主要有两种:一种是新任务检索,即不保留之前的检索数据,开启一个新的检索任务;另外一种是当前任务检索,在开启一个新任务检索时,上次任务检索的数据也保留起来,两次检索得到的数据求交集或并集,最终实现多任务数据融合。两种检索方式都可以实现以下功能:关键词检索,即输入关键词即可获取用户信息、关系信息等相关结果;排除关键词检索,即输入需要排除的关键词后搜索结果中不包含关键词相关的信息;人物检索,即输入人物相关的关键词即可检索到相关信息;时间检索,可以实现在特定时间范围内的时间检索;来源检索,可以检索到信息的来源数据等。
三是数据分析与可视化需求。数据分析模块主要对社交网络数据进行挖掘、分析,其也是整个系统的核心部分,主要功能包括内容分析、行为分析、用户画像、发现热点话题等。其中内容分析中的内容包括用户发布、回复及转发的相关信息,除了显性的信息数据外,系统还可以对信息中隐含的内容做出情感分析,将用户感兴趣的信息标记出来;行为分析是指分析用户在社交网络平台上的所有操作行为,将用户的操作过程完整地记录下来,将用户的行为轨迹完整地构建、预测出来;用户画像是将用户信息进行标签化处理,用标签将用户的行为、观点、属性等个性化特征描述出来,并对用户个性化的观点、关注的话题进行总结、分析;发现热点话题主要是对用户的帖子数据进行聚类分析,发现用户关注的热点话题[2]。
根据上述需求可知,该系统需要实现数据采集、数据预处理与融合、信息检索、数据分析与可视化功能,其中核心功能为数据分析,下文详细介绍系统各功能设计开发过程。
数据采集是整个系统完成数据分析的基础模块,传统数据分析过程中多采用社交网络开放的应用程序接口(Application Programming Interface,API)获取数据,但却易受到限制。利用网络爬虫技术采集数据,可以不受数据限制。网络爬虫可以根据特定的规则实现网页内容程序或脚本的自动采集,通过网络爬虫可以将Twitter,Facebook上的网页下载到本地,再抽取数据信息。具体采集过程如下。
第一步,信息准备。由于系统爬取的社交网络平台需要登录才能正常访问、下载网页,因此需要准备社交网络平台账号、密码等信息,而种子统一资源定位符(Uniform Resource Locator,URL)、爬虫数据存放目录等则需填写于爬虫配置文件中。第二步,使用代理服务器。使用代理服务器的主要目的是通过IP欺骗的形式抓取网站信息,因为固定的IP在短时间内频繁访问一个网站,服务器会判断出这个IP是机器爬虫而将其屏蔽,影响到正常抓取数据。具体设计时要将代理服务器的账号、密码填写在爬虫属性文件中。第三步,构造登录请求,获取Cookie。服务器会在用户第一次访问时将用户状态记录下来并向客户端发送一小段文本信息,即Cookie,保存这个Cookie,服务器会据此判断用户的登录状态,这就无需用户频繁登录网站。第四步,发送页面请求。本系统采取根据URL爬取及根据关键字爬取两种方式采集社交网络数据,这两种方式最终都是通过获取网页的URL发送页面请求。第五步,解析超文本标记语言(Hyper Text Markup Language,HTML)页面,并存储数据。应用WebCollector集成的Jsoup对HTML页面进行解析,抽取系统需要的文本数据存储于json格式文件中,注意在爬虫配置文件中要对json格式文件的最大行数进行设定,且单个文件只能存储于固定行数,以便于后续预处理。第六步,进行下次爬取。抽取需要爬取的URL后要对其进行判断,如果是相对URL则要转换为绝对URL,待爬取的URL加入待爬取队列,网络爬虫再针对待爬取队列中的URL进行下一次爬取[3]。
在采集社交网络平台数据时,网络爬虫易受到噪声干扰,从而采集到残缺的、错误的、无关的数据信息,因此要针对这部分采集到的初始数据进行预处理,具体步骤如下:第一步,对数据进行定时扫描。本研究采用Java Timer定时器对存放json格式文件的文件夹进行定时扫描,将文件名结尾为.success.json的文件转换成.load.json结尾的文件格式。第二步,针对重复的、无价值的空数据等进行预处理。剔除空格、HTML标签等信息;如果采集到空的文本数据,系统也会自动剔除。第三步,针对多源异构数据进行融合,对其进行匹配、整合。明确表示出帖子的属性内容、关系内容、用户属性内容等信息。第四步,将预处理好的数据存储于数据库中,并进行同步索引构建及内容情感分析。
社交网络平台每天都会产生大量的数据信息,因此信息检索是系统的重要组成部分。本研究采用全文搜索引擎Lucene构建倒排索引进行全文检索,倒排索引是相对于正向索引而言,其通过构建单词-文档矩阵,根据单词快速获取与其相关的文档列表,实现从待检索数据中提取信息并合理组织存储结构,大大提高了检索效率,该技术可提供创建索引、查询索引等应用程序接口。全文检索最大的优势在于可以快速检索海量数据,并按照相关度对搜索结果进行排序,以更好地满足用户需求。具体步骤如下:第一步,创建文档对象。文档包括帖子内容、发布位置、时间、类型及相关链接等。第二步,分析文档。主要分析帖子的文本内容,注意将一些普通的、无意义的单词去除,将余下的单词进行词根化处理,并将大写字母转换为小写。第三步,创建索引。将词根化处理好的所有单词构建成一个词典创建索引,根据字母顺序排序,构造单词-文档矩阵,通过词语找到文档,完成倒排索引的创建。第四步,索引查询。索引查询的过程就是信息搜索的过程,用户可以通过查询接口实现关键词、人物信息、时间信息、来源、排除关键词等相关检索操作[4]。
数据分析与可视化模块的主要功能包括内容分析、行为分析、用户画像及发现热点话题等。其中内容分析主要采用卷积神经网络算法对文本信息进行情感分类,其具有局部感知、权值共享的特点,可以大幅减少训练参数的数目,提高计算效率。卷积神经网络包括卷积层与池化层,其中若干卷积核组成了卷积层,可用于提取输入的不同特征,池化层常用的有最大池化法和平均池化法,其主要作用是减少特征图,将数据信息最显著的特征提取出来。卷积层使用3种不同大小的卷积核提取文本不同粒度的特征,池化层对卷积层获取的特征进行池化处理,降低特征维度,保证提取到的特征具有最强表达能力[5]。
行为分析主要是对用户的转发、点赞、评论、发布帖子的行为进行描述、统计、分析,将用户的操作过程直观地记录下来,整理、统计用户之间的关系,检测其行为轨迹。用户在访问社交网络平台时,社交平台启用的地理定位功能可以获取用户的地理位置信息,根据用户在平台上的活动时间、地理位置信息,可以检测到用户的行为轨迹。当然,社交平台都会为用户提供是否暴露地理位置的选择,有些用户可能不愿意暴露自己的地理位置,因此检测用户行为轨迹时要先判断其地理位置信息的内容,如果用户的操作行为不包含地理位置信息,系统只会在时间轴上显示帖子信息[6]。
用户画像主要对用户信息进行标签化处理,系统不仅会展示出用户的头像、昵称、地点、简介、个人网址等相关内容,而且会对用户发布的信息内容进行整合,抽取其中的关键词,用以确定用户所关注的话题及表达的观点。用户画像的实现包括以下5个步骤:第一步,搜索用户信息。包括昵称、简介及所处位置。第二步,搜索用户所发布的信息。如果帖子数量过多,系统会抽取1 000条相关信息进行分析。第三步,对用户发布的信息进行合并、预处理。主要是去除噪声信息。第四步,抽取关键词。将所有预处理好的数据视为一个大文档,计算其单词TF值,获取单词的IDF值,根据单词的TF-IDF值进行排序,数值较高的单词即为抽取到的关键词。第五步,展示用户画像。将用户特征用相关信息及关键词标签化构建出用户画像展示在系统前端界面。
发现热点话题的具体过程如下:第一步,对用户发布的信息文本进行预处理。同样是分词、去除噪声信息等。第二步,对文本信息进行向量化处理。其过程类似于关键词抽取的过程,即计算单词的TF-IDF值,将其作为单词的词向量连接起来,实现文本信息的向量化处理。第三步,文本聚类。采用K-Means聚类算法,先从文本信息数据中随机选K个对象作为初始聚类中心,然后计算出数据对象到聚类中心的距离,再重新计算K个聚类中心作为新的聚类中心,重复上述操作,直至聚类中心不再变化。第四步,抽取关键词。与用户画像功能中抽取关键词的操作相同,即根据单词的TF-IDF值进行排序,权重大的单词即为关键词。第五步,展示热点话题。系统前端会通过绘制聚类图展示信息数据,并展示热点话题。
随着社交网络的普及与发展,社交网络每天都会产生海量数据,这些数据与人们的日常生活息息相关,具有实用价值、经济价值及社会价值,对这些数据进行分析具有重要意义。本研究提出的社交网络数据分析系统实现了数据采集、数据预处理及融合、信息检索、数据分析与可视化等功能。还有一些问题有待解决,例如用户行为分析未针对用户的行为进行深层分析,后续需要通过深度学习技术对这些数据进行挖掘。