王鑫雷,李帥馳,楊志豪,林鴻飛,王健
(大連理工大學 計算機科學與技術學院,遼寧 大連 116024)
問答系統(tǒng)是自然語言處理(NLP)領域中的一個研究熱點,并且具有非常廣泛的發(fā)展前景[1]。根據答案來源的不同,可以分為基于常問問題(Frequently Asked Questions,FAQ)的問答系統(tǒng)[2]、基于社區(qū)問答對的問答系統(tǒng)(Community Question Answering,CQA)[3]、基于知識圖譜的問答系統(tǒng)(Knowledge Based Question Answering, KBQA)。其中基于知識圖譜的問答系統(tǒng)以知識圖譜為數據源。知識圖譜可以看作是知識的結構化表示,由三元組(主語, 謂詞, 賓語)構成,表示實體和實體間存在的語義關系。知名的英文知識圖譜有Freebase[4]、YAGO[5]、DBpedia[6]等,中文知識圖譜有百度知識圖譜、搜狗知立方、北大的PKUBase等。而基于知識圖譜問答的主要任務是給定自然語言問題,識別問題中的實體、語義關系,到知識圖譜中檢索并返回答案[7]。目前基于知識圖譜的問答研究方法主要分為兩類。
第一類是基于語義解析的方法。早期該類方法使用字典、規(guī)則和機器學習,直接從問題中解析出實體、關系和邏輯組合。但此類方法需要研究人員了解語言學相關知識還需要大量的標注數據,不易擴展到大規(guī)模開放領域的知識圖譜問答任務中,泛化能力不強。隨著深度學習在NLP領域的應用,目前將各種神經網絡模型與語義解析策略相結合成為語義解析方法的主流。Yih等人[8]引進圖譜信息進行語義解析,提出階段查詢圖生成方法,該思想也被廣泛應用到其他語義解析生成過程中。還有基于編碼器-解碼器的語義解析方法,例如Wang等人[9]使用序列到序列模型將問題翻譯成多個關系的序列。北大Hu等人[10]則提出利用狀態(tài)轉移的原子操作來提升問題語義解析的結果。基于語義解析的方法通常使用分類模型進行關系的預測,但由于知識圖譜中包含數十萬種關系,訓練集難以覆蓋如此龐大規(guī)模的關系,使得基于語義解析的方法在知識圖譜問答上受到限制。
而第二類是基于信息檢索的方法,該類方法首先根據問題得到若干個候選實體,從知識圖譜中抽取與候選實體相連的關系作為候選查詢路徑,再使用文本匹配模型,選擇出與問題相似度最高的候選查詢路徑,到知識圖譜中檢索答案。早期主要是基于特征工程的方法,Yao等人[11]首先分析問題和抽取候選答案,然后生成問題特征和候選答案特征組合排序,此方法需自定義構建特征且對復雜問題處理效果不好。近年,基于表示學習的方法不斷被提出且達到較好的性能。表示學習就是將問題和知識圖譜中的候選實體映射到統(tǒng)一的語義空間進行比較。例如Dong等人[12]就是利用多柱卷積網絡表示答案不同方面的語義信息。信息檢索的方法將復雜的語義解析問題轉化為大規(guī)??蓪W習問題。側重于計算問題和候選關系的相似度,在關系選擇上具有更好的泛化能力。除此之外,現在也出現一些新方法,如復雜問題分解、神經計算與符號推理相結合、利用記憶網絡實現問答等。
雖然近年來有很多基于英文知識圖譜的問答研究工作,但相應方法在中文知識圖譜問答任務(CKBQA)實現過程中效果并不理想,主要存在兩個挑戰(zhàn),一個是實體識別結果不準確。由于中文本身沒有天然的分隔符,利用分詞工具得到的識別結果詞邊界不正確,或者實體中出現嵌套、縮寫、別名等情況導致錯誤的實體識別結果。此外,中文中同名實體過多也是實體識別效果不好的主要因素之一。目前中文的實體識別方法主要分為基于規(guī)則、基于特征的機器學習、基于神經網絡的三種方法。相對來說,基于神經網絡的方法在不需要大量人工構建的規(guī)則或者特征模板情況下,保證實體識別結果準確率的同時也有較好的泛化能力;CKBQA的另一個挑戰(zhàn)是中文豐富的語言表達形式使計算機很難準確掌握問題語義,在關系匹配子任務中此點尤為突出,中文相對英文有更多近義詞、同義詞,只有用充分的語料訓練模型才有可能識別出近義詞之間細微的語義差異,但目前此類中文語料并不多。
2018年,谷歌公司提出預訓練語言模型BERT(Bidirectional Encoder Representation from Transformers)[13]受到NLP領域廣泛關注,并在NLP各項任務上取得了令人矚目的成績。本質上,語言模型就是求一個句子序列的聯合概率分布。在預訓練語言模型出現之前,語言模型的參數都是隨機初始化的,是通過不斷迭代訓練得到的。而預訓練的思想就是不再隨機初始化模型參數,通過大規(guī)模的先驗知識來對模型進行預訓練得到固定的參數,再針對不同的下游任務語料對模型參數進行微調。目前基于預訓練的思想也出現了很多BERT模型的變體。如:Facebook的RoBERTa[14]模型、百度的ERNIE(Enhanced Representation from Knowledge Integration)[15]模型、Yang等人提出的XLNet[16]模型等。其中,RoBERTa模型提出動態(tài)掩碼機制和用更大的批大小來訓練模型,ERNIE模型提出基于短語和實體的掩碼策略并引入了對話語言建模機制(DLM),XLNet模型則利用自回歸訓練方式結合排列語言模型和雙流注意力機制,在學習上下文的同時緩解掩碼策略帶來的數據偏差。這些預訓練模型在訓練過程中依靠大規(guī)模的無標注語料,能學習到豐富的詞級別信息,獲得更準確常見的分詞實體識別結果,甚至可以學習到更深層的句子語法結構,語義級別的信息,有效提升了實體識別和關系匹配的結果。
因此,本文結合預訓練語言模型實現CKBQA任務,并通過實驗比較了不同預訓練語言模型(BERT、RoBERTa、ERNIE、XLNet)及其與主流實體識別和關系匹配模型在中文知識圖譜問答任務上的表現。同時提出一套流水線方法,在實體提及識別、實體鏈接、關系匹配子任務上提出新的框架,不僅能高效地實現問答,而且可以應用在其他中文知識圖譜上,保證方法的泛化性。并通過CCKS2019-CKBQA測試集上的實驗結果驗證方法的有效性,最后基于本文方法實現了問答系統(tǒng)展示。
提出的方法(如圖1)包含以下五個模塊:問題分類、實體提及識別、實體鏈接、關系匹配、橋接與答案檢索。在問題分類、實體提及識別和關系匹配模塊中設計不同模型進行比較。
圖1 問答系統(tǒng)結構Fig.1 Structure of question answering system
將問題分為簡單問題和復雜問題兩類,通過訓練集提供的查詢語句對問題進行標注。例如,一個問題:“英國什么時候國慶?”,查詢語句為“select?x where {<英國-(大不列顛及北愛爾蘭聯合王國)> <國慶日>?x.}”,將此類只涉及單個三元組的問題定義為簡單問題,標注為0;而問題:‘拜仁的西班牙球員都有誰?’,查詢語句為“select?x where {?x <所屬運動隊> <拜仁慕尼黑足球俱樂部>.?x <國籍> <西班牙-(西班牙王國)>.}”,將此類涉及兩個及以上三元組的問題定義為復雜問題,標注為1。用標注好的語料訓練模型,模型命名為 BERT-classify,如圖2所示。
圖2 BERT-classify的模型結構Fig.2 Structure of BERT-classify model
其他預訓練語言模型都是基于Transformer體系結構對輸入序列進行編碼,模型結構相同,只是訓練機制不同。因此以下其他模塊也都只對BERT相關模型做介紹。模型輸入向量由三部分組成:Token Embeddings表示詞向量,Segment Embeddings用來區(qū)分不同的輸入句子,Position Embeddings表示詞在句子序列中的位置信息。而且,BERT在輸入句子序列前添加一個特殊的[CLS]標記(該標記對應的輸出向量可作為整個輸入序列的語義表示,通常用作分類任務),在句子序列后添加一個特殊的[SEP]標記(用于句子分割)。模型首先將一個問題q處理為詞序列形式:
Qq={[CLS],q1,q2,…,qn,[SEP]} ,
(1)
n為句子序列長度,選擇[CLS]標記對應的隱藏層輸出作為問題表示,再將其輸入到一個多分類層,得到預測結果:
H[CLS]=BERTlayer(Qq)[CLS],
(2)
Ppred=softmax(H[CLS]WT+b) ,
(3)
其中,softmax是概率歸一化函數,Hq∈RD,W∈RK×D和b∈RK×1是要學習的權重,D在本文是768,為BERT模型隱藏層的維度,K是分類標簽的個數。
損失函數使用多分類交叉熵:
(4)
實體提及識別模塊的作用是識別出給定問題中的主題(話題)實體。本模塊主要包括詞典分詞、實體識別、屬性值識別三部分。
1.2.1 詞典分詞
詞典分詞需要構建輔助詞典,構建方法如下:
(1)實體鏈接詞典:實體鏈接詞典為文本中的實體提及到知識圖譜中實體的映射;
(2)分詞詞典:通過實體鏈接詞典中的所有實體提及,以及知識圖譜中所有實體構建;
(3)本任務是開放域的知識圖譜問答,因此將網絡上常見的中文實體詞典作為外部資源引進,共包括電影、明星、動漫、美食等21個領域詞典。
根據輔助詞典利用分詞工具得到候選實體提及。但僅用分詞工具得到的結果存在一定錯誤,如嵌套實體通常只保留較長的情況——問題“大連理工大學校歌是什么?”,正確的分詞結果應當為“大連理工大學 |校歌|是|什么|?”,但由于詞典中存在更長的實體“大連理工大學校歌”,因此得到錯誤的實體提及。針對這樣的問題,本文增加了實體識別模型來改進候選實體提及結果。
1.2.2 實體識別
本模塊基于不同預訓練模型設計實體識別模型。構建實體識別訓練數據時將查詢語句中的標注實體提取出來,還原為實體提及。例如,一個問題“英國什么時候國慶?”,將查詢“select?x where{<英國-(大不列顛及北愛爾蘭聯合王國)> <國慶日>?x.}”中的實體<英國-(大不列顛及北愛爾蘭聯合王國)>還原為問題中的實體提及“英國”。本文采用實體識別任務中常用的”BIOES”標注策略,B I E 分別表示長實體的頭部,中間和尾部,S表示單一實體,O表示非實體。
BERT-ner模型結構如圖3,由BERTlayer、BiLSTM層[17](雙向長短時記憶網絡)和CRF層[18](條件隨機場)構成。其中BERTlayer結構與圖2相同。
圖3 BERT-ner的模型結構Fig.3 Structure of BERT-ner model
將問題序列輸入到BERTlayer中,得到每個單詞的表示:
Hq=(H[CLS],H1,H2,…,H[SEP]) 。
(5)
Hi(i=1,2,…,[SEP])為第i個單詞對應的BERT層輸出。再將其送到BiLSTM層和CRF層預測標簽序列,這樣能對標簽進行全局優(yōu)化提升實體識別結果。
B=BiLSTM(Hq) ,
(6)
C=CRF(B) 。
(7)
根據CRF層預測的概率分布結果,取概率最大的標簽作為實體識別結果。
1.2.3 屬性值提及識別
問題中包含的屬性值規(guī)范性較低,可能無法直接與知識圖譜對齊,因此上述基于詞典分詞的方式不適用。本文針對不同類型的屬性值,使用不同方式進行識別:
(1)書名、稱號或數字:構建正則表達式;
(2)時間屬性:還原為知識圖譜中規(guī)范的時間表達,如“1989年九月”還原為“1989.09”;
(3)模糊匹配屬性:建立字到屬性的映射字典,統(tǒng)計問題中字對應屬性出現的總次數進行篩選。
實體鏈接是將實體提及對應到知識圖譜中的實體。對于候選實體提及,本文首先過濾掉詞性為語氣詞、 副詞等的提及(考慮到這類詞語通常不會是實體)。使用實體鏈接詞典,將實體提及對應的所有實體加入候選實體中。對于屬性值提及中的每個屬性,由于抽取時已經與知識圖譜對齊,故直接將其加入候選實體中。本文設計兩組特征提升候選實體篩選結果:
(1)實體提及特征:實體提及的長度(該實體對應的實體提及字數),實體提及的詞頻,實體提及的位置(該實體對應的實體提及距離句首的距離);
(2)實體特征:實體兩跳內關系和問題重疊詞的數量,實體兩跳內關系和問題重疊字的數量,實體的流行度(實體的一跳關系數量),實體的類型,實體的重要度(知識圖譜中包含該實體的三元組數量)。
在訓練集上,將標注的正確實體標為1,其余候選實體標為0,使用邏輯回歸模型對上述特征進行擬合。在測試集上,使用訓練好的模型對每個候選實體打分,保留分數排名前n的候選實體。
在CCKS2019-CKBQA任務中,70%以上的問題只包含一個主語實體且最多包含兩個語義關系。因此,對于每個候選實體,抽取與其相連的單跳關系和兩跳關系作為候選的查詢路徑,形式如 (entity,relation)或(entity,relation1,relation2)。再將候選路徑與問題進行文本匹配,根據匹配的得分篩選候選路徑。
傳統(tǒng)上,文本匹配模型(如Siamase[19]模型)被用來學習自然語言問題和候選查詢路徑間的相似度,更側重于學習同一語義不同表達間的相似性,需要大規(guī)模的語料作為支撐,模型的性能受到語料規(guī)模的約束。而預訓練語言模型正是在大規(guī)模語料上通過無監(jiān)督訓練得到的神經網絡模型。因此,本文基于不同預訓練的語言模型,設計關系匹配模型,在訓練集上對文本匹配模型進行微調。在微調過程中,由于預訓練模型是基于自然語言訓練的,而生成的候選查詢路徑是不符合自然語言邏輯的。因此,本文將候選查詢路徑還原為人工問題。 例如,(侯賽因,出生地)被還原為“侯賽因的出生地?”。對于訓練集每個問題,正確關系路徑標為 1,并隨機選擇三個候選查詢路徑作為負例,負例標為0。將自然語言問題和人工問題拼接,訓練模型,關系匹配模型結構與問題分類模型結構相同,依然以[CLS]標記對應的輸出作為文本的語義表示,不同的是在輸入部分要輸入兩個序列,以[SEP]標記分割,如式(8)。在測試集上,使用預訓練模型對所有的自然語言問題-人工問題對進行打分。
RA,B={[CLP],qA,[SEP],qB,[SEP]} ,
(8)
其中qA是自然語言問題,qB是人工問題。
本文定義的簡單問題是單實體單關系問題,復雜問題可分為單實體多關系問題和多實體問題。通過上述模塊的處理,既可以解決單實體單關系簡單問題,也可以解決部分單實體多關系復雜問題。因此本文針對復雜問題中的多實體問題設計了橋接方法。具體做法是對每個問題,保留前30個單實體的查詢路徑(entity1,relation1)。對這些查詢路徑,到知識圖譜中進行檢索,驗證其是否能和其他候選實體組成多實體情況的查詢路徑(entity1,relation1,ANSWER,relation2,entity2),如存在,將其加入候選查詢路徑中。最后,將單實體情況排名前三的查詢路徑和本模塊雙實體情況下得到的查詢路徑與問題計算重疊的字數,選擇重疊字數最多的作為最終的查詢路徑,認為其在語義和表達上與問題最相似。根據得到的查詢路徑構建SPARQL語句在圖譜中檢索答案。
本文實驗基于CCKS2019-CKBQA數據集。該數據集來自北京大學和恒生電子有限公司共同發(fā)布的中文開放域知識圖譜問答任務。數據集中標注的數據抽自于評測官方提供的開放域中文知識圖譜 PKUBase。數據劃分、三元組統(tǒng)計分別如表1、表2所示。實驗結果用準確率(Accuracy)、精確率(P)、召回率(R)和F1值等指標來評價。
表1 CKBQA數據集劃分
表2 知識圖譜知識數量
不同模塊BERT模型參數如表3,其他預訓練模型參數設置與對應模塊BERT模型參數相同。
表3 不同BERT模型的參數設置
由表4問題分類的準確率可以看出,幾種預訓練模型的問題分類性能相差不大,因為ERNIE模型在訓練時額外引入了對話語言建模機制,可以更好地理解中文問題細微的語義表示,因此ERNIE-classify結果稍好。分析部分錯誤樣例發(fā)現,很多復雜問題被錯分為簡單問題。原因是問題中的實體在知識圖譜中具有別名。如:測試集中問題“哥哥出生于什么地方?”,查詢?yōu)椤皊elect?ywhere {?x<別名> "哥哥".?x<出生地>?y.}”,根據標注策略,其被定義為復雜問題,實際上通過實體鏈接模塊后,別名已對齊,將“哥哥”鏈接到知識圖譜中的“張國榮-(華語歌手、演員、音樂人)”實體。查詢單個三元組(<張國榮-(華語歌手、演員、音樂人)> <出生地>?x)即可得到答案。
表4 不同預訓練模型在問題分類任務上的性能比較
在表5的實體識別結果中,預訓練語言模型比中文實體識別最好的模型Lattice-LSTM[20]效果還要高1.5-2.5個點。證明預訓練語言模型能更準確地識別詞邊界信息,得到更精確的實體。但所有預訓練模型的F1值都沒有到70%,主要原因是標注的正確實體是知識圖譜中的規(guī)范表現形式,如果將預測出的實體與知識圖譜對齊的話,識別結果就會有很大提升。在此模塊中XLNet-ner模型、RoBERTa-ner模型、ERNIE-ner模型識別效果都強于BERT-ner模型,是由于BERT模型是基于大規(guī)模語料中詞共現來預測實體,而XLNet模型相對BERT的WordPiece分詞方法使用了SentencePiece方法,優(yōu)化了對中文分詞的效果。RoBERTa模型的動態(tài)掩碼機制對相同樣本考慮到了更多的掩碼可能,提升了實體識別性能。ERNIE模型效果最好,是由于其訓練時加入了先驗語義知識,此外ERNIE模型不僅僅對隨機字符mask還對句子中的短語mask,這樣能學習到單詞與實體之間的關系。因此,ERNIE模型能更好地識別出短語。例如,問題“戰(zhàn)國四大名將之首的外號是?”,正確的實體是“四大名將之首”,BERT-ner模型識別出來的是“四大名將”和“首”兩個實體,而ERNIE-ner模型能準確識別為短語。
表5 不同預訓練模型在實體識別任務上的性能比較
對于實體鏈接模塊,本文在測試集上針對構建的特征進行了消融實驗。實驗結果如表6,可以看出:實體提及的特征和實體的特征對候選實體篩選均有幫助。只保留top5的候選實體,可以得到與保留全部候選實體接近的召回率,并且可以有效降低噪音和后續(xù)計算量。
表7 不同關系匹配模型的性能比較
通過表7的實驗結果得到:在關系匹配模塊上,基于預訓練語言模型的結果大幅優(yōu)于一般的文本匹配模型Siamase(49.7%)。主要因為測試集中有60%的問題包含不可見關系。而預訓練語言模型在其訓練過程中可以學到大量關系的表示,即使對不可見關系也有一定的預測能力。此模塊中,基于ERNIE的關系匹配模型同樣效果最好,優(yōu)于其他基于預訓練模型的匹配模型。當加入橋接方法和進行重疊字數匹配后,實驗結果都有所提升。
表8 測試集F1值比較
本文最終在測試集上達到了69.9%的F1值。表8為當時評測時F1值結果。由于此數據集為評測數據集,參賽隊伍會構建大量人工特征規(guī)則,通過多模型融合來提升結果,所以與本文方法沒有直接可比性。但本文方法仍能優(yōu)于評測第四名(67.68%),達到接近評測第三名(70.45%)的性能,在保證模型結構簡單的同時證明了本文提出方法的有效性。
通過不同模塊不同預訓練語言模型表現的結果可以看出,基于ERNIE模型效果全都是最好的,說明在中文問答任務上,ERNIE模型可以更好地學習到中文文本的語義表示,更適合處理中文文本。因此可以嘗試在其他中文NLP任務上應用ERNIE模型作為底層編碼器驗證效果。
最后基于本文提出方法實現了開放域圖譜問答系統(tǒng)展示,在輸入框中輸入問題,如:“清華大學的校長是誰?”,可看到系統(tǒng)能返回正確簡潔的答案。系統(tǒng)訪問鏈接為:http:∥www.medicalqa.xyz:5005/.展示效果如圖4所示。
圖4 問答系統(tǒng)服務頁面Fig.4 Online question answering system
本文通過實驗驗證了ERNIE語言模型更適合應用在中文圖譜問答任務中。同時本文在實體提及識別、實體鏈接、關系匹配子任務上提出的新框架有助于高效精確地識別匹配結果。并通過在CCKS2019-CKBQA測試集上的結果驗證方法的有效性,最后基于本文方法實現了問答系統(tǒng)展示。
雖然模型在回答簡單問題上可以有較好的性能,但是在解決復雜問題時,本文方法只能解決部分雙實體問題,對涉及更多實體的復雜問題也無法處理。在實體鏈接部分保留全部結果的召回率是93.1%,說明仍有很多實體沒有被識別出來,所以在后續(xù)的研究工作中可以考慮對復雜問題進行語義解析,通過構造復雜問題查詢圖來提升模型回答復雜問題的能力,并融入知識圖譜的全局信息,如利用transE[21]、transH[22]等知識圖譜建模方法來提升候選實體提及的結果。