李春豹
(中國(guó)電子科技集團(tuán)公司第十研究所, 成都 610041)
隨著信息技術(shù)的飛速發(fā)展,海量的互聯(lián)網(wǎng)信息不斷涌現(xiàn),無(wú)論是數(shù)據(jù)樣式、還是數(shù)據(jù)種類都變得繁多,給互聯(lián)網(wǎng)用戶帶來(lái)更加豐富多樣信息的同時(shí)加大了用戶信息獲取的難度。 為了應(yīng)對(duì)傳統(tǒng)檢索方式存在檢索結(jié)果仍需人工篩選、研讀、答案確認(rèn)等耗時(shí)耗力的問(wèn)題,與此同時(shí)進(jìn)一步提高用戶準(zhǔn)確獲取信息的效率,智能問(wèn)答系統(tǒng)應(yīng)運(yùn)而生。
根據(jù)應(yīng)用場(chǎng)景的不同,現(xiàn)有智能問(wèn)答系統(tǒng)類型主要包括電商客服類、閑聊陪護(hù)類[1]、虛擬助理類、檢索式問(wèn)答[2]和綜合問(wèn)答類。 針對(duì)軍事領(lǐng)域特定場(chǎng)景數(shù)據(jù),諸如IBM watson、Wolfram Alpha 等的綜合問(wèn)答類系統(tǒng)已經(jīng)取得了一些成果,但是距離實(shí)際使用仍然有一定差距[3-4],現(xiàn)有研究的不足主要體現(xiàn)在以下3 個(gè)方面:
(1)復(fù)雜問(wèn)題理解不清晰:用戶輸入問(wèn)題時(shí)存在描述不完整、描述冗余、字詞錯(cuò)誤等情況,而現(xiàn)有系統(tǒng)大多未進(jìn)行針對(duì)性處理導(dǎo)致問(wèn)題理解偏差或錯(cuò)誤,進(jìn)而返回錯(cuò)誤答案。
(2)現(xiàn)有系統(tǒng)大多是針對(duì)某一類特定類型數(shù)據(jù)進(jìn)行設(shè)計(jì):例如,面向用戶常見(jiàn)問(wèn)題對(duì)形式的智能客服,還有一系列針對(duì)知識(shí)圖譜、數(shù)據(jù)庫(kù)表或自由文檔而提出的問(wèn)答系統(tǒng),然而,實(shí)際應(yīng)用場(chǎng)景中的數(shù)據(jù)往往是以多種類型存儲(chǔ)。
(3)答案來(lái)源不可追溯:現(xiàn)有智能問(wèn)答系統(tǒng)僅返回用戶輸入問(wèn)題對(duì)應(yīng)答案,用戶驗(yàn)證給定答案的正確性比較困難。
為了應(yīng)對(duì)上述問(wèn)題,本文設(shè)計(jì)了一種面向多類型知識(shí)庫(kù)的多引擎智能問(wèn)答系統(tǒng)。 在充分理解用戶輸入復(fù)雜問(wèn)題的基礎(chǔ)上,針對(duì)特定領(lǐng)域的多來(lái)源、多類型數(shù)據(jù)分別設(shè)計(jì)智能問(wèn)答引擎以分別獲取用戶輸入問(wèn)題的候選答案,完成候選答案篩選排序,以文本、圖像和可視化圖譜等方式展示最終答案。 同時(shí),將答案獲取過(guò)程和答案內(nèi)容在原文中位置進(jìn)行可視化,讓用戶更直觀、更便捷地分析返回答案的準(zhǔn)確性和全面性。
面向多類型知識(shí)庫(kù)的多引擎智能問(wèn)答系統(tǒng)的整體流程如圖1 所示。 由圖1 可知,針對(duì)用戶輸入的自然語(yǔ)言描述問(wèn)題,首先進(jìn)行復(fù)雜問(wèn)題理解,結(jié)合文本描述、外部業(yè)務(wù)知識(shí)、外部業(yè)務(wù)常識(shí)知識(shí)、上下文對(duì)話信息以及問(wèn)題所屬主題等對(duì)問(wèn)題進(jìn)行深度剖析,合理補(bǔ)全用戶輸入問(wèn)題并抽取用戶問(wèn)題中的核心要素,進(jìn)而對(duì)該問(wèn)題的真實(shí)意圖進(jìn)行準(zhǔn)確識(shí)別、理解與分類。 然后,基于理解補(bǔ)全后的問(wèn)題、用戶問(wèn)題意圖分類結(jié)果和業(yè)務(wù)問(wèn)答知識(shí)庫(kù)構(gòu)建多引擎智能問(wèn)答模型,完成面向不同類型知識(shí)庫(kù)的候選答案快速獲取,結(jié)合特定規(guī)則完成最終答案及其來(lái)源的獲取,同時(shí)為了方便用戶進(jìn)行答案溯源,從用戶問(wèn)題輸入、問(wèn)題理解、問(wèn)答引擎答案獲取到答案組織的全過(guò)程進(jìn)行展示。 此外,還支持用戶對(duì)給定答案進(jìn)行評(píng)分、反饋與入庫(kù),并基于入庫(kù)語(yǔ)料對(duì)問(wèn)答模型進(jìn)行自優(yōu)化,持續(xù)提升問(wèn)答系統(tǒng)的性能。
圖1 面向多類型知識(shí)庫(kù)的多引擎智能問(wèn)答系統(tǒng)流程圖Fig. 1 Flowchart of the multi-engine intelligent QA system for multi-type knowledge bases
復(fù)雜問(wèn)題理解的目標(biāo)是在補(bǔ)全問(wèn)題的同時(shí)結(jié)合問(wèn)題中的核心要素識(shí)別用戶問(wèn)題真實(shí)意圖,輔助多引擎智能問(wèn)答模型的問(wèn)答策略選擇,其詳細(xì)流程如圖2 所示。
圖2 復(fù)雜問(wèn)題理解流程圖Fig. 2 Flowchart of the complex question understanding
首先,對(duì)用戶輸入的文本問(wèn)題進(jìn)行字詞糾錯(cuò)、事實(shí)性糾錯(cuò)與語(yǔ)法糾錯(cuò)。 其中,字詞糾錯(cuò)采用面向大規(guī)模字詞糾錯(cuò)語(yǔ)料集的Seq2Seq 深度卷積神經(jīng)網(wǎng)絡(luò)模型[5]完成問(wèn)題中多字、漏字、錯(cuò)字等錯(cuò)誤的糾正。事實(shí)性糾錯(cuò)則是采用基于外部常識(shí)知識(shí)庫(kù)的事實(shí)檢測(cè)方法對(duì)問(wèn)題中偏離常識(shí)知識(shí)的錯(cuò)誤進(jìn)行糾正。 語(yǔ)法糾錯(cuò)則是采用基于語(yǔ)義搭配的錯(cuò)誤檢測(cè)方法完成問(wèn)題中語(yǔ)義搭配錯(cuò)誤檢測(cè)和糾正。
當(dāng)用戶輸入問(wèn)題中出現(xiàn)“他”、“她”、“它”、“呢”等代詞和語(yǔ)氣助詞或者省略實(shí)體等情況時(shí),還需要結(jié)合上文對(duì)話信息采用基于規(guī)則的方法進(jìn)行指代消解與問(wèn)題補(bǔ)全,得到的新問(wèn)題作為復(fù)雜問(wèn)題理解的輸出,同時(shí)采用基于Bert 預(yù)訓(xùn)練模型對(duì)問(wèn)題中的時(shí)間、國(guó)家、人物、軍種、專用名詞等核心實(shí)體進(jìn)行識(shí)別與抽取。 針對(duì)軍事領(lǐng)域數(shù)據(jù),將用戶問(wèn)題意圖劃分為事實(shí)描述類、屬性查詢類、統(tǒng)計(jì)計(jì)算類和分析總結(jié)類,并將其設(shè)置為意圖分類結(jié)果標(biāo)簽,標(biāo)注訓(xùn)練數(shù)據(jù),對(duì)基于Bert 的TextCNN 分類算法[6]進(jìn)行訓(xùn)練后獲取用戶問(wèn)題的意圖分類結(jié)果,用于指導(dǎo)多引擎智能問(wèn)答模型的問(wèn)答策略選擇。 此外,復(fù)雜問(wèn)題理解還提供了相似問(wèn)題和熱點(diǎn)問(wèn)題推薦功能,其中相似問(wèn)題推薦結(jié)果是基于BM25 和語(yǔ)義相似度算法計(jì)算用戶輸入問(wèn)題與歷史問(wèn)題庫(kù)的相似度排序得到,熱點(diǎn)推薦問(wèn)題結(jié)果則是根據(jù)近一周、一月和近三月的問(wèn)答匹配次數(shù)排序得到。
面向多來(lái)源、多類型問(wèn)答知識(shí)庫(kù)構(gòu)建多引擎智能問(wèn)答模型,多個(gè)引擎面向不同類型知識(shí)庫(kù)分別設(shè)計(jì)問(wèn)答算法,包括問(wèn)答對(duì)庫(kù)問(wèn)答算法、閱讀理解問(wèn)答算法、知識(shí)圖譜問(wèn)答算法和數(shù)據(jù)庫(kù)表問(wèn)答算法,以幫助用戶全面、高效、精準(zhǔn)獲取問(wèn)題答案、答案置信度及其答案來(lái)源。
針對(duì)軍事領(lǐng)域的用戶業(yè)務(wù)數(shù)據(jù),問(wèn)答知識(shí)庫(kù)按照知識(shí)的不同類型分別進(jìn)行存儲(chǔ),以供用戶進(jìn)行提問(wèn)。 知識(shí)庫(kù)類型主要分為以下4 類:業(yè)務(wù)活動(dòng)中積累的領(lǐng)域常見(jiàn)問(wèn)題與典型問(wèn)題及其答案構(gòu)成問(wèn)答對(duì)庫(kù),存儲(chǔ)在Elastic Search 庫(kù)中;針對(duì)領(lǐng)域中的結(jié)構(gòu)化數(shù)據(jù),尤其是基礎(chǔ)參數(shù)、性能、屬性等一段時(shí)間內(nèi)固定不變的靜態(tài)數(shù)據(jù),將其組織為知識(shí)圖譜,采用Neo4j 進(jìn)行存儲(chǔ)與展示;一些日常業(yè)務(wù)活動(dòng)相關(guān)的動(dòng)態(tài)數(shù)據(jù),以數(shù)據(jù)記錄的形式存儲(chǔ)在MySQL 或Oracle 結(jié)構(gòu)化數(shù)據(jù)庫(kù)中;而一些非結(jié)構(gòu)化的文檔、資料等構(gòu)成文檔庫(kù),存儲(chǔ)在Elastic Search 中。 針對(duì)上述4 種不同類型的知識(shí)庫(kù)分別提供最適合該類知識(shí)的問(wèn)答引擎,4 種問(wèn)答引擎共同構(gòu)建了多引擎智能問(wèn)答模型,如圖3 所示。
圖3 多引擎智能問(wèn)答模型結(jié)構(gòu)圖Fig. 3 Structure of the multi-engine intelligent QA model
針對(duì)問(wèn)答對(duì)庫(kù)數(shù)據(jù),設(shè)計(jì)了問(wèn)答對(duì)庫(kù)問(wèn)答引擎。首先,面向Elastic Search 庫(kù)采用BM25 算法完成問(wèn)答對(duì)的初步篩選,并根據(jù)評(píng)分完成排序,取前Top-k問(wèn)答對(duì);然后,基于Simhash 計(jì)算文本語(yǔ)義相似度,并根據(jù)評(píng)分完成排序,取前Top-n 問(wèn)答對(duì),完成再篩選;最后,結(jié)合問(wèn)題中抽取的時(shí)間、國(guó)家、人物、軍種或?qū)S妹~等核心實(shí)體對(duì)前Top-n 問(wèn)答對(duì)問(wèn)題進(jìn)行精確匹配,剔除不包含核心實(shí)體的問(wèn)答對(duì)以得到最終候選答案集。
針對(duì)知識(shí)圖譜數(shù)據(jù),構(gòu)建了知識(shí)圖譜問(wèn)答引擎。首先,根據(jù)核心信息中的實(shí)體,采用BM25 算法從Elastic Search 庫(kù)中存儲(chǔ)的知識(shí)圖譜實(shí)體集中檢索出達(dá)到指定閾值的相似度最高的實(shí)體,若未找到符合要求的實(shí)體,則直接向用戶推薦相似實(shí)體;然后,采用cypher 語(yǔ)句查詢Neo4j 中對(duì)應(yīng)實(shí)體的所有關(guān)系;最后,基于自然語(yǔ)言推斷計(jì)算輸入問(wèn)題與各關(guān)系的關(guān)聯(lián)度以得到候選答案三元組結(jié)果。 其中,自然語(yǔ)言推斷采用LSTM 網(wǎng)絡(luò)[7]進(jìn)行計(jì)算,問(wèn)題和答案整體的顯式匹配度由logistic 回歸層計(jì)算:
其中,We和be為邏輯斯蒂回歸的參數(shù),hq為輸入問(wèn)題的淺層語(yǔ)義向量表示。 問(wèn)題和答案的潛層關(guān)聯(lián)度用張量神經(jīng)網(wǎng)絡(luò)計(jì)算獲得:
其中,T表示張量變換;Wi和bi為邏輯斯蒂回歸的參數(shù);ha為三元組答案的淺層向量表示。
使用動(dòng)態(tài)加權(quán)求和的方式從問(wèn)題和答案的顯式匹配度和淺層語(yǔ)義關(guān)聯(lián)度計(jì)算其整體的關(guān)聯(lián)度得分:
其中,g表示門(mén)限權(quán)重,即通過(guò)問(wèn)題和答案的淺層語(yǔ)義向量動(dòng)態(tài)地估計(jì)顯式匹配度和淺層語(yǔ)義關(guān)聯(lián)度的有效程度。
針對(duì)存儲(chǔ)在結(jié)構(gòu)化數(shù)據(jù)庫(kù)中的數(shù)據(jù)記錄,采用了數(shù)據(jù)庫(kù)表問(wèn)答引擎[8]。 首先,基于語(yǔ)義相似度模型對(duì)補(bǔ)全后問(wèn)題與數(shù)據(jù)庫(kù)表名計(jì)算最長(zhǎng)公共子串,同時(shí)與表名-列名組成的語(yǔ)義向量做相似度匹配,獲取Top-k 數(shù)據(jù)表;然后,將修正后問(wèn)題與數(shù)據(jù)表名-列名連接后輸入構(gòu)建的NL2SQL 模型[9]中以生成SQL 查詢語(yǔ)句,其中NL2SQL 模型包括2 個(gè)獨(dú)立的模型:模型一將問(wèn)題與表頭名字采用標(biāo)志位分割并連接后輸入Bert-wwm 中文預(yù)訓(xùn)練模型進(jìn)行編碼,隨后針對(duì)聚合操作、組合關(guān)系和比較關(guān)系三個(gè)不同的任務(wù)分別連接稠密網(wǎng)絡(luò)和交叉熵?fù)p失函數(shù)層,最后通過(guò)最小化3 個(gè)任務(wù)的損失之和完成模型一的訓(xùn)練;模型二將問(wèn)題與模型一選擇的列輸入Bertwwm 中文預(yù)訓(xùn)練模型進(jìn)行組合獲取候選<列,操作,值>,然后通過(guò)一層稠密層對(duì)所有候選組合進(jìn)行分類,選出最終組合后得到SQL 語(yǔ)句;最后,采用SQL語(yǔ)句對(duì)數(shù)據(jù)庫(kù)表進(jìn)行查詢的結(jié)果即為最終答案。
針對(duì)自由文檔數(shù)據(jù),構(gòu)建了面向多文檔的閱讀理解問(wèn)答引擎。 首先,面向存儲(chǔ)海量非結(jié)構(gòu)化自由文檔的Elastic Search 庫(kù),針對(duì)補(bǔ)全后新問(wèn)題完成基于IK-BM25 算法的檢索,獲取top -k文檔數(shù)據(jù);然后,結(jié)合核心信息中的國(guó)家、時(shí)間、地點(diǎn)、人物、裝備、任務(wù)和其他專有實(shí)體等進(jìn)行再篩選,得到top -n文檔數(shù)據(jù);第三,將top -n文檔按照512 長(zhǎng)度進(jìn)行分段并與問(wèn)題連接輸入Bert 中文預(yù)訓(xùn)練模型中完成對(duì)段落的篩選;第四,將問(wèn)題與篩選后的段落連接后輸入Bert 中文預(yù)訓(xùn)練模型和注意力網(wǎng)絡(luò)[10],提取問(wèn)題-段落的聯(lián)合特征表示;最后,輸入指針網(wǎng)絡(luò)層估計(jì)各段落中答案的開(kāi)始位置及跨度,并按照評(píng)分答案置信度進(jìn)行排序。
面向多種類型的問(wèn)答知識(shí)庫(kù),將補(bǔ)全后問(wèn)題輸入多引擎智能問(wèn)答模型中,結(jié)合意圖分類結(jié)果自動(dòng)選擇問(wèn)答引擎,實(shí)現(xiàn)候選答案、答案置信度及其答案來(lái)源的獲取。 其中,意圖分類結(jié)果與問(wèn)答引擎對(duì)應(yīng)關(guān)系:事實(shí)描述類問(wèn)題采用問(wèn)答對(duì)庫(kù)、知識(shí)圖譜和閱讀理解問(wèn)答引擎;屬性查詢類問(wèn)題采用知識(shí)圖譜問(wèn)答和閱讀理解問(wèn)答引擎;數(shù)據(jù)計(jì)算類問(wèn)題采用數(shù)據(jù)庫(kù)表問(wèn)答和知識(shí)圖譜問(wèn)答引擎;統(tǒng)計(jì)分析類問(wèn)題則采用數(shù)據(jù)庫(kù)表問(wèn)答引擎。 當(dāng)采用多問(wèn)答引擎時(shí),返回更快、更準(zhǔn)的問(wèn)題答案及其置信度,即采用多線程方式同時(shí)請(qǐng)求上述不同意圖問(wèn)題對(duì)應(yīng)問(wèn)答引擎,最先返回滿足該引擎方式設(shè)定的答案閾值的答案結(jié)果即為最終答案。
同時(shí),該系統(tǒng)從用戶問(wèn)題輸入、問(wèn)題理解和問(wèn)題推薦到問(wèn)答引擎答案獲取和答案組織進(jìn)行全流程展示。 其中,復(fù)雜問(wèn)題理解展示用戶輸入問(wèn)題、問(wèn)題推薦結(jié)果、指代消解結(jié)果、意圖問(wèn)題結(jié)果、核心詞及關(guān)鍵短語(yǔ);問(wèn)答對(duì)庫(kù)問(wèn)答展示Top5 粗檢索結(jié)果與精排序問(wèn)題答案對(duì);知識(shí)圖譜問(wèn)答展示問(wèn)題對(duì)應(yīng)圖譜中的實(shí)體、cypher 查詢語(yǔ)句、候選三元組和圖譜答案;數(shù)據(jù)庫(kù)表問(wèn)答展示選表結(jié)果、SQL 查詢語(yǔ)句、答案及答案對(duì)應(yīng)表格記錄;閱讀理解問(wèn)答展示文檔檢索與篩選后Top5 結(jié)果、答案及其對(duì)應(yīng)原文。
答案評(píng)價(jià)反饋與訓(xùn)練優(yōu)化是為了讓用戶在使用問(wèn)答系統(tǒng)的同時(shí)提升其性能,其流程如圖4 所示。用戶可以對(duì)系統(tǒng)給定答案進(jìn)行評(píng)分,若評(píng)分高于給定閾值(例如,給定閾值三顆星,滿分五顆星)或者評(píng)分低于給定閾值同時(shí)用戶對(duì)給定問(wèn)題的答案進(jìn)行反饋,則將答案及其來(lái)源存入問(wèn)答對(duì)庫(kù)以便用戶下次提問(wèn)時(shí)能給出正確答案,同時(shí)存入訓(xùn)練語(yǔ)料庫(kù)。當(dāng)用戶反饋的語(yǔ)料達(dá)到一定數(shù)量或者達(dá)到指定訓(xùn)練間隔時(shí)間時(shí),提醒用戶進(jìn)行問(wèn)答模型手動(dòng)訓(xùn)練評(píng)估或者根據(jù)用戶設(shè)定完成自動(dòng)訓(xùn)練評(píng)估,且當(dāng)準(zhǔn)確率或F1 值等評(píng)估指標(biāo)優(yōu)于線上問(wèn)答模型時(shí),支持一鍵上線或自動(dòng)上線新版本以提供更優(yōu)的問(wèn)答服務(wù)。
圖4 用戶反饋與模型訓(xùn)練流程圖Fig. 4 Flowchart of user feedback and model training
為驗(yàn)證本文構(gòu)建的多引擎智能問(wèn)答系統(tǒng)的有效性,收集構(gòu)建了新冠疫情數(shù)據(jù)集,包含5 000 余條數(shù)據(jù),其內(nèi)容涵蓋了國(guó)內(nèi)、日本和美國(guó)半年內(nèi)每日疫情確診數(shù)據(jù)、疫情防疫政策數(shù)據(jù)、政要疫情言論數(shù)據(jù)、政要基礎(chǔ)信息數(shù)據(jù)和疫情常識(shí)數(shù)據(jù),并將其組織存儲(chǔ)為問(wèn)答對(duì)、知識(shí)圖譜、自由文檔和數(shù)據(jù)庫(kù)中記錄的形式。 由于構(gòu)建的多引擎智能問(wèn)答系統(tǒng)支持面向上述4 類數(shù)據(jù)的問(wèn)答,且未發(fā)現(xiàn)類似的開(kāi)源綜合問(wèn)答系統(tǒng),因而在該疫情數(shù)據(jù)集下實(shí)驗(yàn)驗(yàn)證多引擎智能問(wèn)答系統(tǒng)下各引擎的問(wèn)答效果,其準(zhǔn)確率EM和F1指標(biāo)結(jié)果見(jiàn)表1。
表1 本系統(tǒng)模型的不同引擎問(wèn)答效果對(duì)比Tab. 1 Comparison of question answering effect of different engines in this system model%
從表1 中可以看出,本系統(tǒng)在構(gòu)建的新冠疫情數(shù)據(jù)集上取得了較好的結(jié)果,尤其是問(wèn)答對(duì)庫(kù)問(wèn)答表現(xiàn)最好,這主要得益于基于核心實(shí)體的粗排序-精排序思想,既可以得到語(yǔ)義最相近的答案,又可以篩除問(wèn)題句式相似、但核心實(shí)體錯(cuò)誤的候選答案。而知識(shí)圖譜問(wèn)答、閱讀理解問(wèn)答和數(shù)據(jù)庫(kù)表問(wèn)答的測(cè)試結(jié)果也取得了與主流算法模型相當(dāng)?shù)牡梅帧?此外,本文設(shè)計(jì)的多源融合問(wèn)答方式(Top1 答案)準(zhǔn)確率得分84.40%略低于針對(duì)不同類型問(wèn)題分別采用對(duì)應(yīng)問(wèn)答引擎進(jìn)行測(cè)試得分的平均值87.80%,這主要是因?yàn)樵撘娌捎昧朔祷馗?、更?zhǔn)答案的方式,損失了極少的答案精度,但可以有效提升系統(tǒng)的響應(yīng)速度。 同時(shí),提供了融合問(wèn)答(Top3 答案)方式以滿足特定場(chǎng)景下對(duì)精準(zhǔn)問(wèn)答的需求。
面向多類型知識(shí)庫(kù)的多引擎智能問(wèn)答系統(tǒng)集數(shù)據(jù)管理、智能問(wèn)答、用戶反饋及模型訓(xùn)練優(yōu)化于一體,針對(duì)不同格式數(shù)據(jù)分別存儲(chǔ)并構(gòu)建對(duì)應(yīng)問(wèn)答引擎,同時(shí)提供方便、快捷、友好的用戶評(píng)價(jià)反饋方式,讓用戶在使用中不斷幫助該系統(tǒng)提升問(wèn)答效果,從實(shí)驗(yàn)結(jié)果可以看出,本系統(tǒng)提供了一種效果更優(yōu)、速度更快的多類型知識(shí)智能問(wèn)答解決途徑,更切合實(shí)際使用場(chǎng)景。 未來(lái)可不斷從數(shù)據(jù)自動(dòng)組織、常識(shí)知識(shí)輔助問(wèn)答等方面繼續(xù)完善系統(tǒng),為多引擎智能問(wèn)答系統(tǒng)的工程落地應(yīng)用提供支撐。