本發(fā)明設(shè)計了一種基于關(guān)系注意力增強和交叉編碼的知識圖譜問答方法,屬于自然語言處理領(lǐng)域。
背景技術(shù):
1、智能問答是目前人工智能領(lǐng)域一個重要的研究方向,正逐漸成為人與機器進行自然交互的新趨勢。知識圖譜是一種結(jié)構(gòu)化的數(shù)據(jù)庫,由一些相互聯(lián)系的實體以及實體之間的關(guān)系構(gòu)成,是一種具有網(wǎng)狀結(jié)構(gòu)的語義的網(wǎng)絡(luò)。近年來,隨著知識圖譜在各個領(lǐng)域的廣泛應(yīng)用,基于知識圖譜的問答系統(tǒng)研究正逐漸成為焦點。知識圖譜問答是以知識圖譜作為主要數(shù)據(jù)來源的問答形式,對于給定的自然語言問題,機器基于知識圖譜進行語義分析、推理,從而得到答案。早期的知識圖譜問答研究主要聚焦于單一領(lǐng)域(如醫(yī)療、金融、農(nóng)業(yè)、電影等)的簡單問題,然而隨著信息的爆炸式增長,簡單問答場景已很難滿足用戶復(fù)雜的信息檢索需求,如何解決問答系統(tǒng)對復(fù)雜問題的處理受到研究者們的廣泛關(guān)注。
2、針對用戶提出的較為復(fù)雜的自然語言問題,大多數(shù)的問答方法都是通過模型提取出問題的主語實體,然后以該實體為中心,在知識圖譜中遍歷一定跳數(shù)范圍內(nèi)的實體和關(guān)系作為該問題的查詢圖,最后利用查詢圖在知識圖譜中檢索得到答案。這樣的問答方式往往具有以下問題:(1)復(fù)雜問題跳數(shù)的模糊性可能導(dǎo)致我們生成的查詢圖不夠精確,過小的查詢圖會將問題的正確答案排除在外,而過大的查詢圖會增大搜索空間,引入不必要的噪聲;(2)生成的查詢圖本身就具有噪聲,如果不進行過濾,不僅增加了計算量,而且會對后繼的查詢圖排序模塊造成影響。
3、為了應(yīng)對上述挑戰(zhàn),大量研究者開展了深入的研究并提出了相應(yīng)的解決方案。在早期的方法中,研究者們提出了一種基于圖的語義解析器,使用組合范疇語法將問題轉(zhuǎn)換為語義查詢圖,自然語言問句中的關(guān)系在查詢圖中表示為邊,實體表示為圖節(jié)點,并用集束搜索方法得到最佳語義查詢圖。近年來,部分研究者提出了一種用于知識圖譜問答的子圖檢索增強模型,該模型設(shè)計了一個與后繼推理器解耦的可訓(xùn)練子圖檢索器,它可以實現(xiàn)問題子圖的自動擴展和停止,從而生成更加精確的問題子圖,然后與任何面向子圖的推理器結(jié)合,可以獲得很好的問答效果。
4、盡管研究者們對知識圖譜中的復(fù)雜問題做了很多研究,但是多跳問題和限制推理問題的查詢圖生成仍然面臨許多困難,例如限制性問題的查詢圖生成仍然存在范圍不精確問題。在之前的研究中,研究者們主要關(guān)注于如何更好的對問題進行特征提取與表示,忽略了問題本身所隱含的先驗結(jié)構(gòu)信息。在本發(fā)明提出了一種基于關(guān)系注意力增強和特征交叉編碼的知圖譜問答方法。在該方法中,主要包含兩個步驟:問題結(jié)構(gòu)分類和查詢圖排序。在問題結(jié)構(gòu)分類中,本發(fā)明設(shè)計了一個融合外部關(guān)系特征,并進行注意力增強的問題結(jié)構(gòu)分類模塊來提取問題的先驗結(jié)構(gòu)信息,并利用提取出的結(jié)構(gòu)信息過濾掉明顯的噪聲,減小候選路徑集合的規(guī)模。在查詢圖排序階段,本發(fā)明利用一個特征交叉編碼器對候選路徑與問句的特征向量進行融合編碼,然后篩選出候選路徑中的最優(yōu)路徑,在精簡模型結(jié)構(gòu)的同時獲得更為準確的路徑排序結(jié)果。
技術(shù)實現(xiàn)思路
1、本發(fā)明針對復(fù)雜問題的知識圖譜問答任務(wù),提出了一種基于關(guān)系注意力增強和特征交叉編碼的知識圖譜問答方法。該方法主要聚焦于兩個任務(wù):問題結(jié)構(gòu)分類和查詢圖排序。在問題結(jié)構(gòu)分類階段,本發(fā)明構(gòu)建了基于多頭注意力機制融合外部關(guān)系的問題結(jié)構(gòu)分類模型,該模型先對問句進行編碼表示,并通過注意力機制和數(shù)據(jù)庫關(guān)系列表對問句特征進行信息增強表示,然后送入分類器得到問題結(jié)構(gòu)類別。利用分類結(jié)果對問題的初始查詢圖進行過濾,得到更加精確的查詢圖。在查詢圖排序階段,本發(fā)明設(shè)計了一個基于特征交叉編碼的查詢圖排序模型,該模型對拼接后的問句和候選路徑進行編碼,然后對輸出進行加權(quán)求和后得到整個序列的編碼表示,最后經(jīng)過全連接層得到問句與候選路徑的相似度分數(shù)。本發(fā)明提出的知識圖譜問答方法有助于進一步提高復(fù)雜問題場景下的問答準確率。
2、本發(fā)明通過以下技術(shù)方案來實現(xiàn)上述目的:
3、發(fā)明所訴的知識圖譜問答方法如附圖1所示,首先確定問題的主體實體,利用主體實體在知識圖譜中檢索出一個粗略的查詢圖,并將問題句子輸入ae-classification結(jié)構(gòu)分類模型,對問題結(jié)構(gòu)進行分類。然后根據(jù)分類結(jié)果對查詢圖進行噪聲過濾,得到更準確的查詢圖。然后,我們使用fc-ranking查詢圖排序模型對上一步輸出的查詢圖進行排序。最后,我們選擇得分最高的路徑作為問題的最優(yōu)路徑,并將其轉(zhuǎn)換為相應(yīng)的查詢語句,從知識圖譜中獲得答案。其主要包含問題結(jié)構(gòu)分類和查詢圖排序兩個部分。
4、在問題結(jié)構(gòu)分類階段按照如下方法進行:
5、(1)定義問題的結(jié)構(gòu)類別,鏈式結(jié)構(gòu)有ss1、ss2、ss3三種,約束型結(jié)構(gòu)有sc1、sc2、sc3三種,例如鏈式結(jié)構(gòu)ss2={h,r1,e1,r2,e0},約束結(jié)構(gòu)sc2={h,r1,e1,r2,e0,c},其中h代表問題中的主語實體,e0表示問題對應(yīng)的答案實體,ei表示中間實體,ri表示關(guān)系,c表示問題所蘊含的限制條件;
6、(2)對知識庫中的關(guān)系進行嵌入表示,得到1×768的關(guān)系特征表示er,所有關(guān)系組成的關(guān)系列表表示為r.matrixr_nums×768,供后繼模塊使用,其中r_nums表示關(guān)系數(shù)量,例如在metaqa數(shù)據(jù)集中有18種關(guān)系,webquestionsp數(shù)據(jù)集中有2171種關(guān)系;
7、(3)把問題q輸入預(yù)訓(xùn)練bert網(wǎng)絡(luò)進行特征表示,得到1×768維的問句特征eq;
8、(4)利用注意力機制對步驟(3)中的問句特征eq和步驟(2)中的關(guān)系特征er進行注意力值計算,并更新問句特征表示:
9、weight(q,r)=eq×r.matrixt???????????????????(1)
10、weight(q,r)'=softmax(weight(q,r))??????????????????(2)
11、att(q,r)=weight(q,r)'×r.matrix??????????????????(3)
12、eq=att(q,r)+eq??????????????????????????(4)
13、將1×768維的eq與轉(zhuǎn)置后的r.matrixt做向量乘法得到1×r_nums維的權(quán)重向量weight(q,r);接著經(jīng)過softmax函數(shù)對權(quán)重向量weight(q,r)進行歸一化得到weight(q,r)';然后把每種關(guān)系對應(yīng)的權(quán)重與關(guān)系特征相乘,得到該問句與每種關(guān)系對應(yīng)的注意力值大小att(q,r);最終將注意力值疊加到原始問句特征表示上得到更新后的問句特征表示eq;
14、(5)將更新后的問句特征eq送入分類器進行問題結(jié)構(gòu)分類:
15、p=classifier(eq)?(5)
16、接著運用交叉熵損失函數(shù)來計算模型分類的損失:
17、
18、其中n為訓(xùn)練的batch?size大小,y表示輸入問題對應(yīng)的真實結(jié)構(gòu)類別,最終我們將計算所有batch的損失和用于問題結(jié)構(gòu)分類模型訓(xùn)練時的反向傳播。
19、在查詢圖排序階段,按照如下步驟進行:
20、(1)利用特征交叉編碼器對查詢圖中的候選路徑與問句進行特征融合編碼:
21、cls,words_embedding=bert(q,path)?(7)
22、將問句q與查詢圖中的候選路徑path進行拼接后送入預(yù)訓(xùn)練后bert網(wǎng)絡(luò)進行編碼,得到序列的全局特征信息cls和每個詞的特征信息words_embedding;
23、(2)將cls與words_embedding相乘得到1×length_squence維的權(quán)重向量w(cls,word):
24、w(cls,word)=cls×words_embeddingt?(8)
25、(3)將步驟(1)中的每個詞根據(jù)步驟(2)中的權(quán)重大小進行特征加權(quán)融合,得到最終的交叉編碼結(jié)果cross_encoding(q,path):
26、cross_encoding(q,path)=w(cls,word)×words_embedding?(9)
27、(4)將步驟(3)中的編碼結(jié)果送入全連接層,并經(jīng)過softmax函數(shù),得到問句與候選路徑的相似度分數(shù);
28、(5)訓(xùn)練過程中同樣采用交叉熵損失函數(shù)進行訓(xùn)練。