文鑫濤 鄭通彥 王鐘浩 李華玥 李晨曦 呂文超
1)中國地震臺網(wǎng)中心,北京 100045
2)防災科技學院,河北三河 065201
基于地震災害評估報告、地震應(yīng)急基礎(chǔ)數(shù)據(jù)等形成的地震宏觀震情、災情等真實調(diào)查信息是災害評估和應(yīng)急處置建議等研究的重要參考依據(jù),但在深入分析災情特點和提出處置建議時,結(jié)構(gòu)化的數(shù)據(jù)形式仍存在諸多局限。
近年來,互聯(lián)網(wǎng)信息的抽取技術(shù)發(fā)展迅速,其主要分為基于模板的抽取方法和與模板無關(guān)的全自動抽取方法(張儒清等,2017)。封化民等(2005)提出含有位置坐標樹的Web頁面分析和內(nèi)容提取框架,在對網(wǎng)站信息的內(nèi)容提取時,考慮了位置特征和空間關(guān)系,并通過對120個網(wǎng)站的5000個網(wǎng)頁進行測試,結(jié)果表明該方法的準確率可達93.78%。張儒清等(2017)實現(xiàn)與模板無關(guān)的全自動抽取算法,并開展基于模板的抽取算法的融合研究,結(jié)果顯示,這種融合機制能有效提高抽取準確率,從而建立一個適用于任意網(wǎng)頁、具有實用價值的信息抽取框架。張愷航等(2019)引入通配符節(jié)點話題權(quán)重的Web新聞抽取方法,降低Web新聞內(nèi)容邊緣噪音文本的錯誤識別率,提高抽取的新聞內(nèi)容準確率。
目前Web提取與分析技術(shù)在其他相關(guān)領(lǐng)域得到了廣泛應(yīng)用,但在地震應(yīng)急領(lǐng)域方面的應(yīng)用較少(龐曉克等,2019)。因此,本文以災害地震目錄為基礎(chǔ),截取2010年1月1日至2019年12月31日發(fā)生的總計362個災害地震(圖1),以“發(fā)震時間、震中位置、震級”為關(guān)鍵詞,爬取百度搜索前100位的網(wǎng)頁正文文字內(nèi)容,實現(xiàn)歷史災害地震互聯(lián)網(wǎng)信息爬取、數(shù)據(jù)存儲的全流程自動化,即通過讀取歷史災害地震數(shù)據(jù)庫、自動生成搜索關(guān)鍵詞、依據(jù)關(guān)鍵詞生成搜索引擎地址鏈接、獲取該鏈接的前10頁(100條)URL地址,爬取、解析網(wǎng)頁正文文本內(nèi)容。此外,按照既定的文本清洗策略和文件存儲規(guī)則,對爬取到的數(shù)據(jù)進行預處理、數(shù)據(jù)清洗、分詞和統(tǒng)計歸類等工作。通過以上工作,一方面為震后災情網(wǎng)絡(luò)信息的快速獲取探索可實現(xiàn)的方法,另一方面通過“歷史災害地震網(wǎng)絡(luò)災情信息數(shù)據(jù)庫”的建立,為引入大數(shù)據(jù)分析方法提供一定的數(shù)據(jù)基礎(chǔ)。
圖1 爬取震例的震級和空間分布
根據(jù)歷史地震獲得的關(guān)鍵詞,從互聯(lián)網(wǎng)中抽取相關(guān)信息,再對相關(guān)信息進行文本數(shù)據(jù)的預處理,包含文本信息去重和清洗過濾垃圾文本等,建立地震網(wǎng)站信息基礎(chǔ)語料庫,并在此基礎(chǔ)上對地震信息進行統(tǒng)計與分析(張開敏,2014)。具體步驟如下:
(1)采用基于搜索引擎的信息獲取技術(shù),針對互聯(lián)網(wǎng)地震信息的特點,設(shè)計地震信息搜索鏈接的URL生成規(guī)則,并生成地震信息URL鏈接列表。對地震信息URL鏈接列表中的網(wǎng)頁站點進行訪問,針對網(wǎng)頁結(jié)構(gòu)一致性要求較高、算法復雜和實現(xiàn)效率較低的問題,采用并行的網(wǎng)頁解析算法,對網(wǎng)站信息進行批量化解析,建立地震信息基礎(chǔ)語料庫。
(2)使用Simhash算法,結(jié)合BP神經(jīng)網(wǎng)絡(luò)對地震信息基礎(chǔ)語料庫中的重復文本信息和垃圾文本信息進行清洗,形成去重過濾后的地震信息基礎(chǔ)語料庫,為下一步的數(shù)據(jù)規(guī)范化處理做好準備。
(3)讀取地震網(wǎng)站信息基礎(chǔ)語料庫,采用改進的TF-IDF算法對語料庫中的地震信息文本進行訓練、統(tǒng)計與分析,探索災害信息間的關(guān)聯(lián),挖掘地震文本中包含的人員傷亡、地質(zhì)條件、次生災害等災害發(fā)生后的急需信息,為震后互聯(lián)網(wǎng)災情信息快速獲取建立基礎(chǔ)(圖2)。
圖2 Web信息精確抽取與分析框架
2.1.1 基于百度搜索引擎的URL數(shù)據(jù)獲取
在互聯(lián)網(wǎng)時代,搜索引擎是獲取信息的最佳選擇,也是獲取地震Web信息的常用工具。百度、谷歌、必應(yīng)(bing)為常見的搜索引擎,其中百度搜索引擎支持中文編碼標準,基于字、詞結(jié)合的信息處理技術(shù)符合地震三要素的中文提取方式。同時,百度搜索引擎的檢索結(jié)果能夠標識出網(wǎng)頁的基本屬性(如標題、網(wǎng)址、時間、大小、編碼、摘要等),方便進行地震相關(guān)信息的提取。因此,本文采用基于百度搜索引擎的震后Web信息獲取技術(shù)。
基于歷史災害地震信息數(shù)據(jù)庫,獲取2010—2019年的所有地震震例的三要素信息,構(gòu)建地震關(guān)鍵詞基礎(chǔ)語料庫,再結(jié)合百度搜索鏈接的URL生成規(guī)則和基于禁忌搜索算法的爬蟲主題分析技術(shù),進行地震專題Web頁面URL數(shù)據(jù)獲取。
以2017年四川九寨溝7.0級地震為例,依據(jù)歷史災害地震數(shù)據(jù)庫數(shù)據(jù)“2017年8月8日四川九寨溝7.0級地震”,對其字符進行中文編碼,結(jié)合百度搜索鏈接的URL生成規(guī)則,進行URL的拼接,生成一級URL; 進一步采用Requests庫,基于一級URL地址對瀏覽器進行請求,獲得一級URL對應(yīng)的所有二級URL地址; 最后使用BeautifulSoup庫對二級URL地址中的HTML源文件進行解析,得到震后Web信息的二級URL元數(shù)據(jù)。表1 為根據(jù)地震關(guān)鍵詞信息所獲取的不同地震的二級URL數(shù)量。
表1 二級URL元數(shù)據(jù)爬取數(shù)量
2.1.2 網(wǎng)頁站點信息的精確抽取方法
基于二級URL元數(shù)據(jù)進行網(wǎng)頁正文信息的抽取是地震Web信息抽取的核心工作,對這些正文信息進行深入分析,可獲得更有價值的地震災害深層信息。
常用的正文抽取方法包括:采用DOM樹結(jié)構(gòu)抽取、應(yīng)用機器學習中的聚類分析抽取以及隱馬爾可夫模型等方法,這些方法或存在對網(wǎng)頁結(jié)構(gòu)一致性要求較高的問題,或存在算法復雜、實現(xiàn)效率較低的問題,對地震網(wǎng)頁信息的多源異構(gòu)和震后信息快速獲取要求時效性較高的情況均不適用。因此,本文采用了一種并行的異構(gòu)網(wǎng)頁解析算法,該算法基于數(shù)據(jù)并行的方案,通過將輸入數(shù)據(jù)劃分成多個部分,對其進行并行處理,再合并各個部分的結(jié)果以得到最終結(jié)果。
該算法的基本思想是將HTML文檔劃分成多個片段,每個片段包含1個或多個HTML單元,隨后使用傳統(tǒng)的串行解析算法同時解析多個片段,最后將片段的解析結(jié)果歸并得到此文檔最終的解析結(jié)果。以2017年四川九寨溝7.0級地震為例,對獲取到的1個二級URL內(nèi)容進行解析,算法的運行過程分為以下3個步驟:
(1)分段:逐字符地掃描HTML并找出所有“<”字符。將HTML分割成N個片段F1、F2、…、FN,其中每個FN均以“<”起始。由于地震文本信息中的地震三要素、地形地貌、人口信息與傷亡人數(shù)等關(guān)鍵信息大概率分布在不同的HTML標簽內(nèi),且內(nèi)容相對獨立,因此這些內(nèi)容被分割到了不同片段中,可以用于下一步的并行解析。
(2)并行解析:并行解析分段步驟所得到的片段F1、F2…FN,并將解析出的HTML單元放入全局集合R中(初始化為空)。對1個片段FK解析時,首先創(chuàng)建并初始化1個空白的有限狀態(tài)機FSMK,然后從FK的起始位置SFK開始,使用FSMK解析HTML文本。每解析出1個HTML單元U,將U加入R中,如果U引用了外部內(nèi)容(例如引用其他地震網(wǎng)站的數(shù)據(jù)信息),則根據(jù)引用的URL下載此內(nèi)容。
(3)歸并:為了保證最終結(jié)果的正確性,歸并是1個串行的過程。按照在HTML文檔中出現(xiàn)的順序?qū)中的HTML單元進行排序,隨后依次合并HTML單元形成DOM樹,并使用BeautifulSoup提取出所有的文本內(nèi)容,包括地震三要素、地形地貌、人口信息、傷亡人數(shù)等有用信息和一些無用信息(垃圾信息)。
基于上述并行異構(gòu)網(wǎng)頁解析算法,可對二級URL元數(shù)據(jù)所指向的HTML內(nèi)容進行正文信息的快速精確抽取,并建立地震信息基礎(chǔ)語料庫(圖3),并對2010—2019年地震web正文信息進行入庫操作,為后續(xù)數(shù)據(jù)清洗和分析操作提供數(shù)據(jù)支持。
圖3 地震信息基礎(chǔ)語料庫
在精確抽取后形成的地震網(wǎng)站信息基礎(chǔ)語料庫中,會產(chǎn)生許多地震重復文本信息和垃圾文本信息,而地震網(wǎng)站信息基礎(chǔ)語料庫是后期地震分析的基石,其準確性會影響后期研究結(jié)果的可靠性?;谥貜臀谋救ブ睾瓦^濾地震無關(guān)文本(垃圾文本)的原則,需要對地震網(wǎng)站信息語料庫進行信息清洗處理。
在去除冗余數(shù)據(jù)方面,首先對地震網(wǎng)站信息基礎(chǔ)語料庫進行數(shù)據(jù)預處理,過濾特殊字符和大量重復字符,如“地震”、“九寨溝”、“震級”、“@:”、“【】”等,并刪除多余空白。其次調(diào)用Python的jieba庫函數(shù),完成文本數(shù)據(jù)的分詞處理,并結(jié)合現(xiàn)有的“中文停用詞表”、“哈工大停用詞表”、“百度停用詞表”、“四川大學機器智能實驗室停用詞庫”等4個詞庫共3843個停用詞,去除文本中的空格、符號、亂碼及中、英文常用的停用詞。最后使用Simhash算法去除重復數(shù)據(jù),Simhash算法是當前公認去除重復數(shù)據(jù)的算法,該算法是一種局部敏感哈希算法,優(yōu)勢在于處理速度快、結(jié)果準確度高。
Simhash算法的具體實現(xiàn)為,對于2個給定的變量x、y,hash函數(shù)H總是滿足
PrH∈F(H(x)=H(y))=Sim(x,y)
(1)
其中, Pr表示H(x)=H(y)的可能性,Sim(x,y)∈[0,1]為相似度函數(shù)。
該算法可以將高維的地震文本數(shù)據(jù)進行概率性的降維,并映射成為位數(shù)少且固定的指紋,隨后再對指紋進行相似度計算、比較,其結(jié)果可以反映地震文本數(shù)據(jù)間的相似度。本文使用海明距離算法進行地震文本的相似度計算(張彥波,2018),假設(shè)有2個等長(長度為K)的地震數(shù)據(jù)信息:A=(九,寨,溝,地,震)、B=(阿,左,旗,地,震),二者的海明距離為
(2)
其中,SK表示為
(3)
式中,aK和bK分別代表A、B語句中的字符。因此,文檔A和文檔B的海明距離為3。
對于垃圾文本過濾,本文采用Word2vec方法中的CBOW模型構(gòu)造詞嵌入文本特征矩陣,將各詞向量相加作為文本的向量,進行文本特征提取(圖4)。
圖4 CBOW詞嵌入模型
采用BP神經(jīng)網(wǎng)絡(luò)結(jié)合地震文本特征矩陣,構(gòu)建地震信息垃圾文本過濾模型,首先使用BP神經(jīng)網(wǎng)絡(luò)分類器處理地震文本信息,再對文本進行分類。BP神經(jīng)網(wǎng)絡(luò)主體由輸入層、隱藏層和輸出層組成,各層之間采用權(quán)值為W的連接線連接,結(jié)合sigmoid激活函數(shù),分類并檢測出垃圾文本。
BP神經(jīng)網(wǎng)絡(luò)分類器的基本原理為,輸入數(shù)據(jù)Xi通過隱藏層作用于輸出層,經(jīng)過非線性變換輸出的值包括輸入向量X和期望輸出值t、輸出值Y與期望輸出值t之間的偏差,通過調(diào)整各層的權(quán)重值Wij(輸入層—隱藏層)、Wjk(隱藏層—輸出層)以及閾值,經(jīng)過反復學習訓練確定誤差最小的權(quán)值和閾值。
隱藏層輸出模型表示為
Oj=f(∑Wij×Xi-θj)
(4)
輸出層輸出模型表示為
Yj=f(∑Tjk×Oj-θk)
(5)
其中,f表示非線性作用函數(shù);θ表示神經(jīng)單元閾值。
激活函數(shù)本文用到(0,1)內(nèi)連續(xù)取值的sigmoid函數(shù),即
(6)
爬取網(wǎng)頁數(shù)量最多的前10個震例URL元數(shù)據(jù)與經(jīng)過去重過濾后的URL數(shù)量的對比,如表2 所示,去重過濾后的地震網(wǎng)站信息基礎(chǔ)語料庫為下一步的數(shù)據(jù)規(guī)范化處理奠定了基礎(chǔ)。
表2 URL數(shù)量對比
通過Simhash算法已經(jīng)刪除掉大量重復信息,但網(wǎng)頁中通常還存在一些與“人員傷亡、地質(zhì)條件、次生災害”等無關(guān)的干擾信息。地震文本內(nèi)的信息通常為非結(jié)構(gòu)化的數(shù)據(jù),因此本文采用了基于詞頻與逆文檔頻率的關(guān)鍵字提取算法(Term Frequency-Inverse Document Frequency,TF-IDF)對干擾信息進行清除。結(jié)合信息論中的信息熵和相對熵2個概念,同時引入詞語位置權(quán)重因子,采用基于TF-IDF的改進算法對地震文本信息中的地形地貌、人口信息與傷亡人數(shù)進行抽取。
使用TF-IDF算法對地震文本信息進行計算,首先需計算地震文本信息中每個單詞的出現(xiàn)頻率。假設(shè)所有地震文本信息中共有words個單詞,其中某個單詞的出現(xiàn)次數(shù)為counter,那么該單詞的詞頻TF的計算公式為
(7)
其次,需要計算地震文本信息的逆文檔頻率(IDF)。假設(shè)共有docs條地震文本信息,其中包含某個詞的地震文本信息條數(shù)為have_docs,那么該單詞的逆文檔頻率IDF的計算公式為
(8)
最后,計算出TF-IDF的整體詞頻值,計算公式為
TF-IDF=TF×IDF
(9)
根據(jù)上述公式可以發(fā)現(xiàn),如果一個詞越常見,那么分母就會越大,逆文檔頻率就越小,對TF-IDF頻率的影響則越小。
根據(jù)歷史災害地震,選取爬取到的337例地震文本信息中的9731個字作為TF-IDF算法的訓練樣本,對地震文本形信息中的地形地貌、人口信息與傷亡人數(shù)進行抽取。
針對2010—2019年360個歷史災害地震,共搜索得到29565個頁面信息,其中有337個地震可以爬取出有效的文本數(shù)據(jù),可通過Web信息自動抽取方式抽取出文字內(nèi)容的網(wǎng)頁有9731個(圖5),經(jīng)文本數(shù)據(jù)清洗處理后,實際共解析得到2480567字,有效震例和文本數(shù)據(jù)的總量較為可觀。
圖5 2010—2019年災害地震網(wǎng)頁搜索和文字內(nèi)容提取情況
當以100個頁面為限時,平均每個震例通過百度搜索得到的網(wǎng)頁數(shù)為82.125個,可以解析出7360.7個有效文字,為進一步文本分析和數(shù)據(jù)挖掘工作提供了豐富的數(shù)據(jù)基礎(chǔ)。
以“發(fā)震時間、震中位置、震級”為關(guān)鍵詞進行百度搜索,當“震中位置”為空值時,搜索引擎會采用模糊搜索策略(模糊搜索策略指當搜索關(guān)鍵詞不存在時,擴大搜索范圍),搜索內(nèi)容的精確性存在一定偏差,因此不作為進一步分析的樣本。
通過計算爬取網(wǎng)頁個數(shù)、爬取文字字數(shù)與地震發(fā)生時間、震中位置和震級之間相關(guān)系數(shù)(表3),可以看出通過互聯(lián)網(wǎng)爬取的地震信息與目標地震的發(fā)震時間和震級相關(guān)性較低,但結(jié)合爬取的網(wǎng)頁信息散點圖(圖6)分析,爬取網(wǎng)頁的信息量與震中所在省份緊密相關(guān),因此可以通過該手段較穩(wěn)定地獲取地震相關(guān)信息。
表3 地震參數(shù)與爬取效果的相關(guān)系數(shù)
圖6 爬取網(wǎng)頁信息字數(shù)散點圖
同時,基于信息論的改進TF-IDF信息抽取算法對于地震文本信息的抽取有可靠的精度,能夠成功對地震文本信息中的地質(zhì)地貌、人口信息與人員傷亡信息進行提取(表4)。
表4 地震文本信息抽取結(jié)果(以2017年九寨溝7. ̄0級地震為例)
本文提出了一種基于百度搜索引擎、以地震信息作為關(guān)鍵詞的地震信息獲取與并行的網(wǎng)頁解析算法,采用Simhash算法去重、word2vec結(jié)合BP神經(jīng)網(wǎng)絡(luò)過濾垃圾文本和TF-IDF算法對獲取到的地震信息文本進行處理與分析。實驗表明,該算法能夠準確且有效地提取互聯(lián)網(wǎng)上存在的“人員傷亡、地質(zhì)條件、次生災害”等地震文本信息,并進行統(tǒng)計分析,生成地震文本信息的關(guān)鍵詞以及歷史災害地震網(wǎng)絡(luò)災情信息數(shù)據(jù)庫。但該方法在數(shù)據(jù)抽取的速度、地震應(yīng)急災情網(wǎng)絡(luò)的形成速度等方面仍有欠缺,對此還需要進行深入的研究。