知識圖譜問答系統(tǒng)任務(wù)和意義
問答系統(tǒng)(Qusstion Answering System,QA System)在大家的日常生活中隨處可見,2014年微軟率先推出了小冰智能聊天機器人,直至現(xiàn)在越來越多如siri移動生活助手和智能音箱等的面市,問答作為一種信息獲取方式愈發(fā)受到大眾和廠商的關(guān)注和投入。問答系統(tǒng)能夠接受用戶以自然語言形式描述的提問,并從大量的異構(gòu)數(shù)據(jù)中查到或者推理出用戶想要的答案。相比傳統(tǒng)的信息檢索系統(tǒng),問答系統(tǒng)場景的核心在于用戶的信息需求相對比較明確,而系統(tǒng)直接輸出用戶想要的答案,這個答案的形式可能是文檔、結(jié)構(gòu)化的表格或者推理加工的自然語言文本。
問答示例:
- 問題:阿根廷的首都在哪里 => 答案:阿根廷共和國的首都為布宜諾斯艾利斯。
- 問題:兒童安全鎖怎么設(shè)置 => 答案:兒童安全鎖位于各后車門的后邊緣,各車門的兒童安全鎖必須單獨設(shè)置。
設(shè)置:
- 左側(cè):逆時針轉(zhuǎn)動鎖定,順時針轉(zhuǎn)動解鎖。
- 右側(cè):順時針轉(zhuǎn)動鎖定,逆時針轉(zhuǎn)動解鎖。
知識問答相比文本檢索,減少了用戶對檢索文檔內(nèi)容的二次提取和推理的過程,會顯著提升用戶知識獲取的體驗。根據(jù)問答底層技術(shù)的差異,目前工程落地實現(xiàn)問答的技術(shù)路線基本分為基于知識圖譜的問答(KBQA)、基于閱讀理解的問答(MRC)和常見問題問答(FAQ)三種模式。三種問答的對比如下:
表1 常見的知識問答技術(shù)路線對比
FAQ和MRC不是本文介紹的重點,這里簡要介紹。在FAQ中,重點是文本語義匹配的精度,如 用戶的問題是“怎么加玻璃水”,而問答對庫中的標準問句為“添加玻璃清潔液”,類似的泛化問題決定了常見的字符串相似度匹配無法解決,STS模型比如sentence-bert等雙編碼模型或者蘇劍林老師的sim-bert等模型或者通過領(lǐng)域詞典都可以解決類似泛化問題。MRC方面,基于百度dureader等中文閱讀理解數(shù)據(jù),在通用領(lǐng)域可以快速搭建一個MRC問答服務(wù),但是垂直領(lǐng)域仍然需要標注數(shù)據(jù)來讓模型的性能達到一個可以接受的水平。在垂直領(lǐng)域,針對MRC訓(xùn)練數(shù)據(jù)稀少的問題,可以從非結(jié)構(gòu)化文本三元組標注的數(shù)據(jù)得到補充。如對于文本“北京,簡稱“京”,是中華人民共和國的首都,是全國的政治中心、文化中心,是世界著名古都和現(xiàn)代化國際城市?!保瑘D譜構(gòu)建過程中標注的三元組為(中國,首都,北京),構(gòu)造的MRC問題即“中國的首都在哪里”,答案SPAN為“北京”的index位置。KBQA(Knowledge Base Question Answering)作為一種底層基于知識圖譜的問答技術(shù),相比傳統(tǒng)的文本檢索問答和FAQ(Frequently Asked Questions),基于垂直領(lǐng)域相對固定邊界的知識圖譜,可以結(jié)合業(yè)務(wù)提供一種高級的信息服務(wù)形式,通過確認、反饋等操作完成信息獲取,現(xiàn)階段下,無論是通用圖譜還是領(lǐng)域圖譜,業(yè)界對簡單問答的效果都達到了一個比較好的水平,而在特定場景的領(lǐng)域圖譜中,經(jīng)過梳理,復(fù)雜問答特別是推理形式的問答也是可以達到一個比較可以好的效果。
基于知識圖譜結(jié)構(gòu)化關(guān)聯(lián)知識的問答系統(tǒng)的業(yè)務(wù)價值包括:
- 知識的沉淀和高效復(fù)用,知識梳理更加明確直接,實現(xiàn)知識的瘦身和標準化;
- 返回的答案更能精準理解用戶的意圖,答案更加直接高效,避免二次推理加工;
- 對知識管理的維護更加方便,實體-屬性-關(guān)系自然,方便增刪改查;
- 特定業(yè)務(wù)場景下基于專家經(jīng)驗的復(fù)雜推理成為可能
智能問答系統(tǒng)技術(shù)架構(gòu)
智能問答系統(tǒng)的整體基礎(chǔ)框架圖所示,一共分為據(jù)預(yù)處理模塊、問句分析、 知識檢索和答案生成四個部分。下面介紹達觀知識圖譜平臺問答系統(tǒng)的一些具體的實踐經(jīng)驗。
圖1 智能問答系統(tǒng)的整體基礎(chǔ)框架
01問句預(yù)處理
除了常見的分詞和詞性標注外,還可以根據(jù)知識圖譜中已有的模式、實體名稱、關(guān)鍵屬性值對問句進行糾錯。如圖所示,根據(jù)產(chǎn)品的別名就可以對問句中的產(chǎn)品別名進行糾錯。
圖2??基于知識圖譜實體鏈接的Query糾錯
實際場景下的領(lǐng)域知識圖譜,更多的構(gòu)建的是知識點的關(guān)聯(lián),即實體作為一個知識點,可能是一個短語或者一個語言片段,而在系統(tǒng)冷啟動下,面對領(lǐng)域數(shù)據(jù),通過句法分析提取出query中的短語,該候選短語也可以作為實體提及方便后續(xù)進行實體鏈接。通過中文樹庫(Chinese Tree Bank,Zhang Y., Zhou H., & Li Z. Fast and accurate neural crf constituency parsing,2020)限制短語的詞性過濾重要的短語,如保留名詞短語,通過短語提取可以避免單詞、或者Ngram作為實體提及檢索帶來的巨大開銷。我們采用HanLP自然語言處理包中的短語提取接口對query提取名詞短語。
02實體鏈接和詞槽提取
實體鏈接(entity linking)就是將問句文本的某些字符串映射到知識庫中對應(yīng)的實體上。實體鏈接是問答系統(tǒng)的核心問題之一,實際應(yīng)用中問答中的大部分badcase可能都是實體鏈接出現(xiàn)了問題,如果實體識別一旦出錯,答案就很容易出現(xiàn)完全不相關(guān)。為了解決垂直行業(yè)數(shù)據(jù)冷啟動的問題,我們結(jié)合精確鏈和模糊鏈接相結(jié)合的方式來提高實體鏈接的精度。
實體精確鏈接利用知識庫中已有的知識點,將模式(schema)名稱、實體名稱、可遍歷的枚舉屬性值集合構(gòu)建字典樹(即Trie樹),通過Trie前綴樹提取查詢中的精確實體名稱。
我們在實際使用的Trie樹的過程中,也做了若干優(yōu)化:
- 以query分詞結(jié)果token作為基本粒度構(gòu)建Trie樹,即命中的實體提及必須是由1個或者多個token組成的,比如對于query“中國平安”,Trie樹種存在人物名稱“國平”,分詞結(jié)果為[中國,平安],可以避免提取出 “國平”的情況。
- 我們對Trie進行了性能優(yōu)化,通用的Trie都是以一個字典的嵌套層級結(jié)構(gòu),這種情況下往往存在數(shù)據(jù)稀疏的現(xiàn)象,即造成了內(nèi)存消耗比較大,另一方面也降低遍歷查詢的效率,針對這些問題業(yè)界也有很多Trie樹的變種,如DATrie(雙數(shù)組字典樹)、Radix Tree(基數(shù)樹),我們使用Radix和普通Trie做了性能對比,在200萬實體名稱的數(shù)據(jù)規(guī)模情況下,Radix相比Trie可以減少一半的內(nèi)存占用。
圖3?Trie樹和Radix壓縮字符串對比
Trie樹只能實現(xiàn)精確的根據(jù)實體名稱的實體提及召回,而實際問答中用戶的問題可能不包含完整的實體名稱,這種情況下,需要根據(jù)NER模型抽取出Query中的實體,NER模型的候選結(jié)果和句法分析的候選名詞短語構(gòu)成模糊鏈接的詞匯來源,并據(jù)此到ElasticSearch中進行檢索,通過Es的文件檢索,可以找到大部分具備和Query實體字符串相似的候選實體,通過可以對檢索結(jié)果進行覆蓋率、差異度、緊密度等各個維度對候選的結(jié)果進行相似性結(jié)果判斷和過濾。除了使用NER去檢索,業(yè)界也存在直接對圖譜中的實體(描述)進行編碼,使用向量檢索去找到最相近的鏈接實體,感興趣的讀者可以參考相關(guān)文獻和實踐,在此就不再贅述。
表2 模糊鏈接相似性判斷規(guī)則
除了實體鏈接,還需要對提取Query中其他的槽信息,具體的槽位信息和意圖相關(guān),比如對于“查詢實體類型的總數(shù)”這個統(tǒng)計意圖,槽位信息需要具體的實體類型(網(wǎng)點)、統(tǒng)計謂詞(總數(shù))。槽位從類型上可以分為模式槽信息(實體類型、關(guān)系類型、屬性名)、屬性條件槽(屬性名、條件、條件值)、統(tǒng)計條件槽(統(tǒng)計謂語:總數(shù)、最大、最小、平均等)。屬性條件槽、統(tǒng)計條件槽一般都屬于復(fù)雜問題情形。對于類型名稱、統(tǒng)計謂詞,因為相對比較可枚舉,也可以以類似字典樹的方式從Query中提取。因為知識圖譜中實體知識點粒度和相關(guān)組合等問題,會導(dǎo)致候選鏈接的結(jié)果會互相重疊。一般而言,鏈接到的實體提及越長,其語義也就越明確,可靠性也更高。因此我們采用最大區(qū)間覆蓋優(yōu)先的篩選方法,優(yōu)先保留鏈接更大的結(jié)果。如下圖所示,有限保留“Aegis分叉型覆膜支架及輸送系統(tǒng)”的鏈接結(jié)果,而忽略“支架”、“覆膜”鏈接結(jié)果。
圖4 多粒度下的實體提及識別
鏈接到多個實體提及或者槽需要進一步去除其中的歧義信息,例如Query:“平安銀行的董事”,該問題為查詢實體一度到達實體的問題,問題中的“董事”鏈接到董事(關(guān)系名稱,企業(yè)->人物)和董事(人物名稱)兩個實體,對實體消岐的問題可以借助分類模型對Query 上下文進行分類判斷,也可以借助知識圖譜通過子圖匹配的方法消除歧義。平安銀行作為一個企業(yè),通過董事關(guān)系可以查詢一度實體;而董事作為一個人物,其一度的企業(yè)中無平安銀行。通過槽位到子圖的相關(guān)性打分,槽位組合[平安銀行(企業(yè)),董事(關(guān)系名稱)]比[平安銀行(企業(yè)),董事(人物)]更加合理,優(yōu)先選擇更相關(guān)的組合作為槽提取的結(jié)果。
03問答意圖識別
KBQA的意圖相比傳統(tǒng)檢索意圖會更加的復(fù)雜,實際應(yīng)用中,文本檢索的意圖一般定義為搜什么,可能會采用“玩具”、“外賣”、“電影”這種類別體系來區(qū)分, 比如“變形金剛的票價”其實搜的就是變形金剛的電影,而KBQA的意圖因為答案的精準、直接特點,注定了KBQA的意圖的粒度會更細、維度會更多,例如查詢實體的屬性、條件過濾的實體、統(tǒng)計類查詢、對比查詢等。
表3 常見的KBQA問答意圖
問答意圖可以通過模板匹配和基于神經(jīng)網(wǎng)絡(luò)的判別模型來識別。模板匹配通過系統(tǒng)內(nèi)置的固定模板和自定義模板可以保證系統(tǒng)冷啟動的基礎(chǔ)問答效果?;谏窠?jīng)網(wǎng)絡(luò)的意圖判別模型需要在特定的圖譜下大量的訓(xùn)練樣本,例如使用fasttext等常見文本分類模型對Query進行意圖分類。在垂直領(lǐng)域下,特別是用戶的特定場景中,訓(xùn)練樣本的生成和構(gòu)造一直是一個較大的挑戰(zhàn),一種常見的方法就是配置問題模板,自動生成訓(xùn)練樣本問題。比如對于意圖“疾病的癥狀”,可以使用“${疾病名稱|別名}的[癥狀|表現(xiàn)|癥候]”模板,使用圖譜的疾病實體,批量生成樣本。分類模型相比模板匹配可以一定程度解決SPO一度問答問題的泛化問題。
結(jié)合問句分析的結(jié)果,從技術(shù)路線上主要可以分為基于檢索排序的問答策略和基于語法解析的問答,基于排序檢索的問答結(jié)合Query和問句分析的結(jié)果,找到圖譜中若干個子圖,然后對這些子圖進行排序,返回Top結(jié)果作為答案;基于語法解析的策略則將Query轉(zhuǎn)成成一個完成圖查詢語句,將執(zhí)行該圖查詢語句的結(jié)果作為答案。
基于檢索排序的問答策略
類似推薦系統(tǒng)的召回-排序兩段策略,KBQA我們也可以利用問句分析的結(jié)果召回子圖,然后計算Query和每個子圖的相關(guān)性,返回Top子圖??梢钥闯龌跈z索排序的問答策略回避了語法解析的難題,一般只需要問答-答案的標注數(shù)據(jù)采用端到端的訓(xùn)練即可,泛化能力較強。其中比較核心的問題在于檔答案的表示形式。達觀知識圖譜問答系統(tǒng)結(jié)合知識圖譜的模式,生成特定的答案文本形式。
基本的主要流程如下:
- 使用問句分析的實體,如“陸德明”,查詢該實體的一度屬性、一度實體、一度關(guān)系屬性等三元組信息,謂詞的判斷特別重要,因此我們考慮生成只包含實體和謂詞的候選三元組,即將O置空,(“陸德明出生日期”、“陸德明就職”);
- 將候選三元組信息作為整個文本串進行語義編碼,如“陸德明出生日期”、“陸德明就職浦東支行”,因為整個三元組JOIN成了一個字符串,所以對圖譜的模式設(shè)計也至關(guān)重要,對于[陸德明,就職,浦東支行]這個SPO,如果將關(guān)系設(shè)計的開始結(jié)束實體顛倒過來,則生成的候選串就缺乏語義了(浦東支行就職陸德明語法明顯不合理);
- 將Query同樣進行編碼,計算向量距離作為相關(guān)性打分的判斷依據(jù)。對于Query的編碼同樣也需要考慮鏈接的實體和實體提及的差異,如“Aegis的工序”,需要將Aegis替換成知識庫中的實體名稱,如“Aegis分叉型覆膜支架和輸送系統(tǒng)的工序”,其和候選串“Aegis分叉型覆膜支架和輸送系統(tǒng)工藝”的相似度更高,不容易被拒識。
圖5?候選答案SPO生成
在實際的SPO一度問答應(yīng)用中,謂詞即是最核心意圖。對于“陸德明的生日是哪天”,陸德明的屬性謂詞“出生日期”作為正樣本,其他實體屬性”家庭住址”、關(guān)系屬性“就職”等都可以作為負樣本,標簽為0。如此在足夠的樣本情況下,可以訓(xùn)練一個分類模型,作為上述第3)步中的匹配模型。
以上策略降低了工程上實現(xiàn)的復(fù)雜度,但是因為需要編碼和存儲候選答案的語義編碼,同時可能還需要費力收集負樣本去構(gòu)建一個文本語義匹配模型,因此還有一種有意思的策略是基于Seq2Seq + True(前綴樹,壓縮知識庫的答案集合,約束Seq2Seq編碼)的實現(xiàn)方式,可以避免語義編碼和文本意義匹配模型的訓(xùn)練步驟。
基本步驟包括:
- 使用Trie樹壓縮存儲三元組;
- 構(gòu)造訓(xùn)練集,訓(xùn)練Seq2Seq模型,下圖是基于roformer-sim
(參考:https://github.com/ZhuiyiTechnology/roformer-sim)的Seq2Seq架構(gòu)
圖6?基于reformer-sim的seq2seq框架
最后在解碼的過程中,通過Trie限定decode的輸出范圍,從而保證輸出的三元組答案一定在庫中。關(guān)于Seq2Seq + Trie的具體實現(xiàn)方式可以參看KgClue的一個baseline實現(xiàn)(https://github.com/bojone/KgCLUE-bert4keras)。
基于語法解析的問答策略
復(fù)雜問句因為往往需要從一個多實體多關(guān)系的子圖推理而來,因此一般采用將問句通過語法分析的方式轉(zhuǎn)換成特定的查詢語句或者查詢解析樹(原理類似SQL的執(zhí)行計劃)。相比簡單的一度屬性關(guān)系查詢,復(fù)雜的問答包括多跳問題、約束問題、統(tǒng)計問題等。
表4?復(fù)雜KBQA類型示例
因為是需要將Query轉(zhuǎn)成查詢語句,一般深度學(xué)習(xí)的做法是使用如BART等生成模型,生成對應(yīng)的查詢語句。這里介紹一下史佳欣團隊KQA Pro(https://github.com/shijx12)的處理思路。通過將自然語言問題表示為基本函數(shù)組合而成的KoPL函數(shù),函數(shù)運行的結(jié)果即為答案。KoPL中的函數(shù)包含F(xiàn)indALL、FilterSTR、Count等函數(shù),函數(shù)存在相互輸入輸出的依賴,一個KoPL程序就是一個有向無環(huán)圖。整個推理過程分為生成骨架和生成參數(shù)兩個部分。骨架指定了執(zhí)行的類型和順序,參數(shù)指定了每個函數(shù)具體操作的輸入?;贐ART的KQA Pro的baseline目前可以達到90%左右,人類是97%。
圖7? 骨架解析器和參數(shù)解析器
基于Seq2Seq的生成查詢語句實際落地過程中,往往由于人力、算力、可維護等各個角度,圖譜的完整性剛開始階段不是特別的好,缺乏足夠多質(zhì)量較高的訓(xùn)練樣本,因此基于深度學(xué)習(xí)的方法很難直接就可以發(fā)揮作用。對于復(fù)雜推理問答仍然需要一套靈活可配置的接口定義,可以方便對規(guī)則和模板等進行管理。參考KoPL的設(shè)計,將基礎(chǔ)查詢封裝成基礎(chǔ)算子,可以快速配置出如下圖所示的一個復(fù)雜意圖。
垂直領(lǐng)域的問答應(yīng)用
01基于概念知識圖譜的使用手冊問答
概念圖譜與實體圖譜不同,它的實體是由一個個概念組成的,相應(yīng)的概念和概念之間存在一定的語義關(guān)系。對于制度、手冊類的場景,層次分明但很難提煉具體實例的場景比較適合構(gòu)建概念圖譜。概念圖譜是將隱形的知識體系化、鮮明化,更好地捕捉到用戶搜索的隱含意圖,從而達到更精準反饋用戶想要知識的目的。如下是將汽車使用手冊拆分成分類層、原始概念、組合概念、意圖層,實現(xiàn)知識最小粒度拆分的同時,滿足復(fù)雜組合的意圖解析。最后通過達觀自然語言處理技術(shù)將手冊進行知識結(jié)構(gòu)化,并構(gòu)建知識圖譜。
圖8?基于組合概念的汽車手冊知識圖譜
在知識問答處理過程中,根據(jù)用戶輸入問句,解析原子級最小顆粒度的概念,逐層推理出最可能的組合概念,也就是用戶的真實意圖,從而實現(xiàn)更加精準的意圖分析和答案推薦。
02基于失效知識圖譜的根因關(guān)聯(lián)
達觀工業(yè)知識圖譜從“人機料法環(huán)”等角度,將設(shè)備、人員、故障案例、工藝工序等數(shù)據(jù)構(gòu)建知識圖譜。輸入失效模式、位置、現(xiàn)象等信息,通過智能問答語義分析引擎,可以將查詢生成與之最匹配的子圖,通過子圖可以匹配到根本原因?qū)嶓w,如果子圖鏈接不精準,支持對子圖進行修改,子圖越豐富,鏈接到的原因也就越精準。同時可以返回圖譜關(guān)聯(lián)的案例相關(guān)人員、相關(guān)排查解決措施等快速提高解決故障的效率。
知識圖譜問答系統(tǒng)面臨的困難
知識圖譜問答系統(tǒng)總體上可以分為Pipeline和端到端兩種方案,端到端的深度學(xué)習(xí)模型首先需要一個足夠完整的圖譜和基于這個圖譜產(chǎn)生足夠多的樣本數(shù)據(jù),而在實際項目中比較困難。相比較而言,實際落地過程中,Pipeline的方式會更可行,可以方便對每個過程或者步驟進行控制和定向優(yōu)化,如添加業(yè)務(wù)詞典去提高實體鏈接的精度等等。
中文知識圖譜復(fù)雜問答目前很難自動化就獲得一個較好的base效果,目前業(yè)界或多或少都會采用模板庫的方式來解決特定問題。在垂直領(lǐng)域特定的圖譜模式下,通過KBQA和推理可以體現(xiàn)出足夠深度的專家經(jīng)驗,同時輔助一定結(jié)構(gòu)化的數(shù)據(jù)降低圖譜構(gòu)建和維護的成本,這會是體現(xiàn)知識圖譜問答價值的方式之一。
參考文章:
- https://huggingface.co/uer/roberta-base-chinese-extractive-qa
- https://zhuanlan.zhihu.com/kb-qa
- https://mp.weixin.qq.com/s/nN0aSXQN_IyjIJ1mRT5s3w
- https://mp.weixin.qq.com/s/8vz32-tLU6U1oYPErhbW0Q
- https://www.infoq.cn/article/ochiwf5rkuabdxm5s28x
- https://www.kexue.fm/archives/7427
- http://thukeg.gitee.io/kqa-pro/
- https://mp.weixin.qq.com/s/F-_qyHTsPtlrK77JgWidoA
作者簡介
文輝,達觀數(shù)據(jù)聯(lián)合創(chuàng)始人,主要負責達觀數(shù)據(jù)知識圖譜方向產(chǎn)品和技術(shù)研發(fā)。同濟大學(xué)計算機應(yīng)用技術(shù)專業(yè)碩士,曾任職盛大文學(xué)數(shù)據(jù)中心和閱讀集團數(shù)據(jù)中心核心研發(fā)工程師,負責智能推薦系統(tǒng)、數(shù)據(jù)挖掘和分析、分布式大數(shù)據(jù)平臺、分布式爬蟲系統(tǒng)的研發(fā)工作,在知識圖譜、搜索推薦、自然語言處理、分布式平臺架構(gòu)設(shè)計等方面具備充足的研發(fā)和實踐經(jīng)驗。