劉雅璇,鐘 勇*
(1.中國科學院成都計算機應用研究所,成都 610041;2.中國科學院大學,北京 100049)
(*通信作者電子郵箱zhongyong@casit.com.cn)
隨著互聯(lián)網(wǎng)技術的不斷發(fā)展以及大數(shù)據(jù)時代的來臨,萬維網(wǎng)中的各領域數(shù)據(jù)均呈爆炸式增長,尤其非結構化數(shù)據(jù)占了其中的75%以上[1],如何從大量的非結構化數(shù)據(jù)中提取有效知識成為了目前備受關注的問題。傳統(tǒng)的方法和數(shù)據(jù)結構已經(jīng)不能滿足人們對于獲取信息的需求,因此,知識圖譜技術應運而生。在知識圖譜中,知識以三元組的形式表示,每一條知識都可以表示為一條SPO(Subject,Predicate,Object)三元組,從自然語言文本中提取關系三元組是構建大規(guī)模知識圖譜的關鍵步驟。
隨著深度學習的發(fā)展,許多學者將深度學習方法引入到關系抽取模型中,大幅提升了關系抽取的準確度[2-4]。尤其是預訓練語言模型BERT(Bidirectional Encoder Representation from Transformers)[5]被提出以來,已被廣泛用于包括關系抽取等各種自然語言處理任務[6-8],它為模型提供一種通用的上下文相關的詞向量表示,通過使用BERT 作為編碼層可在下游模型中利用非常簡單的設計達到相較其他模型更好的效果。
目前廣泛用于實體及關系抽取的方法有兩種:一種是流水線抽取方法,一種是聯(lián)合抽取方法。流水線抽取方法把實體和關系的抽取分為兩個先后獨立的任務,分別是命名實體識別和關系分類,這種方法存在冗余實體推斷、子任務間錯誤累積等問題[9];聯(lián)合抽取方法是近年來深受研究者喜愛的方法,它把三元組抽取看作一個整體任務,對一個模型進行聯(lián)合訓練,達到實體關系抽取相互促進的目的。
在以上工作的基礎上,本文以人工智能領域語料庫作為數(shù)據(jù)集,對針對該領域的關系抽取方法作出了相關研究,提出了一種以BERT 作為編碼層,基于頭實體注意力的實體導向[10]聯(lián)合抽取模型。該模型分為兩個子任務:第一個子任務對頭實體的起始結束位置進行標記;第二個子任務針對該樣本的一個頭實體,結合頭實體注意力機制為各個關系類型標記尾實體的起始、結束位置。本文的主要工作有以下幾點:
1)基于BERT 在實體關系聯(lián)合抽取中的研究基礎,提出了基于頭實體注意力的聯(lián)合抽取模型JSA(Joint model based on Subject Attention),在尾實體標注任務中賦予頭實體與當前位置詞相關的權重,使模型自動識別句子中與頭實體相關的部分。
2)設計該領域的實體和關系類別,通過遠程監(jiān)督方法構建三元組抽取數(shù)據(jù)集;同時利用中文中“、”“和”“等”等標點和字符的特點對數(shù)據(jù)集進行了擴充和過濾,得到了置信度較高的人工智能領域三元組抽取數(shù)據(jù)集。
近年來,人們提出了大量的深度神經(jīng)網(wǎng)絡模型來完成有監(jiān)督的關系抽取任務,這些模型可根據(jù)學習流程分為流水線學習方法和聯(lián)合學習方法。
流水線學習方法一般先獲得已標注實體信息的文本,再利用關系分類模型預測每一對候選實體對的關系類型。Socher 等[11]于2012 年首次將循環(huán)神經(jīng)網(wǎng)絡(Recurrent Neural Network,RNN)用于關系抽取任務,將句子的依存句法樹作為輸入,學習樹中每個節(jié)點的詞向量和節(jié)點矩陣表示以捕獲單詞或整個短語的語義,最終得到該句子的向量表示,實現(xiàn)關系分類。Zeng 等[12]于2014 年將卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network,CNN)引入關系抽取任務,該方法將詞向量和相對位置特征輸入卷積神經(jīng)網(wǎng)絡以獲得句子級表示,再將其和實體詞級表示拼接,得到最終的表示向量用于關系抽取。Wang 等[13]向基于CNN 的關系抽取模型中引入了多層注意力機制來捕獲句子中的實體注意力和關系注意力,使模型能自動獲取與實體關系相關的細粒度信息。CNN 和RNN 對長句子建模能力有限,而長短期記憶(Long Short-Term Memory,LSTM)網(wǎng)絡尤其是雙向LSTM(Bi-LSTM)擅長捕獲長句子實體之間的依賴關系。Xu 等[14]將LSTM 用于關系抽取任務,將詞向量、詞性標注、句法依存、上位詞等信息作為四個通道沿著實體對的最短依賴路徑輸入LSTM 網(wǎng)絡,最后對四個通道的隱向量表示進行拼接獲得最后的句子向量表示,用于關系分類。Cai等[15]將CNN 和LSTM 進行融合,設計雙向循環(huán)卷積神經(jīng)網(wǎng)絡同時從正反兩個方向學習最短依存路徑上的信息。流水線的方法被認為存在冗余實體推斷、子任務間錯誤累積等問題,為了避免這些問題,近幾年研究者們傾向于對聯(lián)合學習方法的研究。
常見的三元組聯(lián)合學習方法分為三種:共享編碼層的實體關系抽取方法、基于三元組標記的全局優(yōu)化方法和實體導向的聯(lián)合抽取方法。Miwa 等[16]最先提出了共享編碼層的聯(lián)合抽取方法,它簡單地共享命名實體識別和關系分類的編碼層,使得兩個任務在學習的過程中得以相互促進,但它依然采取先提取實體再提取關系的方法,沒有解決冗余實體和錯誤累積的問題,后續(xù)工作認為這并不是真正意義上的聯(lián)合抽?。?7],Zhong 等[18]認為在實體識別和關系分類任務之間,采用流水線模型或許比簡單地共享編碼層的聯(lián)合抽取模型效果更好。Zheng 等[17]于2017 年提出了基于標記的全局優(yōu)化模型,他們首先設計了一個三元組標記方法,將文本輸入由兩個雙向LSTM 組成的序列標記模型進行訓練,該方法對三元組抽取進行全局優(yōu)化,解決了冗余實體推斷和錯誤累積問題;但其采用就近匹配原則處理包含多個頭實體或尾實體的句子,無法處理三元組間實體重疊的問題。為了解決實體重疊問題,專家們提出了實體導向的聯(lián)合抽取方法。Dai 等[19]引入一種位置注意力機制,為長為n的句子生成n個不同的句子表示,對每個位置p標記其實體標簽,對其他位置標記與位置p實體的關系標簽,構建一個實體導向的聯(lián)合序列標注模型以抽取三元組。Yu等[20]將三元組抽取分為兩個子任務,分別是頭實體標記及其對應尾實體的標記任務,并將關系抽取和尾實體標記任務結合,對每個關系標記相應尾實體,構建了一個共享編碼層的分層標記模型。Wei 等[21]采用BERT 作為聯(lián)合抽取模型的預訓練語言模型,顯著提高了實體導向的聯(lián)合抽取模型的性能,達到了當時的最優(yōu)水平,但其僅將頭實體表示簡單地與各詞向量表示相加,忽略了頭實體和其他單詞之間的細粒度語義聯(lián)系,本文在此基礎上提出了頭實體注意力機制,在尾實體標注任務中為每個詞提供不同權重的頭實體表示,使模型自動識別句子中與頭實體相關的部分。
三元組抽取領域有許多公開數(shù)據(jù)集,比如ACE 2005、SemiEval 2010 Task8 Dataset 等有監(jiān)督數(shù)據(jù)集,以及通過遠程監(jiān)督方法提取的NYT(New York Times Corpus)數(shù)據(jù)集。這些通用數(shù)據(jù)集被廣泛應用于各關系抽取方法中,但目前很少有公開的垂直領域三元組抽取數(shù)據(jù)集。本文通過遠程監(jiān)督方法構建了人工智能領域的三元組抽取數(shù)據(jù)集,并利用中文中“、”“和”“等”等標點和字符的特點對數(shù)據(jù)集進行了擴充和過濾。
2.1.1 知識庫的設計與數(shù)據(jù)收集
經(jīng)過對大量人工智能領域新聞報道、相關企業(yè)網(wǎng)站、專業(yè)書籍的翻閱了解,對人工智能領域設計了如表1 所示的11 種的關系類別,并通過人工收集的方法圍繞這11 種關系類型收集了1 500 個該領域的三元組,其中的實體類型包括技術、領域、產(chǎn)品、功能、算法等多種不同層次的實體。在這些三元組中,“使用范圍”關系的尾實體一般屬于產(chǎn)品、功能等類型,“使用領域”關系的尾實體特指某個領域,“包含”關系的頭、尾實體是整體和部件的關系,“別稱”關系的設計是為了知識圖譜的實體鏈接特設的關系類型。
為了提高遠程監(jiān)督的匹配效率,本文從博客新聞類網(wǎng)站的人工智能專欄爬取該領域語料庫,經(jīng)過分句分詞以及遠程監(jiān)督的對齊匹配過程獲得了大量有標記樣本。
2.1.2 數(shù)據(jù)擴充及過濾
由于遠程監(jiān)督的假設過于強烈,導致同一個頓號序列之間的實體會被匹配到“上位詞”“所屬領域”等蘊含上下位關系的關系類型,但事實上頓號上下文并不包含該語義;而且經(jīng)過觀察發(fā)現(xiàn),若并列的實體中有一個實體和該并列之外的其他實體之間存在除“上位詞”“相對概念”“別稱”之外的其他關系,那個該并列內的其他實體大概率也和該實體之間存在該關系并且頭尾順序不變。根據(jù)該特點,本文在匹配過程中對數(shù)據(jù)集進行了過濾及擴充,并將頓號序列周圍的“和”“等”等字符也考慮在內,由此修正了一部分由于遠程監(jiān)督方法導致的錯誤標注問題,擴充了數(shù)據(jù)集樣本數(shù)量。處理之后得到置信度較高的22 070 條樣本,按照10∶1∶1 的比例分割為訓練集、驗證集和測試集,用于模型的訓練、驗證和測試結果。樣本中各關系類型數(shù)量分布如表1 所示,其中一個樣例展示如圖1所示。
本模型的目的是識別句子中所有可能存在的三元組,其中部分三元組可能存在重疊的頭實體或尾實體。為了對整個三元組聯(lián)合建模的同時保證模型對重疊三元組的處理能力,本模型將三元組建模過程做如式(1)的轉換:
其中:s、r、o分別表示句子中的一對三元組的主語、關系、賓語;x表示輸入的句子;T表示所有關系組成的集合。通過該轉換將三元組的抽取拆分為兩個子任務:第一個子任務是學習一個頭實體標記器,對句子中頭實體的起始位置和結束位置進行標記;第二個子任務是學習一個尾實體及關系標記器,分別對每個頭實體標記對應關系的尾實體的起始和結束位置,對不存在的關系標記為全0。尾實體及關系標記器將關系分類和尾實體抽取同步進行,避免了流水線學習中的錯誤累積和冗余實體等問題,同時將頭尾實體分開標記解決了實體重疊的問題。JSA 的模型總體架構如圖2 所示,圖中s 指頭實體,o指尾實體,“首”指的是實體起始位置,“尾”指的是實體結束位置。利用該模型抽取句子中所有可能三元組的具體步驟為:首先將句子輸入頭實體標記器,標記出句子中所有可能的頭實體;其次將每個頭實體單獨輸入尾實體及關系標記器,利用CNN+注意力機制求得頭實體在各個位置的表示,將其與相應位置隱向量拼接,拼接得到的結果用于標記該頭實體對應的尾實體。模型各部分具體介紹如下。
圖2 JSA的模型架構示意圖Fig.2 Schematic of JSA model architecture
2.2.1 BERT編碼層
自BERT 被提出以來,由于其在各個自然語言處理任務中優(yōu)異的表現(xiàn),已成為近幾年最常用的預訓練語言模型。本文模型的兩個子任務共享同一個BERT 編碼器,該編碼器從輸入的句子中提取特征信息,并將其提供給后續(xù)的兩個標注模塊,如式(2)所示:
其中:x={x1,x2,…,xn}為輸入的句子;H=[H1,H2,…,Hn]為各個位置的隱向量表示。
2.2.2 頭實體標記器
如式(3)~(4)所示,頭實體標記器直接在編碼層之上使用兩個獨立的線性層對BERT 編碼器輸出的隱向量H進行解碼,以序列標記的形式使用0/1標記句子中所有頭實體的起始和結束位置。
其中:σ表示sigmoid 激活函數(shù)均為待學習的網(wǎng)絡參數(shù);代表句子中的第i個位置作為頭實體的起始位置的概率;代表句子中的第i個位置作為頭實體的結束位置的概率,如果概率超過某一閾值則對應的位置將被賦以標簽1,否則賦以標簽0??墒褂抿炞C集為標記器確定最佳閾值,此處將閾值設為0.5。抽取實體時,為每個起始位置匹配最接近且處于其右邊的結束位置生成一個頭實體。
2.2.3 尾實體及關系標記器
與頭實體標記器不同,除了句子本身的輸入外,尾實體及關系標記器同時考慮了頭實體的特征。首先根據(jù)頭實體位置得到頭實體的起始、結束區(qū)間內所有位置的隱向量表示Hhead,將其輸入一個CNN+ReLU+maxpooling 層以獲取實體級別的向量表示hhead。本文認為,頭實體的表示對尾實體標注任務的影響與當前位置詞相關,于是提出頭實體注意力機制,如式(6)所示:
計算每個位置詞對頭實體的點積注意力權重,再將賦予權重的頭實體表示與當前詞的隱向量拼接,將拼接結果T=[T1,T2,…,Tn]輸入如式(7)、(8)的兩個獨立線性層進行解碼,標記方法和頭實體標記器類似,但尾實體及關系標記器需要對每個關系類型單獨標記尾實體的起始和結束位置。
綜上,本模型在尾實體及關系標記器中使用CNN 獲取頭實體表示,很好地利用了CNN 擅長捕獲句子局部特征的特點;并使用頭實體注意力機制調整頭實體向量對每個位置詞作為尾實體的影響力權重,使模型能夠自動識別句子中與頭實體相關的部分,從而達到提高尾實體及關系標記器標注效果的目的。針對每個頭實體,尾實體的抽取方法和頭實體標記器類似。
在訓練過程中,對每個樣本隨機選擇一個真實頭實體作為尾實體及關系標記器的輸入;在推斷過程中,需要對所有頭實體單獨提取一次尾實體。
本文采用多個二分類交叉熵損失函數(shù)訓練模型,并將各子任務損失相加得到模型的聯(lián)合損失,通過最小化聯(lián)合損失以學習模型中的參數(shù)。如式(9)所示:
其中代表第i個位置詞作為頭或尾實體的真實的起始或結束位置;L代表句子長度。
為了公平比較,本文將使用BERT 作為編碼層且基于實體導向的聯(lián)合抽取模型CasRel(Cascade binary tagging framework for Relational triple extraction)[21]作為基線模型,在公開的三元組抽取數(shù)據(jù)集NYT 以及通過遠程監(jiān)督方法得到的人工智能領域數(shù)據(jù)集上進行實驗,并按照慣例使用F1值作為評估標準。這樣的選擇有助于衡量本文提出的JSA 是否更好地利用了頭實體和其他單詞間的細粒度語義關系。除此之外,為了驗證本模型各改進設計的有效性,針對各個改進點做了消融實驗,以展示使用CNN 獲得頭實體表示、頭實體注意力機制、聯(lián)合抽取等設計對三元組抽取任務的增益。
本文通過使用驗證集進行測試實驗來確定超參的大小。為了公平比較,在人工智能領域數(shù)據(jù)集中,本文對所有模型實驗均采用如下設置:使用小批量更新的方法,根據(jù)設備顯存大小將小批量樣本數(shù)設為32;學習率設為1E-5,使用自適應矩估計(Adam)優(yōu)化器對模型參數(shù)進行自適應學習;預訓練語言模型使用的是中文版的BERT-Base,隱向量長度為768;輸入句子的最大長度設為100,頭實體的最大長度設為15,對過長的句子和頭實體進行截斷;CNN 卷積核大小設為5;起始和結束位置的標記閾值均設為0.5;采用早停機制防止過擬合,當在驗證集中的F1值至少連續(xù)7個訓練周期沒有得到改進時即停止訓練。特別地,為了和基線模型的實驗結果形成公平對比,在NYT 數(shù)據(jù)集上采用與以上不同的設置:小批量樣本數(shù)設為6;預訓練語言模型使用[BERT-Base,Cased]版本。本文所有實驗基于Google Colab 平臺的Nvidia Tesla T4 16 GB 顯卡進行訓練。
3.3.1 模型對比實驗分析
表2 展示了本文模型和其基線模型在NYT 以及本文第2章中構建的數(shù)據(jù)集上的實驗結果??梢钥闯?,無論是在公開數(shù)據(jù)集上還是人工智能領域數(shù)據(jù)集上,無論是精確率還是召回率上,本文模型均明顯優(yōu)于基線模型,在NYT 和領域數(shù)據(jù)集上的F1值分別高于基線模型1.8和8.9個百分點。本文認為這主要歸功于:1)面向頭實體的尾實體標注過程能夠捕獲頭實體與尾實體之間的依賴關系;2)利用CNN 有效捕獲頭實體信息;3)聯(lián)合抽取的方法將頭尾實體的標注聯(lián)合學習,解決了冗余實體和實體重疊的問題。圖3 所示為本文模型在測試集上的F1值、精確率、召回率等指標隨訓練周期變化圖。圖4所示為模型訓練時的損失函數(shù)值變化圖,可以觀察到隨著訓練周期的增長,模型逐漸趨于穩(wěn)定,最終在第55 個訓練周期時F1值達到最高,之后根據(jù)早停機制停止訓練。
表2 在人工智能領域數(shù)據(jù)集和NYT數(shù)據(jù)集上不同模型的實驗結果Tab.2 Experimental results of different models on artificial intelligence dataset and NYT dataset
圖3 測試集上的F1值、精確度和召回率Fig.3 F1 score,precision and recall on test dataset
圖4 訓練損失值Fig.4 Training loss value
3.3.2 消融實驗分析
本文為驗證模型各優(yōu)化點的增益作用,使用第2 章中構建的數(shù)據(jù)集對模型進行了消融實驗。
首先,簡單地對頭實體所有位置詞的隱向量求加和平均得到頭實體表示,將其直接與句子的詞向量拼接,拼接結果用于標記尾實體的起始結束位置。對該模型(Entity-Orientedsimple)進行實驗,得到結果如表3所示,該方法相比基線模型(CasRel)得到了1.7個百分點的F1值提升。相較于基線模型中將頭實體表示和各位置詞隱向量相加的設計,拼接的方法使得尾實體及關系標記器可對當前詞向量和頭實體表示向量產(chǎn)生不同的權重,很好地學習了頭實體對于尾實體及關系標注任務的影響力。
表3 在人工智能領域數(shù)據(jù)集上的消融實驗結果Tab.3 Results of ablation experiment on artificial intelligence dataset
第二步,在拼接的基礎上,使用CNN+maxpooling 網(wǎng)絡代替加和平均來學習頭實體特征表示,通過該方法(Entity-OrientedCNN)在F1值上獲得了0.4個百分點的提升。最后在以上模型的基礎上使用頭實體注意力機制,以捕獲頭實體與尾實體之間的依賴關系,該創(chuàng)新點在F1 值上貢獻了高達6.8 個百分點的顯著提升。
為了驗證聯(lián)合學習為本模型帶來的增益,本文設計了一個實驗,簡單地為頭實體標記器和尾實體及關系標記器學習兩個獨立的BERT 編碼器,學習過程中使用各自的目標函數(shù)進行優(yōu)化,其余設計與JSA 相似。該流水線模型(JSApipeline)在數(shù)據(jù)集上的實驗結果如表3 所示,F(xiàn)1 值相對相應的聯(lián)合學習模型(JSAjoin)t下降了6.1 個百分點,該結果表明聯(lián)合學習方法對該模型起到了顯著的增益作用。通過該實驗,本文認為實體導向的聯(lián)合抽取模型的兩個子任務——頭實體標記和尾實體標記能夠通過共享編碼層及損失聯(lián)合優(yōu)化的方法達到共同學習、相互促進的目的。
除此之外,相較于基于三元組標記的聯(lián)合抽取模型,實體導向的聯(lián)合抽取模型在實體重疊問題上體現(xiàn)了很好的抽取效果。如圖5~6 所示,由于基于三元組的標記方法采用的全局優(yōu)化方法和最近匹配原則,導致其無法處理重疊實體的三元組抽取問題;而在實體導向的聯(lián)合抽取模型中,其架構設計使其在一定程度上天然不受重疊實體問題的影響。
圖5 基于三元組標記的全局優(yōu)化模型在實體重疊情況下的標記和抽取結果Fig.5 Tagging and extraction results in case of overlapping entities by using global optimization model based on triple tagging
圖6 實體導向的聯(lián)合抽取模型在實體重疊情況下的標記和抽取結果Fig.6 Tagging and extraction results in case of overlapping entities by using entity-guided joint extraction model
本文提出了一種基于頭實體注意力的實體導向聯(lián)合抽取模型,該模型將三元組抽取任務分為兩個互相影響的實體抽取子任務,第二個子任務利用第一個子任務獲取到的頭實體信息進行抽取。通過這種方式,解決了流水線模型中的冗余實體的問題和以往聯(lián)合抽取模型中實體重疊的問題,并學習了頭實體與尾實體之間的依賴關系。本文在通過遠程監(jiān)督方法構建的三元組抽取數(shù)據(jù)集上的多個實驗結果表明,本文模型性能取得了顯著的改進,并驗證了聯(lián)合抽取框架以及各個改進設計的有效性。但通過遠程監(jiān)督構建的數(shù)據(jù)集難免由于過寬的假設引入噪聲,如何去除數(shù)據(jù)集中的噪聲而獲得更好的訓練效果將是下一步的研究方向。