王澤儒,柳先輝
同濟大學電子與信息工程學院,上海201800
知識圖譜[1(]knowledge graph,KG)是由Google公司在2012年提出的一個新概念。知識圖譜能夠更好地組織、管理和理解海量信息[2],并以“實體-關系-實體”的方式表達客觀世界中的概念、實體及其相互間的語義關系,從而構成龐大的知識庫,有助于知識的共享和重用。知識圖譜通常是由許多實體關系構成的關系圖,因此在構建知識圖譜的過程中,如何從非結構化文本中抽取實體關系成為一項至關重要的任務。
實體關系抽取通常包含命名實體識別(named entity recognition,NER)和關系抽取(relation extraction,RE)兩項子任務。早期實體關系抽取方法主要是通過人工構造語法和語義規(guī)則,基于規(guī)則模板的方式抽取實體關系,之后發(fā)展為以傳統(tǒng)機器學習方法為主的實體關系抽取算法,包括無監(jiān)督[3,4]、半監(jiān)督[5]與有監(jiān)督[6]的算法。近年來,為避免繁瑣的人工特征抽取,基于深度學習的實體關系抽取算法已成為目前實體關系抽取領域的主要研究方向?;谏疃葘W習的實體關系抽取算法主要分為流水線學習(pipeline)[7~10]和聯(lián)合學習(joint)[11~13]兩種。流水線學習是指在已完成實體識別的基礎上對每個實體對進行關系分類的學習方式。聯(lián)合學習是指在進行命名實體識別和關系抽取兩個子任務時共享編碼層的參數(shù),經(jīng)過優(yōu)化后得到全局最佳參數(shù)。相較而言,聯(lián)合學習有效地改善了流水線方法中存在的錯誤累積傳播問題以及忽視實體識別與關系抽取這兩個子任務間聯(lián)系的問題,提高了模型的魯棒性。
然而現(xiàn)階段的聯(lián)合實體關系抽取算法難以解決如下問題:關系重疊、實體嵌套以及抽取三元組的同時判別實體類型。關系重疊是指句子中包含多個相互重疊的三元組,具體表現(xiàn)為一個實體同另一個實體之間存在多種關系(entity pair overlap,EPO)及一個實體與其他不同實體之間存在多種關系(single entity overlap,SEO)這兩種關系重疊類型。傳統(tǒng)的關系抽取模型通常將識別出的實體與原始文本組合為實體元組向量作為輸入,模型難以從單一實體元組向量識別出多種關系,因此無法解決關系重疊問題。實體嵌套(nested entity,NE)是指一個實體包含或部分包含另一個實體,例如句子“[[[上海]中芯國際]芯片晶圓生產(chǎn)線]”是三層嵌套實體,其中地名被嵌入到企業(yè)名中。實體嵌套問題同樣為聯(lián)合實體關系抽取算法帶來挑戰(zhàn),原因在于現(xiàn)有的方法通常將命名實體識別子任務看作一個序列標注問題,假定每個字符只能屬于一種實體類型。目前知識圖譜主要的存儲媒介從早期的RDF三元組逐漸轉變?yōu)閳D數(shù)據(jù)庫如Neo4j[14],圖數(shù)據(jù)庫在存儲知識時不但要求實體的名稱,還必須指定實體的類型。然而現(xiàn)階段的聯(lián)合實體關系抽取算法通常以識別實體在句子中的位置為目標,而不對實體的具體類型做出判斷,無法順利地將抽取出的實體關系導入圖數(shù)據(jù)庫。因此,需要一種可以解決上述問題的聯(lián)合實體關系抽取算法。
CasRel(cascade binary tagging framework)[11]模型的出現(xiàn)為解決關系重疊問題提供了一個思路。傳統(tǒng)的實體關系抽取算法可以抽象為主體和客體映射為關系的函數(shù)f(s,o)→r,Wei等[11]改變了這一傳統(tǒng)思想,將問題抽象為以關系作為條件通過主體映射客體的函數(shù)fr(s)→o,避免了主體、客體只能映射為單一關系的局限性,并通過一種級聯(lián)二進制標記框架加以實現(xiàn)。本文采用CasRel模型的思想,提出了一個新型的指針級聯(lián)標注策略,與BERT(bidirectional encoder representation from transformers)[15]預訓練模型結合,可以有效解決實體嵌套與關系重疊問題,并且可以在抽取三元組的同時判別實體類型。
模型主要由文本預處理、BERT編碼器、頭實體解碼器、字向量融合、尾實體解碼器5個模塊構成,如圖1所示。對于數(shù)據(jù)集中的文本,只需要根據(jù)預先定義的句子最大字符長度做[PAD]填充即可,并轉化為矩陣向量;其次利用預訓練的BERT編碼器對文本矩陣向量處理,獲取包含語義信息的字向量;接著將字向量輸入頭實體解碼器預測頭實體類型與位置索引;再根據(jù)頭實體預測的結果與字向量融合;最后將融合字向量輸入尾實體解碼器預測尾實體類型、關系類型與位置索引。
圖1 模型框架圖Fig.1 Overview of the model
在處理自然語言的過程中,構建詞庫并根據(jù)詞庫將文本分詞結果嵌入詞向量是必不可少的步驟,相較于英文詞語間有間隔作為標記,中文詞庫在構建時往往受制于分詞工具的影響,且文本的分詞結果對之后詞向量的生成影響頗深。因此,本文不使用分詞工具對文本進行處理,選擇直接將文本分字后構建字向量。在字向量的生成中,采用BERT模型作為編碼器訓練字向量,不同于以往的靜態(tài)字向量,前者能夠在不同的語境下表征不同的語義,因此這樣的字向量更加體現(xiàn)出強大的語義表征能力。對輸入的每個字符進行向量空間的嵌入表示,每個字符向量E計算如下
其中,Ec為該字符串的字符向量表示,ES為該字符的句子分類向量,EP為該字符的序列位置向量。
將E經(jīng)過多層雙向Transformer編碼器訓練得到文本的字向量。第i個字符的向量表示Ti的計算過程如下所示
其中,Trans代表每一個Transformer塊的運算過程,N為字向量的最大長度,單個字的向量表示的維度為BERT隱藏層輸出的維度,默認為768。
針對頭實體中可能存在的實體嵌套問題以及關系重疊問題,本文提出了一種全新的指針級聯(lián)標注策略(novel pointer tagging cascade strategy,NPCTS),包含頭實體與尾實體標注兩部分。在頭實體標注部分,如圖2所示,采用指針標注的思想,將頭實體的標簽分為起始標簽與終止標簽。為了在預測頭實體位置的同時,識別出實體的類型,將起始標簽與終止標簽設計成為矩陣形式,不同行代表在不同實體類型上可能存在實體的位置。由于實體嵌套問題多發(fā)生在不同類型的實體間相互嵌套,極少出現(xiàn)同一實體類型嵌套的現(xiàn)象,因此NPCTS按照實體類型作為區(qū)分指針級聯(lián)標注策略可以很好地應對實體嵌套問題。在頭實體的起始標簽中,“1”代表頭實體在句子中的起始位置;同樣地,“1”在終止標簽中代表頭實體在句子中的結束位置。
圖2 NPCTS實體關系抽取模型Fig.2 NPCTS entity relation extraction model
頭實體解碼器被用來解析句子中所有可能出現(xiàn)的頭實體。將經(jīng)過BERT編碼器編碼后的字向量Ti輸入全連接層并通過sigmoid函數(shù)激活,得到解碼后的輸出,具體運算過程如下
因為頭實體采用二值化的標簽,所以在訓練過程中損失函數(shù)采用的是二值交叉熵損失函數(shù),具體可由以下兩式表示
尾實體標注用于標記尾實體的索引位置、實體類型以及頭實體與其對應的關系類別。NPCTS采用尾實體關系矩陣與尾實體類型矩陣標記這些信息,這兩種矩陣的標注方式與頭實體標注方式類似,不同點在于尾實體關系矩陣每行代表不同的關系類型。為了將頭實體信息與句子特征相融合,本文采取將字向量中頭實體存在范圍內(nèi)的字向量表示取平均,并與字向量相加,以此達到融合頭實體信息的目的。具體計算過程如下,
尾實體解碼器被用來解析給定頭實體后尾實體存在的范圍與實體類型。為了從融合后的字向量中更好地獲取上下文信息,本文采用雙向LSTM(long short-term memory)層對融合后的字向量做進一步特征提取。雙向LSTM前向傳遞層可以獲取輸入序列的上文信息,后向傳遞層可以獲取輸入序列的下文信息。將一個句子的各個字的字向量序列作為雙向LSTM各個時間步的輸入,再將正LSTM輸出的隱狀態(tài)序列與反向LSTM輸出的隱藏層狀態(tài)序列拼接,得到完整的隱藏層狀態(tài)序列。本文首先將融合字向量輸入兩個不同的雙向LSTM層,分別進行尾實體的關系預測與類別預測,最后再分別輸入全連接層得到解碼后的輸出。具體運算過程可以由公式(10)~(13)表示
本文選用DuIE1.0和CMeIE(Chinese Medical Information Extraction Dataset)作為實驗數(shù)據(jù)集。DuIE1.0中的句子來自百度百科、百度貼吧和百度信息流文本,是規(guī)模較大的基于schema的中文關系抽取數(shù)據(jù)集,包含超過43萬三元組數(shù)據(jù)、21萬中文句子及50個預定義的關系類型。CMeIE是醫(yī)療領域的常用數(shù)據(jù)集,其中兒科語料來源于518種兒科疾病,常見病語料來源于109種常見病。數(shù)據(jù)集包含近75 000個三元組、28 000個疾病句子和53個圖式,將14 339條數(shù)據(jù)用作訓練集,3 585條數(shù)據(jù)用作測試集,4 482條數(shù)據(jù)用作驗證集。為了驗證本模型在應對關系重疊與實體嵌套問題時有更好的表現(xiàn),本文將數(shù)據(jù)集劃分為三個部分,并分別命名為實體對重疊(EPO)、單實體重疊(SEO)與實體嵌套(nested entity)。兩種數(shù)據(jù)集的劃分情況如表1所示(Train為訓練集,Dev為測試集)。
表1 數(shù)據(jù)集信息Table 1 Information of datasets
本文使用準確率(P),召回率(R)和F1值評估模型效果。其中
F1值是一種較為均衡的評估方法,計算公式如下
本文分別從字符級別上的SPO(Subject-Predict-Object)三元組抽取與命名實體識別兩個任務層面對模型進行評估。
算法的實驗環(huán)境:操作系統(tǒng)是Ubuntu20.04,使用的語言是python3.7,BERT中文預訓練語言模型使用Chinese_L-12_H-768_A-12,深度學習框架pytorch1.7.1。句子最大長度設定為180,訓練時的Batch_size為8,分類概率閾值為0.5,學習率(Learning rate)為1E-5,多頭注意力有12層,多頭數(shù)量有12個。模型優(yōu)化器選擇Adam,epochs設置為120。
為了評估NPCTS模型與不同結構搭配的效果,本文設計了一系列的消融實驗作為對照。NPCTS模型建立在預先訓練的BERT模型之上,直接將字向量輸入全連接層作為頭實體與尾實體解碼器。NPCTSembedding表示使用嵌入層生成字向量而非BERT預訓練模型。NPCTSBi-LSTM表示在獲取字向量后,輸入Bi-LSTM層進一步提取特征。消融實驗的結果如表2所示,NPCTSembedding模型在兩個數(shù)據(jù)集上表現(xiàn)較差,說明了BERT預訓練模型生成的字向量對后續(xù)任務的提升作用明顯。NPCTSBi-LSTM與NPCTS相比有較小提升,說明Bi-LSTM模型在處理語義特征方面相較于傳統(tǒng)神經(jīng)網(wǎng)絡表現(xiàn)更佳,可能是由于Bi-LSTM結構可以更好地提取字向量的上下文信息。
NPCTS模型是針對中文文本的實體關系抽取任務,比較難找到統(tǒng)一對比的數(shù)據(jù)集與經(jīng)典的算法。為了進一步驗證模型性能,體現(xiàn)本文方法在準確率和穩(wěn)定性上的優(yōu)勢,將NPCTS模型及其變種與Bert+Bi-LSTM、Bert+Bi-LSTM+CRF、和CalRel[11]四種模型在不同語料庫上進行實驗對比。Bert+Bi-LSTM為流水線學習的實體關系抽取模型,可以完成命名實體識別任務,并在此基礎上判別實體對的關系類型;Bert+Bi-LSTM+CRF(conditional random field)是使用較為普遍的命名實體識別模型,采用CRF分類器識別實體類型。CopyRRL[16]與CasRel[11]模型在英文數(shù)據(jù)集NYT與WebNLG上都取得了不錯的結果,但無法在提取三元組的同時判別頭實體與尾實體的類型。本文使用上述模型在中文數(shù)據(jù)集上復現(xiàn),實驗結果如表2所示,表中“-”代表該模型無法完成該項任務。
表2 不同模型在Du IE1.0與CMeIE數(shù)據(jù)集上的實驗結果Table 2 Results of different methods on Du IE1.0 and CMeIE datasets
從表2中可以看出所有模型在DuIE1.0數(shù)據(jù)集上的表現(xiàn)均優(yōu)于CMeIE,原因在于CMeIE醫(yī)療數(shù)據(jù)集涉及多種醫(yī)療領域專有名詞且分布不均衡,導致模型學習不充分。Bert+Bi-LSTM作為經(jīng)典的流水線式實體關系抽取模型可以完成三元組抽取與實體識別兩項任務,但在整體效果上差強人意,說明在使用傳統(tǒng)序列標注方式以及假定實體間只能存在一種關系的條件下,模型無法應對實體嵌套與關系重疊問題。Bert+Bi-LSTM+CRF模型增加了條件隨機場判別實體類型,在兩個數(shù)據(jù)集上均有較大提升。CopyRRL與CasRel模型均試圖解決關系重疊問題,并在模型上做出改進,在整體效果上有著不錯的表現(xiàn)。在三元組抽取任務上,NPCTSBi-LSTM模型的F1與CasRel模型相比分別有2.5%與0.3%的微提升,表明NPCTSBi-LSTM模型在三元組抽取任務中有不輸于領域內(nèi)效果最好的模型CasRel的表現(xiàn),而且NPCTSBi-LSTM模型還能夠額外完成實體識別任務,并且在實體識別任務上與Bert+Bi-LSTM+CRF模型相比提升了近10%。
針對本文所描述的實體關系抽取領域遇到的實體嵌套和關系重疊等問題,為進一步體現(xiàn)NPCTS模型在應對此問題的有效性,本文使用在完整數(shù)據(jù)集上訓練后的模型在不同類型的測試數(shù)據(jù)集上做驗證,并與Bert+Bi-LSTM、CopyRRL和CasRel模型進行性能對比,實驗結果分別如表3和表4所示。在應對數(shù)據(jù)集中兩種關系重疊樣式以及實體嵌套的文本時,Bert+Bi-LSTM模型的表現(xiàn)相較于在整體數(shù)據(jù)集上的表現(xiàn)下降尤為明顯,然而其他三種模型由于存在應對關系重疊問題的結構或策略,在SEO與EPO類型的文本上的表現(xiàn)與整體數(shù)據(jù)集上的表現(xiàn)差距并不大。與CasRel[11]模型在處理實體嵌套文本時與整體表現(xiàn)差距明顯,其原因在于這兩種模型在進行實體標注時均采用了傳統(tǒng)的指針標注策略,沒有在實體類型上加以區(qū)分,導致其無法解決實體嵌套問題。本文提出的NPCTSBi-LSTM模型則在這三種類型文本上的表現(xiàn)較為一致,這是由于NPCTS模型采用了以實體類型與關系類型作為區(qū)分的指針級聯(lián)標注方式,可以有效應對實體嵌套問題,并識別出實體類型;NPCTS模型將關系模型作為函數(shù),將句子中的頭實體映射到尾實體,解決了重疊問題。實驗結果也印證了該模型在應對關系重疊和實體嵌套問題上的優(yōu)越性。
表3 在Du IE1.0數(shù)據(jù)集上從不同模式的句子中抽取三元組的實驗結果Table 3 Results of extracting relational triples fr om sentences with different patterns on Du IE1.0 dataset
表4 在CMeIE數(shù)據(jù)集上從不同模式的句子中抽取三元組的實驗結果Table 4 Results of extracting relational triples from sentences with different patterns on CMeIE dataset
針對實體關系抽取中實體嵌套和關系重疊問題,本文提出了一種基于指針級聯(lián)標注策略的中文實體關系聯(lián)合抽取模型。該模型采用聯(lián)合學習的方式,將實體關系抽取任務抽象為以關系作為條件通過主體映射客體的函數(shù)fr(s)→o,可以同時從句子中提取多個實體關系元組,并通過一種新型的級聯(lián)二進制標記策略加以實現(xiàn)。這種標記策略使得模型可以在識別嵌套主體的同時判斷主體的實體類型,在識別客體的同時也能對實體類型和關系類型做出判斷。在兩個不同領域的中文數(shù)據(jù)集上的實驗結果表明,此模型可以有效提升實體關系抽取的F1值,在應對實體嵌套和關系重疊問題上表現(xiàn)尤為突出。