李雅欣 王佳英,2 單 菁,2 邵明陽
(1.沈陽建筑大學(xué)信息與控制工程學(xué)院 沈陽 110168)(2.沈陽工業(yè)大學(xué)軟件學(xué)院 沈陽 110023)
實(shí)體關(guān)系抽取是構(gòu)建知識(shí)圖譜的關(guān)鍵組成部分,已經(jīng)廣泛應(yīng)用于智能問答、檢索等自然語言處理任務(wù)[1]。作為信息抽取技術(shù)的核心任務(wù)之一,其目標(biāo)是從非結(jié)構(gòu)化的文本內(nèi)容中提取語句中兩個(gè)實(shí)體之間產(chǎn)生的語義關(guān)系,即給定一個(gè)純文本,實(shí)體關(guān)系抽取的主要目標(biāo)是找出句子中包含的兩個(gè)實(shí)體及它們之間存在關(guān)系類別。
隨著深度學(xué)習(xí)技術(shù)的飛速發(fā)展,相比于傳統(tǒng)方法,深度學(xué)習(xí)在實(shí)體關(guān)系抽取任務(wù)中取得了更好的綜合效果。而深度練習(xí)方法的局限,就是必須通過大量的標(biāo)注數(shù)據(jù)集來訓(xùn)練模型才能取得更好的訓(xùn)練效果,而數(shù)據(jù)的標(biāo)記非常昂貴且費(fèi)時(shí),所以如何獲取大量的標(biāo)記數(shù)據(jù)集一度成為了國內(nèi)外學(xué)者的研究阻礙[2]。直到Mintz等提出了遠(yuǎn)程監(jiān)督[3],其作用是通過把現(xiàn)有的知識(shí)庫映射到更大量的非結(jié)構(gòu)化數(shù)據(jù)中,其一般流程如圖1所示。
圖1 遠(yuǎn)程監(jiān)督數(shù)據(jù)
由圖1可以看出,遠(yuǎn)程監(jiān)督獲取大規(guī)模標(biāo)注數(shù)據(jù)的方法是利用文檔和知識(shí)庫(KB)對(duì)齊,來提取具有特定關(guān)系的實(shí)體對(duì)。在圖1中“Bill Gates”和“Microsoft”在知識(shí)庫中的關(guān)聯(lián)為“Founder”,那么就假定相似于“Bill Gates,founder of Microsoft?!钡恼Z句都具有“founder關(guān)聯(lián)”。由此就可利用將海量文本與KB對(duì)齊,來得到大量的自動(dòng)標(biāo)注數(shù)據(jù)集。但是并非所有含“Bill Gates”和“Microsoft”的句子都表達(dá)出了兩個(gè)實(shí)體的“Founder”關(guān)系,由此可知,遠(yuǎn)程監(jiān)督是一個(gè)強(qiáng)假設(shè)問題,這種方式雖然避免了繁雜的特征工程,同時(shí)也不可避免地產(chǎn)生大量噪聲數(shù)據(jù),即錯(cuò)誤標(biāo)簽問題,從而降低了關(guān)系抽取的性能。
為了減少遠(yuǎn)程監(jiān)督帶來的錯(cuò)誤標(biāo)簽問題,Zeng等在遠(yuǎn)程監(jiān)督抽取任務(wù)上提出了基于分段卷積的神經(jīng)網(wǎng)絡(luò)模型—PCNN,該模型基于卷積神經(jīng)網(wǎng)絡(luò)—CNN改進(jìn),通過添加實(shí)體對(duì)的位置特征將模型中的句子分割成三段來實(shí)現(xiàn)池化操作,以便更好地捕捉實(shí)體間的語義特征,并提出用多實(shí)例學(xué)習(xí)來選擇最有效的句子,多實(shí)例學(xué)習(xí)將包含同一實(shí)體對(duì)的所有實(shí)例組成一個(gè)包,每個(gè)包對(duì)應(yīng)一個(gè)最有效的實(shí)例[4]。Lin等[5]和Ji等[6]在PCNN的基礎(chǔ)上運(yùn)用注意力機(jī)制(Attention,ATT),通過注意力機(jī)制從每個(gè)包里選擇多個(gè)有效實(shí)例,來緩解遠(yuǎn)程監(jiān)督數(shù)據(jù)集產(chǎn)生的錯(cuò)誤標(biāo)簽問題。Zhou等基于RNN模型進(jìn)行改進(jìn),引入雙向循環(huán)神經(jīng)網(wǎng)絡(luò)—BLSTM模型用作句子編碼器,并添加了詞級(jí)別的注意力機(jī)制來進(jìn)行權(quán)重學(xué)習(xí)[7]。但這些深度學(xué)習(xí)模型都只采用了一層神經(jīng)網(wǎng)絡(luò),即淺層神經(jīng)網(wǎng)絡(luò)作為句子編碼器。Huang等首先提出利用基于CNN的九層深度殘差網(wǎng)絡(luò)模型—ResCNN-9來訓(xùn)練遠(yuǎn)程監(jiān)督關(guān)系抽取任務(wù)[8]。但是對(duì)于9層深的網(wǎng)絡(luò),并非每一層都有用。因?yàn)楦鱾€(gè)通道之間傳遞的信息本就存在不可避免優(yōu)劣勢,故不斷增加網(wǎng)絡(luò)深度一定程度上導(dǎo)致沉余的特征也在不斷疊加,所以這種深層網(wǎng)絡(luò)的性能提升相比于淺層網(wǎng)絡(luò)并不太大。
為證實(shí)合適深度的深層神經(jīng)網(wǎng)絡(luò)在遠(yuǎn)程監(jiān)督關(guān)系抽取任務(wù)上可以得到更好的表現(xiàn),我們提出了一個(gè)融合注意力機(jī)制的密集連接卷積神經(jīng)網(wǎng)絡(luò)—DenseCNN-ATT,進(jìn)行遠(yuǎn)程監(jiān)督關(guān)系抽取任務(wù)。密集連接卷積神經(jīng)網(wǎng)絡(luò)—DenseCNN是一種新型的深層卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)[9],由Huang等首次使用,其在圖像分類任務(wù)中達(dá)到了良好的性能[10]。該網(wǎng)絡(luò)采用建立在各個(gè)層次間的連接關(guān)系,來最大程度地提升網(wǎng)絡(luò)中層與層之間特征傳遞的效果。首先,在DenseCNN網(wǎng)絡(luò)的文本向量表示層采用了word2vec的詞嵌入模型得到詞向量表征[11],作為模型的輸入;為了更好地表示句子的全局特征矩陣,我們將最大池化的結(jié)果融合注意力權(quán)重參數(shù)[12],通過強(qiáng)調(diào)句子權(quán)重,進(jìn)而減少噪聲句子來提高遠(yuǎn)程監(jiān)督關(guān)系抽取的性能。我們通過在NYT-Freebase數(shù)據(jù)集[13],將相關(guān)模型進(jìn)行對(duì)比實(shí)驗(yàn),來驗(yàn)證模型的有效性。本文的主要貢獻(xiàn)有如下三點(diǎn)。
1)提出一種融合注意力池化機(jī)制的5層深度的DenseCNN網(wǎng)絡(luò)的密集連接模塊—DenseCNNATT模型,來提高遠(yuǎn)程監(jiān)督關(guān)系抽取任務(wù)的性能;
2)設(shè)計(jì)了一個(gè)五層的密集連接模塊,利用多個(gè)特征通道來組合不同層次的特征,從而提高了特征傳遞和復(fù)用,并降低了梯度消失現(xiàn)象;
3)為了最大程度地降低遠(yuǎn)程監(jiān)督帶來的噪聲問題,將最大池化的結(jié)果融合注意力權(quán)重參數(shù),通過強(qiáng)調(diào)句子權(quán)重,進(jìn)一步提高關(guān)系抽取的性能。
實(shí)體關(guān)系抽取作為信息文本抽取的重要任務(wù)之一,其目標(biāo)是在實(shí)體的基礎(chǔ)上,從非結(jié)構(gòu)化文本內(nèi)容中抽取出預(yù)先定義的實(shí)體關(guān)系。
實(shí)體的關(guān)系被定義為多個(gè)關(guān)系三元組構(gòu)成的集 合ER={(e1,r1,e2),( e3,r2,e4),…,( e2n-1,rn,e2n)},對(duì)于關(guān)系元組( e1,r1,e2),其中ei∈E{e1,e2,…,e2n}代表實(shí)體,ri∈R{r1,r2,…,rn}代表實(shí)體之間的關(guān)系。
本文研究的問題是實(shí)體關(guān)系抽取,即給定一個(gè)文檔D={s1,s2,…,sn}和一個(gè)實(shí)體集合E,其中si表示的是該文檔中位置i的句子,該實(shí)體抽取的目標(biāo)是返回所有滿足某個(gè)實(shí)體關(guān)系( ei,rj,ek)∈ER的句子,并給出標(biāo)注實(shí)體和關(guān)系在句子中出現(xiàn)的位置。
本節(jié)將具體介紹我們提出的DenseCNN-ATT模型,其網(wǎng)絡(luò)架構(gòu)如圖2所示。為了更好地降低遠(yuǎn)程監(jiān)督帶來的噪聲數(shù)據(jù)影響,我們采用了5層的密集卷積模塊,并融合了注意力池化機(jī)制,來最大程度的提升模型的性能。DenseCNN-ATT的模型架構(gòu)主要包括以下三部分。
圖2 DenseCNN-ATT模型框架圖
1)詞向量表示層,即模型的輸入部分;
2)密集連接卷積層,即句子編碼部分;
3)注意力池化和softmax輸出部分。
在神經(jīng)網(wǎng)絡(luò)模型中,模型的輸入通常需要把單詞標(biāo)記轉(zhuǎn)換成低維向量。在我們的方法中,除了通過查找預(yù)先訓(xùn)練的單詞嵌入,標(biāo)記每個(gè)輸入的單詞,并轉(zhuǎn)換成一維向量,還引入了位置特征來指定實(shí)體對(duì),這些實(shí)體對(duì)通過查找位置嵌入來轉(zhuǎn)換成向量。
3.1.1 單詞嵌入
單詞嵌入是把句子si={ }w1,w2,w3,…,wn中的每一個(gè)單詞映射為低維實(shí)值向量,這個(gè)向量會(huì)包含了這個(gè)詞的所有信息。詞嵌入模型能夠反映出詞匯間的關(guān)聯(lián),進(jìn)而使得后續(xù)的特征提取更為合理[11]。本文把詞向量定義為xw,本文采用word2vec的Skip-gram詞嵌入模型[14]進(jìn)行預(yù)處理,來更高效更準(zhǔn)確地去捕捉單詞的語義和句法信息。
3.1.2 位置嵌入
為了增強(qiáng)關(guān)系抽取的有效性,我們引入了位置向量表示。通過把每個(gè)詞到每個(gè)實(shí)體的相對(duì)距離映射到低緯位置向量,再將所得特征拼接到該詞向量中,來更加準(zhǔn)確地表示句子特征[15]。
定義句子si={w1,w2,w3,…,wn},通過將詞wi到實(shí)體e1和e2的相對(duì)距離映射為低維向量,得出位置向量xp1和xp2,其中xp∈Rdp×l,其中dp表示位置向量的維度,l表示距離大小,將位置向量xp1和xp2拼接到該詞向量中,得到詞wi的詞向量表示:Xi=[ xw,xp1,xp2],其中Xi∈Rd,d=dw+dp×2,dw為詞向量維度。我們把拼接好的詞向量矩陣Xi作為整個(gè)模型的輸入,隨后將被輸入到卷積層。
3.2.1 卷積層
卷積層可以看作是權(quán)重矩陣W和模型的輸入向量X之間的運(yùn)算,以滑動(dòng)窗口形式捕獲局部特征,然后進(jìn)行全局關(guān)系預(yù)測。其中W被視為卷積中的濾波器,我們定義濾波器(滑動(dòng)窗口)的長度為l,輸入的詞向量表示維度為d,xi:j表示為xi到xj拼接向量。通過濾器Wi∈Rl×d可以捕捉到連續(xù)l個(gè)詞的特征,則第i個(gè)連續(xù)l個(gè)詞的向量表示xj-l+1:j通過卷積得到的特征矩陣Ci表示如下:
其中,b∈R表示偏移項(xiàng),f表示非線性函數(shù),其包括采用的歸一化處理函數(shù)BN[16]、ReLU激活函數(shù)[17]。詞向量表示矩陣X在經(jīng)過卷積后,此時(shí)特征向量表示為Ci=[cx1,cx2,cx3,…,cn],其中ci∈Rn。
3.2.2 密集連接網(wǎng)絡(luò)
在關(guān)系抽取任務(wù)中,為更多地使用句子語義數(shù)據(jù)信息捕獲更豐富的語義表達(dá)特征,我們采用密集連接網(wǎng)絡(luò)來實(shí)現(xiàn)特征學(xué)習(xí),其網(wǎng)絡(luò)結(jié)構(gòu)如圖2中“Dense-CNN Block”模塊。從圖3中可以看出,密集連接模塊的輸入為si的句子向量化表示Xi=[x1,x2,…,xn],通過式(1)中的卷積操作可以得出,第一層的特征C0應(yīng)表示為
接著,我們通過密集連接模塊的特征映射,將c0的輸出作為之后所有層的輸入,如圖3所示,當(dāng)?shù)?層卷積的輸入為c0時(shí),輸出的特征c1表示為
圖3 密集連接模塊
最終,我們的密集連接卷積層的輸出表示為
其中,Cout為句子的特征向量表示。
池化的目的是在保持主要特征的同時(shí),減少參數(shù)量和運(yùn)算量。最常見的池化方式主要為兩種:平均池化和最大池化,在通過密集連接卷積神經(jīng)網(wǎng)絡(luò)獲取到特征之后,在本文中對(duì)輸出的特征Cout進(jìn)行最大池化表示:
在遠(yuǎn)程監(jiān)督關(guān)系抽取任務(wù)中,對(duì)于不可避免產(chǎn)生的噪聲數(shù)據(jù),本文采用句子級(jí)注意機(jī)制去強(qiáng)調(diào)噪聲數(shù)據(jù)。通過將網(wǎng)絡(luò)的最大池化結(jié)果融合注意力權(quán)重矩陣得到所有句子的注意力特征向量,從而有效的選擇正確實(shí)例和噪聲句子,進(jìn)一步緩解了句子層面的錯(cuò)誤標(biāo)簽問題。我們將注意力權(quán)重參數(shù)定義為ai:
其中,A是加權(quán)矩陣,ri是與實(shí)體關(guān)系r相關(guān)的查詢向量,νi是查詢函數(shù),目的是對(duì)最大池化后的輸入矩陣xpooled和預(yù)測關(guān)系r的匹配程度進(jìn)行評(píng)分,得到關(guān)系特征矩陣M。
經(jīng)過上一節(jié)我們得到最終的關(guān)系特征矩陣M,通過softmax層[18]來定義輸出關(guān)系上的條件概率p,并使用dropout來防止過擬合[19],表示如下:
其中nr代表關(guān)系總數(shù),o是相對(duì)應(yīng)關(guān)系類型的得分表示,d∈Rnr是偏差向量。我們可以通過交叉熵代價(jià)函數(shù)[20],定義目標(biāo)函數(shù)如下:
在本文中我們采用隨機(jī)梯度下降法來優(yōu)化目標(biāo)函數(shù),其S表示訓(xùn)練樣本的集合,θ為模型中的可訓(xùn)練參數(shù)。
在本節(jié)中,我們主要介紹數(shù)據(jù)集和模型的評(píng)估指標(biāo),接著通過一系列對(duì)比實(shí)驗(yàn)來證明我們模型的有效性,實(shí)驗(yàn)結(jié)果顯示,我們提出的DneseCNNATT是一種有效的語義特征提取方法。本文的實(shí)驗(yàn)環(huán)境為python3.7.0,深度學(xué)習(xí)框架為pytorch 1.6.0版本。
為了驗(yàn)證DneseCNN-ATT模型的效果,我們在被廣泛使用的NYT-Freebase數(shù)據(jù)集上來評(píng)估我們的模型。該數(shù)據(jù)集在2010年被Riedel首次提出,是將Freebase中的關(guān)系和NYT語料庫對(duì)齊得到,是遠(yuǎn)程監(jiān)督關(guān)系抽取任務(wù)中的典型數(shù)據(jù)集之一。其中的訓(xùn)練數(shù)據(jù)為522611個(gè)語句、18252個(gè)關(guān)系事實(shí)、281270個(gè)實(shí)體對(duì);測試數(shù)據(jù)集為172448個(gè)語句、1950個(gè)關(guān)系事實(shí)、96678個(gè)實(shí)體對(duì)。其中,有來自Freebase的39528個(gè)實(shí)體對(duì)、53類關(guān)系,包含52類通用關(guān)系、1類特殊關(guān)系NA,即噪聲數(shù)據(jù)[13]。
本文主要通過準(zhǔn)確率-召回(P-R)曲線和平均準(zhǔn)確率Precision@N(P@N)值等多種指標(biāo)來評(píng)估模型的綜合性能,與對(duì)比模型所采用的模型評(píng)估方式相同。
在本文中,我們使用word2vec的Skip-gram模型,通過在NYT語料庫上訓(xùn)練,獲得需要嵌入的詞向量。設(shè)置輸入的文本填充大小為120,詞向量維度為200?;趯?duì)以往的遠(yuǎn)程監(jiān)督關(guān)系抽取任務(wù)的研究,我們的實(shí)驗(yàn)中所采用的超參數(shù)設(shè)置如表1所示。
表1 參數(shù)設(shè)置表
為了驗(yàn)證DenseCNN-ATT模型在遠(yuǎn)程監(jiān)督關(guān)系抽取上的性能,我們進(jìn)行了以下三組對(duì)比實(shí)驗(yàn)。
4.3.1 注意力對(duì)模型的影響
本文為了提高關(guān)系抽取的效果,提出了融合注意力池化機(jī)制的DenseCNN-ATT模型。為了驗(yàn)證DenseCNN網(wǎng)絡(luò)融合注意力機(jī)制的有效性,本文在各參數(shù)設(shè)置一致的情況下,對(duì)DenseCNN模型和我們的模型進(jìn)行對(duì)比,對(duì)比實(shí)驗(yàn)的P-R曲線如圖4所示。
圖4實(shí)驗(yàn)表明,融合了注意力池化機(jī)制的模型—DenseCNN-ATT,在遠(yuǎn)程監(jiān)督關(guān)系抽取任務(wù)上取得了更好的成績。
圖4 注意力對(duì)模型性能的影響
4.3.2 對(duì)比多個(gè)模型
為了進(jìn)一步證明本文所設(shè)計(jì)的DenseCNNATT模型在關(guān)系抽取任務(wù)中取得了更優(yōu)的效果,本文將DenseCNN-ATT與以下在近幾年取得較好成績的四種基線模型加以比較。
1)PCNN使用了分為三段的池化層來替代最大池化層,來改善模型性能[4]。
2)CNN+ATT在原CNN模型的基礎(chǔ)上,添加注意力機(jī)制來實(shí)現(xiàn)權(quán)重學(xué)習(xí),從而降低遠(yuǎn)程監(jiān)督產(chǎn)生的噪聲問題[5]。
3)PCNN+ATT是在PCNN的基礎(chǔ)上引入用句子級(jí)注意力機(jī)制來進(jìn)一步進(jìn)行權(quán)重學(xué)習(xí)[5]。
4)ResCNN-9采用了深層的殘差網(wǎng)絡(luò)作為句子編碼器[8]。
本文在保持常規(guī)參數(shù)一致的情況下,減少實(shí)驗(yàn)變量帶來的誤差,從而獲得更加精確的結(jié)果。各模型的P-R曲線如圖5所示。實(shí)驗(yàn)結(jié)果根據(jù)P-R曲線可以得到:我們的模型在整個(gè)召回率范圍內(nèi),性能均高于目前的主流模型。這表明我們提出的DenseCNN-ATT網(wǎng)絡(luò)是一種更強(qiáng)大的句子編碼器,能更好地降低噪聲句子帶來的影響,更有效地提高遠(yuǎn)程監(jiān)督關(guān)系抽取任務(wù)的性能。
圖5 對(duì)比模型P-R曲線圖
4.3.3 對(duì)比連接層數(shù)
為了驗(yàn)證網(wǎng)絡(luò)的連接層數(shù),即模型深度對(duì)實(shí)驗(yàn)結(jié)果的影響,在各參數(shù)設(shè)置一致的情況下,改變我們模型的深度,即卷積層數(shù),記為x,來對(duì)比不同深度下的DenseCNN-ATT模型對(duì)實(shí)驗(yàn)結(jié)果產(chǎn)生的影響。
圖6是在不同卷積深度下的Dense模型對(duì)應(yīng)的P-R曲線圖,我們從下圖中可以發(fā)現(xiàn),隨著密集連接網(wǎng)絡(luò)深度的提高,關(guān)系分類的準(zhǔn)確度也發(fā)生了小幅度提升高,當(dāng)卷積層數(shù)深至6層和7層時(shí),其網(wǎng)絡(luò)性能逐步達(dá)到飽和狀態(tài)。
圖6 對(duì)比深度P-R曲線圖
所以我們可以得出,深度密集連接網(wǎng)絡(luò)比傳統(tǒng)的淺層網(wǎng)絡(luò)有效,但是不斷增加更深的深度卻并不能為我們的模型帶來很好的性能。另外,模型的深度的越深,其復(fù)雜度也會(huì)越高,消耗更多的GPU顯存,耗費(fèi)大量的訓(xùn)練時(shí)間。
綜上可以看出,我們提出的卷積深度為5層的DenseCNN-ATT模型,在效率和復(fù)雜性適當(dāng)?shù)那闆r下,都可達(dá)到較好的性能。
此外,我們的模型和其對(duì)比模型的平均準(zhǔn)確率(P@N)數(shù)據(jù)如表2所示,在表中可以看出,我們的模型—DenseCNN-ATT在各方面均顯著高于其他模型。另外,對(duì)比于模型效果較好的九層的深度殘差網(wǎng)絡(luò)ResCNN-9,我們的模型只采用了5層深度,就實(shí)現(xiàn)了更好的效果,并且在控制參數(shù)和計(jì)算成本更少的情況下,實(shí)現(xiàn)了遠(yuǎn)超深度殘差網(wǎng)絡(luò)的性能。
表2 平均準(zhǔn)確表
我們的模型通過五層的密集連接網(wǎng)絡(luò),首先使用多特征通道來合并特征,然后實(shí)現(xiàn)特征復(fù)用,從而提高了對(duì)語義的表征能力;其次,融入注意力池化機(jī)制,更高效地過濾噪聲數(shù)據(jù),使關(guān)系抽取在遠(yuǎn)程監(jiān)督的任務(wù)上取得了顯著效果?;谝陨辖Y(jié)果,可以得出結(jié)論:我們提出的DenseCNN-ATT模型在綜合表現(xiàn)上都優(yōu)于當(dāng)下效果較好的基線模型。
本文提出了一種新的用于遠(yuǎn)程監(jiān)督關(guān)系抽取的DenseCNN-ATT關(guān)系抽取模型。該模型采用5層深度的DenseCNN作為句子編碼器,通過多個(gè)特征通道加強(qiáng)特征傳遞,之后融合了選擇性注意力機(jī)制來減弱噪聲數(shù)據(jù)產(chǎn)生的影響。實(shí)驗(yàn)證明,該模型能夠充分利用有效的實(shí)例關(guān)系,在綜合性能上明顯優(yōu)于目前主流的基線模型。
本文在未來的工作中,將在基于密集連接卷積的句子編碼器上探索有效的頭尾分離卷積和池化改進(jìn),從而更進(jìn)一步地提升關(guān)系抽取任務(wù)的性能。