吳德平,時 翔,王曉東
1. 江蘇安全技術(shù)職業(yè)學(xué)院網(wǎng)絡(luò)與信息安全學(xué)院,江蘇 徐州221011;2. 常州工學(xué)院計算機(jī)信息工程學(xué)院,江蘇常州213002;3. 徐州市廣聯(lián)科技有限公司,江蘇 徐州221116
安全生產(chǎn)管理是一項復(fù)雜而極其重要的工作,對安全生產(chǎn)事故全面剖析和研究十分必要。安全生產(chǎn)中的事故傷害可分為事故類別、傷害方式、不安全行為和不安全狀況,利用自然語言處理(natural language processing,NLP)技術(shù)對安全生產(chǎn)事故及原因分類,為安全生產(chǎn)監(jiān)管、事故隱患排查和分析奠定基礎(chǔ),對進(jìn)一步強(qiáng)化安全生產(chǎn)指導(dǎo)具有重要意義。
以往文本分類通過利用稀疏詞匯的特征來表示文本,再用線性模型進(jìn)行分類。近年來,主要是采用深度學(xué)習(xí)得到文本的特征表示,如利用word2vec 模型學(xué)習(xí)文本中詞向量的表示,得到文本的語義表示實現(xiàn)文本分類[1]。 又如利用TextRank 算法把文本分割成若干組成單元,構(gòu)建節(jié)點連接圖,用句子之間的相似度作為邊的權(quán)重,通過迭代計算句子TextRank 值,抽取排名高的句子組成文本摘要[2]。采用長短時記憶網(wǎng)絡(luò)(long short-term memory networks,LSTM)實現(xiàn)分類。
2018 年google 推出的基于轉(zhuǎn)換器的雙向編碼表 征(bidirectional encoder representation from trandformers,BERT)模 型 在MultiNLI、SQuAD、SST-2 等11 項NLP 任務(wù)中取得卓越的效果。BERT 模型在大規(guī)模語料庫或特定領(lǐng)域的數(shù)據(jù)集上通過自監(jiān)督學(xué)習(xí),進(jìn)行預(yù)訓(xùn)練以獲得通用的語言表示,在下游任務(wù)中進(jìn)行微調(diào)完成相應(yīng)的任務(wù)。BERT 模型的缺點之一是使用詞向量表示文本內(nèi)容時,最大維度為512。當(dāng)輸入文本長度小于512時,模型性能良好。BERT 是句子級別的語言模型,該模型能獲得整句的單一向量表示。BERT 預(yù)訓(xùn)練模型對輸入文本進(jìn)行向量化,能有效提高中文文本語義的捕捉效果[3-4]。
安全生產(chǎn)事故報告或案例文本通常都有事故單位的情況、事故發(fā)生經(jīng)過、應(yīng)急處理情況、事故原因分析、事故責(zé)任認(rèn)定、事故處理意見等內(nèi)容,文本從幾百字到數(shù)萬字不等,內(nèi)容長短不一,由于BERT 模型支持的最長序列字?jǐn)?shù)為512,需要對原始文本進(jìn)行處理。本文結(jié)合安全生產(chǎn)事故的文本特點,先對文本進(jìn)行摘要處理,再利用BERT 模型進(jìn)行多任務(wù)分類,實現(xiàn)安全生產(chǎn)事故分類水平的提升。
文本摘要方法主要為抽取式摘要和生成式摘要,抽取式摘要方法根據(jù)單詞和句子的特征從文檔中選擇核心語義句,并將它們組合以生成摘要,句子的重要性取決于句子的特征統(tǒng)計。抽取式摘要最大化地保證摘要內(nèi)容來自于原文,避免生成不準(zhǔn)確甚至是錯誤的信息。抽取式摘要的缺點是抽取對象是文本中的句子,當(dāng)要抽取的數(shù)值確定時,會有正確的摘要句沒被抽取,造成摘要內(nèi)容的丟失,而被抽取的摘要內(nèi)容也會有一定的冗余。生成式摘要則使用了一系列自然語言處理技術(shù),用于理解給定文檔中的主要內(nèi)容,生成更加簡明精煉的句子來構(gòu)成摘要。生成式摘要與抽取式摘要相比,摘要更準(zhǔn)確,更靈活,更符合編寫習(xí)慣。結(jié)合安全生產(chǎn)事故文本較長的特點以及BERT 模型對算力較高的要求,本文采用抽取式+生產(chǎn)式摘要相結(jié)合的方法完成文本的摘要。
對于長文本的處理,一般分為3 種方法:截斷法,Pooling 法,壓縮法。截斷法大致分為頭截斷、尾截斷、頭+尾截斷3 種。截斷的比例參數(shù)是一個可以調(diào)節(jié)的參數(shù)。Pooling 法將整段的文本拆分為多個片段,進(jìn)行多次編碼。壓縮法是在斷句后將整個篇章分割成片段,通過訓(xùn)練小模型,將無意義的片段剔除,如剪枝法、權(quán)重因子分解法、知識蒸餾法等方法。
為提高處理效率,本文采用截斷法,對原始文本首先按照頭+尾截斷,然后去停用詞,進(jìn)一步精簡文本,最后構(gòu)建數(shù)據(jù)集。針對中文長文本摘要和多標(biāo)簽分類的難點,設(shè)計分3 步實現(xiàn)多標(biāo)簽分類:第一步使用基于BERT 預(yù)訓(xùn)練模型實現(xiàn)抽取式文本摘要;第二步使用基于華為的中文預(yù)訓(xùn)練語言模型——哪吒訓(xùn)練模型實現(xiàn)生成式文本摘要;第三步通過基于精簡的BERT(a lite bidirectional encoder representation from transformers,AlBERT)訓(xùn)練模型,借助遷移學(xué)習(xí)的思想進(jìn)行多標(biāo)簽多任務(wù)分類,最終在數(shù)據(jù)集上取得了較好的多標(biāo)簽分類效果[5-6]。
抽取式文本摘要,生成摘要不連貫、字?jǐn)?shù)難以控制、目標(biāo)句主旨不明確。而BERT 預(yù)訓(xùn)練模型能在一定程度上克服以上缺點。BERT 模型應(yīng)用于具體領(lǐng)域的任務(wù)是通過使用預(yù)訓(xùn)練和微調(diào)實現(xiàn),預(yù)訓(xùn)練的目的是在輸入的詞中融入上下文的特征,微調(diào)的目的是使BERT 適應(yīng)不同的任務(wù)。其創(chuàng)新點在于將注意力模型Transformer 的雙向訓(xùn)練應(yīng)用于NLP,經(jīng)過雙向訓(xùn)練的語言模型比單一向語言模型能更好地理解語言環(huán)境和流程。BERT 中文長文本摘要模型如圖1。
模型中數(shù)據(jù)集經(jīng)過分詞并添加一些標(biāo)識符。在第一個句子前面添加[CLS]標(biāo)識符,借助首句最前面的特殊符[CLS],用來分類輸入的兩個句子間是否有上下文關(guān)系。每個句子的最后添加[SEP]標(biāo)識符,起到分割句子的作用。整個模型結(jié)構(gòu)通過BERT 接一個平均池化層得到句子向量[7],即通過預(yù)訓(xùn)練獲取一個句子的定長向量表示,將變長的句子編碼成定長向量。Average pooling 主要對整體特征信息進(jìn)行抽取,local 主要是對特征映射的子區(qū)域求平均值,然后滑動這個子區(qū)域。模塊間采用average pooling 既能在一定程度上減少維度,更有利于下一級模塊進(jìn)行特征提取。利用膨脹門卷積神經(jīng)網(wǎng)絡(luò)(dilate gated convolutional neural network,DGCNN),它是基于CNN+ Attention的高效模型。Attention 用于取代池化操作來完成對序列信息的整合。Dense 層將前面提取的特征,經(jīng)dense 層作非線性變化,再映射到輸出空間。對于圖1 中的句子對,句子的特征值是1,則保留的摘要,句子的特征值是0,則該句舍棄,從而達(dá)到文本抽取式摘要的目的。
圖1 抽取式文本摘要模型Fig. 1 Extractive summarization model
為了進(jìn)一步減小文本的長度,通過抽取式模型輸出的摘要,再作為生成式摘要模型的輸入,最終生成輸出得摘要。 生成式摘要通過改進(jìn)型BERT 來實現(xiàn),模型如圖2 所示。BERT 使用的是訓(xùn)練出來的絕對位置編碼,有長度限制,為便于處理長文本,采用基于華為的NEZHA 預(yù)訓(xùn)練語言模型,利用改模型相對位置編碼,通過對位置差做截斷,使得待處理詞、句相對位置在有限范圍內(nèi),這樣,輸入序列的長度不再受限,處理后的語句再通過生產(chǎn)式指針網(wǎng)絡(luò)(pointer generator networks,PGN)模型生產(chǎn)摘要。 PGN 模型[8]可視為基于attention 機(jī)制的seq2seq 模型和pointer network 的結(jié)合體,該模型既能從給定詞匯表中生成新token,又能從原輸入序列中拷貝舊token,其框架如圖2 所示。圖2 中原文本中各token 的Wi經(jīng)過單層雙向LSTM 將依次得到編碼器隱藏狀態(tài)序列,各隱藏層狀態(tài)表示為Ht。對于每一個時間步長t,解碼器根據(jù)上一個預(yù)測得到單詞的embeding,經(jīng)LSTM 得到解碼器隱藏層狀態(tài)St,為了在輸出中可以復(fù)制序列中的token,將根據(jù)Ht,St和解碼器輸入Xt計算生成概率:
圖2 生產(chǎn)式文本摘要模型Fig. 2 Abstractive summarization model
式(1)中,WTh、WTs、WTx、Bptr均為 模型要 學(xué)習(xí)的 參數(shù)。Pgen的作用是判斷生成的單詞是來自于根據(jù)Pvocab在輸出序列的詞典中采樣,還是來自根據(jù)注意力權(quán)重ai,t在輸入序列的token 中的采樣,最終token 分布表示如式(2):
其中i:Wi=W表示輸入序列中的token 的W,模型會將在輸入序列中多次出現(xiàn)的W的注意力分布相加。當(dāng)W未在輸出序列詞典中出現(xiàn)時,Pvocab(W)=0;而當(dāng)W未出現(xiàn)在輸入序列中時,
顯然,該模型基于上下文向量,解碼器輸入及解碼器隱藏層狀態(tài)來計算生成詞的概率p,對應(yīng)Copy 詞的概率為1-p,根據(jù)概率綜合編碼器注意力和解碼器輸出分布得到一個綜合的基于input 和output的token 分布,從而確定生成的語句。
實驗對2 000 個20 種事故類別的案例集進(jìn)行處理,采用基于召回率的摘要評價(recalloriented understudy for gisting evaluation,ROUGE)作為評價指標(biāo),以衡量生成的摘要與參考摘要之間的“相似度”,采用ROUGE-1、ROUGE-2和ROUGE-L作為標(biāo)準(zhǔn),即計算一元詞、兩元詞及最長公共子序列的重疊程度。本文提出的模型在訓(xùn)練集上得到ROUGE 評價結(jié)果如表1 所示,同時還給出了其他模型的ROUGE 結(jié)果[9-11]。
表1 不同模型實驗結(jié)果對比Tab. 1 Comparison of experimental results of different models %
第一個抽取式模型BERT+BiLIST 是將BERT預(yù)處理后的文本向量經(jīng)過一個基于規(guī)則的基本篇章單元識別模型,再經(jīng)過基于Transformer 的神經(jīng)網(wǎng)絡(luò)抽取模型,生成最終的摘要。第二個抽取式模型BERTSUMExt,將多層Transformer 應(yīng)用于句子表示,從輸出中抽取文檔特征,再經(jīng)LSTM 層學(xué)習(xí)特定摘要特征。本文抽取式中文摘要采用的NER 模型式chinese_L-12- H-768_A-12 預(yù)訓(xùn)練模型,通過BERT + Average pooling 計算文本向量表示,最后通過CNN+ Attention 的模型抽取摘要。
第一個生產(chǎn)式摘要模型CopyNet 通過深度遞歸生成解碼器的Seq2seq 模型,利用遞歸學(xué)習(xí)目標(biāo)摘要中隱含信息來提高摘要質(zhì)量。第二個生產(chǎn)式摘要模型Seq2seq +transformer+PGN 采用基于自注意力的transformer 機(jī)制,組合指針生成網(wǎng)絡(luò)input-feeding 方法。本文生成式中文摘要采用華為的NEZHA 預(yù)訓(xùn)練語言模型,經(jīng)過基于attention機(jī)制的Seq2seq 模型生產(chǎn)摘要。
實驗數(shù)據(jù)如表1 所示,本文提出的模型較其他模型相比,最終結(jié)果相差不大,一方面,其他模型的評價結(jié)果當(dāng)前已達(dá)到很高水平[12],另一方面,采用的數(shù)據(jù)集存在的差異,包括中文和英文差異,也存在不同領(lǐng)域之間的差異。同時,考慮到算力等因素,本實驗采用的兩個模型能夠提取文本的關(guān)鍵信息,為長文本進(jìn)行多標(biāo)簽分類提供可能。
多標(biāo)簽分類就是要將安全生產(chǎn)的事故案例標(biāo)記為物體打擊、車輛傷害等20 類事故類別之一;碰撞、爆炸等15 種傷害方式之一;防護(hù)、保險等裝置缺乏或缺陷等4 大類不安全狀態(tài)之一;操作失誤等13 大類不安全行為之一,共有52 個標(biāo)簽。
多標(biāo)簽文本分類ALBERT 預(yù)訓(xùn)練模型,該模型最小的參數(shù)只有十幾兆字節(jié),能較好解決模型參數(shù)量大、訓(xùn)練時間過長的問題,效果比BERT 低1%~2%。同時,在沒有足夠的安全生產(chǎn)類標(biāo)注數(shù)據(jù)的情況下,采用遷移學(xué)習(xí)來提高預(yù)訓(xùn)練的效果。本文采用基于樣本的遷移學(xué)習(xí)方法,模型如圖3 所示。模型主要通過自制的安全生產(chǎn)事故數(shù)據(jù)集對模型進(jìn)行預(yù)訓(xùn)練,建立分類精度較高、特征提取能力強(qiáng)的學(xué)習(xí)模型。TextCNN 模型能有效抓取文本的局部特征,經(jīng)過不同的卷積核提取文本信息,再通過最大池化來突出各個卷積操作,從而提取特征信息,拼接后利用全連接層對特征信息進(jìn)行組合,最后通過binary crossentropy 損失函數(shù)來訓(xùn)練模型,將標(biāo)量數(shù)字轉(zhuǎn)換到[0,1]之間,再對52 個標(biāo)量分組分類。
圖3 多標(biāo)簽文本分類模型Fig. 3 Multi-label text classification model
當(dāng)前多標(biāo)簽的學(xué)習(xí)算法[13-15],按解決問題的方式可以分為基于問題轉(zhuǎn)化法和基于算法適用法兩類。問題轉(zhuǎn)化法通常只考慮標(biāo)簽的關(guān)聯(lián)性。而考慮多標(biāo)簽的相關(guān)性時可將上一個輸出的標(biāo)簽當(dāng)成下一個標(biāo)簽分類器的輸入。對于事故類別、傷害方式等52 個標(biāo)簽,若采用類似于二分類方法,所有標(biāo)簽將分布在[0,252-1]空間內(nèi),數(shù)據(jù)會很稀疏,耗費大量資源。因此,采用基于算法適用法來實現(xiàn)多標(biāo)簽分類算法。設(shè)置TextCNN 參數(shù)字長為300,卷積核數(shù)目為256,卷積核尺寸為5,標(biāo)簽為52。再利用tf.argmax()對模型訓(xùn)練獲得的52 個標(biāo)量,求得4 組列表[0,19:1]、[20,34:1]、[35,38:1]、[39,51:1]中最大數(shù)的索引,最后映射到相應(yīng)標(biāo)簽即可,分類結(jié)果如表2所示。可以看出,同一事故類別的標(biāo)簽數(shù)越多,分類的準(zhǔn)確率越低。另外,考慮算力的因素,本文安全生產(chǎn)事故文本數(shù)據(jù)集數(shù)量上相對偏少,也導(dǎo)致分類準(zhǔn)確率不夠高。
表2 多標(biāo)簽分類準(zhǔn)確率Tab. 2 Multi-label classification accuracy %
目前,雖然在一定程度上實現(xiàn)了安全類中文長文本的多標(biāo)簽分類,但數(shù)據(jù)集的構(gòu)建需要做大量的工作,事故傷害類別多,成因復(fù)雜,要做好安全生產(chǎn)傷害事故及原因的文本分類,還面臨不少挑戰(zhàn)。數(shù)據(jù)是研究的基石,只要進(jìn)一步完善大規(guī)模、高質(zhì)量的數(shù)據(jù)集,優(yōu)化各種模型及參數(shù),就能進(jìn)一步提升文本分類準(zhǔn)確性。