李 晨,楊子江,朱世偉,于俊鳳
(山東省科學院 情報研究所,山東 濟南 250014)
基于Hadoop的網絡輿情監控平臺設計與實現
李 晨,楊子江,朱世偉,于俊鳳
(山東省科學院 情報研究所,山東 濟南 250014)
文中設計并實現了一種基于Hadoop的網絡輿情監控系統。該系統以HDFS作為底層存儲系統,在其上構建基于HBase的分布式數據庫對輿情信息進行統一存儲管理。首先利用基于MapReduce的分布式網絡爬蟲進行數據抓取,以解決單機爬蟲效率低、可擴展性差等問題;其次采用Canopy結合K-means的二次聚類算法,克服單一K-means聚類算法的不足,以提高文本聚類的效率和準確度;最后實現基于查詢的話題追蹤策略,對熱點話題進行有效跟蹤分析。仿真實驗表明:Canopy-Kmeans聚類方法比傳統K-means方法漏報率、誤報率分別降低1.24%、0.09%,最小標準代價降低1.681%。系統通過提供可視化輿情分析報告,為企業或單位及時掌握輿情熱點、制定輿情策略提供科學、系統的技術支持。
Hadoop;MapReduce;輿情監控;文本聚類;熱點發現;話題跟蹤
隨著信息技術以及互聯網的快速發展,其產生的海量、異構、動態的新聞數據使得人們很難快速、高效地找到用戶感興趣的新聞。如何對這些新聞數據進行準確地挖掘與分析,實現對新聞話題的持續追蹤和輿情預測已成為目前輿情分析中一個極其重要的研究方向。
傳統的話題追蹤和輿情監控系統通常是基于昂貴的工作站或者服務器集群[1],采用流量鏡像的方法監控信息源,并結合傳統的數據挖掘算法對獲取的數據進行文本統計與分析。基于流量鏡像方法雖然可以比較全面地收集各種網絡信息,但也存在成本高、可擴展性差以及容易產生單點通信故障等問題。同時,由于互聯網信息的爆炸式增長,產生海量的網絡信息,如何存儲并處理這些海量、異構的非結構化信息便成了一個新的研究課題。Hadoop[2]的產生為這一課題提供了有效的解決方案。Hadoop技術對海量信息的存儲與處理提供了高效、可靠、可擴展的解決辦法。
在此基礎上,文中設計了一個基于Hadoop的網絡輿情監控系統。該系統采用分布并行方式對互聯網信息進行采集,采用基于查詢的技術進行話題追蹤和輿情監控,通過基于Mahout[3]實現的樸素貝葉斯算法對新聞話題進行分類;并使用基于Canopy算法[4]和K-means算法[5]相結合的聚類方法對新聞話題進行層次聚類,最后結合報道數量、來源以及報道速度等因素實現對新聞熱點話題的量化與跟蹤。通過將該系統應用到山東省科學院輿情分析平臺,驗證了該系統可以有效地實現對新聞話題的追蹤和網絡輿情的預測。
網絡輿情監控平臺主要是針對海量數據進行網絡輿情分析[6],其中涉及到的關鍵內容有:網頁信息獲取、文本分類、文本聚類、熱點和敏感話題發現以及話題跟蹤等內容。對此,國內外的主要研究現狀如下:
文本分類方面,SVM的產生是近年來文本分類領域最重要的進展之一,雖然SVM在大規模數據集上的訓練收斂速度較慢,但是它的分隔面模式有效地克服了樣本分布、冗余特征以及過擬合等因素的影響,具有很出色的泛化能力,有文獻已經指出SVM在效果和穩定性上具有相當的優勢。Pang(2002)等學者比較支持向量機(SVM)、最大熵(ME)、樸素貝葉斯(NB)等算法在語義傾向上的文本分類效果,實驗結果發現,SVM的文本分類準確程度達到約80%,屬于較好的一種。
聚類方面,為了適應語料增長的特性,卡內基梅隆大學和BBN公司分別使用Single-pass算法和增量K-means算法進行聚類。賓夕法尼亞大學在計算文檔之間的相似度時使用IDF加權的余弦值,以此來提高聚類質量[7]。Dragon為解決在線識別問題,提出一種利用K-means聚類方法中的第一個迭代過程來確定報道所屬話題類[8]。IBM采用兩層聚類策略進行話題分析。熱點發現采用TDT(話題檢測與追蹤)中話題檢測的相關技術,它主要以原始新聞語料作為研究對象,計算時通過將相關參數進行量化得到最終結果,量化的參數一般有話題的報道頻率、話題的分布率、話題的時間屬性等[9],還有一些將報道點擊、評論、來源等作為計算參數進行量化。
話題跟蹤方面,可以分為兩種跟蹤策略:基于知識的話題跟蹤和基于統計的話題跟蹤?;谥R的話題跟蹤策略比較有名的是Watanabe基于日語新聞廣播所研發的話題跟蹤系統?;诮y計的話題跟蹤策略,比較有代表性的是基于分類的話題跟蹤,如卡內基梅隆大學在對話題跟蹤評測中使用決策樹和KNN算法。
在輿情分析研究過程中國內外也產生了很多優秀的軟件產品,比如:國外有Dave等研發的ReviewSeer,Liu等研發的OpinionObserver,Gamon等研發的Pulse系統,Wilson等研發的OpinionFinder。國內有北大方正的智思輿情預警輔助決策支持系統,中科院實施的天網工程,TRS公司研發的網絡輿情情報監控體系,等等。
文中系統在現有工作研究的基礎上,針對新聞網頁、論壇、博客以及微博進行數據挖掘研究,利用Hadoop技術平臺,將網絡輿情信息采用HDFS[10]進行存儲,并通過MapReduce[11]編程模式進行分析,實現快速發現輿情熱點,并進行情感分析與熱點話題跟蹤,為后期的進一步監控提供基礎信息保障。
Hadoop包含大量工具,這些工具可以協同工作,來完成多種任務。Hadoop可以歸類成一個完整的生態系統,包含大量的組件,從數據存儲到集成、數據處理及數據分析等。HDFS作為Hadoop生態系統的基礎組件,它可以將大量數據分布到計算機集群之上,實現一次寫入,多次讀取。Hadoop的主要執行框架是MapReduce,它是一個用于分布式并行數據處理的編程模型。HBase[12]是一個構建于HDFS之上的面向列的NoSQL數據庫,提供對海量數據的快速讀寫能力,它利用Zookeeper作為自己的分布式協調工具。Oozie作為一個可擴展的工作流系統,可以協調多個作業的執行。更高層的抽象Pig和Hive可以完成數據分析和類似SQL的數據查詢。
文中設計的基于Hadoop的網絡輿情監控系統主要包括四個模塊:分布式信息采集、信息存儲、云分析以及輿情信息展示。分布式信息采集作為系統核心組件主要工作是抓取互聯網信息,對抓取的互聯網信息進行處理,然后進行存儲,為上層分析提供數據支持。系統采用HDFS作為底層數據存儲介質,在其之上構建更高層次的HBase和Hive進行數據管理。云分析采用分布式編程設計對原始網頁信息進行處理,包括:文本分類、文本聚類、熱點計算以及話題跟蹤等?;谠朴嬎愕木W絡輿情監控系統總體架構見圖1。
3.1 分布式信息采集
原始信息采集是建設輿情監控系統的首要任務,該系統主要采用分布式網絡爬蟲進行信息抓取。采用定時定向的信息采集方式,由采集控制器進行統一調度,通過采集控制器讀取相應的站點信息,包括:URL、站點模板等信息,之后就可以利用分布式網絡爬蟲進行信息采集。系統采集架構見圖2。

圖1 系統架構圖

圖2 系統采集架構圖
3.1.1 網頁信息抽取
采集器采集到的原始網頁內容往往比較繁雜,可能會包含大量的廣告、無用鏈接以及其他的噪音信息,噪音信息的存在不便于對網頁的內容進行分析,所以首先需要進行網頁信息抽取[13-15]。在該系統中,采用了基于行塊分布函數的通用網頁正文抽取方法,該方法無需考慮網頁HTML結構,無需構建傳統DOM樹,可以從雜亂的網頁源碼中抽取出有效的、高質量的文本信息。
算法流程為:首先,通過正則表達式去除所有HTML標簽,只保留文本信息,同時去除標簽之后的空白信息也要保留,保留文本成為Ctext;其次,定義行塊。以Ctext中的行號為軸,取其周圍K行,稱為一個行塊Cblock,行塊i是以Ctext中行號i為軸的行塊;再次,定義行塊長度。求出一個Cblock行塊中去除所有空白符后的字符總數作為該行塊的長度;然后,定義行塊分布函數。以Ctext每行為軸,共有LinesNum(Ctext)‐K個Cblock,做出以[1,LinesNum(Ctext)‐K]為橫軸,以其各自的行塊長度為縱軸的分布函數;最后,分析行塊分布函數分布區域從而獲得網頁正文信息。
3.1.2 網頁信息預處理
網頁信息預處理模塊包括:分本分詞、停用詞過濾、文本特征選擇等。系統采用具有詞性標注功能的FudanNLP進行文本分詞,為了降低維度,在分詞的過程中只選取名詞、動詞以及形容詞作為最終的分詞結果。處理完之后,將原始網頁信息和分詞信息存入原始網頁信息庫,為云分析提供原始素材。
3.1.3 網頁抓取流程
系統抓取流程共包括四步:首先獲取待抓取URL列表,AccessDBDriver從傳統數據庫中讀取URL列表,然后將該列表寫入HDFS作為CrawlDriver的Map任務輸入。第二步,CrawlDriver的Map任務讀取待抓取URL列表,將該列表發送到Reduce任務,Reduce任務進行網頁信息抓取。第三步,解析網頁內容。ParserDriver進行網頁信息抽取和網頁信息預處理。第四步,利用TransferDriver將解析過的原始網頁信息和分詞信息存入Hbase庫中。
3.2 云分析
云分析模塊包括文本分類、文本聚類、熱點話題發現和熱門話題跟蹤等。文中采用開源Mahout系統實現基于MapReduce的分布式文本分類和聚類算法。
3.2.1 文本分類
文中采用Mahout基于樸素貝葉斯[16]的文本分類算法,其分類具體流程是:
(1)文本序列化。將原始網頁信息轉化為Mahout可以直接使用的二進制SequenceFile文件,該步驟利用Mahout的seqdirectory命令實現。
(2)序列向量化。將序列化好的SequenceFile文件利用TF-IDF生成向量空間模型,同時在該操作中指定分詞器。該步驟利用seq2sparse命令實現。
(3)向量劃分。該步驟通過把向量化的文件隨機分成兩部分,一部分用來訓練,另一部分用來測試,使用的命令是split。
(4)訓練并生成模型。用第三步隨機分割的訓練數據作為Naive Bayesian的輸入進行訓練并生成模型,使用trainnb命令完成。
(5)測試訓練集。用第三步的測試數據作為輸入對生成的模型進行測試,使用testnb命令實現。
3.2.2 文本聚類
通過聚類可以將一組文章或文本信息進行相似性的比較,將比較相似的文章或文本信息歸為同一類簇。文中采用Canopy和K-means結合的文本聚類方法。
Canopy算法的基本思想是:將數據集向量化,然后放到一個集合list中,同時設定兩個距離閾值T1和T2,循環從list中去取一個點,作為一個聚類中心,放到centerlist,并從list中移除該點,循環從centerlist中比較與周圍的點與閾值之間的關系,小于最小T1閾值,說明兩個值相似,放到一個聚類中,并從list中移除;如果大于最大閾值T2,那么就單獨作為一個聚類中心,并從list中移除;否則不加到各個聚類中心去,但依然保留在list中,迭代直至list中元素為null,算法結束。
K-means聚類算法是一種基于樣本間相似性度量的間接聚類方法?;舅枷胧浅跏茧S機給定K個簇中心,按照最鄰近原則把待分類樣本點分到各個簇中。然后按平均法重新計算各個簇的質心,從而確定新的簇心。一直迭代,直到簇心的移動距離小于某個給定的值。傳統K-means算法在進行聚類時需要事先指定K值(類別數目),而往往數據集預先不能確定K值大小,如果K取的不合理將會使K-means算法誤差很大。
為了克服這種缺點,文中首先使用Canopy算法進行一次聚類,將較小數目的Cluster直接去掉有利于抗干擾,然后在每個Canopy內使用K-means方法進行二次聚類。
3.2.3 熱點計算
文中綜合考慮報道數量、報道來源、報道速度等因素,利用式(1)進行熱點話題計算:
(1)

具體實現流程見圖3。

圖3 熱點計算流程
map函數有兩部分功能。第一部分是計算熱點(計算上述1,4,6,7項,2,3,5項不能計算是因為需要其他類別的數據)。將計算的1,4,6,7項傳到reduce函數計算剩下的2,3,5項,并最終計算熱點。
3.2.4 話題跟蹤
文中采用基于查詢的話題跟蹤[17]方法。系統定義兩個閾值:跟蹤閾值t1和跟蹤器調整閾值t2。其中,t1 話題查詢向量的構建過程如下:將訓練集中出現的非停用詞w按照其對應的r*idf(w)值由高到低排序,其中r為包含詞w的相關報道數量,idf(w)為詞w的idf值;取前n個詞組成查詢向量。查詢向量第k維(詞w)的取值q(k)=tf(w)*idf(w),tf(w)為所有相關報道中詞w的平均tf值。對應跟蹤器中第k維(詞w),新聞報道向量的第k維的取值: d(k)=0.4+0.6*tf(w)*idf(w) 新聞報道d和跟蹤器q的相似度值采用加權和方法計算,其中qk和dk分別表示各自向量中第k個詞的權重。 (2) 算法描述如下: if(sim(q,d)>t1) {判定d為相關報道 if(sim(q,d)>t2) {重構跟蹤器q以吸收該話題重要的新特征;} } 跟蹤器q的重構過程: (1)確定查詢向量q的核心特征項,令權重最大的5個特征項為核心特征項,核心特征項在最初建立查詢向量時確定,不參與任何調整。 (2)判斷權重最大的文本向量特征項的權重wd與權重最大的查詢向量非核心特征項wq的大小,如果wd>wq則轉到第3步,否則轉到第4步。 (3)用該文本向量權重最大的特征項替換查詢向量權重最小的非核心特征項,替換后的特征權重為向量權重與相似度的積,即wd*sim(q,d)。 (4)結束對查詢向量的調整。 4.1 系統運行環境 系統采用8臺HP商用服務器,服務器操作系統為64位CentOS6.4,Hadoop采用hadoop1.2.1版本,Java采用64位jdk1.7.0_60版本。采用Hadoop集群Namenode一臺,SecondNamenode一臺,其余作為Datanode。 4.2 評測機制 文中依據TDT評測標準,采用漏報率(Miss)、誤報率(False Alarm,FA)以及識別代價(CDet)Norm來評價話題聚類的性能,話題i(i=1,2,…,k)的漏報率和誤報率定義為: (3) 其中,CMiss和CFa分別是漏報和誤報的代價;PMiss和PFa分別是漏報和誤報的條件概率;Ptarget是目標話題的先驗概率;P=1-Ptarget。 CMiss、CFa和Ptarget都是預設值,用來調節漏報率和誤報率在評測結果中所占比重。評測中三個參數分別取1.0,0.1,0.02。(CDet)Norm是系統的性能評測指標,該值越小,表明算法的性能越好。 4.3 實驗結果 實驗1:K-means與Canopy-Kmeans實驗對比。 該實驗采用系統網絡爬蟲抓取的6 573條數據作為信息來源,實驗的目的是通過漏報率、誤報率和識別代價對傳統K-means和文中所使用的Canopy-Kmeans進行對比分析,結果見表1。 表1 聚類實驗對比 % 通過實驗結果可以看出,文中使用的聚類方法漏報率平均降低1.24%,誤報率平均降低0.09%,最小標準代價平均降低1.681%。 實驗2:單機與分布式時間開銷比較。 該系統采用網絡爬蟲抓取的6 573條數據作為信息來源,從中抽取1 000,2 500,4 500和6 573條分別采用單機和分布式模式進行聚類以及熱點計算,結果見圖4。 由實驗數據可以看出,當系統中的文檔數目較少時,傳統的單機模式比MapReduce方式更快,但是隨著文檔規模的擴大,MapReduce方式便體現出了分布式計算的優點。 圖4 時間開銷比較 實驗3:熱點話題展示。 通過對爬蟲抓取到的6 573條記錄進行聚類分析和熱點計算,得分前五的話題,見表2。 表2 熱點話題發現及實驗結果 % 通過與抓取的新聞報道進行對比,該系統采用的熱點發現算法得出的實驗結果與報道情況符合。從實驗結果看出得分前五的熱點平均漏報率為0.333 6,平均誤報率為0.032 5,最小標準代價為0.492 8,驗證了系統所使用的熱點計算方法有效可行。 文中設計并實現了一個基于Hadoop的網絡輿情系統。該系統利用開源的Mahout工具以及MapReduce編程模式來實現基于樸素貝葉斯的文本分類算法,基于Canopy-Kmeans的文本聚類算法,綜合考慮新聞報道數量、點擊量、回復量、報道來源等因素的熱點計算和基于查詢向量的話題跟蹤算法等。 今后的研究工作中,將繼續對系統進行完善,如:增加分布式實時索引和檢索功能,采用數字簽名技術對網頁信息去重,進一步豐富輿情信息展示等。 [1] 陳彥舟,曹金璇.基于Hadoop的微博輿情監控系統[J].計算機系統應用,2013,22(4):18-22. [2] 王宏宇.Hadoop平臺在云計算中的應用[J].軟件,2011,32(4):36-38. [3]OwenS,AnilR,DunningT,etal.Mahoutinaction[M].[s.l.]:ManningPublications,2011. [4]McCallumA,NigamK,UngarLH.Efficientclusteringofhigh-dimensionaldatasetswithapplicationtoreferencematching[C]//Procofthe6thACMSIGKDD.[s.l.]:ACM,2000:169-178. [5]MacQueenJ.Somemethodsforclassificationandanalysisofmultivariateobservations[C]//Procofthe5thBerkeleysymposiumonmathematicalstatisticsandprobability.California:UniversityofCaliforniaPress,1967:281-287. [6] 董堅峰.面向公共危機預警的網絡輿情分析研究[D].武漢:武漢大學,2013. [7] 王宇陽.基于本體進化的自適應中文話題跟蹤算法研究[D].南京:南京航空航天大學,2013. [8]SchultzJ,LibermaM.TopicdetectionandtrackingusingIDF-weightedcosinecoefficient[C]//ProceedingsoftheDARPAbroadcastnewsworkshop.Herndon:[s.n.],1999:189-192. [9] 龔海軍.網絡熱點話題自動發現技術研究[D].武漢:華中師范大學,2008. [10]ShvachkoK,KuangH,RadiaS,etal.TheHadoopdistributedfilesystem[C]//ProcofIEEE26thsymposiumonmassstoragesystemsandtechnologies.[s.l.]:IEEE,2010. [11]DeanJ,GhemawatS.MapReducesimplifieddataprocessingonlargeclusters[J].CommunicationsoftheACM,2008,51(1):107-113. [12]VashishthaH,StrouliaE.EnhancingquerysupportinHBaseviaanextendedcoprocessorsframework[C]//ProceedingsoftheEuropeanconferenceontowardsaservice-basedinternet.[s.l.]:[s.n.],2011:75-87. [13] 李 猛.基于DOM的Web信息抽取技術的研究與實現[D].大連:大連理工大學,2008. [14] 錢 浩.Web信息抽取技術的研究與應用[D].大慶:東北石油大學,2011. [15] 王 星.新聞網頁抽取技術的研究與實現[D].天津:河北工業大學,2011. [16] 高 巖.樸素貝葉斯分類器的改進研究[D].廣州:華南理工大學,2011. [17] 鄒鴻程.微博話題檢測與追蹤技術研究[D].鄭州:解放軍信息工程大學,2012. Design and Implementation of Network Consensus Monitoring System Based on Hadoop LI Chen,YANG Zi-jiang,ZHU Shi-wei,YU Jun-feng (Information Institute,Shandong Academy of Sciences,Jinan 250014,China) A network consensus monitoring system based on Hadoop was designed and realized.The system adopts HDFS as the underlying storage system,and then it builds a distributed database based on HBase with it to realize unified storage and management on the network consensus information.Firstly,it grabs the data with the distributed web crawler based on MapReduce to solve the problems of low efficiency and poor expansibility of single crawler.Then it uses the secondary clustering algorithm with Canopy combined withK-means,whichcanovercometheshortagesofsingleK-meansclusteringalgorithmandcouldimprovetheefficiencyandprecisionoftextclustering.Finally,itcouldrealizethetopicstrackingstrategybasedonquery,alsocouldbeeffectivetrackandanalysisofhottopics.Thesimulationexperimentresultsshowthatcomparedwiththetraditionalmethods,thefalsenegativeandfalsepositiveofCanopy-Kmeansclusteringmethodislowerat1.24%and0.09%respectively,theminimumstandardpriceislowerat1.681%.Throughprovidingthevisualizedanalysisofnetworkconsensus,thesystemproposedcouldprovidescientificandsystematicaltechnologysupportforenterprisesandscientificinstitutionstolearnthehotnetworkconsensusandmakenetworkconsensusstrategy. Hadoop;MapReduce;monitoring public opinion;text clustering;hot topic founding;topic tracking 2015-04-24 2015-08-03 時間:2017-01-04 山東省科學院青年基金項目(2013QN036);山東省科技發展計劃(2013GGX10127,2014GGX101013) 李 晨(1988-),男,實習研究員,研究方向為數據挖掘、大數據分析。 http://www.cnki.net/kcms/detail/61.1450.TP.20160104.1505.038.html TP A 1673-629X(2016)02-0144-06 10.3969/j.issn.1673-629X.2016.02.0334 實驗結果分析



5 結束語