董富江 張文學(xué)
摘 要:在大數(shù)據(jù)和移動互聯(lián)網(wǎng)的時代背景下,輿情信息的迅猛增長為其采集與分析帶來挑戰(zhàn)。運用分布式計算技術(shù),有利于對領(lǐng)域海量主題輿情的快速采集與分析。研究主題輿情采集與分析關(guān)鍵技術(shù),包括主題輿情采集技術(shù)、領(lǐng)域詞典和中文分詞,探討分布式計算環(huán)境下的主題輿情采集與輿情數(shù)據(jù)分析,并利用面向?qū)ο蟮姆治雠c設(shè)計方法,基于開源爬蟲設(shè)計并實現(xiàn)了一個分布式主題輿情采集與分析系統(tǒng)。利用4個爬蟲節(jié)點進行分布式采集,相比傳統(tǒng)采集模式,該系統(tǒng)的平均采集速度提升了2.74倍。
關(guān)鍵詞:分布式;主題輿情;信息采集;開源爬蟲
DOI:10. 11907/rjdk. 201708????????????????????????????????????????????????????????????????? 開放科學(xué)(資源服務(wù))標識碼(OSID):
中圖分類號:TP319 ? 文獻標識碼:A ??????????????? 文章編號:1672-7800(2020)011-0116-04
The Design of a Distributed Subject Public Opinion Collection and Analysis System
DONG Fu-jiang,ZHANG Wen-xue
(College of Science,Ningxia Medical University,Yinchuan 750004,China)
Abstract: In the era of big data and mobile Internet, the rapid growth of public opinion information brings challenges to its collection and analysis, and the design of distributed subject public opinion collection and analysis system is conducive to the rapid collection and analysis of mass subject public opinion information. The key technologies of subject public opinion collection and analysis are studied, including subject public opinion collection, field dictionary and segmentation of Chinese word. The collection and analysis technology of subject public opinion in distributed computing environment is discussed.A distributed subject public opinion collection and analysis system based on open source crawler is designed and implemented by object-oriented analysis and design method. Four crawler nodes are used for distributed collection, and the average collection speed is improved by 2.74 times compared with the single-machine collection mode.
Key Words:distributed; subject public opinion; information collection; open source crawler
0 引言
在大數(shù)據(jù)與移動互聯(lián)網(wǎng)蓬勃發(fā)展的時代背景下,網(wǎng)絡(luò)輿情具有傳播迅速、快速裂變、紛繁復(fù)雜等特點,對這些網(wǎng)絡(luò)輿情進行有效的管理、控制與引導(dǎo),避免釀成不良網(wǎng)絡(luò)輿情事件,對于保障社會穩(wěn)定具有重要意義。借助于輿情監(jiān)控平臺,可幫助相關(guān)部門或行業(yè)對互聯(lián)網(wǎng)輿情信息進行跟蹤、分析與管理[1-2]。設(shè)計面向各政府部門或行業(yè)的主題網(wǎng)絡(luò)輿情信息采集與分析系統(tǒng),如醫(yī)療[3-4]、疫情[5]、食品安全[6]等領(lǐng)域,可輔助政府部門或企業(yè)及時獲取所需的輿情信息[7-12],為進一步輿情管理與決策奠定基礎(chǔ)。當前互聯(lián)網(wǎng)上的輿情信息飛速增長,呈現(xiàn)海量性特點,給傳統(tǒng)的輿情采集與分析帶來極大挑戰(zhàn)[13-14]。運用分布式技術(shù),可提高對大規(guī)模主題輿情信息的采集、分析與處理效率。
1 主題輿情采集與分析關(guān)鍵技術(shù)
1.1 主題網(wǎng)絡(luò)輿情采集
廣義的主題網(wǎng)絡(luò)輿情采集是指針對特定領(lǐng)域或特定行業(yè)的輿情信息采集,如藥品安全輿情采集等;狹義的主題網(wǎng)絡(luò)輿情采集是指采集某領(lǐng)域關(guān)于某個或某些事件的輿情信息,如針對某個城市新冠肺炎疫情防控的輿情信息采集等?;陂_源通用網(wǎng)絡(luò)爬蟲如Nutch、WebCollector、Scrapy等構(gòu)建主題爬蟲系統(tǒng),是主題輿情采集系統(tǒng)的低成本設(shè)計與實現(xiàn)方案。主題輿情采集系統(tǒng)具體實現(xiàn)原理如圖1所示。
在圖1中,方框代表采集系統(tǒng)的模塊,粗線箭頭代表系統(tǒng)流程,細線箭頭代表模塊對數(shù)據(jù)的應(yīng)用。初始化模塊用于設(shè)置要采集的輿情信息主題或者輸入主題詞,設(shè)置種子鏈接列表;網(wǎng)頁下載模塊在初始化完成后,從種子鏈接開始,利用爬取算法對頁面進行下載;頁面分析模塊可對網(wǎng)頁下載模塊獲取到的網(wǎng)頁進行解析,提取出頁面中的鏈接與文本內(nèi)容;URL去重模塊用于過濾重復(fù)網(wǎng)頁,若判斷當前頁面已存在于URL隊列中,則不進行存儲;數(shù)據(jù)獲取模塊采用某種算法從Web頁面中抽取所需數(shù)據(jù);主題相關(guān)性計算模塊是系統(tǒng)的關(guān)鍵模塊,其根據(jù)設(shè)計好的算法計算當前頁面與給定主題的相關(guān)性,若相關(guān)則進行保存,否則予以丟棄。URL隊列采取FIFO方式存儲待下載的頁面鏈接,領(lǐng)域詞典保存面向特定主題的詞匯,支撐中文分詞與數(shù)據(jù)獲取。
1.2 關(guān)鍵詞提取
主題輿情采集方法之一是利用基于主題詞的方法,在采集時由人工輸入一個或多個主題詞,主題相關(guān)性計算模塊首先提取網(wǎng)頁上的文本關(guān)鍵詞,然后匹配輸入的主題詞及網(wǎng)頁關(guān)鍵詞。若匹配成功,說明網(wǎng)頁是主題網(wǎng)頁,系統(tǒng)保存該網(wǎng)頁的輿情數(shù)據(jù)。系統(tǒng)設(shè)計采用TF-IDF算法,其思想是若某詞語在某文本中出現(xiàn)次數(shù)相對較多,但在其余文本中出現(xiàn)次數(shù)相對較少,則該詞語為關(guān)鍵詞[15]。
1.3 主題向量
采用主題自動生成方法,在系統(tǒng)運行前利用一些人工采集的主題頁面,經(jīng)過機器學(xué)習(xí)算法如LDA[16]學(xué)習(xí)得到用向量模式表示的特定主題,對頁面進行下載與處理后也表示成向量空間模型,之后系統(tǒng)利用設(shè)計好的相關(guān)性計算算法比較主題向量與頁面主題。若計算結(jié)果大于設(shè)定閾值,則判定該頁面為面向特定主題的頁面,系統(tǒng)將從該頁面提取的數(shù)據(jù)作為主題輿情進行保存。由于移動互聯(lián)網(wǎng)時代信息增長迅速,新的網(wǎng)絡(luò)語言和網(wǎng)絡(luò)詞匯不斷涌現(xiàn),將導(dǎo)致系統(tǒng)采集性能下降,所以可利用系統(tǒng)采集的數(shù)據(jù)定期重新計算主題向量。為提高計算效率,可利用之前采集數(shù)據(jù)時所得的主題相關(guān)度高的頁面進行計算,或隨機抽取一些主題頁面進行計算。
1.4 中文分詞與領(lǐng)域詞典
中文分詞模塊是數(shù)據(jù)獲取模塊的重要組成部分。若要下載的頁面中含有中文信息,提取所需數(shù)據(jù)前須對頁面中的文本進行中文分詞處理,將中文文本拆分為中文詞語序列。中文分詞和領(lǐng)域詞典維護流程如圖2所示。分詞模塊使用領(lǐng)域詞典將中文文本分解為詞語構(gòu)成的列表。去停用詞模塊使用停用詞表去除詞語集合中諸如“a,the”和“啊,了”等出現(xiàn)頻率高,但信息含量很低的詞。
中文分詞詞典對于分詞精度有著重要影響,面向特定主題的領(lǐng)域詞典能進一步提高主題輿情采集系統(tǒng)的分詞精度及系統(tǒng)處理性能。在構(gòu)建系統(tǒng)時設(shè)計詞典調(diào)整模塊,該模塊能夠采用自動統(tǒng)計方法向詞典中加入新詞匯。在系統(tǒng)運行初期可采用通用分詞詞典,隨著系統(tǒng)的運行,詞典調(diào)整模塊能夠自動增加詞匯,從而進一步提升主題輿情采集精度。
2 分布式技術(shù)應(yīng)用
分布式技術(shù)思想是先將分布式計算系統(tǒng)部署在一些廉價計算設(shè)備上,然后將大型計算項目分解成許多小的計算任務(wù),再把這些任務(wù)分配到廉價計算設(shè)施上進行計算,待各個小任務(wù)處理完成后進行結(jié)果合并,即得到所需的計算結(jié)果。因此,將分布式技術(shù)運用于主題輿情采集,從理論上而言,可提高對于大量主題輿情數(shù)據(jù)的采集與分析效率。
2.1 分布式主題輿情采集
分布式主題輿情采集使用分布式爬蟲系統(tǒng),采用基于局域網(wǎng)的主從模式[17]。該模式利用一臺機器作為Master,負責管理各爬蟲節(jié)點,并分配任務(wù)。因為各爬蟲運行在同一局域網(wǎng)中,爬蟲之間以及爬蟲與控制節(jié)點之間通信效率較高。在該模式下,爬蟲節(jié)點之間甚至無需進行通訊。系統(tǒng)實現(xiàn)的分布式主題爬蟲架構(gòu)如圖3所示。
架構(gòu)中SpiderMaster指任務(wù)中央控制節(jié)點,由Master啟動,其功能是將任務(wù)分解、分配給SpiderWorker;SpiderWorker指爬蟲節(jié)點,由Worker啟動,負責輿情采集工作,SpiderWorker功能如1.1節(jié)所述;URL隊列用來保存待爬取的鏈接,可采用Key-Value數(shù)據(jù)庫實現(xiàn);輿情數(shù)據(jù)庫可采用文件數(shù)據(jù)庫,用來存放采集的主題輿情數(shù)據(jù)。
2.2 分布式輿情分析
輿情分析包括主題相關(guān)度分析、熱點分析、焦點分析和情感分析等[18]。主題關(guān)注度是指在已逝去的某時段內(nèi),某輿情主題被大家所關(guān)注的水平,通常用與該主題相關(guān)的頁面數(shù)量進行度量。熱點是指在已逝去的某時段內(nèi)被集中關(guān)注的輿情主題。熱點計算方法為:首先計算某輿情主題關(guān)注度,其次比較該關(guān)注度與事先設(shè)定的某個閾值,若該關(guān)注度大于等于該閾值,則此主題輿情為熱點,否則不是熱點。焦點是指在已逝去的某時段內(nèi)被各類媒體報道頻次較高的輿情信息。焦點計算方法為:首先計算某主題輿情在某時間間隔的焦度,接下來判斷計算得到的焦度與事先設(shè)定好的焦度閾值的關(guān)系,若焦度大于等于閾值,則該輿情信息為輿情焦點,否則不是輿情焦點。輿情信息焦度等于時間間隔兩端點處與該主題輿情相關(guān)的網(wǎng)頁數(shù)之差。由輿情分析的描述可知,針對海量輿情信息進行輿情分析,使用分布式技術(shù)可加快輿情分析速度?;诜植际郊夹g(shù)的輿情分析如圖4所示。
以焦度計算為例,可以先在各個節(jié)點上計算輿情信息N的焦度,然后對從這些節(jié)點上計算得到的焦度進行綜合,即可得到該輿情信息在整個網(wǎng)絡(luò)上的焦度。
3 系統(tǒng)設(shè)計與實現(xiàn)
3.1 系統(tǒng)分析與設(shè)計
主題輿情采集系統(tǒng)首先能夠從各大門戶網(wǎng)站、微博、論壇等平臺及時、準確、全面地抓取與特定主題有關(guān)的頁面,接下來對抓取的頁面進行信息提取,然后進行分詞,最后對得到的數(shù)據(jù)進行主題相關(guān)性計算,如果主題相關(guān)則存儲到輿情數(shù)據(jù)庫中。系統(tǒng)應(yīng)具備以下功能:①輿情主題生成。利用人工采集的主題網(wǎng)頁或輿情數(shù)據(jù)庫中的數(shù)據(jù),通過分析與計算得到輿情主題向量;②領(lǐng)域詞庫自動維護?;谕ㄓ迷~庫,通過系統(tǒng)的運行生成與完善領(lǐng)域詞典;③主題輿情采集。通過分布式主題網(wǎng)絡(luò)輿情采集爬蟲獲取主題輿情數(shù)據(jù),并保存在輿情數(shù)據(jù)庫中;④輿情分析。利用采集的輿情數(shù)據(jù)進行輿情熱點、焦點計算及情感分析等。
為了便于系統(tǒng)日后維護,采用面向?qū)ο蠹夹g(shù)進行系統(tǒng)分析與設(shè)計。在需求分析完成后構(gòu)建系統(tǒng)用例,之后畫出系統(tǒng)的分析類圖和設(shè)計類圖,使用序列圖描述系統(tǒng)活動,最后基于開源爬蟲實現(xiàn)系統(tǒng)。主題輿情采集模塊設(shè)計類圖如圖5所示。
輿情管理類OpinionManager通過爬蟲類Spider進行頁面下載、分析與分詞;Opinions是輿情集合類,與輿情類Opinion之間是聚合關(guān)系;頁面類Page可進行關(guān)鍵詞提取與中文分詞;輿情類Opinion進行主題相關(guān)性計算與輿情信息保存;輿情管理類OpinionManager借助于輿情集合類Opinions進行輿情數(shù)據(jù)分析。
3.2 輿情數(shù)據(jù)庫設(shè)計
MongoDB適合于分布式環(huán)境下數(shù)據(jù)的快速存儲[19]。MongoDB是一個基于分布式文件存儲的NoSQL數(shù)據(jù)庫,其中的數(shù)據(jù)庫(database) 概念對應(yīng)關(guān)系型數(shù)據(jù)庫中的模式(schema),集合(colloction)對應(yīng)表(Table),文檔(document)對應(yīng)行(row) [20]。為便于大量主題輿情數(shù)據(jù)在分布環(huán)境下存儲,采用MongoDB數(shù)據(jù)庫。為提高檢索速度、提升系統(tǒng)性能,將不同類型頁面對應(yīng)的輿情數(shù)據(jù)保存在不同的輿情數(shù)據(jù)集合中。以微博輿情信息采集為例,微博輿情數(shù)據(jù)集合如下:
……
{ “NID”:1,
“Owner”:“owner1”,
“keyWords”:[{“name”:“新冠”,“fre”:3},{“name”:“藥” ,“fre”:3 }]
“Text”:“俄羅斯批準使用法維拉韋?!保?/p>
“Url”:“https://weibo.com/owner1?refer_flag=1005055013_& is_all=1”,
……
}
……
以上集合顯示了一個文檔,該文檔表示編號為1的輿情信息。該輿情信息對應(yīng)頁面的博主為“Owner1”,輿情采集系統(tǒng)分析出的關(guān)鍵詞“新冠”在頁面中出現(xiàn)了3次。文檔還存儲了微博正文信息和頁面的URL。
3.3 系統(tǒng)實現(xiàn)與運行
基于Nutch實現(xiàn)分布式網(wǎng)絡(luò)爬蟲是可行的[21]。分布式主題輿情采集系統(tǒng)實現(xiàn)原理如圖6所示,其基于Nutch2.3。利用爬蟲抓取頁面并提取結(jié)構(gòu)化信息后,再經(jīng)過分詞和主題相關(guān)性計算實現(xiàn)主題輿情采集。任務(wù)數(shù)據(jù)庫(隊列)基于Key-Value數(shù)據(jù)庫Redis實現(xiàn),可將所有爬蟲需要爬取的URL隊列和已爬取的URL隊列放在共享的URL數(shù)據(jù)庫中。爬蟲節(jié)點從該共享隊列中按需取出URL進行爬取,已爬取過的頁面不會重復(fù)爬取[22]。
采用圖6所示的方法對Parse模塊進行擴展、改造,使其具有主題相關(guān)性計算功能。若解析得到的數(shù)據(jù)與主題相關(guān),則將其存入輿情數(shù)據(jù)庫,并繼續(xù)利用從該頁面解析得到的URL繼續(xù)進行深度爬行,否則僅進行深度爬行。該方法的數(shù)據(jù)提取、主題相關(guān)性計算是在線進行的,即邊下載網(wǎng)頁邊計算其主題相關(guān)性,下載花費時間較長,且不利于利用網(wǎng)絡(luò)擁堵低峰期,因此完成采集任務(wù)所需時間較長。如果經(jīng)過主題相關(guān)性計算后發(fā)現(xiàn)頁面不是主題相關(guān)的,則不利用該頁面繼續(xù)進行深度爬行,從而提高采集速度,但可能導(dǎo)致一些主題相關(guān)頁面丟失。
以下對比分布式采集模式與單機采集模式的性能。分布式采集系統(tǒng)利用5臺機器搭建,1臺部署SpiderMaster,其余4臺部署SpiderSlave,采用相同的機器配置:CPU為酷睿i3-2100,內(nèi)存為4GB(DDR3-1333MHz),磁盤容量為250GB(SATA)。局域網(wǎng)出口帶寬為100Mb/s,交換機上下行帶寬均為100Mb/s。單機采集系統(tǒng)僅用1臺上述機器實現(xiàn)。系統(tǒng)調(diào)試成功后,設(shè)置Seed頁面數(shù)為5個,depth為10,節(jié)點線程數(shù)為5,topN為100。選取關(guān)鍵詞主題模式并手動輸入關(guān)鍵詞,分別運行15、30和60min進行實驗,分布式采集與單機采集處理的鏈接數(shù)Ld和Ls如表1所示。
由表1可知,在該局域網(wǎng)部署4爬蟲節(jié)點的分布式主題輿情采集系統(tǒng),采集平均速度約為單機采集系統(tǒng)的2.74倍。因此,利用廉價或老舊計算機實施分布式主題輿情采集與分析系統(tǒng),是實現(xiàn)快速、大規(guī)模主題輿情采集的高性價比解決途徑。
4 結(jié)語
截至目前,針對網(wǎng)絡(luò)輿情采集技術(shù),國內(nèi)外都取得了較多研究成果,但是針對主題輿情采集、中文輿情采集以及分布計算技術(shù)應(yīng)用等內(nèi)容仍有待深入研究。本文基于Nutch設(shè)計了一個分布式主題輿情采集與分析系統(tǒng),可用來初步采集與分析網(wǎng)絡(luò)主題輿情信息。相比傳統(tǒng)采集模式,該系統(tǒng)平均采集速度提升了2.74倍。未來還將針對分布計算環(huán)境下的輿情信息處理、輿情應(yīng)對決策、主題生成技術(shù)、領(lǐng)域詞典自動化維護技術(shù)等作進一步研究。
參考文獻:
[1] 李彥辰,艾慶忠,王少非. 基于Redis的分布式搜索引擎研究[J]. 軟件導(dǎo)刊,2018, 17(3):201-204.
[2] 萬文兵. 面向主題搜索的網(wǎng)絡(luò)爬蟲信息采集策略研究[J]. 軟件導(dǎo)刊, 2015, 14(11):68-70.
[3] 馮思度,楊健葉,韓煦. 基于醫(yī)療信息的網(wǎng)絡(luò)爬蟲系統(tǒng)的研究與設(shè)計[J]. 現(xiàn)代信息科技,2019,3(10):23-25.
[4] 周桓. 面向檢驗檢疫領(lǐng)域主題爬蟲的研究及系統(tǒng)實現(xiàn)[D]. 杭州:浙江大學(xué),2017.
[5] 王相軍,劉春曉,刁慕言,等. 全球傳染病疫情信息自動收集系統(tǒng)的研發(fā)[J]. 中國國境衛(wèi)生檢疫雜志, 2017, 40(6):431-434.
[6] 汪睿. 基于核方法的食品安全輿情分析方法研究[D]. 天津:天津科技大學(xué),2018.
[7] 鄭文振. 社交網(wǎng)絡(luò)中危害國家安全的突發(fā)事件搜索研究[D].? 北京:北京郵電大學(xué),2018.
[8] 孫學(xué)誠, 陳前, 唐家駿,等. 大數(shù)據(jù)背景下的恐怖主義信息傳播途徑分析[J]. 吉林大學(xué)學(xué)報(信息科學(xué)版), 2019, 37(1):91-98.
[9] 馬漢超. 基于主題網(wǎng)絡(luò)爬蟲的汽車行業(yè)多元信息web系統(tǒng)設(shè)計與實現(xiàn)[D]. 成都:西南交通大學(xué),2015.
[10] 鄭燕娥,鄭志明. 基于Heritrix與Solr的就業(yè)主題搜索引擎的研究與優(yōu)化[J]. 齊齊哈爾大學(xué)學(xué)報(自然科學(xué)版),2018,34(4):13-20.
[11] 李俊,周玉英,唐志航. 基于主題網(wǎng)絡(luò)爬蟲的服裝信息采集[J]. 信息技術(shù)與信息化,2018(8):97-99.
[12] 劉建成,吳保國,陳棟. 基于網(wǎng)絡(luò)爬蟲的森林經(jīng)營知識采集系統(tǒng)研建[J]. 浙江農(nóng)林大學(xué)學(xué)報, 2017, 34(4): 743-750.
[13] 段玉風. 大數(shù)據(jù)環(huán)境下分布式數(shù)據(jù)抓取策略的研究與應(yīng)用[J]. 網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2019(12):75-76
[14] 陶影輝, 道瑤瑤, 殷曉靚,等. 基于Hadoop的輿情分析系統(tǒng)模型研究[J]. 中國新通信,2019(14):167.
[15] 蔡天鴻,鄧金,史國陽,等. 基于TF-IDF 方法的文本人物群體人格分析方法[J]. 計算機應(yīng)用與軟件,2019,36(5):35-38.
[16] LILI J. Emotional analysis of e-commerce online comment data[C]. Singapore:3rd International Conference on Education,Economics and Management Research,2019.
[17] 劉林.? 科技人才信息分布式采集及處理關(guān)鍵技術(shù)研究[D].? 杭州:杭州電子科技大學(xué),2018.
[18] 廖海涵,王曰芬,關(guān)鵬. 微博輿情傳播周期中不同傳播者的主題挖掘與觀點識別[J]. 圖書情報工作,2018,62(19):77-85.
[19] YINYI C, KEFA Z, JINLIN W. Performance analysis of PostgreSQL and MongoDB databases for unstructured data[C]. Changsha:International Conference on Mathematics, Big Data Analysis and Simulation and Modeling,2019.
[20] 任明飛,李學(xué)軍,崔蒙蒙,等. 基于MongoDB的非關(guān)系型數(shù)據(jù)庫的設(shè)計與開發(fā)[J]. 電腦知識與技術(shù),2019,15(34):1-2.
[21] 馬蕾,馮錫煒,竇予梓,等. 分布式爬蟲的研究與實現(xiàn)[J].? 計算機技術(shù)與發(fā)展, 2019, 30(2): 192-196.
[22] 羅嬌敏,耿茜.? 一種基于Redis的分布式爬蟲系統(tǒng)設(shè)計與實現(xiàn)[J]. 軟件,2017,38(10):83-87.
(責任編輯:黃 健)