一、引言
微博即微型博客(micro-blogs),是一种允许用户及时更新并可以公开发布简短文本(通常在140字左右)的博客形式。微博的快速发展使得任何人都可以成为微博用户,成为一个区分于传统媒体的“自媒体”。这种用户驱动的信息创造模式产生信息的速度快,信息量在逐级的传播中变得海量。对微博信息进行挖掘和分析,关注其中的社会热点话题,可探寻其规律并预测动向,分析热点事件的舆论趋势,特别是微博信息传播的实时性可以应用于突发性社会事件和自然事件的监测和预警。
二、国内外研究现状
通过对微博信息的挖掘,可以获取相关的商业信息,人际关系信息,热点新闻,趋势信息等内容,以及对历史事件进行相关的分析总结。
进行微博信息挖掘,需要处理海量的用户信息和微博内容。把Hadoop应用于数据挖掘领域,国内外学者也有所探索,文献[2]提出了一种基于数据分割技术和遗传算法的混合算法DS-PGA,该算法结合了数据分割技术的分布式处理和遗传算法的全局搜索最优解的优点,使得改进后的算法更适合在分布式计算环境中执行。文献[3]针对云计算环境下的关联规则挖掘算法展开研究,对Apriori算法进行了改进,给出了改进的算法在Hadoop中的Map/Reduce编程模型上的执行流程;通过一个简单的频繁项集挖掘实例展示了改进的算法的执行效率及实用性。
从国内外研究现状可以看出,对微博信息的挖掘还处于起步阶段,本文将结合微博数据挖掘的实际需求,利用分布式和虚拟化技术,设计并实现基于Hadoop的微博信息挖掘系统,展示挖掘的相关信息。
三、基于Hadoop微博信息挖掘系统设计
Hadoop主要由HDFS、MapReduce和Hbase组成。它是一个分布式系统基础架构。Hadoop的特性使得Hadoop可以用于处理海量数据的分析和挖掘处理。
微博信息挖掘系统设计分为四个模块:数据获取,数据存储,数据挖掘和数据展示,系统架构设计如图1所示,本节将讨论各个模块需是实现的功能及其技术路线。
图1 基于Hadoop的微博信息挖掘系统框架结构
(一)数据获取
数据获取指从微博平台中获取微博信息,包含用户信息,微博内容等,获取方式包含两种:API方式和Web爬虫方式。API方式指通过调用各微博服务提供商提供的接口获取微博信息,而Web爬虫方式指通过访问微博平台的WEB页面,解析页面相关内容,获取所需信息。
系统通过Web爬虫的方式获取用户的微博ID,然后再使用微博服务提供商提供的API进一步获取用户的详细信息和微博内容,这种做的优点是通过Web爬虫的方式过滤掉了非认证用户,同时尽可能的减少了API调用次数,将有限的API调用资源用于获取用户的微博内容。
数据获取模块的架构设计如下:
图2 数据获取模块的架构设计
(二)数据存储
由于需要处理海量数据,数据存储将采用Hadoop的HDFS。存储系统采用二个开源框架搭建(Hadoop、Hive),其中Hadoop提供分布式系统基础框架,Hive提供基于SQL语句的数据查询。
(三)数据挖掘
为了充分利用Hadoop的分布式特性,基于Hadoop的数据挖掘算法应该具有并行性。基于数据划分的方法是普遍采用一种并行处理的方法:首先将数据集合划分为适当的子块,然后在各个子块上用传统的挖掘算法(如Aprior算法)进行处理,最后将各个子块上的结果进行合并。
数据挖掘一般处理过程包括:数据清理->数据集成->数据选择->数据变换->数据挖掘->模式评估->知识表示。在做数据挖掘之前很重要的一步就是数据转换,即将数据变换或统一成适合挖掘的形式,例如经过数据仓库汇总或聚集。这里采用Hive来完成这项工作。Hive是一个建立在Hadoop之上的类似数据仓库的结构,它提供了可以非常简单的数据ETL(extract-transform-lOAd)的工具,也提供了往Hive框架中装入数据的机制,而且提供了对存储在HDFS中的大数据集的查询和分析功能。Hive定义了简单的类SQL查询语言,称为HQL,它允许熟悉SQL的用户查询数据。同时,HQL允许熟悉MapReduce开发者的开发自定义的Mapper和Reducer来处理内建的Mapper和Reducer无法完成的复杂的分析工作。
(四)数据展示
数据展示是指将数据挖掘的结果用WEB页面的方式进行展示。数据定期进行挖掘操作,挖掘的结果将单独存放在MYSQL数据库中,数据展示模块直接与MYSQL数据库进行交互。这样部署的优势在于将数据存储和数据挖掘模块分开,降低模块之间的耦合度。
四、热点话题的获取
热点话题是指在特定的时间段内出现频率较高或传播范围较广的主题特征词。获取热点话题可以关注微博讨论热点,从中获知有价值的相关信息。热点话题的获取包括分词处理,热点词元获取和话题提取三个步骤,分别描述如下:
(一)分词处理
分词指的是将一个汉字语句切分成一单独的词语。由于微博可能有上百字的内容,为了获得话题,需要对内容进行分词。常用的分词工具较多,这里选取IK Analyzer 3.0作为热点话题获取的分词工具,IK Analyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。IK Analyzer支持自定义停词表和词库,可以具有更大的扩展能力。
(二)热点词元获取
公式(1)中,Wij表示在文档dj中,关键字 所占的比重。 由其Wij对应的TFij值和IDFi值计算得出。这两部分的计算公式如公式(2)和公式(3)所示。在公式(2)和公式(3)中,Fij表示关键字Ki 在文档dj中的出现频率,文档dj中包含T个关键字,N表示文档总数, Nj表示包含关键字Ki的文档总数。
公式(1)中, 表示在文档 中,关键字 所占的比重。 由其对应的 值和 值计算得出。这两部分的计算公式如公式(2)和公式(3)所示。在公式(2)和公式(3)中, 表示关键字 在文档 中的出现频率,文档 中包含 个关键字, 表示文档总数, 表示包含关键字 的文档总数。
在热点话题提取算法的应用场景下,整个数据集中大量微博中出现的主题特征词也应该被识别出来,而TF-IDF算法可能会忽略这些热点词。所以在短文本主题特征词提取的场景下,TF-IDF并不适合提取主题特征词,微博信息挖掘系统设计的主题特征词提取算法如下所示:
公式(4)中的 表示词元 在当天的所有微博中的词频总数, 和 分别表示微博j的转发数和评论数。需要指出的是,热点词元的获取的时间是以一天为基本单位的,在对微博内容分词时,通过添加停词库,已去除了干扰主题词提取的词汇。在获得当天微博中所有词元的词频后,对词频进行排序,然后获取TOP200的词元,作为当天的热点词元库,然后分别对每条微博做主题特征词提取,如公式(6)所示。每条微博取5个词元做主题特征词。
(三)话题提取
在获取了每条微博的5个主题特征词后,需要提取当天的热点话题,在话题提取时,不关注内容过短(长度小于15)的微博,因为这些微博过短,没有形成语句来描述一个事件,更多是类似“我在吃三明治”之类的无意义的嘀咕。
这里采用分布式Apriori算法来进行主题特征词的关联规则频繁项集挖掘。Apriori算法的基本思想是:首先找出所有的频集,这些项集出现的频繁性至少和预定义的最小支持度一样。然后由频集产生强关联规则,这些规则必须满足最小支持度和最小可信度。然后使用前面找到的频集产生期望的规则,产生只包含集合的项的所有规则,其中每一条规则的右部只有一项,这里采用的是中规则的定义。在Hadoop中应用Apriori算法时,需要对Apriori算法进行改进,使之能够充分利用MapReduce框架的优势进行计算。这里采用文献[4]提出的基于云计算的Apriori算法来做主题词的关联分析。
五、实验结果及分析
挖掘系统采用云计算和虚拟化技术,搭建了一个小规模的Hadoop集群,集群共计有6个节点,集群配置情况如下:master节点双核CPU、4G内存;slave节点双核CPU、2G内存。CPU型号为Intel Xeon E5606。
(一)热点获取
这里选取2011年12月30的获取的微博数据,微博数为151684条。通过热点话题的获取后,取得前10话题如表1所示:
表1 热点事件列表
从挖掘的结果看,挖掘的热点事件基本反映了微博的热点内容,例如年末的“年终奖”、“春晚”等。
(二)事件跟踪
对热点事件,可以通过跟踪其热点情况,及时了解事件的趋势。这里以日本大地震为例,选取时间段2011年3月1日至2011年4月15日共计3375210条微博,其中讨论“日本”、“地震”的相关微博有120169条,通过统计和挖掘,得到事件的发展趋势图如下所示:
图3 日本地震热点趋势图
六、结束语
本文设计了基于Hadoop的微博信息挖掘系统,并设计了热点事件的挖掘算法,通过在Hadoop分布式平台上验证,获取了期望的挖掘结果,证明了平台和算法的可行性。对Hadoop应用于数据挖掘领域提供了较好的参考意义。
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:基于Hadoop的微博信息挖掘