吳天波,劉露平,羅曉東,卿粼波,2,何小海
(1.四川大學 電子信息學院,成都 610065;2.無線能量傳輸教育部重點實驗室,成都 610065)
自動問答是指利用計算機自動回答用戶所提出的問題以滿足用戶知識需求的任務,按照數據來源分為檢索式問答、社區問答和知識庫問答[1]。知識庫結構為{E,A,V}三元組集合,其中,E表示實體,A表示屬性,V表示目標值。知識庫問答的核心目標是定位出問題所對應答案的三元組,即所需的答案。例如,在知識庫中存在三元組(“辣子雞”,“分類”,“湘菜,辣菜”),當被問及“辣子雞屬于什么菜系?”時,知識庫問答將定位到該條三元組,給出“湘菜,辣菜”的答案。
知識庫問答主要包括語義解析、信息抽取和向量建模3 種途徑。語義解析將自然語言轉化為邏輯形式進行分析,使機器可以理解其中的語義信息,并從知識庫中提取信息進行回答。文獻[2]采用知識庫問答方式,通過無監督手段將自然語言用解釋器解析為邏輯形式,并在知識庫中檢索答案。信息抽取采用模糊檢索方式,從問句中抽取關鍵信息,并以該信息為目標在知識庫中檢索更小的集合,在此集合上進一步得出答案。文獻[3]對問題進行命名實體識別,利用實體信息從知識庫中建立圖模型,實現信息提取和答案篩選。向量建模將問題和答案映射到向量空間進行分析,近年來得益于深度學習的飛速發展,向量建模方法得到了廣泛應用。文獻[4]基于深度結構化語義模型匹配問題和謂語。文獻[5]在圖表示學習的基礎上進行改進,從特定問題的子圖中提取答案。文獻[6]提出基于深度強化學習的網絡,對問題和選項進行編碼。文獻[7]利用知識圖嵌入將謂詞和實體用低維向量表示,探索其在知識圖譜問答任務中的潛在用途。
在中文領域,知識庫問答多數結合信息抽取、向量建模兩種方法實現。文獻[8]利用深度卷積神經網絡(Recurrent Neural Network,RNN)挖掘語義特征,并通過答案重排確定結果。文獻[9]使用基于注意力機制的長短期記憶(Long Short-Term Memory,LSTM)網絡[10]將中文語料映射到向量空間,并依托實體抽取檢索出備選的知識集合。文獻[11]在此基礎上引入人工規則,并結合句法分析進行關系詞提取。文獻[12]提出基于依賴結構的語義關系識別方法,從問句中挖掘深層的語義信息。上述方法都高度依賴問答對以外的信息,由于訓練數據包括原始問答對以及每對問句和答案對應的三元組信息,因此這些信息在許多場景中并不具備,需通過大量人工標注或先驗規則獲得,耗費較多人力且泛化能力不佳,同時通常需要不同的預處理方法處理不同領域的問答數據。為解決上述問題,文獻[13]提出非監督學習方法,利用動態規劃思想,尋找全局最優決策,但問答結果的準確率不高。本文基于弱依賴信息,在僅已知問答對信息的情況下設計答案匹配策略,通過挖掘問句與答案潛在的語義聯系以提高問答效率。
在知識庫問答中,弱依賴信息是指數據來源僅含知識庫和問答對,使得問答模型能盡可能少地依賴其他先驗信息?;谌跻蕾囆畔⒌闹R庫問答分為命名實體識別、答案匹配和閾值選擇三大模塊。首先通過命名實體識別提取問句中的實體,然后以該實體為搜索條件生成查詢語句,通過知識庫檢索返回三元組集合,并將去掉命名實體的問句與三元組集合中的答案集合依次做語義匹配,得到帶相似度分數的一系列備選答案,最后通過閾值選擇得出最終的答案。知識庫問答整體流程如圖1 所示。

圖1 知識庫問答整體流程Fig.1 Overall process of knowledge base question answering
在圖1 中,命名實體識別和答案匹配網絡模型均使用BERT(Bidirectional Encoder Representations from Transformer)預訓練模型進行特征提取。BERT模型內部使用Transformer 代替卷積神經網絡,能方便地遷移到其他網絡中,輸入的自然語言通過該基礎網絡后得到向量化的特征,再利用后續的網絡結構實現各自功能。
BERT[14]是Google AI 團隊于2018 年提出的自然語言處理(Natural Language Processing,NLP)領域的通用模型,在信息抽取、語義推理和問答系統等眾多任務中均取得了突破性的進展。BERT 模型內部主要使用雙向Transformer 編碼器,核心結構如圖2所示。網絡使用帶注意力機制的雙向Transformer block 進行連接[15],能更好地挖掘輸入語料的上下文語義信息。

圖2 BERT 核心結構Fig.2 Core structure of BERT
Transformer[16]是Google 于2017年提出的基于注意力機制的NLP 經典模型。該模型分為編碼器和解碼器兩部分,其中編碼器結構如圖3 所示。Transformer 通過在網絡中引入多頭注意力機制,調整輸入的每個詞的權重,因此能夠獲得更加全局的詞向量表示。

圖3 Transformer 編碼器結構Fig.3 Transformer encoder structure
知識庫問答的核心是使用命名實體識別算法提取出問句中的實體。命名實體識別是自然語言處理中的經典任務,它屬于序列標注的子任務,通過對輸入文字每個位置標注出相應的實體信息,實現實體抽取功能。實體標注有BIO 和BIOES 兩種模式,本文采用BIO 模式標注實體,其中,B-X 表示X 實體的開頭,I-X 表示X 實體的中間或結尾,O 表示不是實體內容。由于本文研究的知識庫問答的問句中僅涉及單一實體,因此僅定義一種實體類型ENT。例如,當輸入問句“李明的出生地是哪?”時,實體標注結果如圖4 所示。

圖4 實體標注結果Fig.4 Result of entity annotation
命名實體識別網絡模型如圖5 所示,主要包括特征提取和實體標注兩部分。在特征提取過程中,長度為m的輸入問句被分割成詞的序列{w1,w2,…,wm}送入BERT 網絡中,經分詞及詞嵌入后得到m個詞向量。詞向量經過N層的Transformer 編碼器特征提取后,得到長為序列長度m、寬為隱藏層維度d的特征矩陣,從而完成特征提取工作。在實體標注過程中通常采用BiLSTM-CRF[17]網絡進行重疊命名實體識別[18]。首先將特征矩陣輸入到每個方向的神經元個數為n的雙向LSTM 層,進一步提取上下文的語義關聯信息,其中,f、b、c 分別表示正向、逆向和輸出神經元,輸出的新特征向量隱藏層維度為2n。該特征向量經過一層前饋神經網絡,通過線性變換得到長度為m、寬度為待標注類型數的向量并將其作為CRF層的輸入。

圖5 命名實體識別網絡模型Fig.5 Network model of named entity recognition
由于本文僅定義一種實體類型,因此該向量寬度為3,分別代 表B、I 和O 的狀態分 數。在CRF 層中,線性鏈條件隨機場概率模型對輸入特征序列求出條件概率最大的輸出標注序列,即為輸入問句的每個位置標上標注信息。通過對輸出標注序列的統計,便能定位出實體的起止位置。
在BiLSTM-CRF 網絡中,對于輸入向量x,對應的輸出為y,其得分計算如式(1)所示:

其中,h表示BiLSTM 層輸出的三維向量,P表示轉移特征矩陣,P[yi-1,yi]表示輸出標簽從yi-1到yi的轉移得分值。損失函數采用對數似然函數,訓練時最小化式(2)中的目標函數:

由于本文針對的數據集是單跳問答對,問句中抽取出的實體多為單個,如果存在多個實體,第一個實體通常是問題的主語,因此將選取其作為候選實體。
在完成命名實體識別后,將提取的實體名作為關鍵詞,生成知識庫的查詢語句,在知識庫中檢索返回包含該實體的三元組集合,為答案匹配做準備。在中文知識庫問答中,通常將問句與三元組中的謂詞做語義匹配,但這需要訓練數據中包含的原始問答對以及具體的三元組信息,而特定任務的問答數據集通常沒有這些額外信息,因此需要大量的人工標注或者特殊的預處理方式。本文提出的答案匹配方法直接將問句與答案信息做匹配,在訓練時僅依賴原始問答對數據,在問答時計算知識庫中三元組的答案與問句的匹配程度。首先對問句做預處理,去除命名實體,以防問句過長及冗余信息對答案匹配的效果產生干擾,然后將預處理后的問句與三元組集合中的每一個答案做相似度匹配,為每一個答案都標上相似度分數。相似度分數是一個0 到1 之間的值,因此在訓練過程中,若輸入為正確答案,則對應的相似度分數的標簽為1,否則相似度分數的標簽為0。
答案匹配網絡模型如圖6 所示。問答對以[CLS]記號為開始,在每一次匹配中,預處理后的問句與答案之間用[SEP]記號隔開,連接成一個序列。

圖6 答案匹配網絡模型Fig.6 Network model of answer matching
答案匹配網絡的特征提取過程與命名實體識別網絡類似,經過BERT 網絡后得到一個長為(m+n)、寬為d的特征矩陣。由于網絡最后一層為Sigmoid層,是分類網絡的典型輸出層,因此需要對特征矩陣進行下采樣,使用一層池化層提取特征矩陣中最重要的信息,將特征矩陣的第一列(長為d)提取出來,作為Sigmoid 層的輸入。最終經Sigmoid 層輸出,得到一個0 到1 之間的值,即相似度分數。
由于答案匹配網絡的最后一層為Sigmoid 層,因此損失函數采用交叉熵損失函數。標簽僅有0 和1兩類,損失函數結構與二分類任務中的結構類似。在一次相似度匹配中,若樣本標簽為y,則預測的相似度分數為s,損失函數表示為:

通過答案匹配為包含問句中實體的三元組集合的每一個答案都標上相似度分數,之后基于這些相似度分數選出合適的答案。較簡單的做法是選出相似度分數最高的答案,這在基于謂詞匹配的傳統方法中具有最好的效果,但將其使用在本文提出的答案匹配的方法中得出的答案會有一定誤差,這是由于答案匹配得到的相似度分數通常比謂詞匹配小很多,因此相近的答案之間區分度不高。
知識庫問答的評測指標主要為F1 分數(F),假定標準答案和預測答案均為集合形式,通過精確率(P)和召回率(R)計算得到F1 分數。精確率表示預測正確的答案在預測答案集合中所占的比例,反映了問答系統的準確程度。召回率表示預測正確的答案在正確答案集合中所占的比例,反映了問答系統的完備程度。一個高質量的問答系統應該同時保持高的精確率值和召回率值,并通過F1 分數對其性能進行評價。F1 分數的計算公式為:

若要構建性能良好的問答系統,只有在答案選擇中返回相似度分數近似的答案集合,并將預測答案的錯誤和遺漏同時控制到最低,才能得到較高的F1 分數。本文采用閾值選擇策略,通過實驗對比選擇合適的相似度閾值,高于閾值的答案將被選中,構成預測答案的集合,并按相似度分數的高低排序后呈現給用戶。使用S表示每個問題的相似度分數,Sthreshold表示設定的相似度閾值,每個答案的選中狀態為B,B=1 表示答案被選中,B=0 表示答案未被選中,計算公式為:

本文使用NLPCC-ICCPOL-2016KBQA 數據集發布的知識庫和問答對數據,共有14 609 個訓練問答對和9 870 個測試問答對。為使評測結果更加客觀,進一步將訓練問答對隨機劃分為訓練集和開發集,測試問答對作為測試集。數據集劃分情況如表1所示。

表1 數據集劃分情況Table 1 Division of dataset
本文實驗運行在CPU 為Inter i5-4590、內存為12 GB 的計算機上,模型訓練所用顯卡為Nvidia GTX 1080Ti,顯存為11 GB,所用深度學習框架為CUDA 10.0 和Tensorflow 1.14,操作系統為64 位Windows 10,知識庫數據存儲和檢索使用Mysql 5.6.46。
知識庫問答中的問句格式較為固定,任何一個短句單實體的數據集都可以作為命名實體識別的訓練數據。本文為了驗證實驗結果,所用數據為問答對中的問題及其所含的實體信息,使用的BERT 模型為中文版本,通過對加載的預訓練參數進行微調的方式,在12 000 個訓練集問題上對命名實體識別網絡模型進行訓練,并分別在訓練集、開發集和測試集上進行性能測試。命名實體識別的超參數設置如表2 所示。

表2 命名實體識別的超參數設置Table 2 Hyperparameters setting of named entity recognition
訓練過程總共迭代7 028 次,采用帶權值衰減的Adam 優化器[19]優化損失函數。在訓練集上完成訓練后,分別將模型在訓練集、開發集、測試集上進行性能測試,結果如表3 所示。限于語料庫規模,測試結果存在輕微的過擬合現象,在訓練集上基本準確,在開發集和測試集上有一定誤差,總體表現較好。

表3 命名實體識別測試結果Table 3 Test results of named entity recognition %
為訓練答案匹配的網絡模型,需要在已有問答對的基礎上制作答案匹配的數據集。具體地,將每個問題去掉命名實體后,與答案相連接,再在后面加上一個“1”,表示該問句與答案的相似度為1,連接處均用[SEP]標記隔開。制作負樣本的過程與問答流程類似,以命名實體為關鍵詞在知識庫中檢索,得到與該實體有關的答案集合,將不為該問題答案的名詞以同樣的方式連接在問句后,并在后面加上一個“0”,表示問句與該答案的相似度為0。對于知識庫中僅有一個三元組的實體,為加以區分,則在以其他實體為關鍵字的三元組中隨機選取5 個答案作為負樣本,添加到數據集中,得到的答案匹配數據集規模如表4 所示。

表4 答案匹配數據集規模Table 4 Dataset size of answer matching
將訓練集數據輸入答案匹配網絡進行訓練。由于網絡特征提取部分同樣使用BERT,因此超參數選取除了沒有LSTM 以外,其他設置與命名實體識別一致。模型訓練的優化器同樣采用帶權值衰減的Adam,網絡共迭代11 505 次。由于相似度分數為0到1 之間的值,不可能與標簽完全相等,在計算測試指標時,將網絡輸出修改為類別,即將其當作一個二分類問題,只能輸出“0”或“1”。在計算性能指標時,除了準確率以外,AUC 也是一個重要的性能指標,它能夠更客觀地衡量模型對答案匹配數據集的分類效果。答案匹配模型在訓練集、開發集和測試集上的測試結果如表5 所示。由于數據規模有限,本文模型在開發集和測試集上的表現較差,但AUC 值均達到86% 以上,為最終的自動問答質量提供了保障。

表5 答案匹配測試結果Table 5 Test results of answer matching %
在完成命名實體識別和答案匹配模型的訓練后即可進行知識庫問答。在未加入閾值選擇機制時,直接選擇知識庫中包含實體的三元組集合中相似度分數最高的答案作為輸出,得到的問答結果如表6所示。由于標準答案和預測答案均僅有一個,準確率、精確率、召回率和F1 分數為相同的值,因此僅列出了F1 分數的結果。

表6 未加入閾值選擇機制的問答結果Table 6 Question answering results without threshold selection mechanism %
通過記錄回答錯誤的問題,并對其相似度分數進行觀察,發現除數據集本身存在的噪聲外,較為模糊的答案中前幾名之間的相似度分數都比較接近,主要在10?5至10?2附近。為確定在本文數據集下的最佳閾值,分別選取10?2、10?3、10?4和10?5這4 個相似度閾值,在開發集上調用閾值選擇機制進行測試,結果如表7 所示。在具體執行時,對于具有最高相似度的答案仍低于閾值的情況,直接將該答案作為問題的輸出。

表7 不同相似度閾值下的開發集問答結果Table 7 Question answering results of development set with different similarity thresholds %
從閾值選擇的結果可以看出,隨著選取閾值的減小,精確率逐漸變小,召回率逐漸變大,這是備選答案增多帶來的必然結果。當閾值為10?4時,開發集上問答的F1 分數最高;當閾值進一步下降時,精確率因選中的答案過多而下降較多,因此F1 分數也隨之降低。
通過閾值選擇的實驗結果,選取10?4為本文知識庫問答的相似度閾值,將其應用在最終的問答系統中,測試結果如表8 所示。訓練集和開發集均來源于NLPCC-ICCPOL-2016KBQA 任務原始問答對的訓練集,在公開的評測指標中以測試集的F1 分數為準。

表8 知識庫問答最終結果Table 8 Final results of knowledge base question answering %
本文問答系統在實際應用中將閾值選擇作為可選開關。在許多應用場景中,問答任務要求返回單一答案,此時將關閉閾值選擇開關,將相似度最高的答案呈現給用戶。若用戶對答案有疑惑,或者一些場景允許返回多個答案,則可以開啟閾值選擇,將候選答案集按相似度從高到低的順序呈現。
本文選取DPQA[13]、NEU(NLP Lab)、HIT-SCIR、CCNU、InsunKBQA[9]、NUDT、PKU[8]、WHUT[11]和WenRichard[20]作為對比方法,自動問答結果如表9 所示。DPQA 基于動態規劃思想進行研究,其無監督思路具有參考意義,但問答效果較為受限。PKU、NUDT、CCNU、HIT-SCIR 和NEU(NLP Lab)分別是NLPCCICCPOL-2016KBQA 任務評測成績的前5 名的自動問答方法,它們主要依靠一些人工規則保證問答性能,例如PKU 構造正則表達式以去除問句中的冗余信息,NUDT 使用詞性的組合特征實現命名實體識別等。InsunKBQA 是基于知識庫三元組中謂詞的屬性映射構建的自動問答方法,加入了少量人工特征。WHUT 是通過句法分析等方式實現的自動問答方法。WenRichard首先在NLPCC-ICCPOL-2016KBQA 數據集上應用BERT 進行特征提取,并取得了目前公開的最好結果。本文方法除了應用BERT,還對答案選擇方法進行改進,將其分解為答案匹配和閾值選擇兩個步驟,減少了對人工標注和預處理的需求,得到的測試集F1 分數為87.05%,具有最優的性能表現。

表9 10 種方法的自動問答結果Table 9 Automatic question answering results of ten methods %
本文針對弱依賴信息,提出一種基于問答對數據的知識庫自動問答方法。通過命名實體識別網絡提取問句中的實體,同時以該實體名為關鍵詞獲取相關三元組集合,利用答案匹配網絡為每一個答案標注相似度分數,最終通過閾值選擇篩選備選答案并輸出結果。實驗結果表明,知識庫問答方法在NLPCC-ICCPOL-2016KBQA 數據集上的F1 分數為87.05%,其中的答案選擇方法弱化了對問答數據中謂詞等先驗信息的依賴,無需人工干預就能在一個問答對數據集上完成訓練,具有良好的泛化性能。通過實驗發現本文知識庫問答方法對數字類型的答案篩選精度有待提高,后續將利用表示學習等方法從候選答案集合中篩選出最優答案,進一步提升問答質量。