李先旺, 黃忠祥, 賀德強, 劉賽虎, 秦學敬
(廣西大學機械工程學院, 南寧 530004)
汽車維修領域存在大量的文本數(shù)據(jù),這些數(shù)據(jù)蘊含豐富的信息,且多數(shù)以非結構化文本的形式散落在各處,沒得到統(tǒng)一的組織與管理,造成了知識的浪費。如何根據(jù)故障現(xiàn)象快速從海量文本數(shù)據(jù)中找到故障原因與解決方法,并構建一個完整的面向汽車故障診斷的知識體系是一個亟待解決的問題。
知識圖譜是有效的知識集成方法之一,它能形式化地描述現(xiàn)實世界的事物及其相互關系[1],從而促進對其所包含信息的管理與使用。知識圖譜目前已被應用在多個領域,如醫(yī)療[2]、制造[3]和公共交通[4]等領域,而針對汽車維修領域的知識圖譜也有部分學者進行了研究。趙祥龍[5]基于規(guī)則進行知識抽取,在構建的車輛故障知識圖譜基礎上通過XGBoost分類算法實現(xiàn)了故障原因的推薦應用。但基于規(guī)則的方法存在召回率底、沖突性高的缺點。葛任賢[6]基于汽車故障案例,使用正則表示式進行知識抽取,構建汽車故障事理圖譜。但知識抽取過于依賴人工和專家經驗,自動化程度不高。徐成現(xiàn)[7]通過將注意力機制與BiLSTM-CRF(bidirectional long short-term memory-conditional random field)模型相結合對發(fā)動機維修案例進行知識抽取,構建發(fā)動機故障維修知識圖譜,并以關鍵詞和人工制定規(guī)則的方式進行映射實現(xiàn)故障知識的查詢。但未能實現(xiàn)嵌套實體的識別,此外故障搜索依賴模板庫或關鍵詞庫,后期維護困難。
命名實體識別(named entity recognition,NER)指將預定義類別的實體從非結構化文本中識別出來,為知識圖譜構建、智能問答等下游任務的開展奠定基礎[8]。因此提高實體識別效果十分重要。BiLSTM-CRF常作為基線模型用于中文實體識別[9],但該模型不能解決實體嵌套問題。Li等[10]提出將嵌套NER任務轉化成機器閱讀理解(machine reading comprehension,MRC)任務來解決,通過構建相應問題識別不同類型實體,使用單層指針網(wǎng)絡識別實體邊界,但該方法用兩個模塊分別識別實體的首尾,將導致訓練和預測不一致。為此,Su等[11]提出全局指針(gloabal pointer, GP),該框架將實體首尾視為整體進行判別,能實現(xiàn)訓練與預測的一致性。
首先,汽車維修文本具有領域專業(yè)性,實體結構較為復雜,存在大量實體嵌套的情況,如“發(fā)動機無法啟動”是個故障現(xiàn)象實體,其內嵌套著“發(fā)動機”這個部件實體,因此其實體邊界較難確定。其次,該領域缺乏成熟的公開數(shù)據(jù)集,只能人工標注小規(guī)模的領域數(shù)據(jù)集。預訓練語言模型BERT (bidirectional encoder representation from transformers)[12]使用大規(guī)模的語料進行預訓練,具有通用的語言表征能力,無需從零開始訓練字符向量,只需在后續(xù)的任務中通過少量標注語料進行微調就可得到動態(tài)的字符向量,但其采用的是字級掩碼機制,因此模型在處理中文時難以獲得詞級特征。RoBERTa-wwm(a robustly optimized BERT pre-training approach-whole word masking)[13]增加了全詞掩碼機制,中文語義表示能力更強。Jiang等[14]研究發(fā)現(xiàn),專業(yè)領域的數(shù)據(jù)集規(guī)模較小,模型在訓練中很容易發(fā)生過擬合,進而影響模型的表現(xiàn)。
針對汽車維修文本實體邊界難確定、實體嵌套和數(shù)據(jù)集規(guī)模較小的問題,為全局指針引入中文分詞,并進一步提出引入中文分詞的嵌套實體識別模型AT-RWSGP (nested named entity recognition using adversarial training and RoBERTa-wwm in the word segmentation GlobalPointer frame),以提高嵌套實體識別效果。在構建汽車故障知識圖譜后,實現(xiàn)基于知識圖譜的汽車維修知識問答原型系統(tǒng),展示知識圖譜技術在汽車維修領域的應用前景。該系統(tǒng)為維修人員進行汽車故障排查提供了故障知識問答和圖譜可視化功能,為輔助維修人員對汽車進行故障排查提供了理論參考和技術支撐。
知識圖譜就覆蓋范圍可分為通用知識圖譜和領域知識圖譜[15],而知識圖譜的構建方式可分為自底向上構建和自頂向下構建[16]。一般而言,自底向上構建方式更合適于覆蓋范圍廣泛的通用知識圖譜,此類圖譜常用于搜索、推薦以及問答等。汽車故障知識圖譜是一個典型的領域知識圖譜,此類圖譜需要根據(jù)領域業(yè)務需求,構建出合適的本體模式,確定實體與關系的類型。所設計的汽車故障知識圖譜構建流程如圖1所示,包括數(shù)據(jù)層、構建層和應用層。
圖1 汽車故障知識圖譜構建框架圖Fig.1 Frame chart of building automobile fault knowledge graph
圖1中,數(shù)據(jù)層為汽車故障知識的數(shù)據(jù)來源,這些數(shù)據(jù)作為汽車故障實體和關系的基礎語料。構建層的工作包括確定實體與關系的類型,然后將預定義好的實體和關系從多源異構的文本數(shù)據(jù)中抽取出來,并進行知識融合,最后根據(jù)構建的本體模式將知識三元組存儲到知識庫中。應用層則是將構建好的汽車故障知識圖譜應用到汽車故障診斷業(yè)務中,包括智能問答與推薦等。
領域知識圖譜本體的構建,需要結合專家知識進行,規(guī)范好實體和關系的類型才能保證從文本中抽取出正確的知識。針對汽車故障知識圖譜,其數(shù)據(jù)來源主要是維修手冊和汽車維修案例等,而此類數(shù)據(jù)則主要包括品牌車型、故障現(xiàn)象、故障原因以及零部件等實體,具體實體和關系類型如圖2所示。
圖2 汽車故障知識圖譜模式層設計Fig.2 Design of pattern layer of automobile fault knowledge graph
所提AT-RWSGP模型架構如圖3所示,該模型包括三層,分別是RoBERTa-wwm嵌入層、對抗訓練和WSGP(word segmentation global pointer)解碼層。首先將字符序列輸入到RoBERTa-wwm中獲取字符編碼;然后在RoBERTa-wwm后接對抗訓練層,對嵌入層加入小擾動,然后一起送到WSGP中識別實體的邊界并進行分類。
圖3 AT-RWSGP模型結構圖Fig.3 AT-RWSGP model structure diagram
RoBERTa-wwm預訓練模型是哈工大訊飛聯(lián)合實驗室提出,其采用了中文全詞掩碼技術,如圖4所示。通過全詞掩碼技術,RoBERTa-wwm可以在訓練的時候學到詞級別的語義表示,有助于提高汽車維修領域文本的實體識別效果。
圖4 RoBERTa-wwm的全詞掩碼示例Fig.4 Example of whole word masking for RoBERta-wwm
RoBERTa-wwm結構圖如圖5所示,將輸入的句子定義為s= {x1,x2, …,xn},其中xi為序列的第i個字,i=1,2,…,n。在句子開頭加上分類符([CLS]),在句尾處添上分割符([SEP]),經由RoBERTa-wwm處理,得到句子s的向量表示E,E= [E1,E2, …,En]。
圖5 RoBERTa-wwm結構圖Fig.5 Structure Diagram of RoBERTa-wwm
對抗訓練的思想是直接在模型的向量表示層加入微小的擾動以生成對抗樣本,然后再用對抗樣本進行訓練,借此提升模型的魯棒性。由于FGM (fast gradient method)[17]方法兼顧了性能和效率,因此采用FGM方法來計算擾動。
FGM采用的方法是L2歸一化,即將梯度的每個維度的值除以梯度的L2范數(shù)。擾動radv的計算公式為
(1)
g=▽EL(E;θ)
(2)
式中:g為梯度,‖g‖2為g的L2范數(shù);ε為超參數(shù);L(E;θ)為損失函數(shù);θ為模型參數(shù)。
GP通過構造一個上三角矩陣來遍歷所有有效的實體邊界,每一個格子對應一個實體邊界,不同的矩陣表示不同類型的實體。
經過對抗訓練層,添加小擾動后,得到編碼向量序列[h1,h2, …,hn]。然后將每個token的編碼向量放入兩個線性層“start_FFN”和“end_FFN”,分別得到屬于每個實體類別的開始向量和結束向量,其計算公式分別為
qi=Wqhi+bq
(3)
ki=Wkhi+bk
(4)
式中:hi為向量序列;qi、ki分別為開始和結束向量;Wq、Wk為變換矩陣;bq、bk為權重偏移指數(shù)。
為了方便推導,將省略式(3)和式(4)的偏置項。
GP將實體抽取分為兩個階段,即先判斷某個token-pair是否是實體,然后再對實體進行分類。通過式(5) 計算跨度從i到j連續(xù)片段是一個類型為的實體的分數(shù)。
(5)
(6)
為了減少參數(shù),可進一步將hi表示為[qi;ki],則式(6)可轉化為式(7)。
(7)
對于不同的實體類別,通過式(7)可以得到每個span[i:j]的分數(shù)sα(i,j),最后的任務就是從n(n+1)/2個候選實體中,選出k個真實的實體,該問題是個多標簽分類問題。損失函數(shù)的計算公式為
(8)
式(8)中:Pα為所有實體類型為α的span集合;Qα為非α實體類型的span集合,i≤j。
在解碼階段,只有滿足sα(i,j) >0的片段才會被視為α類型的實體,并輸出。log以2為底。
2.3.1 改進思路
(9)
2.3.2 方法
使用開源中文分詞工具jieba來獲取文本的分詞標簽,將句子進行盡可能細粒度的分詞。例如存在短句“診斷為電機控制器故障”。基于細粒度的分詞會輸出:[診斷][為][電機][控制器][故障],對應的詞列表word_list為[(0,1), (2, 2), (3, 4), (5, 7), (8, 9)],數(shù)字代表索引位置,從0開始。然后通過遞歸的方式不斷對相鄰詞進行組合從而生成:[診斷][診斷為][電機控制][控制器][電機控制器][電機控制器故障]等,遞歸的盡頭是改句子本身,從而得到中文分詞的真實標簽seg_labels。seg_labels可視化如圖6所示。
圖6 seg_labels可視化Fig.6 seg_labels visualization
最后,將中文分詞的真實標簽引入損失函數(shù)的計算,式(10)為原版GP的損失函數(shù)計算公式,式(12)為引入分詞信息后的損失函數(shù)計算公式。
loss1=loss_fc(all_logits,labels)
(10)
loss2=βloss_fc(logits,seg_labels)
(11)
loss=loss1+loss2
(12)
從非結構化的汽車維修文本中抽取的故障知識極大概率存在數(shù)據(jù)語義重復、質量不一的問題,知識融合可以將沖突的知識進行融合,以實現(xiàn)知識表示的統(tǒng)一,進而構建高質量的知識圖譜[18]。知識融合包括兩方面內容,分別是實體消歧和實體對齊[19]。
實體消歧技術旨在解決同名不同意的實體問題,因為語料均為汽車領域文本,因此基本不存在該問題。實體對齊技術則是解決同意不同名的實體問題。例如,“發(fā)動機控制模塊”和“發(fā)動機控制器”均表示“發(fā)動機控制單元”這個實體。人工撰寫的故障維修報告大量存在這種用語不規(guī)范、不統(tǒng)一的情況,因此需要對知識進行規(guī)范化表示。
采用計算相似度的方法進行實體對齊,預先設置好閾值,將實體間相似度大于設置閾值的實體進行融合,并將二者統(tǒng)一存入同義詞實體庫,為后續(xù)實體鏈接做準備。采用編輯距離和余弦相似度相結合的方法來計算相似度,任一相似度大于閾值則進行融合。
(1)距離編輯相似度。編輯距離(levenshtein distance)是衡量兩個字符串相似程度的常用方法,指兩個字串之間,由一個轉成另一個所需的最少編輯操作次數(shù)。操作方法包括插入、刪除或者替換字符[20]。其中插入、刪除編輯次數(shù)為1,替換編制次數(shù)為2。距離編輯相似度則根據(jù)式(13)進行計算。
(13)
式(13)中:Sle為距離編輯相似度分數(shù);D為編輯次數(shù);L為兩實體總長度。
(2) 余弦相似度。余弦相似度Scos是用來衡量向量空間中的兩個向量是否接近、相似,其值越接近1,就表明夾角越接近0°,即兩個向量越相似,其計算公式為
(14)
式(14)中:S1和S2為實體。
Sle、Scos值越大就表示二者相似度越高,表1列出了部分實體相似度計算實例。
表1 實體相似度計算實例Table 1 Example of entity similarity calculation
問答系統(tǒng)的作用是通過將用戶使用自然語言提出的問題進行語義解析,轉化成結構化的查詢語句,進而在知識圖譜中找到答案,并將答案返回給用戶[21]。因此,對自然問句的語義進行解析是關鍵的一步。采用的語義解析模塊如圖7所示。該模塊包括3個子模塊,分別是實體識別、實體鏈接以及關系匹配。實體識別模塊的作用是識別自然問句中單個或多個關鍵詞,實體鏈接模塊的作用則是將識別到的關鍵詞正確鏈接到知識圖譜中的實體詞。關系匹配則是將自然問句中蘊含的關系與知識圖譜中的實體間關系進行匹配。
領域特定語言(domain-specific language,DSL)圖7 語義解析的流程示意圖Fig.7 Schematic diagram of semantic parsing process
Albert[22]是輕量版的BERT,其利用詞嵌入?yún)?shù)因式分解和隱藏層間參數(shù)共享技術,在顯著減少模型參數(shù)量的同時,基本沒有損失模型的性能。可見Albert比BERT更適合部署在線上,因此選擇Albert獲取字符的上下文表示。解碼層則依然使用WSGP,因為其可以無差別識別普通實體和嵌套實體,并且較CRF效率更高、速度更快。
在具體的業(yè)務場景下,用戶表達具有多樣性,為提高答案的正確率,需要通過實體鏈接將實體提及與知識圖譜中的實體詞進行關聯(lián)。采用第三節(jié)中構建的同義實體庫進行實體鏈接,并以字匹配的方式鏈接,為提高匹配的準確性,加權實體間相似度和實體與問句相似度,計算公式為
(15)
式(15)中:X為同義詞庫檢索的候選實體詞;Y為實體提及;S為自然問句;α、β為參數(shù),分別取0.8和0.2;X∩Y表示X與Y的公共字符;|·|為字符數(shù)量。
計算候選實體詞的分數(shù)并按照降序排序,選擇得分最大的實體詞。
在知識圖譜中準確找到實體后,可以根據(jù)該實體匹配關系。若該實體詞的關系存在與自然問句意圖一致的關系,則基于實體詞及關系輸出對應的答案。采用Albert進行匹配,構造關系數(shù)據(jù)集對該模型進行訓練,將訓練好的模型部署到問答系統(tǒng)。該結構如圖8所示,模型可簡化為式(16)、式(17)。
qt為自然問句的字符;at為實體詞及其關系的字符;[CLS]用于輸入的待匹配文本的語義表示;[SEP]為分隔符;Softmax為歸一化指數(shù)函數(shù);FNN為全連接層;E[CLS]為[CLS]的字符表示的語義編碼圖8 關系匹配的模型結構圖Fig.8 Model structure diagram of relationship matching
E=Albert([CLS],q1,q2,…,[SEP],
a1,a2,…,[SEP])
(16)
p=Softmax(WeE[CLS]+be)
(17)
式中:qt為自然問句的字符,t=1,2,…;at為實體詞及其關系的字符;[CLS]用于輸入的待匹配文本的語義表示;[SEP]為分隔符;be為權重偏移指數(shù);使用Albert模型內部的注意力機制進行交互,得到字符的向量表示E;使用Softmax進行分類;We為全連接層FFN的網(wǎng)絡參數(shù);E[CLS]為[CLS]的字符表示的語義編碼;p為分類結果。
以爬蟲的方式從精通維修網(wǎng)獲取汽車維修案例,對獲取的案例進行清洗和整理,得到2 000個案例,并對數(shù)據(jù)進行人工標注,作為實驗數(shù)據(jù)集,取訓練集、驗證集和測試集的比例為8∶1∶1。實體類別如表2所示,其中故障現(xiàn)象、故障原因以及解決方法實體中嵌套有零部件實體。
表2 汽車故障文本命名實體分類Table 2 Example of entity similarity calculation
本實驗環(huán)境及配置如表3所示。
表3 環(huán)境配置Table 3 Environment configuration
實驗采用3個評價指標,分別是精確率(precision,記為P)、召回率(recall,記為R)以及P、R的調和平均數(shù)F1值(記為F1)[23],計算公式為
(18)
(19)
(20)
式中:TP為正確識別的個數(shù);FP為將不正確識別為正確的個數(shù);FN為數(shù)據(jù)集中存在但未被識別出來的個數(shù)。
本實驗分析比較了AT-RWSGF模型與BERT-CRF、BERT-MRC、BERT-BinaryPointer(BERT-BP)[24]以及BERT-GP模型在汽車維修數(shù)據(jù)集上的實體識別效果,其結果如表4所示。
表4 各模型的評價結果Table 4 Evaluation results of each model
從表4可以看出,所提AT-RWSGP模型在汽車維修數(shù)據(jù)集上取得F1為93.73%的成績。相對于BERT-GP而言,本文模型F1提高了3.56%。這是因為本文模型將只能字掩碼的BERT替換為擁有全詞掩碼機制的RoBERTa-wwm,提高了模型學習詞級表征的能力;其次,本文模型還增加了對抗訓練,該舉措有助于提高模型的魯棒性和泛化性;最后,本文模型對GP進行改進,引入中文分詞信息,可以提升模型實體識別性能。而基于序列標注的經典模型BERT-CRF表現(xiàn)最差,F1只有71%,說明BERT-CRF模型不適合用于嵌套命名實體識別。
為了評估RoBERTa-wwm、對抗訓練模塊以及WSGP的有效性,設計如下4組實驗進行對比,模型分別為BERT-GP、RoBERTa-wwm-GP、BERT-AT-GP以及BERT-WSGP。各模型在汽車維修數(shù)據(jù)集上進行了對比實驗,結果如表5所示。
表5 不同組件對模型性能的影響Table 5 Effect of different components on model performance
從表5可以看出,將BERT-GP中的BERT換成替換為RoBERTa-wwm后,在汽車維修數(shù)據(jù)集上的F1提升了2.05%,說明RoBERTa-wwm模型增加全詞掩碼機制的措施可以提升汽車維修文本的嵌套命名實體識別效果。在BERT-GP基礎上加上對抗訓練,在汽車維修數(shù)據(jù)集上的F1提升了1.45%,這體現(xiàn)了通過向訓練數(shù)據(jù)添加小擾動的方式能使模型的魯棒性得到提高,進而增強模型的實體識別能力。而WSGP相比GP表現(xiàn)也更好,其F1提高了1.78%,可見通過引入中文分詞可以提升模型的實體識別效果。
抽取到實體及其關系后,需要依托相關工具將這些知識構建成知識圖譜。Neo4j是一個開源圖形數(shù)據(jù)庫,與傳統(tǒng)的關系型數(shù)據(jù)庫相比,Neo4j可以直觀地表示各節(jié)點之間的語義關系。此外,Neo4j還具有查詢便捷和更新維護方便等優(yōu)點。因此,選擇Neo4j作為構建知識圖譜的工具。如圖9所示,選取部分內容進行可視化展示。
GL8為別克GL8車型;A6L為奧迪A6L車型;VTEC為本田的可變氣門正時和升程電子控制系統(tǒng)圖9 汽車故障知識圖譜可視化展示Fig.9 Visual display of automobile fault knowledge graph
汽車故障知識圖譜通過構建故障現(xiàn)象、故障原因以及解決方法等信息之間的關聯(lián)關系,依托知識圖譜強大的語義網(wǎng)絡,可以進行圖譜可視化,還可依靠智能問答系統(tǒng),理解用戶輸入的自然語言問題,并返回正確的答案和相關問題推薦。
以新能源汽車中典型實例“車輛儀表EV功能受限和請檢查低壓系統(tǒng)是什么原因”進行系統(tǒng)演示,在系統(tǒng)的右上角搜索框內輸入“車輛儀表EV功能受限和請檢查低壓系統(tǒng)是什么原因”的自然問句,系統(tǒng)首先識別實體,得到實體提及“儀表報EV功能受限”和“請檢查低壓系統(tǒng)”。接著進行實體鏈接,輸出標準名“EV功能受限”“請檢查低壓系統(tǒng)”以及候選的關系。通過意圖分類得到關系“故障原因”,然后將語義解析得到的信息轉換成Cypher查詢語句,在知識圖譜中進行檢索,并將輸出答案和圖譜可視化,在本例中可以看出,故障原因“PTC互鎖插頭松動”和“OBC內部損壞”為故障現(xiàn)象“請檢查低壓系統(tǒng)”和“EV功能受限”的共同原因,以可視化的方式可以通俗易懂地展示出這個信息,效果如圖10所示。
基于汽車故障文本,提出一種嵌套命名實體識別模型AT-RWSGP。該模型通過RoBERTa-wwm獲得輸入信息的向量表示,并引入對抗訓練機制,最后使用WSGP進行解碼。構建汽車故障知識圖譜后,實現(xiàn)了基于知識圖譜的汽車維修知識問答原型系統(tǒng)。通過實驗和知識圖譜應用分析后得到以下結論。
(1)所提基于AT-RWSGP的嵌套命名實體識別模型可以提高汽車維修領域嵌套命名實體識別效果。
(2)利用本文模型構建一定數(shù)據(jù)規(guī)模的汽車故障知識圖譜,可以為智能問答等應用提高知識支持。
(3)知識圖譜技術在汽車故障診斷領域具有良好的應用前景。