胡 杰,李源潔,耿 號,耿黃政,郭 雄,易紅衛
(1.武漢理工大學,現代汽車零部件技術湖北省重點實驗室,武漢 430070;2.武漢理工大學,現代零部件技術湖北省協同創新中心,武漢 430070;3.新能源與智能網聯車湖北工程技術研究中心,武漢 430070;4.上汽通用五菱汽車股份有限公司,柳州 545000)
2021 年中國汽車工業經濟運行報告指出:2021年我國汽車產銷分別達到2 608.2 和2 627.5 萬輛,汽車產業的蓬勃發展為汽車后市場也帶來了新的機遇和挑戰。而隨著汽車新四化水平的提高,售后汽車檢測維修的難度也逐漸加大。據統計,在汽車維修過程中約有70%的時間用于尋找故障,而只有30%的時間是用于故障維修。因此,在汽車故障診斷中如何快速準確地定位故障是十分必要的。
汽車故障診斷技術現有方法中,基于故障現象的故障診斷主要依靠維修技師的個人經驗和查閱維修手冊或知識庫。技師經驗需要大量實踐來沉淀,且這些維修經驗難以理論化、共享化;維修手冊或知識庫雖然實現了維修知識的共享,但也存在一定的局限性,例如,維修手冊并不能囊括用戶使用過程中可能出現的所有故障現象,即內容不夠全面;而對于知識庫,其一般的構建流程是人工手動將相關理論、專家知識以計算機語言的形式表達和存儲,該過程需要耗費大量的時間,構建周期較長,同時,采用傳統方式所構建的知識庫時,無法體現知識之間的關聯,容易形成知識孤島。此外,基于故障現象的診斷過程中產生的維修案例數據如故障現象、故障原因等過于口語化,這些非結構化數據難以有效存儲和使用。所以,亟需一種方式用于實現知識庫的自動化構建,并建立知識之間的關聯,完成對診斷知識的積累和復用,輔助技師完成故障診斷。
知識圖譜(knowledge graph)這一概念由谷歌公司在2012 年率先提出,以提高其搜索引擎的性能,本質上,知識圖譜是一種揭示實體之間關系的語義網絡,可以對現實世界的事務及其相互關系進行形式化的描述[1]。知識圖譜由多個三元組組成,三元組的一般結構為“實體-關系-實體”或“實體-屬性-值”。自2012 年被提出以來,基于良好的關聯性能,知識圖譜目前已在諸如電商、金融、醫學等多個領域得到廣泛應用,而針對汽車故障領域,國內外也有一些學者已經開展相關研究,文獻[2]中從互聯網論壇爬取大量博主分享的診斷和維修經驗,采用CIMAWA 算法提取文本中的診斷操作,并將各診斷操作按邏輯順序依次連接,形成診斷流程圖;文獻[3]中以柴油發動機為研究對象,提出引入詞集級注意力機制的方法完成實體抽取,使用融合多尺度注意力機制和BERT 的方法完成關系抽取,最后將構建的知識圖譜與貝葉斯網絡結合,完成柴油發動機故障診斷;文獻[4]和文獻[5]中以汽車產業鏈協同平臺上的數據為來源,以基于規則的方法進行實體抽取,構建與故障相關的特征,采用神經網絡和XGBoost分類器完成故障診斷。
上述相關研究將知識圖譜技術應用于汽車故障診斷領域,雖然極大地提升了知識庫的構建效率和關聯性能,但是在構建過程中仍然是只考慮了平面實體(flat entity)的獲取,而并未過多關注故障文本中存在的嵌套實體(nested entity)和非連續實體(discontinuous entity)等問題。本文中基于某公司售后業務數據,針對故障文本中的嵌套實體問題和非連續實體問題,提出一種知識圖譜構建流程,并利用知識圖譜技術、自然語言處理技術,完成汽車故障知識圖譜的構建。
本文所使用的數據為某公司某款新能源車型一年的維修數據,這些數據從系統導出后以表格形式存儲,相應字段的名稱與數據類型如表1 所示。通過觀察發現:數據包含了車輛信息、故障信息和維修信息3 部分內容,同時只有故障描述和處理結果字段為非結構化數據,其中故障描述字段包含車輛故障現象內容,處理結果字段包含排查步驟、故障原因、更換配件等內容。本文的目標即是分別從這兩個字段中抽取出故障現象實體和故障原因實體,進而構建汽車故障知識圖譜。

表1 業務數據分類及說明
與通用領域的文本相比,故障描述字段、處理結果字段中的文本內容具有以下特點:
(1)兩字段包含大量的專有名詞,若直接使用HanLP、Jieba等分詞工具,可能會造成結果不準確;
(2)兩字段存在嵌套實體和非連續實體的問題,實體間的邊界模糊、關系結構復雜,為后續的實體標注和抽取工作增加了難度;
(3)處理結果字段除了包含關注的故障原因內容,還包含排查流程、更換配件等內容,存在信息冗余。
對于上述特點,本文在構建汽車故障知識圖譜時,特提出如下解決方案:針對問題1,采用基于字向量的BERT-BiLSTM-MUL-CRF 完成實體抽取任務,避免了分詞錯誤所帶來的影響;針對問題2,提出了一種新的實體抽取流程,將故障現象、故障原因預先拆分為故障部位+失效形式的組合形式,利用深度學習模型完成抽取,并設計了一種基于語法規則的匹配模板,對抽取的故障部位實體、失效形式實體進行重組,該流程不需要改變模型結構,且時間復雜度較低,能夠較好解決文本中存在的嵌套實體和非連續實體問題;針對問題3,構建DPCNN文本分類器對文本中的內容進行預分類,使得在對故障原因實體進行抽取時,范圍更加收斂。
知識圖譜有自頂向下和自底向上兩種構建方式[6]。自下而上的構建方式是指先完成知識抽取,再定義本體信息;自上而下的方式則是先定義本體信息,再從數據中完成知識抽取。由于車輛故障知識圖譜屬于垂直領域知識圖譜,專業性較強,圖譜中包含實體數量較少,故本文采取自上而下的構建方式,構建流程如圖1所示。

圖1 汽車故障知識圖譜構建框架
模式層構建在數據層之上,主要是通過本體庫來規范數據層的一系列事實表達。本體是結構化知識庫的模板,通過本體庫而形成的知識庫不僅層次結構較強,并且冗余程度較小[1]。本文所構建的汽車故障知識圖譜模式層如圖2 所示,主要包括車型車系、故障現象、故障原因等8 個實體和它們之間的7種關系組成。

圖2 知識圖譜模式層構建
數據層主要是由一系列的事實組成,而知識將以事實為單位進行存儲[1]。數據層構建主要包括知識抽取、知識融合、知識存儲3 個任務,其中知識抽取作為主要任務。知識抽取包含實體抽取、關系抽取和屬性抽取,由于本文數據采用表格形式存儲,各字段之間的對應關系明確,因此只需要進行實體抽取。實體抽取又稱命名實體識別NER(name entity recognition),它的主要任務是從非結構化文本中抽取結構化的實體;針對抽取后的實體可能存在一詞多義或近義詞的問題,需要進行知識融合處理,即實體消歧和共指消解任務;知識存儲則是選用合適的存儲方案對獲取的知識進行存儲,以便后續應用和維護。
文獻[7]中將實體抽取的方法分為3 類:基于規則的方法、基于統計機器學習的方法以及基于深度學習的方法。其中,基于規則的方法需要制定大量的規則模板進行實體抽取,該方法存在規則沖突、組合爆炸、可擴展性差等缺點;基于統計機器學習的方法實現了模型的自學習,具有一定的擴展性,但是模型的效果依賴于人工選擇的特征;基于深度學習的方法可實現端到端的實體抽取,在實體抽取任務中已經得到廣泛應用。深度學習模型結構大致可以分為嵌入層、編碼層和解碼層3 層結構。嵌入層主要用來實現輸入字符或詞的向量化表示;編碼層使用深度學習模型進行特征提取;解碼層用于對深度學習模型的輸出進行解碼。現有研究主要集中在對嵌入層和編碼層部分的研究,嵌入層部分相關研究主要關注如何更好實現輸入的語義表示,如使用動態語言模型(BERT[8-9]、ELMO[10]等)、字詞融合方法[10]等增強語義信息;編碼層相關研究主要關注如何更好捕獲隱含特征,如加入注意力機制[11-12]等。
目前,基于深度學習的實體抽取技術已經比較成熟,但大部分的研究仍然局限于平面實體的抽取,而對于嵌套實體、非連續實體的抽取,依舊面臨一些困難。為解決這些問題,本文中針對故障文本的特點,提出了一種汽車故障知識圖譜構建流程,具體包括:文本預分類、實體抽取、實體重組、知識融合、知識存儲。
2.3.1 基于DPCNN的文本預分類
處理結果字段中包含故障描述、排查流程、故障原因、更換配件4個內容,如表2所示。

表2 文本類別及示例
若直接對處理結果字段進行實體抽取,由于存在其他類別信息會增加模型抽取難度,因此考慮對該字段中的文本內容預先進行分類處理,即文本分類任務。目前相關研究中,通常使用機器學習模型或者深度學習模型來實現文本分類,本文所使用的模型為Johnson 等[13]提出的深度金字塔卷積神經網絡DPCNN 模型。該模型在TextCNN 模型[14]的基礎上進行了相應改進,它通過等長卷積將第i個詞的編碼信息與其上下文的編碼信息進行融合;通過1/2池化層增加了卷積核的感受野,用于捕獲文本長距離依賴關系;通過殘差解決CNN 網絡中的梯度彌散問題。經過上述優化,與TextCNN 模型相比,DPCNN模型具有更好的文本分類效果,本文所使用的DPCNN模型結構如圖3所示。

圖3 DPCNN模型結構
2.3.2 基于BERT-BiLSTM-MUL-CRF 的實體抽取
在完成文本分類后,本文須分別從故障描述字段、處理結果字段中的故障原因文本抽取出故障現象實體和故障原因實體。經過觀察,這兩部分文本中存在嵌套實體問題和非連續實體問題,雖然目前已經有大量實體抽取的相關工作,但是很少涉及嵌套實體和非連續實體的抽取問題,其中對于嵌套實體問題,目前主要有以下幾種思路。(1)基于超圖的方法:如文獻[15]中提出基于遞歸神經網絡的嵌套實體抽取模型,在解碼時,將超過設定閾值的類別輸出,并作為當前token 的標簽;使用KL-divergence 損失函數來計算多標簽損失,但是模型的閾值設定存在主觀因素。(2)基于數據標注的方法:如文獻[16]中采用BILOU 標注法,將嵌套的實體標簽進行組合,例如文中將“I-ORG”標簽和“U-GPE”標簽進行組合,形成一個新的標簽“I-ORG|U-GPE”,這樣嵌套實體對應的多分類任務就轉化為單分類任務,該方法由于采用了復合標注,會造成不同類別樣本分布不均,模型學習效果變差。(3)基于狀態轉換的方法:文獻[17]中采用從外到內遞歸解碼的方式搜索嵌套實體,直到不再檢測到新的嵌套實體為止,該方法中內層嵌套實體的識別在外層實體的內部進行,因此外層實體的識別出現的偏差會隨遞歸解碼過程傳播。(4)基于閱讀理解的方法:文獻[18]中引入MRC(mechine reading comprehension)框架,將NER任務轉化為閱讀理解任務,通過BERT 模型對問題和文本進行編碼,并分別計算文本中每個位置為實體起始索引以及結束索引的概率,最后將起始索引與結束索引匹配,完成實體識別任務。針對非連續實體問題,文獻[19]中提出一種基于最大團(maximal clique)發現的非連續命名實體識別模型,即Mac 模型,其主要思想是采用段圖(seqment graph)的方法,將文本中的連續或非連續實體表示為圖中的節點,并將同一實體的片段進行用邊進行連接,此時非連續命名實體識別問題就轉化為發現圖中最大團的問題;文獻[20]中則是分析了嵌套實體和非連續實體的共性問題,并把非連續實體轉化為嵌套實體來研究,使用堆棧結構,通過乘法注意力機制去捕獲stack 區與buffer區元素之間的非連續性依賴,并通過該依賴程度決定下一步執行何種動作,進而找出文本中的非連續實體。
通過分析故障文本,得出如下結論:文本中的嵌套實體問題主要為故障部位實體和故障現象實體的嵌套,如圖4 中的“左前輪”和“左前輪漏氣”,嵌套結構為兩層嵌套;非連續實體主要表現為故障部位或失效形式的重疊,如圖4 中的“異響”。在語法結構上,嵌套實體多為主謂結構,即故障部位在前,失效形式在后;非連續實體中非連續部分通常會以“、”符號進行連接。基于上述特點,本文將故障現象、故障原因預先拆分為故障部位+失效形式的組合形式,構建模型完成對故障部位實體、失效形式實體的抽取,解決文本中的嵌套實體問題;之后對抽取的結果基于語法規則再次重組,解決非連續實體問題,最終獲得故障現象實體和故障原因實體。

圖4 嵌套實體與非連續實體舉例
在利用深度學習模型進行抽取時,模型輸入通常可分為單個字符輸入、詞輸入以及字詞融合輸入。考慮到本文數據為專業領域文本,分詞結果可能不準確,而分詞所產生的誤差最終又會影響模型的訓練和預測,所以本文采用基于字向量的BERTBiLSTM-MUL-CRF 模型完成實體抽取,模型結構如圖5所示。

圖5 BERT-BiLSTM-MUL-CRF 模型結構
在上述模型結構中,BERT模型作為嵌入層對每個輸入字符進行編碼,它基于自注意力機制,使得每個字符的編碼信息能夠融合上下文其他字符的信息,更好進行語義表示;BiLSTM 模型通過左向網絡和右向網絡獲取字符的上下文信息,完成特征提取;注意力層用來捕獲BiLSTM 輸出編碼中更加豐富的信息;CRF 層用來對注意力層的輸出進行解碼,與argmax 不同,CRF 層不僅考慮了標簽的發射概率,還考慮了標簽之間的轉移概率,能夠更好實現對輸出標簽序列的約束。
2.3.3 基于語法規則的實體重組
如圖6 所示,由于本文預先對故障現象、故障原因進行了拆分,因此在完成故障部位實體、失效形式實體的抽取后,需要對實體進行重組,以獲得最終的故障現象實體和故障原因實體。因此,本節結合2.3.2 節所述故障文本的特點,設計了一種基于語法規則的匹配模板,如表3 所示,用來完成對實體的重組。

表3 基于語法規則的實體匹配算法

圖6 實體匹配示意圖
為更好解釋本文的實體匹配算法,現以故障現象“右前門、右前翼子板、前蒙皮發黃,制動燈不亮”為例,對匹配算法進行解釋說明,過程如圖7 所示。首先,經過模型抽取,分別得到以下故障部位實體和失效形式實體:[右前門,右前翼子板,前蒙皮,制動燈],[發黃,不亮],依次獲取故障部位實體和失效形式實體在故障現象文本中的索引列表L1,以及失效形式實體索引列表L2,本例中,L1為[0,4,10,13,16,19],L2為[13,19];之后,按從小到大的順序將L1中的元素依次壓入棧內,在壓棧之前,判斷該索引是否為失效形式索引,若為真,則將棧內所有元素彈出,同時將彈出的故障部位索引與失效形式索引一一配對;最后,將這些匹配完成的索引對與故障部位、失效形式進行映射,就得到了最終的故障現象。需要注意的是,本例為失效形式不連續的情形,當遇到故障部位不連續的情形時,首先需要通過語法規則,將失效形式實體合并成列表L′,如圖6中例3所示的[異響,刮不干凈],假設列表L′長度為n,同時以n個失效形式實體中的最小索引作為列表L′的索引,并將該索引添加至列表L1和L2中。之后采用同樣的方式將列表L′與故障部位實體進行配對,假設符合配對條件的故障部位實體數量為m,則將L′中的n個失效形式實體與m個故障部位實體一一匹配,最終得到m×n個故障現象實體。

圖7 實體匹配示例
2.3.4 知識融合
知識融合是融合各個層面的知識,包括不同知識庫的同一實體、多個不同的知識圖譜、多源異構的外部知識等,并確定知識圖譜中的等價實例、等價類及等價屬性,實現對現有知識圖譜的更新[21]。在汽車故障診斷領域,主要是解決近義詞的問題,即共指消解任務,目前,針對共指消解任務,主要有3 種方法:基于術語的方法、基于結構的方法和基于深度學習的方法。基于術語的方法主要關注實體的名稱、屬性、標簽等信息,常用比較方法有word2vec、TFIDF 值、Jaccard 系數等;基于結構的方法通過分析實體結構上的相似度來完成對齊,該方法與分布式假設的思想相同;基于深度學習的方法是利用知識表示學習將圖譜中的實體和關系都映射成低維稠密空間向量,使用神經網絡模型自動獲取隱式特征,在隱式向量空間計算實體相似度。本文中采用術語相似度和結構相似度相結合的方法來完成共指消解任務。
3.1.1 算例情況
本文從原數據處理結果字段中選取部分數據進行切分,最終獲得4 000條數據。將數據標注為故障現象、排查流程、故障原因和更換配件4 個類別,并按照6∶1∶1 的比例劃分為訓練集、驗證集和測試集,用于模型的訓練和測試。
3.1.2 評價指標
使用準確率P、召回率R和F1值3個指標對每個類別的預測結果進行評價;使用各類別預測結果的加權平均對模型整體預測結果進行評價。
3.1.3 參數設置
本文所使用的DPCNN 模型參數設置如表4所示。

表4 DPCNN參數及取值
3.1.4 文本分類結果與分析
選用機器學習中的SVM 模型、KNN 模型和深度學習中的TextCNN、VDCNN 模型,進行對照實驗,各模型的實驗結果如表5所示。

表5 文本分類結果 %
從上述結果可知,與機器學習模型相比,3 種深度學習模型表現更好,而DPCNN 模型基于前文所述的優點,取得了最好的實驗結果。
3.2.1 算例情況
從故障描述字段和經過處理結果字段中的故障原因文本中選取4 200 條數據,采用BIOS 標注法進行標注,并按5∶1∶1 的比例劃分為訓練集、驗證集和測試集。
3.2.2 評價指標
使用實體級別的準確率P、召回率R和F1值對模型評價外,同時使用各實體預測結果的加權平均來評價各模型的整體表現情況。
3.2.3 參數設置
本文所構建的BERT-BiLSTM-MUL-CRF 模型參數設置如表6所示。

表6 BERT-BiLSTM-MUL-CRF 參數及取值
3.2.4 實體抽取結果與分析
引入IDCNN-CRF、Lattice LSTM-CRF 等模型進行對照實驗,各模型實體抽取結果如表7所示。

表7 實體抽取結果 %
從表7 可以看到:本文所使用的BERTBiLSTM-MUL-CRF 模型在加入BERT預訓練模型和注意力機制之后,較原模型而言,其各項評價指標提升了10 多個百分點;同時,也看到Lattice LSTMCRF 模型和LRCNN-CRF 模型也取得了較好的效果,Lattice LSTM 模型在基于字符NER 的基礎上,通過門控單元,將與當前字符匹配的所有詞匯信息融入到原LSTM 模型中,同時利用了字符和詞匯信息。LR CNN 模型采用卷積神經網絡提升了模型的運行速度,同時考慮到在匹配詞匯信息時,多個詞匯之間可能會存在沖突。因此該模型通過引入Rethinking反饋機制,利用高層語義弱化錯誤候選詞的權重。另外,從圖8 也觀察到,相較于其他模型,本文模型分別對不同實體抽取時,也都取得了最佳的F1值。

圖8 各模型F1值情況
在完成故障部位實體和失效形式實體的抽取后,采用本文設計的匹配模板進行重組,以獲取最終的故障現象和故障原因。本文實驗數據中,包含嵌套實體的樣本共計9 537 條,其中,既包含嵌套實體又包含非連續實體的樣本共計452條。
在進行實體重組時,首先選取452 條包含非連續實體的樣本,使用本文所提出基于語法規則的匹配模板,對得到的故障部位實體和失效形式實體進行重組,得到故障現象實體和故障原因實體,最后人工對重組的結果進行核驗,經過計算,匹配模板的準確率可達到63.3%。之后,選取只包含嵌套實體的樣本共計2 000 條,采用同樣的方式進行重組,經過人工校驗,準確率為86.8%。
從實驗結果來看,本文所設計的模板對于非連續實體的匹配準確率低于嵌套實體。這是由于嵌套實體中,內層實體完全位于外層實體的內部,實體之間的跨度更小,而非連續實體的跨度更長,因此相應地會具有更高的識別難度。就整體情況而言,本文所設計的模板對于嵌套實體和非連續實體都取得了較高的準確率,同時模型的時間復雜度較低,提升了圖譜的構建效率。
如圖9 所示,本文中采用術語相似度和結構相似度相結合的方法,對重組得到的故障現象實體和故障原因實體進行對齊融合。通過先前構建的汽車故障知識圖譜模式層了解到,故障原因實體與維修方法實體鏈接,而維修方法為結構化數據,可直接進行比較,因此可以首先對故障原因實體進行對齊,之后再對故障現象實體進行對齊。在相似度計算時,由于術語相似度更容易計算,因此優先計算實體的術語相似度,結構相似度用以輔助判別,考慮到抽取故障現象與故障原因實體文本較短,本文選用Jaccard系數作為評價指標。

圖9 共指消解流程
在對故障現象和故障原因實體融合處理后,本文使用Neo4j 圖數據庫對構建的汽車故障知識圖譜進行存儲,部分存儲結果如圖10所示。

圖10 知識圖譜部分存儲結果
本文中將知識圖譜應用于汽車故障診斷領域,在傳統知識圖譜構建流程的基礎上,針對文本特點,加入了文本預分類和實體重組。基于DPCNN 的文本分類模型用于從目標字段剝離出故障原因相關內容,縮小了實體抽取范圍;將故障現象、故障原因拆分為故障部位+失效形式的組合模式,采用基于字向量的BERT-BiLSTM-MUL-CRF 模型完成實體抽取任務,并使用基于語法規則的匹配模塊完成實體重組,有效解決了文本中的嵌套實體和非連續實體問題,提升了圖譜構建效率和準確率,為后續構建基于知識圖譜的故障診斷奠定了基礎。