尹 鵬,周 林,郭 強(qiáng),劉鎮(zhèn)江
(江南計算技術(shù)研究所,江蘇 無錫 214083)
關(guān)系抽取(relation extraction)是指從自由文本中抽取給定兩個實體的關(guān)系的方法,是自然語言處理的重要任務(wù)之一,也是是構(gòu)建知識圖譜(knowledge graph)和知識庫(knowledge base)的重要步驟之一。關(guān)系抽取基于如下問題:假設(shè)有兩個實體e1,e2和可能的關(guān)系集合r,如何判斷e1,e2之間屬于r中哪一類關(guān)系?然而僅僅依靠實體獲得的信息太少,難以訓(xùn)練有效的模型。因此,通常通過e1,e2的語義信息提取關(guān)系信息r,即在自由文本中抽取同時包含e1,e2的句子,通過分析句子的語義信息得到實體對(e1,e2)的關(guān)系r。
早期關(guān)系抽取方法大多依賴于手工構(gòu)建特征工程。在自然語言中,同樣的關(guān)系可能有很多種不同的表達(dá)方式,可能是詞匯,短語,也有可能體現(xiàn)在上下文語義中。因此,提出了很多基于特征的方法和基于核的方法[1-3]。然而這些方法大部分都是基于已有的自然語言處理工具構(gòu)建深度特征,難免會把這些工具中的錯誤傳播到后續(xù)分類中,對分類結(jié)果造成干擾。隨著神經(jīng)網(wǎng)絡(luò)的發(fā)展,端對端的神經(jīng)網(wǎng)絡(luò)模型逐漸發(fā)展成熟[4-6],詞向量嵌入[4-6]和注意力機(jī)制[7]的引入也顯著提升了模型的性能。注意力機(jī)制通過設(shè)計合理的算法,對每一個單詞或每一個句子計算一個關(guān)注度,經(jīng)過訓(xùn)練使關(guān)鍵的單詞或句子有較高的權(quán)重,有助于在后續(xù)的模塊中更能有效地提取關(guān)鍵特征。Ji等[8]和Jat等[9]在注意力機(jī)制中引入了實體信息,然而,他們在注意力機(jī)制中只使用了標(biāo)注實體短語的第一個詞向量,并沒有充分利用實體信息。在大部分情況下,實體都是由實體短語表示,例如實體對:“Zoran Abadi”,“University of Belgrade, main campus”??梢钥闯鲈谠搶嶓w對中,實體都由多個詞組成,如果僅使用第一個詞,可能導(dǎo)致實體信息獲取不全面。
文中引入包含實體的注意力機(jī)制訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò),首先充分利用實體短語的信息。使用卷積神經(jīng)網(wǎng)絡(luò)獲取實體短語的深度特征表示,由于實體短語的長度不確定,使用卷積神經(jīng)網(wǎng)絡(luò)可以達(dá)到壓縮實體信息的效果,同時也能提取到實體的深層向量表示。其次引入短語級的注意力機(jī)制。在很多實例中,體現(xiàn)實體關(guān)系的是一個短語,因此,抓住關(guān)鍵短語特征可以有效提升識別能力。卷積神經(jīng)網(wǎng)絡(luò)的卷積過程(卷積窗口長度為l)可以認(rèn)為是把長度為l的短語映射到高維空間,因此可以通過對卷積層添加注意力機(jī)制達(dá)到短語級注意力機(jī)制的效果。Ji等[8]表明了TransE思想在實例級注意力機(jī)制中有較好的表現(xiàn),因此把TransE思想引入到短語級注意力機(jī)制中。再次引入標(biāo)簽平滑正則化(label smoothing regularization)降低錯誤標(biāo)簽的不良影響,同時減輕過擬合風(fēng)險。遠(yuǎn)程監(jiān)督的數(shù)據(jù)集有大量的噪聲數(shù)據(jù),這些數(shù)據(jù)使訓(xùn)練的模型性能大打折扣,因此對非0即1的標(biāo)簽做平滑處理,對每一個類賦予一個置信度,得到平滑的軟標(biāo)簽,減少錯誤標(biāo)簽的干擾。
關(guān)系抽取任務(wù)通常被認(rèn)為是多分類多標(biāo)簽問題,傳統(tǒng)方法中比較有代表性的是:基于特征的方法[1,10-12],通過分析語義信息構(gòu)建特征;核方法:卷積樹核[13]、子序列核[14]、依存樹核[15]。這些方法都是基于手工精心構(gòu)建的特征,或者基于已有的NLP工具構(gòu)建的特征,它們都會不可避免地把NLP工具中的錯誤信息帶入后續(xù)分類中,影響了分類性能[16]。
從對數(shù)據(jù)的利用方式進(jìn)行分類,關(guān)系抽取可分為有監(jiān)督、無監(jiān)督、半監(jiān)督、遠(yuǎn)程監(jiān)督和開放式[17]的關(guān)系抽取方法。隨著知識庫和知識圖譜的規(guī)模不斷增大,模型訓(xùn)練需要的數(shù)據(jù)規(guī)模需求也在不斷增加。然而基于監(jiān)督的方法需要大量的標(biāo)記數(shù)據(jù),將會消耗大量的人力和時間成本。Mintz等[18]提出的遠(yuǎn)程監(jiān)督方法有效降低了構(gòu)建數(shù)據(jù)集的時間和人力成本。遠(yuǎn)程監(jiān)督方法并不對單個句子進(jìn)行標(biāo)注,而是先從結(jié)構(gòu)化的數(shù)據(jù)(如freebase)中得到實體與關(guān)系的三元組(e1,e2,r),然后再把實體與自由文本對齊,把包含同一個實體對的句子組成一個數(shù)據(jù)包,并給這個數(shù)據(jù)包標(biāo)記關(guān)系r,基于遠(yuǎn)程監(jiān)督方法設(shè)計的模型目標(biāo)就是從實例包中抽取關(guān)系r。然而遠(yuǎn)程監(jiān)督也引入了大量錯誤標(biāo)簽,為了緩解錯誤標(biāo)簽問題的影響,Riedel等[19],Hoffmann等[20],Surdeanu等[21]把遠(yuǎn)程監(jiān)督問題當(dāng)作多實例多標(biāo)簽學(xué)習(xí)問題。
近年來,神經(jīng)網(wǎng)絡(luò)在眾多領(lǐng)域都有令人矚目的表現(xiàn),并在詞性標(biāo)注[22]、情感分析[23]、機(jī)器翻譯[24]等方面取得了較好的效果。任智慧等[25]使用長短時記憶網(wǎng)絡(luò)(LSTM)進(jìn)行中文分詞。孫紫陽等[26]把傳統(tǒng)的句法特征加入詞向量輸入的特征中,帶入神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,使輸入具有結(jié)構(gòu)化的句法信息。肜博輝等[27]使用多種詞向量的預(yù)處理方式構(gòu)建多通道,再帶入神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,豐富了詞向量的表達(dá)方式。Zeng等[4]使用端到端的卷積神經(jīng)網(wǎng)絡(luò)模型,并使用柔性最大值softmax作為分類器。Santos等[28]提出了排序分類(classification by ranking)的方法,減少了關(guān)系分類中人工添加的類(other類)對關(guān)系分類的不利影響。Zeng等[29]提出了分段卷積池化(PCNN)的思想,通過兩個實體的位置把句子分成三段,每段分別進(jìn)行最大池化,避免了使用NLP工具導(dǎo)致的錯誤傳播問題,并且把實體位置信息加入到關(guān)系抽取任務(wù)中,提升分類性能。
注意力機(jī)制的使用使得神經(jīng)網(wǎng)絡(luò)在關(guān)系抽取中有更好的表現(xiàn),注意力通過對實例包中的每一個句子計算一個關(guān)注度,加權(quán)求和得到實例包的深度特征。王紅等[30]通過比較LSTM中輸入與輸出的關(guān)系構(gòu)建注意力機(jī)制,獲取整體特征,再使用詞向量特征與整體特征融合得到分類結(jié)果。Lin等[7]把注意力機(jī)制引入到關(guān)系抽取任務(wù)中,通過對實例包中的每一個句子計算一個關(guān)注度,加權(quán)求和得到實例包的深度特征,充分利用了實例包的所有句子。Ji等[8]加強(qiáng)了實體的作用,在實例級的注意力機(jī)制中引入了實體信息,并用TransE思想表示兩個實體間潛在的關(guān)系信息,即v=e1-e2。Jat等[9]把實體注意力作用于深層特征,用每個實體分別對循環(huán)神經(jīng)網(wǎng)絡(luò)的深度特征做注意力機(jī)制,最后拼接得到深度特征。Jat等對實體短語的利用不充分,文中實驗表明,通過實體短語抽取實體關(guān)系特征有助于提高模型性能。
假設(shè)S={s1,s2,…,sn}是數(shù)據(jù)集中的一個實例包,其中的每一個實例都包含實體對(e1,e2)。r={r1,r2,…,rc}表示兩個實體可能的關(guān)系集合。模型如圖1所示,先用預(yù)訓(xùn)練的詞向量矩陣進(jìn)行嵌入,得到單詞的詞向量表示,接著通過一個卷積層得到短語級的深度特征表示,并在該層引入實體深度特征并添加注意力機(jī)制,最后通過一個最大池化層得到該實例的深度特征。
圖1 引入實體信息的短語級注意力機(jī)制關(guān)系抽取方法模型
詞向量嵌入是目前自然語言處理中比較常用的方法,通過一個隨機(jī)生成或者預(yù)訓(xùn)練的詞向量矩陣把單詞轉(zhuǎn)換成向量。令s表示一個句子,wi表示詞向量,用one-hot編碼,則句子可以表示為s={w1,w2,…,wt}。V∈da×|V|表示詞向量嵌入的編碼矩陣,詞向量嵌入的過程表示如下:
mi=wiV
位置嵌入:Zeng等[4]和Santos等[28]展示了單詞與實體的距離的大小會對關(guān)系有不同的貢獻(xiàn)。對每一個單詞計算與實體(e1,e2)的相對距離,例如在句子“馬云是阿里巴巴的創(chuàng)始人”中,“創(chuàng)始人”與兩個實體“馬云”和“阿里巴巴”的距離為-4和-2。類似詞向量的表示方法,位置信息也可以映射到高維空間中。這里令mi表示wi在詞向量和位置向量嵌入后的向量表示。則mi∈d(d=da+db×2),其中db是位置向量的維度。
卷積神經(jīng)網(wǎng)絡(luò)在訓(xùn)練關(guān)系抽取模型中有不錯的表現(xiàn),相比循環(huán)神經(jīng)網(wǎng)絡(luò)而言,卷積神經(jīng)網(wǎng)絡(luò)更加容易獲取全局特征。能夠?qū)⑷我忾L度的句子壓縮成一個固定的低維向量,同時,卷積神經(jīng)網(wǎng)絡(luò)能更好地并行處理數(shù)據(jù),提高訓(xùn)練速度。同時,合適的卷積窗口能把短語整體映射到高維向量空間中,因此,卷積后的向量體現(xiàn)了短語的整體信息。
定義卷積矩陣W∈dc×(l×d),其中dc是詞向量嵌入后句子的長度,l是卷積窗口大小,令qi∈l×d表示句子的第i個卷積窗口:
qi=wi-l+1:i(1≤i≤m+l-1)
由于卷積窗口滑動到邊緣時,窗口邊緣會超出句子的范圍,因此使用一個特定的向量填充超出的部分。因此,每一個卷積核的卷積過程表示如下:pi=[Wqi+b]i。其中b是偏置向量。
經(jīng)過卷積層卷積以后,詞向量被映射到更高維的向量空間,并且每一個向量pi都包含了從第i-l+1到第i個詞的信息。顯然,只要選擇合適的卷積窗口,體現(xiàn)關(guān)系的關(guān)鍵短語的信息一定在某個pj中。因此,可以針對p={p1,p2,…,pt}使用注意力機(jī)制,對每一個pi分配權(quán)重,并希望反映關(guān)系的關(guān)鍵向量pr有最高的權(quán)重,減少非重點信息的干擾,從而提高模型性能。
近年來,許多知識圖譜的處理中都用到了TransE的思想[31-33],即把關(guān)系信息當(dāng)作頭實體到尾實體的轉(zhuǎn)義,即e1+r≈e2,并且取得了比較好的效果。Ji等[8]認(rèn)為向量vrelation=e1-e2包含了關(guān)系r的特征。如果一個實例體現(xiàn)了某一個關(guān)系r,那么該實例的特征向量將會與vrelation有較高的相似度。
文中從更細(xì)的粒度分析關(guān)系信息。若某實例體現(xiàn)關(guān)系r,那么短語級的特征pr將會與vrelation有較多的相似信息。另一方面,在多數(shù)情況下,每個實體并不是單獨的一個單詞,大部分的人名,機(jī)構(gòu),學(xué)校等實體信息會由多個單詞表示??紤]如下的實體對:(“Zoran Abadi”,“University of Belgrade,main campus”),其中每個實體都是詞組,若直接使用實體位置信息抽取實體,則只會提取到第一個單詞。使用2.2節(jié)的卷積神經(jīng)網(wǎng)絡(luò)提取實體信息,并接一個最大池化層得到實體的深度信息表示,記為(xe1,xe2)。
圖2展示了注意力機(jī)制方法。
圖2 注意力機(jī)制方法
令vr=xe1-xe2,設(shè)計的注意力機(jī)制如下:
ui=wT(tanh(A[pi;vr]))+b
其中,wT∈1×(2k)和A∈2k是參數(shù)矩陣,A是一個對角矩陣,k是卷積核個數(shù)。注意力機(jī)制對每一個pi求得權(quán)重αi,得到加權(quán)的向量表示:
ci=αipi
加入池化操作對卷積進(jìn)行池化,抽取實例的深度特征。與傳統(tǒng)的最大池化不同,Zeng等[29]通過兩個實體的位置把句子分成三段,對每一段分別做最大池化操作,可以得到比單一池化更好的性能。該過程可以表示如下:兩個實體把ci分成三段,得到ci=(ci1,ci2,ci3),對每一個部分做最大池化:
xij=max(cij)
最后得到實例s的深度特征為:
為了得到模型對每個分類的預(yù)測,通過一個線性層和softmax計算各個類別的置信度,如下所示:
o=Wsx+bs
其中,Ws是參數(shù)矩陣,bs是偏置向量,最后計算每個類的置信度:
在關(guān)系抽取中引入標(biāo)簽平滑正則化(label smoothing regularization,LSR)方法,LSR是由Szegedy等[34]提出的,通過平滑標(biāo)簽中不同類別的概率,把原來有很強(qiáng)置信度的one-hot標(biāo)簽變成一個在每個類都有一定置信度的平滑標(biāo)簽。對遠(yuǎn)程監(jiān)督數(shù)據(jù)集而言,大量噪聲數(shù)據(jù)的存在導(dǎo)致了模型性能表現(xiàn)不夠理想,每一個實例包中的實例只是“可能”體現(xiàn)實體反映的關(guān)系信息。引入LSR可以把這個“可能性”加入到標(biāo)簽中,更符合實際情況。對所有標(biāo)簽進(jìn)行統(tǒng)計,得到一個分布μ(r),這是一個與標(biāo)簽無關(guān)的分布,把這個分布添加到one-hot標(biāo)簽中,得到如下新的軟標(biāo)簽:
p'(ri|x)=(1-ε)p(ri|x)+εμ(ri)
其中,ε是表示標(biāo)簽“硬度”的置信度。ε越小,標(biāo)簽越“硬”,得到的新標(biāo)簽越接近原來的one-hot標(biāo)簽。反之,ε越大,則標(biāo)簽的原有特征越弱,各個標(biāo)簽的區(qū)分度也越來越不明顯。
由于模型預(yù)測的標(biāo)簽p(r|θ,s)與標(biāo)注的標(biāo)簽p'(r|x)都是軟標(biāo)簽,因此使用相對熵(即KL散度)評估兩個標(biāo)簽之間的差異。在信息論中,相對熵表示當(dāng)用概率分布p擬合真實分布時所產(chǎn)生的信息損耗:
J(θ)=∑iD(p'(si)‖p(si,θ))
其中,θ表示模型的所有參數(shù),si表示每一個實例包。希望找到合適的θ,使模型生成的分布與真實分布的平均距離最小。
在實驗中,使用dropout[35]策略減少模型過擬合,并采用Adam算法優(yōu)化目標(biāo)函數(shù)。
GIDS(Google-IISc distant supervision)是由Jat等[9]在2017年神經(jīng)信息處理系統(tǒng)大會(NIPS)自動化知識庫建設(shè)研討會(AKBC)上發(fā)布的數(shù)據(jù)集,通過谷歌關(guān)系抽取語料庫作為種子數(shù)據(jù)生成的數(shù)據(jù)集。由于目前許多遠(yuǎn)程監(jiān)督數(shù)據(jù)集存在大量錯誤標(biāo)簽問題[18-19],即不一定滿足假設(shè):“在一個實例包中至少有一個實例反映實體對的真實關(guān)系”,導(dǎo)致模型訓(xùn)練結(jié)果不理想。GIDS在構(gòu)造數(shù)據(jù)集時,確保了在一個實例包中,至少有一個實例真正反映了實體的關(guān)系。GIDS數(shù)據(jù)集詳細(xì)信息如表1和表2所示,包含了訓(xùn)練集、測試集和開發(fā)集。共有5個二元關(guān)系,其中包含一個人工構(gòu)建的other類(NA)。
表1 GIDS數(shù)據(jù)集基本信息統(tǒng)計
表2 GIDS數(shù)據(jù)集關(guān)系信息統(tǒng)計
用Zeng等[29]出的分段卷積神經(jīng)網(wǎng)絡(luò)模型(PCNN)和Jat等[9]提出的集成學(xué)習(xí)模型作為比較的基準(zhǔn)算法。
分段卷積神經(jīng)網(wǎng)絡(luò):PCNN算法是關(guān)系分類中比較常用的方法,比通常的MIML-RE基線算法有更好的性能。PCNN是Zeng等[29]針對實體關(guān)系抽取任務(wù)提出的算法。在關(guān)系抽取任務(wù)中,句子中單詞和實體的相對位置不同可能導(dǎo)致結(jié)果的不同,而且實體兩邊的單詞和實體之間的單詞對分類結(jié)果的貢獻(xiàn)也不相同,因此PCNN方法比CNN有更好的表現(xiàn)。
Jat等[9]提出的集成學(xué)習(xí)模型是由詞語級注意力機(jī)制模型(BGWA)和添加實體的注意力機(jī)制模型(EA)集成得到,是目前GIDS數(shù)據(jù)集上取得最好性能的算法。BGWA模型首先通過雙向循環(huán)神經(jīng)網(wǎng)絡(luò)把句子映射到一個更高維空間中,然后對每個詞添加自注意力機(jī)制,最后通過分片最大池化層提取實例的深度特征。EA模型仍然使用雙向卷積神經(jīng)網(wǎng)絡(luò)獲得單詞的高階表示,引入了兩個實體的信息,并用兩個實體分別與循環(huán)神經(jīng)網(wǎng)絡(luò)生成的結(jié)果連接做注意力機(jī)制,再經(jīng)過分片最大池化層得到深度特征。集成的方法則把WA,EA,PCNN三個模型的結(jié)果集成起來,通過加權(quán)投票的方法計算結(jié)果。
為了保證模型的一致性和評估的準(zhǔn)確性,文中模型參數(shù)與基準(zhǔn)算法模型參數(shù)相同。使用Word2Vec作為詞向量嵌入,用dw=50維的向量把單詞轉(zhuǎn)換成詞向量。用一個dp=5維的隨機(jī)初始化向量把位置信息轉(zhuǎn)化成向量,卷積層使用lk=230個卷積核,每個卷積核窗口大小為l=3,池化層根據(jù)兩個實體的位置采用分段取最大值。
使用Adam作為優(yōu)化算法,權(quán)值衰減(L2正則化)設(shè)置為w=0.000 2,學(xué)習(xí)率為lr=0.001。與隨機(jī)梯度下降不同,Adam算法通過計算梯度的一階矩估計和二階矩估計改變學(xué)習(xí)率,能更快收斂,也適用于解決高噪聲和稀疏梯度的問題。文中模型每一批的數(shù)據(jù)量為50個包,訓(xùn)練輪數(shù)為20輪,Dropout參數(shù)為0.5,開發(fā)平臺使用python3.6+torch0.4,使用英偉達(dá)Tesla P4顯卡進(jìn)行訓(xùn)練。
采用準(zhǔn)確率-召回率曲線(P-R曲線)評估模型的性能。圖3是文中模型在添加TransE方法前后的比較,作為對比的“Ensemble”算法來自Jat等[9]發(fā)布的數(shù)據(jù)。可以看出,只有注意力機(jī)制的算法(ATT)和添加TransE方法的注意力機(jī)制算法(ATT+TransE)都要優(yōu)于“Ensemble”算法。而添加了TransE方法的注意力機(jī)制算法比單獨使用注意力機(jī)制的算法性能上提高了1%。
圖4是文中模型性能與Jat等[9]和Zeng等[29]的模型性能比較的結(jié)果。其中作為對比的PCNN,EA,WA,Ensemble模型的準(zhǔn)確率-召回率曲線(P-R曲線)數(shù)據(jù)均來自公開發(fā)表的文章。從圖中可以看出,PCNN算法與EA算法有相近的性能,都要優(yōu)于BGWA算法,集成了PCNN,EA,BGWA的Ensemble算法優(yōu)于上述三種算法。該模型在總體性能上超過了上述幾種方法,平均準(zhǔn)確率(曲線下的面積)達(dá)到0.9。這表明對實體信息的充分利用以及結(jié)合短語級的注意力機(jī)制能顯著提高算法性能。短語級的注意力機(jī)制能夠有效捕捉關(guān)鍵短語的特征,同時使用卷積神經(jīng)網(wǎng)絡(luò)提取實體短語的深度特征也有助于注意力機(jī)制定位關(guān)鍵短語。
圖3 添加TransE方法的注意力機(jī)制和只添加注意力機(jī)制的模型比較
圖4 短語級注意力機(jī)制與其他模型的性能比較
文中提出了引入實體信息的短語級注意力機(jī)制的關(guān)系抽取模型。結(jié)果表明使用短語級的注意力機(jī)制有助于更好地獲取實體關(guān)系信息。同時,對實體短語采用卷積神經(jīng)網(wǎng)絡(luò)獲取深度信息使得實體信息利用得更充分,利用實體短語能更好地表達(dá)TransE模型。標(biāo)簽平滑方法的使用減少了遠(yuǎn)程監(jiān)督數(shù)據(jù)集中錯誤標(biāo)簽帶來的不利影響。