羅文慧 ,蔡鳳田 ,吳初娜 ,夏鴻文 ,孟興凱
(交通運輸部公路科學研究院,北京 100088)
安全風險是指不確定性對安全的負面影響,是通過事故表現(xiàn)出來的[1]. 風險源是可能單獨或共同引發(fā)風險的內(nèi)在要素[1],由此,道路運輸安全險源是指道路運輸安全風險事件發(fā)生的根源,即通常所說的可能導致道路運輸事故發(fā)生的不安全因素,或稱道路運輸事故原因因素. 實現(xiàn)有效的“事前”道路運輸安全風險防控是實現(xiàn)交通安全生產(chǎn)的重要組成部分,道路運輸安全風險源是“事前”道路運輸安全風險防控的前提和基礎.
目前,道路運輸安全風險源辨識方法主要有基于故障樹模型、失效模型、層次模型等專家經(jīng)驗判別方法,缺少基于數(shù)據(jù)的方法,主要是因為道路運輸過程是涉及“人、車、路、環(huán)境、管理”等要素風險源耦合的復雜過程,缺少綜合感應設備提取全部的結構化數(shù)據(jù). 相比而言,較為完善的數(shù)據(jù)為道路運輸事故報告等非結構化數(shù)據(jù). 目前對道路運輸安全事故報告等文本數(shù)據(jù)的風險源辨識基本為人工識別,工作量較大. 近年來,隨著大數(shù)據(jù)技術的發(fā)展,自然語言處理技術(natural language processing,NLP)逐漸成熟,并應用到航空、鐵路、船舶運輸. 2018年,Li等[2]針對中國城市軌道交通安全風險源結構化數(shù)據(jù)缺失的問題提出應用文本挖掘的方法進行風險源辨識,應用詞頻分析和聚類的方法從156份事故報告中挖掘出包含管理、參與人和直接安全因素的15個安全風險源因子. 同年,Shi等[3]對航空事故報告數(shù)據(jù)進行了安全風險因子挖掘,先用主題模型對文進行挖掘,將挖掘結果輸入到分類模型中,并與樸素貝葉斯、霍夫丁樹分類模型的結果進行了比較,發(fā)現(xiàn)構建的模型表現(xiàn)最佳. Williams等[4]對鐵路事故報告進行了文本挖掘,對比了潛在語義分析(latent semantic analysis,LSA)和潛在狄利克雷分布(latent Dirichlet allocation,LDA)模型在鐵路事故報告上的主題挖掘效果,實驗結果表明兩種模型都能挖掘到最頻繁發(fā)生的事故類型,但是對于非頻繁事故達不到預期的效果. Andrzejczak等[5]基于航空事故報告對航空風險源因素進行挖掘,首先將文本向量化表示,然后應用擴散圖模型進行降維操作,最后進行無監(jiān)督分類,實驗結果證明了模型的有效性. Tanguy等[6]利用TF-IDF (term frequency-inverse document frequency)對經(jīng)過預處理的航空事故報告中的風險源相對權重進行度量,幫助專家在短時間內(nèi)對報告中的重點風險實現(xiàn)快速辨識. Zhang等[7]提出一種基于文本挖掘的航空事故預測模型,該模型首先對航空事故報告進行人工標注,標注為高風險源、中等風險源、低風險源3個層次,然后應用支持向量機進行文本主題和結果之間的挖掘,同時構建深度神經(jīng)網(wǎng)絡,進行模擬事件上下文特征和事件結果之間的復雜關聯(lián).
以上模型可以總結為對文本關鍵詞、主題的挖掘,然后通過分類模型進行大范圍的風險源辨識,識別的風險源有限. 道路運輸安全事故報告文本(簡稱事故報告)主要是對事故發(fā)生過程、運輸參與方進行描述,一般只敘述事實,直接利用LDA或LSA主題挖掘模型、TF-IDF關鍵詞挖掘模型效果不理想,需要對文本進行特征加強操作,然后再進行風險源的辨識. 目前,特征加強多數(shù)是對文本進行提前處理. An等[8]抽取文本中的因果句,并進行句法分析,利用三元法進行因果標注,構建相似度模型進行因果關系抽取,實現(xiàn)病例風險源的辨識. 在實體關系識別上多數(shù)應用深度學習模型來實現(xiàn),Zeng等[9]、袁飛等[10]證明了卷積神經(jīng)網(wǎng)絡(convolutional neural networks,CNN)在抽取句子實體關系上的優(yōu)越性.
本文借鑒以上方法,按照所建立的因果句抽取規(guī)則提取事故報告中的因果句子,對抽取的因果句進行詞向量化、位置向量化等特征構造,最后將特征構造的結果輸入到CNN中進行風險源或?qū)е率鹿薁顟B(tài)實體的抽取,從而實現(xiàn)風險源辨識. 本文通過對道路運輸安全事故歷史文本數(shù)據(jù)的風險源自動挖掘,為實現(xiàn)“事前”的道路運輸安全風險源(簡稱風險源)防控打好基礎.
風險源辨識模型包含因果句抽取、因果句預先處理、CNN風險源辨識3個環(huán)節(jié),如圖1所示.
圖1 風險源辨識步驟示意Fig. 1 Schematic diagram of risk-source identification process
1.1.1 因果提示詞構建
因果提示詞來源于事故報告和北京大學中國語言學研究中心(CCL)的現(xiàn)代漢語語料庫,借鑒裘江南[11]2012年提出的因果詞,本文提取安全風險源提示詞共115個,列舉如表1所示.
表1 因果提示詞清單列舉Tab. 1 Causality cue words
1.1.2 因果句結構
事故報告的因果關系可總結為由因到果、由果到因和分開式3種形式:由因到果分為一因一果、多因一果、一因多果;由果到因分為一果一因、多果一因、一果多因;分開式分為因果分開式和果因分開式. 構建因果抽取規(guī)則如表2所示.
表2 因果句子結構列舉Tab. 2 Causality sentence structures
1.1.3 因果句抽取
結合因果提示詞構建因果句結構,事故報告因果句抽取算法的偽代碼為:
l= [ ] //l為列表
foriin sentence: //i為迭代變量
if (句子中有一個提示詞):
a= 提示詞前后兩句
l.append(a)
if (句子中有兩個或兩個以上提示詞):
b= 取提示詞所在的句子和前后兩句
l.append(b)
returnl
按照NLP文本處理的基礎步驟和本文特征抽取的需求,風險源因果句預先處理過程包括加載風險源自定義字典、加載因果句、去停用詞和分詞4個環(huán)節(jié),如圖2所示. 為了保障文本處理質(zhì)量,構建了748個專業(yè)詞匯,包括597個風險源詞匯和151個運輸專業(yè)術語,形成自定義字典. 在哈工大停用詞表的基礎上,形成自定義停用詞表. 本文利用Python的Jieba進行文本分詞操作.
圖2 因果句預先處理流程Fig. 2 Preprocessing process of causality sentences
CNN風險源辨識模型如圖3所示. 首先,對提取的風險源因果句進行模型輸入特征構造. 本文通過借鑒He等[12]融合詞向量和位置向量的特征構造方法實現(xiàn)模型輸入特征構造. 其次,將構造的特征輸入到CNN中進行模型訓練,包含2個卷積層和2個池化層. 在池化層之后,構造全連接層實現(xiàn)池化層提取特征的向量化表示. 最后,將特征向量輸入到Softmax中實現(xiàn)風險源或事故狀態(tài)的分類.
圖3 基于CNN的安全風險源辨識模型Fig. 3 Risk-source identification model base on CNN
1.3.1 特征構造
假設抽取的因果句長度為n,那么句子可以表示為x=(x1,x2,···,xi,···,xn).
1) 詞向量化
1.3.2 CNN構造
1) 卷積層
2) 池化層
本文在池化層的構造中選擇最大值池化操作,在輸入數(shù)據(jù)上移動池化窗口,池化窗口大小為,提取窗口中的最大值. 最大池化層在位置(i,j) 的輸出為
3) 輸出層
采用隨機梯度算法(stochastic gradient descent,SGD)進行網(wǎng)絡訓練,本文為多分類問題,選用多分類交叉熵損失函數(shù)作為目標函數(shù).
二分類交叉熵損失函數(shù)為
式中:N為訓練數(shù)據(jù)的總數(shù);為樣本的標簽,正例為1,負例為0;為樣本k分類為正例的概率.
多分類交叉熵損失函數(shù)為
式中:ykc為樣本k的標簽,類別c相同則為1,不同則為0;pkc為樣本k屬于類別c的分類概率.
本文收集了2012年—2019年安全管理網(wǎng)站的600份道路運輸安全事故報告,道路交通事故由“人、車、路、環(huán)境、管理”單一原因或其組合致因?qū)е拢搏@取因果句1 554個. 在詞向量化環(huán)節(jié),由于CNN的輸入為固定大小矩陣,將詞向量處理為12 × 12大小,不足用0補齊. 在句子因果詞標注環(huán)節(jié),分成兩組對句子進行因果關系標注,結果一致認為標記正確,不一致則由專家組進行討論確定. 為了方便模型訓練,需要辨識的風險源詞匯依次用1,2,3,4,··· 標注,風險源造成的結果用 11,12,13,··· 標注,其他詞匯用0標注,標注結果如表3所示,由于風險源詞匯在句子中的占比較少,本文利用過采樣(synthetic minority oversampling technique,SMOT)算法進行樣本補齊操作,補齊后得到的數(shù)據(jù)共計53 200條,按照5∶1的比例分配訓練數(shù)據(jù)42 560條,測試數(shù)據(jù)10 640條.
表3 因果句子標注列舉Tab. 3 Causality sentence annotations
實驗平臺為 2.5 GHz,4核,Inter(R) Core(TM)i7-6500U,16 GB內(nèi)存,在 Python的 IDE PyCharm中實施. 操作系統(tǒng)為ubuntu16.04,64位,實驗程序基于開源軟件庫Tensorflow 2.0.0和keras,采用Python環(huán)境下的Gensim包對詞向量進行訓練.
3.3.1 評估參數(shù)
采用準確率P、召回率R以及準確率和召回率的調(diào)和平均值F來評估模型性能,如式(7)~(9)所示.
式中:a為被正確識別的某類風險源或?qū)е陆Y果的個數(shù);b為被識別為其他類的識別風險源或?qū)е陆Y果的個數(shù);e為應該識別的風險源或?qū)е陆Y果的樣本總數(shù)目.
3.3.2 多分類 ROC (receiver operating characteristic)曲線
為了更加直觀地評估模型的有效性,利用多分類ROC曲線進行模型效能的評估,ROC是以假正率和真正率為軸的曲線,ROC曲線和坐標軸圍城的面積值越大,模型性能越好.
相關參數(shù)設置見表4所示.
表4 參數(shù)設置Tab. 4 Parameters setting
在風險源辨識過程中,要在給定的數(shù)據(jù)中辨識到更多的風險源,因此,保證召回率理想的情況下最大程度地提升準確率. 利用交通事故報告對建立的安全風險源辨識模型進行實驗,得到的準確率、召回率、以及準確率和召回率的調(diào)和平均值結果如表5所示. 由表5可知:類別11的召回率最高,依次為類別0、12等;從模型整體來看,模型分類的效果與樣本的數(shù)量成正比;總體準確率為77.321%,說明了模型的有效性.
表5 準確率、召回率以及準確率和召回率的調(diào)和平均值Tab. 5 Tested results of precision,recall,and their F-score values %
建立的安全風險源辨識模型ROC曲線和坐標軸圍城面積如圖4. 由圖4可以看出,非風險源詞匯(0 類)和風險源類別 1、2、3、4、5、6、7 的識別準確率較高,風險源類別8、9識別準確率較低,類別10為空,因為數(shù)據(jù)樣本量的大小依次排序為類別0、1、2、3、4、5、6、7、8、9,其中詞匯類別 8、9占比不到 5%,類別10不存在. 類別11、12事故狀態(tài)識別準確率都較高,類別13不存在,因為類別11、12事故狀態(tài)樣本占比較高. 整體的平均ROC與坐標軸圍城的面積為 0.94,貼近左上角點(0,1.0),從模型效果來看,模型風險源識別的效果有效,模型辨識效果與樣本量的大小有著較高的依賴程度.
圖4 安全風險源辨識模型多分類ROC曲線評估Fig. 4 Multi-class ROC curves of risk-source identity model
1) 基于文本挖掘的道路運輸安全風險源辨識模型分為文本因果句預先抽取和因果句文本挖掘兩個階段. 在因果句文本挖掘階段,首先進行適應于CNN輸入的、包含詞信息和位置信息的特征構造,其次構建CNN道路運輸安全風險源辨識模型,最后將構造的特征輸入到CNN中進行風險源辨識. 實驗結果表示,模型辨識準確率約為77.321%.表明本文提出的模型是一種有效的辨識模型.
2) 本文構建的模型結果的優(yōu)劣和文本預處理的關聯(lián)性較大:與在因果句抽取精準性有較大的關聯(lián)性,若抽取的句子不含風險源或?qū)е陆Y果的信息較多,則削弱模型識別效果;在因果句預處理階段較依賴于自定義字典和專業(yè)術語的完整程度,若自定義字典和專業(yè)術語較欠缺,則影響分詞效果,進而影響辨識效果;從模型辨識的結果來看,建立的模型依賴樣本的數(shù)量的程度較高,樣本量小的風險源明顯識別召回率較低. 因此,在后期的研究中一方面要進一步加大自定義字典和專業(yè)術語的完善、文本數(shù)據(jù)的積累等基礎工作的力度;另一方面要進一步研究因果句提取的精準性,提高模型的識別效果.
致謝:感謝交通運輸部公路科學研究所(院)科技創(chuàng)新專項資金項目(2019-C507)、中央級公益性科研院所基本科研業(yè)務費專項資金項目(2019-0049)的支持.