一、引言
微博即微型博客(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的數據挖掘算法應該具有并行性;跀祿⻊澐值姆椒ㄊ瞧毡椴捎靡环N并行處理的方法:首先將數據集合劃分為適當的子塊,然后在各個子塊上用傳統的挖掘算法(如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.vmgcyvh.cn/
本文標題:基于Hadoop的微博信息挖掘