葉肇恒,孟凡馨,宴金旭,楊璐遙
(四川省地震局,四川 成都 610041)
面對地震災(zāi)害多發(fā)的基本國情和防震減災(zāi)綜合能力相對薄弱的客觀事實,迫切需要提升防震減災(zāi)能力,夯實防震減災(zāi)事業(yè)基礎(chǔ)。習(xí)近平總書記指出,防災(zāi)減災(zāi)救災(zāi)事關(guān)人民生命財產(chǎn)安全,事關(guān)社會和諧穩(wěn)定,應(yīng)當(dāng)堅持以防為主,防抗救相結(jié)合,應(yīng)注重“建立防災(zāi)減災(zāi)救災(zāi)宣傳教育長效機(jī)制”。隨著科學(xué)技術(shù)的高速發(fā)展,科普傳播載體也發(fā)生了變化。近年來新媒體技術(shù)的廣泛運(yùn)用,對傳統(tǒng)科普觀念和形式造成了巨大的沖擊。《全民科學(xué)素質(zhì)行動計劃綱要(2006—2010—2020)》明確要求研究開發(fā)實時、交互、動態(tài)等特點的網(wǎng)絡(luò)科普新途徑,云技術(shù)、大數(shù)據(jù)等技術(shù)的成熟運(yùn)用也為防震減災(zāi)科普工作提供了新的思路。
在實際工作和走訪調(diào)研中發(fā)現(xiàn),防震減災(zāi)科普宣傳教育工作還存在許多問題。一方面,雖然通過網(wǎng)絡(luò)檢索能夠得到圖片、文字、視頻等大量資源,但信息重復(fù)率高,資料質(zhì)量難以保證,權(quán)威科普教育資源相對缺乏[1],這導(dǎo)致不具備專業(yè)知識的科普工作人員難以甄別有效信息,從而影響科普宣傳效果,甚至可能會出現(xiàn)具有誤導(dǎo)性的錯誤信息;另一方面,相關(guān)科普宣傳教育資源具有分散性,在實際應(yīng)用中存在收集難、存儲難、管理難、篩選難等一系列問題,一定程度上增加了科普宣傳工作的時間成本和人力資源成本。學(xué)校、社區(qū)、基層政府、防震減災(zāi)科普館等機(jī)構(gòu)大多缺少防震減災(zāi)專業(yè)人員指導(dǎo),卻又承擔(dān)著大量的防震減災(zāi)科普宣傳教育任務(wù),防震減災(zāi)科普教育工作任重道遠(yuǎn)。
本文從防震減災(zāi)法律法規(guī)、三大工作體系、科普宣傳形式等內(nèi)容出發(fā),設(shè)計了科普資源庫搜索指標(biāo)和資源庫架構(gòu),通過網(wǎng)絡(luò)爬蟲、數(shù)據(jù)挖掘等技術(shù),對科普資源搜索指標(biāo)數(shù)據(jù)源進(jìn)行搜集、分析、分類等處理,設(shè)計基于web的防震減災(zāi)科普資源管理平臺架構(gòu),為學(xué)校、社區(qū)、基層政府、防震減災(zāi)相關(guān)部門的科普宣傳提供科學(xué)的、便捷的資料獲取渠道,提升科普宣傳教育工作的便捷度和科學(xué)性。
隨著信息技術(shù)的發(fā)展和新媒體的興起,科普宣傳的宣傳形式、宣傳內(nèi)容等各方面都發(fā)生了巨大變化。越來越多的人,尤其是年輕人更愿意通過移動App、門戶網(wǎng)站等來獲取防震減災(zāi)科普資源,這也造成了傳播形式呈現(xiàn)出碎片化、即時性、形象化的特點[2]。但無論宣傳形式如何變化,科普信息資源始終是各類型宣傳產(chǎn)品制作開發(fā)的基礎(chǔ)。因此,從防震減災(zāi)涵蓋的基本內(nèi)容出發(fā),設(shè)計了科普資源搜索指標(biāo),旨在為網(wǎng)絡(luò)爬蟲爬取及人工上傳的科普資源劃分確定基本分類模式。搜索指標(biāo)主要分為2級,具體劃分見表1。
表 1 防震減災(zāi)科普資源搜索指標(biāo)
通過專家咨詢、走訪調(diào)研、網(wǎng)民搜索行為研究等方式,確定了本平臺應(yīng)用方向及用戶需求。平臺設(shè)計從功能需求出發(fā),確定平臺功能模塊,完成整體架構(gòu)設(shè)計和Hadoop架構(gòu)設(shè)計,實現(xiàn)防震減災(zāi)科普資源的科學(xué)管理,為個人、學(xué)校、企業(yè)、單位等的防震減災(zāi)科普教育工作提供搜索渠道,為科普宣傳教育產(chǎn)品、應(yīng)用開發(fā)提供數(shù)據(jù)資源。
該平臺功能整體分為三大模塊:普通用戶模塊、管理員模塊和系統(tǒng)模塊(圖1)。
通過網(wǎng)絡(luò)爬蟲及人工輸入,結(jié)合ETL技術(shù),實現(xiàn)對Internet或Intranet中與防震減災(zāi)科普相關(guān)數(shù)據(jù)源的數(shù)據(jù)采集、清洗、轉(zhuǎn)換、合并及儲存,同時提供在線編輯、接口注冊、Excel表格導(dǎo)入、文件上傳等人工操作方式?;贖adoop架構(gòu)設(shè)計防震減災(zāi)科普資源庫,實現(xiàn)防震減災(zāi)科普數(shù)據(jù)資源的統(tǒng)一注冊、統(tǒng)一分析、統(tǒng)一監(jiān)控的全生命周期管理。
在資源庫構(gòu)建的過程中,結(jié)合防震減災(zāi)業(yè)務(wù)架構(gòu),劃分業(yè)務(wù)關(guān)鍵詞,通過設(shè)計層次聚類模型,挖掘數(shù)據(jù)資源之間的關(guān)聯(lián),實現(xiàn)防震減災(zāi)科普數(shù)據(jù)資源的自動分類和聚合。同時提供基于資源庫的各類應(yīng)用服務(wù),如面向各類用戶的防震減災(zāi)科普資源檢索,提供統(tǒng)一Web界面,用戶可輸入關(guān)鍵字查詢相關(guān)的科普資源,對得到的查詢結(jié)果進(jìn)行自定義清洗、對需要的資源進(jìn)行下載及收藏,用戶同樣可以通過在線編輯、接口注冊、Excel導(dǎo)入、文件上傳等人工注冊的方式,實現(xiàn)數(shù)據(jù)上傳。后臺管理員負(fù)責(zé)對整個系統(tǒng)的運(yùn)行進(jìn)行管理,包括用戶管理、資源分類管理、爬蟲設(shè)置、數(shù)據(jù)資源管理、日志管理等,同時加入專家評判功能,使資源管理更加科學(xué)準(zhǔn)確。整個系統(tǒng)功能結(jié)構(gòu)圖如圖2所示。
平臺采用自頂而下的模塊化設(shè)計,各模塊具有一定的獨立性,在具體劃分時,既考慮了模塊的凝聚和耦合2個指標(biāo),也考慮了整個平臺層次結(jié)構(gòu)及功能的合并。其中,高凝聚:一個處理功能劃分為一個模塊,由于相關(guān)因素少,易于理解,獨立性強(qiáng),便于設(shè)計,從而提高系統(tǒng)的靈活性、可修改性和可維護(hù)性;低耦合:盡量減少各模塊間的數(shù)據(jù)傳輸,以提高模塊的獨立性,從整體上提高平臺的穩(wěn)定性。
平臺采用了分層的設(shè)計思路,可支持科普資源采集、傳輸、存儲、計算、分析及推薦展示等多種功能。其架構(gòu)設(shè)計包括:
圖 1 功能模塊劃分
圖 2 平臺功能結(jié)構(gòu)圖
1)源數(shù)據(jù)層:通過本地上傳和爬蟲抓取等方法完成原始數(shù)據(jù)的采集。
2)數(shù)據(jù)傳輸層:建立各種數(shù)據(jù)傳輸適配器,接收源數(shù)據(jù)層的數(shù)據(jù)存儲到本地目錄;同時,ETL適配器接收通過ESB服務(wù)總線下發(fā)的控制命令,執(zhí)行數(shù)據(jù)ETL操作,將清洗后的數(shù)據(jù)傳遞到存儲層。
3)存儲層:分類存儲各種資源數(shù)據(jù),包括實時數(shù)據(jù)、歷史數(shù)據(jù)、元數(shù)據(jù)、結(jié)構(gòu)化數(shù)據(jù)及非結(jié)構(gòu)化數(shù)據(jù)等,能夠通過數(shù)據(jù)訪問服務(wù)將資源數(shù)據(jù)提交計算層進(jìn)行分析和計算。
4)計算層:能夠?qū)Υ鎯又械母黝愘Y源數(shù)據(jù)執(zhí)行分析計算等處理。
5)服務(wù)層:主要包括ESB服務(wù)總線。ESB是傳統(tǒng)中間件技術(shù)與XML、Web服務(wù)等技術(shù)相互結(jié)合的產(chǎn)物,ESB的出現(xiàn)改變了傳統(tǒng)的軟件架構(gòu),可以提供比傳統(tǒng)中間件產(chǎn)品更為廉價的解決方案,同時它還可以消除不同應(yīng)用之間的技術(shù)差異,讓不同的應(yīng)用服務(wù)器協(xié)調(diào)運(yùn)作,從而實現(xiàn)了不同服務(wù)之間的通信與整合[3]。
6)應(yīng)用層:通過ESB服務(wù)總線實現(xiàn)對資源大數(shù)據(jù)的訪問和控制命令的下發(fā)等功能,主要包括平臺應(yīng)用、系統(tǒng)應(yīng)用及基礎(chǔ)服務(wù)等(圖3)。
圖 3 平臺架構(gòu)
Hadoop是一種分析和處理大數(shù)據(jù)的軟件平臺,能實現(xiàn)海量數(shù)據(jù)的分布式計算,其架構(gòu)的核心設(shè)計為分布式文件系統(tǒng)(HDFS,Hadoop Distributed File System)和分布式計算模型MapReduce[4]。HDFS具有高容錯性的特點,而且它提供高吞吐量來訪問應(yīng)用程序的數(shù)據(jù),適合有著超大數(shù)據(jù)集的應(yīng)用程序,為海量的數(shù)據(jù)提供了存儲。MapReduce是面向大數(shù)據(jù)并行處理的計算模型、框架和平臺,用于大規(guī)模數(shù)據(jù)集的并行運(yùn)算。因此,本平臺采用Hadoop架構(gòu)實現(xiàn)平臺的設(shè)計功能。
本平臺Hadoop架構(gòu)分為數(shù)據(jù)獲取層、數(shù)據(jù)清洗層、數(shù)據(jù)存儲層和數(shù)據(jù)處理層(圖4)。數(shù)據(jù)獲取層利用爬蟲和人工上傳2種方式獲取數(shù)據(jù)文件;數(shù)據(jù)清洗層對獲取得到的數(shù)據(jù)文件進(jìn)行篩選,去除不需要的文件,并將需要的數(shù)據(jù)文件保存;數(shù)據(jù)存儲層在HDFS建立存儲目錄,在分布式的、面向列的開源數(shù)據(jù)庫HBase中建立表單,為信息的存儲提供存儲空間;數(shù)據(jù)處理層對數(shù)據(jù)文件進(jìn)行處理,建立索引,并將索引存儲在HBase中,以便外部應(yīng)用對數(shù)據(jù)文件的快速獲取。
圖 4 平臺Hadoop系統(tǒng)架構(gòu)
2.3.1 數(shù)據(jù)獲取層
數(shù)據(jù)獲取層的功能是獲取數(shù)據(jù)文件,其數(shù)據(jù)文件的來源為爬蟲爬取和人工上傳2種途徑。
1)爬蟲爬取
利用基于Scrapy[5]框架的分布式結(jié)構(gòu)爬蟲對目標(biāo)網(wǎng)站URL進(jìn)行數(shù)據(jù)爬取,從而達(dá)到迅速處理完成數(shù)據(jù)文件爬取任務(wù)的目的。爬蟲工作步驟如下:
① 讀取數(shù)據(jù)庫
將包含目標(biāo)URL、爬取深度以及爬取文件類型等設(shè)置的配置文件加載至爬蟲配置中,采用逐層(網(wǎng)頁層數(shù))爬取的方式,首層爬取完畢后判斷配置是否加載完成,根據(jù)配置內(nèi)容加載情況判斷是否進(jìn)入下一層工作。
② 爬取數(shù)據(jù)文件
爬蟲按照配置文件中的預(yù)設(shè)條件,對各個網(wǎng)站URL進(jìn)行循環(huán)爬取,直至完成配置文件中的配置加載和數(shù)據(jù)爬取,爬取后的文件存放在本地的Source文件夾中(圖5)。
③ 保存文件信息
在爬取數(shù)據(jù)文件后,對數(shù)據(jù)文件的來源URL、類型、大小、爬取日期等信息進(jìn)行保存,并存儲至MySQL數(shù)據(jù)庫的表中(圖6)。
2)人工上傳
利用Web管理頁面直接將數(shù)據(jù)文件分類上傳至HDFS對應(yīng)文件夾中。
圖 5 source文件夾結(jié)構(gòu)
圖 6 爬蟲爬取信息流程圖
2.3.2 數(shù)據(jù)清洗層
在網(wǎng)絡(luò)爬取信息資源的過程中,同一關(guān)鍵詞會出現(xiàn)許多重復(fù)的、不相關(guān)的信息數(shù)據(jù),因此需要采用數(shù)據(jù)清洗技術(shù)對數(shù)據(jù)進(jìn)行過濾、篩選[6]。在文本過濾領(lǐng)域,向量空間模型VSM已成為最簡便高效的文本表示模型之一[7]。采用基于VSM的文本內(nèi)容過濾算法提取出來的文本類文件內(nèi)容相似度來對數(shù)據(jù)進(jìn)行清洗,過濾內(nèi)容相似度較低的數(shù)據(jù)。數(shù)據(jù)清洗層從Source文件中的日期文件夾中獲取爬蟲爬取或人工上傳的網(wǎng)頁、文本、圖片視頻等類型的信息資源,根據(jù)信息資源類型的不同,提取文本內(nèi)容、文件名稱內(nèi)容進(jìn)行清洗,將需要的數(shù)據(jù)文件保存至HDFS文件夾下的相應(yīng)類型目錄下,以便數(shù)據(jù)存儲層和數(shù)據(jù)處理層的使用。
在文本清洗過程中,采用IKAnalyzer分詞技術(shù)對提取的文本內(nèi)容進(jìn)行切分[8-10],得到能夠代表該文件文本內(nèi)容特征的字、詞等,用t表示。同時去除無用的停用詞,組成一個特征向量(t1,t2,···,tn),其中,n表示特征項的數(shù)量。
通過關(guān)鍵詞提取算法TF-IDF(term frequencyinverse document frequency)計算輸入文本的特征權(quán)重,當(dāng)某個特征在一篇文本中出現(xiàn)概率(TF)高,而在別的文本出現(xiàn)概率(IDF,即逆文檔頻率)低,則該特征具備較好的文本區(qū)分能力,具體公式如下:
式中: TFIDFi,j為字詞ti相對于文檔j的權(quán)重wi; TFi,j為某個給定字詞ti在指定文檔中出現(xiàn)的次數(shù)占比,這個數(shù)字可以對詞數(shù)歸一化,防止偏向長文本; hi,j為該字詞在文本dj中出現(xiàn)的次數(shù);∑m1hk,j為文本dj中所有字詞出現(xiàn)的次數(shù)之和;k∈[1,m]為去除重復(fù)后的字詞索引;m表示去除重復(fù)后的關(guān)鍵詞總數(shù);IDF為字詞t的逆文檔頻率,|D|為文檔總數(shù)量;|{j : ti 2r Edj}|為包含字詞ti的文檔數(shù)量。
讀取數(shù)據(jù)庫清洗設(shè)置表中的關(guān)鍵詞和權(quán)重列表,將該權(quán)重列表作為模板權(quán)重向量。由于wi為字詞ti在文本中的權(quán)重,那么輸入文本就可以表示為一個以特征項 (t1,t2,t3,...,tn)為坐標(biāo)系的n維空間中的向量( w1,w,w3,...,wn)。通過計算2個不同文本向量之間的余弦相似度得到2個文本之間內(nèi)容的相似度:
式中:W1i表示輸入文本的權(quán)重向量,W2i表示模板權(quán)重向量。
清洗過程如圖7所示。
2.3.3 數(shù)據(jù)存儲層
HDFS中的文件在物理上是分塊(block)存儲的,客戶端上傳文件時文件會被切分成多個數(shù)據(jù)塊,這些數(shù)據(jù)塊存儲在若干個datanode服務(wù)節(jié)點中,且每一個block在集群中會存儲多個副本,這樣可以提高數(shù)據(jù)的可靠性及訪問的吞吐量(圖8)。
HDFS文件系統(tǒng)會給客戶端提供一個統(tǒng)一的虛擬目錄樹,客戶端通過路徑來訪問文件,目錄結(jié)構(gòu)及文件分塊位置信息(元數(shù)據(jù))由namenode節(jié)點來管理,namenode是HDFS集群主節(jié)點,負(fù)責(zé)維護(hù)整個HDFS文件系統(tǒng)的目錄樹,以及每一個路徑(文件)所對應(yīng)的數(shù)據(jù)塊信息(block_id及所在的datanode服務(wù)器)。讀取文件時通過訪問namenode節(jié)點中的映射關(guān)系來查找所有的數(shù)據(jù)塊。文件上傳后,提取每個文件的屬性信息,包括文件名稱、文件URL、文件目錄、文件內(nèi)容關(guān)鍵字、文件內(nèi)容、文件類型、文件來源、文件生成時間、文件大小、文件訪問權(quán)限以及文件刪除標(biāo)識等,并將這些屬性信息封裝成一個文件對象存儲至HBase中。
圖 8 文件存儲及讀取
2.3.4 數(shù)據(jù)處理層
數(shù)據(jù)處理層的任務(wù)主要是根據(jù)需要對保存的數(shù)據(jù)文件進(jìn)行處理并生成文檔對象,通過合理定義文檔的索引方式來確定文檔存儲位置,同時建立倒排索引,以便數(shù)據(jù)的快速查找和外部應(yīng)用的快速使用。
根據(jù)數(shù)據(jù)清洗層記錄的數(shù)據(jù)文件的存儲地址,利用文件解釋API(Application Programming Interface,應(yīng)用程序編程接口)進(jìn)行循環(huán)讀取和解析數(shù)據(jù)文件,提取文件屬性信息,將每個文件的屬性信息封裝成一個文檔對象,通過倒排索引保存至HBase中。在HBase中建立主表、索引表。主表用于存儲數(shù)據(jù)文件的相關(guān)屬性信息(數(shù)據(jù)文件的名稱、關(guān)鍵詞、內(nèi)容、大小以及類型等),索引表用于存儲倒排索引(圖9)。這種儲存數(shù)據(jù)的方式是為了便于數(shù)據(jù)的快速查找,以及外部應(yīng)用的快速使用,如全文檢索、統(tǒng)計分析、資源管理等。
圖 9 HBase表結(jié)構(gòu)
2.4.1 平臺界面設(shè)計
平臺界面設(shè)計主要針對軟件的交互管理界面,使其具備清晰的交互邏輯、友好的操作方式和簡潔的呈現(xiàn)效果,從而方便管理員對系統(tǒng)進(jìn)行管理操作,提升其良好的用戶體驗。圖10~11展示的為登陸界面及爬蟲設(shè)置管理界面。
圖 10 用戶登錄界面
圖 11 爬蟲設(shè)置界面
2.4.2 平臺可靠性設(shè)計
在平臺可靠性方面,項目組在爬取網(wǎng)址(URL)的選擇上優(yōu)先選取了國內(nèi)權(quán)威的防震減災(zāi)部門、科普機(jī)構(gòu)、政府、新聞媒體等官方網(wǎng)站,以保證爬取信息的準(zhǔn)確性;其次,通過數(shù)據(jù)清洗技術(shù)將爬取信息做更進(jìn)一步的過濾、篩選,提高搜索內(nèi)容的相關(guān)性;最后,加入專家評判功能,用戶可通過向?qū)<野l(fā)起信息咨詢確定資料的準(zhǔn)確性,從而提高平臺整體可靠性。
項目組通過開源的輕量級壓力對平臺進(jìn)行測試,采用Jmeter工具測試平臺對用戶并發(fā)訪問的承載能力。多次模擬并發(fā)量為3 000個用戶時,請求響應(yīng)平均耗時在300 ms左右,錯誤率為0;當(dāng)并發(fā)量為4 000個用戶時,請求平均耗時400 m左右,錯誤率接近30%。圖12與圖13分別是并發(fā)量為3 000和4 000時的測試結(jié)果。
在提高平臺搜索精度與效率方面,在全文檢索的過程中,搜索精度按照分類檢索和文件類型檢索2種方式,采用全字段匹配進(jìn)行精確查找,搜索結(jié)果精確度可達(dá)100%;而關(guān)鍵詞檢索是基于底層倒排索引及TFIDF算法進(jìn)行相似度運(yùn)算,全文檢索結(jié)果的精確度亦可達(dá)100%,全文檢索從發(fā)送請求至返回結(jié)果的平均響應(yīng)效率為835 ms/次(圖14)。
圖 12 并發(fā)量為3 000時的測試結(jié)果
圖 13 并發(fā)量為4 000時的測試結(jié)果
圖 14 Jmeter工具測試全文搜索效率
隨著信息化時代的到來,信息數(shù)據(jù)的重要性愈發(fā)突顯,防震減災(zāi)科普教育資源亟需有效整合、管理,提高科普資源科學(xué)性和創(chuàng)新科普宣傳方式、方法。本文提出并設(shè)計了防震減災(zāi)科普資源搜索指標(biāo),以此為基礎(chǔ)通過數(shù)據(jù)挖掘技術(shù)建立了防震減災(zāi)科普資源管理平臺。該平臺主要實現(xiàn)了信息檢索、收藏、上傳、下載等功能,可用于支持科普場館、學(xué)校和相關(guān)部門了解防震減災(zāi)科普宣傳工作相關(guān)信息,確定科普宣傳主題,更快速地收集所需素材,并將其制作成宣傳資料,協(xié)助開展科普宣傳工作。為滿足海量數(shù)據(jù)的篩選、分類、搜索等管理要求,本文主要采用了網(wǎng)絡(luò)爬蟲、IKAnalyzer中文分詞、VSM算法、倒排索引等技術(shù),實現(xiàn)防震減災(zāi)科普資源的科學(xué)管理。
下一步,項目組繼續(xù)優(yōu)化系統(tǒng)功能與平臺承載能力,降低多用戶訪問時的出錯率。同時,為了提高科普資源庫的利用率和科普資源的高效分類,計劃采用神經(jīng)網(wǎng)絡(luò)技術(shù)優(yōu)化資源分類目錄,并結(jié)合用戶對科普資源關(guān)鍵詞的搜索頻次,實現(xiàn)科普資源的智能化推送,完善資源庫功能。