李洪巍 孫浩 莫建坡 曲榮勝 王宇笙
(北京寶蘭德軟件股份有限公司 北京市 100089)
知識圖譜本質(zhì)是揭示實(shí)體之間關(guān)系的語義網(wǎng)絡(luò),由Google 于2012 年提出,其最初是為了優(yōu)化搜索引擎的返回結(jié)果,增強(qiáng)用戶搜索質(zhì)量和體驗(yàn)。知識圖譜不僅包含著事實(shí)類知識,同時也包含著更多的語義知識可為自然語言理解、智能問答及知識推理提供著強(qiáng)有力的支撐?;谥R圖譜的智能問答目前主要分為兩類方法,即基于信息檢索的方法和基于語義解析的方法。
信息檢索式的方法一般首先確定中心實(shí)體,其本質(zhì)任務(wù)是命名實(shí)體識別(Name Entity Recognition),然后通過實(shí)體連接(Entity Linking)等技術(shù)映射到知識庫中實(shí)體從而確定候選答案,最終基于候選答案的排序得分以確定結(jié)果。Li Dong 等人將候選答案和原問題分別向量化,再使用多通道卷積神經(jīng)網(wǎng)絡(luò) (MCCNN) 計(jì)算候選答案與原問題之間的相似度。Siva Reddy 等人將候選實(shí)體生成與關(guān)系抽取 (Relation Extraction) 結(jié)合起來,利用原問題的上下文信息,使用卷積神經(jīng)網(wǎng)絡(luò)為候選實(shí)體對應(yīng)的關(guān)系進(jìn)行打分。Bordes A 等人將候選答案周圍的邊和節(jié)點(diǎn)一同作為子圖進(jìn)行 Embedding,再與原問題的向量做點(diǎn)乘作為得分,最終得出得分排序結(jié)果。
基于語義解析 (semantic parsing) 的方法一般而言可分解為三個任務(wù),分別是短語檢測、資源映射和語義組合。首先利用語義解析理解自然語言問題的語義,將問題轉(zhuǎn)化為具備相同語義的邏輯形式,再通過查詢引擎對生成的邏輯形式進(jìn)行查詢處理,得到最終結(jié)果。這類方法的優(yōu)點(diǎn)在于如果解析成功,則能完整獲得提問者的意圖,從而精確地返回查詢結(jié)果。與此同時,將生成的邏輯形式展示給用戶可以讓用戶檢驗(yàn)系統(tǒng)是否理解正確,哪一步解析發(fā)生了錯誤,從而利用用戶反饋進(jìn)一步改善系統(tǒng)的精度。因此這種方法是一種“可解釋”的面向知識圖譜的自然語言問答方法。語義解析式的問答系統(tǒng)所生成的邏輯形式一般與對應(yīng)數(shù)據(jù)庫的查詢語言相同,例如 RDF 知識庫對應(yīng)的 SPARQL 語言,從而進(jìn)行查詢。
工業(yè)界基于知識圖譜的智能問答大多數(shù)側(cè)重于簡單問題的回答,例如運(yùn)維領(lǐng)域知識圖譜下查詢“Linux2174 機(jī)器的狀態(tài)是什么?”,而對于較為復(fù)雜多跳問題如“查詢K8S_NODE 關(guān)聯(lián)的服務(wù)是什么?”,當(dāng)前KBQA(基于知識庫的問答)解決方案大多為對問題進(jìn)行關(guān)系抽取時,多跳問題的多種關(guān)系拼接為新的關(guān)系標(biāo)簽,從而利用模型進(jìn)行多跳關(guān)系識別,最終將多跳關(guān)系拆分再結(jié)合實(shí)體進(jìn)行圖庫查詢操作。如上述的二跳問題需要打標(biāo)為“關(guān)聯(lián),服務(wù)名稱”這種二跳標(biāo)簽,但隨著知識庫不斷增大,關(guān)系數(shù)量愈發(fā)增多以及面臨更加復(fù)雜的三跳問題時,上述方案產(chǎn)生的數(shù)據(jù)成本便成指數(shù)增加,并且覆蓋率也會降低。
針對于此,本文提出了一種應(yīng)用于運(yùn)維領(lǐng)域知識圖譜智能問答系統(tǒng)OMQA,該系統(tǒng)基于分類策略及子圖匹配方法解決復(fù)雜多跳問題,首先利用預(yù)訓(xùn)練語言模型進(jìn)行多跳問題識別,再進(jìn)行中心實(shí)體的提取,根據(jù)中心實(shí)體召回多跳子圖作為候選答案,最終進(jìn)行問題與候選答案的相似度匹配確定結(jié)果。該方案在運(yùn)維領(lǐng)域知識圖譜的智能問答上的復(fù)雜多跳問題上取得了顯著效果。
OMQA 系統(tǒng)基于運(yùn)維領(lǐng)域知識圖譜,旨在通過解析中文自然語言問題,并從知識庫中準(zhǔn)確獲取答案。本系統(tǒng)整體算法流程如圖1 所示。其中單多跳分類器主要對輸入問題進(jìn)行單多跳問題區(qū)分,實(shí)體鏈指和子圖召回部分須通過知識圖譜完成候選子圖生成;最終通過模型計(jì)算輸入問題與候選子圖的語義相似度進(jìn)而返回問題答案。
圖1: OMQA 系統(tǒng)算法流程
真實(shí)運(yùn)維場景中,用戶對于運(yùn)維知識的查詢問法可包括簡單問題和復(fù)雜多跳問題,對于簡單一跳問題已經(jīng)很多較為成熟的解決方案,但涉及到多跳問題,工業(yè)界的解決思路較為局限。為解決該問題,本文將輸入問題劃分為一跳、二跳、三跳三類,三跳以上問題比較少見且缺乏實(shí)際意義。如表1所示。
表1: 單多跳問題示例
通常情況下,KBQA 處理單多跳問題時,須將一跳問題解析對應(yīng)于單個三元組(頭實(shí)體,關(guān)系,尾實(shí)體),二跳、三跳問題分別對應(yīng)兩個及三個三元組。OMQA 系統(tǒng)首先對單多跳問題進(jìn)行類別劃分,分類模型采用預(yù)訓(xùn)練模型RoBERTa。該模型作為Bert 的調(diào)優(yōu)版本主要體現(xiàn)在預(yù)訓(xùn)練階段具備更大的參數(shù)量、更大的批大小以及更多的訓(xùn)練數(shù)據(jù);在訓(xùn)練方式上,RoBERTa 修改Bert 的靜態(tài)掩碼為動態(tài)以及更換文本編碼方式進(jìn)行訓(xùn)練等。在模型結(jié)構(gòu)上還是采用Transformers的編碼器為核心組成的多層雙向編碼語言模型。輸入層分別詞向量、段落向量及位置向量3 種向量相加,并拼接標(biāo)志句子起始符[CLS]和分句符[SEP],然后經(jīng)過核心為self -attention 機(jī)制的多層Transformers 編碼器,通過多層編碼器對于其上下文語義的充分學(xué)習(xí)后輸出序列,此時起始標(biāo)志位[CLS]包含了其他位置的語義信息,可用作文本分類等相關(guān)任務(wù)。
OMQA 系統(tǒng)單多跳分類器選擇12 層RoBERTa 模型,假定用戶輸入自然語言語句“查詢虛擬機(jī)的狀態(tài)”,模型通過查詢字向量表將文本中的每個字轉(zhuǎn)換為一維向量與段落向量和位置向量進(jìn)行相加得出輸入序列I=([CLS],x,x,...,x,[SEP]),經(jīng) 過12 層Transformers 編 碼 器后輸出T=(T,T,T,...,T,T)。此時輸出向量T包含輸入問題語義的全部信息,再利用全連接層進(jìn)一步訓(xùn)練,最后利用Softmax 函數(shù)進(jìn)行類別劃分,最終得出單多跳問題類別結(jié)果,如式(1)。
y=softmax(TW+b) (1)
其中,softmax 函數(shù)可將輸出結(jié)果映射為類別概率值,W∈R為隱藏層權(quán)重,b∈R為偏執(zhí)項(xiàng),K 表示類別數(shù)目。
2.2.1 實(shí)體提及
實(shí)體鏈指任務(wù)大致可以拆分為兩步,第一步先從文本中提取實(shí)體提及即命名實(shí)體識別任務(wù);第二步則是對提及實(shí)體進(jìn)行消歧,將其映射到知識圖譜中的實(shí)體即實(shí)體鏈接。針對于運(yùn)維領(lǐng)域KBQA 的命名實(shí)體識別任務(wù),此處采用預(yù)訓(xùn)練模型BERT 對輸入問句進(jìn)行詞向量的生成,與單多跳分類模型不同的是,此處模型經(jīng)過訓(xùn)練之后輸出每個字符的基于上下文的表示向量;然后利用BiGRU 網(wǎng)絡(luò)則對BERT 的輸出進(jìn)行特征提取以及標(biāo)簽分類。GRU 網(wǎng)絡(luò)在LSTM基礎(chǔ)上合并其遺忘門和輸入門改為更新門,簡化了模型結(jié)構(gòu),減少了模型參數(shù)同時縮短了模型訓(xùn)練時間,但在效果上與之相當(dāng)。BiGRU 則是將前向GRU 和后向GRU 的結(jié)果進(jìn)行拼接,最終經(jīng)過全連接層及Softmax 得到標(biāo)簽類別。此時BiGRU網(wǎng)絡(luò)的輸出經(jīng)過CRF(條件隨機(jī)場,Conditional Random Fields)模型用于計(jì)算標(biāo)簽序列,CRF 模型訓(xùn)練完成后,采用維特比算法進(jìn)行解碼算出概率最大的標(biāo)簽序列。BERTBiGRU-CRF 模型結(jié)構(gòu)如圖2 所示。
圖2: BERT-BiGRU-CRF 模型結(jié)構(gòu)
2.2.2 實(shí)體鏈接
鑒于運(yùn)維知識圖譜中實(shí)體具有很強(qiáng)的領(lǐng)域?qū)I(yè)性,如實(shí)體為ip的純數(shù)字類、機(jī)器編碼等的純字母類以及漢字與字母、數(shù)字混合類等。因此,模型從問題中識別的實(shí)體(實(shí)體提及)與知識庫中真實(shí)存在的實(shí)體需要做實(shí)體鏈接。OMQA 系統(tǒng)將實(shí)體鏈接分為兩步:候選實(shí)體集合生成和候選實(shí)體排序。
(1)候選實(shí)體集合生成。
候選實(shí)體的生成主要基于字符串匹配機(jī)制完成, 具體步驟為:
1. 對實(shí)體提及進(jìn)行分詞, 分詞后得到集合E=[e,ep1,ep2,…epn],其中e 為實(shí)體提及,epi 為分詞后的實(shí)體子詞部分;
2.計(jì)算分詞權(quán)重,如“虛擬機(jī)資源管理系統(tǒng)”經(jīng)過分詞得“虛擬機(jī)”、“資源”、“管理”、“系統(tǒng)”、“資源管理系統(tǒng)”,統(tǒng)計(jì)分詞得到的子字符串和實(shí)體提及“虛擬機(jī)資源管理系統(tǒng)”,按照字?jǐn)?shù)進(jìn)行權(quán)重分配,權(quán)重系數(shù)分配公式見式(2)。
其中,S為實(shí)體提及的字符串總長度,S為子詞長度。由此可計(jì)算出每個子詞的權(quán)重系數(shù)。
3.遍歷所有分詞結(jié)果在知識庫中進(jìn)行匹配查找,得到所有候選實(shí)體,候選實(shí)體對應(yīng)的權(quán)重為字符串的權(quán)重。
通過上述步驟可得出候選實(shí)體集合,然后需要對候選實(shí)體進(jìn)行消岐排序得到最終實(shí)體。
(2)候選實(shí)體排序。
實(shí)體提及和候選實(shí)體集合的實(shí)體消岐在語義特征下主要進(jìn)行問題與候選實(shí)體描述語義相似性計(jì)算,最終從候選實(shí)體集合中獲得語義相似性最高的實(shí)體作為最終實(shí)體。語義相似性基于二分類的思想,訓(xùn)練數(shù)據(jù)采用鏈接實(shí)體作為正例,負(fù)例為候選實(shí)體集合中其他實(shí)體。首先將問題與候選實(shí)體描述文本拼接輸入到BERT 模型,經(jīng)過多層編碼器后輸出取[CLS]位置向量,如式(4)再經(jīng)過全連接層及Sigmoid 函數(shù)得到候選實(shí)體的概率值,對所有候選實(shí)體的概率值進(jìn)行排序,得到語義特征下的候選實(shí)體排序集合。
其中,K為BERT 輸出的[CLS]位置向量,W∈R為隱藏層權(quán)重,b∈R為偏執(zhí)項(xiàng)。
最后,結(jié)合語義特征維度計(jì)算得出的候選實(shí)體排序集合取得分最高者為鏈接實(shí)體。
OMQA 系統(tǒng)對于問題答案的獲取需要經(jīng)過問題的分類、實(shí)體識別及鏈接以及通過實(shí)體召回知識庫候選子圖并排序,最終完成答案輸出。對于候選子圖召回問題,例如問題1“查詢虛擬機(jī)linux2071 的狀態(tài)”和問題2“查詢虛擬機(jī)2071 關(guān)聯(lián)的節(jié)點(diǎn)的狀態(tài)”分別為單跳和兩跳問題,鏈接實(shí)體為“虛擬機(jī)linux2071”,從知識庫中召回頂點(diǎn)為該實(shí)體的候選子圖如圖3 所示。
圖3: “虛擬機(jī)linux2071”候選子圖
圖3 可以看出,實(shí)體“虛擬機(jī)linux2071”召回的子圖共有6 條路徑,如表2。
表2: 子圖路徑示例
從候選子圖中獲取問題答案采用基于孿生網(wǎng)絡(luò)架構(gòu)的SBERT模型進(jìn)行文本相似度匹配,如圖4 所示。
圖4: SBERT 模型結(jié)構(gòu)
模型輸入分別為問題和候選子圖路徑,如二跳問題“查詢虛擬機(jī)2071 關(guān)聯(lián)的節(jié)點(diǎn)的狀態(tài)”和對應(yīng)兩跳子圖路徑“虛擬機(jī)linux2071(節(jié)點(diǎn))NODE_1(狀態(tài))正?!?兩個文本同時輸入到具有相同結(jié)構(gòu)和權(quán)重的BERT 模型,然后模型輸出的句子向量做平均池化處理,分別得到1×768 維向量u 和v,然后對向量u 和v 做差并取絕對值,最后經(jīng)過全連接層及Softmax 函數(shù)預(yù)測類別(相似或不相似)。
本文實(shí)驗(yàn)使用數(shù)據(jù)基于運(yùn)維領(lǐng)域構(gòu)造的問答數(shù)據(jù)集以及運(yùn)維領(lǐng)域知識圖譜數(shù)據(jù),問答數(shù)據(jù)約為6.5 萬,知識圖譜約4 萬個實(shí)體和160 萬個三元組。問答數(shù)據(jù)如表3 和表4 所示。
表3: 運(yùn)維問答單多跳數(shù)據(jù)集描述
表4: 運(yùn)維問答單多跳數(shù)據(jù)集示例
OMQA 系統(tǒng)采用的模型設(shè)置如表5,實(shí)驗(yàn)采用CentOS系統(tǒng)及Tesla P40 顯卡用于模型訓(xùn)練,采用Pytorch、Hugging face 庫等構(gòu)建模型。
表5: OPSQA 系統(tǒng)模型選擇
以單多跳為例,RoBERTa 預(yù)訓(xùn)練模型采用的是基于Tensorflow 框架實(shí)現(xiàn)的RoBERTa_zh_L12,Bert 直接加載,具體設(shè)置如表6。
表6: 單多跳問題RoBERTa 模型參數(shù)
實(shí)驗(yàn)結(jié)果評價指標(biāo)采用準(zhǔn)確率(P)、召回率(P)、F1 值(P),具體計(jì)算公式如下:
在本文構(gòu)建的OMQA 系統(tǒng)中,智能問答及各個子任務(wù)的實(shí)驗(yàn)結(jié)果如表7 和表8 所示。
表7: OMQA 實(shí)驗(yàn)結(jié)果
由表8 可以看出,OMQA 系統(tǒng)的實(shí)驗(yàn)最終結(jié)果F1 值為83.9%。召回率較低,為82.3%。在各個子任務(wù)中,單多跳問題分類實(shí)驗(yàn)準(zhǔn)確率較高可達(dá)96.7%,可見分類模型對于問題的單、二、三跳問題識別較好。資源名稱實(shí)體識別任務(wù)中,模型對于實(shí)體識別的準(zhǔn)確率為88.6%,其中模型對于問句例如“查詢虛擬機(jī)192.168.1.24_emoer 的狀態(tài)”的實(shí)體“虛擬機(jī)192.168.1.24_emoer”識別結(jié)果準(zhǔn)確率較低,針對于該類較為復(fù)雜的實(shí)體可增加此類實(shí)體的訓(xùn)練數(shù)據(jù)量。實(shí)體鏈接任務(wù)中,對于部分實(shí)體提及,實(shí)體鏈接可有效進(jìn)行修正,例如“查詢B 域-電渠周邊的服務(wù)id”通過模型可提取實(shí)體“B 域-電渠”,利用實(shí)體提及搜索知識庫構(gòu)建候選實(shí)體集合進(jìn)行實(shí)體鏈接時可鏈接到“B 域-電渠周邊”,候選實(shí)體排序模型結(jié)合實(shí)體特征和語義特征兩種方法所得到的結(jié)果最高分作為鏈接實(shí)體,兩種維度分別的實(shí)驗(yàn)結(jié)果如表9,可見兩種方法的結(jié)合對于實(shí)體鏈接準(zhǔn)確率有較大地提升作用。
表8: OMQA 系統(tǒng)子任務(wù)實(shí)驗(yàn)指標(biāo)
表9: 候選實(shí)體排序結(jié)果
OMQA 系統(tǒng)實(shí)驗(yàn)流程主要為根據(jù)單多跳問題分類與問題實(shí)體鏈指的結(jié)果召回知識庫候選子圖,然后根據(jù)候選子圖的文本化表示與問題進(jìn)行相似度匹配,過程中子圖排序任務(wù)僅為問題與候選子圖集合的匹配任務(wù),該任務(wù)實(shí)驗(yàn)準(zhǔn)確率較高為92.1%,在子圖排序任務(wù)中,單多跳問題分別對應(yīng)單多跳子圖集合,如二跳問題對應(yīng)于二跳子圖集合,對于減少子圖集合數(shù)量及提高了準(zhǔn)確率有著顯著效果。但整體系統(tǒng)基于管道流程設(shè)計(jì),整體實(shí)驗(yàn)最終結(jié)果依賴于前面模型步驟,如實(shí)體鏈接依賴于實(shí)體識別模型效果,子圖排序結(jié)果依賴于單多跳問題分類以及實(shí)體識別及鏈接效果,形成鏈?zhǔn)秸`差傳遞,因此在系統(tǒng)的整體流程設(shè)計(jì)以及未來工作研究中還需要繼續(xù)改進(jìn)該問題。
本文提出了一種基于運(yùn)維領(lǐng)域知識圖譜的智能問答系統(tǒng)OMQA。系統(tǒng)首先對于問題進(jìn)行單多跳分類,分類模型采用預(yù)訓(xùn)練模型RoBERTa;然后選擇BERT-BiGRU-CRF 模型對問題進(jìn)行資源名稱實(shí)體識別,在實(shí)體鏈接方面,結(jié)合實(shí)體相似度與語義相似度結(jié)合鏈接候選實(shí)體。最后通過鏈接實(shí)體召回候選子圖集合,單跳、多跳問題分別召回單跳、多跳子圖,最終將候選子圖的文本化表示與問題利用SBERT 進(jìn)行語義相似度匹配,確定問題答案。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)方案可有效解決知識圖譜問答的復(fù)雜多跳問題,并且極大提升了系統(tǒng)性能。
但同時,系統(tǒng)方法存在著一定程度的不足,例如管道流程設(shè)計(jì)所導(dǎo)致的誤差傳遞問題,單多跳分類任務(wù)的誤差、實(shí)體鏈指的誤差都會降低子圖匹配的準(zhǔn)確率。因此,在后續(xù)的工作研究中還需要針對于該問題提出更好的解決方案。