知識圖譜構建下的自動問答KBQA系統實戰-文輝

達觀資料DataGrand發表於2022-11-10

知識圖譜構建下的自動問答KBQA系統實戰-文輝

知識圖譜問答系統任務和意義

問答系統(Qusstion Answering System,QA System)在大家的日常生活中隨處可見,2014年微軟率先推出了小冰智慧聊天機器人, 至現在越來越多如siri移動生活助手和智慧音響等的面市,問答作為一種資訊獲取方式愈發受到大眾和廠商的關注和投入問答系統能夠接受使用者以自然語言形式描述的提問,並從大量的異構資料中查到或者推理出使用者想要的答案。相比傳統的資訊檢索系統,問答系統場景的核心在於使用者的資訊需求相對比較明確,而系統直接輸出使用者想要的答案,這個答案的形式可能是文件、結構化的表格或者推理加工的自然語言文字。

問答示例:

  1. 問題:阿根廷的首都在哪裡 => 答案:阿根廷共和國的首都為布宜諾斯艾利斯。

  2. 問題:兒童安全鎖怎麼設定 => 答案:兒童安全鎖位於各後車門的後邊緣,各車門的兒童安全鎖必須單獨設定。

設定:

  • 左側:逆時針轉動鎖定,順時針轉動解鎖。

  • 右側:順時針轉動鎖定,逆時針轉動解鎖。

知識問答相比文字檢索,減少了使用者對檢索文件內容的二次提取和推理的過程,會顯著提升使用者知識獲取的體驗。根據問答底層技術的差異,目前工程落地實現問答的技術路線基本分為基於知識圖譜的問答(KBQA)、基於閱讀理解的問答(MRC)和常見問題問答(FAQ)三種模式。三種問答的對比如下:


 常見的知識問答技術路線對比

FAQ和MRC不是本文介紹的重點,這裡簡要介紹。在FAQ中,重點是文字語義匹配的精度,如 使用者的問題是“怎麼加玻璃水”,而問答對庫中的標準問句為“新增玻璃清潔液”,類似的泛化問題決定了常見的字串相似度匹配無法解決,STS模型比如sentence-bert等雙編碼模型或者蘇劍林老師的sim-bert等模型或者透過領域詞典都可以解決類似泛化問題。MRC方面,基於百度dureader等中文閱讀理解資料,在通用領域可以快速搭建一個MRC問答服務,但是垂直領域仍然需要標註資料來讓模型的效能達到一個可以接受的水平。在垂直領域,針對MRC訓練資料稀少的問題,可以從非結構化文字三元組標註的資料得到補充。如對於文字“北京,簡稱“京”,是中華人民共和國的首都,是全國的政治中心、文化中心,是世界著名古都和現代化國際城市。”,圖譜構建過程中標註的三元組為(中國,首都,北京),構造的MRC問題即“中國的首都在哪裡”,答案SPAN為“北京”的index位置。KBQA(Knowledge Base Question Answering)作為一種底層基於知識圖譜的問答技術,相比傳統的文字檢索問答和FAQ(Frequently Asked Questions),基於垂直領域相對固定邊界的知識圖譜,可以結合業務提供一種高階的資訊服務形式,透過確認、反饋等操作完成資訊獲取,現階段下,無論是通用圖譜還是領域圖譜,業界對簡單問答的效果都達到了一個比較好的水平,而在特定場景的領域圖譜中,經過梳理,複雜問答特別是推理形式的問答也是可以達到一個比較可以好的效果。


基於知識圖譜結構化關聯知識的問答系統的業務價值包括:

  1. 知識的沉澱和高效複用,知識梳理更加明確直接,實現知識的瘦身和標準化;

  2. 返回的答案更能精準理解使用者的意圖,答案更加直接高效,避免二次推理加工;

  3. 對知識管理的維護更加方便,實體-屬性-關係自然,方便增刪改查;

  4. 特定業務場景下基於專家經驗的複雜推理成為可能


智慧問答系統技術架構

智慧問答系統的整體基礎框架圖所示,一共分為據預處理模組、問句分析、 知識檢索和答案生成四個部分。下面介紹達觀知識圖譜平臺問答系統的一些具體的實踐經驗。

知識圖譜構建下的自動問答KBQA系統實戰-文輝

 智慧問答系統的整體基礎框架


01 問句預處理

除了常見的分詞和詞性標註外,還可以根據知識圖譜中已有的模式、實體名稱、關鍵屬性值對問句進行糾錯。如圖所示,根據產品的別名就可以對問句中的產品別名進行糾錯。


實際場景下的領域知識圖譜,更多的構建的是知識點的關聯,即實體作為一個知識點,可能是一個短語或者一個語言片段,而在系統冷啟動下,面對領域資料,透過句法分析提取出query中的短語,該候選短語也可以作為實體提及方便後續進行實體連結。透過中文樹庫(Chinese Tree Bank,Zhang Y., Zhou H., & Li Z. Fast and accurate neural crf constituency parsing,2020)限制短語的詞性過濾重要的短語,如保留名詞短語,透過短語提取可以避免單詞、或者Ngram作為實體提及檢索帶來的巨大開銷。我們採用HanLP自然語言處理包中的短語提取介面對query提取名詞短語。


02 實體連結和詞槽提取

實體連結(entity linking)就是將問句文字的某些字串對映到知識庫中對應的實體上。實體連結是問答系統的核心問題之一,實際應用中問答中的大部分badcase可能都是實體連結出現了問題,如果實體識別一旦出錯,答案就很容易出現完全不相關。為了解決垂直行業資料冷啟動的問題,我們結合精確鏈和模糊連結相結合的方式來提高實體連結的精度。


實體精確連結利用知識庫中已有的知識點,將模式(schema)名稱、實體名稱、可遍歷的列舉屬性值集合構建字典樹(即Trie樹),透過Trie字首樹提取查詢中的精確實體名稱。

我們在實際使用的Trie樹的過程中,也做了若干最佳化:

  1. 以query分詞結果token作為基本粒度構建Trie樹,即命中的實體提及必須是由1個或者多個token組成的,比如對於query“中國平安”,Trie樹種存在人物名稱“國平”,分詞結果為[中國,平安],可以避擴音取出 “國平”的情況。

  2. 我們對Trie進行了效能最佳化,通用的Trie都是以一個字典的巢狀層級結構,這種情況下往往存在資料稀疏的現象,即造成了記憶體消耗比較大,另一方面也降低遍歷查詢的效率,針對這些問題業界也有很多Trie樹的變種,如DATrie(雙陣列字典樹)、Radix Tree(基數樹),我們使用Radix和普通Trie做了效能對比,在200萬實體名稱的資料規模情況下,Radix相比Trie可以減少一半的記憶體佔用。


知識圖譜構建下的自動問答KBQA系統實戰-文輝

 Trie樹和Radix壓縮字串對比

Trie樹只能實現精確的根據實體名稱的實體提及召回,而實際問答中使用者的問題可能不包含完整的實體名稱,這種情況下,需要根據NER模型抽取出Query中的實體,NER模型的候選結果和句法分析的候選名詞短語構成模糊連結的詞彙來源,並據此到ElasticSearch中進行檢索,透過Es的檔案檢索,可以找到大部分具備和Query實體字串相似的候選實體,透過可以對檢索結果進行覆蓋率、差異度、緊密度等各個維度對候選的結果進行相似性結果判斷和過濾。除了使用NER去檢索,業界也存在直接對圖譜中的實體(描述)進行編碼,使用向量檢索去找到最相近的連結實體,感興趣的讀者可以參考相關文獻和實踐,在此就不再贅述。


除了實體連結,還需要對提取Query中其他的槽資訊,具體的槽位資訊和意圖相關,比如對於“查詢實體型別的總數”這個統計意圖,槽位資訊需要具體的實體型別(網點)、統計謂詞(總數)。槽位從型別上可以分為模式槽資訊(實體型別、關係型別、屬性名)、屬性條件槽(屬性名、條件、條件值)、統計條件槽(統計謂語:總數、最大、最小、平均等)。屬性條件槽、統計條件槽一般都屬於複雜問題情形。對於型別名稱、統計謂詞,因為相對比較可列舉,也可以以類似字典樹的方式從Query中提取。因為知識圖譜中實體知識點粒度和相關組合等問題,會導致候選連結的結果會互相重疊。一般而言,連結到的實體提及越長,其語義也就越明確,可靠性也更高。因此我們採用最大區間覆蓋優先的篩選方法,優先保留連結更大的結果。如下圖所示,有限保留“Aegis分叉型覆膜支架及輸送系統”的連結結果,而忽略“支架”、“覆膜”連結結果。



連結到多個實體提及或者槽需要進一步去除其中的歧義資訊,例如Query:“平安銀行的董事”,該問題為查詢實體一度到達實體的問題,問題中的“董事”連結到董事(關係名稱,企業->人物)和董事(人物名稱)兩個實體,對實體消岐的問題可以藉助分類模型對Query 上下文進行分類判斷,也可以藉助知識圖譜透過子圖匹配的方法消除歧義。平安銀行作為一個企業,透過董事關係可以查詢一度實體;而董事作為一個人物,其一度的企業中無平安銀行。透過槽位到子圖的相關性打分,槽位組合[平安銀行(企業),董事(關係名稱)]比[平安銀行(企業),董事(人物)]更加合理,優先選擇更相關的組合作為槽提取的結果。


03 問答意圖識別

KBQA的意圖相比傳統檢索意圖會更加的複雜,實際應用中,文字檢索的意圖一般定義為搜什麼,可能會採用“玩具”、“外賣”、“電影”這種類別體系來區分, 比如“變形金剛的票價”其實搜的就是變形金剛的電影,而KBQA的意圖因為答案的精準、直接特點,註定了KBQA的意圖的粒度會更細、維度會更多,例如查詢實體的屬性、條件過濾的實體、統計類查詢、對比查詢等。

知識圖譜構建下的自動問答KBQA系統實戰-文輝

 常見的KBQA問答意圖


問答意圖可以透過模板匹配和基於神經網路的判別模型來識別。模板匹配透過系統內建的固定模板和自定義模板可以保證系統冷啟動的基礎問答效果。基於神經網路的意圖判別模型需要在特定的圖譜下大量的訓練樣本,例如使用fasttext等常見文字分類模型對Query進行意圖分類。在垂直領域下,特別是使用者的特定場景中,訓練樣本的生成和構造一直是一個較大的挑戰,一種常見的方法就是配置問題模板,自動生成訓練樣本問題。比如對於意圖“疾病的症狀”,可以使用“${疾病名稱|別名}的[症狀|表現|症候]”模板,使用圖譜的疾病實體,批次生成樣本。分類模型相比模板匹配可以一定程度解決SPO一度問答問題的泛化問題。


結合問句分析的結果,從技術路線上主要可以分為基於檢索排序的問答策略和基於語法解析的問答,基於排序檢索的問答結合Query和問句分析的結果,找到圖譜中若干個子圖,然後對這些子圖進行排序,返回Top結果作為答案;基於語法解析的策略則將Query轉成成一個完成圖查詢語句,將執行該圖查詢語句的結果作為答案。

 

基於檢索排序的問答策略

類似推薦系統的召回-排序兩段策略,KBQA我們也可以利用問句分析的結果召回子圖,然後計算Query和每個子圖的相關性,返回Top子圖。可以看出基於檢索排序的問答策略迴避了語法解析的難題,一般只需要問答-答案的標註資料採用端到端的訓練即可,泛化能力較強。其中比較核心的問題在於檔答案的表示形式。達觀知識圖譜問答系統結合知識圖譜的模式,生成特定的答案文字形式。


基本的主要流程如下:

  1. 使用問句分析的實體,如“陸德明”,查詢該實體的一度屬性、一度實體、一度關係屬性等三元組資訊,謂詞的判斷特別重要,因此我們考慮生成只包含實體和謂詞的候選三元組,即將O置空,(“陸德明出生日期”、“陸德明就職”);

  2. 將候選三元組資訊作為整個文字串進行語義編碼,如“陸德明出生日期”、“陸德明就職浦東支行”,因為整個三元組JOIN成了一個字串,所以對圖譜的模式設計也至關重要,對於[陸德明,就職,浦東支行]這個SPO,如果將關係設計的開始結束實體顛倒過來,則生成的候選串就缺乏語義了(浦東支行就職陸德明語法明顯不合理);

  3. 將Query同樣進行編碼,計算向量距離作為相關性打分的判斷依據。對於Query的編碼同樣也需要考慮連結的實體和實體提及的差異,如“Aegis的工序”,需要將Aegis替換成知識庫中的實體名稱,如“Aegis分叉型覆膜支架和輸送系統的工序”,其和候選串“Aegis分叉型覆膜支架和輸送系統工藝”的相似度更高,不容易被拒識。


在實際的SPO一度問答應用中,謂詞即是最核心意圖。對於“陸德明的生日是哪天”,陸德明的屬性謂詞“出生日期”作為正樣本,其他實體屬性”家庭住址”、關係屬性“就職”等都可以作為負樣本,標籤為0。如此在足夠的樣本情況下,可以訓練一個分類模型,作為上述第3)步中的匹配模型。


以上策略降低了工程上實現的複雜度,但是因為需要編碼和儲存候選答案的語義編碼,同時可能還需要費力收集負樣本去構建一個文字語義匹配模型,因此還有一種有意思的策略是基於Seq2Seq + True(字首樹,壓縮知識庫的答案集合,約束Seq2Seq編碼)的實現方式,可以避免語義編碼和文字意義匹配模型的訓練步驟。


基本步驟包括:

  • 使用Trie樹壓縮儲存三元組;

  • 構造訓練集,訓練Seq2Seq模型,下圖是基於roformer-sim

(參考:)的Seq2Seq架構


知識圖譜構建下的自動問答KBQA系統實戰-文輝圖6 基於reformer-sim的seq2seq框架


最後在解碼的過程中,透過Trie限定decode的輸出範圍,從而保證輸出的三元組答案一定在庫中。關於Seq2Seq + Trie的具體實現方式可以參看KgClue的一個baseline實現 ()



基於語法解析的問答策略

複雜問句因為往往需要從一個多實體多關係的子圖推理而來,因此一般採用將問句透過語法分析的方式轉換成特定的查詢語句或者查詢解析樹(原理類似SQL的執行計劃)。相比簡單的一度屬性關係查詢,複雜的問答包括多跳問題、約束問題、統計問題等。

 

知識圖譜構建下的自動問答KBQA系統實戰-文輝

表4 複雜KBQA型別示例

 

因為是需要將Query轉成查詢語句,一般深度學習的做法是使用如BART等生成模型,生成對應的查詢語句。這裡介紹一下史佳欣團隊KQA Pro()的處理思路。透過將自然語言問題表示為基本函式組合而成的KoPL函式,函式執行的結果即為答案。KoPL中的函式包含FindALL、FilterSTR、Count等函式,函式存在相互輸入輸出的依賴,一個KoPL程式就是一個有向無環圖。整個推理過程分為生成骨架和生成引數兩個部分。骨架指定了執行的型別和順序,引數指定了每個函式具體操作的輸入。基於BART的KQA Pro的baseline目前可以達到90%左右,人類是97%。


知識圖譜構建下的自動問答KBQA系統實戰-文輝

圖7  骨架解析器和引數解析器

 

基於Seq2Seq的生成查詢語句實際落地過程中,往往由於人力、算力、可維護等各個角度,圖譜的完整性剛開始階段不是特別的好,缺乏足夠多質量較高的訓練樣本,因此基於深度學習的方法很難直接就可以發揮作用。對於複雜推理問答仍然需要一套靈活可配置的介面定義,可以方便對規則和模板等進行管理。參考KoPL的設計,將基礎查詢封裝成基礎運算元,可以快速配置出如下圖所示的一個複雜意圖。

知識圖譜構建下的自動問答KBQA系統實戰-文輝


垂直領域的問答應用

01 基於概念知識圖譜的使用手冊問答

概念圖譜與實體圖譜不同,它的實體是由一個個概念組成的,相應的概念和概念之間存在一定的語義關係。對於制度、手冊類的場景,層次分明但很難提煉具體例項的場景比較適合構建概念圖譜。概念圖譜是將隱形的知識體系化、鮮明化,更好地捕捉到使用者搜尋的隱含意圖,從而達到更精準反饋使用者想要知識的目的。如下是將汽車使用手冊拆分成分類層、原始概念、組合概念、意圖層,實現知識最小粒度拆分的同時,滿足複雜組合的意圖解析。最後透過達觀自然語言處理技術將手冊進行知識結構化,並構建知識圖譜。


知識圖譜構建下的自動問答KBQA系統實戰-文輝

圖8 基於組合概念的汽車手冊知識圖譜


在知識問答處理過程中,根據使用者輸入問句,解析原子級最小顆粒度的概念,逐層推理出最可能的組合概念,也就是使用者的真實意圖,從而實現更加精準的意圖分析和答案推薦。

 

02 基於失效知識圖譜的根因關聯

達觀工業知識圖譜從“人機料法環”等角度,將裝置、人員、故障案例、工藝工序等資料構建知識圖譜。輸入失效模式、位置、現象等資訊,透過智慧問答語義分析引擎,可以將查詢生成與之最匹配的子圖,透過子圖可以匹配到根本原因實體,如果子圖連結不精準,支援對子圖進行修改,子圖越豐富,連結到的原因也就越精準。同時可以返回圖譜關聯的案例相關人員、相關排查解決措施等快速提高解決故障的效率。

 


知識圖譜問答系統面臨的困難

知識圖譜問答系統總體上可以分為Pipeline和端到端兩種方案,端到端的深度學習模型首先需要一個足夠完整的圖譜和基於這個圖譜產生足夠多的樣本資料,而在實際專案中比較困難。相比較而言,實際落地過程中,Pipeline的方式會更可行,可以方便對每個過程或者步驟進行控制和定向最佳化,如新增業務詞典去提高實體連結的精度等等。


 中文知識圖譜複雜問答目前很難自動化就獲得一個較好的base效果,目前業界或多或少都會採用模板庫的方式來解決特定問題。在垂直領域特定的圖譜模式下,透過KBQA和推理可以體現出足夠深度的專家經驗,同時輔助一定結構化的資料降低圖譜構建和維護的成本,這會是體現知識圖譜問答價值的方式之一。

 


參考文章:

  1. https://mp.weixin.qq.com/s/nN0aSXQN_IyjIJ1mRT5s3w

  2. https://mp.weixin.qq.com/s/8vz32-tLU6U1oYPErhbW0Q

  3. https://mp.weixin.qq.com/s/F-_qyHTsPtlrK77JgWidoA

作者簡介

文輝,達觀資料聯合創始人,主要負責達觀資料知識圖譜方向產品和技術研發。同濟大學計算機應用技術專業碩士,曾任職盛大文學資料中心和閱讀集團資料中心核心研發工程師,負責智慧推薦系統、資料探勘和分析、分散式大資料平臺、分散式爬蟲系統的研發工作,在知識圖譜、搜尋推薦、自然語言處理、分散式平臺架構設計等方面具備充足的研發和實踐經驗。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69997703/viewspace-2922646/,如需轉載,請註明出處,否則將追究法律責任。

相關文章