潘理虎,陳亭亭,閆慧敏,趙彭彭,張 睿,張英俊
(1.太原科技大學 計算機科學與技術學院,山西 太原 030024;2.中國科學院 地理科學與資源研究所,北京 100101)
隨著計算機技術的快速發(fā)展,大量的互聯(lián)網(wǎng)數(shù)據(jù)不斷產生,這些數(shù)據(jù)通常以非結構化形式存在,因此如何快速高效地提取到結構化的語義信息吸引了研究者們的注意。實體關系抽取作為一種信息抽取任務,其目標是在給定一個實體對及其對應的文本描述條件下提取出它們的語義關系,常用的方法有監(jiān)督學習、半監(jiān)督學習、遠程監(jiān)督和無監(jiān)督學習四大類。該文的工作重點為第一類。
傳統(tǒng)的基于統(tǒng)計方法的關系分類依賴人工特征提取,導致模型不能夠學習到充分的語義信息,且容易造成誤差傳播。近年來,基于深度學習框架的神經網(wǎng)絡模型成為實體關系抽取的新方法,并取得了顯著的效果。以CNN、RNN為主的編碼器作為神經網(wǎng)絡的主體部分,主要用于提取文本中的上下文特征??紤]到對于一段文本,不同的成分會對語義提取有不同的貢獻,于是注意力機制(Attention)成為研究者們關注的焦點。
以RNN和CNN為代表的模型主要用于對自然語言進行語義特征提取。例如,以RNN為代表的方法有LSTM、GRU等,其將文本視為序列,并串行地對每個單詞或字符進行表征,獲得具有時序特征的文本表示。然而對于過長的句子,RNN可能面臨梯度消失或梯度爆炸等問題,雖然LSTM可以進一步緩解這一類問題,但其通常只能獲得文本的全局特征信息。相比之下,CNN則通過滑動窗口的方式可并行地對每個感受野區(qū)域進行卷積和池化,因此CNN被認為可以有效加快對文本特征提取的效率,但是CNN普遍存在的問題是其提取的特征通常是離散的,且各個感受野是相互獨立的,因此不能很好地處理全局信息。
注意力機制在自然語言處理領域內的有效應用通常結合RNN或CNN對特征進行加權來實現(xiàn),使得模型能夠更加關注更重要的語義成分。但現(xiàn)如今傳統(tǒng)的方法均僅是將注意力機制簡單地堆疊在現(xiàn)有的模型上,然而并沒有實質地解決局部信息與全局信息的融合問題。以注意力機制為代表的Transformer以及預訓練模型BERT、SBERT等在多個自然語言處理任務上達到最佳,其旨在通過在大規(guī)模無監(jiān)督語料的基礎上學習先驗語義知識,并在下游任務上進行微調。這些預訓練模型均通過自注意力機制來同時避免RNN存在的長距離依賴以及不能并行計算的問題。為了進一步提升關系抽取的性能,該文提出了一種基于滑動窗口的注意力模型,實現(xiàn)在實體對信息的基礎上同時從局部和全局層面上更好地提取語義信息。該文貢獻主要在于:
(1)將預訓練語言模型SBERT應用于實體關系抽取任務中,在此基礎上提出了新的關系分類模型,并有效縮短了模型訓練時間。
(2)提出一種基于滑動窗口的注意力機制來對局部語義信息進行特征提?。徊⒃诰奂瘜訉Σ煌翱讷@得的局部信息進行融合形成全局信息。
(3)在公開數(shù)據(jù)集SemEval 2010 Task8上進行實驗,驗證了該方法在已有的基線模型上性能均得以提升。
從對標注數(shù)據(jù)的依賴程度區(qū)分,實體關系抽取方法分為基于機器學習的傳統(tǒng)有監(jiān)督方法和基于深度學習的方法。以下將分別介紹這些方法的研究現(xiàn)狀。
有監(jiān)督學習方法是較為傳統(tǒng)的實體關系抽取方法,其基本步驟是先對已標注的訓練數(shù)據(jù)進行訓練形成機器學習模型,然后再對測試數(shù)據(jù)的關系類型進行分類。有監(jiān)督關系抽取方法主要包括:基于核函數(shù)的方法[1,2]、基于邏輯回歸的方法[3]、基于句法解析增強的方法[4]和基于條件隨機場的方法[5]。Miao[6]等在已有特征的基礎上,引入字特征,并采用條件隨機場(Conditional Random Fields,CRF)進行醫(yī)學領域實體間關系的抽取,F(xiàn)1值達到75%以上。然而,它們過度依賴特征工程致使模型無法學習到更充分的語義信息,泛化能力差。
最近,很多研究人員開始將深度學習神經網(wǎng)絡模型應用到語義關系抽取中。所使用的模型主要都是基于現(xiàn)有CNN、RNN神經網(wǎng)絡模型,在這些現(xiàn)有模型上做一些網(wǎng)絡結構方面的改進或者改進輸入特征,比如結合多種Attention機制、添加不同的特征、引入依存樹等。
基于CNN模型的關系抽取方法主要包括:Liu等[7]首次將卷積神經網(wǎng)絡用于關系提取任務;Zeng等[8]采用詞匯向量和詞的位置向量作為卷積神經網(wǎng)絡的輸入;Nguyen等[9]在Zeng等的基礎上加入了多尺卷積核,這樣可以提取更多N-gram特征;Santos[10]提出了一種新的卷積神經網(wǎng)絡進行關系抽取,其中采用了新的損失函數(shù),能夠有效地提高不同關系類別之間的區(qū)分性。
基于RNN模型的關系抽取方法主要包括:Socher等[11]最早提出將RNN用于關系抽??;Wang等[12]設計了相對復雜的兩層注意力機制來盡可能突出句子中哪些部分對關系標簽有更大的貢獻;Zhu等[13]在Wang的基礎上做出改進,他們計算每個詞與關系標簽的注意力矩陣,同時去掉了Pool Attention部分。
雖然以RNN和CNN為主的方法在關系抽取任務上效果較好,但依然又有很大的差距。為了提升效果,以預訓練語言模型為主的方法被提出。例如BERT[14-15]、SBERT、RoBERT、XLNET等,其完全以Self-attention為主的方法捕獲每個句子各個成分之間的相關性,以提升對句子語義的理解。通常為了提升下游任務的學習性能,通過根據(jù)具體的任務簡單地堆疊相應的模塊實現(xiàn)微調。然而這些方法均是針對通用領域而言,對于關系抽取任務來說,則需要模型能夠充分捕獲實體與句子在不同層面上的交互關系?;谝陨系难芯克悸?,該文鑒于SBERT[16]強大的語義表征能力,優(yōu)先選擇該模型進行全局特征的提取。同時,為了提高關系分類的準確率,充分利用語義中的局部信息,挖掘更多的局部特征,緊接著引入多頭注意力機制,采用滑動窗口的策略提取局部特征,并使用雙向長短期記憶神經網(wǎng)絡對上一層提取到的局部信息進行聚合。
本節(jié)著重介紹所提出的方法——滑動窗口注意力模型(SWAN),其由五部分組成,分別是輸入表征層(Input Embedding Layer)、句子編碼層(Sentence Encoder)、滑動窗口注意力(Sliding-Window Attention)、局部信息聚集層(Local Aggregation Layer)以及分類層(Classifier)。模型的框架如圖1所示。
圖1 模型架構
假定給定一個句子S={w1,w2,…,wn},其中n表示句子的最大長度,wi∈Rwd表示每個單詞,wd為詞向量的維度。采用預訓練的word2vec詞向量來表示句子。為了保留實體在句子中的結構和語義信息,額外添加了兩個實體信息:
谷歌提出的基于雙向Transformer模型的BERT(Bidirectional Encoder Representations from Transformers)模型,在文本語義相似度等句子對的回歸任務上已經達到了SOTA的效果,但是由于其通常是取輸出層的字向量的平均值或第一個特征位置作為句子的句向量,這種取平均值或特征值的做法使得其輸出的句向量不包含充分的語義信息,并且其結構導致計算開銷巨大,因此Reimers等人在此基礎上提出了Sentence-BERT(SBERT)模型。
SBERT采用典型的Siamese and Triplet Network (孿生網(wǎng)絡和三胞胎網(wǎng)絡)結構,相同的兩路模型分別對句子進行編碼,最后兩個編碼作為一個簡單模型的輸入,根據(jù)目標的不同可以定義不同的損失函數(shù)對模型整體進行訓練,總體目標是以訓練兩個編碼向量的相似度最小為目標。
SBERT在輸出結果上增加了一個Pooling操作,從而生成一個固定維度的句子Embedding。實驗中采取了三種Pooling策略對比:
CLS:直接用CLS位置的輸出向量作為Embedding。
MEAN:計算所有的token輸出向量的平均值作為Embedding。
MAX:取每一維輸出向量的最大值。
通過實驗對比三種策略的效果,可知MEAN效果是最好的,所以實驗最終采用MEA策略。
具體針對分類任務的訓練模型如圖1所示,使用元素級差分|u-v|來組合u,v,將其乘以一個可訓練的權重矩陣Wt∈R3n×k(n為句向量的維度,k為標簽的個數(shù)),使用softmax函數(shù)進行分類輸出。
o=softmax(Wt(u,v,|u-v|))
(1)
滑動窗口注意力(Sliding-Window Attention Network,SWAN)是該文的核心部分。其通過窗口的滑動來捕捉句子各個部分的局部信息,并通過注意力機制對局部信息進行聚集,在不同的局部感受野中獲得重要的語義成分。
圖2 滑動窗口模型
如圖2所示,設窗口的大小為ws,則在第i時刻窗口讀入的局部token序列為X[i:i+ws-1]=[xi,xi+1,…,xi+ws-1]。該文使用多頭注意力(Multi-Head Attention)來捕捉這些token的相互影響程度,公式如下:
(2)
MultiHead(Q,K,V)=[head1,head2,…,headm]
(3)
為了方便描述,將該部分封裝為一個統(tǒng)計的函數(shù),記做vt,k=SWAk(X[t:t+ws-1]),表示大小為ws的第k個窗口捕捉的局部語義信息為vt,k。
為了獲取更多不同的局部信息,對相同長度的窗口,使用k個不同的窗口來同時捕捉局部信息,因此本節(jié)將描述如何將不同窗口的局部信息進行聚合。使用第二層雙向長短期記憶神經網(wǎng)絡,公式如下:
(4)
(5)
(6)
(7)
其中,SWAk(·)為第k個窗口掃描注意力,ht,k表示t時刻的隱向量,st,k為記憶信息。不同于第一層,這一層目標是將同一個窗口的不同的局部信息進行表征,以獲得全局信息。最后在輸出層應用了一次Dot-product Attention:
Ot=βtht,k
(8)
βt=σ(Wβht,k)
(9)
因此所有局部信息聚集后,形成全局信息:
(10)
將關系抽取視為分類任務,給定已知的預定義關系,需要最大化真實關系的概率,最小化其他關系的概率。最后全連接層獲得相應的概率分布:
(11)
其中,WO,bO分別表示全連接層的權重參數(shù)和偏置。
采用交叉信息熵作為目標函數(shù):
(12)
其中,N為一批句子的數(shù)量,θ為待訓練的參數(shù),λ為正則化超參數(shù)。
在SemEval-2010Task 8數(shù)據(jù)集上進行實驗,該語料集包含10個關系,分別為Other、Message-Topic(MT)、Product-Producer(PP)、Instrument-Agency(IA)、Entity-Destination(ED)、Cause-Effect(CE)、Component-Whole(CW)、Entity-Origin(EO)、Member-Collection(MC)和Content-Container(CC)。數(shù)據(jù)集共有10 717個示例,其中包含8 000個訓練樣本和2 717個測試樣本。在具體的實驗中,由于除了Other以外的其他關系皆是有向的,因此一共劃分9×2+1=19個類。
在評價指標的選取上,該文采用數(shù)據(jù)集官方文檔提出的macro-averaged F1值來評價模型的有效性。首先需要分別計算每個類別樣本的精確率P(Precision)、召回率R(Recall)和F1值(F1-score),最后根據(jù)P、R和F1值求出整個數(shù)據(jù)集的F1平均值。
(13)
(14)
(15)
其中,TPi表示為第i類關系中正確預測的實例個數(shù),F(xiàn)Pi表示將其他類別中的實例錯誤預測為第i類的實例個數(shù),F(xiàn)Ni表示將第i類的實例錯誤預測為其他類的實例個數(shù)。最終計算所有類別F1值的均值F1ma,N表示數(shù)據(jù)集中的所有類別數(shù)。
(16)
對于深度神經網(wǎng)絡模型來說參數(shù)的選取至關重要,因此該文采用5折交叉驗證法驗證不同超參對模型性能的影響以確定最優(yōu)的參數(shù)組合。其中在訓練集中隨機抽取7 200個樣本進行訓練,800個樣本用于驗證,并將五次驗證結果的均值作為當前模型的評估。經過多次實驗,并比較不同參數(shù)下的實驗結果,選取了最合適的參數(shù)。詞向量選擇100維度的Glove預訓練詞向量,且在實驗中可微調。LSTM部分Dropout設置為0.7,其他部分Dropout為0.5。在訓練過程中迭代次數(shù)Epoch設置為50,Batch Size設置為20。使用Adam優(yōu)化方法訓練模型,學習率為1.0,衰減率為0.9,窗口大小為7,窗口數(shù)為2,多頭注意力個數(shù)為4.
為了對比SWAN與現(xiàn)有工作的關系抽取效果,選擇了一些基線模型在F1值上進行整體實驗的對比,可以簡單分為三類:
傳統(tǒng)統(tǒng)計機器學習和特征工程的方法:支持向量機(SVM)。該類方法主要通過人工進行特征提取,并使用傳統(tǒng)的機器學習算法實現(xiàn)分類。
以卷積神經網(wǎng)絡(CNN)為代表的局部信息表征方法:CNN、FCM、DepLCNN和CNN+Attention。該類方法以CNN為特征提取工具,對句子進行語義提取。
以循環(huán)神經網(wǎng)絡(RNN)為代表的全局信息表征方法:C-RNN、DepNN、MV-RNN、SD-LSTM和Bi-LSTM+Attention。該類方法則通過聯(lián)系句子上下文進行特征提取,考慮到了句子的全局結構信息。
相關模型的特征和實驗的結果如表1所示,其中SWAN為該文提出的方法。實驗結論如下:
表1 整體實驗結果
(1)以支持向量機(SVM)為代表的機器學習算法通過應用核函數(shù)可以進行非線性分類。該方法通過選擇詞性標注(POS)、前綴信息(Prefix)、依存關系路徑(Dependency Path)、詞網(wǎng)(WordNet)和詞袋模型來進行特征工程。該方法在當時達到了SOTA效果,F(xiàn)1值為82.2%。
(2)以CNN或RNN為主的深度學習方法已在關系抽取任務上得以應用,該文選取以CNN和RNN為代表的一些方法進行實驗,總體上看,神經網(wǎng)絡模型均超越了以特征工程為主的SVM方法。另外與CNN和RNN對應的代表方法進行對比可知:在沒有添加注意力機制的前提下,CNN要比RNN更好,例如FCM要比MV-RNN高出0.6%,DepLCNN也超越了改進前的DepNN約0.1%,同時添加依存關系信息后與SD-LSTM效果相同,因此可以說明CNN對局部語義信息的提取更加有利于關系抽取。而添加注意力機制后,Bi-LSTM+Attention比CNN+Attention高0.2%,說明注意力機制可以很好地對全局信息進行聚集,這一效果要比在局部信息上更好。
(3)提出的SWAN模型則利用窗口注意力兼顧對上下文的局部信息和全局信息的捕捉。當只使用詞向量作為輸入時,可比Bi-LSTM+Attention高出4.4%,通過使用位置信息則可以再一次提升0.1%,當使用更多的特征信息時,實驗的結果達到了89.3%,因此SWAN可以對豐富的特征進行局部和全局提取。
為了判斷所提出的模型中各個組件對關系抽取是否起到提升作用,進行了一些擴展實驗:
3.5.1 滑動窗口注意力對局部信息的表征效果
為了驗證該模塊的表征能力,分別設計了幾種不同的窗口模型進行比較:
(1)不使用滑動窗口模型:即直接從SWAN中去除滑動窗口層,符號記做SW+None;
(2)平均池化:只對滑動窗口內包含的每個位置的向量取平均,符號記做SW+AVG;
(3)最大池化:選擇滑動窗口內向量2范數(shù)最大的作為輸出,符號記做SW+Max;
(4)CNN:在滑動窗口層直接使用一層卷積和最大池化運算,符號記做SW+CNN;
(5)Dot-product注意力,即去除SWAN中滑動窗口層中的多頭注意力,符號記做SW+Dp。
其中,后4個滑動窗口模塊的輸出層隱狀態(tài)向量與SWAN一致,所有的對比模型中其余層完全相同。對比實驗的評測指標使用F1值,結果如表2所示。
實驗中每個模型分別進行兩組實驗,第一組實驗為僅使用詞向量和位置表征,對應表2中第二列展示的F1值;第二組實驗則在第一組實驗基礎上添加了WordNet、Dependency和POS特征,對應表2中第二列括號內的提升量。
表2 不同滑動窗口模型對局部特征提取的效果
實驗結果發(fā)現(xiàn),如果不顯式地對局部語義進行提取,實驗結果只有83.1%和83.5%,相比SWAN兩組實驗結果分別下降了1.3%和1.7%,說明局部語義特征的重要性。當使用平均池化和最大池化時,相比不使用滑動窗口來說稍有提升,如果使用CNN進行局部特征提取,則可以最高提升至83.8%和84.4%,因此說明CNN具有較強的局部信息提取能力。SW+Dp則比SW+CNN提升至少0.3%,說明注意力機制對局部信息的提取效果比CNN更強。SWAN方法達到了實驗中的最好結果,相比SW+Dp提升了至少0.4%,從而間接說明結合Multi-Head Attention和Dot-product Attention可以提升關系抽取的效果。另外所有對比模型中,再額外添加3個特征后對于關系抽取效果的提升幅度,SWAN模型為0.8%,超過其他模型,說明了提出的滑動窗口注意力對特征敏感。
3.5.2 不同窗口規(guī)格對局部語義提取的影響
為了探析不同窗口規(guī)格對語義提取的影響,從窗口大小和數(shù)量兩個方面分別進行了實驗,其中窗口大小范圍為ws∈{1,3,5,7,9,11,13},窗口數(shù)量范圍為k∈{1,2,3,4},在測試集上的實驗結果如圖3所示。
圖3 不同窗口大小和數(shù)量下的關系抽取效果變化
其中橫坐標表示窗口大小,縱坐標表示F1值,由圖可知不論窗口數(shù)量有多少,當窗口大小ws<7時,F(xiàn)1值隨著窗口數(shù)量的增加而升高;當ws>7時,F(xiàn)1值呈現(xiàn)遞減趨勢,因此當窗口大小為7時,F(xiàn)1值達到最好。對SemEval 2010 Task8的測試集句子長度進行了統(tǒng)計,發(fā)現(xiàn)平均長度為21,由此可以推斷在當前任務下窗口大小是平均句子長度的三分之一時可以接近最大值。
另外分析不同窗口數(shù)量k對實驗的影響,發(fā)現(xiàn)當ws≤3或ws≥11時,在相同窗口大小的情況下,窗口數(shù)量越多,F(xiàn)1值越大,而在3 (1)當窗口過小時,窗口內的局部信息量少,模型學習不充分;而當窗口過大時,包含的語義信息量過多使得局部信息產生混淆,導致效果下降。 (2)當窗口大小適中時,單個窗口(k=1)可以通過模型自主地學習到合適的語義,但此時數(shù)量越多,提升的效果并不明顯,甚至可能由于過擬合原因導致下降;當窗口過小或過大時,多個窗口(k>1)可以相互彌補各自的缺陷,使得效果要好于單個窗口。因此一個窗口也可以滿足對局部信息的提取。 關系抽取作為知識圖譜構建[17]過程中重要的步驟,如何從語義特征提取角度提升關系抽取吸引研究者們的關注。為了更好地融合句子的局部和全局信息,提出基于滑動窗口注意力機制模型(SWAN)。該模型首先采用SBERT對句子進行表征,然后使用滑動窗口注意力機制捕獲句子中的局部信息,其次在局部信息聚集層對抽取到的局部信息進行聚合,最后在分類層對關系進行預測分類。在SemEval 2010 Task8數(shù)據(jù)集上的實驗表明,該方法超越了一些基線模型,很好地捕捉到句子的語義特征且模型的訓練效率得到極大提升。特別地,通過擴展實驗對模型的結構進行了分析,并結合可視化驗證了該模型相比于傳統(tǒng)的CNN可以有效提升對局部信息的提取。在未來的工作中,將從并行角度繼續(xù)改進滑動窗口層,另外嘗試運用基于遠程監(jiān)督的方法快速構建大規(guī)模訓練語料并實現(xiàn)關系抽??;在應用方面將遷移到煤礦事故事件因果關系分析任務上。4 結束語