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