劉康煒,萬劍華,靳熙芳
1(中國石油大學(華東)地球科學與技術學院,青島 266580)
2(中國石化青島安全工程研究院,青島 266071)
由于化工生產工藝復雜、自動化控制水平高,事故形成的機理難以捕獲且多數發現事故征兆后便難以控制,如何能夠匯總歷史事故原因機理,進行事故原因的精確分析,盡早發現事故潛在的隱患,將有助于事故預警和預防.然而,雖然形成了大量事故的分析報告,但并沒有形成事故相關成因機理的提煉和匯總,難以形成事故分析有效的知識庫.同時,化工事故分析專家也基于經驗以故障樹、FME(C)A 等安全分析模型建模了大量同類事故的成因機理[1],如何基于這些專家經驗對事故報告進行快速準確的原因分類,將有助于形成輔助事故分析與決策支持的知識庫,實現化工事故的早期預警和預防.由于事故報告、故障樹等事故分析模型的表達都是基于自然語言,自然語言的分類技術在各領域已有廣泛的研究,如,貝葉斯分類改進方法[2]采用文本中高詞頻特征的對數平均計算方法,解決了文本分類中參數估計不足問題,但只是單純使用分類技術,沒有探討文本所含領域模型問題;優化的SVM 故障分類器[3]采用了RS 約簡故障指標體系,去除了冗余特征,但是割裂了故障過程間的演化關系;決策樹、神經網絡等[4,5]改進分類方法基于統計模型、語言模型,主要處理文本的層次化分類問題,可以實現火災、中毒、爆炸等化工事故的粗略分類,但不能根據事故模型探討事故成因機理,事故成因機理需要結合專家的領域經驗進一步分析、分類.在化工事故分析領域,故障樹是一種演繹式失效分析模型,能通過邏輯門連接事故成因關系展示事故成因的演化過程[6].通過割集技術可以實現事故成因的最底層原因分析、也可以實現事故的定量分析和定性分析[7].本文基于化工事故監管部門形成了大量的事故故障樹,這些故障樹已通過領域專家實現面向事故成因機理分析、并進一步實現同類故障樹的成因機理的匯總,形成包含同類事故所有原因的若干標準故障樹[8].基于標準故障樹,研究事故報告的事故成因精確分類分析,不僅可以準確分類事故報告的類別,也能夠對事故報告描述的事故成因進行精確分析,從而能夠實現面向事故成因機理的有效分析、分類、存儲和管理,逐步完善事故分析與決策支持的知識庫,實現化工事故的早期預警和預防.
基于故障樹模型的事故成因機理分析,考慮到化工事故的實際特征,故障樹的邏輯門僅包含與、或兩種門結構.目前本文工作中合作的化工事故監管部門已經形成了大量的事故故障樹,并綜合同類故障樹的成因機理形成該類型的標準故障樹如圖1,為自然著火型標準故障樹的示意圖.
事故報告是通過專家對事故進行調查分析,形成的包含事故經過、事故原因、事故處置、事故總結和事故影響五部分的事故調查報告,里面含有事故形成的各種信息,但也有各種雜音信息,目前收集化工事故監管部門已經形成了10 023 個事故報告,已經粗略分類歸屬于火災、爆炸、中毒、泄漏等4 類事故,如何根據事故成因將事故報告精確歸因于某類標準故障樹,是進一步研究事故成因的自動分析和識別的關鍵技術.
事故報告與故障樹節點都是采用自然語言描述的,需要研究文本的特征向量生成方法.由于事故報告包含大量的無關、雜音字詞,首先根據百度停留詞庫進行去停留詞處理.采用將詞嵌入向量生成算法與TFIDF 方法結合生成分詞特征向量[9],采用Word2Vec CBOW 模型生成P維詞向量Vec(wj)=(v1,v2,…,vP)本文取P=1000.由于Word2Vec 采用通用領域詞匯進行向量訓練,為突出領域詞匯的作用,計算事故報告、故障樹節點中領域詞的TF-IDF 值,作為詞向量的權重,從而實現了文本向量化既考慮詞的語義信息,也能考慮領域詞的重要度信息.采用如下計算公式生成詞的TF-IDF 值:

其中,TF(di,wj)表示詞wj在文本di中出現的頻率.IDF(wj)表示單詞wj的逆文檔頻率.M表示文本總數.DF(wj)表示出現wj單詞的文本個數.則包含TFIDF 的詞向量為:

則文本di制成相應的向量為:


圖1 自然著火型標準故障樹
典型的故障樹分析多通過分析故障樹的最小割集和最小徑集[7,10],然而這種分析方法是分析故障樹的葉子節點,而無法分析事故成因過程,無法實現事故報告的精確歸類,提出了一種面向故障樹全部節點的層次析取范式的算法,即可以計算出以基本事件為基準擴展可能的中間節點,而形成的故障樹擴展割集.

圖2 事故報告的詞向量特征生成部分結果
本文擴展下行法、采用廣度優先逐層替代計算擴展割集.核心思想:根據故障樹邏輯門符號一層層向下判定,即遇到“與”門,將“與”門的上層節點替換為“與”門的所有下層節點,并將替換后的結果加入范式集合;遇到“或”門,將“或”門的上層節點依次替換為“或”門的下層節點,并將替換后的結果加入范式集合.求解故障樹的擴展割集CS,算法步驟如下:
Step 1.對故障樹每個節點進行預處理.讀入樹節點Ti,將每個樹節點Ti表示為該子樹的根節點的文本Wi、孩子節點個數Ni、邏輯門符號Si、孩子節點的文本的集合Cj.其中0≤j≤Ni.即Ti=(Wi,Ni,Si,Cj),0≤j≤Ni.
Step 2.讀入故障樹的根節點T1,并根據其邏輯門S1進行處理.若是“與”門,則根節點加入集合、將根節點替換為“與”門所有的下層節點Cj,并加入集合,CS=(W1,C1,C2,…,CNi);若是“或”門,則根節點加入集合、將根節點依次替換為“或”門的下層節點Cj,并依次加入集合,CS=(W1,C1,C2,…,CNi).
Step 3.讀入故障樹的下一個節點Ti=(Wi,Ni,Si,Cj),并根據邏輯門Si進行處理.若是“與”門,則尋找集合CS中存在的與節點文本Wi相同的樹節點Te,并用“與”門的所有下層節點Cj替換集合中的樹節點文本We,替換后的結果加入結果集CS,CS= (W1,W2,…,We)=CS= (W1,W2,…,C1,C2,…,CNi).若是“或”門,則尋找集合CS中存在的與節點文本相同的樹節點Te,并用“或”門的下層節點Cj依次替換集合中的樹節點文本We,替換后的結果加入結果集CS,CS= (W1,W2,…,We)=CS= (W1,W2,…,C1,C2,…,CNi).
Step 4.重復Step 3,直到所有的節點Ti都讀完,即能求出故障樹故障發生的所有擴展割集CS=(W1,W2,…,We).

圖3 算法生成的圖1故障樹的擴展割集
每一個故障樹都通過擴展割集算法的計算,形成了大量擴展割集形成的詞庫集合,通過文本向量生成算法,計算出每個擴展割集的向量空間.這些向量空間也是事故報告分類的中心,需要采用合適的分類算法經每個事故報告分類到相應的擴展割集中,從而能夠精確分析到事故報告描述的事故成因機理.本文在計算事故報告提取文本特征與擴展故障樹割集的相似度計算方法采用的是,較為成熟的KNN 方法[2,3,9].
本文將事故分析報告和故障樹擴展割集的余弦相似度作為距離衡量標志,余弦相似度越大說明兩類向量距離越近.標準的KNN 分類方法(記為KNN-S),當樣本數量分布不平衡時,實驗結果明顯偏重于數量多的類[11].由于故障樹的擴展割集不唯一,而且每個故障樹的割集個數都不相同,會導致樣本分布不均勻,從而會導致KNN 分類方法的準確度下降.改進的KNNW 分類方法,充分解決了KNN-S 分類方法中非平衡化樣本干擾的難題,并在KNN-S 分類方法的基礎上,根據采集樣本所屬的大類別數目和標準樹所包含的擴展割集數目設計權重約束,實現了對KNN-S 分類方法中樣本分布不平衡的調節,還在一定程度上提高了事故報告分類的精確度.采用基于權重計算的KNN-W 的算法步驟如下:
Step 1.利用式(3)計算事故分析報告文本向量VecT(d)=(v1,v2,…,vK)與每類故障樹的擴展割集向量VecT(CSj)=(cj1,cj2,…,cjK)的余弦相似度c osθj.

Step 2.將所求得的余弦相似度c osθj設置權重weight;加權結果為 cosθj=cosθj×weight,其 中weight=Countj(D)為屬于擴展割集CSj所在大類的事故報告數,Countj(CS)為屬于擴展割集CSj所在故障樹的擴展割集數,即權重與屬于類別的事故報告數成正比,與所屬類別的故障樹擴展割集成反比.
Step 3.將加權余弦值排序,統計K個余弦值cosθj當中每類故障樹所占的比重.比重最大的故障樹即為所求的該事故報告的類別.
上述基于權重計算的KNN-W 相比于KNN-S 分類方法,充分考慮了樣本所屬領域的大類別數目,結合樣本數據中故障樹模型的擴展割集結構分布,利用權重調劑不平衡分類的比例,降低已有類別的故障樹割集比重,增加待分類的樣本比例權重,使分類方法能夠適應不同事故數據集.
隨機選取事故監管部門提供的1000 份事故報告作為事故原因分析待分類的對象,由于報告中的事故處置、事故總結和事故影響不能支撐事故原因分析,首先對事故報告進行預處理,只獲取事故經過和事故原因分析兩部分文本內容進行文本特征提取,通過貝葉斯方法配合人工確認對這1000 篇事故已經進行了粗略分類,分類結果如表1所示.
基于事故監管部門提供的11 類標準故障樹,利用擴展割集算法計算11 個標準故障樹的擴展割集,表2為標準的結構信息和通過算法計算的擴展割集信息.這些擴展割集包含事故形成的充分條件,如果事故報告中隱含了相應的割集信息,則表示該事故包含該事故成因信息,這樣可以通過分析事故成因來確定事故報告的精確分類.

表1 事故報告粗略分類

表2 標準故障樹的結構信息
在算法設計中,首先采用本文提出的結合樹形復雜性和文章分類數的權值調整KNN-W 算法,取K=20 進行實驗,表3給出識別的每類標準樹所包含的通過算法識別數目,實際應該包含的數目,正確識別的數目,并給出每類故障樹的識別的準確率、召回率和F1 值[3,4,10],通過分析發現在樣本集較大,故障樹結構較復雜的標準樹中,整體性能要好于標準樹結構簡單的分類,算法總體的準確性為89.6%.
為了驗證本文提出的的權值調整算法的性能,在對比實驗中,采用標準KNN-S 方法和2.3 算法進行對比實驗,兩類方法的K值分別為10、20、50 進行分析,每一類的F1 值的對比結果如圖3所示.表4給出每次實驗的各故障樹類的平均F1 值,從算法對比分析,可以看出KNN-W 算法整體性能較KNN-S 有不同程度的提高,從K值選擇分析可以看出,K=2 0 較K=10 有較大提升,但K=50 較K=20 提升較少.

表3 KNN-W 算法性能分析

圖4 KNN-W 與KNN-S 的F1-Score 對比結果

表4 平均指標數據對比
直接應用機器學習分類方法難以有效分析領域問題,針對化工事故分析領域,提出一種結合領域專家經驗的分析模型進行事故精確分析的思路,基于故障樹分析的事故模型,設計故障樹的擴展割集,使故障成因的充分必要條件不僅反饋在葉子節點的集合,也反饋到包含中間節點的所有節點組合,這樣可以檢測出事故報告中描述的事故演化過程,在分類算法上,選擇KNN 方法,并根據分類特點改進KNN 算法使其更能有效進行分類,實驗結果表明所設計算法能夠實現較精確的分類.