鄭慎鵬,陳曉軍,向陽(yáng),沈汝超
1. 同濟(jì)大學(xué)電子與信息工程學(xué)院,上海 201804;
2. 上海國(guó)際港務(wù)(集團(tuán))股份有限公司,上海 200080
目前,網(wǎng)絡(luò)上保存著海量的非結(jié)構(gòu)化文本,且其規(guī)模仍呈指數(shù)級(jí)上升。同時(shí),知識(shí)圖譜被廣泛應(yīng)用在政府治理[1]、智能問(wèn)答[2]、搜索引擎等領(lǐng)域,而知識(shí)圖譜的內(nèi)容豐富程度和及時(shí)性直接影響其應(yīng)用效果。因此,作為自動(dòng)化地從非結(jié)構(gòu)化文本中構(gòu)建知識(shí)圖譜的關(guān)鍵技術(shù)之一,實(shí)體關(guān)系抽取技術(shù)受到了研究人員的廣泛關(guān)注。實(shí)體關(guān)系抽取旨在識(shí)別出文本中實(shí)體和實(shí)體之間的語(yǔ)義關(guān)系,并以三元組的形式<主體,關(guān)系,客體>表示。比如,“《琴鍵右角》是張德蘭演唱的一首單曲”中包含實(shí)體“琴鍵右角”和“張德蘭”,且實(shí)體間存在關(guān)系“歌手”,用三元組表示為<琴鍵右角,歌手,張德蘭>。
早期的實(shí)體關(guān)系抽取方法[3-5]和基于傳統(tǒng)機(jī)器學(xué)習(xí)的實(shí)體關(guān)系抽取方法[6-7]需要專家構(gòu)造大量的規(guī)則或者人工特征,難以應(yīng)對(duì)大規(guī)模的實(shí)體關(guān)系提取。隨著深度學(xué)習(xí)的興起,神經(jīng)網(wǎng)絡(luò)模型可以自動(dòng)提取文本的特征,減少人工提取特征的工作,也能更有力地應(yīng)對(duì)大規(guī)模的實(shí)體關(guān)系提取工作,成為當(dāng)前實(shí)體關(guān)系提取的主流方法。目前,基于神經(jīng)網(wǎng)絡(luò)的實(shí)體關(guān)系抽取方法可以分為流水線方法和聯(lián)合抽取方法兩類。
流水線方法將實(shí)體關(guān)系抽取分解為實(shí)體識(shí)別和關(guān)系分類兩個(gè)步驟,并用兩個(gè)獨(dú)立的模型實(shí)現(xiàn)[8-10]。此類方法先用實(shí)體識(shí)別模型識(shí)別出文本中的所有實(shí)體,然后用關(guān)系分類模型判斷所有可能實(shí)體對(duì)的語(yǔ)義關(guān)系。流水線方法能夠靈活地選擇實(shí)體識(shí)別模型和關(guān)系分類模型,但是其缺點(diǎn)也是顯而易見(jiàn)的。首先,流水線方法存在錯(cuò)誤傳播的問(wèn)題,實(shí)體識(shí)別階段和關(guān)系分類階段的錯(cuò)誤會(huì)疊加,導(dǎo)致最終的性能下降。再者,實(shí)體識(shí)別模型和關(guān)系分類模型是完全獨(dú)立的,忽略了實(shí)體識(shí)別任務(wù)和關(guān)系抽取任務(wù)的內(nèi)在聯(lián)系。
聯(lián)合抽取方法旨在利用一個(gè)模型實(shí)現(xiàn)實(shí)體識(shí)別和關(guān)系抽取,有效避免流水線方法中存在的兩點(diǎn)弊端。聯(lián)合抽取方法依據(jù)解碼方式一般可分為獨(dú)立解碼、級(jí)聯(lián)解碼和一次解碼3類。在獨(dú)立解碼的方法中,實(shí)體識(shí)別和關(guān)系抽取共享文本編碼層,在解碼時(shí)仍然是兩個(gè)獨(dú)立的部分。為了使兩個(gè)任務(wù)間建立更加密切的聯(lián)系,級(jí)聯(lián)解碼的方法通常會(huì)先抽取主體,再根據(jù)主體抽取相關(guān)的關(guān)系-客體。而一次解碼方法則將實(shí)體識(shí)別和關(guān)系抽取統(tǒng)一為一個(gè)任務(wù),一次抽取出實(shí)體對(duì)及其對(duì)應(yīng)關(guān)系。目前級(jí)聯(lián)解碼的方法和一次解碼的方法在實(shí)體關(guān)系抽取中都取得了不錯(cuò)的成績(jī)。在后兩類方法中,實(shí)體嵌套問(wèn)題[11-12]和關(guān)系重疊問(wèn)題相互交織,使情況變得比較復(fù)雜,見(jiàn)表1。Wei Z P等人[13]提出了一種新穎的級(jí)聯(lián)式標(biāo)記框架,很好地解決了聯(lián)合抽取中實(shí)體嵌套和關(guān)系重疊同時(shí)存在的問(wèn)題。該方法將實(shí)體關(guān)系抽取看作抽取主體和根據(jù)主體抽取關(guān)系-客體兩個(gè)部分,并且采用指針網(wǎng)絡(luò)的結(jié)構(gòu)標(biāo)注主體與客體。但是,此方法在表示主體向量時(shí),只是簡(jiǎn)單地將主體所含的所有字向量做平均,這會(huì)導(dǎo)致一些顯著特征在平均后會(huì)丟失,尤其是在中文中。此外,使用指針網(wǎng)絡(luò)標(biāo)注時(shí),模型漏標(biāo)會(huì)導(dǎo)致出現(xiàn)過(guò)長(zhǎng)且有明顯錯(cuò)誤的實(shí)體。針對(duì)該方法中存在的兩點(diǎn)問(wèn)題,本文提出了以下改進(jìn):
● 針對(duì)主體向量的表示問(wèn)題,提出基于主體掩碼的主體向量生成方法,利用注意力機(jī)制和掩碼機(jī)制,生成主體向量;
● 針對(duì)多層指針網(wǎng)絡(luò)的漏標(biāo)問(wèn)題,提出實(shí)體序列標(biāo)注子任務(wù),在解碼實(shí)體時(shí)提供輔助信息。
表1 實(shí)體關(guān)系抽取復(fù)雜情況分析
在知識(shí)圖譜的構(gòu)建過(guò)程中,實(shí)體關(guān)系抽取技術(shù)起著非常重要的作用。早期基于規(guī)則[3]、詞典[4]或本體[5]的實(shí)體關(guān)系抽取方法存在跨領(lǐng)域的可移植性較差、人工標(biāo)注成本較高以及召回率較低等問(wèn)題。后來(lái),相比于早期的方法,以統(tǒng)計(jì)語(yǔ)言模型為基礎(chǔ)的傳統(tǒng)機(jī)器學(xué)習(xí)關(guān)系抽取方法明顯地提高了召回率,具有更強(qiáng)的領(lǐng)域適應(yīng)性,獲得了不錯(cuò)的效果。自從Hinton G E等人[14]首次正式地提出深度學(xué)習(xí)的概念,深度學(xué)習(xí)在多個(gè)領(lǐng)域取得了突破性進(jìn)展,也漸漸被研究人員應(yīng)用在實(shí)體關(guān)系抽取方面。此外,Transformer結(jié)構(gòu)[15]、BERT(bidirectional encoder representations from transformers)[16]、RoBERTa(robustly optimized BERT pretraining approach)[17]等大規(guī)模預(yù)訓(xùn)練語(yǔ)言模型也極大地推動(dòng)了實(shí)體關(guān)系抽取的進(jìn)步?,F(xiàn)階段,實(shí)體關(guān)系抽取主要分為流水線方法和聯(lián)合抽取方法。
流水線方法是指在用實(shí)體識(shí)別模型抽取出所有實(shí)體的基礎(chǔ)上,利用關(guān)系分類模型抽取所有實(shí)體對(duì)的關(guān)系。較早期的基于神經(jīng)網(wǎng)絡(luò)的流水線方法主要使用卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)或循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)。Zeng D J等人[18]首次采用CNN提取詞級(jí)和句子級(jí)特征,通過(guò)softmax層進(jìn)行關(guān)系分類,提高了關(guān)系抽取模型的準(zhǔn)確性。
Socher R等人[19]首先使用RNN的方法進(jìn)行實(shí)體關(guān)系抽取。該方法利用RNN對(duì)標(biāo)注文本中的句子進(jìn)行句法解析,經(jīng)過(guò)不斷迭代得到句子的向量表示,有效地考慮了句子的句法結(jié)構(gòu)。為了解決RNN的梯度消失和梯度爆炸問(wèn)題,長(zhǎng)短期記憶(long short-term memory,LSTM)神經(jīng)網(wǎng)絡(luò)被提出。Yan X等人[8]提出基于LSTM和句法依存分析樹(shù)的最短路徑的方法進(jìn)行關(guān)系抽取。隨著圖神經(jīng)網(wǎng)絡(luò)在近幾年取得一些進(jìn)展,圖神經(jīng)網(wǎng)絡(luò)也被應(yīng)用在關(guān)系抽取中,Guo Z J等人[9]提出了一種將全依賴樹(shù)作為輸入的注意力引導(dǎo)圖卷積網(wǎng)絡(luò)模型。該模型充分利用了依賴樹(shù)中的信息,以便更好地提取出相關(guān)關(guān)系。雖然流水線方法能夠取得不錯(cuò)的效果,但也存在以下3個(gè)缺點(diǎn)。
● 錯(cuò)誤累積:實(shí)體識(shí)別模塊的錯(cuò)誤會(huì)影響接下來(lái)的關(guān)系分類性能。
● 忽視了兩個(gè)子任務(wù)之間存在的聯(lián)系:丟失信息,影響抽取效果。
● 產(chǎn)生冗余實(shí)體對(duì):由于要對(duì)所有抽取出的實(shí)體兩兩配對(duì),然后再進(jìn)行關(guān)系分類,那些不存在關(guān)系的實(shí)體對(duì)就會(huì)帶來(lái)多余信息,提升錯(cuò)誤率。
聯(lián)合抽取方法[20]能夠在一個(gè)模型中實(shí)現(xiàn)實(shí)體關(guān)系抽取,此類方法能夠利用實(shí)體和關(guān)系間的聯(lián)系,減少或者避免流水線方法帶來(lái)的問(wèn)題。
早期聯(lián)合抽取方法通常是基于人工構(gòu)造特征的結(jié)構(gòu)化學(xué)習(xí)方法。Miwa M等人[21]首次將神經(jīng)網(wǎng)絡(luò)的方法用于聯(lián)合抽取實(shí)體和關(guān)系,該方法將實(shí)體關(guān)系抽取分解為實(shí)體識(shí)別子任務(wù)和關(guān)系分類子任務(wù)。在模型中使用雙向序列LSTM對(duì)文本進(jìn)行編碼,將實(shí)體識(shí)別子任務(wù)當(dāng)作序列標(biāo)注任務(wù),輸出具有依賴關(guān)系的實(shí)體標(biāo)簽。同時(shí),在關(guān)系分類子任務(wù)中捕獲詞性標(biāo)簽等依賴特征和實(shí)體識(shí)別子任務(wù)中輸出的實(shí)體序列,形成依存樹(shù),并根據(jù)依存樹(shù)中目標(biāo)實(shí)體間的最短路徑對(duì)文本進(jìn)行關(guān)系抽取。在該模型中,關(guān)系分類子任務(wù)和實(shí)體識(shí)別子任務(wù)的解碼過(guò)程仍然是獨(dú)立的,它們僅僅共享了編碼層的雙向序列LSTM表示,并不能完全地避免流水線方法的問(wèn)題。Zheng S C等人[22]認(rèn)為之前的聯(lián)合抽取方法雖然將兩個(gè)任務(wù)整合到一個(gè)模型中并共享了一部分參數(shù),但是實(shí)體識(shí)別與關(guān)系抽取任務(wù)仍是兩個(gè)相對(duì)獨(dú)立的過(guò)程。于是Zheng S C等人[22]提出了一種基于新的標(biāo)注策略的實(shí)體關(guān)系抽取方法,把原來(lái)涉及實(shí)體識(shí)別和關(guān)系分類兩個(gè)子任務(wù)的聯(lián)合學(xué)習(xí)模型完全變成了一個(gè)序列標(biāo)注問(wèn)題。在該方法中,實(shí)體的位置標(biāo)簽和關(guān)系標(biāo)簽被統(tǒng)一為一個(gè)標(biāo)簽,通過(guò)一個(gè)端到端的神經(jīng)網(wǎng)絡(luò)模型一次解碼就可得到實(shí)體以及實(shí)體間的關(guān)系,解決了獨(dú)立解碼的實(shí)體關(guān)系聯(lián)合抽取方法的交互不充分和實(shí)體冗余問(wèn)題。但是,該方法沒(méi)有能力應(yīng)對(duì)普遍存在的實(shí)體嵌套和關(guān)系重疊的情況,這使得該方法在實(shí)際應(yīng)用中難以取得好的效果。
為了應(yīng)對(duì)實(shí)體嵌套和關(guān)系重疊的問(wèn)題,Li X Y等人[23]提出將實(shí)體關(guān)系聯(lián)合抽取的任務(wù)當(dāng)作一個(gè)多輪問(wèn)答類問(wèn)題來(lái)處理,該方法需要構(gòu)造不同的問(wèn)題模板,通過(guò)一問(wèn)一答的形式依次提取出主體、關(guān)系、客體。這種多輪問(wèn)答的方法能夠很好地解決實(shí)體嵌套和關(guān)系重疊的問(wèn)題,但是其需要為每一種主體類型、每一種關(guān)系都設(shè)計(jì)一個(gè)問(wèn)答模板,并進(jìn)行多次問(wèn)答,這會(huì)產(chǎn)生很多計(jì)算冗余,非常消耗計(jì)算資源。Wei Z P等人[13]提出了一種級(jí)聯(lián)式解碼實(shí)體關(guān)系抽取方法,并用多層二元指針網(wǎng)絡(luò)標(biāo)記實(shí)體。不同于獨(dú)立解碼模型,該方法將任務(wù)分解為主體識(shí)別子任務(wù)和依據(jù)主體抽取關(guān)系-客體子任務(wù),而且將兩個(gè)子任務(wù)都統(tǒng)一為序列標(biāo)注問(wèn)題。該方法解決了實(shí)體嵌套和關(guān)系重疊的問(wèn)題,同時(shí)沒(méi)有引入太多的冗余計(jì)算。但是,此方法簡(jiǎn)單地將主體所含的所有字向量取平均后作為主體向量,導(dǎo)致一些顯著特征在平均后會(huì)丟失。此外,因?yàn)橹羔樉W(wǎng)絡(luò)僅標(biāo)記實(shí)體的首尾位置,當(dāng)出現(xiàn)漏標(biāo)時(shí),會(huì)導(dǎo)致模型解碼出比較長(zhǎng)的錯(cuò)誤實(shí)體。為此,本文提出基于主體掩碼的主體向量生成方法,并利用實(shí)體序列標(biāo)注輔助指針網(wǎng)絡(luò)解碼實(shí)體。
實(shí)體關(guān)系抽取旨在抽取出文本中所有的<主體,關(guān)系,客體>三元組,而這些三元組間可能會(huì)存在實(shí)體嵌套和關(guān)系重疊的情況,為了應(yīng)對(duì)這類情況,Wei Z P等人[13]提出了一種基于新型的級(jí)聯(lián)式二元標(biāo)注結(jié)構(gòu)的實(shí)體關(guān)系抽取模型。不同于以往的模型,該模型將任務(wù)分解為主體識(shí)別階段和關(guān)系-客體識(shí)別階段。在該模型的基礎(chǔ)上,本文提出基于主體掩碼的主體向量生成方法,利用注意力機(jī)制和掩碼機(jī)制,生成主體向量。此外,為了排除因模型漏標(biāo)產(chǎn)生的長(zhǎng)度過(guò)長(zhǎng)的實(shí)體,增加實(shí)體序列標(biāo)注任務(wù),以輔助實(shí)體解碼。
模型結(jié)構(gòu)如圖1所示。首先,該模型將文本輸入編碼層,得到文本向量序列hN。然后,將文本向量序列hN輸入主體指針網(wǎng)絡(luò),得到主體k。接著,根據(jù)主體得到主體掩碼序列,將文本向量序列hN和主體掩碼序列輸入Transformer層,在該層中計(jì)算出與每個(gè)字相關(guān)的主體向量序列,與文本向量序列hN相加,得到關(guān)系-客體向量序列。最后,通過(guò)客體識(shí)別網(wǎng)絡(luò)預(yù)測(cè)得到主體k的所有相關(guān)客體,而主體和客體之間的關(guān)系由客體所在指針網(wǎng)絡(luò)的層數(shù)決定。此外,模型還會(huì)取出編碼層的中間某一層作為實(shí)體序列標(biāo)注的輸入,該子任務(wù)的目標(biāo)是標(biāo)記出所有屬于主體或客體的字。圖1中主體掩碼序列和關(guān)系-客體標(biāo)記結(jié)構(gòu)中使用“1”和“2”區(qū)分不同主體和與不同主體相關(guān)的客體。
圖1 基于主體掩碼的實(shí)體關(guān)系抽取模型
實(shí)體標(biāo)記有多種不同的方案,從簡(jiǎn)單地使用0/1標(biāo)記到使用OBIE(O表示非實(shí)體,B表示開(kāi)始,I表示內(nèi)部,E表示實(shí)體尾部)標(biāo)記。但是這些方案不能解決實(shí)體嵌套問(wèn)題,這在相當(dāng)程度上降低了實(shí)體關(guān)系抽取的準(zhǔn)確率。為了解決實(shí)體嵌套的問(wèn)題,本文采用Wei Z P等人[13]使用的指針網(wǎng)絡(luò)標(biāo)記方案。指針網(wǎng)絡(luò)在解碼時(shí)一般采用就近原則,頭指針與后文的第一個(gè)尾指針配對(duì),尾指針與前文中最近的頭指針配對(duì)。若出現(xiàn)頭指針、頭指針、尾指針、尾指針的序列模式,則認(rèn)定為包含模式,將處于最前和最后的頭尾指針配對(duì),中間的頭尾指針配對(duì),如圖1中例子所示。
在主體識(shí)別的指針網(wǎng)絡(luò)中僅使用一對(duì)頭尾指針進(jìn)行標(biāo)注,計(jì)算式如下:
關(guān)系-客體識(shí)別的指針網(wǎng)絡(luò)由N對(duì)頭尾指針標(biāo)注序列構(gòu)成,計(jì)算式如下:
Transformer結(jié)構(gòu)由Vaswani A等人[15]在2018年提出。Transformer將矩陣作為輸入,其中l(wèi)為文本長(zhǎng)度,d為輸入維度。接著,H分別與Wq、Wk和Wv3個(gè)矩陣相乘,得到查詢矩陣Q、關(guān)鍵字矩陣K和值矩陣V。通常,Wq等3個(gè)矩陣的大小都為,dk為一個(gè)超參數(shù)。Transformer中注意力機(jī)制的計(jì)算如下所示:
其中,Qi為第i個(gè)字的查詢向量,Kj為第j個(gè)字的關(guān)鍵字向量。Ai,j為注意力分?jǐn)?shù)矩陣A的第i行第j列的元素,表示第i個(gè)字在第j個(gè)字上的注意力分?jǐn)?shù)。NMAX為一個(gè)極大的正數(shù),Mi,j為掩碼矩陣M的第i行第j列的元素,表示第i個(gè)字對(duì)第j個(gè)字的查詢掩碼,使注意力集中在指定的關(guān)鍵字上。softmax函數(shù)在最后一個(gè)維度上計(jì)算出歸一化后的注意力分?jǐn)?shù)。在Transformer中,為了提升模型性能,使用多組參數(shù)實(shí)現(xiàn)注意力機(jī)制,再將通過(guò)不同組參數(shù)得到的向量進(jìn)行拼接,然后通過(guò)Wo做線性變換得到多頭注意力機(jī)制的輸出。這類使用多組參數(shù)的注意力機(jī)制被稱為多頭注意力機(jī)制,如下所示:
其中,h表示第幾個(gè)“頭”,n表示“頭”的數(shù)量,且會(huì)使dk×n=d,Wo的大小為。
為了應(yīng)對(duì)深度學(xué)習(xí)中的網(wǎng)絡(luò)退化問(wèn)題,Transformer中采用殘差連接的方式,并加入歸一化層,如下所示:
采用SPSS 19.0統(tǒng)計(jì)學(xué)軟件對(duì)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析。計(jì)量數(shù)據(jù)資料以均數(shù)±標(biāo)準(zhǔn)差(±s)表示,計(jì)數(shù)資料[n(%)]采用χ2檢驗(yàn),組間比較采用獨(dú)立樣本t檢驗(yàn),P<0.05為差異有統(tǒng)計(jì)學(xué)意義。
在得到歸一化層的輸出Z后,將Z通過(guò)一層全連接層和歸一化層得到Transformer最后的輸出。
在識(shí)別出輸入文本中的所有主體后,根據(jù)每個(gè)主體的位置構(gòu)造出各自的主體掩碼msub。具體來(lái)說(shuō),構(gòu)造一個(gè)與輸入文本等長(zhǎng)的掩碼序列,將主體開(kāi)始到結(jié)束對(duì)應(yīng)的位置全部標(biāo)記為1,其余位置標(biāo)記為0,在一個(gè)句子中,一個(gè)實(shí)體可能會(huì)出現(xiàn)多次,則每個(gè)對(duì)應(yīng)位置都需要標(biāo)記為1。然后,將掩碼序列msub和文本向量序列hN輸入注意力層,msub使注意力層在計(jì)算文本各位置的注意力分?jǐn)?shù)時(shí),只關(guān)注掩碼序列中標(biāo)為1的位置,如圖2所示。在計(jì)算“周立波”的主體向量時(shí),每個(gè)字僅和“周立波”交互計(jì)算注意力分?jǐn)?shù),由此得到“周立波”在各個(gè)字上的主體向量序列。將主體向量序列與文本向量序列hN相加,就可得到與各個(gè)主體相關(guān)的關(guān)系-客體向量序列。Transformer中的注意力機(jī)制和殘差連接恰好可以實(shí)現(xiàn)生成主體向量序列并與文本向量序列hN相加的操作,因此本文將主體掩碼msub和文本向量序列hN輸入Transformer就可得到關(guān)系-客體向量序列
實(shí)體序列標(biāo)注的任務(wù)是標(biāo)記出文本中的所有主體和客體,在這個(gè)任務(wù)中僅使用一行標(biāo)注序列,將所有屬于主體和客體的字都標(biāo)記為1,如圖1所示。在主體識(shí)別階段或者關(guān)系-客體識(shí)別階段,對(duì)于一些過(guò)長(zhǎng)的實(shí)體,需要進(jìn)一步判斷該實(shí)體包含范圍內(nèi)的實(shí)體序列標(biāo)注結(jié)果是否全部為1。若有一個(gè)位置為0,則判斷該實(shí)體為錯(cuò)誤實(shí)體,并忽略該實(shí)體。該任務(wù)要求標(biāo)記出實(shí)體的所有位置,而不僅是實(shí)體的首尾位置,因此為了避免對(duì)主任務(wù)產(chǎn)生不利的影響,本文選取RoBERTa的中間層的輸出,通過(guò)簡(jiǎn)單的全連接層和Sigmoid得到每個(gè)位置的實(shí)體概率。
圖2 注意力計(jì)算可視矩陣
本文模型為多任務(wù)學(xué)習(xí)模型,包含主體識(shí)別、關(guān)系-客體識(shí)別和實(shí)體序列標(biāo)注3個(gè)子任務(wù)。每個(gè)任務(wù)的基礎(chǔ)都是做二分類任務(wù),因此將二元交叉熵作為各個(gè)任務(wù)的損失函數(shù):
其中,losssub是主體識(shí)別損失,losssbj是關(guān)系-客體識(shí)別損失,lossentity是實(shí)體序列標(biāo)注損失,α、β、γ分別為各項(xiàng)損失的權(quán)重。
本文使用的數(shù)據(jù)是由百度提供的DuIE2.0數(shù)據(jù)集[24]。該數(shù)據(jù)集是業(yè)界規(guī)模最大的基于模式的中文信息抽取數(shù)據(jù)集,其包含超過(guò)21萬(wàn)個(gè)中文句子及48個(gè)已定義好的模式,數(shù)據(jù)集中包含43個(gè)簡(jiǎn)單知識(shí)的模式和5個(gè)復(fù)雜知識(shí)的模式。數(shù)據(jù)集中的句子來(lái)自百度百科、百度貼吧和百度信息流文本。17萬(wàn)個(gè)句子被劃分為訓(xùn)練集,2萬(wàn)個(gè)句子被劃分為驗(yàn)證集,2萬(wàn)個(gè)句子被劃分為測(cè)試集,將micro-F1值作為評(píng)測(cè)指標(biāo)。當(dāng)提取的三元組的主體、關(guān)系、客體與標(biāo)注一致時(shí),視為正確。
DuIE2.0數(shù)據(jù)集中包含43種簡(jiǎn)單模式和5種復(fù)雜模式,復(fù)雜模式會(huì)有多個(gè)客體值。例如,<主體(影視作品),關(guān)系1(票房),客體1(數(shù)值),關(guān)系2(地點(diǎn)),客體2(地點(diǎn))>,這個(gè)模式要求抽取出一個(gè)影視作品在某地的票房。本文將所有的復(fù)雜模式分解為簡(jiǎn)單模式,仍以上面這個(gè)例子為例,其會(huì)被分解為<影視作品,票房,數(shù)值>、<影視作品,上映地點(diǎn),地點(diǎn)>、<數(shù)值,票房-地點(diǎn),地點(diǎn)>,對(duì)于其他的復(fù)雜模式,也進(jìn)行類似的處理。另外,刪除了簡(jiǎn)單模式中<人物,丈夫,人物>的模式,因?yàn)槟J?人物,妻子,人物>也能表達(dá)出這個(gè)概念。最后得到54種簡(jiǎn)單模式。
模型編碼器使用RoBERTa-base版本。文本最大長(zhǎng)度限制為205個(gè)字。批大小設(shè)置為16,訓(xùn)練12輪。RoBERTa部分的學(xué)習(xí)率設(shè)置為3×10-5,除RoBERTa外的網(wǎng)絡(luò)學(xué)習(xí)率設(shè)置為9×10-5。同時(shí)使用學(xué)習(xí)率線性衰減的策略,學(xué)習(xí)率計(jì)算式如下:
其中,i表示訓(xùn)練輪次,ea為總訓(xùn)練輪次,lri表示第i個(gè)訓(xùn)練輪次的學(xué)習(xí)率,lrinit表示初始學(xué)習(xí)率。
在訓(xùn)練的初始階段,預(yù)訓(xùn)練模型以外的部分是隨機(jī)初始化的,會(huì)產(chǎn)生很大的梯度。為了防止預(yù)訓(xùn)練模型的參數(shù)分布受到無(wú)意義的破壞,將除RoBERTa預(yù)訓(xùn)練模型外的網(wǎng)絡(luò)先訓(xùn)練500步,再一起訓(xùn)練全部的網(wǎng)絡(luò)。此時(shí),模型損失相比初始時(shí)已經(jīng)下降了一個(gè)數(shù)量級(jí)。損失函數(shù)中α、β、γ分別設(shè)置為1、1、0.05。在實(shí)體序列標(biāo)注任務(wù)中,取RoBERTa的第9層輸出作為輸入。
在訓(xùn)練時(shí),若一個(gè)句子中有多個(gè)不同主體的三元組需要抽取,Wei Z P等人[13]會(huì)隨機(jī)抽取一個(gè)主體進(jìn)行訓(xùn)練。但是,同一個(gè)句子內(nèi)的三元組是有聯(lián)系的,這種操作會(huì)丟失這部分信息,且需要訓(xùn)練更多的輪數(shù)。因此,本文將有多個(gè)主體的樣本復(fù)制多份,并各自計(jì)算主體向量,實(shí)現(xiàn)在一個(gè)批中訓(xùn)練全部的三元組。
實(shí)驗(yàn)結(jié)果見(jiàn)表2。Official為百度官方的基線模型,該模型一次解碼出主體與客體,并根據(jù)就近原則配對(duì);Pipline是一種常規(guī)的流水線模型,用實(shí)體識(shí)別模型抽取出所有實(shí)體,在關(guān)系判斷模型中判斷所有實(shí)體對(duì)間是否存在關(guān)系;Mean表示取主體的所有向量做平均,并將其作為主體的向量表示;Max表示取主體所有向量做Max操作,得到主體的向量表示;Transf表示使用主體掩碼生成主體;Transf+seq表示在Transf的基礎(chǔ)上增加實(shí)體序列標(biāo)注任務(wù)輔助實(shí)體的識(shí)別。從表2可以看出,基于主體掩碼的主體向量表示方法相比于簡(jiǎn)單取平均值和取最大值的方法,F(xiàn)1值都有一定的提高。另外,在Transf方法的基礎(chǔ)上引入實(shí)體序列標(biāo)注子任務(wù)使模型在測(cè)試集上的F1值進(jìn)一步提高了0.003 3。最終,模型在測(cè)試集上F1值為0.750 8。
在例子“安徽四創(chuàng)電子股份有限公司,現(xiàn)注冊(cè)資本1.59億元,總資產(chǎn)36.62億元”中有實(shí)體“安徽四創(chuàng)電子股份有限公司”和“1.59億元”,存在關(guān)系“注冊(cè)資金”。使用Mean方法生成主體向量可以理解為將注意力分散到了每個(gè)字上。本文所述方法顯示了其較為不同的過(guò)程。在本例子中,“1.59億元”會(huì)將注意力更加集中在“股份有限”上,而其他字則會(huì)集中在“四”“公司”或是分散在各個(gè)字上。該例子表明,不同的字會(huì)注意到實(shí)體的不同位置,尤其是在實(shí)體中包含一些有具體含義的詞語(yǔ)時(shí),見(jiàn)表3。
表2 不同模型在DuIE2.0數(shù)據(jù)集的F1值
表3 樣例的注意力分布
利用實(shí)體關(guān)系抽取技術(shù)自動(dòng)化地抽取無(wú)結(jié)構(gòu)化文本中的三元組信息,能夠及時(shí)更新知識(shí)圖譜的內(nèi)容,為知識(shí)圖譜推理和應(yīng)用提供支持。本文提出利用注意力機(jī)制和掩碼機(jī)制生成主體表示,同時(shí)提出利用實(shí)體序列標(biāo)注結(jié)合指針網(wǎng)絡(luò)進(jìn)行實(shí)體抽取。最終的實(shí)驗(yàn)結(jié)果表明,合適的主體向量生成方法能夠在不改變模型整體結(jié)構(gòu)的前提下,有效地提升模型效果。另外,結(jié)合實(shí)體序列標(biāo)注,可以解決在指針網(wǎng)絡(luò)中因漏標(biāo)而解碼出一些較長(zhǎng)的實(shí)體的問(wèn)題。最終,模型在DuIE2.0數(shù)據(jù)集上的F1值為0.750 8,因?yàn)樵摂?shù)據(jù)還未被太多研究者使用,所以在百度官方排名上暫列第一。另外,在實(shí)驗(yàn)過(guò)程中發(fā)現(xiàn),基于遠(yuǎn)程監(jiān)督和人工修正的DuIE2.0數(shù)據(jù)集中存在較多的漏標(biāo)三元組。在后面的工作中,筆者計(jì)劃研究漏標(biāo)、錯(cuò)標(biāo)的噪聲問(wèn)題。