劉 旭, 楊 航, 張嘯成, 張永剛
(吉林大學(xué) 計算機科學(xué)與技術(shù)學(xué)院, 符號計算與知識工程教育部重點實驗室, 長春 130012)
關(guān)系三元組抽取是自然語言處理中的一項重要工作, 它的目標(biāo)是從無結(jié)構(gòu)的文本中聯(lián)合提取出實體和關(guān)系, 為下游知識圖譜的自動構(gòu)建奠定基礎(chǔ). 以往的研究[1]通常將關(guān)系三元組抽取任務(wù)視為兩個子任務(wù): 實體識別[2-3]和關(guān)系分類[4-6], 并且兩個子任務(wù)獨立完成. 盡管這種三元組的抽取方法很靈活, 但忽略了實體與關(guān)系之間的交互性和關(guān)聯(lián)性, 且無法避免錯誤傳播問題. 近期提出的一系列實體和關(guān)系聯(lián)合抽取方法[7-12], 能利用實體與關(guān)系之間的交互性和關(guān)聯(lián)性, 有效緩解錯誤傳播問題產(chǎn)生的影響. 這類方法是通過序列標(biāo)注實現(xiàn)的, 目前已取得了許多成果. 但這類方法也存在一定的問題, 它們通常對關(guān)系集合中每種關(guān)系都進(jìn)行實體標(biāo)注[7-8,11], 從而產(chǎn)生冗余關(guān)系問題, 而冗余關(guān)系會對最終的三元組抽取結(jié)果產(chǎn)生不利影響. 此外, 序列標(biāo)注的方法也不能有效解決各種實體重疊情況, 例如文獻(xiàn)[7]并未考慮任何實體重疊的情況, 文獻(xiàn)[8]雖然能解決單實體重疊和實體對重疊的情況, 但不能解決實體嵌套的情況. 表1列出了不同的實體重疊情形.
表1 不同的實體重疊情形Table 1 Different entity overlapping scenarios
為有效解決上述兩個問題, 本文提出基于關(guān)系過濾器的二維實體對標(biāo)注方案(RF2DTagging). 該方案由兩部分組成: 1) 關(guān)系過濾器, 解決冗余關(guān)系問題; 2) 二維實體對標(biāo)注器, 解決實體重疊問題. 在3個公開的中文數(shù)據(jù)集上進(jìn)行驗證實驗, 實驗結(jié)果表明, 本文模型比對比模型性能更好.
對于一個句子S={w1,w2,…,wN}和一個預(yù)定義的關(guān)系集合R={r1,r2,…,rK}, 本文目的是識別出其中蘊含的所有關(guān)系三元組.關(guān)系三元組可形式化為(s,r,o), 其中s表示主實體,o表示客實體,r表示關(guān)系集合中的某個關(guān)系.需要注意的是主實體和客實體都是給定句子中的連續(xù)子序列.關(guān)系三元組提取任務(wù)可定義為根據(jù)預(yù)定義的關(guān)系集合R從給定句子S中識別出所有關(guān)系三元組的集合TS={(s,r,o)i|r∈R, 1≤i≤M}, 其中M表示從S中提取出的關(guān)系三元組總數(shù).
RF2DTagging模型的整體結(jié)構(gòu)如圖1所示. 由圖1可見, RF2DTagging模型宏觀上由三部分組成: 文本編碼器、 關(guān)系過濾器和二維實體對標(biāo)注器.
圖1 RF2DTagging模型的整體結(jié)構(gòu)Fig.1 Overall framework of RF2DTagging model
近年來, 深度學(xué)習(xí)模型在圖像處理領(lǐng)域取得突破性進(jìn)展, 因此, 相關(guān)研究者開始嘗試將深度學(xué)習(xí)模型用于自然語言處理, 首先用于自然語言的編碼. 在預(yù)訓(xùn)練語言模型提出前, 文本編碼最常用的深度學(xué)習(xí)模型是長短期記憶網(wǎng)絡(luò)(LSTM), 它是循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變形, 通過引入門控機制解決了RNN的長期依賴問題. 由于BERT模型[13]的提出, 使得先預(yù)訓(xùn)練再微調(diào)的兩階段訓(xùn)練方式成為自然語言處理的通用范式. 為捕獲句子中每個字的上下文特征, 本文使用BERT作為編碼器. BERT是一個基于多層雙向Transformer的語言表示模型, 它能學(xué)習(xí)句子中每個字的特征信息:
H=BERT(x1,x2,…,xN)=(h1,h2,…,hN),
(1)
其中:N表示句子長度, 即該句子中的字?jǐn)?shù);xi表示第i個字的輸入向量, 是第i個字wi的詞嵌入與位置嵌入的拼接;hi∈dh表示第i個字的隱藏態(tài)向量.
對于關(guān)系三元組抽取任務(wù), 常存在冗余關(guān)系問題.即每個句子中所包含的關(guān)系數(shù)遠(yuǎn)小于預(yù)定義的關(guān)系總數(shù), 如果根據(jù)關(guān)系集中的所有關(guān)系進(jìn)行三元組抽取, 則會產(chǎn)生與輸入句子不適應(yīng)的關(guān)系, 即冗余關(guān)系, 這不但對計算機資源是一種浪費, 而且也會對最終的抽取結(jié)果產(chǎn)生消極影響.因此本文提出用關(guān)系過濾器過濾冗余關(guān)系.運算過程如下.
1) 通過線性層獲得文本關(guān)于關(guān)系的向量表示:
(2)
2) 通過池化操作獲得文本關(guān)于關(guān)系的全局向量表示:
(3)
其中:hglobal∈drel是文本關(guān)于關(guān)系的全局向量表示;N表示句子長度; Pooling(·)表示池化操作, 本文使用的具體池化操作是平均池化.
3) 通過線性層和非線性激活函數(shù)獲得關(guān)系的概率分布:
Prel=Sigmoid(WPhglobal+bP),
(4)
其中:Prel∈K是關(guān)系對輸入文本的概率分布,K表示關(guān)系總數(shù); Sigmoid(·)是非線性激活函數(shù), 可將任意一個實數(shù)映射為0~1的值, 即其值域為(0, 1);WP∈K×drel表示可訓(xùn)練的權(quán)重;brel∈K表示偏置項.
4) 設(shè)定關(guān)系過濾閾值, 過濾冗余關(guān)系. 本文設(shè)關(guān)系過濾閾值為μ, 如果某一關(guān)系的概率小于μ, 則認(rèn)為該關(guān)系為冗余關(guān)系, 并將其舍棄; 如果某一個關(guān)系的概率大于等于μ, 則認(rèn)為該關(guān)系為輸入文本的置信關(guān)系, 將根據(jù)置信關(guān)系進(jìn)行實體對標(biāo)注. 例如通過設(shè)置閾值μ, 圖1中的句子“大興區(qū)位于中國的首都——北京?!笨色@得置信關(guān)系“位于”和“首都”, 本文將根據(jù)這兩個置信關(guān)系進(jìn)行實體對標(biāo)注.
對于實體識別, 最經(jīng)典的方法是seq2seq的標(biāo)注方案. 該方案或者在一個序列中同時標(biāo)注出主實體和客實體[7], 或者在兩個序列中分別標(biāo)注出主實體和客實體[8]. 無論是前者還是后者都需要主實體和客實體的匹配, 這通常會導(dǎo)致錯誤傳播問題, 且這種方案也不能有效解決實體重疊問題. 本文的二維實體對標(biāo)注方案是一個seq2table的標(biāo)注方法, 該方法可以直接提取出實體對, 而不用主客實體的匹配, 且這種二維標(biāo)注方法可有效解決各種實體重疊問題. 二維實體對標(biāo)注方案示例如圖2所示.
2.3.1 二維實體對標(biāo)注方案
對于一個長度為N的句子, 為其每個置信關(guān)系維護(hù)一個表TN×N.為便于描述, 本文用T(i,j)表示某一置信關(guān)系下字對(i,j)的標(biāo)簽, 這里的(i,j)是由句子中的第i個字和第j個字組成的字對.
本文的二維實體對標(biāo)注方案為每個字對預(yù)定義3個標(biāo)簽: B,I,O.如果句子中第i個字和第j個字分別是主實體和客實體的第一個字, 則將字對(i,j)標(biāo)注為B, 即T(i,j)=B, 如圖2(A)中的字對(“第”,“北”)和(“第”,“中”), 它們分別是相應(yīng)主實體和客實體的第一個字, 本文的二維標(biāo)注方案將其標(biāo)注為B; 如果句子中的第i個字是主實體的第一個字, 第j個字是客實體中除第一個字外的其他字, 或者第j個字是客實體的第一個字, 第i個字是主實體中除第一個字外的其他字, 則將字對(i,j)標(biāo)注為I, 即T(i,j)=I, 如圖2(A)中的字對(“第”,“京”)和(“奧”,“北”), 其標(biāo)簽為I; 如果字對(i,j)不屬于上述兩種情況, 則將其標(biāo)注為O.
本文的二維實體對標(biāo)注方案可解決各種實體重疊的情況.對于單實體重疊(SEO)的情形, 如圖2(A)所示, 本文二維標(biāo)注方案可在同一個表中標(biāo)注出兩個實體對; 對于實體對重疊(EPO)的情形, 如圖2(B)和(D)所示, 可分別在兩個表中標(biāo)注出這兩個實體對; 對于實體嵌套(SOO)的情形, 如圖2(C)所示, 二維標(biāo)注方案也可以在一個表中明確標(biāo)注出該實體對.
2.3.2 標(biāo)注器的實現(xiàn)
本文認(rèn)為文本對于主實體和客實體的特征信息會對實體對的提取有積極作用, 即對于一個置信關(guān)系, 字對的標(biāo)注結(jié)果與主實體和客實體的特征信息有關(guān). 基于此, 本文使用兩個線性層分別獲得每個字關(guān)于主實體和客實體的向量表示:
Dozat等[14]提出了Biaffine-attention機制, 其核心計算公式為
Biaffine(x,y)=xTU1y+U2(x⊕y)+b,
(7)
(8)
因為在標(biāo)注過程中使用了3個標(biāo)簽, 所以s(i,j)∈3.通過Softmax函數(shù)預(yù)測字對(i,j)標(biāo)簽的概率分布為
(9)
2.3.3 二維實體對標(biāo)注器解碼算法
本文將一個批次的二維實體對標(biāo)注矩陣按下列算法進(jìn)行解碼, 最后獲得該批次中每個樣本所提取的三元組集合組成的列表.
算法1二維實體對標(biāo)注器解碼算法.
輸入: 文本長度seq_len; 一個批次的置信關(guān)系列表rel_list∈batch_size_expand; 置信關(guān)系對應(yīng)的樣本序號列表sample_idxs∈batch_size_expand; 置信關(guān)系和樣本對應(yīng)的二維實體對標(biāo)注矩陣M∈batch_size_expand×seq_len×seq_len;
輸出: 該批次中每個樣本所提取三元組集合的列表triple_set_list;
//初始化三元組集合列表, 用于存放一個批次中每個樣本對應(yīng)的三元組集合
triple_set_list←[ ];
pre_sample_idx←0;
triple_set←{ };
if sample_idx>pre_sample_idx:
//開始提取下一個樣本中的關(guān)系三元組, 重新初始化其對應(yīng)的triple_set
triple_set_list.append(triple_set);
triple_set←{ };
end if;
//根據(jù)關(guān)系索引獲得關(guān)系名
rel_name←id2rel_name(rel);
從式(2)-式(4)、式(6)、式(7)、式(9)、式(10)知ψ、ψ9、ψ、ψ、ψ、μ、μ9由常數(shù)mb、ma、mc和變量φ決定,都無量綱。
//獲取矩陣中被標(biāo)注為“B”的索引
sub_heads,obj_heads←where(one_M=“B”);
//獲得主實體和客實體首位置
for sub_head,obj_head in zip(sub_heads,obj_heads):
sub_index←sub_head+1;
//獲得主實體尾位置
while sub_index sub_index←sub_index+1; end while; //根據(jù)主實體的首尾位置獲得實體名 sub←pos2entity(sub_head,sub_index); obj_index←obj_head+1; //獲得客實體尾位置 while obj_index obj_index←obj_index+1; end while; //根據(jù)客實體的首尾位置獲得實體名 obj←pos2entity(obj_head,obj_index); //主實體、 關(guān)系和客實體組成三元組 triple←(sub,rel_name,obj); //將獲得的三元組添加至當(dāng)前樣本對應(yīng)的三元組集合 triple_set.add(triple); end for; end for; return triple_set_list. 為聯(lián)合訓(xùn)練RF2DTagging模型, 本文構(gòu)建聯(lián)合目標(biāo)函數(shù), 其由兩部分組成: 1) 關(guān)于關(guān)系的目標(biāo)函數(shù)為 (10) 2) 關(guān)于實體對的目標(biāo)函數(shù)為 (11) 其中N表示輸入文本的長度. 本文的聯(lián)合目標(biāo)函數(shù)是上述兩部分的加權(quán)和: Ljoint=αLrel+βLEP, (12) 其中α和β是超參數(shù). 為測試RF2DTagging模型的性能, 本文在如下3個開放的中文關(guān)系提取數(shù)據(jù)集上進(jìn)行實驗: CCKS2019-Task3,CMeIE,DuIE2.0. 數(shù)據(jù)集CCKS2019-Task3是2019年全國知識圖譜與語義計算大會(CCKS)發(fā)布的任務(wù)三數(shù)據(jù)集, CCKS2019的任務(wù)三旨在從中文文本中提取出人物關(guān)系, 在本文中將其數(shù)據(jù)集記為CCKS2019-Task3; CMeIE是CHIP2020會議發(fā)布的開源數(shù)據(jù)集, 其所對應(yīng)的任務(wù)是中文醫(yī)學(xué)文本實體關(guān)系提取; DuIE2.0是2020語言與智能技術(shù)競賽的數(shù)據(jù)集, 該數(shù)據(jù)集專門用于關(guān)系抽取任務(wù). 最初的3個數(shù)據(jù)集都只含有訓(xùn)練集和驗證集而不包含測試集, 本文按照8∶2從訓(xùn)練集中隨機選擇樣本組成測試集, 3個數(shù)據(jù)集的統(tǒng)計信息列于表2. 表2 各數(shù)據(jù)集的統(tǒng)計信息Table 2 Statistical information of each dataset 實驗使用準(zhǔn)確率(P)、 召回率(R)和F1值作為模型的評估標(biāo)準(zhǔn), 三者有如下關(guān)系: F1=(2×P×R)/(P+R). 對于模型預(yù)測出的關(guān)系三元組, 當(dāng)且僅當(dāng)主實體、 客實體以及關(guān)系全都正確時, 才認(rèn)為該關(guān)系三元組是正確的; 對于實體, 當(dāng)且僅當(dāng)其與測試樣例的標(biāo)簽完全匹配時才認(rèn)為是正確的. 本文在驗證集上調(diào)節(jié)超參數(shù), 訓(xùn)練出的最優(yōu)模型所對應(yīng)的重要超參數(shù)列于表3. 主要包括優(yōu)化器相關(guān)、 模型相關(guān)以及訓(xùn)練相關(guān). 對于模型中的可訓(xùn)練參數(shù), 根據(jù)標(biāo)準(zhǔn)正態(tài)分布對其進(jìn)行初始化. 本文使用AdamW算法作為優(yōu)化算法訓(xùn)練模型, 因為它的warmup機制可加速收斂. 對于每個數(shù)據(jù)集都在其上運行5次, 并且取5次結(jié)果的平均值作為最終結(jié)果, 每次運行都會從訓(xùn)練集中隨機生成測試集. 表3 模型超參數(shù)Table 3 Hyperparameters of model 為驗證RF2DTagging模型的性能, 本文選擇3個模型作為對比模型: NovelTagging[7],CasRel[8],TPlinker[11]. 其中NovelTagging模型使用BiLSTM作為文本編碼器, 而CasRel和TPLinker模型使用預(yù)訓(xùn)練模型BERT作為文本編碼器, 為公平比較, 將NovelTagging模型的文本編碼器替換為BERT. 在運行對比模型時, 超參數(shù)和官方源碼保持一致, 而數(shù)據(jù)的預(yù)處理參照本文模型的預(yù)處理, 即按8∶2劃分訓(xùn)練集和測試集, 并且每次運行都從訓(xùn)練集中隨機生成測試集. 實驗的總體結(jié)果列于表4. 由表4可見, RF2DTagging模型除在數(shù)據(jù)集DuIE2.0的P評估標(biāo)準(zhǔn)上取得了次優(yōu)結(jié)果外, 其余結(jié)果全部最優(yōu). 對于F1, RF2DTagging模型在數(shù)據(jù)集CCKS2019-Task3,CMeIE和DuIE2.0上比TPlinker模型分別提升了0.6,2.2,0.4, 證明了本文模型對中文關(guān)系三元組抽取任務(wù)的有效性. 相比數(shù)據(jù)集CCKS2019-Task3和DuIE2.0, 數(shù)據(jù)集CMeIE上的實驗結(jié)果性能較差, 其可能原因有兩個: 1) 相比數(shù)據(jù)集CCKS2019-Task3和DuIE2.0, 數(shù)據(jù)集CMeIE的訓(xùn)練集較小, 數(shù)據(jù)集CCKS2019-Task3和DuIE2.0的訓(xùn)練集分別是CMeIE的11.9倍和12.1倍; 2) 相比數(shù)據(jù)集CCKS2019-Task3和DuIE2.0, 數(shù)據(jù)集CMeIE的專業(yè)性較強, 其中包含很多專業(yè)術(shù)語和特殊符號, 在這些特殊符號中, 有些是醫(yī)學(xué)專用符號, 有些是創(chuàng)建數(shù)據(jù)時由于格式處理產(chǎn)生的符號, 這給模型對文本的語義理解帶來了困難. 表4 總體實驗結(jié)果Table 4 Overall experimental results 為驗證RF2DTagging模型在解決實體重疊問題時的效果, 本文在數(shù)據(jù)集CCKS2019-Task3和DuIE2.0上進(jìn)行了進(jìn)一步實驗, 即根據(jù)不同重疊情形將兩個數(shù)據(jù)集的測試集劃分為不同的子集: Normal,EPO,SEO和SOO, 在這4個子數(shù)據(jù)集上分別進(jìn)行實驗, 實驗結(jié)果列于表5. 由表5可見, RF2DTagging模型在EPO,SEO和SOO三種情況下都獲得了最優(yōu)結(jié)果, 證明了該模型能有效解決實體重疊問題. RF2DTagging模型在Normal情況下的性能有所下降, 這可能是由于錯誤傳播導(dǎo)致的, 即一旦關(guān)系過濾器提取的置信關(guān)系是錯誤的, 則相對應(yīng)的實體對標(biāo)注也是錯誤的. 綜上所述, 針對冗余關(guān)系和各種實體重疊的問題, 本文提出了一個基于關(guān)系過濾器的二維標(biāo)注方案, 并將其命名為RF2DTagging. 分別設(shè)計了一個關(guān)系過濾器和一個二維實體對標(biāo)注器, 二者共同構(gòu)成了RF2DTagging模型. 在3個開放的中文關(guān)系抽取數(shù)據(jù)集上進(jìn)行實驗, 總體的實驗結(jié)果證明本文模型在中文關(guān)系三元組抽取任務(wù)上比對比模型性能更好, 不同重疊模式上的實驗結(jié)果也證明了本文模型確實能有效解決冗余關(guān)系問題和實體重疊問題.2.4 目標(biāo)函數(shù)
3 實 驗
3.1 數(shù)據(jù)集和評估標(biāo)準(zhǔn)
3.2 實驗設(shè)置
3.3 對比模型
3.4 總體實驗結(jié)果
3.5 不同實體重疊情形的實驗結(jié)果