彭 懷,宋井寬,唐向紅
(1.貴州大學,貴州 貴陽 550025;2.電子科技大學,四川 成都 610054)
知識庫問答任務是自然語言處理學術界和工業(yè)界的熱門研究方向。知識庫是知識表現(xiàn)和存儲的載體,目前知識庫主要通過三元組表示(頭實體1,關系,尾實體)實體與實體之間可能存在的語義關系,例如:博爾赫斯是阿根廷人,可以表示為:(博爾赫斯,出生地,阿根廷)。知識庫問答任務是識別自然語言處理問題中所包含的實體、實體關系、實體類型、實體組合后,通過知識庫查詢語言到知識庫中查詢答案。
目前在英文數(shù)據(jù)集上主要有兩類知識庫問答方法,第一種是語義解析方法,該方法是直接通過編寫規(guī)則庫、輔助詞典、人工推理、機器學習、深度學習手段從問句中識別實體、實體關系、實體組合。Wang等人使用序列標注模型識別問題中的實體,使用序列到序列模型預測問題中的關系序列,并使用答案驗證機制和循環(huán)訓練方式提升模型的性能,在英文多關系問題數(shù)據(jù)集WebQuestion上達到了先進水平。Hu等人提出了一種狀態(tài)轉(zhuǎn)移的框架,設計了四種狀態(tài)轉(zhuǎn)移動作和限制條件,結合多通道卷積神經(jīng)網(wǎng)絡等多種方法,在英文復雜問題數(shù)據(jù)集ComplexQuestion上達到了最先進水平?;谡Z義解析的方法通常使用分類模型進行關系的預測,面臨著未登錄關系的問題,即訓練集未出現(xiàn)的關系難以被預測出來。在中文數(shù)據(jù)上通常包含幾千種以上的關系,語義解析方法在關系數(shù)量非常大的情況下效果往往都不太好,使得語義解析方法在應用于中文知識庫問答(Chinese knowledge based question answering,CKBQA)上受到了極大限制。第二種是信息檢索的方法,首先通過實體識別技術、實體詞典等其他方式識別問句中的候選實體集合,之后根據(jù)預定義的邏輯形式,從知識庫中查詢候選實體在知識庫中的所有一跳或多跳關系,從而得到候選查詢路徑集合。最后通過計算候選查詢路徑與問句的相似度獲得匹配度最高的候選查詢路徑,到知識庫中查詢答案。Yu等人提出了一種增強關系匹配的方法,使用二層BILSTM與候選關系進行多層次的匹配,并使用關系匹配對實體鏈接結果進行重排序,在英文多關系問題數(shù)據(jù)集上取得了最先進水平。目前在中文領域知識庫問答方法主要是基于信息檢索和向量建模兩種方法進行改進。如Lai等人使用卷積神經(jīng)網(wǎng)絡識別問句中語義特征,并通過答案和問句匹配度確定結果;周博通等人提出一種方式,首先進行命名實體識別,之后通過基于注意力機制的雙向LSTM進行屬性映射,最后基于前兩步的結果從知識庫中選擇答案;張芳容等提出一種融合人工規(guī)則的關系抽取方法,提高了關系識別準確率;段江麗等提出基于依賴結構的語義關系識別方法,通過依賴結構從問句中挖掘有價值的語義信息。
在CKBQA任務上,Yang等人提出了一種聯(lián)合抽取實體的關系的流水線方法,在CCKS2018 COQA任務上取得了第二名的成績。參考流水線方法,針對CKBQA任務,該文提出一種信息匹配的方法:先進行實體和屬性值識別,再進行實體鏈接,進而從知識庫中抽取候選查詢路徑,使用文本匹配模型選擇與問題最相似的候選路徑,最后使用實體拼接技術探索多實體情況的可能結果。該方法在CCKS2019 CKBQA測試集上的F值達到了75.6%。
N
個候選查詢路徑;(5)使用實體拼接方式生成多實體候選查詢路徑,最后通過候選查詢路徑和問句的字符重合度得到重合度最高的候選查詢路徑,查詢知識庫獲得答案。流程如圖1 所示。圖1 問答流程
BERT是谷歌在2018年提出的一個自然語言處理預訓練模型,在很多NLP任務中都取得了很好的效果,例如:命名實體識別、閱讀理解、文本匹配、文本分類等。BERT內(nèi)部是使用雙向Transformer網(wǎng)絡,是真正意義上第一個可以雙向提取特征的模型,如圖2所示。Transformer是谷歌在2017年提出的一種網(wǎng)絡結構,每個Transformer模塊由編碼器和解碼器構成,它是基于自注意力機制的,與RNN不同的是,它采用并行結構可以加快計算,其輸入由詞向量、位置向量、注意力權重向量構成。因此,它既有CNN可以并行計算的優(yōu)點,同時也可以捕獲詞在句子中的位置信息,還可以通過自注意機制調(diào)整詞對句子結果的權重。
圖2 BERT核心結構
LSTM模型是對循環(huán)神經(jīng)網(wǎng)絡(recurrent neural network,RNN)模型的改進,也是深度學習方法的卓越代表之一。RNN模型在傳統(tǒng)神經(jīng)網(wǎng)絡和隱馬爾可夫模型上,為神經(jīng)網(wǎng)絡中各層的隱層單元增加時間序列特征,之后通過隱藏層權重將上一個時間點的神經(jīng)單元的值傳遞至當前的神經(jīng)單元,從而使神經(jīng)網(wǎng)絡具備了記憶功能。LSTM模型是在RNN模型的基礎上進行了改進,RNN模型存在時間序列比較長的時候,當前神經(jīng)元很難捕獲之前較遠的時間序列信息。為解決RNN的缺陷,LSTM在RNN每層中增加了記憶單元,同時LSTM還增加了門控機制,在隱藏層中各單元傳送信息是通過幾個可控門來控制每層信息輸入、遺忘、傳遞的比例。從而使RNN模型同時具備長期存儲信息和控制信息輸入輸出的功能。
該方法在流程中需要多個詞典用于分詞、計算詞頻等,均來自于PKUBase知識庫或外部資源,詞典介紹如下:
(1)實體鏈接詞典:此詞典是問句中的實體到知識庫實體的映射,由CCKS2019 CKBQA主辦方提供;
(2)分詞詞典:分詞詞典參照Yang等人的方法,通過實體鏈接詞典中的所有實體,以及知識庫中所有實體的主干成分構建。例如<紅樓夢_(中國古典長篇小說四大名著之一)>這個實體,只保留下劃線之前的部分“紅樓夢”;
(3)詞頻詞典:該詞典用于計算實體和屬性值的詞頻特征,使用搜狗開源的中文詞頻詞典構建;
(4)屬性詞典:該詞典用于識別屬性值的模糊匹配,使用知識庫中所有屬性值,構建字到詞的映射。
2.2.1 實體識別
該文采用詞典分詞和神經(jīng)網(wǎng)絡模型結合進行實體識別。首先將分詞詞典導入分詞工具,對自然語言問題進行分詞,如果問句中的分詞在詞表中就將分詞加入候選實體中,中文分詞可能會存在一定錯誤,并且還存在嵌套實體問題,這種情況下只會保留最長的實體,比如問句“華為的董事長是誰?”,正確的分詞結果應當為“華為|的|董事長|是|誰|?”,但詞典中存在”華為的董事長”這種更長的實體,所以實際的分詞結果為“華為的董事長|是|誰|?”,進而得到錯誤的實體。針對這樣的問題,該文基于預訓練語言模型BERT,將訓練集的標注實體還原為問句實體,訓練一個命名實體識別模型,之后通過模型識別問句中的實體,將識別出的實體加入候選實體列表中。實體識別模型具體流程:(1)對問句進行實體和非實體標注,目前標注主要有IO、BIO、BIEO、BIOES這幾種方式,通過測試BIO標注在數(shù)據(jù)集中效果最好,因此,該文采用BIO標注。B表示實體的頭部位置,I表示實體非頭部位置,O表示問句中非實體部分。(2)使用BERT-LSTM-CRF模型進行命名實體識別,可分為特征提取和實體標注兩部分。在特征提取部分中,長度為m
的輸入問句被分割成詞的序列{w
,w
,…,w
}送入BERT網(wǎng)絡中,經(jīng)分詞及詞嵌后得到m
個詞向量。將詞向量經(jīng)過N
層的Transformer模塊進行上下特征提取后,得到一個[句子長度,隱藏層大小]的特征矩陣,即完成了問句的特征提取。實體識別部分該文采用BiLSTM-CRF模型,首先將特征矩陣作為輸入放入BI-LSTM層,通過雙向LSTM層進行前后向語義特征提取,之后輸出帶語義信息的特征向量,此時特征向量隱藏層包含前向和后向LSTM層信息。將特征向量依次經(jīng)過dropout層、全連接層、線性層之后獲得的特征向量作為CRF層的輸入。該文采用BIO標注,實體識別本質(zhì)上是一個三分類問題,B、I、O代表詞的三種類型。在CRF中,是通過維比特算法算出每個詞的最大概率,從而識別詞的類型。CRF還可約束詞的類型,例如B后面只能接I、不能接O。2.2.2 屬性值識別
問題中包含的屬性值規(guī)范性較低,可能是很長的字序列,也可能沒辦法直接與知識庫實體進行對應,僅通過分詞詞典會忽略一些實體。因此針對大部分實體的屬性值,使用特殊方式進行識別:
(1)特殊數(shù)字、別名、簡稱、書名等,構建規(guī)則庫,判斷匹配結果是否在知識庫的屬性值中,在則加入候選屬性值;
(2)時間屬性:構建正則表達式,將其還原為知識庫中規(guī)范的時間表達,如“2009年6月”還原為“2009.06”,加入候選屬性值;
(3)模糊匹配屬性:得到問題中每個字對應的所有屬性值,統(tǒng)計每個屬性值的次數(shù),選擇top3的屬性加入候選屬性值。
對于2.2部分得到候選實體列表中的每個實體進行過濾,先判斷實體詞性是否是名詞,刪除掉所有非名詞的實體。之后通過構建好的實體鏈接詞典,將問句中實體可以連接的知識庫實體加入到候選實體中。平均每個問題初步得到的候選實體數(shù)量為12.6,多余的候選實體會引入干擾,同時增加后續(xù)步驟的時間成本。因此,參考Yang等人的方法,根據(jù)實體特點為每個實體計算一些特征。
(1)問句中實體的長度:實體的長度,例如:華為,長度為2;
(2)問句中實體的詞頻:實體在搜狗詞典中詞頻數(shù);
(3)實體在問句中的位置:問句實體離句首的位置距離;
(4)知識庫實體兩跳內(nèi)關系和問句中詞的重疊數(shù)量;
(5)知識庫實體在實體鏈接詞典中的排序,序列越小,實體鏈接概率越高。
構建實體鏈接數(shù)據(jù)集,實體鏈接分類器該文使用支撐向量機模型進行訓練,實體特征包括問句中實體的長度X
、問句中實體的詞頻、實體在問句中的位置、知識庫實體兩跳內(nèi)關系和問句中詞的重疊數(shù)量、知識庫實體在實體鏈接詞典中的排序,Y
為0、1,0代表問句中實體沒有正確鏈接到知識庫實體,1代表問句中實體正確鏈接到知識庫實體。通過實體鏈接分類器得到分數(shù)排名前N
個候選知識庫實體。在CCKS2019中文知識庫問答任務中提供的數(shù)據(jù)集,大部分的問題都是單實體單關系,單實體雙關系這種情況,更復雜的情況也可以由簡單問題拼接得到。該文采用查詢候選實體在知識庫中單跳路徑和兩跳路徑結果作為候選查詢路徑,查詢形式為(實體,關系)或者(實體,關系1,關系2)。 用文本匹配模型(如ESIM)進行用戶問句和候選查詢路徑相似度匹配,但是此模型非常依賴大量標注好的數(shù)據(jù)集,導致在一些小樣本的數(shù)據(jù)集上效果很不理想。因此,該文使用BERT預訓練模型來降低對大量標注數(shù)據(jù)的依賴,經(jīng)過測試,在少量數(shù)據(jù)集上使用BERT模型進行文本匹配的效果要遠遠好于ESIM模型。BERT模型使用mask機制對上下文單詞進行預測、句子對分類等無需人工標注的監(jiān)督學習任務,學習到詞級別、句子級別的信息。將預訓練語言模型遷移到下游自然語言處理任務,作用類似于擴大了語料,增加了模型的性能和泛化能力。目前典型的預訓練模型有EMLO、BERT、ROBERTA、ALBERT、ELECTRA。
該文基于預訓練的BERT模型,使用訓練集進行文本匹配的微調(diào),在驗證集和測試集上,使用該模型計算問題和候選查詢路徑的相似度。在訓練中,文本匹配模型是基于符合自然語言語義問題數(shù)據(jù)集訓練的,但是生成的候選查詢路徑是不符合問題語義的。針對這種情況,該文對候選路徑進行一些特殊處理,例如:(周杰倫,血型)改為“周杰倫的血型?”,在訓練集上使用一些多負例的手段,通過增加負例的數(shù)量提升模型的泛化能力,訓練集中一個正例數(shù)據(jù)對應4個負例數(shù)據(jù)。使用訓練好的文本匹配模型對問句和改進后的候選路徑進行打分。
上述2.4節(jié)描述的方法只適用于單實體的情況,實際上,仍然有一部分問題包含兩個及以上的主語實體,例如“北京大學出了哪些哲學家”。因此,該文采用實體拼接的方式,探索每個問題作為雙實體問題的候選答案。對于每個問題,首先對2.4節(jié)打分后的候選查詢路徑進行排序,選取前10個單關系查詢路徑,之后到知識庫中對這些查詢路徑進行檢索,通過查詢結果判斷這些單關系路徑是否可以拼接為多關系查詢路徑,將可以拼接后的多關系路徑加入候選查詢路徑集合,最后,將2.4節(jié)獲得的候選查詢路徑和本節(jié)得到拼接后的查詢路徑,同問句進行重疊字的計算,選擇字數(shù)最多的作為查詢答案路徑。
實驗運行環(huán)境:操作系統(tǒng)ubuntu18.04,顯卡NVIDIA TITAN Xp 12 GB顯存,Python版本3.6.10、pytorch版本1.2.0、pytorch-transformers版本1.2.0、scikit-learn 版本0.20.3、torchtext版本0.6.0、torchvision版本0.4.0。
模型配置:預訓練模型使用BERT基礎版,不區(qū)分大小,隱藏層維度大小為512,隱藏層有12層,隱藏層激活函數(shù)使用gelu,詞表大小30 522。LSTM模型輸入維度為300,輸出維度為300。GRU模型輸入維度為300,輸出維度為300。
該文使用由北京大學和恒生電子公司共同發(fā)布的中文開放領域知識庫問答數(shù)據(jù)集。該任務中問題的標注SQL語句均來自于PKUBase知識庫(http://pkubase.gstore-pku.com/)。數(shù)據(jù)集的數(shù)據(jù)統(tǒng)計如表1所示。
表1 語料集數(shù)據(jù)統(tǒng)計
n
個候選實體情況下所有問題標注實體的f1值。表2 測試集上實體識別結果
結果表明:(1)LSTM、GRU、CRF模型對候選實體的篩選均有促進作用;(2)BERT預訓練模型在命名實體識別任務上相對于其他模型有著巨大優(yōu)勢。
n
個候選實體情況下所有問題標注實體的召回率。表3 測試集上實體鏈接結果
結果表明:(1)選擇的問句實體特征和知識庫實體的特征對實體鏈接準確度有很大影響;(2)從實驗結果來看,僅保留前5的候選實體就可以達到接近全部數(shù)量的結果,同時選擇僅保留前五的實體還可以降低訓練時間、數(shù)據(jù)噪音。
進一步,在測試集上計算了文本匹配環(huán)節(jié)使用不同數(shù)量負例及不同檢索方案的F值。該文對比了三種方案的性能:(1)直接選擇文本匹配后相似度最高的查詢路徑;(2)對所有問題使用橋接獲得可能的多實體情況查詢路徑,對于可以獲得多實體查詢路徑的問題,直接覆蓋方案一的路徑;(3)對文本匹配排名前3的路徑和多實體路徑和問題重新進行重疊字數(shù)的匹配,選擇字面上最相近的作為最終查詢路徑。
從表4的實驗結果及分析可以得到:在文本匹配環(huán)節(jié)上,合適數(shù)量的負例可以獲得更好的學習文本相似性,本任務上3個負例效果最佳;實體拼接可以考慮多實體的情況,但會引入一些錯誤,即一些實際為單實體的問題得到了多實體情況的查詢路徑,而重疊字數(shù)匹配可以有效緩解該問題。
表4 測試集上知識庫問答結果
該文提出了一種信息匹配的模型,依次對問題進行實體及屬性識別、實體鏈接及篩選、文本匹配和答案檢索等,驗證了預訓練語言模型在知識庫問答上的性能,在CCKS2019 CKBQA測試集上的F值達到了75.6%。模型優(yōu)點:(1)使用預訓練模型和知識庫分詞技術大大提升了問句主題詞的識別準確率;(2)使用文本匹配技術將問句與實體在知識庫中的查詢路徑進行匹配,避免存在未登錄關系的問題;(3)使用實體拼接探索多實體多關系問題。模型缺陷:(1)基于機器學習的實體鏈接技術比較依賴問句實體、知識庫實體特征;(2)產(chǎn)生了過多的候選查詢路徑,影響了模型運行效率。因此,筆者認為未來可以使用深度學習技術進行實體鏈接,減少特征依賴,提升準確率;在問句中增加實體類型、實體數(shù)量信息以進一步提升多實體多關系問題的準確率。