蘇方方,李 霏,姬東鴻
(武漢大學(xué) 國家網(wǎng)絡(luò)安全學(xué)院 空天信息安全與可信計算教育部重點實驗室,湖北 武漢 430072)
生物醫(yī)學(xué)事件抽取旨在從非結(jié)構(gòu)化的文本中抽取細粒度實體之間復(fù)雜的交互過程,并以結(jié)構(gòu)化的形式呈現(xiàn)[1-2]。其能幫助人們快速獲取知識,因此自生物醫(yī)學(xué)事件抽取任務(wù)提出以來,一直都是非常重要的研究領(lǐng)域,備受研究人員的關(guān)注。然而由于生物醫(yī)學(xué)事件涉及復(fù)雜的多元關(guān)系,從生物醫(yī)學(xué)文本中準(zhǔn)確抽取事件信息成為了一項極大的挑戰(zhàn)。
生物醫(yī)學(xué)事件抽取是從生物醫(yī)學(xué)文本中發(fā)現(xiàn)觸發(fā)詞并確定其類型,以及尋找該觸發(fā)詞的論元集合的過程。該任務(wù)的處理一般分為三個步驟[3-4]: ①觸發(fā)詞識別,例如,圖1(a)中的斜體“phosphorylate”是觸發(fā)詞,其引發(fā)了兩個事件類型,分別是“Phosphorylation”和“Positive regulation”; ②關(guān)系抽取,即觸發(fā)詞和候選論元之間的關(guān)系判斷。例如觸發(fā)詞“phosphorylate”與蛋白質(zhì)“NIK”之間的關(guān)系是“Cause”; ③論元組合,觸發(fā)詞與不同的論元組合成不同的事件,在圖1(b)中觸發(fā)詞“phosphorylate”生成了E1和E2兩個事件。
圖1 生物醫(yī)學(xué)事件抽取例子
生物醫(yī)學(xué)事件抽取是一個十分復(fù)雜的任務(wù),早期的研究采用串型方法[5-6],該類方法按照生物醫(yī)學(xué)事件抽取的標(biāo)準(zhǔn)流程逐一解決每個子任務(wù)。然而由于串型方法會導(dǎo)致嚴(yán)重的錯誤傳播問題,研究人員開始使用聯(lián)合模型[3,7-8]進行生物醫(yī)學(xué)事件抽取,并獲取了一定的性能提升。而隨著神經(jīng)網(wǎng)絡(luò)的蓬勃發(fā)展,深度學(xué)習(xí)被用來進行生物醫(yī)學(xué)事件抽取并獲得了良好的效果。但目前仍存在以下不足之處: ①在生物醫(yī)學(xué)事件抽取任務(wù)中,一個觸發(fā)詞可能存在多種類型,在現(xiàn)有的方法一般對其進行簡化處理,僅識別其中一個類型而忽略其他類型,不可避免地造成一定程度的性能損失。②生物醫(yī)學(xué)事件抽取任務(wù)分解的子任務(wù)眾多,在現(xiàn)有的研究方法中,神經(jīng)網(wǎng)絡(luò)方法中僅實現(xiàn)部分子任務(wù)的聯(lián)合建模而不能實現(xiàn)所有子任務(wù)的聯(lián)合學(xué)習(xí)。③目前所有生物醫(yī)學(xué)事件抽取模型都是基于分類的方法,針對每個子任務(wù),要么是人工定義特征,要么是神經(jīng)網(wǎng)絡(luò)編碼特征,即生物醫(yī)學(xué)事件抽取方法比較單一。
為了解決上述問題,同時也隨著Google的預(yù)訓(xùn)練語言模型T5[9]以及Facebook的預(yù)訓(xùn)練語言模型BART[10]等生成式框架的發(fā)布,其將自然語言處理中的任務(wù)歸結(jié)為序列到序列的框架,使得自然語言中的各類任務(wù)有了新的解決方式。伴隨著這些新技術(shù)的出現(xiàn),生物醫(yī)學(xué)事件抽取不再局限于從輸入文本中抽取事件,還可以使用生成式模型來獲取事件。
本文提出了一種基于T5框架的生成式的生物醫(yī)學(xué)事件抽取方法。首先,定義了靈活的輸出序列,其可以在單一輸出序列中包含多個事件,且能表達每個事件的層次關(guān)系,更進一步聯(lián)合建模了觸發(fā)詞識別、關(guān)系抽取以及論元組合子任務(wù),妥善解決了以往模型將論元組合單獨處理的缺陷。其次,在生成輸出序列時采用了可控解碼策略[11-12],使得在每一步解碼過程中充分利用觸發(fā)詞類型和論元角色之間的制約關(guān)系[13],減少搜索空間,強化搜索目標(biāo)詞的準(zhǔn)確性,進一步提升解碼性能。最后,考慮到預(yù)訓(xùn)練語言模型T5不熟悉生物醫(yī)學(xué)文本,由普通領(lǐng)域轉(zhuǎn)向生物醫(yī)學(xué)領(lǐng)域時,兩者之間會存在詞匯、句法等方面的差異,并且輸出序列是增廣自然語言,缺少自然語言語法的約束。為了逐步適應(yīng)復(fù)雜的事件結(jié)構(gòu),更好地生成相對準(zhǔn)確的序列,本文采用了課程學(xué)習(xí)[14-15]的訓(xùn)練方法,先從簡單的序列開始學(xué)習(xí),比如在生物醫(yī)學(xué)語料中的兩個簡單任務(wù)上進行微調(diào)T5,使其首先熟悉生物醫(yī)學(xué)語料。此外,由于生物醫(yī)學(xué)事件具有復(fù)雜的層次關(guān)系,使用T5先學(xué)習(xí)事件的子結(jié)構(gòu),之后再進階到有嵌套結(jié)構(gòu)的完整事件序列。圖2給出了本文進行生物醫(yī)學(xué)事件抽取的流程圖。
本文模型在Genia 2011[16]和Genia 2013[17]兩個公開評測任務(wù)上進行了評估。實驗結(jié)果表明在Genia 2011語料上獲得了較好的結(jié)果(62.40%的F1值),在Genia 2013年的語料中取得最好的F1值(54.85%),說明了采用生成式的方式進行生物醫(yī)學(xué)事件抽取是可行的。
本節(jié)首先介紹如何將結(jié)構(gòu)化事件轉(zhuǎn)換為線性化序列,然后詳細描述生成式網(wǎng)絡(luò)以及可控解碼算法,最后給出模型的學(xué)習(xí)過程以及序列還原為結(jié)構(gòu)化事件的過程。
為了使用生成式模型進行生物醫(yī)學(xué)事件抽取,需要將結(jié)構(gòu)化的事件線性序列化,即由圖3(a)轉(zhuǎn)化為圖3(c)。而將有層次結(jié)構(gòu)的事件進行線性化表示時需要滿足以下兩個原則:
(1) 結(jié)構(gòu)化表示和線性序列化表示要包含相同的事件信息;
(2) 線性化序列必須能以確定性的方式還原為結(jié)構(gòu)化的事件。
本文遵循多個事件之間并列、事件內(nèi)部嵌套的規(guī)則進行事件序列化。多個事件在線性序列中的前后順序以事件觸發(fā)詞在輸入序列中的位置為第一順序,即事件觸發(fā)詞在前,事件序列在前,否則事件序列在后。同一個觸發(fā)詞如果有多種類型,并且每個類型都生成了事件,則以觸發(fā)詞類型為第二順序,Simple類型排序靠前,Binding類型次之,Complex類型最后,例如,圖3(c)中首先是Simple類型“Phosphorylation”,然后是Complex類型“Positive regulation”。一個完整事件的線性表示由兩部分組成: 觸發(fā)詞語義單元和論元語義單元。完整的語義單元由一對小括號“(”和“)”封裝而成,它是線性表達式中語義結(jié)構(gòu)的指示器。觸發(fā)詞語義單元是由觸發(fā)詞類型和觸發(fā)詞組合而成的,即(觸發(fā)詞類型,觸發(fā)詞);同樣地,論元語義單元由論元角色和論元組成,即(論元角色,論元)。值得注意的是,如果觸發(fā)詞沒有論元,就是一個空事件,那么在線性化序列中用“(觸發(fā)詞類型,觸發(fā)詞文本)”表示。無論生物醫(yī)學(xué)事件抽取采用何種方法和框架,嵌套事件都是一個棘手的問題,在涉及到了嵌套事件的Complex類型的生物醫(yī)學(xué)事件中,其識別性能較低。在本文中我們將嵌套事件簡化為將論元事件中的觸發(fā)詞替換成主事件的論元。
(1)
(2)
生物醫(yī)學(xué)事件生成模型在生成線性序列時以開始標(biāo)記“〈bos〉”作為開頭,以結(jié)束標(biāo)記“〈eos〉”結(jié)束。整個輸出序列的條件概率p(y|x)是由每個步驟的概率p(yt|y (3) 其中,y 給定隱向量表示H,生成式模型逐詞生成線性序列。在每一步解碼時,模型在整個候選詞匯表V中進行概率分布計算,以得到每個詞的概率值。如果模型不對整個詞匯集進行剪枝處理,則模型會選用最高預(yù)測概率p(yt|y 為了使得解碼過程更為規(guī)范和準(zhǔn)確,以上信息可以在解碼的每一步有效約束候選詞范圍,減少搜索時間,強化搜索目標(biāo)。因此本文使用基于字典樹(Trie)的可控解碼算法[12]來生成事件序列。在可控解碼過程中,引入事件模式知識作為解碼器的提示,確保生成有效事件。具體地說,貪心解碼算法在每一步的解碼中是從整個候選詞匯表V中選擇目標(biāo)詞,而本文基于字典樹的可控解碼方法則是動態(tài)地選擇和修剪候選詞匯表V。完整的線性解碼過程可以通過搜索字典樹進行,如圖4(a)所示。具體而言,事件生成網(wǎng)絡(luò)在每個生成步驟都有三種候選詞匯V′: 圖4 生物醫(yī)學(xué)事件解碼過程中使用的字典樹 ? 事件模式: 事件類型集合Γ和論元角色集合R; ? 文本字符串: 事件觸發(fā)詞和事件論元集合S,在輸入的文本范圍內(nèi)進行選擇; ? 結(jié)構(gòu)指示符: “(”和“)”,用于組合事件模式和文本字符串。 圖4(a)給出的是線性生物醫(yī)學(xué)事件字典樹,從開始標(biāo)記“〈bos〉”開始解碼,按照字典樹進行每一步解碼直至輸出終止符“〈eos〉”。這樣模型生成的線性化的生物醫(yī)學(xué)事件序列既符合規(guī)范,又可以逆序準(zhǔn)確地構(gòu)建有層次結(jié)構(gòu)的表示。圖4(b)是事件類型字典樹,該知識模式提供了觸發(fā)詞類型與論語角色的制約關(guān)系以及觸發(fā)詞類型決定論元個數(shù)知識。因為每個事件類型所帶有的論元角色是不同的,所以在模型識別了事件類型后,可以根據(jù)事件類型字典樹搜索論元角色,使得論元角色的生成得到進一步約束,強化更為準(zhǔn)確的目標(biāo)詞。 本節(jié)將介紹如何以端到端的方式學(xué)習(xí)生物醫(yī)學(xué)事件生成式網(wǎng)絡(luò)。本文使用粗粒度標(biāo)注的“〈增廣式文本輸入,事件線性化輸出〉”進行學(xué)習(xí),無需使用以往方法中的細粒度詞級別標(biāo)注。給定一個訓(xùn)練數(shù)據(jù)集D={(x1,y1), (x2,y2),…, (xd,yd)},其中每個實例都是一對輸入輸出事件樣例,d是訓(xùn)練語料中的實例個數(shù)。本文使用的損失函數(shù)是負對數(shù)似然函數(shù),如式(4)所示。 (4) 其中,θ是模型參數(shù),x是輸入文本,y是輸出序列。 與一般的文本到文本生成模型不同的是,生物醫(yī)學(xué)事件從序列到結(jié)構(gòu)的生成模型的學(xué)習(xí)更具挑戰(zhàn)性: (1) 預(yù)訓(xùn)練語言模型T5是在普通領(lǐng)域上進行學(xué)習(xí)訓(xùn)練,沒有接觸過生物醫(yī)學(xué)文本,對生物醫(yī)學(xué)語料信息不熟悉。 (2) 生物醫(yī)學(xué)事件生成模型與機器翻譯、文本摘要等模型的最大區(qū)別是輸出序列上存在差距。與自然語言詞序列相比,線性化事件序列包含許多非語義詞,并且不遵循自然語言句子的語法約束。 (3) 非語義詞“(”和“)”出現(xiàn)頻率非常高,但包含的語義信息少,這不利于生成模型的學(xué)習(xí)。 (4) 線性化的生物醫(yī)學(xué)事件序列是有層次結(jié)構(gòu)的,這增加了序列生成的難度。 本文采用了課程學(xué)習(xí)(Curriculum Learning)[14-15]應(yīng)對上述挑戰(zhàn)。具體地說,首先將事件生成模型在簡單的生物醫(yī)學(xué)文本任務(wù)上進行訓(xùn)練,比如命名實體識別任務(wù),本文在參與事件的蛋白質(zhì)識別以及觸發(fā)詞識別兩個任務(wù)上進行學(xué)習(xí)以便于微調(diào)模型,使其熟悉生物醫(yī)學(xué)領(lǐng)域的文本;然后使用沒有層次關(guān)系的事件子結(jié)構(gòu)生成任務(wù)來訓(xùn)練生成模型,可以使其適應(yīng)非語義指標(biāo);最后對模型進行完整事件結(jié)構(gòu)生成任務(wù)的訓(xùn)練。 參與事件的蛋白質(zhì)學(xué)習(xí)生物醫(yī)學(xué)事件抽取語料中標(biāo)注的蛋白質(zhì)按其是否參與了事件分為兩類,一類蛋白質(zhì)參與了事件,另一類蛋白質(zhì)沒有參與事件。參與事件的蛋白質(zhì)有助于識別觸發(fā)詞和抽取事件。本文用事件生成網(wǎng)絡(luò)先學(xué)習(xí)參與事件蛋白質(zhì)的識別。對此任務(wù)的學(xué)習(xí),一是為了讓T5模型熟悉生物醫(yī)學(xué)領(lǐng)域,二是模型識別出的參與事件的蛋白質(zhì)是檢測文本中觸發(fā)詞的有效特征。 觸發(fā)詞序列生成類似上一個任務(wù),為了使模型繼續(xù)適應(yīng)生物醫(yī)學(xué)文本,本文采用生成式模型識別文本中的觸發(fā)詞,與具有層次結(jié)構(gòu)的事件序列不同,根據(jù)T5模型的要求,觸發(fā)詞識別和參與事件的蛋白質(zhì)識別的樣例輸入都要加入前綴“NER: ”。 事件子結(jié)構(gòu)學(xué)習(xí)由于事件線性化序列中存在層次結(jié)構(gòu),直接使用完整事件序列對模型進行訓(xùn)練是一個巨大挑戰(zhàn)。因此,本文首先在簡單的事件子結(jié)構(gòu)上訓(xùn)練模型。具體地,我們首先構(gòu)建“(類型,文本片段)”子結(jié)構(gòu),包括“(觸發(fā)詞類型,觸發(fā)詞)”以及“(論元角色,論元)”子結(jié)構(gòu),將事件的觸發(fā)詞子結(jié)構(gòu)和論元子結(jié)構(gòu)進行拼接(完整事件結(jié)構(gòu)是兩個子結(jié)構(gòu)嵌套) 形成一個子結(jié)構(gòu)序列。本文構(gòu)建了“(增廣式輸入,事件子結(jié)構(gòu)序列)”的輸入輸出對開始訓(xùn)練模型。然后使用式(4)中的損失函數(shù)訓(xùn)練模型。 完整事件學(xué)習(xí)在經(jīng)過子結(jié)構(gòu)學(xué)習(xí)后,本文在學(xué)習(xí)完整事件序列時輸出序列定義為圖3(c),解碼的過程遵照圖4(a)字典樹,即事件之間并列、事件內(nèi)部嵌套的格式。本文使用式(4)中的損失函數(shù)進一步訓(xùn)練模型,以完成整個結(jié)構(gòu)生成任務(wù)。 如何將模型生成的線性序列(圖3(c))還原為多個有結(jié)構(gòu)的生物醫(yī)學(xué)事件(圖3(a))是一個至關(guān)重要的問題。因此我們在轉(zhuǎn)換的過程中借助了樹型(圖3(b))作為中間結(jié)構(gòu),首先是將線性序列轉(zhuǎn)換為樹型,然后由樹型還原為結(jié)構(gòu)化事件。在還原的過程中按照事件類型由易到難的順序,即先轉(zhuǎn)化Simple類型的事件,接著是Binding類型的事件,最后是Complex類型的事件。此時還需要進一步確定觸發(fā)詞和論元的位置。在轉(zhuǎn)換的過程中本文遵循了以下幾個原則來確定觸發(fā)詞和論元的位置: (1) 如果論元是蛋白質(zhì),由于蛋白質(zhì)事先標(biāo)注了位置,可根據(jù)原則(2)計算觸發(fā)詞位置;如果論元是觸發(fā)詞,則首先確認論元觸發(fā)詞的位置。 (2) 就近原則,通過對語料的統(tǒng)計分析發(fā)現(xiàn),觸發(fā)詞和論元相距相近。 本文模型基于T5-base框架,以端到端的方式進行訓(xùn)練,在訓(xùn)練的過程中使用了標(biāo)簽平滑和AdamW優(yōu)化器[22],并且在訓(xùn)練時設(shè)置T5-base的學(xué)習(xí)率為1e-4。對于課程學(xué)習(xí),參與事件的蛋白質(zhì)序列、觸發(fā)詞序列的迭代輪次設(shè)置為5,子結(jié)構(gòu)學(xué)習(xí)的迭代輪次設(shè)置為10,完整事件結(jié)構(gòu)學(xué)習(xí)的迭代輪次設(shè)置為30。本文使用GeForce GTX 1080Ti顯存為11GB的設(shè)備進行了每個實驗。由于GPU顯存的限制,在訓(xùn)練和預(yù)測時每批(Batch Size)數(shù)據(jù)量設(shè)置為16。 3.2.1 生成式模型識別觸發(fā)詞的效果 在生物醫(yī)學(xué)事件抽取的研究工作中,對觸發(fā)詞的識別大都采用序列標(biāo)注模型,比如 BiLSTM-CRF[23-24]模型。也有部分研究人員提出使用Span Classification[25,29]的方法,但這些方法都無法解決同一個觸發(fā)詞有多種類型的情況,本文試圖采用生成式模型解決以上問題。為了評估生成式模型對觸發(fā)詞的識別效果,本文在Genia 2011開發(fā)集上做了一組實驗,將生成式模型識別的觸發(fā)詞效果與已有模型的觸發(fā)詞識別效果進行比較。 為了驗證模型的有效性和準(zhǔn)確性,本文選用了五個不同的隨機種子進行了多組實驗,表1給出了模型平均實驗數(shù)據(jù)的對比結(jié)果。從表中可知,三種模型的觸發(fā)詞的識別結(jié)果相比,BiLSTM-CRF模型取得了最優(yōu)的效果。模型Generative Model取得了71.11%的F1值,相比Span Classification模型,該方法識別觸發(fā)詞的性能優(yōu)異,生成式模型Generative Model也獲取了與BiLSTM-CRF方法可比較的結(jié)果,說明了生成式模型在識別觸發(fā)詞時的有效性。 表1 在Genia 2011開發(fā)集上各模型對觸發(fā)詞識別的效果對比 (單位: %) 3.2.2 蛋白質(zhì)對于觸發(fā)詞識別的影響 表2給出了在輸入文本中標(biāo)示不同的蛋白質(zhì)對觸發(fā)詞識別效果的影響。從表中可以得出,如果不利用語料中事先標(biāo)注的蛋白質(zhì),觸發(fā)詞的識別效果較差,F1值僅有66.19%;而在輸入文本中標(biāo)示出蛋白質(zhì)后,F1值提升了4.06%,達到了70.25%。由此可見,蛋白質(zhì)對于觸發(fā)詞的識別有非常大的作用。然而,如果在輸入文本中僅標(biāo)示參與了事件的蛋白質(zhì),忽略了不參與事件的蛋白質(zhì)后,觸發(fā)詞的F1值提升至71.40%,相比僅標(biāo)示全部蛋白質(zhì),F1值提升了1.15%??赡艿脑蚴菢?biāo)示出不參與事件的蛋白質(zhì)對觸發(fā)詞的識別產(chǎn)生干擾,錯誤識別了一部分觸發(fā)詞。召回率的提升也說明了這一點。如果標(biāo)示預(yù)測出的參與事件的蛋白質(zhì)進行觸發(fā)詞識別,則F1值由71.40%降低到71.08%,性能降低很少,然而結(jié)果仍比使用全部蛋白質(zhì)的F1值高0.83%。由此也說明了參與事件的蛋白質(zhì)對識別觸發(fā)詞的重要性。然而對于測試集數(shù)據(jù),其標(biāo)注了所有的蛋白質(zhì),因此我們需要首先識別出參與事件的蛋白質(zhì),然后將其作為特征識別觸發(fā)詞。 表2 在Genia 2011開發(fā)集上蛋白質(zhì)對于觸發(fā)詞識別的效果 (單位: %) 本文在Genia 2011公開評測任務(wù)的測試集上將我們的方法與以下最先進的模型進行了比較: QAwithBERT[26]采用了多輪問答方法,引入了定義不同類型問題的問題模板的概念。 GEANetSciBERT[27]提出從有層次結(jié)構(gòu)的知識庫中整合領(lǐng)域知識到一個圖邊條件注意力網(wǎng)絡(luò)模型中。 HANN[28]提出了堆疊超圖聚合神經(jīng)網(wǎng)絡(luò)層,其中一個兩階段處理模型用于建模生物醫(yī)學(xué)文檔的局部和全局上下文之間的交互。 DeepEventMineSciBERT[29]一種典型的神經(jīng)模型,它以端到端的方式從句子中抽取嵌套事件。 另外,本文還與在Genia 2013公開評測任務(wù)中的一些基線模型的性能進行了對比: SVMpipeline&MLN(joint)[30]結(jié)合了馬爾可夫邏輯網(wǎng)絡(luò)和支持向量機的強大功能,并嘗試使用許多高維復(fù)雜特征來克服錯誤傳播。 ErrorDetectionLearning[31]給出了一個基于未標(biāo)記數(shù)據(jù)表示的錯誤檢測模型,通過添加選定的樣本以豐富訓(xùn)練數(shù)據(jù)集并提高分類性能。 TEES-CNN[32]一種具有四個分類階段的串型方法,使用具有豐富的特征向量作為輸入特征的神經(jīng)網(wǎng)絡(luò)完成多分類任務(wù)。 如表3所示,GEANetSciBERT模型[27]引入了外部知識庫,利用已有的外部知識庫來豐富特征源。該模型在Genia 2011任務(wù)上獲得了60.06%的F1值。相比該模型,我們的模型在F1值上提升了2.34%,并且我們的模型沒有使用外部知識,以一種全新的視角抽取生物醫(yī)學(xué)事件,是一種解決生物醫(yī)學(xué)事件抽取的新范式。 表3 在Genia 2011和Genia 2013兩個語料上與基線模型的性能對比 (單位: %) RulesAndPatterns[37]基于手工定義規(guī)則和模板的生物醫(yī)學(xué)事件抽取方法,該模型在 Genia 2013任務(wù)上獲取了50.68%的F1值,其召回率在Genia 2013任務(wù)上的所有基線模型中是最低的,僅有42.47%。相比機器學(xué)習(xí)方法和神經(jīng)網(wǎng)絡(luò)模型,該類模型的缺點很明顯,即如果構(gòu)建的規(guī)則太多,模型很容易在開發(fā)集上擬合;如果構(gòu)建的規(guī)則不足,就會導(dǎo)致很多生物醫(yī)學(xué)事件檢測不出來。 Multi-taskBEESLBioBERT[36]以序列標(biāo)注的方式進行生物醫(yī)學(xué)事件抽取,該模型是基于多任務(wù)學(xué)習(xí)的聯(lián)合神經(jīng)網(wǎng)絡(luò)方法。該模型在Genia 2011任務(wù)上獲得了69.72%的精確率、53.00%的召回率以及60.22%的F1值。與該方法相比,我們的生成式模型在召回率和F1值上提升較多,分別是2.89%和2.18%,然而在精確率上提升較少,僅有0.9%。 除我們的方法外,表3給出的在Genia 2011和Genia 2013任務(wù)上的所有基線模型都是基于抽取式方法,DeepEventMineSciBERT模型在兩個任務(wù)上的F1值都是最優(yōu)的,分別是63.02%和54.83%,并且該模型在召回率上也取得了不錯的效果,在Genia 2011任務(wù)上獲取56.20%,是第二高的召回率;在Genia 2013任務(wù)上獲取了49.80%的召回率,是基線模型中最好的召回率。與該模型相比,我們的模型在Genia 2011任務(wù)上獲得了70.62%的精確率、55.89%的召回率以及62.40%的F1值,在三個評價指標(biāo)上均取得了可比較的結(jié)果。 表4和表5是生成式模型在Genia 2011和Genia 2013兩個語料上的細粒度生物醫(yī)學(xué)事件生成的效果。 表4 Genia 2011測試集細粒度事件實驗 (單位: %) 表5 Genia 2013測試集細粒度事件實驗 (單位: %) 3.4.1 參與事件的蛋白質(zhì)對事件生成的影響 為了探討蛋白質(zhì)對于生物醫(yī)學(xué)事件生成的效果,本文在輸入文本中高亮不同的蛋白質(zhì),查看不同的標(biāo)注對于輸出序列的影響。為了明確不同的標(biāo)注形式,本文用“輸入A”表示自然語言句子,不標(biāo)示語料中給出的蛋白質(zhì);“輸入B”是將輸入文本中所有蛋白質(zhì)都標(biāo)示出來;“輸入C”標(biāo)示了參與事件的蛋白質(zhì),忽略了沒有參與事件的蛋白質(zhì)。 本文對比了三種不同的輸入形式對模型的影響,圖5給出了實驗結(jié)果,標(biāo)示了所有蛋白質(zhì)的文本輸入(輸入B)的模型獲取了61.02%的F1值,不標(biāo)示蛋白質(zhì)的文本輸入(輸入A)的F1值是54.18%,性能提升了6.84%。由此可見,在輸入文本中標(biāo)示出蛋白質(zhì)對事件抽取有極大的促進作用,說明了向模型提供先驗知識的重要性,蛋白質(zhì)作為事件的重要參與者,對事件的生成起到了非常重要的作用。對于僅標(biāo)示出參與事件的蛋白質(zhì)的“輸入C”,該輸入在事件抽取結(jié)構(gòu)中取得了62.40%的F1值。值得注意的是,相對于“輸入B”,事件抽取的召回率得到了極大提高,由53.89%提升至55.89%,提升了2.0%。可能的原因是消除了一些非參與事件的蛋白質(zhì)的干擾,在事件生成的過程中,也縮小了觸發(fā)詞論元選擇的范圍,能更多地生成有效事件。 圖5 在Genia 2011和Genia 2013 數(shù)據(jù)上驗證蛋白質(zhì)對生物醫(yī)學(xué)事件的影響 3.4.2 輸出序列中事件排列順序?qū)π阅艿挠绊?/p> 輸出序列中事件的前后排序在一定程度上影響著事件的生成性能,為了探討在輸出序列中事件的排列順序?qū)ι墒录Ч挠绊?表6給出了兩種不同事件輸出序列的實驗結(jié)果對比。由于決定事件輸出序列的重要因素是事件中的觸發(fā)詞,目前有兩種排列順序,一是按照事件觸發(fā)詞在輸入文本中的先后順序;二是按照觸發(fā)詞的類型,Simple類型的事件排在輸出序列的前面,然后是Binding事件,最后是Complex類型事件。在單個事件內(nèi)部,針對事件論元的排序,默認Theme類型在前,Cause論元在后。從表6中的數(shù)據(jù)可以看出,以事件觸發(fā)詞在文本中的先后順序為標(biāo)準(zhǔn)的模型,其事件生成的F1值是62.40%,其比按照事件類型排序的輸出結(jié)構(gòu)的模型的F1值高0.89%??赡艿脑蚴峭粋€輸入序列中,多個事件之間可能存在因果關(guān)系,位于序列靠前的事件可能會影響序列中后面事件的發(fā)生,所以在輸出序列中,也盡量將先發(fā)生的事件識別出來,再識別后發(fā)生的事件。由此,在生成的序列中,應(yīng)盡量保持與原輸入序列一致的順序。 表6 不同的輸出文本形式對于生物醫(yī)學(xué)事件生成的結(jié)果對比 (單位: %) 3.4.3 課程學(xué)習(xí)對生物醫(yī)學(xué)事件抽取效果的影響 為了驗證課程學(xué)習(xí)對于生物醫(yī)學(xué)事件抽取的效果,表7給出了幾組實驗對比。第一組實驗是判斷T5模型是否熟悉生物醫(yī)學(xué)文本對事件生成的影響。由于T5模型的訓(xùn)練語料是從Common Crawl里抓取并清洗的數(shù)據(jù),該數(shù)據(jù)與生物醫(yī)學(xué)文本存在用詞、句法等方面的差異,為了增加T5模型對生物醫(yī)學(xué)文本的敏感度,本文增加了兩個簡單的生物醫(yī)學(xué)文本方面的子任務(wù): 參與事件的蛋白質(zhì)識別和事件觸發(fā)詞識別,經(jīng)過這兩個子任務(wù)的學(xué)習(xí)之后再進行完整序列的預(yù)測。從表7的對比數(shù)據(jù)可知,經(jīng)過參與事件的蛋白質(zhì)識別和觸發(fā)詞識別兩個任務(wù)的學(xué)習(xí)后,再進行完整事件的學(xué)習(xí),事件抽取的F1值由59.52%提升至61.43%,該數(shù)據(jù)表明了T5在經(jīng)過生物醫(yī)學(xué)文本上的學(xué)習(xí)后能夠更好地進行生物醫(yī)學(xué)語料更復(fù)雜的自然語言問題的處理。 表7 在Genia 2011測試集上,課程學(xué)習(xí)對生物醫(yī)學(xué)事件生成效果的對比 (單位: %) 第二組實驗的設(shè)計是由于完整的生物醫(yī)學(xué)事件序列比較復(fù)雜: ①該序列不是自然語言,不受語言語法約束,存在非常多不包含實際語義的小括號對; ②輸出的線性化序列中多個生物醫(yī)學(xué)事件之間是并列的,而單個事件內(nèi)部存在層次結(jié)構(gòu),有從屬關(guān)系。面對這樣復(fù)雜的輸出序列,如果在一開始就生成有層次結(jié)構(gòu)的序列,雖然在生成解碼的過程中有字典樹的指導(dǎo),依然非常困難。本文的解決辦法是首先學(xué)習(xí)事件子結(jié)構(gòu),然后再進階到復(fù)雜序列的學(xué)習(xí)。從表7的第四、五行數(shù)據(jù)對比可以看出,子結(jié)構(gòu)序列的學(xué)習(xí)能有效提升事件抽取的效果。其F1值可達61.39%,該實驗結(jié)果進一步說明這種設(shè)計的必要性。最后經(jīng)過兩個子任務(wù)(參與事件的蛋白質(zhì)識別和觸發(fā)詞識別)以及子結(jié)構(gòu)的學(xué)習(xí),再進行完整事件結(jié)構(gòu)學(xué)習(xí),事件抽取的F1值達到62.40%。 本文在表8中給出了三個具體的例子,例句中的粗體和斜體分別指的是句子中的觸發(fā)詞和蛋白質(zhì),每對大括號內(nèi)的信息表示一個生物醫(yī)學(xué)事件。句子S1包含由觸發(fā)詞complex生成的“Binding”事件E11,并且該事件有三個“Theme”論元。在生物醫(yī)學(xué)語料中,大部分事件的論元個數(shù)是一個或兩個,所以為了減少模型的復(fù)雜度,在現(xiàn)有的研究方法中,一般忽略此類情況。然而本文提出的生成式方法在不增加模型復(fù)雜度的情況下可以解決此類事件。 表8 案例研究與錯誤分析 第二個例句S2展示了兩個重疊事件,其由同一個觸發(fā)詞binding 生成了兩個“Binding”事件。事件E21有兩個“Theme”論元,分別是“Sp1”和“LAL”。事件E22僅有一個“Theme”論元,該論元是“LAL”。仔細觀察可以發(fā)現(xiàn),事件E22作為一個完整事件,其是事件E21的一部分。目前已有的研究方法通過論元組合無法同時識別這兩個事件。然而本文的生成式方法由于其獨特的輸出序列,可以同時生成這兩個事件。 作為定性錯誤分析,第三個示例S3給出了嵌套問題。在句子S3中,“phosphorylate”是一個觸發(fā)詞,它引發(fā)了兩類不同的事件類型。一個類型是“Phosphorylation”事件E31,另一個是“Positive regulation”事件E32。其中完整事件E31是事件E32的一個論元,則E32即是一個嵌套事件。本文提出的模型對這類事件的解決方法是簡化處理,將其作為兩個觸發(fā)詞之間的關(guān)系判斷處理,后期進行嵌套替換。由于嵌套事件占整個事件的37.17%,簡化處理無疑會降低事件抽取的性能。 生物醫(yī)學(xué)事件抽取任務(wù)自2009年提出以來,得到大量研究人員的關(guān)注并在過去十幾年中取得了令世人矚目的成就。在任務(wù)剛提出時,研究人員大都采用基于規(guī)則的方式[37,41-42]進行生物醫(yī)學(xué)事件抽取,而后研究人員開始使用串行方法[43-48]逐一解決每個子任務(wù)或者使用聯(lián)合模型[3-4,7-8,48]的機器學(xué)習(xí)進行抽取事件。之后隨著神經(jīng)網(wǎng)絡(luò)引入到生物醫(yī)學(xué)事件,目前皆是端到端的深度學(xué)習(xí)的方式[46,49-52]進行事件抽取。這些方法的共性是針對每個子任務(wù)要么是獨立解決,要么是部分聯(lián)合。 雖然已有工作有使用傳統(tǒng)機器學(xué)習(xí)方法進行三個任務(wù)聯(lián)合解碼的生物醫(yī)學(xué)事件抽取,然而目前沒有使用神經(jīng)網(wǎng)絡(luò)方法聯(lián)合解碼全部子任務(wù)的模型,大多數(shù)工作是采用部分聯(lián)合的多任務(wù)學(xué)習(xí)的方法。Riedel[3]使用了結(jié)構(gòu)預(yù)測的聯(lián)合模型抽取生物醫(yī)學(xué)事件,聯(lián)合建模了三個子任務(wù),獲取了比較優(yōu)異的性能。Trieu[29]使用神經(jīng)網(wǎng)絡(luò)方法單獨處理觸發(fā)詞識別和關(guān)系抽取,并構(gòu)建了事件層以自底向上的方式構(gòu)建事件,并統(tǒng)一建模了論元組合和嵌套問題。本文的方法是基于神經(jīng)網(wǎng)絡(luò)模型聯(lián)合建模了所有的子任務(wù)。與以前的模型相比,我們統(tǒng)一建模了生物醫(yī)學(xué)事件中所有的子任務(wù),利用了事件類型和論元類型的制約關(guān)系,這導(dǎo)致了更好的決策交互和信息共享。 目前關(guān)于生物醫(yī)學(xué)事件抽取任務(wù),已有的工作都是基于機器學(xué)習(xí)或神經(jīng)網(wǎng)絡(luò)的分類方法,例如Bj?rne[5]等人將觸發(fā)詞識別和關(guān)系抽取作為分類任務(wù),并結(jié)合了一系列捕捉屬性的特征。對于論元組合則采用了人工制定的規(guī)則進行處理,用于根據(jù)抽取任務(wù)細化輸出。Ramponi[36]將任務(wù)重新定義為序列標(biāo)記,利用多標(biāo)簽感知編碼策略,并通過多任務(wù)學(xué)習(xí)對中間任務(wù)進行聯(lián)合建模。Bj?rne[32]采用卷積神經(jīng)網(wǎng)絡(luò)進行事件和關(guān)系抽取,并將豐富的特征編碼成向量作為模型的輸入以獲取較好的性能,該事件抽取模型是一個典型的分類方法。與已有模型相比,本文是基于Encoder-Decoder的生成式方法進行生物醫(yī)學(xué)事件抽取,通過一些簡單子任務(wù)讓模型T5熟悉生物文本,最后進階到完整事件序列的學(xué)習(xí),在兩個數(shù)據(jù)上的實驗結(jié)果也表明了模型的有效性。 區(qū)別于以往對生物醫(yī)學(xué)事件的抽取式研究,本文用生成式模型進行生物醫(yī)學(xué)事件處理,在 Genia 2011和Genia 2013兩個任務(wù)上分別取得了62.40%和54.85%的F1值。實驗數(shù)據(jù)也證明了這種研究方式的創(chuàng)新性和有效性。生成式模型還可以解決以往抽取方法解決不了的難題,比如觸發(fā)詞具有多個類型、事件具有超過兩個論元的情況以及事件重疊問題等。本文以單一模型、序列到序列(Sequence-to-Sequence)的形式統(tǒng)一建模了所有的子任務(wù)。2.3 可控解碼策略
2.4 生成式模型的學(xué)習(xí)過程
2.5 生成序列轉(zhuǎn)換為生物醫(yī)學(xué)事件
3 實驗
3.1 實驗設(shè)置
3.2 開發(fā)集實驗
3.3 主實驗
3.4 消融實驗
4 案例分析
5 相關(guān)工作
6 總結(jié)和展望