厲曉妍, 張德平
(南京航空航天大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院, 南京 211106)
關(guān)系抽取的任務(wù)是預(yù)測給定非結(jié)構(gòu)化文本序列中一個(gè)實(shí)體對(duì)之間的關(guān)系, 預(yù)測的結(jié)果通常以三元組的形式呈現(xiàn). 關(guān)系抽取作為知識(shí)圖譜、智能問答、推薦系統(tǒng)等上層應(yīng)用的基礎(chǔ)支撐, 是一項(xiàng)重要的自然語言處理任務(wù). 隨著互聯(lián)網(wǎng)高速發(fā)展, 非結(jié)構(gòu)化文本激增,如何使用關(guān)系抽取技術(shù)準(zhǔn)確抽取結(jié)構(gòu)化知識(shí)成為現(xiàn)階段的研究熱點(diǎn)和難點(diǎn).
目前主流的方法大多是基于監(jiān)督學(xué)習(xí)的, 即給出預(yù)定義的關(guān)系集合, 將關(guān)系抽取轉(zhuǎn)換為關(guān)系分類任務(wù).這些方法通常以LSTM[1]、CNN[2]、GCN[3]等網(wǎng)絡(luò)為基礎(chǔ)編碼器, 融合多種特征后進(jìn)行關(guān)系分類. Xu 等人[4]提出基于LSTM 的融合句法依存分析樹的最短路徑(SDP)以及詞向量特征、詞性特征、WordNet 特征和句法類型特征進(jìn)行關(guān)系抽取相關(guān)工作, 并取得了不錯(cuò)的效果, 但是過多地依賴一些已有的自然語言處理工具包, 可能出現(xiàn)錯(cuò)誤的積累傳播; 于是Zeng 等人[5]提出使用CNN 進(jìn)行關(guān)系抽取, 利用卷積深度神經(jīng)網(wǎng)絡(luò)(CDNN)來提取詞匯和句子層次的特征, 將所有的單詞標(biāo)記作為輸入, 而無須復(fù)雜的預(yù)處理, 解決了從預(yù)處理系統(tǒng)中提取特征可能會(huì)導(dǎo)致錯(cuò)誤傳播并阻礙系統(tǒng)性能問題. 但CNN 不擅長抽取全局特征, 因此為了彌補(bǔ)CNN 在這方面的缺陷; 亢曉勉等人[6]在文檔級(jí)神經(jīng)翻譯任務(wù)中設(shè)計(jì)了5 種位置編碼對(duì)篇章結(jié)構(gòu)編碼以組織全局特征, 提升翻譯質(zhì)量, 這5 種編碼分別是絕對(duì)位置編碼、相對(duì)位置編碼、絕對(duì)深度編碼、相對(duì)深度編碼和路徑位置編碼. 同樣的思想在Transformer 系列的模型中有所體現(xiàn), 如Vaswani 等人[7]在Transformer 模型中提出使用正余弦變換表示單詞的絕對(duì)位置以彌補(bǔ)自注意力機(jī)制中順序丟失的問題. 雖然絕對(duì)位置能反映單詞的位置, 但是不能反映單詞與單詞的內(nèi)在位置關(guān)系, 因此Dai 等人[8]在Transformer-XL 中提出了相對(duì)位置編碼, 將單詞之間的距離差作為詞向量, 不僅標(biāo)記位置而且反映單詞之間的遠(yuǎn)近. 此外, Zhu 等人[9]在圖神經(jīng)網(wǎng)絡(luò)中提出另一種位置標(biāo)記, 將主體和客體標(biāo)記為0 和1, 其余標(biāo)記為2, 目的是突出實(shí)體的位置, 但沒有突出實(shí)體和其他單詞的位置關(guān)系. 上述方法的位置編碼大部分只關(guān)注了絕對(duì)位置或相對(duì)位置中的一種,卻忽略了關(guān)系抽取任務(wù)的特殊性.
另一方面注意力機(jī)制作為捕捉重點(diǎn)信息的手段被引入關(guān)系抽取任務(wù)中, 其實(shí)現(xiàn)方法是將單詞之間的相似度分?jǐn)?shù)作為權(quán)重與詞向量相乘. 后來的學(xué)者在此基礎(chǔ)上開展了相關(guān)工作, Transformer[7]系列的預(yù)訓(xùn)練語言模型如BERT[10]、GPT3[11]、RoBERTa[12]等在自然語言處理任務(wù)中表現(xiàn)優(yōu)異, 其內(nèi)部的多頭注意力機(jī)制可以捕獲豐富的上下文關(guān)系. 在上述預(yù)訓(xùn)練語言模型中, BERT 的應(yīng)用最為廣泛, 如Eberts 等人[13]使用BERT 生成詞向?qū)ξ谋具M(jìn)行片段劃分, 然后再去判斷每個(gè)片段所屬的實(shí)體類型; 同時(shí)Rajpurkar 等人[14]還將BERT 應(yīng)用于SQuAD 問答任務(wù)中, 其目的是找到答案片段的開始和結(jié)束位置. 與上述方法類似, 本工作中也使用BERT 生成詞向量.
單詞建模后通常要進(jìn)行關(guān)系向量的構(gòu)造, 現(xiàn)有的構(gòu)造方法大多是基于三段式池化拼接方法來展開的.起初, Zeng 等人[15]在PCNN 中提出以實(shí)體為分界點(diǎn),將句子分成3 段, 分別進(jìn)行最大池化后拼接形成關(guān)系向量; 后來, Guo 等人[16]提出在利用Mask 機(jī)制將主體、客體和句子向量剝離后池化拼接; 而Zhu 等人[9]在GP_GCN 模型中構(gòu)造關(guān)系向量時(shí), 直接將三者池化拼接得到關(guān)系向量, 句子向量沒有剝離主體和客體向量. Lee 等人[17]提出使用注意力機(jī)制生成關(guān)系向量, 這些方法雖然從不同角度考慮了句子向量的組成部分,但都忽略了實(shí)體之間的交互信息, 導(dǎo)致分類器的表現(xiàn)一般.
針對(duì)上述兩個(gè)問題, 本文提出了新的解決方法BPI-BERT (method based on position encoding and entity interaction with BERT pretrained model), 其內(nèi)容和貢獻(xiàn)如下:
(1)對(duì)于位置編碼沒有針對(duì)性的問題, 提出了一種新的位置編碼策略, 從多種角度考慮位置信息, 使得模型在不過多依賴外來工具包的情況下, 依然可以捕捉局部及全局的信息, 避免了引入外來工具導(dǎo)致的誤差累積傳播;
(2)對(duì)于關(guān)系向量缺乏實(shí)體交互信息的問題, 提出了一種實(shí)體交互策略, 使用哈達(dá)瑪乘積構(gòu)造主客體之間的交互信息以增強(qiáng)關(guān)系向量, 有益于分類器進(jìn)行關(guān)系選擇;
(3)實(shí)驗(yàn)表明, BPI-BERT 在SemEval-2010 Task 8數(shù)據(jù)集上的精準(zhǔn)率和F1 均有提高, 證明了本文所提方法是有效的.
給定一個(gè)包含一對(duì)實(shí)體(e1,e2) 的句子T, 其中T=[CLS,T1,···,Ti,···,Tn], 模型的任務(wù)是對(duì)給定句子中的一對(duì)實(shí)體進(jìn)行關(guān)系分類, 預(yù)測結(jié)果為關(guān)系r∈R, 其中R是預(yù)定義的關(guān)系集合. 圖1 是BPI-BERT 的模型結(jié)構(gòu)圖, 模型共分為3 個(gè)模塊, 分別是BERT 編碼器、位置編碼器和關(guān)系分類器.
圖1 BPI-BERT 模型概覽圖
如上圖所示, BERT 編碼器將輸入的單詞序列轉(zhuǎn)換為詞向量; 位置編碼器根據(jù)實(shí)體標(biāo)記得到實(shí)體的位置后對(duì)每個(gè)單詞進(jìn)行位置編碼, 隨后將二者拼接后得到最終的詞向量; 關(guān)系分類器首先根據(jù)實(shí)體在句子中的位置分別提取詞向量中的主體向量、客體向量及句子向量后再使用平均池化處理成同樣尺寸的向量, 對(duì)主客體進(jìn)行哈達(dá)瑪乘積得到實(shí)體交互向量, 最后將四個(gè)向量拼接輸入到Softmax 函數(shù)中進(jìn)行關(guān)系分類.
本文所提位置編碼記錄了單詞的絕對(duì)位置, 單詞與實(shí)體之間的相對(duì)距離, 實(shí)體之間的相對(duì)距離. 這種記錄方法能夠清晰地記錄實(shí)體、單詞的位置, 相對(duì)關(guān)系.其具體步驟如下:
pi中第1 個(gè)維度表示當(dāng)前單詞在句子中的位置,第2 個(gè)維度表示當(dāng)前單詞和實(shí)體1 的相對(duì)位置, 第3 個(gè)維度表示當(dāng)前單詞和實(shí)體2 的相對(duì)位置, 第4 個(gè)維度表示主體和客體的相對(duì)位置. 為了避免句子長度對(duì)位置編碼的影響, 除以句子長度l的目的是消除句子長度對(duì)位置編碼的影響, 起到歸一化的作用. 本文所提位置編碼不僅記錄了單詞位置, 突出了單詞與實(shí)體之間的相對(duì)位置, 實(shí)體之間的相對(duì)位置, 還記錄了單詞在句中的位置, 使得模型可以捕捉句子間的內(nèi)在關(guān)系, 起到數(shù)據(jù)增強(qiáng)的作用. 圖2 是位置編碼的一個(gè)實(shí)例.
如圖2 所示, 給定的句子是“俗話說得好, 失敗是成功的一部分”, 其中, “失敗”和“成功”是標(biāo)記的兩個(gè)實(shí)體,“部分”是關(guān)系, 那么對(duì)于“好”字的位置編碼是[5/14,?1/14, ?4/14, 2/14]. 為了使位置編碼更有表現(xiàn)能力, 本方法使用前饋神經(jīng)網(wǎng)絡(luò)對(duì)初始位置編碼進(jìn)行了變換.
圖2 位置編碼實(shí)例
BERT 自身的多頭注意力機(jī)制可以捕獲豐富上下文信息, 因此本工作使用BERT 生成詞向量, 供后續(xù)分類任務(wù)使用. 另外BERT 內(nèi)部已經(jīng)實(shí)現(xiàn)自注意力機(jī)制,所以本方法沒有再添加其他注意力的計(jì)算, 以減少模型的參數(shù)量和訓(xùn)練時(shí)間. BPI-BERT 詞向量生成方法與Wu 等人[18]類似, 都是將實(shí)體標(biāo)記字符轉(zhuǎn)換為特殊字符后與句子中的其他單詞共同輸入到BERT 中進(jìn)行編碼. BERT 中的自注意力機(jī)制過程如圖3 所示.
圖3 注意力機(jī)制
將句子序列T=[CLS,T1,···,Ti,···,Tn]輸入到BERT中, 輸出為H:
H是序列的詞向量表示, 計(jì)算公式如下.
式(1)是單頭注意力的計(jì)算公式, 式(2)中的MultiHead是BERT 多頭函數(shù), 是多個(gè)單頭注意力拼接的結(jié)果, 目的是利用多頭注意力挖掘詞向量在不同空間維度上的含義, 從而獲得帶有豐富上下文語義的詞向量. 將BERT生成的詞向量和第2.1 節(jié)得出的位置向量進(jìn)行拼接, 得到最終的詞向量表示:
其中, “;”表示拼接操作.
傳統(tǒng)關(guān)系向量的構(gòu)造方法將主體向量、客體向量和句子向量池化后拼接后進(jìn)行關(guān)系分類. 向量拼接的方法雖然保證信息的全面性但忽略實(shí)體之間的交互,因此本文提出利用哈達(dá)瑪乘積獲得實(shí)體交互向量.
哈達(dá)瑪乘積是向量對(duì)位相乘的一種計(jì)算方法, 在此處可以看作是一種特征交叉的手段, 用于學(xué)習(xí)實(shí)體之間高級(jí)且復(fù)雜的特征. 這種交叉特征不僅保留了原有的特征維度, 減少了信息損失, 而且在實(shí)際編碼過程中也易于操作和實(shí)現(xiàn).
關(guān)系向量的構(gòu)造流程如圖4 所示.
圖4 關(guān)系向量的構(gòu)造
如圖4 所示, 關(guān)系向量主要由4 個(gè)部分組成, 分別是主體向量、客體向量、句子向量(不包含主體和客體向量)及主客體的交互向量. 主體和客體可能由多個(gè)單詞或字組成, 所以使用平均池化來獲得相同尺寸的向量, 句子向量也是如此; 交互向量是將池化后的實(shí)體向量進(jìn)行哈達(dá)瑪乘積操作; 最后將4 種向量以上圖的順序進(jìn)行拼接, 得到關(guān)系向量.
式(4)和式(5)中的start 和 end 分別代表實(shí)體的開始和結(jié)束位置;avgpooling是平均池化函數(shù), 使用avgpooling的目的是保留句子和實(shí)體的整體特征, 若使用最大池化可能會(huì)有信息丟失的問題. 最后將處理后的結(jié)果使用單層神經(jīng)網(wǎng)絡(luò)FFNN和Softmax函數(shù)進(jìn)行關(guān)系分類.
本工作中的損失函數(shù)為交叉熵?fù)p失函數(shù). 另外為了防止過擬合現(xiàn)象的出現(xiàn), 在模型的全連接層及BERT注意力模塊中均會(huì)加入dropout.
本任務(wù)使用的SemEval-2010 Task 8 數(shù)據(jù)集, 共包含10717 例子(其中8000 條用于訓(xùn)練, 2717 條用于測試), 關(guān)系類別的數(shù)量是19, 其中9 種關(guān)系類型是有向的, 1 種關(guān)系類型是不屬于9 種有向關(guān)系的其他關(guān)系類型. 這9 種有向的關(guān)系類型分別是Cause-Effect,Component-Whole, Content-Container, Entity-Destination, Entity-Origin, Instrument-Agency, Member-Collection, Message-Topic 和Product-Producer, 其他關(guān)系類型是Others.
本方法針對(duì)的是基于監(jiān)督學(xué)習(xí)的關(guān)系分類任務(wù),首先對(duì)于模型抽取結(jié)果可以分成以下4 種:TP(true positive), 指的是樣本是正例且被預(yù)測為正例;FP(false positive), 指的是樣本是負(fù)例但被預(yù)測為正例;FN(false negative)指的是樣本是正例但被預(yù)測為負(fù)例;TN(true negative), 指的是樣本是負(fù)例且被預(yù)測為正例. 針對(duì)分類問題本文使用精準(zhǔn)率Precision 和F1 作為評(píng)價(jià)指標(biāo).以下是其計(jì)算公式:
精準(zhǔn)率P是從查準(zhǔn)率的角度評(píng)估結(jié)果, 指的是預(yù)測為正例正確的數(shù)量占原本正例數(shù)量的比例; 召回率是從查全率的角度評(píng)估結(jié)果, 指的是預(yù)測為正例正確的數(shù)量占所有預(yù)測為正例數(shù)量的比例; 分類優(yōu)化的目標(biāo)是將Precision 和Recall 都盡可能地提高, 但有些極端的情況下二者不一定能正確地衡量關(guān)系分類的性能,二者會(huì)相互影響相互制約, 一般來說, 精準(zhǔn)率高時(shí)召回率會(huì)低, 召回率高時(shí)精準(zhǔn)率會(huì)低, 因此使用F1-Measure將二者綜合考慮, 作為主要的評(píng)價(jià)指標(biāo)
本文使用Uncased_L-12_H-768_A-12 版本的BERT 預(yù)訓(xùn)練語言模型, 層數(shù)是12, 詞向量的維度是768, 模型中的其他參數(shù)設(shè)置如表1 所示.
表1 模型參數(shù)
為了驗(yàn)證本文所提方法的有效性, 將本文所提的BPI-BERT 與在SemEval-2010 Task 8 數(shù)據(jù)集的其他方法如CRCNN[19]、TRE[20]、Entity Attention Bi-LSTM[17]及Att-Pooling-CNN[21]在同一實(shí)驗(yàn)環(huán)境下進(jìn)行了對(duì)比,表2 給出了本文所提方法和上述方法在測試集上的評(píng)測結(jié)果, 表3 給出本方法消融實(shí)驗(yàn)的結(jié)果, 表4 給出了本文所提方法在所有關(guān)系類型上的P、R、F1 的評(píng)價(jià)結(jié)果.
表2 各個(gè)模型的對(duì)比結(jié)果
表3 3 種模型配置的結(jié)果
CRCNN 模型是以CNN 作為特征抽取器, 加入相對(duì)位置編碼, 池化單詞向量后進(jìn)行關(guān)系分類, 并使用新的成對(duì)排序損失函數(shù)進(jìn)行關(guān)系分類; TRE 是以Transformer 為編碼器, 通過無監(jiān)督的預(yù)訓(xùn)練學(xué)得句子的隱含語義特征; Entity Attention Bi-LSTM 以Bi-LSTM 為編碼器, 利用注意力機(jī)制構(gòu)造關(guān)系向量, Att-Pooling-CNN 在構(gòu)造關(guān)系向量時(shí)與Attention Bi-LSTM 類似, 但使用的編碼器是CNN. 本方法主要是在編碼器的選擇、位置編碼方式、實(shí)體交互信息層面與這些方法進(jìn)行對(duì)比. 上述方法均在同一實(shí)驗(yàn)環(huán)境下運(yùn)行, 會(huì)有個(gè)別實(shí)驗(yàn)結(jié)果與原論文不一致的情況出現(xiàn), 與其他方法的實(shí)驗(yàn)對(duì)比結(jié)果如表2 所示.
由表2 數(shù)據(jù)可知, 本文所提的BPI-BERT 模型在精準(zhǔn)率上達(dá)到84.87%,F1 得分達(dá)到88.54%, 較先前的最優(yōu)結(jié)果在F1 得分上提升了0.5%. 由實(shí)驗(yàn)結(jié)果可知,BERT 的精準(zhǔn)率和F1 上比CNN 和LSTM 高出許多,表現(xiàn)優(yōu)異, 相較于CNN 和RNN 等網(wǎng)絡(luò)結(jié)構(gòu)捕獲了更加豐富的下文信息.
為了探索實(shí)體交互信息和位置信息對(duì)實(shí)驗(yàn)結(jié)果的影響, 本文在原有BERT 模型的基礎(chǔ)上加入了不同配置以驗(yàn)證本文所提方法的有效性. 下表是不同配置的實(shí)驗(yàn)結(jié)果.
本方法的baseline 配置是未加入位置編碼和實(shí)體交互信息, 只使用BERT 進(jìn)行編碼. 另外本文還提供了3 種配置: 一是加入位置編碼, 二是加入實(shí)體交互向量,三是在加入位置編碼的基礎(chǔ)上增加實(shí)體交互向量. 從實(shí)驗(yàn)結(jié)果上來看, 加入位置編碼的配置比baseline 在F1 上提升了近0.3%, 提高的原因是位置編碼中蘊(yùn)含了單詞與實(shí)體的內(nèi)在聯(lián)系, 突出了實(shí)體信息, 幫助模型定位實(shí)體的位置以及捕捉與實(shí)體相關(guān)的句子片段; 加入實(shí)體交互向量提升模型效果的原因是對(duì)實(shí)體交互信息有了向量上的定義, 并把這種向量表示融入到原有的關(guān)系向量中. 最后一種配置是同時(shí)加入位置編碼和交互信息, 比前兩種的單獨(dú)配置在F1 上提高了近0.2%.3 種配置在F1 上的結(jié)果, 較baseline 提升明顯; 在精準(zhǔn)率上的差別不大并而且同時(shí)加入位置編碼和實(shí)體交互信息的模型比只加其中一種信息的模型在精準(zhǔn)率上甚至還降低了一些. 綜上所述, 本文所提出的位置編碼和交互信息方法是有效的.
為了探索模型在不同關(guān)系類型上的性能表現(xiàn), 本文將模型在所有關(guān)系類型上的實(shí)驗(yàn)結(jié)果進(jìn)行了統(tǒng)計(jì),如表4 所示.
表4 BPI-BERT 在各關(guān)系類型上的評(píng)價(jià)結(jié)果 (%)
由表4 數(shù)據(jù)可知, 本文所提的BPI-BERT 模型在Cause-Effect、Entity-Destination、Content-Container 等關(guān)系類型上表現(xiàn)較好,P、R、F1 的指標(biāo)都達(dá)到近90%. 而在Other 類型上表現(xiàn)較差, 比其他關(guān)系類型在評(píng)價(jià)結(jié)果上降低近15%, 原因可能是Others 類型的樣本數(shù)量偏多, 出現(xiàn)樣本不平衡的問題, 后續(xù)工作會(huì)在數(shù)據(jù)類別不平衡問題上研究和改進(jìn).
本研究從位置編碼出發(fā)進(jìn)行關(guān)系分類, 在不依賴外部工具包的情況下, 加入句子本身包含的先驗(yàn)知識(shí),從而避免了外部工具包帶來的錯(cuò)誤傳播; 此外, 本方法在傳統(tǒng)關(guān)系向量構(gòu)造方法上做出了改進(jìn), 加入了實(shí)體交互信息, 使得關(guān)系向量不再是簡單拼接實(shí)體和句子信息. 從實(shí)驗(yàn)結(jié)果上來看BERT 預(yù)訓(xùn)練語言模型表現(xiàn)確實(shí)優(yōu)異, 是今后工作生成詞向量的有效工具.
本文所提方法針對(duì)的是基于監(jiān)督學(xué)習(xí)的關(guān)系抽取,需要大量且優(yōu)質(zhì)的標(biāo)注數(shù)據(jù), 然而標(biāo)注數(shù)據(jù)通常不易獲得且標(biāo)注困難, 所以今后的研究方向會(huì)偏向于數(shù)據(jù)生成和數(shù)據(jù)標(biāo)注, 以此來擴(kuò)展關(guān)系抽取的應(yīng)用領(lǐng)域和應(yīng)用場景. 另外關(guān)系類別分布不平衡的問題在現(xiàn)實(shí)中十分常見, 如何解決數(shù)據(jù)不平衡的問題也是之后的研究內(nèi)容.