劉月峰,張晨榮
(內(nèi)蒙古科技大學(xué) 信息工程學(xué)院,內(nèi)蒙古 包頭 014010)
近年來,隨著知識庫的快速發(fā)展,基于知識庫的問答系統(tǒng)(question answering over knowledge bases,KB-QA)成為了自然語言處理(natural language processing,NLP)任務(wù)中研究熱點(diǎn)。Bordes等[1]提出一種單一事實的簡單問題的知識庫問答的數(shù)據(jù)集?;谥R庫的簡單問答任務(wù)一點(diǎn)也不簡單,研究人員通過采用復(fù)雜的神經(jīng)網(wǎng)絡(luò)(neural networks,NN)結(jié)構(gòu)[2-8](如注意力機(jī)制[2,4,7,8]、殘差學(xué)習(xí)[6]等)解決該問題,其準(zhǔn)確率也未能達(dá)到理想效果。Ture等[9]并沒有采用復(fù)雜的NN結(jié)構(gòu),他們根據(jù)問句的語言結(jié)構(gòu)將其分解成兩種機(jī)器學(xué)習(xí)子問題:實體識別和關(guān)系預(yù)測,并應(yīng)用雙向門控循環(huán)單元(bi-gated recurrent units,BiGRUs)分別對實體識別和關(guān)系預(yù)測進(jìn)行學(xué)習(xí),相比之前的復(fù)雜的NN結(jié)構(gòu)而言,他們的方法顯著提升了知識庫問答的準(zhǔn)確率;Mohammed等[10]進(jìn)一步探索了使用神經(jīng)網(wǎng)絡(luò)或不使用神經(jīng)網(wǎng)絡(luò)的基線模型。然而Ture等[9]和Mohammed等[10]通過將簡單知識庫問答任務(wù)分解為實體檢測和關(guān)系預(yù)測兩種不同的任務(wù)進(jìn)行獨(dú)立訓(xùn)練,忽略了問題中的實體和關(guān)系之間的聯(lián)系,降低了關(guān)系預(yù)測的準(zhǔn)確度,從而降低了問答的準(zhǔn)確率。針對以上問題,本文采用聯(lián)合訓(xùn)練的方法,同時進(jìn)行實體識別和關(guān)系預(yù)測的學(xué)習(xí),使用多個級別(字符和詞級別)的文本特征作為聯(lián)合模型的輸入,引入雙向長短時記憶網(wǎng)絡(luò)(bi-direction long short-term memory,BiLSTM)進(jìn)行問句的特征學(xué)習(xí),隨后采用條件隨機(jī)場(condition random filed,CRF)進(jìn)行實體識別,利用多維度特征(文本特征和問句的標(biāo)簽嵌入(label embedding)特征)進(jìn)行關(guān)系預(yù)測。相比獨(dú)立訓(xùn)練的知識庫問答方法,本文模型提升了問答準(zhǔn)確率,加快了訓(xùn)練的效率。
簡單KB-QA任務(wù)的目標(biāo)是給定一句自然語言問題Q,系統(tǒng)可以返回答案(subject、predicate、object)。本文提出的方案框架基本流程如圖1所示,該方案包含3個模塊:實體識別和關(guān)系預(yù)測的聯(lián)合訓(xùn)練模型、實體鏈接、答案查找。本文首先利用多級別的文本信息作為聯(lián)合學(xué)習(xí)模型的輸入,即使用基于卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)的字符級別(Char-level)的表示與預(yù)訓(xùn)練Glove詞嵌入[11]的表示進(jìn)行拼接得到詞的最終表示,其次將詞的最終表示輸入聯(lián)合學(xué)習(xí)模型中,模型經(jīng)過訓(xùn)練之后同時識別實體和預(yù)測關(guān)系,最終以結(jié)構(gòu)化的方式進(jìn)行輸出,例如圖中“Where was Oliver duff born ”經(jīng)過訓(xùn)練之后輸出的結(jié)構(gòu)化表示:{subtext:Oliver duff,relation:place_of_birth}。為了能夠?qū)⒔Y(jié)構(gòu)化表示中的實體(subtext)快速地鏈接到KBs最相關(guān)的真實節(jié)點(diǎn)中,我們引入倒排索引Ie,即將KBs中所有實體的所有n-grams(n∈{∞,3,2,1})映射為別名文本,且每一個n-gram都具有TF-IDF權(quán)值,然后將subtext的n-grams通過查詢Ie構(gòu)建候選實體集C;對于答案的查找,我們在候選實體集上建立單跳路徑索引集合Ir,根據(jù)結(jié)構(gòu)化文本中的關(guān)系(relation)匹配路徑索引Ir的路徑,若匹配相同,則TF-IDF得分最高的候選實體對應(yīng)的尾實體即為問句中的答案。
圖1 基于聯(lián)合學(xué)習(xí)的簡單知識庫問答框架
本節(jié)我們將詳細(xì)介紹聯(lián)合實體識別和關(guān)系預(yù)測聯(lián)合學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)模型。該模型能夠同時識別實體和預(yù)測問句所屬的關(guān)系,通過利用實體類型的標(biāo)簽以及實體與關(guān)系之間的對應(yīng)關(guān)系增強(qiáng)關(guān)系預(yù)測的性能,而且能夠同時進(jìn)行兩項任務(wù),得到最終結(jié)構(gòu)化的表示。基本的模型結(jié)構(gòu)如圖2所示,它包含:①輸入層(即嵌入層)、②BiLSTM層、③CRF層、④全連接層。圖2所展示的是SimpleQuestions數(shù)據(jù)集中一個案例。模型的輸入是tokens(即問句中單詞)序列,它們被表示成多級別向量(即詞級別的向量和字符級別的向量的組合),我們利用了多個維度的文本信息。BiLSTM層用來抽取相關(guān)文本的更復(fù)雜的表示。CRF層和全連接層能夠產(chǎn)生兩個任務(wù)的輸出,最終將輸出結(jié)構(gòu)化表示的結(jié)果。
圖2 聯(lián)合實體識別和關(guān)系預(yù)測的模型
(1)輸入層(即嵌入層)
對于問句的表示,我們首先將問句進(jìn)行預(yù)處理(包括大小寫字母轉(zhuǎn)換等),對于預(yù)處理過后的問句序列q=w1,…,wn的表示,我們采用分層的編碼方法,即利用問句中的每一個單詞的字符級別和詞級別的信息作為BiLSTM的輸入。基于CNN的字符級別的編碼器首先被用來得到每個單詞的表示,字符向量(嵌入)表示可以捕捉微觀形態(tài)特征,也可以避免(out of vocabulary)OOV問題。隨后我們使用預(yù)訓(xùn)練的詞嵌入Glove[11]作為每個詞級別的向量表示,詞嵌入能夠捕捉宏觀信息。然后將字符嵌入和詞嵌入拼接在一起作為最終的單詞表示
R(Wi)=[CNNchar_level(c1,…,cj);WE(wi)]
(1)
其中,ci表示問句中的單詞wi的第i個字符的向量表示;WE(wi)表示問句中第i個單詞的詞嵌入。
(2)BiLSTM層
BiLSTM能夠很好地捕捉長序列依賴信息,訓(xùn)練的過程中也能夠避免梯度消失和梯度爆炸,因此在這一部分使用兩層BiLSTM,得到句子級別的編碼。我們將最終的詞表示R(Wi)進(jìn)行組合輸入BiLSTM中得到問句的表示
Q=BiLSTM(R(W1),…,R(Wn))
(2)
(3)
(3)CRF層
在CRF層我們將BiLSTM的輸出hi作為CRF層的輸入,CRF層能夠計算每個單詞最可能的實體標(biāo)簽。圖2中CRF層中表示了分配給問句的標(biāo)記的BIO編碼標(biāo)簽的示例。在CRF層中,可以觀察到我們分別指定B-PER和 I-PER 標(biāo)簽以表示實體“Oliver duff”的開始和內(nèi)部標(biāo)記。設(shè)詞向量為w,一系列得分向量s1(e),…,sn(e)和標(biāo)簽預(yù)測向量y1(e),…,yn(e),其中上標(biāo)(e)用來標(biāo)記實體識別任務(wù)。線性鏈CRF的得分定義如下
(4)
(5)
ci=[hi;gi],i=0,…,n
(6)
(4)關(guān)系預(yù)測
對于關(guān)系預(yù)測我們利用問句的標(biāo)簽特征以及BiLSTM所學(xué)習(xí)的特征進(jìn)行拼接得到ci,作為關(guān)系預(yù)測的輸入,我們利用softmax計算每條問句所屬的關(guān)系。給定問題序列s和關(guān)系標(biāo)簽集合R,我們的目標(biāo)是識別該序列所屬的關(guān)系,計算序列s所屬關(guān)系rlabel得分公式為
s(r)(ci)=f(W(r)ci+b(r))
(7)
P(rlabel|si)=softmax(s(r)(ci))
(8)
如圖2所示,給定問句“Where was Oliver duff born”,我們可以通過聯(lián)合學(xué)習(xí)模型識別實體名稱:“Oliver duff”,關(guān)系預(yù)測的結(jié)果為“place of birth”。根據(jù)識別的實體和預(yù)測的關(guān)系形成結(jié)構(gòu)化的表示:{subtext:Oliver duff,relation:place of birth}。雖然問句中的實體和關(guān)系已知,但是我們?nèi)匀恍枰M(jìn)一步將實體鏈接到KBs中,利用鏈接到的實體和預(yù)測的關(guān)系進(jìn)行答案查找。
問句中識別的主題實體(subtext)需要精準(zhǔn)地鏈接到知識庫(KBs)中的真實節(jié)點(diǎn)。為了實現(xiàn)這一點(diǎn),我們采用類似Ture[9]的方法,構(gòu)建了一個倒排索引Ie,它將KBs中所有實體名稱的n-grams(n∈{∞,3,2,1})映射成實體的別名文本,且每個別名文本都有一個相應(yīng)的TF-IDF權(quán)重,同時為每個實體的稱名也建立具有TF-IDF的權(quán)重的索引。TF-IDF權(quán)重計算公式如下
(9)
其中,tfi,j表示詞頻,其中ni,j表示某個詞在某實體所有n-grams出現(xiàn)的次數(shù),∑knk,j表示某個實體所有n-grams的總數(shù),idfi,j表示逆文檔頻率,其中 |D| 表示KBs中所有實體的總數(shù),|Dti| 表示包含某個n-gram的所有的實體個數(shù)。
一旦索引Ie被建立,我們可以鏈接subtext從結(jié)構(gòu)化查詢(例如:“Oliver duff”)到KB中的目標(biāo)實體(如ei)。從n=∞開始,我們迭代subtext的每個n-gram并查詢索引Ie,它返回KBs中所有具有TF-IDF權(quán)值的真實實體,對于subtext中不同n-gram鏈接到相同的實體,我們?nèi)-grams 中TF-IDF權(quán)重最大的值。對于每個n-gram,將檢索到的實體添加到候選實體集合C中。我們繼續(xù)執(zhí)行該過程,其中n的值逐漸減小(即n∈{∞,3,2,1})。如果集合C非空并且n小于或等于subtext中的單詞(tokens)個數(shù),則提前終止迭代。后一個標(biāo)準(zhǔn)是避免我們找到完全匹配的情況,但也有部分匹配可能更相關(guān)。
我們構(gòu)建候選實體列表C之后,使用每個候選實體e(cd)作為候選答案的起始節(jié)點(diǎn),構(gòu)建e(cd)的路徑索引Ir,即映射每個候選節(jié)點(diǎn)e(cd)到所有可以到達(dá)的節(jié)點(diǎn)e(t),它們之間的路徑為p(e(cd),e(t)),最終Ir(e(cd)) 表示為
(10)
其中,上標(biāo)(cd)表示候選實體,上標(biāo)(t)表示尾實體。當(dāng)前我們研究的是單一關(guān)系的問題,因此我們將路徑限制為單跳,但可以輕松地擴(kuò)展到多跳路徑以支持更廣泛的搜索。我們使用Ir檢索所有可以從e(cd)到e(t)的尾節(jié)點(diǎn),且路徑p與預(yù)測的關(guān)系r一致(即r∈p(e(cd),e(t))),最后將檢索到的所有Ir添加到候選答案集A中。為候選集合C中的每個實體的重復(fù)此過程之后,答案集合A中的候選實體的TF-IDF得分最高候選節(jié)點(diǎn)即為該問題的最佳實體節(jié)點(diǎn),最佳節(jié)點(diǎn)的尾節(jié)點(diǎn)即為最佳答案。
本文使用SimpleQuestions[1]數(shù)據(jù)集來評估本文方法的有效性。該數(shù)據(jù)集包含10萬條簡單問題,其劃分為訓(xùn)練集、驗證集和測試集,分別包含75 910、10 845、21 687條數(shù)據(jù)。每個問題與Freebase知識庫中的一個三元組(subject、predicate、object)對應(yīng),三元組可以用來回答該問題,如問題“Where was Oliver duff born”對應(yīng)的三元組(m/0gy03bh、people/person/place_of_birth、m/0ctw_b)。三元組中的subject和object給定的是一個MID值,但是實體識別方法并不能根據(jù)MID識別問題中的實體,本文使用Mohammed等[10]的已標(biāo)注的實體和非實體文本,對于問句中實體的類型標(biāo)注,我們根據(jù)Freebase三的實體類型(type)進(jìn)行實體類型的標(biāo)注。
我們的方法實現(xiàn)在操作系統(tǒng)為Centos7,運(yùn)行在NVIDIA GeFore GTX 1080 Ti GPU,CUDA9.0,Pytorch版本v0.4.0,Python版本v3.6。本文利用CNN實現(xiàn)字符嵌入表示,使用BiLSTM實現(xiàn)問句特征的抽取,采用 Adam 算法進(jìn)行參數(shù)更新。字符嵌入的維度為32,詞嵌入我們使用維度為300的預(yù)訓(xùn)練的GloVe[11]嵌入;我們使用早停(early stop)技術(shù)在SimpleQuestions的驗證集上進(jìn)行模型超參數(shù)的驗證。在最終的模型中,CNN模型的詞窗口設(shè)置為3,包含一個卷積層和一個max-pooling層,CNN的輸出通道維度為32。BiLSTM隱藏層和全連接隱藏層的大小為300;學(xué)習(xí)率為0.001;batch size設(shè)置為64,dropout都設(shè)置為0.3。根據(jù)數(shù)據(jù)集的大小,我們在30到100個周期(epochs)之后獲得最佳超參數(shù)。我們根據(jù)驗證集中的結(jié)果選擇最佳的周期(epoch)。
對于實體識別,我們計算連續(xù)實體標(biāo)簽的召回率(Recall)、準(zhǔn)確率(Precision)、F1值作為評估標(biāo)準(zhǔn)。實體鏈接和關(guān)系預(yù)測,我們評估召回率R@N,即正確答案是否出現(xiàn)在前N個結(jié)果中。對于問答準(zhǔn)確率的評估,我們遵循Bordes等[1]的方法,即如果實體和關(guān)系完全匹配數(shù)據(jù)集中問題對應(yīng)的三元組,則將預(yù)測標(biāo)記為正確,主要指標(biāo)是準(zhǔn)確率(Accuracy),相當(dāng)于R@1。
我們在驗證集上與Mohammed等[10]的實體識別的結(jié)果進(jìn)行了比較,相比他們得到平均93.1%的F1值,本文模型的F1平均值達(dá)到94.2%,稍微高于他們1.1%。為了展現(xiàn)本文實體鏈接的有效性,我們與Mohammed等采用BiLSTM和CRF這兩種不同的實體鏈接方法的結(jié)果進(jìn)行了對比,并增加本文方法中不使用CRF層的消融研究,見表1。
表1 驗證集上Top K候選實體的召回率
表1中,我們比較了排名在前K(K∈1,5,20,50) 個候選實體上的召回率,相比Mohammed等[10]的方法,本文的模型在Top K上有顯著的提升,且在BiLSTM上添加CRF能有效改善實體鏈接的效果。在不添加CRF的實驗結(jié)果中,可以看出實體鏈接采用n-gram和TF-IDF建立倒排索引的方法具有更高召回率,同時也說明聯(lián)合訓(xùn)練的方法對實體鏈接的影響較小。
關(guān)系預(yù)測的對比結(jié)果見表2,我們在驗證集上對比分析了先前工作中使用簡單神經(jīng)網(wǎng)絡(luò)方法進(jìn)行關(guān)系預(yù)測的結(jié)果,即Ture等[9]采用BiGRU方法以及Mohammed等[10]采用的兩種不同神經(jīng)網(wǎng)絡(luò)(BiGRU和CNN)方法預(yù)測的結(jié)果,同時增加本文模型中是否添加標(biāo)簽嵌入的消融實驗,以便驗證模型中標(biāo)簽嵌入的有效性。從表2中的實驗結(jié)果可知,本文模型在關(guān)系預(yù)測的結(jié)果中體現(xiàn)了相對較高的準(zhǔn)確率。當(dāng)模型中不添加標(biāo)簽嵌入特征時,關(guān)系預(yù)測的準(zhǔn)確率比Mohammed等的稍低,說明本文的聯(lián)合學(xué)習(xí)模型對關(guān)系預(yù)測的準(zhǔn)確率的影響可以忽略不計,當(dāng)模型中添加該特征時,關(guān)系預(yù)測的準(zhǔn)確率相比Mohammed等采用CNN的方法提升了1.6%。因此從標(biāo)簽嵌入的消融實驗可以看出,標(biāo)簽嵌入特征能夠有效提升關(guān)系預(yù)測的準(zhǔn)確率。
表2 驗證集上關(guān)系預(yù)測的結(jié)果
最后,為了展示本文方法的有效性,我們在測試集上比較了當(dāng)前各種端到端最優(yōu)的問答系統(tǒng)。如Bordes等[1]提出一種記憶網(wǎng)絡(luò)方法;Golub和He[2]使用一種具有注意力機(jī)制的字符級別的encoder-decoder的LSTM框架;Dai等[3]
提出一種基于BiGRU的方法,它是利用一種稱為CFO的集中修正方法進(jìn)行簡單問答;Yin等[4]利用一種基于attentive-CNN解決問答任務(wù);Lukovnikov等[5]提出嵌套的詞級別和字符級別的問題編碼器并以一種端到端(end-to-end)的方法訓(xùn)練神經(jīng)網(wǎng)絡(luò)來回答簡單問題;Yu等[6]提出通過殘差BiLSTM增強(qiáng)關(guān)系預(yù)測解決知識庫問答任務(wù);Ture等[9]所提方法到達(dá)了目前知識庫問答的最優(yōu)方法,問答的準(zhǔn)確率高達(dá)88.3%。Mohammed等[10]探索了各種強(qiáng)壯的基線模型,我們只比較了他們采用兩種不同神經(jīng)網(wǎng)絡(luò)組合的方法,因為這兩種方法在基線方法中取得了相對較好的結(jié)果。
實驗結(jié)果表明,本文所采用的方法在知識庫問答任務(wù)上取得了相對有競爭力的結(jié)果,雖然未能超越目前最好的方法,但也驗證了本文方法的有效性,結(jié)果比較見表3。從表中結(jié)果可以看出,將Ture等的結(jié)果拋開不看,我們的實驗結(jié)果超過最近報告方法1.9%。相比Mohammed等采用分別訓(xùn)練實體識別和關(guān)系預(yù)測的最好的神經(jīng)網(wǎng)絡(luò)方法,我們的聯(lián)合學(xué)習(xí)方法的問答準(zhǔn)確率超過他們4.7%。
表3 測試集上問答準(zhǔn)確率
本文提出一種聯(lián)合實體識別和關(guān)系預(yù)測的簡單知識庫問答模型,實驗結(jié)果驗證了該模型的有效性,相比之前工作中獨(dú)立進(jìn)行實體識別和關(guān)系預(yù)測的方法而言,本文模型能夠同時檢測這兩者,提升了訓(xùn)練的效率,而且通過對比采用復(fù)雜神經(jīng)網(wǎng)絡(luò)方法的結(jié)果,發(fā)現(xiàn)本文模型也具有一定的優(yōu)越性。在消融實驗中,發(fā)現(xiàn)了CRF層和標(biāo)簽嵌入特征對KB-QA任務(wù)的提升效果。雖然本文所提方法在簡單知識庫問答上效果有一定的提升,但是仍然還有改進(jìn)的空間,如增加注意力機(jī)制,提高模型的性能。