潘 杰, 楊超宇
(安徽理工大學(xué) 經(jīng)濟與管理學(xué)院,安徽 淮南 232000)
瓦斯事故是煤礦生產(chǎn)過程中的重要隱患之一,當(dāng)瓦斯達到某種極限值濃度時將會導(dǎo)致人員呼吸停止,而且其爆炸濃度的區(qū)間范圍較廣,遇火極易發(fā)生爆炸.隨著我國經(jīng)濟快速發(fā)展以及對煤炭需求依賴大,在此過程中需不斷地增加煤礦采量,而瓦斯氣體爆炸所引起災(zāi)害的危險概率也越來越高,經(jīng)近年來的研究,井下安全事故不再頻發(fā),盡管如此,一旦井下發(fā)生安全事故,死亡率還是比較高的,所以需要采取有效的措施來防止瓦斯事故的發(fā)生,保障煤炭安全開采[1-3].
近年來,在生產(chǎn)生活中的各大領(lǐng)域,數(shù)據(jù)挖掘技術(shù)都得到了廣泛的應(yīng)用.煤礦瓦斯的治理工作具有重大的現(xiàn)實意義,采用數(shù)據(jù)挖掘方法對瓦斯事故調(diào)查報告進行分析并找出其中關(guān)鍵因素,能夠保障煤礦的安全開采[5-6].
對瓦斯事故調(diào)查報告采用數(shù)據(jù)挖掘方法進行分析,其基本流程如下:字符識別,結(jié)巴分詞,關(guān)聯(lián)規(guī)則分析.如圖1所示.
圖1 基本流程Figure 1 Basic process
在對瓦斯事故調(diào)查報告進行字符識別之前,需要導(dǎo)入pymupdf,fitz這兩個庫將其pdf格式轉(zhuǎn)化為圖片格式,方便之后的字符識別.
本文采用了場景文本識別(STR)技術(shù)對圖片格式的瓦斯事故調(diào)查報告進行字符識別,場景文本識別是在自然場景中識別文字,與傳統(tǒng)的光伏字符識別(OCR)相比較,STR需應(yīng)對自然場景中字體多樣、多方向和背景復(fù)雜等多種因素,具有強穩(wěn)定性和魯棒性,而且基于深度學(xué)習(xí)的STR在識別中具有精度高和效率快的特點.
1.1.1 場景文本識別(STR)模型
現(xiàn)大多數(shù)的場景文本識別模型都是基于解碼-編碼框架,此框架主要能夠解決序列-序列(Sequence-sequence)的問題.如圖2,首先Encoder編碼是將原始序列(x1,x2,...)轉(zhuǎn)變?yōu)橐粋€長度不變的語義編碼,最后Decoder解碼是將其再轉(zhuǎn)化為終指序列(y1,y2,...).本文瓦斯事故調(diào)查報告的圖片文字識別就是一個序列-序列的典范.
圖2 編碼-解碼框架Figure 2 Encoder-Decode frame
通常編碼-解碼框架的文本識別模型是基于CRNN模型的,主要是由CNN(卷積神經(jīng)網(wǎng)絡(luò))和RNN(循環(huán)神經(jīng)網(wǎng)絡(luò))構(gòu)成的,先是利用CNN,接著利用一個雙向RNN來特征編碼,最后利用一個單向RNN來進行解碼操作.CRNN網(wǎng)絡(luò)模型結(jié)構(gòu)如圖3所示.
圖3 場景文本識別代表模型Figure 3 Representative model of scene text recognition
1.1.2 STR的評價標準
對于場景文本識別,采用的識別評價指標是正確率(accuracy),其計算公式:
(1)
其中:M代表數(shù)據(jù)集中正確識別的樣本數(shù)目,N代表數(shù)據(jù)集中所有樣本數(shù)目.
1.1.3 STR中的Attention機制
在場景文本識別中采用Attention機制可以大幅增強識別的準確率.注意力機制是指在編碼時采用局部來替代全局注意力,再通過單向長短記憶網(wǎng)絡(luò)來解碼.在解碼時,假設(shè)圖片輸入的序列幀為S={h0,h1,…,ht},長度為T.在解碼t-th時,解碼層輸出結(jié)果的計算:
yt=Generate(st,gt)
(2)
其中:st為遞歸網(wǎng)絡(luò)中隱節(jié)點的時間狀態(tài),st的計算公式為:
s1=RNN(yt-1,gt,st-1)
(3)
其中:gt代表一些編碼序列H={ht-1,ht,ht+1}加權(quán)卷積后的平均輸出,gt的計算公式為:
gt=Average(W1?[at,j-1hj-1,αt,jhj,αt,jhj+1],…,
Wk?[at,j-1hj-1,αt,jhj,αt,jhj+1])
(4)
其中:αt為attention機制的權(quán)重因子,計算為:
ei,j=vTtanh(Wst-1+Vhj+b)
(5)
(6)
其中:W,V,b都是可訓(xùn)練參數(shù),W和V為權(quán)值矩陣,v為一個向量.
編碼器所輸出的每項內(nèi)容都具有重要性,其可通過注意權(quán)重來正確反映.通過將權(quán)重作為系數(shù),解碼器將H的列線性組成一個向量aglance.
(7)
(8)
本文使用的字符切割方法是哈工大語言技術(shù)平臺(LTP)提供的結(jié)巴分詞,分詞就是將圖片中識別好的字序列按照規(guī)則劃分為詞序列,是為了之后更好的對關(guān)鍵詞進行關(guān)聯(lián)規(guī)則分析,其過程主要包含了詞性標注、依存句法分析、語義角色標注等步驟.
1.2.1 切詞采用了結(jié)巴分詞原理
結(jié)巴分詞是一種中文分詞的方法,其主要支持精確模式、全模式和搜索引擎模式.以下是結(jié)巴分詞技術(shù)路線,如圖4所示.
圖4 結(jié)巴分詞技術(shù)路線Figure 4 Technical route of stuttering word segmentation
1.2.2 結(jié)巴分詞的過程
結(jié)巴分詞基于Python語言,其過程分為三步:
1)加載字典,生成trie樹;
2)對于要操作的句子,使用正則方法來獲取連續(xù)的中英文字符,是將整個句子切分成一個個短語,對每個短語使用DAG(查字典)和動態(tài)規(guī)劃方法,得到最大概率路徑,將那些沒有查到的字組合成一個新的句子,再使用HMM模型對其進行分詞,就能夠正確識別出字典之外的新詞;
3)使用Python的yield語法來編成一個詞語生成器,逐詞返回.
關(guān)聯(lián)規(guī)則分析是一種精簡且有效的方法,用于分析詞之間的關(guān)聯(lián)性,Agrawal等人首先提出其概念以及Apriori算法[7].對于Apriori算法效率低,時間和空間復(fù)雜度高的特點,2000年Han等基于Apriori算法提出了FP-Growth(Frequent Pattern-growth)算法[8].把瓦斯事故調(diào)查報告中切好的詞以及權(quán)重值所組成的數(shù)據(jù)作為輸入事務(wù)數(shù)據(jù)庫,得到每個事務(wù)的頻繁項,按其置信度降序排列,之后再保存到FP-tree中.在檢索頻繁模式的過程中,就不需再次搜索數(shù)據(jù)集了,只需在FP-tree中進行查找,大幅提高了效率[9-10].通過FP-growth關(guān)聯(lián)規(guī)則算法來識別出瓦斯事故中的頻繁項集,設(shè)置支持度以及置信度數(shù)來得出因素之間的強關(guān)聯(lián)規(guī)則,能夠分析出造成瓦斯事故發(fā)生的關(guān)鍵因素[11-12],來預(yù)防瓦斯事故的發(fā)生.
根據(jù)頻繁項集可以得到既滿足最小支持度又滿足最小置信度的強關(guān)聯(lián)規(guī)則,支持度的計算公式為:
support(A?B)=p(A∪B)
(9)
其中:support(A=>B)表示項集A和項集B的記錄數(shù)在全部記錄數(shù)中同時出現(xiàn)的概率.
置信度的計算公式為:
support(A?B)=P(A/B)=
(10)
其中:support_count(A∪B)是指包含項集(A∪B)的全部記錄數(shù),support_count(A)是指包含項集A的全部記錄數(shù).從瓦斯事故調(diào)查報告中獲得頻繁項集可采用FP-growth算法,其主要步驟如圖5所示.
圖5 瓦斯事故報告的頻繁項集獲取流程Figure 5 Acquisition process of gas accident reports′frequent itemsets
本文以瓦斯事故報告為例,介紹字符識別技術(shù)在瓦斯事故pdf格式報告處理中的應(yīng)用.
2.1.1 利用Python將瓦斯事故報告pdf轉(zhuǎn)化為圖片
pdf格式的瓦斯事故報告在進行字符識別之前,需對pdf進行預(yù)處理,將pdf轉(zhuǎn)化為圖片,以提高字符識別效率和質(zhì)量.需要導(dǎo)入pymupdf,fitz這個庫,利用Python將pdf格式轉(zhuǎn)化為圖片格式.
# 打開pdf文件,生成一個對象
doc=fitz.open('D:論文瓦斯事故報告2.pdf')路徑,瓦斯事故報告pdf格式如圖6所示.
圖6 瓦斯事故調(diào)查報告pdfFigure 6 Gas Accident Investigation Report pdf
pdf轉(zhuǎn)化為png格式,運行結(jié)果如圖7所示.
圖7 瓦斯事故調(diào)查報告pngFigure 7 Gas accident investigation report png
2.1.2 對轉(zhuǎn)化好的圖片進行字符識別
通過場景文本識別(STR)來對轉(zhuǎn)化好的圖片進行字符識別[13-15].先創(chuàng)建lmdb數(shù)據(jù)集.然后再下載好lmdb數(shù)據(jù)集進行訓(xùn)練,驗證和測試.緊接著下載好的預(yù)訓(xùn)練模型,添加圖片demo_image路徑進行運行.運行結(jié)果如圖8和表1所示.
表1 字符識別部分結(jié)果和可信度表Table 1 Results and reliability of character recognition
圖8 字符識別Figure 8 Character recognition
2.1.3 將識別好的字符進行分詞,提取關(guān)鍵詞信息
結(jié)巴切詞的目的是將圖片中識別好的單個字分割成詞[16-18],方便下一步分析詞與詞之間的關(guān)聯(lián)性.切詞的過程是通過詞性標注,依存句法分析和釋放模型等對已經(jīng)識別好的字符進行切割,運行部分結(jié)果如圖9所示.
圖9 切詞部分結(jié)果Figure 9 Results of word segmentation
2.1.4 分析這些關(guān)鍵詞之間的關(guān)聯(lián)性,并找出潛在的致因
利用Pycharm軟件,基于python來運行Apriori和FP-Growth算法,來找出瓦斯事故調(diào)查報告關(guān)鍵字的頻繁項集以及各關(guān)鍵詞與瓦斯事故之間的關(guān)聯(lián)關(guān)系.最小支持度minsup設(shè)置為0.25,以瓦斯事故報告為例,運行結(jié)果如圖10、11所示.
圖10 頻繁項集部分結(jié)果Figure 10 Partial results of frequent itemsets
圖11 項集的所有條件模式基分析Figure 11 All conditional pattern basis analysis of itemset
如圖10,從運行代碼結(jié)果可以看出,{‘瓦斯事故’: [120, None], ‘通風(fēng)不暢’: [72, None], ‘人員違規(guī)操作’: [58, None], ‘掘進障礙’: [47, None], ‘設(shè)備損壞’: [43, None], ‘井下爆破不當(dāng)’: [45, None], ‘停電’: [34, None], ‘?dāng)嗝婵s小’: [30, None]等等.因為設(shè)置的最小支持度為0.25,過濾了支持度小于0.25的項集,從這些瓦斯事故調(diào)查報告中可以看出,在經(jīng)過大量刪選詞的總篇數(shù)中有72篇頻繁出現(xiàn)‘通風(fēng)不暢’一詞,有58篇頻繁出現(xiàn)‘人員違規(guī)操作’,有47篇頻繁出現(xiàn)‘設(shè)備損壞’等等.之后開始遞歸查找這個一項集的所有條件模式基,比如分析‘通風(fēng)不暢’這個項集的所有條件模式基,如圖12所示.
圖12 各因素與瓦斯事故數(shù)關(guān)系圖Figure 12 Relationship between various factors and the number of gas accidents
從圖12可以看出‘通風(fēng)不暢’這個詞出現(xiàn)的頻率較廣,從表2中可以看出‘通風(fēng)不暢’對‘瓦斯事故’的置信度最高,為0.965 57,說明'通風(fēng)不暢'導(dǎo)致'瓦斯事故'發(fā)生的可能性為0.965 57.基于關(guān)聯(lián)規(guī)則分析,表明其與‘瓦斯事故’之間存在強關(guān)聯(lián)性,由此可以得出'通風(fēng)不暢'問題可能是導(dǎo)致瓦斯事故發(fā)生的關(guān)鍵原因,因此建議多注意通風(fēng)問題,及時完善通風(fēng)設(shè)備,檢測通風(fēng)狀況以及配備專職的通風(fēng)技術(shù)人員等措施,才能有效地預(yù)防瓦斯事故的發(fā)生,保障煤礦的安全開采.
表2 各因素與瓦斯事故之間的關(guān)聯(lián)關(guān)系Table 2 Correlation between various factors and gas accidents
本文基于數(shù)據(jù)挖掘方法對瓦斯事故報告進行分析,主要利用字符識別技術(shù)找出瓦斯事故發(fā)生的原因.通過場景文本識別(STR)、結(jié)巴切詞、FP-growth關(guān)聯(lián)規(guī)則算法等技術(shù)來分析瓦斯事故報告,找出瓦斯爆炸的關(guān)鍵因素,對預(yù)防瓦斯事故的發(fā)生以及煤礦的安全生產(chǎn)起到一定的積極作用.另外,本文的研究存在不足,在利用FP-growth關(guān)聯(lián)規(guī)則分析時,需要大量的瓦斯事故調(diào)查報告,本文基于的樣本較少,不能夠準確的得出導(dǎo)致瓦斯事故發(fā)生的關(guān)鍵因素,下一步對FP-growth算法進行改進使其更加適用于實際應(yīng)用.