曹愷祺 李佳靜
摘要:近年來,我國能源行業(yè)的安全生產(chǎn)責(zé)任事故層出不窮。為了能將相關(guān)事故盡可能快速有效地匯報相關(guān)部門,必須對互聯(lián)網(wǎng)上關(guān)于能源行業(yè)的事故新聞做到實時的監(jiān)控。該文提出了一套對互聯(lián)網(wǎng)上能源行業(yè)事故實時抓取分析的事故監(jiān)控系統(tǒng),采用機器學(xué)習(xí)與規(guī)則匹配相結(jié)合的文本挖掘技術(shù)來分類新聞事件,采用改進后的新聞事件分類方法比單純使用機器學(xué)習(xí)的方法在準確率和召回率都有顯著提升。文章最后提出系統(tǒng)實現(xiàn)的框架,并提出改進意見。
關(guān)鍵詞:文本表示;特征提??;SVM分類器;規(guī)則過濾
中圖分類號:TP391 文獻標識碼:A 文章編號:1009-3044(2016)03-0061-04
1 背景
能源行業(yè)主要包括煤炭行業(yè),石油行業(yè),電力行業(yè),核電行業(yè)和新能源行業(yè),隨著我國經(jīng)濟的快速發(fā)展,國內(nèi)各個領(lǐng)域?qū)τ谀茉吹男枨笠彩桥c日俱增,也促成了我國能源行業(yè)的快速發(fā)展。但有些能源生產(chǎn)單位只注重產(chǎn)量,對能源的安全生產(chǎn)缺少科學(xué)管理,導(dǎo)致能源行業(yè)事故時有發(fā)生。
總體而言,對于能源的開采工作都是一些高風(fēng)險的作業(yè),一旦發(fā)生事故,不僅會對企業(yè)造成巨大經(jīng)濟損失,而且會造成巨大的環(huán)境破壞。因此,消除和控制能源行業(yè)的安全生產(chǎn)事故,降低能源行業(yè)事故造成的影響,有效保護環(huán)境,已經(jīng)是政府和相關(guān)能源生產(chǎn)單位的當務(wù)之急。
在當下,政府對于能源行業(yè)安全生產(chǎn)相關(guān)事故的關(guān)注,一般是通過相關(guān)生產(chǎn)部門的匯報以及能源行業(yè)相關(guān)網(wǎng)站的報道。但是由于能源行業(yè)涉及的部門眾多,層級復(fù)雜,當基層部門發(fā)生安全生產(chǎn)事故時,無法及時有效地做到對上級通報實時情況。通過瀏覽相關(guān)能源事故網(wǎng)站的方法可以及實地了解底層生產(chǎn)安全的狀況,但是相關(guān)網(wǎng)站通報的信息繁雜,安全事故信息零星地分散在各個網(wǎng)站上,無法做到信息的分類與匯總。所以,對于密切關(guān)注能源生產(chǎn)安全事故的政府部門以及相關(guān)責(zé)任部門來說,擁有一套可以實時監(jiān)控能源安全事故發(fā)生,并且可以根據(jù)事故的類型做分類與匯總的監(jiān)控系統(tǒng)系統(tǒng),是十分必要的。
本文主要介紹能源行業(yè)安全事故網(wǎng)上監(jiān)控系統(tǒng)的設(shè)計架構(gòu)以及核心分類算法。該系統(tǒng)的主要目的是抓取現(xiàn)各大搜索引擎以及能源行業(yè)門戶網(wǎng)站中的新聞,對抓取的新聞進行事故的識別以及事故的分類,對分類后的信息匯總到系統(tǒng)的客戶端上,對用戶實時展示。本文安排如下:介紹使用機器學(xué)習(xí)方式對文本進行分類算法的研究方法和研究現(xiàn)狀,并介紹如何利用機器學(xué)習(xí)與規(guī)則相結(jié)合的方法來提高文本分類的準確性,最后介紹系統(tǒng)的架構(gòu)以及采用的技術(shù)。
2 文本分類相關(guān)技術(shù)
2.1 文本分類
描述信息技術(shù)的發(fā)展使得互聯(lián)網(wǎng)成為人們獲取信息的重要手段,但互聯(lián)網(wǎng)上的信息量十分巨大,而且大多沒有次序,人們很難快速找到有效的信息。為了應(yīng)對巨大的信息量,許多文本分類技術(shù)應(yīng)運而生,其中,利用機器學(xué)習(xí)按照文本內(nèi)容實現(xiàn)文本自動分類是解決信息快速檢索的途徑之一[1,2]?;跈C器學(xué)習(xí)的自動方式主要是通過對若干不同類別文本的學(xué)習(xí),自動建立特征詞庫。而且當供學(xué)習(xí)的樣本文本更新后,通過重新學(xué)習(xí)就可自動更新特征詞庫,以適應(yīng)對新的文本類別的分類識別[3]。
目前,應(yīng)用于文本分類的技術(shù)和算法很多,例如有樸素貝葉斯算法,K 最近鄰算法,神經(jīng)網(wǎng)絡(luò),支持向量機(Support Vector Machine 即 SVM) 等。其中,支持向量機(SVM)是依托統(tǒng)計學(xué)習(xí)理論的基礎(chǔ),根據(jù)有限的信息條件得到較好的結(jié)果[4]。SVM分類算法是以結(jié)構(gòu)風(fēng)險最小化為目標,所求得的解是全局最優(yōu)解,該算法克服“維數(shù)災(zāi)難”問題,有比較深厚的理論基礎(chǔ)。文本自動分類的概念可以歸納為[5]: 在確定的分類目標下,將待分類的網(wǎng)頁文本根據(jù)內(nèi)容自動的劃分到某個類別中,使得網(wǎng)頁文本具有正確的標簽。文本分類是個有監(jiān)督的學(xué)習(xí)過程,在構(gòu)建自動分類的系統(tǒng)之前,需要通過對足夠量的現(xiàn)有文本進行類別的標注,構(gòu)造訓(xùn)練集,以已構(gòu)造的訓(xùn)練集為基礎(chǔ),通過分類器找出文本類別與文本特征之間的關(guān)系,然后利用這個關(guān)系模型對新的文本進行類別的判斷。
2.2 文本特征提取
為了將文本表示成文本分類器所是別的形式,通常文本以向量的形式出現(xiàn)在向量空間模型里,向量空間模型有以下要素構(gòu)成:
1)文檔:由一定數(shù)量的文字片段構(gòu)成,像由若干句子、句群、段落和整篇文章構(gòu)成的文檔。
2)特征項:向量空間模型中最基本且不可分的單位是特征項,字、詞、短語都能做特征項。
3)項的權(quán)重:文檔D(t1,t2,...tn)中有n個特征項,其中每一個特征項tk,都依據(jù)它們在文檔中的重要程度,被賦予相應(yīng)的權(quán)重,表示為D (Wl,W2,...,Wn)。
因此一個文檔可以表示成n維向量空間中的一個向量,可以將D=D (Wl,W2,...,Wn)稱為文本D的向量空間模型或者向量表示。通常待分類的文本可以表示為特征空間中的一個特征向量,而其中混雜的大量高維的無關(guān)特征將影響分類模型的分類效果。為了降低向量空間的維度,消除無關(guān)特征的噪音,需要對特征向量進行特征選擇,通過選擇可區(qū)分性強的少量特征來提高分類器的分類精度和效率。對于大規(guī)模文本的分類處理,常使用的是過濾式特征選擇方法[6]。其原理是首先計算各個特征的權(quán)重,然后選取高于設(shè)定閾值的最重要特征用于分類。典型過濾型特征選擇方法有基于文檔頻率的方法與基于互信息的方法。
文本特征提取過程中,需要對提取具體的特征項賦予一定的權(quán)重,特征權(quán)重是衡量某特征項在文檔中的重要程度的一種量化指標。?;谖谋镜慕y(tǒng)計信息來計算該權(quán)重,其主要方法是先統(tǒng)計詞頻,再為每個特征項賦予一個合適的權(quán)重。比較常用的計算特征權(quán)重的方法有基于詞頻的方法,計算逆文檔頻度[7]的方法和TF-IDF[8]。
2.3 支持向量機理論
SVM 算法是Vapnik和其領(lǐng)導(dǎo)的貝爾實驗室小組在 1995年提出的一種基于統(tǒng)計學(xué)習(xí)理論的新型的通用學(xué)習(xí)方法,它是基于統(tǒng)計學(xué)習(xí)理論的 VC 理論和結(jié)構(gòu)風(fēng)險最小化原理的基礎(chǔ)上發(fā)展起來的。支持向量機主要思想在于試圖尋找一個最優(yōu)的分類決策面,該分類決策面能夠使得邊距最大化[9]。SVM的基本原理如圖1所示:
圖1中的空心圓點和黑心圓點代表兩類不同類別的樣本; H 為分類線,H1H2分別為平行于分類線的直線,它們經(jīng)過離分類線最近的那些少量的樣本點,兩間距離稱為分類間隔。H線將兩個不同的類正確隔離,同時使分類間隔最大化。設(shè)樣本集為 ( xi,yi) ,i = 1,2,…,m,yi∈{-1,1},并滿足公式1:
[yi[(w*xi)-b]-1≥0] (1)
則該分類的間隔是,其最大間隔可簡化為求的最小值,H1,H2兩條線上的訓(xùn)練樣本點稱為支持向量,SVM訓(xùn)練的結(jié)果是找到一組支持向量,使得向量間的間隔達到最大值。
2.4 規(guī)則定義
由于SVM分類器的精準度受到訓(xùn)練樣本數(shù)量和使用不同的核函數(shù)的影響,分類的效果可能與實際有一定的偏差。在對SVM的分類結(jié)果進一步使用人工定義的語義規(guī)則進行進一步的過濾,可以有效提高精準率和召回率。本文使用TML文本挖掘語言構(gòu)造語義規(guī)則,根據(jù)語義規(guī)則從文本中篩選出符合規(guī)則的語義要素,實現(xiàn)文本自動分類。
TML是一個自然語言處理平臺,旨在提供一種簡單通用的途徑,讓用戶在各個領(lǐng)域進行文本分析和語義挖掘[10]。類似于使用SQL對關(guān)系型數(shù)據(jù)庫進行建模和分析計算一樣,可以使用TML語言對網(wǎng)絡(luò)文本中的語義進行建模和分析計算。TML實現(xiàn)了大部分常用的文本挖掘技術(shù),包括分詞,詞性標注,概念抽取,關(guān)系抽取,分類,情感分析,關(guān)鍵詞抽取和主題模型等,可以廣泛用于文本挖掘,語言分析和自然語言處理等領(lǐng)域。
3 系統(tǒng)架構(gòu)
與能源安全事故分類的實現(xiàn)能源行業(yè)安全事故網(wǎng)上監(jiān)控系統(tǒng)的事故新聞主要來源于各大能源行業(yè)的安全事故網(wǎng)站和各大新聞搜索引擎,通過爬蟲技術(shù)獲得上述網(wǎng)站的相關(guān)新聞文本,提交給系統(tǒng)進行文本的預(yù)處理和手工類別標注,得到符合規(guī)范的SVM訓(xùn)練語料對SVM分類器進行訓(xùn)練,當訓(xùn)練語料的數(shù)量達到一定數(shù)量使得分類器的精準率和召回率達到預(yù)期的要求后,便可使用訓(xùn)練好的分類器對向量化的文本進行分類,確定文本中描述的事故屬于哪一類安全生產(chǎn)事故。分類結(jié)束后,在對分類器的分類結(jié)果,使用已經(jīng)定義好的規(guī)則進行再次過濾,篩選出符合規(guī)則要求的文本。最后將分類的結(jié)果展示在系統(tǒng)網(wǎng)頁上。系統(tǒng)分為網(wǎng)頁文本挖掘模塊,文本分析模塊與網(wǎng)站展示模塊,系統(tǒng)總體架構(gòu)如圖2:
3.1 文本挖掘模塊
本系統(tǒng)所需要提取的語料應(yīng)該是與能源行業(yè)事故有關(guān)的新聞報道,文本挖掘模塊要從海量數(shù)據(jù)中提取與能源事故相關(guān)的新聞報道,進行網(wǎng)站抓取,對抓取下來的新聞進行分詞,特征選取,文本向量化表示,最后把向量化的文檔提交到SVM處理。
文本挖掘過程中抓取的數(shù)據(jù)源來自煤炭安全網(wǎng),國家石油和化工網(wǎng)等政府網(wǎng)站,還有百度,搜狗等國內(nèi)主流搜索引擎。爬蟲得到的文本不具有任何類別特性,需要對爬取的文檔進行中文分詞,對文本中的所有詞進行特征抽取,最后將向量化的文本提交給SVM進行處理。在中文分詞階段采用python語言的”結(jié)巴”分詞工具進行分詞,針對分詞后的單個詞語,使用TF-IDF計算出單個詞的權(quán)重,最后文檔便可表示成由詞權(quán)重組成的向量。
3.2 文本分類
能源行業(yè)主要包括石油化工行業(yè)、電力行業(yè)、核電行業(yè)、煤炭行業(yè)和新能源行業(yè),系統(tǒng)的文本分類模塊主要針對這五個比較常見的能源行業(yè)進行分類,SVM的訓(xùn)練集和測試集都應(yīng)來源于這五個能源行業(yè),語義規(guī)則也應(yīng)該按照這五個行業(yè)的事故特征進行定義。
系統(tǒng)的SVM分類器使用臺灣大學(xué)林智仁副教授開發(fā)的LIBSVM模式識別軟件包完成,該軟件包具有跨平臺,支持多種語言,并且對SVM所涉及的參數(shù)調(diào)節(jié)相對比較少的特征。使用LIBSVM實現(xiàn)文本分類的過程如下:
1)針對量化后的文檔,手動標注一定量的訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集,使其具有類別標簽。
2)選擇文本訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集,這些數(shù)據(jù)來自于手工標注的文本文檔,所有數(shù)據(jù)的類別標簽都是已知的。
3)訓(xùn)練文本預(yù)處理,將文本集轉(zhuǎn)化為特征向量集的形式。并選擇文本分類所使用的特征向量,選出的特征向量在多個類別之間具有一定的區(qū)分度。
4)輸出LIBSVM支持的量化的訓(xùn)練樣本集文件,輸出的文件必須滿足使用LIBSVM訓(xùn)練所需要的數(shù)據(jù)格式。
5)測試數(shù)據(jù)集預(yù)處理,同樣將測試數(shù)據(jù)集轉(zhuǎn)化為特征向量集的形式。
6)輸出LIBSVM支持的量化的測試樣本集文件。
7)使用訓(xùn)練集訓(xùn)練LIBSVM分類器。
8)使用測試集驗證LIBSVM分類器的精度。
9)如果經(jīng)過LIBSVM訓(xùn)練出來的分類模型精度很差,可以通過LIBSVM自帶的交叉驗證功能來實現(xiàn)參數(shù)的尋優(yōu),通過搜索參數(shù)取值空間來獲取最佳的參數(shù)值,使分類模型的精度滿足實際分類需要。
經(jīng)過LIBSVM分類模型分類后的文本還需要經(jīng)過規(guī)則的優(yōu)化,去除掉一些由于SVM分類精度不足而錯誤分類的文本,系統(tǒng)中采用TML文本挖掘語言實現(xiàn)規(guī)則的編寫,TML可以自定義上下文的語義環(huán)境,從而可以自定義語義規(guī)則和語義關(guān)系。我們把符合語義規(guī)則的文本篩選出來,從而提高文本分類的準確率與召回率。
在使用規(guī)則進行過濾SVM結(jié)果的過程中,我們采用TML語言來定義語義規(guī)則。新聞中的語義要素一般以一定的格式出現(xiàn),例如新聞首句一般介紹相關(guān)事故的發(fā)生時間地點,以“*年*月*日**地點”的格式出現(xiàn),相關(guān)責(zé)任單位一般以“***有限責(zé)任公司”的形式出現(xiàn),如果文章中出現(xiàn)“瞞報”,“隱瞞未報”等字眼時,表示這場事故有瞞報的嫌疑,還有如果出現(xiàn)“造成**受傷”,可匹配出傷亡人數(shù)。如匹配傷亡人數(shù)的tml語義規(guī)則為:
CONCEPT create := OR("造成","已有","另有","已致","導(dǎo)致");
CONCEPT worker := OR("工人","礦工","人","名工作人員","學(xué)生");
CONCEPT death :=OR("死亡","受傷","遇難","被困","沒有出來","倒地","生死不明","中毒","身亡","傷亡","灼傷","重傷");
PREDICATE death_num_2(create c , worker w , death d){
DIST_8(ORD(c,w,d)));}
規(guī)則中先定義表示“發(fā)生”的概念,命名為create;又定義了工人對象的概念,命名為worker;最后定義表示遇難的概念,命名為death;最后的關(guān)系表示如果create,worker,death三個概念表示的詞語按順序出現(xiàn),并且兩個概念中間間隔的詞不超過8個,就匹配到了文中表示傷亡的語句。
最后還應(yīng)該對得出的事故類型應(yīng)該與SVM分類器得到的分類結(jié)果一致,如果分類結(jié)果不一致,則按照規(guī)則得到的事故類型作為分類最后的結(jié)果展示。與事故類型一同展示的還有由規(guī)則得到的事故發(fā)生時間,發(fā)生地點,相關(guān)企業(yè),是否瞞報,傷亡人數(shù)這些語義要素。
3.3 結(jié)果展示
根據(jù)以上的技術(shù)框架,我們以單純使用機器學(xué)習(xí)做分類的方式與使用機器學(xué)習(xí)與規(guī)則相結(jié)合做分類兩種方式來對實驗數(shù)據(jù)進行分類展示,實驗的訓(xùn)練集為爬蟲得到的1000個各類能源安全事故新聞,測試數(shù)據(jù)同樣規(guī)定為1000條各類能源安全事故新聞。錄入訓(xùn)練集后,我們把1000條測試集作為樣本總量,從SVM分類結(jié)果中計算出正確分類的總數(shù)來計算準確率和召回率。本實驗平臺基于LIBSVM,使用LIBSVM的python接口函數(shù)實現(xiàn)機器分類。試驗中影響分類果的主要是文本分類的準確率和召回率,準確率和召回率計算公式為:
測試數(shù)據(jù)需要打上對應(yīng)能源類型的標簽。系統(tǒng)的結(jié)果是把抓取的新聞分為石油化工行業(yè)能源事故、電力行業(yè)能源事故、核電行業(yè)能源事故、煤炭行業(yè)能源事故和新能源行業(yè)能源事故五種事故類型,測試數(shù)據(jù)同樣需要事先標注好事故類型,最后計算精準率與召回率時,分別根據(jù)不同的行業(yè)類型計算。
正確劃分的樣本會經(jīng)過機器分類與規(guī)則的過濾,最后呈現(xiàn)在系統(tǒng)上。我們把單純使用機器學(xué)習(xí)分類與使用機器學(xué)習(xí)與規(guī)則相結(jié)合的方式進行對比,針對1000篇測試數(shù)據(jù),實驗得到的準確率與召回率如表1:
經(jīng)實驗結(jié)果得知使用機器分類與規(guī)則結(jié)合的方式準確率有所提高。除了對行業(yè)類別進行劃分外,規(guī)則還對文檔中的事故時間,事故地點,相關(guān)事故企業(yè),有無瞞報這些語義要素進行了識別。分析出這些語義要素后,可以更加直觀地反映出事故發(fā)生的情況,用戶可以更加直觀地了解事故概況。
4 結(jié)束語
能源行業(yè)安全事故網(wǎng)上監(jiān)控系統(tǒng)旨在向政府部門以及關(guān)心能源安全的各種社會機關(guān)提供互聯(lián)網(wǎng)上實時的能源安全事故快報,系統(tǒng)核心算法是基于SVM的文本分類算法與基于規(guī)則的類別識別方法,將兩者結(jié)合起來使用不僅可以改善機器分類精準率不高的缺點,也可以克服規(guī)則適應(yīng)性不強的問題。分類結(jié)果受限于機器學(xué)習(xí)所使用的訓(xùn)練樣本數(shù)量以及規(guī)則定義的好壞,在今后的工作中需要提高訓(xùn)練樣本數(shù)量和規(guī)則的質(zhì)量,以提高系統(tǒng)分類準確率和召回率。
參考文獻:
[1] Nathan Bell, Yu Yizhou. Particle - based simulation of granularmaterials[J]. ACM SIGGRAPH Eurographics Symposium onComputer Animation, 2005: 8-198.
[2] Rahul Narain, Abhinav Golas. Free Flowing Granular Materials with Two-Way Solid Coupling[J]. ACM SIGGRAPH Asia. 2010:6- 29.
[3] 袁曉曦. 基于機器學(xué)習(xí)的Web文本自動分類[J]. 軟件導(dǎo)刊, 2011(1): 26-28.
[4] 宋靜. 支持向量機的應(yīng)用研究[J]. 電腦知識與技術(shù), 2012(33),194-196+199.
[5] Rahul Narain, Abhinav Golas. Free Flowing Granular Materialswith Two-Way Solid Coupling[J]. ACM SIGGRAPH Asia, 2010: 29-6.
[6] 張?zhí)? 基于關(guān)聯(lián)分析的文本分類特征選擇算法[J]. 計算機工程, 2010(22): 184-186.
[7] 陳慶軒. 中文文本分類中基于文檔頻度分布的特征選擇方法[C]. 黑龍江省計算機學(xué)會年學(xué)術(shù)交流年會論文集, 2009.
[8] 覃世安, 李法運. 文本分類中 TF-IDF 方法的改進研究[J]. 現(xiàn)代圖書情報技術(shù), 2013, 29(10): 27-30.
[9] 王義忠, 劉循, 吳迪. 一種改進的SVM文本分類算法[J]. 現(xiàn)代計算機: 普及版, 2014(9): 16-20.
[10] 孟濤, 李佳靜. TML: 一種高校的文本挖掘語言[J]. 計算機研究與發(fā)展, 2015(3): 553-560.