李春豹
(中國電子科技集團公司第十研究所, 成都 610041)
隨著信息技術的飛速發展,海量的互聯網信息不斷涌現,無論是數據樣式、還是數據種類都變得繁多,給互聯網用戶帶來更加豐富多樣信息的同時加大了用戶信息獲取的難度。 為了應對傳統檢索方式存在檢索結果仍需人工篩選、研讀、答案確認等耗時耗力的問題,與此同時進一步提高用戶準確獲取信息的效率,智能問答系統應運而生。
根據應用場景的不同,現有智能問答系統類型主要包括電商客服類、閑聊陪護類[1]、虛擬助理類、檢索式問答[2]和綜合問答類。 針對軍事領域特定場景數據,諸如IBM watson、Wolfram Alpha 等的綜合問答類系統已經取得了一些成果,但是距離實際使用仍然有一定差距[3-4],現有研究的不足主要體現在以下3 個方面:
(1)復雜問題理解不清晰:用戶輸入問題時存在描述不完整、描述冗余、字詞錯誤等情況,而現有系統大多未進行針對性處理導致問題理解偏差或錯誤,進而返回錯誤答案。
(2)現有系統大多是針對某一類特定類型數據進行設計:例如,面向用戶常見問題對形式的智能客服,還有一系列針對知識圖譜、數據庫表或自由文檔而提出的問答系統,然而,實際應用場景中的數據往往是以多種類型存儲。
(3)答案來源不可追溯:現有智能問答系統僅返回用戶輸入問題對應答案,用戶驗證給定答案的正確性比較困難。
為了應對上述問題,本文設計了一種面向多類型知識庫的多引擎智能問答系統。 在充分理解用戶輸入復雜問題的基礎上,針對特定領域的多來源、多類型數據分別設計智能問答引擎以分別獲取用戶輸入問題的候選答案,完成候選答案篩選排序,以文本、圖像和可視化圖譜等方式展示最終答案。 同時,將答案獲取過程和答案內容在原文中位置進行可視化,讓用戶更直觀、更便捷地分析返回答案的準確性和全面性。
面向多類型知識庫的多引擎智能問答系統的整體流程如圖1 所示。 由圖1 可知,針對用戶輸入的自然語言描述問題,首先進行復雜問題理解,結合文本描述、外部業務知識、外部業務常識知識、上下文對話信息以及問題所屬主題等對問題進行深度剖析,合理補全用戶輸入問題并抽取用戶問題中的核心要素,進而對該問題的真實意圖進行準確識別、理解與分類。 然后,基于理解補全后的問題、用戶問題意圖分類結果和業務問答知識庫構建多引擎智能問答模型,完成面向不同類型知識庫的候選答案快速獲取,結合特定規則完成最終答案及其來源的獲取,同時為了方便用戶進行答案溯源,從用戶問題輸入、問題理解、問答引擎答案獲取到答案組織的全過程進行展示。 此外,還支持用戶對給定答案進行評分、反饋與入庫,并基于入庫語料對問答模型進行自優化,持續提升問答系統的性能。

圖1 面向多類型知識庫的多引擎智能問答系統流程圖Fig. 1 Flowchart of the multi-engine intelligent QA system for multi-type knowledge bases
復雜問題理解的目標是在補全問題的同時結合問題中的核心要素識別用戶問題真實意圖,輔助多引擎智能問答模型的問答策略選擇,其詳細流程如圖2 所示。

圖2 復雜問題理解流程圖Fig. 2 Flowchart of the complex question understanding
首先,對用戶輸入的文本問題進行字詞糾錯、事實性糾錯與語法糾錯。 其中,字詞糾錯采用面向大規模字詞糾錯語料集的Seq2Seq 深度卷積神經網絡模型[5]完成問題中多字、漏字、錯字等錯誤的糾正。事實性糾錯則是采用基于外部常識知識庫的事實檢測方法對問題中偏離常識知識的錯誤進行糾正。 語法糾錯則是采用基于語義搭配的錯誤檢測方法完成問題中語義搭配錯誤檢測和糾正。
當用戶輸入問題中出現“他”、“她”、“它”、“呢”等代詞和語氣助詞或者省略實體等情況時,還需要結合上文對話信息采用基于規則的方法進行指代消解與問題補全,得到的新問題作為復雜問題理解的輸出,同時采用基于Bert 預訓練模型對問題中的時間、國家、人物、軍種、專用名詞等核心實體進行識別與抽取。 針對軍事領域數據,將用戶問題意圖劃分為事實描述類、屬性查詢類、統計計算類和分析總結類,并將其設置為意圖分類結果標簽,標注訓練數據,對基于Bert 的TextCNN 分類算法[6]進行訓練后獲取用戶問題的意圖分類結果,用于指導多引擎智能問答模型的問答策略選擇。 此外,復雜問題理解還提供了相似問題和熱點問題推薦功能,其中相似問題推薦結果是基于BM25 和語義相似度算法計算用戶輸入問題與歷史問題庫的相似度排序得到,熱點推薦問題結果則是根據近一周、一月和近三月的問答匹配次數排序得到。
面向多來源、多類型問答知識庫構建多引擎智能問答模型,多個引擎面向不同類型知識庫分別設計問答算法,包括問答對庫問答算法、閱讀理解問答算法、知識圖譜問答算法和數據庫表問答算法,以幫助用戶全面、高效、精準獲取問題答案、答案置信度及其答案來源。
針對軍事領域的用戶業務數據,問答知識庫按照知識的不同類型分別進行存儲,以供用戶進行提問。 知識庫類型主要分為以下4 類:業務活動中積累的領域常見問題與典型問題及其答案構成問答對庫,存儲在Elastic Search 庫中;針對領域中的結構化數據,尤其是基礎參數、性能、屬性等一段時間內固定不變的靜態數據,將其組織為知識圖譜,采用Neo4j 進行存儲與展示;一些日常業務活動相關的動態數據,以數據記錄的形式存儲在MySQL 或Oracle 結構化數據庫中;而一些非結構化的文檔、資料等構成文檔庫,存儲在Elastic Search 中。 針對上述4 種不同類型的知識庫分別提供最適合該類知識的問答引擎,4 種問答引擎共同構建了多引擎智能問答模型,如圖3 所示。

圖3 多引擎智能問答模型結構圖Fig. 3 Structure of the multi-engine intelligent QA model
針對問答對庫數據,設計了問答對庫問答引擎。首先,面向Elastic Search 庫采用BM25 算法完成問答對的初步篩選,并根據評分完成排序,取前Top-k問答對;然后,基于Simhash 計算文本語義相似度,并根據評分完成排序,取前Top-n 問答對,完成再篩選;最后,結合問題中抽取的時間、國家、人物、軍種或專用名詞等核心實體對前Top-n 問答對問題進行精確匹配,剔除不包含核心實體的問答對以得到最終候選答案集。
針對知識圖譜數據,構建了知識圖譜問答引擎。首先,根據核心信息中的實體,采用BM25 算法從Elastic Search 庫中存儲的知識圖譜實體集中檢索出達到指定閾值的相似度最高的實體,若未找到符合要求的實體,則直接向用戶推薦相似實體;然后,采用cypher 語句查詢Neo4j 中對應實體的所有關系;最后,基于自然語言推斷計算輸入問題與各關系的關聯度以得到候選答案三元組結果。 其中,自然語言推斷采用LSTM 網絡[7]進行計算,問題和答案整體的顯式匹配度由logistic 回歸層計算:
其中,We和be為邏輯斯蒂回歸的參數,hq為輸入問題的淺層語義向量表示。 問題和答案的潛層關聯度用張量神經網絡計算獲得:
其中,T表示張量變換;Wi和bi為邏輯斯蒂回歸的參數;ha為三元組答案的淺層向量表示。
使用動態加權求和的方式從問題和答案的顯式匹配度和淺層語義關聯度計算其整體的關聯度得分:
其中,g表示門限權重,即通過問題和答案的淺層語義向量動態地估計顯式匹配度和淺層語義關聯度的有效程度。
針對存儲在結構化數據庫中的數據記錄,采用了數據庫表問答引擎[8]。 首先,基于語義相似度模型對補全后問題與數據庫表名計算最長公共子串,同時與表名-列名組成的語義向量做相似度匹配,獲取Top-k 數據表;然后,將修正后問題與數據表名-列名連接后輸入構建的NL2SQL 模型[9]中以生成SQL 查詢語句,其中NL2SQL 模型包括2 個獨立的模型:模型一將問題與表頭名字采用標志位分割并連接后輸入Bert-wwm 中文預訓練模型進行編碼,隨后針對聚合操作、組合關系和比較關系三個不同的任務分別連接稠密網絡和交叉熵損失函數層,最后通過最小化3 個任務的損失之和完成模型一的訓練;模型二將問題與模型一選擇的列輸入Bertwwm 中文預訓練模型進行組合獲取候選<列,操作,值>,然后通過一層稠密層對所有候選組合進行分類,選出最終組合后得到SQL 語句;最后,采用SQL語句對數據庫表進行查詢的結果即為最終答案。
針對自由文檔數據,構建了面向多文檔的閱讀理解問答引擎。 首先,面向存儲海量非結構化自由文檔的Elastic Search 庫,針對補全后新問題完成基于IK-BM25 算法的檢索,獲取top -k文檔數據;然后,結合核心信息中的國家、時間、地點、人物、裝備、任務和其他專有實體等進行再篩選,得到top -n文檔數據;第三,將top -n文檔按照512 長度進行分段并與問題連接輸入Bert 中文預訓練模型中完成對段落的篩選;第四,將問題與篩選后的段落連接后輸入Bert 中文預訓練模型和注意力網絡[10],提取問題-段落的聯合特征表示;最后,輸入指針網絡層估計各段落中答案的開始位置及跨度,并按照評分答案置信度進行排序。
面向多種類型的問答知識庫,將補全后問題輸入多引擎智能問答模型中,結合意圖分類結果自動選擇問答引擎,實現候選答案、答案置信度及其答案來源的獲取。 其中,意圖分類結果與問答引擎對應關系:事實描述類問題采用問答對庫、知識圖譜和閱讀理解問答引擎;屬性查詢類問題采用知識圖譜問答和閱讀理解問答引擎;數據計算類問題采用數據庫表問答和知識圖譜問答引擎;統計分析類問題則采用數據庫表問答引擎。 當采用多問答引擎時,返回更快、更準的問題答案及其置信度,即采用多線程方式同時請求上述不同意圖問題對應問答引擎,最先返回滿足該引擎方式設定的答案閾值的答案結果即為最終答案。
同時,該系統從用戶問題輸入、問題理解和問題推薦到問答引擎答案獲取和答案組織進行全流程展示。 其中,復雜問題理解展示用戶輸入問題、問題推薦結果、指代消解結果、意圖問題結果、核心詞及關鍵短語;問答對庫問答展示Top5 粗檢索結果與精排序問題答案對;知識圖譜問答展示問題對應圖譜中的實體、cypher 查詢語句、候選三元組和圖譜答案;數據庫表問答展示選表結果、SQL 查詢語句、答案及答案對應表格記錄;閱讀理解問答展示文檔檢索與篩選后Top5 結果、答案及其對應原文。
答案評價反饋與訓練優化是為了讓用戶在使用問答系統的同時提升其性能,其流程如圖4 所示。用戶可以對系統給定答案進行評分,若評分高于給定閾值(例如,給定閾值三顆星,滿分五顆星)或者評分低于給定閾值同時用戶對給定問題的答案進行反饋,則將答案及其來源存入問答對庫以便用戶下次提問時能給出正確答案,同時存入訓練語料庫。當用戶反饋的語料達到一定數量或者達到指定訓練間隔時間時,提醒用戶進行問答模型手動訓練評估或者根據用戶設定完成自動訓練評估,且當準確率或F1 值等評估指標優于線上問答模型時,支持一鍵上線或自動上線新版本以提供更優的問答服務。

圖4 用戶反饋與模型訓練流程圖Fig. 4 Flowchart of user feedback and model training
為驗證本文構建的多引擎智能問答系統的有效性,收集構建了新冠疫情數據集,包含5 000 余條數據,其內容涵蓋了國內、日本和美國半年內每日疫情確診數據、疫情防疫政策數據、政要疫情言論數據、政要基礎信息數據和疫情常識數據,并將其組織存儲為問答對、知識圖譜、自由文檔和數據庫中記錄的形式。 由于構建的多引擎智能問答系統支持面向上述4 類數據的問答,且未發現類似的開源綜合問答系統,因而在該疫情數據集下實驗驗證多引擎智能問答系統下各引擎的問答效果,其準確率EM和F1指標結果見表1。

表1 本系統模型的不同引擎問答效果對比Tab. 1 Comparison of question answering effect of different engines in this system model%
從表1 中可以看出,本系統在構建的新冠疫情數據集上取得了較好的結果,尤其是問答對庫問答表現最好,這主要得益于基于核心實體的粗排序-精排序思想,既可以得到語義最相近的答案,又可以篩除問題句式相似、但核心實體錯誤的候選答案。而知識圖譜問答、閱讀理解問答和數據庫表問答的測試結果也取得了與主流算法模型相當的得分。 此外,本文設計的多源融合問答方式(Top1 答案)準確率得分84.40%略低于針對不同類型問題分別采用對應問答引擎進行測試得分的平均值87.80%,這主要是因為該引擎采用了返回更快、更準答案的方式,損失了極少的答案精度,但可以有效提升系統的響應速度。 同時,提供了融合問答(Top3 答案)方式以滿足特定場景下對精準問答的需求。
面向多類型知識庫的多引擎智能問答系統集數據管理、智能問答、用戶反饋及模型訓練優化于一體,針對不同格式數據分別存儲并構建對應問答引擎,同時提供方便、快捷、友好的用戶評價反饋方式,讓用戶在使用中不斷幫助該系統提升問答效果,從實驗結果可以看出,本系統提供了一種效果更優、速度更快的多類型知識智能問答解決途徑,更切合實際使用場景。 未來可不斷從數據自動組織、常識知識輔助問答等方面繼續完善系統,為多引擎智能問答系統的工程落地應用提供支撐。