栗佳初,朱永利
(華北電力大學(xué) 計算機(jī)系,河北 保定 071003)
變壓器作為重要的輸變電設(shè)備,其健康狀況直接影響電力系統(tǒng)安全運(yùn)行[1]??焖偾覝?zhǔn)確地了解變壓器信息,可以提升變壓器檢修和維護(hù)的效率[2],進(jìn)而保證用戶的用電質(zhì)量。
電力變壓器運(yùn)維方案的制定通常依賴專家經(jīng)驗[3,4],從而導(dǎo)致運(yùn)維措施可解釋性弱,且效率不高。目前,電力系統(tǒng)已積累了大量的故障處理案例,由于其記錄方式主要為非結(jié)構(gòu)化的文本,故知識的結(jié)構(gòu)化程度不高[5]。因此,有必要設(shè)計更精細(xì)、豐富的知識表示方法,形成變壓器故障知識表示網(wǎng)絡(luò),以進(jìn)一步為智能運(yùn)維提供數(shù)據(jù)支撐及理論支持[6]。
知識圖譜的概念于2012 年被提出,其初衷是為了改善搜索結(jié)果。知識圖譜具備強(qiáng)大的學(xué)習(xí)和推理能力,所以迅速受到了學(xué)術(shù)界和工業(yè)界的廣泛關(guān)注[7-9]。
構(gòu)建知識圖譜的基礎(chǔ)是信息抽取,即從非結(jié)構(gòu)化的文本數(shù)據(jù)中提取出與事件有關(guān)的信息,并以結(jié)構(gòu)化的形式存儲、展現(xiàn)。目前,相關(guān)學(xué)者對知識圖譜開展了大量研究[10-13]。
信息抽取的準(zhǔn)確性直接影響知識圖譜的構(gòu)建質(zhì)量。文獻(xiàn)[14]提出一種關(guān)系抽取神經(jīng)網(wǎng)絡(luò)模型,用雙向長短期記憶網(wǎng)絡(luò)(Bidirectional long short-term memory network,BiLSTM)模塊進(jìn)行實體提取,將卷積層用于關(guān)系分類,將BiLSTM 層產(chǎn)生的信息傳遞到卷積層以提升關(guān)系分類的精度。文獻(xiàn)[15,16]使用BERT(Bidirectional encoder representation from transformers)預(yù)訓(xùn)練模型提取字符的特征,通過軟標(biāo)簽嵌入進(jìn)行全局關(guān)系預(yù)測。文獻(xiàn)[17,18]將關(guān)系抽取問題轉(zhuǎn)化為多頭選擇問題。文獻(xiàn)[19]提出GraphRel 模型,采用LSTM 抽取信息,并使用雙向圖神經(jīng)網(wǎng)絡(luò)(Bidirectional graph convolutional networks,BiGCN)進(jìn)行關(guān)系推理,使模型在NYT數(shù)據(jù)集上比之前的模型精度提高了3.2%。
上述研究多是在英文數(shù)據(jù)集上開展的,流程基本固定:用BiLSTM 挖掘字符間的依賴特征,用條件隨機(jī)場(Conditional random field,CRF)進(jìn)行實體的分類,關(guān)系提取使用卷積網(wǎng)絡(luò)或者將其轉(zhuǎn)化為多頭選擇問題。
受上述文獻(xiàn)的啟發(fā),本文使用預(yù)訓(xùn)練模型BERT 提取字符特征,然后使用BiLSTM 提取文本上下文特征,用CRF 進(jìn)行實體識別,用多頭選擇判定實體間關(guān)系,以關(guān)系矩陣作為節(jié)點(diǎn)特征的鄰接矩陣,最后用BiGCN 根據(jù)鄰接矩陣對節(jié)點(diǎn)特征進(jìn)行再次更新,糾正錯誤的實體關(guān)系。
在人工智能領(lǐng)域,本體這一概念被用于刻畫知識,由類、關(guān)系、屬性3 部分組成。
在變壓器故障知識圖譜中,故障診斷的知識由事件邏輯來表達(dá),其語料庫涉及故障現(xiàn)象、故障原因、檢測方法、維修方法。
首先,定義事件參數(shù)。構(gòu)成事件的元素主要有:對象(object)、觸發(fā)詞(trigger)、狀態(tài)(state)。對象指發(fā)生故障的設(shè)備,如鐵芯、套管等。觸發(fā)詞指事件觸發(fā)元素,如出現(xiàn)、導(dǎo)致等。狀態(tài)一般是對發(fā)生故障設(shè)備的描述,如受潮、損壞等。
然后,定義事件參數(shù)的類概念和關(guān)系。為了保證節(jié)點(diǎn)的一致性,類的屬性也看作節(jié)點(diǎn)。類概念主要描述了事件參數(shù)定義;關(guān)系則主要描述了觸發(fā)詞的定義和事件之間的邏輯關(guān)系。
變壓器故障事件和參數(shù)模型如圖1 所示。
圖1 變壓器故障事件和參數(shù)模型Fig. 1 Transformer fault event and parameter model
從圖1 可知:故障事件包括故障原因事件、故障現(xiàn)象事件、故障檢測事件和故障維修事件。故障原因與故障現(xiàn)象之間的關(guān)系是“導(dǎo)致(lead to)”;故障維修方法與故障原因之間的關(guān)系是“維修(fix)”;故障檢測事件與故障現(xiàn)象之間的關(guān)系是“檢測(detect)”。每個事件包括對應(yīng)的故障部件和狀態(tài),均為事件的參數(shù)。
變壓器故障語料庫主要由故障事件構(gòu)成,宏觀上可分為變壓器結(jié)構(gòu)部分和故障描述部分。結(jié)構(gòu)部分主要分為3 個層次:設(shè)備、子設(shè)備、零件。設(shè)備主要指變壓器,子設(shè)備主要指鐵芯、繞組、油箱等變壓器的功能部件。零件指螺栓、外殼等不可再分的組件。在對故障事件的描述中,部分故障現(xiàn)象同時也是故障原因,比如絕緣墊塊潮濕造成鐵芯多點(diǎn)接地。墊塊潮濕既是現(xiàn)象又是造成鐵芯多點(diǎn)接地的原因。
概念類被定義之后,類之間就會存在相應(yīng)的類關(guān)系。本文設(shè)計的事件關(guān)系主要包括:consist_of,lead_to,detect,fix,has_attribute 和appear。其中,consist_of 表示設(shè)備結(jié)構(gòu)之間的關(guān)系,has_attribute表示設(shè)備與屬性之間的關(guān)系;這2 種關(guān)系描述的是變壓器知識的定性關(guān)系。lead_to 表示狀態(tài)間的事件邏輯關(guān)系,detect 表示檢測方法與設(shè)備故障狀態(tài)之間的關(guān)系,fix 表示維修方法與設(shè)備故障狀態(tài)之間的關(guān)系;這3 種屬于事件邏輯關(guān)系。除此之外,設(shè)備狀態(tài)值可能會導(dǎo)致設(shè)備屬性值發(fā)生變化,因此設(shè)備狀態(tài)與設(shè)備屬性之間也存在lead_to 關(guān)系。
借鑒英文數(shù)據(jù)集的標(biāo)注方法,將信息提取任務(wù)轉(zhuǎn)化為文本的標(biāo)注任務(wù)。標(biāo)注包含實體類別層、關(guān)系層、關(guān)系位置層。實體層采用BIO 的標(biāo)注方式,B 表示一個實體的開頭,I 表示一個實體的中間和尾部,O 表示非實體。
實體主要包括故障設(shè)備、狀態(tài)、檢測方法、維修方法。其中檢測方法和維修方法屬于較長的實體,模型需要具備足夠的記憶能力才能取得好的效果。
根據(jù)上文提出的本體模型,本文共涉及8 個實體類別、7 個關(guān)系類別。8 個實體類別分別為:
equipment,sub-equipment,component,state,gas,attribute,detect_method,fix_method。7 個關(guān)系類別分別為:appear,lead_to,consist_of,has_attribute,generate,detect,fix。關(guān)系類別按尾實體先后位置依次標(biāo)記在頭實體最后一個字符上,如附錄所示。
網(wǎng)絡(luò)模型的輸入為變壓器故障診斷文本,輸出為實體和關(guān)系標(biāo)簽。根據(jù)標(biāo)簽可以將非結(jié)構(gòu)化的文本轉(zhuǎn)化為有意義的圖結(jié)構(gòu)。
在收集的案例語料中,每個故障都有其對應(yīng)的故障原因和故障表示。此外,還存在不同的故障原因可以引起相同或相似的故障現(xiàn)象,以及一個故障原因可以引起多種不同的故障現(xiàn)象的情況。因此當(dāng)故障相同時,對應(yīng)的故障原因和故障現(xiàn)象并不完全一致。
本文使用中文BERT 通過微調(diào)學(xué)習(xí)文本的詞向量,并將其作為堆疊BiLSTM 層的輸入,以捕捉文本的深層語境特征;CRF 用來識別實體;最后,根據(jù)關(guān)系矩陣用BiGCN 更新節(jié)點(diǎn)特征。信息抽取模型框架如圖2 所示。
圖2 信息抽取模型框架Fig. 2 Framework of information extraction model
CRF 被用來劃分全局最優(yōu)標(biāo)簽序列,基于字符依賴性特征序列M,輸出標(biāo)簽序列Y。標(biāo)簽序列和特征序列的聯(lián)合概率分布如式(1)所示。
式中:A為標(biāo)簽之間的轉(zhuǎn)移概率矩陣,由訓(xùn)練得到;Yi為第i個字符的預(yù)測標(biāo)簽。
從式(2)中可以得到M和Y的條件概率。
式中:Y′為一個可能的標(biāo)簽序列;f(M)為所有可能的標(biāo)簽序列的集合。
在訓(xùn)練CRF 時,以最大似然估計作為損失函數(shù)來最大化P(Y|M),如公式(3)(4)所示。
在實體類別預(yù)測過程中,使用維特比算法預(yù)測最佳標(biāo)簽序列。
為了緩解錯誤的實體分類對關(guān)系識別造成的影響,將BiLSTM 的輸出特征與預(yù)測標(biāo)簽向量進(jìn)行拼接,記為向量Z。關(guān)系概率計算為:
式中:δ為sigmoid 激活函數(shù);p(ci,r,cj)為字符ci與cj之間存在關(guān)系r的概率;“⊕”表示計算各個關(guān)系的概率值;Wv,W f,Wb分別為全連接層權(quán)重矩陣、前向關(guān)系權(quán)重矩陣、后向關(guān)系權(quán)重矩陣。
在訓(xùn)練過程中,最小化交叉熵?fù)p失作為優(yōu)化目標(biāo),如式(6)。
式中:n為字?jǐn)?shù);m為關(guān)系類別的數(shù)量;q(ci,r,cj)為實體ci和cj之間存在關(guān)系的概率;p(ci,rk,cj)為實體ci和cj之間的每個關(guān)系的概率。
常規(guī)的信息抽取方法沒有考慮關(guān)系對實體識別的影響??紤]到關(guān)系的確定能夠幫助模型更好地識別實體,例如關(guān)系類別如果為“fix”則頭尾實體分別為“fix_method”和“state”,因此本文引入了BiGCN,將字符的深度上下文特征作為節(jié)點(diǎn)特征,以上一階段對關(guān)系的預(yù)測結(jié)果作為鄰接矩陣,再次進(jìn)行實體關(guān)系的聯(lián)合抽取。
傳統(tǒng)的GCN 無法建模方向,但是知識圖譜三元組中定義了頭實體和尾實體。根據(jù)關(guān)系的方向,鄰接矩陣被分為前向鄰接矩陣和后向鄰接矩陣,如公式(7)—(9)所示。
BiGCN 運(yùn)算后的節(jié)點(diǎn)特征先與鄰接矩陣相乘,再經(jīng)過激活函數(shù)。節(jié)點(diǎn)特征最終的更新公式如式(10)所示。
考慮關(guān)系概率對節(jié)點(diǎn)特征更新影響的優(yōu)點(diǎn)是,可以有效糾正模型前期積累的錯誤特征,增強(qiáng)模型的識別能力。
本文的實驗環(huán)境:操作系統(tǒng)為Win10,CPU為intel core i5-7300,GPU 為2080ti;軟件python 3.7,pytorch1.7.0。
電力變壓器公開的運(yùn)維文檔與事故處理報告較少。本文從《電力設(shè)備預(yù)防性試驗規(guī)程》等文獻(xiàn)中摘取與變壓器運(yùn)維相關(guān)的描述故障原因和故障現(xiàn)象的語句。
在此基礎(chǔ)上,進(jìn)一步標(biāo)注實體關(guān)系,得到數(shù)據(jù)集,含2 456 條語句,63 070 個字符。將其中80%用作訓(xùn)練,其他用作測試。具體數(shù)據(jù)統(tǒng)計如表1 所示。
模型的參數(shù)直接決定著模型的識別能力。本文參數(shù)通過搜索確定。搜索范圍和最終選定的參數(shù)(加黑)如表2 所示。
表1 數(shù)據(jù)統(tǒng)計信息Tab. 1 Data statistics
表2 模型參數(shù)設(shè)置Tab. 2 Model parameter settings
3.3.1 對比實驗
為了驗證本文方法的優(yōu)越性,選擇算法1[18]和算法2[19]作為對比算法。以準(zhǔn)確率P和F1分?jǐn)?shù)作為評價指標(biāo)。實驗結(jié)果如表3 和圖3 所示。
表3 實驗結(jié)果Tab. 3 Experimental results %
圖3 各算法F1 分?jǐn)?shù)及損失對比Fig. 3 Comparison of F1 scores and losses of each algorithm
從表3 和圖3 可以看出,本文提出的模型在變壓器運(yùn)維文本的信息抽取任務(wù)中具有明顯的優(yōu)勢。
結(jié)果分析:
相比算法1。本文算法將BiLSTM 的輸出特征與預(yù)測標(biāo)簽向量進(jìn)行拼接,緩解了錯誤的實體分類對關(guān)系識別造成的影響,且考慮關(guān)系概率對節(jié)點(diǎn)特征更新的影響,可以有效糾正模型前期積累的錯誤特征。
相比算法2。本文算法使用預(yù)訓(xùn)練模型BERT獲取詞向量,更好地考慮了上下文字義和語境意義;針對本文語料,通過微調(diào)模型獲得更優(yōu)的性能。
3.3.2 消融實驗
為了驗證BiGCN 對模型信息提取能力的影響,選擇BERT-BiLSTM-CRF(算法3)作為對比算法。相比本文模型,算法3 僅去掉BiGCN 更新節(jié)點(diǎn)特征的過程,其他參數(shù)設(shè)置、模型結(jié)構(gòu)與本文模型保持一致。
消融實驗結(jié)果見表4。
表4 消融實驗結(jié)果Tab. 4 Ablation experimental results %
由表4 可知,加入BiGCN 模塊的模型獲得了3.1 個百分點(diǎn)的聯(lián)合F1分?jǐn)?shù)提升。BiGCN 可以推斷和糾正錯誤的實體關(guān)系,聯(lián)合抽取提高了實體識別和關(guān)系識別兩個子任務(wù)的相關(guān)性,性能獲得明顯的提升。
將通過上述方法提取到的三元組存儲在neo4j 圖數(shù)據(jù)庫中。該庫以節(jié)點(diǎn)和關(guān)系為對象存儲圖結(jié)構(gòu)數(shù)據(jù),可以使用Cypher 語言進(jìn)行快速查詢。
同時開發(fā)線上網(wǎng)站,提供知識圖譜自動化構(gòu)建服務(wù)。用戶輸入要處理的文本,后端會調(diào)用模型進(jìn)行信息抽取,然后返回構(gòu)建好的圖譜。
在關(guān)系查詢界面,支持3 種查詢方式:根據(jù)頭節(jié)點(diǎn)、關(guān)系查詢尾節(jié)點(diǎn),根據(jù)頭節(jié)點(diǎn)、尾節(jié)點(diǎn)查找最短路徑,根據(jù)關(guān)系、尾節(jié)點(diǎn)查找頭節(jié)點(diǎn)。
針對變壓器運(yùn)維過程中信息關(guān)聯(lián)性弱及決策生成效率低的問題,為提高決策生成服務(wù)能力,系統(tǒng)首先將輸入問題轉(zhuǎn)化為查詢圖,將其表述為狀態(tài)和動作的搜索問題。查詢圖由4 種類型的節(jié)點(diǎn)組成:基礎(chǔ)實體,存在變量,λ變量,聚合函數(shù)?;A(chǔ)實體是存在于知識圖譜中的實體。存在變量和λ變量不是基礎(chǔ)實體。最終將可以映射到λ變量的所有實體作為答案。聚合函數(shù)旨在對實體進(jìn)行過濾。首先從知識圖譜中檢索基礎(chǔ)實體及關(guān)系,構(gòu)造查詢圖[20]。以“鐵芯發(fā)生過熱故障的處理方法?”為例,查詢邏輯形式為:
λx.?y.method(x,y) ∧appear(鐵芯,過熱)∧
fix(y,過熱) ∧detect(y, 過熱)
鐵芯和過熱為2 個基礎(chǔ)實體,之間的關(guān)系為“appear”。y表示存在變量,描述構(gòu)造關(guān)系。x表示λ變量,即答案節(jié)點(diǎn),用于映射查詢檢索到的實體。聚合函數(shù)的約束是返回的節(jié)點(diǎn)類型,為fix_method。x、y都是方法實體,代表鐵芯過熱的維修措施或者需要進(jìn)行的檢修試驗。檢索到的實體由聚合函數(shù)篩選,返回鐵芯過熱的維修措施給運(yùn)維人員。運(yùn)維人員核驗與完善生成的處理方法,生成運(yùn)維報告。
本文基于電力變壓器運(yùn)維相關(guān)文獻(xiàn),提出一種基于BERT-BiLSTM-CRF-BiGCN 的知識圖譜構(gòu)建方法,主要結(jié)論如下:
1)設(shè)計了變壓器故障知識圖譜本體層,包含8 種本體、7 種關(guān)系?;诒倔w對故障診斷文本進(jìn)行標(biāo)注,建立了實體和關(guān)系聯(lián)合提取數(shù)據(jù)集。
2)提出實體和關(guān)系聯(lián)合提取方法,首先通過BERT 預(yù)訓(xùn)練模型學(xué)習(xí)詞向量,堆疊BiLSTM 模塊,根據(jù)深度語境更新字符特征,再使用BiGCN結(jié)合關(guān)系矩陣糾正錯誤的實體關(guān)系。模型聯(lián)合F1分?jǐn)?shù)可以達(dá)到89.94%,明顯優(yōu)于對比模型。
3)開發(fā)軟件提供線上知識圖譜自動化構(gòu)建、實體查詢、關(guān)系查詢和決策生成的服務(wù),提升變壓器運(yùn)維決策生成的效率。