許云峰,張 妍,趙鐵軍
(1.河北科技大學信息科學與工程學院,河北石家莊 050018;2.河北省通信建設有限公司,河北石家莊 050021)
基于云計算的商業情報采集系統
許云峰1,張 妍1,趙鐵軍2
(1.河北科技大學信息科學與工程學院,河北石家莊 050018;2.河北省通信建設有限公司,河北石家莊 050021)
商業情報采集系統不同于傳統的搜索引擎系統,情報具有時效性、針對性等特點,傳統搜索引擎中的數據分類和聚類技術不能完全滿足商業情報采集過程中對時效性和針對性的特殊需求。提出一種商業情報采集解決方案,在云計算環境中采用貝葉斯分類算法和多種網頁去重、提取等算法,實現對互聯網數據的實時性抓取、分析、分類、聚類,形成對用戶全方位立體化的情報本體,抓取的海量數據采用分布式文件系統存儲,采集的情報用基于云的數據庫CouchDB存儲。
情報采集;搜索引擎;分類;聚類;云計算
互聯網數據浩如煙海,信息瞬息萬變,如何在其中找到有價值的商業情報,不僅需要用戶具備良好的情報意識,更重要的是擁有得力的搜索工具,這樣可以使情報采集工作事半功倍。由于商業情報具有針對性、時效性等特點,傳統搜索引擎技術中單純的數據分類和聚類算法已不能滿足商業情報搜索的需求[1]。筆者提出一種商業情報采集解決方案,可滿足情報采集系統中對信息的時效性和針對性的需求。
系統部署見圖1。實時情報采集系統服務器集群部分由8臺服務器構成,每個節點上都運行FreeBSDUNIX系統,并且配置了Hadoop環境。Hadoop是Apache軟件的頂級項目,其包括很多子項目,如Hadoop Core,Hbase,Hive,pig,ZoomKeeper等[2]。其中Hadoop Core為利用普通PC硬件構建云計算環境提供基本服務,并且為開發云上的應用提供了基本API。Hadoop Core主要由HDFS和MapReduce模型構成。用戶可以采用PC機、筆記本電腦和智能手機等多種手段獲取情報信息,多個部門之間可以信息共享,情報互通,多地域、多終端之間一起采集情報。

圖1 基于云計算的情報采集系統部署Fig.1 Cloud-based intelligence gathering system deployment diagram
系統技術架構見圖2。該系統由5個功能模塊構成:分布式文件系統和MapReduce框架、Web頁面采集、信息處理、文件索引、情報模式庫構建。其中分布式文件系統和MapReduce框架模塊主要是架構在Hadoop平臺上。Hadoop平臺包括HDFS和MapReduce兩大部分[3]。這些基本架構保證了該系統具有高容錯性及對數據讀寫的高吞吐率,能自動處理失敗節點。Web頁面采集模塊采用多主機、多線程并行下載,將網頁保存到HDFS信息處理模塊并將網頁預處理,提取核心文本進行文檔分類,識別有價值情報信息,然后情報入庫。根據輸入的情報樣本庫信息,情報模式庫模塊提取特征模式存入模式庫,供信息處理模塊調用。文本索引模塊對情報庫CouchDB進行索引,然后供用戶查詢。該系統在云計算環境中實現了貝葉斯分類算法和多種網頁去重、提取等算法,實現對互聯網數據的實時性抓取、分析、分類、聚類,形成對用戶全方位立體化的情報本體,同時抓取的海量數據采用分布式文件系統存儲,采集的情報用基于云的數據庫CouchDB存儲。因采集的情報信息并不是結構化數據,且互聯網數據良莠不齊,所以信息存儲在傳統的關系型數據庫里,就會在存取過程中有很多麻煩。而采用CouchDB數據庫存儲這些情報信息就非常方便,而且增刪改查更加便捷。另外采用CouchDB數據庫可以讓更多的客戶端和服務器采用http訪問情報庫,從而提高管理和維護的效率。
本系統關鍵技術是讓傳統搜索引擎中常用的網頁抓取、分析、分類、聚類等技術手段,在云計算環境中得以實現,提高運算速度并且滿足了情報采集對時效性、針對性的需求,甚至可以達到情報信息采集的實時性。而對中文分詞、分類、聚類的MapReduce化(即云環境下的算法實現),更是本技術的關鍵。
中文分詞的MapReduce化的關鍵是中文分詞組件在云計算環境里的分發。筆者選用IKAnalyzer這個開源的JAVA中文分詞工具包,將其通過JobClient分發到Hadoop的各個節點中去。將IKAnalyzer的jar包解壓縮,然后把它和源程序的類文件打包到一個jar包中。這種方法可以用Eclipse的Export功能輕松實現。
系統主要采用BAYES分類算法。分類器的輸入是經過處理后的核心文本,為了唯一確定這些文本,文本的名字是網頁的URL。
MapReduce化的流程是:1)核心文本的預處理,處理成由多行“URL\t核心文本”構成的一個大文件;2)在Map中對核心文本進行分類,最后獲得URL和分類的鍵值對。Map(URL,核心文本)→(URL,分類名);3)在Reduce中對URL和分類名鍵值對進行統計。
本文中數據聚類采用k-means算法。該算法的MapReduce化分為4個階段:核心文本預處理;Map階段;Combine階段;Reduce階段[4]。并且文中還會用到TF/IDF權重,用余弦夾角計算文本相似度,用方差計算2個數據間歐式距離等相關算法[5],鑒于篇幅有限,在這里不再贅述。

圖2 系統技術架構圖Fig.2 System technical architecture diagram
1)核心文本預處理:首先根據核心文本生成一個多行的“URL\t term1TF/IDF;term2TF/IDF;term3 TF/IDF;…”構成的大文件。
2)Map階段:構建1個全局變量Centers,長度為用戶選擇的分類數,并把中心點賦給Centers,中心點為隨機選中的任何一行文本。Map程序調用用戶自定義的SequenceFileInputFormat讀取value值。計算每一行文本與每一個聚類中心的距離,并將最小距離的聚類ID保存下來。構造〈key,value〉的形式傳遞給Combine階段的處理,其中key是聚類中心點離每行文本的value值最近的聚類ID。
3)Combine階段:首先初始化一個向量類型的NewCenter來儲存新的中心點。將局部的具有相同聚類ID的文本數據進行距離比較,選擇新的中心點,然后存儲到NewCenter中。構造〈key,value〉的形式傳遞給Reduce階段的處理,其中key為聚類ID。
4)Reduce階段:首先初始化一個向量類型的NewCenter_all來儲存新的中心點。將所有節點的具有相同聚類ID的文本數據進行距離比較,選擇新的中心點,然后存儲到NewCenter_all中。構造〈key,value〉,其中key為聚類ID,value為新的中心點。
5)判斷每一行文本數據是否離唯一的聚類中心點距離最近,即判斷是否收斂,如果是則程序退出,聚類完成,否則返回第2步,繼續執行,直到收斂為止。
整個流程可以用圖3表示。
由于采集的情報信息并不是結構化數據,字段長度不一,所以數據存儲在傳統的關系型數據庫里會使存取過程中有很多麻煩,另外8個節點并行采集的數據在存儲時對數據庫的并發連接可以達到數百個,這樣傳統的關系型數據庫已不能滿足存取需求[6]。本系統采用云架構的數據庫CouchDB,該數據庫采用Erlang并行運算語言開發,特點就是支持并發數據連接,同時數據節點可根據需求輕松擴展,并且CouchDB中的數據記錄可以是由任意個字段構成,因此采用CouchDB數據庫存儲情報信息非常方便。另外采用CouchDB數據庫可以讓更多的客戶端和服務器采用http進行訪問,從而提高管理和維護的效率。
測試環境:Dell R410服務器2臺,每臺分別部署Vmware vSphere Hypervisor。在每臺服務器上,分別安裝4個FreeBSD操作系統。在每個FreeBSD系統上面,部署安裝Hadoop0.2。Dell R410的硬件配置:CPU Intel Xeon E5504,2GHz主頻,4GB內存。測試環境架構見圖4。
筆者對18 103個中文文本進行情報采集,首先進行中文分詞,然后進行分類,再將分類識別后的有價值情報信息進行文本聚類,以符合用戶的需求。測試中分別用5,6,7,8個節點的云計算環境,整個流程的運行時間依次為798s,674s,594s,618s。可見隨著節點的增加,運行相同應用程序的時間線性減少。但是到8個節點的時候,運行時間有所加長。這是因為文中采用的是虛擬節點,因此網絡開銷就會加大,造成在8個節點時運行時間有所加長。如果采用物理節點,這個現象出現的可能性會變小。

圖3 聚類算法的MapReduce化Fig.3 Clustering algorithm based MapReduce

云存儲實驗中,采用2臺相同配置的服務器Dell R410,分別安裝Mysql和CouchDB,對這2個庫進行插入實驗,將分類后有價值的情報100萬條分別插入Mysql和CouchDB。Mysql耗時為79.965s,占用2.3 GB左右的存儲空間,CouchDB耗時為58.362s,占用1.8GB左右的存儲空間??梢奀ouchDB比Mysql的插入效率要高,占用存儲空間比Mysql要少。如果存入的100萬條數據是字段統一的,Mysql要比Couch-DB耗時要少,但是在插入Mysql前要根據數據庫中表的字段對數據進行格式化,這個過程相當耗費系統時間,所以導致Mysql最終要比CouchDB耗時多。
采用云計算技術,隨著節點增加,情報信息的采集速度應該是線性提高的,當節點達到一定的數量時,可以滿足情報信息對時效性、針對性的需求,甚至可以達到情報信息采集的實時性。
采用基于云計算的數據庫CouchDB可以解決情報信息的非結構化問題,同時CouchDB數據庫的節點可以根據需求不斷擴展,滿足用戶對信息存取速度的需求。
[1] 張立巖,呂 玲.基于最大熵算法的全文檢索研究[J].河北科技大學學報(Journal of Hebei Universty of Science and Technology),2009,30(2):112-115.
[2] 林清瀅.基于Hadoop的云計算模型[J].現代計算機(Modern Computer),2010(7):114-116.
[3] 周軼男,王 宇.Hadoop文件系統性能分析[J].電子技術(Electronic Technology),2011(5):15-16.
[4] 江小平,李成華.k-means聚類算法的MapReduce并行化實現[J].華中科技大學學報(自然科學版)(Journal of Huazhong University of Science and Technology(Natural Science Edition)),2011,39(S1):120-124.
[5] 趙衛中,馬慧芳.基于云計算平臺Hadoop的并行k-means聚類算法設計研究[J].計算機科學(Computer Science),2011,38(10):166-168.
[6] 郝 偉,楊國霞.專業搜索引擎搜索結果融合算法研究[J].河北科技大學學報(Journal of Hebei Universty of Science and Technology),2011,32(4):355-358.
Cloud-based business intelligence gathering system
XU Yun-feng1,ZHANG Yan1,ZHAO Tie-jun2
(1.College of Information Science and Engineering,Hebei University of Science and Technology,Shijiazhuang Hebei 050018,China;2.Hebei Communication Construction Company Limited,Shijiazhuang Hebei 050021,China)
The business intelligence gathering system is different from the traditional search engine system.The data classification and clustering techniques of the traditional search engine can not fully meet the special needs of timeliness and pertinence in the business intelligence gathering process.This paper presents a solution to business intelligence gathering,by using Bayesian classification algorithm and deleting duplicated web pages algorithms in the cloud computing environment to achieve internet data's real-time capturing,analysis,classification and clustering,and form the omnibearing and three-dimensional intelligence noumenon of users.The amount of data captured is stored in a distributed file system.The gathered information is stored in the cloud database CouchDB.
intelligence gathering;search engine;classification;clustering;cloud computing
TP391.1
A
1008-1542(2012)02-0161-05
2011-11-04;責任編輯:陳書欣
河北省科技支撐計劃資助項目(10213588)
許云峰(1980-),男,河北滄州人,講師,碩士,主要從事網絡安全、神經網絡等方面的研究。