高甦 陶滸 蔣彥釗 賈麒 張德政 謝永紅
1. 北京師范大學(xué)醫(yī)院 北京 100875;2. 北京科技大學(xué)計(jì)算機(jī)與通信工程學(xué)院 北京 100083
中醫(yī)領(lǐng)域存在大量的文獻(xiàn),這些文獻(xiàn)中含有大量中醫(yī)診療的知識(shí)。但這些知識(shí)大多都存在于非結(jié)構(gòu)化的文本中,通過(guò)知識(shí)抽取將其轉(zhuǎn)化成結(jié)構(gòu)化數(shù)據(jù),可以幫助進(jìn)行中醫(yī)輔助診療。但是由于文獻(xiàn)眾多,依賴人力進(jìn)行抽取耗時(shí)耗力,為了提高中醫(yī)臨床診療的效率,利用現(xiàn)有的神經(jīng)網(wǎng)絡(luò)技術(shù),可以對(duì)非結(jié)構(gòu)化的文本進(jìn)行有效的抽取,使之成為現(xiàn)代計(jì)算機(jī)可以處理的結(jié)構(gòu)化數(shù)據(jù)?,F(xiàn)有的中醫(yī)診斷方法中大多包含多個(gè)要素并且每個(gè)要素之間是有相互聯(lián)系的,三元組信息又不足以將信息完整表示,所以本文借鑒事件抽取技術(shù),定義中醫(yī)事件類型,對(duì)中醫(yī)文獻(xiàn)中的知識(shí)進(jìn)行結(jié)構(gòu)化處理進(jìn)而實(shí)現(xiàn)信息抽取。
中醫(yī)事件抽取旨在將中醫(yī)文本中的一些診斷方法按一定的模式抽取出來(lái)。通過(guò)中醫(yī)事件抽取,機(jī)器可以獲取到文獻(xiàn)中包含的各種診斷方法,為初步理解中醫(yī)文獻(xiàn)內(nèi)容提供幫助,并為之后的機(jī)器輔助診療提供數(shù)據(jù)基礎(chǔ),從而為進(jìn)一步的中醫(yī)臨床智能輔助診斷打下基礎(chǔ)。
由于中醫(yī)領(lǐng)域特性較為突出,傳統(tǒng)事件類型無(wú)法準(zhǔn)確地描述中醫(yī)事件。中醫(yī)語(yǔ)言表達(dá)簡(jiǎn)練的特點(diǎn),一個(gè)句子中往往包含更多的中醫(yī)事件要素。中醫(yī)文本中有現(xiàn)代白話文也有古文,表達(dá)方式比較多樣,因此語(yǔ)法層面存在一定差異,是異構(gòu)的。另外,不同的中醫(yī)事件之間存在語(yǔ)義接近導(dǎo)致難以區(qū)分的情況,例如“證候概念”和“證候分析”都屬于描述中醫(yī)證候的事件類型,但它們本質(zhì)是不同的,這些因素導(dǎo)致中醫(yī)事件抽取難度較大、挑戰(zhàn)性更強(qiáng)。
通常一個(gè)事件是由一個(gè)句子描述的,這句話通常會(huì)包含事件的觸發(fā)詞以及事件的各種元素。采用管道模型(Pipeline)的方法對(duì)事件進(jìn)行抽取的時(shí)候通常分為兩步:首先進(jìn)行事件觸發(fā)詞的識(shí)別,根據(jù)事件觸發(fā)詞定義事件類型,其次根據(jù)事件的類型進(jìn)行事件論元的識(shí)別與分類。例如在“血脫證是指突然大量出血或長(zhǎng)期反復(fù)出血,致使血液亡脫,以面色蒼白、心悸、脈微或芤為主要表現(xiàn)的證,又稱脫血證。”這句話中,首先利用事件觸發(fā)詞識(shí)別模型識(shí)別出“指”這個(gè)觸發(fā)詞并可以判斷其事件類型為證候概念;然后根據(jù)證候概念得知其中包含的論元為證候名稱、概念以及其對(duì)應(yīng)的別名;最后會(huì)利用事件論元識(shí)別模型識(shí)別事件所包含的論元并對(duì)其進(jìn)行角色分類,例如在這句話中包含的事件論元證名為血脫證,而別名為脫血證。
然而,管道模型容易產(chǎn)生分級(jí)誤差傳遞,使得上游任務(wù)的錯(cuò)誤傳播給下游任務(wù),而且下游任務(wù)無(wú)法將信息反饋給上游任務(wù),輔助上游任務(wù)提升識(shí)別的準(zhǔn)確率,所以本文使用聯(lián)合模型的方法對(duì)句子中的事件以及事件論元進(jìn)行識(shí)別。在聯(lián)合抽取模型中,由于讓事件觸發(fā)詞檢測(cè)和事件論元識(shí)別同時(shí)進(jìn)行,所以不僅能夠解決分級(jí)誤差傳遞的問(wèn)題,而且能夠很好的捕捉到事件觸發(fā)詞和事件論元的相互依賴關(guān)系。本文利用中醫(yī)中最具代表性的基礎(chǔ)性文獻(xiàn)《中醫(yī)診斷學(xué)》、《中醫(yī)內(nèi)科學(xué)》以及多種疾病診療方案作為語(yǔ)料,針對(duì)中醫(yī)文獻(xiàn)探索句子級(jí)中醫(yī)事件抽取的方法,其中主要的任務(wù)有事件觸發(fā)詞的識(shí)別以及事件論元的識(shí)別。本文設(shè)計(jì)了一個(gè)句子級(jí)別的事件抽取模型,利用預(yù)訓(xùn)練模型BERT作為文本的特征解碼器,使用BiLSTM對(duì)上下文特征進(jìn)行學(xué)習(xí),之后通過(guò)Self-Attention機(jī)制強(qiáng)化事件觸發(fā)詞和事件論元之間的表達(dá)依賴,最后結(jié)合CRF對(duì)中醫(yī)文獻(xiàn)的事件進(jìn)行抽取。我們?cè)谧约簶?gòu)建的中醫(yī)事件抽取數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),最終我們的聯(lián)合事件抽取模型在事件觸發(fā)詞識(shí)別任務(wù)上平均F1值達(dá)到0.7696,在事件論元識(shí)別任務(wù)上平均F1值達(dá)到0.7576,整體性能超過(guò)了主流的管道模型。
事件抽取是信息抽取領(lǐng)域的一個(gè)重要研究方向。事件抽取旨在把句子中描述的事件,以結(jié)構(gòu)化的形式表現(xiàn)出來(lái)。事件抽取作為信息處理領(lǐng)域的關(guān)鍵技術(shù),在信息檢索、自動(dòng)問(wèn)答、自動(dòng)摘要、數(shù)據(jù)挖掘、文本挖掘等領(lǐng)域有著廣泛的應(yīng)用。
事件作為信息的一種表現(xiàn)形式,其定義為特定的人、物在特定時(shí)間和地點(diǎn)相互作用的客觀事實(shí),通常事件的載體為句子[1]。組成事件的各元素包括:事件觸發(fā)詞、事件論元、論元角色及事件類型。 其具體意義如下:
事件觸發(fā)詞:觸發(fā)事件的核心詞,通常是動(dòng)詞或者名詞;
事件論元:事件所包含的用戶感興趣的語(yǔ)義對(duì)象,通常是一個(gè)名詞;
論元角色:論元在事件中所扮演的角色,即為事件的參與對(duì)象;
事件類型:事件所屬的事件類型,事件觸發(fā)詞和事件角色共同決定了事件的類別。
事件抽取任務(wù)可分解為4個(gè)子任務(wù)[2]:事件觸發(fā)詞識(shí)別、事件類型分類、論元識(shí)別和論元角色分類任務(wù)。其中,事件觸發(fā)詞識(shí)別和事件類型分類可合并成事件類別分類任務(wù)。事件論元識(shí)別和論元角色分類可合并成事件論元識(shí)別任務(wù)[3]。
目前事件抽取的方法可以分為三類:模式匹配法、機(jī)器學(xué)習(xí)的方法和深度學(xué)習(xí)方法。其中模式匹配方法,指對(duì)于某類事件的識(shí)別和抽取是在一些模式的指導(dǎo)下進(jìn)行的[4]。模式主要用于指明構(gòu)成目標(biāo)信息的上下文約束環(huán),集中體現(xiàn)了領(lǐng)域知識(shí)和語(yǔ)言知識(shí)的融合[1]。抽取時(shí)可利用模式匹配算法找出符合模式約束條件的信息。一個(gè)采用模式匹配法事件抽取系統(tǒng)的基本組成如圖1所示。接下來(lái)主要介紹基于傳統(tǒng)機(jī)器學(xué)習(xí)與深度學(xué)習(xí)的事件抽取方法。
圖1 模式匹配法事件抽取的基本組成
采用機(jī)器學(xué)習(xí)的方法識(shí)別事件,就是借鑒文本分類的思想,將事件類別的分類及事件論元的識(shí)別轉(zhuǎn)化成為分類問(wèn)題,其核心在于分類器的構(gòu)造和特征的選擇。
對(duì)事件的識(shí)別主要包括事件類別分類以及事件論元識(shí)別兩大核心任務(wù)。Hai等[5]在處理講座通告和人事管理事件的抽取問(wèn)題中,運(yùn)用最大熵模型用于事件論元的識(shí)別。H.Llorens等[6]則利用條件隨機(jī)場(chǎng)實(shí)現(xiàn)語(yǔ)義角色標(biāo)注,有效地解決了TimeML的事件抽取問(wèn)題。而D.Ahn[7]結(jié)合MegaM和TiMBL兩種機(jī)器學(xué)習(xí)方法分別完成了事件類別分類和事件論元識(shí)別兩大任務(wù),并通過(guò)實(shí)驗(yàn)證明二者結(jié)合的方法優(yōu)于采用單一算法。
然而,以上提到的方法大多是基于觸發(fā)詞來(lái)進(jìn)行事件的探測(cè),這種方法的準(zhǔn)確性十分依賴觸發(fā)詞識(shí)別的準(zhǔn)確率,但實(shí)際運(yùn)用中觸發(fā)詞只占所有詞的小部分,這樣會(huì)給訓(xùn)練過(guò)程引入大量反例從而使正反例不平衡,另外因?yàn)樾枰獙?duì)每個(gè)詞進(jìn)行判斷,這樣無(wú)疑增加了額外計(jì)算。為了解決上述問(wèn)題,趙妍妍[8]結(jié)合觸發(fā)詞擴(kuò)展和二元分類的思路來(lái)識(shí)別事件類別,即在訓(xùn)練中將觸發(fā)詞收錄在詞典中并利用同義詞林進(jìn)行擴(kuò)展,有效地處理了訓(xùn)練實(shí)例正反例不平衡以及數(shù)據(jù)稀疏造成的影響,在ACE的中文語(yǔ)料上取得較好的效果。而許紅磊[9]與Naughton[10]則基于事件實(shí)例,完成事件探測(cè)與抽取,這種方法面向句子,將句子作為識(shí)別實(shí)例,從而克服了上述基于觸發(fā)詞方法造成的正反例失衡和數(shù)據(jù)稀疏問(wèn)題。
傳統(tǒng)基于機(jī)器學(xué)習(xí)的事件抽取方法均采用人工構(gòu)建特征的方法表示每個(gè)候選觸發(fā)詞或每個(gè)觸發(fā)詞-實(shí)體對(duì),然后借助基于統(tǒng)計(jì)的分類模型進(jìn)行分類。以往方法重點(diǎn)在于研究有效的特征來(lái)捕捉候選觸發(fā)詞、候選論元的詞法、句法等信息,并分別能夠獲取觸發(fā)詞-觸發(fā)詞之間的依賴關(guān)系、和同一觸發(fā)詞相關(guān)的多個(gè)實(shí)體之間的依賴關(guān)系、和同一實(shí)體相關(guān)的多個(gè)觸發(fā)詞之間的關(guān)系。此外,還有若干工作研究跨句子和跨文檔的事件一致性特征[11]、跨事件的一致性特征[12]和跨實(shí)體的事件一致性特征[13]來(lái)提高事件抽取的性能。
近年來(lái)興起的神經(jīng)網(wǎng)絡(luò)方法,能夠自動(dòng)學(xué)習(xí)有效特征。不同于傳統(tǒng)的離散型特征,神經(jīng)網(wǎng)絡(luò)特征多是連續(xù)型向量特征。Chen等[3]和Nguyen等[14]率先嘗試將神經(jīng)網(wǎng)絡(luò)方法應(yīng)用于事件抽取和識(shí)別任務(wù)中,通過(guò)實(shí)驗(yàn)結(jié)果驗(yàn)證了神經(jīng)網(wǎng)絡(luò)構(gòu)建特征的有效性。更進(jìn)一步地,Chen等[3]改進(jìn)了傳統(tǒng)的CNN模型,增加了動(dòng)態(tài)多池機(jī)制(dynamic multi-pooling)來(lái)提高事件抽取性能,而秦美越等[15]在生物醫(yī)學(xué)事件抽取任務(wù)上利用并行多池化CNN來(lái)提高性能。研究者認(rèn)為,與最大池機(jī)制相比,將候選觸發(fā)詞和候選實(shí)體位置分割成 3部分的動(dòng)態(tài)多池機(jī)制,有助于提取更有效的特征用于角色分類。Nguyen等[16]則使用一種基于離散短語(yǔ)的卷積神經(jīng)網(wǎng)絡(luò)模型來(lái)輔助事件識(shí)別,該模型能夠獲取更豐富的非連續(xù)短語(yǔ)的特征,而不局限于局部連續(xù)短語(yǔ)特征。另外,不少研究者采用循環(huán)神經(jīng)網(wǎng)絡(luò)[17,18](Recurrent Neural Network,RNN)建模文本序列,以支撐下游的事件抽取任務(wù)。Feng等[19]基于RNN獲取文本序列信息,利用一個(gè)卷積層來(lái)獲取文本中的短語(yǔ)塊信息,通過(guò)結(jié)合上述兩種信息實(shí)現(xiàn)事件觸發(fā)詞識(shí)別,從模型特點(diǎn)來(lái)看,該混合模型是語(yǔ)言無(wú)關(guān)模型,因此在多種語(yǔ)言的事件識(shí)別任務(wù)中取得了良好效果。然而上述提到的事件抽取方法多數(shù)是將觸發(fā)詞的相關(guān)特征用于輔助論元角色分類任務(wù),而忽略了論元信息對(duì)觸發(fā)詞識(shí)別任務(wù)的作用。借助注意力機(jī)制,Liu等[20]采用有監(jiān)督的論元注意力模型將論元信息融入事件識(shí)別模型中,通過(guò)實(shí)驗(yàn)證明論元信息能夠提升事件觸發(fā)詞識(shí)別任務(wù)性能。
根據(jù)學(xué)習(xí)方式的不同,當(dāng)前主要分為管道(Pipeline)模型和聯(lián)合模型兩種事件抽取框架[21]。管道模型主要是將事件類別分類任務(wù)和事件論元識(shí)別任務(wù)按照流水線的方式進(jìn)行;而聯(lián)合模型將兩個(gè)任務(wù)同時(shí)進(jìn)行。
在管道模型中,后者輸入依賴于前者輸出。首先需要先經(jīng)過(guò)觸發(fā)詞識(shí)別模型識(shí)別出句子中所包含的事件觸發(fā)詞并且對(duì)其進(jìn)行事件類別分類,論元角色分類任務(wù)的輸入是前一步識(shí)別出的觸發(fā)詞和整個(gè)句子。之前大部分事件抽取方法都是管道模型學(xué)習(xí)方式,先進(jìn)行事件識(shí)別模型的學(xué)習(xí),再進(jìn)入論元角色分類模型的學(xué)習(xí)。這種學(xué)習(xí)方式會(huì)存在以下兩個(gè)問(wèn)題:(1)管道模型在進(jìn)行觸發(fā)詞識(shí)別這個(gè)上游任務(wù)的過(guò)程中由于樣本不平衡問(wèn)題而導(dǎo)致識(shí)別準(zhǔn)確率偏低;(2)管道模型容易產(chǎn)生級(jí)聯(lián)錯(cuò)誤,所以上游任務(wù)產(chǎn)生的誤差會(huì)在下游任務(wù)進(jìn)一步擴(kuò)大,而且處于下游的任務(wù)無(wú)法將信息反饋至上游任務(wù),輔助提高上游任務(wù)的精度。
為了減少上述兩個(gè)問(wèn)題所帶來(lái)的影響,研究者們后續(xù)提出了聯(lián)合事件抽取模型。在聯(lián)合抽取模型中,由于事件類別分類任務(wù)與事件論元識(shí)別任務(wù)是同時(shí)進(jìn)行的,所以能夠解決管道模型產(chǎn)生的級(jí)聯(lián)誤差問(wèn)題。由于聯(lián)合抽取模型的訓(xùn)練集同時(shí)包含事件觸發(fā)詞標(biāo)簽和事件論元標(biāo)簽,所以在模型訓(xùn)練的時(shí)候能有效的捕捉事件觸發(fā)詞和事件論元相互的依賴關(guān)系,并且當(dāng)一句話中帶有更多有角色標(biāo)簽的實(shí)體,這樣就解決了觸發(fā)詞識(shí)別中樣本不平衡問(wèn)題而導(dǎo)致識(shí)別準(zhǔn)確率偏低問(wèn)題。所以聯(lián)合抽取模型對(duì)事件抽取兩個(gè)子任務(wù)的準(zhǔn)確率都有提升。
根據(jù)ACE模型設(shè)計(jì),事件的模型框架應(yīng)該包含事件觸發(fā)詞、事件類型、事件論元、論元角色。通常事件抽取是通過(guò)事件觸發(fā)詞進(jìn)行事件類型的檢測(cè),再根據(jù)不同的事件類型來(lái)進(jìn)行事件論元的識(shí)別。
事件定義是事件抽取的首要步驟,而事件粒度的大小對(duì)之后的抽取是非常重要的。我們的中醫(yī)專家確定并定義了兩種基本的中醫(yī)主題事件,為了便于抽取與整合,又將其劃分出六種元事件類型,并且規(guī)定了每種元事件所對(duì)應(yīng)的事件論元,具體結(jié)構(gòu)如下表1所示。
表1 中醫(yī)事件類型及其對(duì)應(yīng)的事件論元
例如在“失神,又稱無(wú)神”這句事件句中,其對(duì)應(yīng)的事件類型以及事件論元分別如表2所示。
表2 事件句對(duì)應(yīng)其元素
本文研究的任務(wù)目標(biāo)即從各類中醫(yī)文本中,對(duì)以上兩大類中醫(yī)主題事件的六種事件類型進(jìn)行抽取,達(dá)到中醫(yī)知識(shí)結(jié)構(gòu)化的目的。
本文使用各類中醫(yī)臨床教材作為基礎(chǔ)語(yǔ)料?!吨嗅t(yī)診斷學(xué)》中的內(nèi)容包括如何通過(guò)望、聞、問(wèn)、切四診收集病情,也介紹了在收集病情的基礎(chǔ)上如何對(duì)其進(jìn)行病情分析、融合、判斷,進(jìn)而判斷出疾病的種類和該種類下對(duì)應(yīng)的證候?!吨嗅t(yī)內(nèi)科學(xué)》則是主要講述內(nèi)科疾病的病因病機(jī)、癥候特點(diǎn)、辨證論治及預(yù)防、康復(fù)的一門(mén)學(xué)科,是研究中醫(yī)其他臨床學(xué)科的基礎(chǔ)教材。除此之外,本文使用的數(shù)據(jù)還包括新冠肺炎疫情期間,全國(guó)各地發(fā)布的各種肺炎診療方案。
利用OCR技術(shù)將獲取的中醫(yī)文獻(xiàn)語(yǔ)料轉(zhuǎn)化為文本,同時(shí)對(duì)結(jié)果進(jìn)行去噪,包括刪除亂碼、修改錯(cuò)字等步驟,得到數(shù)據(jù)清洗后的語(yǔ)料。
針對(duì)不同的事件類型分別對(duì)《中醫(yī)診斷學(xué)》《中醫(yī)內(nèi)科學(xué)》以及各種診療方案進(jìn)行篩選,其中《中醫(yī)診斷學(xué)》總共包含句子4286句,《中醫(yī)內(nèi)科學(xué)》包含句子8296條以及各種診療方案2435條。然后我們對(duì)這些文本進(jìn)行了標(biāo)注,數(shù)據(jù)集標(biāo)注方式如下:
(1)觸發(fā)詞標(biāo)注標(biāo)準(zhǔn)
在篩選出完整事件句之后,就要對(duì)其進(jìn)行標(biāo)注。不同的事件類型是根據(jù)不同的事件觸發(fā)詞的分類結(jié)果來(lái)確定的,由于本文使用的是根據(jù)字的序列標(biāo)注模型來(lái)分類的,所采用的標(biāo)注方法為BIOES的標(biāo)注方法。因此,首先需要規(guī)定每類事件觸發(fā)詞的標(biāo)簽符號(hào),不同于其他序列標(biāo)注任務(wù)如實(shí)體識(shí)別,為了區(qū)分事件觸發(fā)詞和事件論元,采用X-T-XX和X-A-XX來(lái)進(jìn)行區(qū)分。例如在“里證是指病變部位在內(nèi),臟腑、氣血、骨髓等受病,以臟腑受損或功能失調(diào)癥狀為主要表現(xiàn)的證”中,“指”應(yīng)標(biāo)注為S-T-ZHGN,而“里證”的標(biāo)簽則為:里(B-AZM)證(E-A-ZM)。在六個(gè)不同類別的事件中,ZHGN表示證候概念、LCBX表示臨床表現(xiàn)、ZHFX表示證候分析、BZYD表示辯證要點(diǎn)、FBXX表示發(fā)病信息、ZFXX表示治法信息,其事件類型及其對(duì)應(yīng)的事件觸發(fā)詞標(biāo)簽如下表3所示。
表3 事件類型及其對(duì)應(yīng)的事件觸發(fā)詞標(biāo)簽表
(2)事件論元標(biāo)注標(biāo)準(zhǔn)
我們依據(jù)定義的事件論元,為每個(gè)元事件類型劃分論元角色。以一句中醫(yī)事件句“表證通常表現(xiàn)為新起惡風(fēng)寒,或惡寒發(fā)熱,頭身疼痛,噴嚏,鼻塞,流涕,咽喉癢痛,微有咳嗽、氣喘,舌淡紅,苔薄,脈浮”為例,根據(jù)“表現(xiàn)為”可以判斷出該句事件句所屬事件為臨床表現(xiàn),論元角色包含癥狀、舌象、苔象、脈象,癥狀角色的實(shí)體為惡風(fēng)寒、惡寒發(fā)熱、頭身疼痛、噴嚏、鼻塞、流涕、咽喉癢痛、微有咳嗽、氣喘;舌象角色對(duì)應(yīng)的實(shí)體為舌淡紅;苔象角色對(duì)應(yīng)的實(shí)體為苔??;脈象角色對(duì)應(yīng)的實(shí)體為脈浮。而每一種事件論元的角色都有其對(duì)應(yīng)的標(biāo)簽,同樣采用BIOES的標(biāo)注方法,事件論元角色標(biāo)簽表如下表4所示。
表4 事件論元角色標(biāo)簽對(duì)照表
(3)基于規(guī)則構(gòu)建標(biāo)注訓(xùn)練集
依據(jù)約定的標(biāo)注標(biāo)準(zhǔn),我們采用詞表匹配的方式對(duì)《中醫(yī)診斷學(xué)》、《中醫(yī)內(nèi)科學(xué)》進(jìn)行初步的標(biāo)注,然后結(jié)合人工校對(duì)的方式對(duì)標(biāo)注結(jié)果進(jìn)行校正。利用前期工作從《中華古代名老中醫(yī)醫(yī)案》和《中醫(yī)證候?qū)W》中抽取的實(shí)體,構(gòu)建中醫(yī)事件的規(guī)則,通過(guò)正則的方法實(shí)現(xiàn)詞表的抽取,抽取規(guī)則如下:
1)總結(jié)中醫(yī)事件類型的觸發(fā)詞,標(biāo)記其對(duì)應(yīng)的事件類型。
2)判斷待標(biāo)注語(yǔ)料句子中是否含有事件觸發(fā)詞,若含有觸發(fā)詞,則根據(jù)觸發(fā)詞對(duì)應(yīng)的事件類型來(lái)匹配對(duì)應(yīng)的事件論元。
3)根據(jù)事件觸發(fā)詞識(shí)別出的事件類型,利用詞表,對(duì)該事件對(duì)應(yīng)的事件論元進(jìn)行填充。如識(shí)別出一句話中包含“表現(xiàn)為”這個(gè)事件觸發(fā)詞,那么將利用總結(jié)的證名、癥狀、舌象、苔象、脈象詞表去發(fā)現(xiàn)其中對(duì)應(yīng)的實(shí)體并將其標(biāo)注出來(lái)。
4)若一句話中含有多種類型的事件觸發(fā)詞,則分別去匹配該種事件對(duì)應(yīng)的事件論元;若一句話中存在同一種事件類型的多個(gè)事件觸發(fā)詞,則同時(shí)匹配出來(lái)。
5)若一句話中只可以匹配出事件觸發(fā)詞而沒(méi)有發(fā)現(xiàn)事件論元,則可以不對(duì)該事件觸發(fā)詞進(jìn)行標(biāo)注。
初步標(biāo)注完成之后,則可得到一個(gè)初步標(biāo)注的數(shù)據(jù)訓(xùn)練集,然后對(duì)其進(jìn)行人工校對(duì),最終得到有標(biāo)注的訓(xùn)練集。下圖2為部分標(biāo)注的數(shù)據(jù)示例。
圖2 中醫(yī)文獻(xiàn)事件展示
上圖中淡紅色字體表示觸發(fā)詞,藍(lán)色字體表示的是證名,綠色表示別名,淺黃色表示舌象,淺綠色表示苔象,淺藍(lán)色表示脈象,金黃色字體表示常見(jiàn)病證,橘黃色字體表示病因,紅色字體表示發(fā)病日期,灰色字體表示發(fā)病分期,淺粉紅色字體表示方藥信息,深綠色字體表示用法信息,事件類型為每句話前面所打的標(biāo)簽,例如方框內(nèi)的這句事件類型為證候概念,事件觸發(fā)詞為“稱”。我們統(tǒng)計(jì)了各類事件句在數(shù)據(jù)集中的分布情況,如下表5所示。
表5 事件類型占比數(shù)
事件抽取的本質(zhì)就是對(duì)句子中的每個(gè)字進(jìn)行分類,所以其本質(zhì)是一個(gè)序列標(biāo)注模型。絕大多數(shù)序列標(biāo)注模型都是以詞作為輸入,這樣會(huì)產(chǎn)生一個(gè)問(wèn)題即分詞所帶來(lái)的誤差會(huì)傳遞到下游任務(wù)中,而由于中醫(yī)語(yǔ)言文字語(yǔ)法結(jié)構(gòu)和表達(dá)方式的特殊性,現(xiàn)有的針對(duì)中文的分詞器并不能很好的對(duì)中醫(yī)文獻(xiàn)進(jìn)行分詞,而且中醫(yī)文獻(xiàn)中單字表示一個(gè)完整語(yǔ)義的情況較多,例如:浮沉分表里,浮,是面色浮顯于皮膚之外,主表證;沉,是面色沉隱于皮膚之內(nèi),主里證。這里面的“浮”“沉”“主”“表”“里”都具有單獨(dú)的語(yǔ)義。因此本文使用基于字的序列標(biāo)注模型,省去分詞步驟而減少誤差傳遞。結(jié)合事件抽取任務(wù)的特性,為了讓事件觸發(fā)詞與事件論元之間可以相互輔助從而提升事件抽取任務(wù)的精度,本文將Self-Attention層融入到序列標(biāo)注任務(wù)中,通過(guò)權(quán)重強(qiáng)化語(yǔ)義表達(dá),從而能夠更深層的捕獲事件觸發(fā)詞與事件論元之間的語(yǔ)義聯(lián)系,提升對(duì)兩個(gè)任務(wù)的識(shí)別分類效果。
模型一共包含四層,分別為Embedding輸入層,BiLSTM層,Self-Attention層,CRF層。模型架構(gòu)圖如圖3所示。
圖3 模型結(jié)構(gòu)圖
1)Embedding輸入層——BERT
我們利用BERT進(jìn)行中醫(yī)文本的特征提取,BERT在大規(guī)模語(yǔ)料上通過(guò)MLM(Masked Language Model)和 NSP(Next Sentence Prediction)兩個(gè)預(yù)訓(xùn)練任務(wù)來(lái)更好地學(xué)習(xí)每個(gè)字的上下文相關(guān)的向量表示。在此基礎(chǔ)上,我們利用中醫(yī)文本進(jìn)行微調(diào),由此能夠更好地捕捉中醫(yī)文本中的語(yǔ)義信息和抽象特征,這對(duì)后續(xù)進(jìn)行中醫(yī)事件抽取是有益的。在輸入層將BERT所生成的字向量作為輸入,假設(shè)BERT生成的字向量為h1,則該字符輸入模型的向量為[h1]。
2)BiLSTM層
BiLSTM層主要是對(duì)輸入向量進(jìn)行特征學(xué)習(xí)。該結(jié)構(gòu)由于有三個(gè)門(mén)單元控制著上下文信息的遺忘、保留和輸出,所以該結(jié)構(gòu)處理序列標(biāo)注任務(wù)具有得天獨(dú)厚的優(yōu)勢(shì)。該層的門(mén)控制機(jī)制能夠充分保留上文信息以及當(dāng)前信息中對(duì)任務(wù)有用的信息。在我們的中醫(yī)事件抽取任務(wù)中,利用BiLSTM可以讓每個(gè)字的特征中包含上下文特征。對(duì)文本進(jìn)行前向和后向的雙向計(jì)算,對(duì)同一個(gè)字符得到兩個(gè)輸出通過(guò)計(jì)算得到當(dāng)前字符的特征向量h,這里使用的計(jì)算方法同樣為兩個(gè)向量的拼接。
3)Self-Attention層
在BiLSTM層之后為Self-Attention層,這層的作用主要是捕捉詞之間依賴關(guān)系。中醫(yī)事件抽取任務(wù)中事件觸發(fā)詞和事件論元之間有很強(qiáng)的依賴關(guān)系,如觸發(fā)詞“表現(xiàn)為”和論元“癥狀”“舌象”之間。利用Self-Attention則能很好地捕捉到這樣的關(guān)系,并且過(guò)濾掉無(wú)用信息的影響,從而提高任務(wù)的精度。假設(shè)BiLSTM層的輸出為H=[h1,h2,h3,…,hn],則接下來(lái)最終用于輸入Self-Attention層的矩陣P可以經(jīng)過(guò)公式(1)計(jì)算得到:
其中Q=K=V=H,此公式得到的結(jié)果是一個(gè)n×d的矩陣,n表示句子中字符的個(gè)數(shù),d表示每個(gè)字符經(jīng)過(guò)注意力層所對(duì)應(yīng)的向量的維度。利用下面公式(2)則可以得出作為接下來(lái)CRF層的輸入的向量P。
其中,W為一個(gè)模型內(nèi)置的參數(shù)矩陣,為的是使得注意力機(jī)制輸出的n×d矩陣轉(zhuǎn)換為一個(gè)n×K的矩陣,其中K為標(biāo)簽類別數(shù)。假設(shè)事件觸發(fā)詞以及事件論元總共有n類,則k=4×n+1。
4)CRF層
為了使得模型可以從全局來(lái)進(jìn)行規(guī)劃,在Self-Attention層之后使用了CRF層,CRF層可以為經(jīng)過(guò)softmax計(jì)算后的類別數(shù)的標(biāo)簽添加一些約束,這樣可以盡最大可能來(lái)保證標(biāo)簽的合法性。例如對(duì)于臨床表現(xiàn)類事件的事件觸發(fā)詞標(biāo)簽T-LCBX,CRF層可以盡可能使B-T-LCBX后不會(huì)再有O、S-T-LCBX或者E-T-LCBX。
假設(shè)存在一句包含n個(gè)字的輸入序列C=(c1,c2,…,cn),經(jīng)過(guò) Self-Attention層之后可以得到一個(gè)n×k的矩陣P,那么,該序列的輸出標(biāo)簽序列L=(l1,l2,…,ln)的最終得分s為公式(3):
在上式中,A是一個(gè)大小為k×k的矩陣,稱為轉(zhuǎn)移矩陣,其中,Ai,j表示的是第i個(gè)標(biāo)簽到第j個(gè)標(biāo)簽的轉(zhuǎn)移概率。Pi,li為第i個(gè)位字符標(biāo)簽為li的概率,每個(gè)字符可以根據(jù)轉(zhuǎn)移矩陣和softmax計(jì)算之后得到一個(gè)得分,而標(biāo)簽序列的整體得分為每個(gè)字符的得分之和。這就會(huì)使得標(biāo)簽序列的預(yù)測(cè)不僅僅是基于當(dāng)前字符標(biāo)簽的最大概率。若當(dāng)一個(gè)字符的預(yù)測(cè)出現(xiàn)B-T-LCBX的概率最高,下一個(gè)字符同樣預(yù)測(cè)為B-T-LCBX的概率最高,但是在CRF層的轉(zhuǎn)移矩陣中B后接B的概率是非常低的,所以出現(xiàn)B-T-LCBX—>B-T-LCBX的概率就不是最高的,因此CRF層對(duì)非法標(biāo)簽序列有一個(gè)糾正作用。
對(duì)于一句輸入樣本C,每個(gè)字符對(duì)應(yīng)的標(biāo)簽有k個(gè),那就會(huì)產(chǎn)生種標(biāo)簽序列,而模型的最終的目標(biāo)函數(shù)為公式(4):
公式(4)中的指的是kn種標(biāo)簽序列,而在訓(xùn)練的時(shí)候采用的目標(biāo)函數(shù)為對(duì)上式取對(duì)數(shù)的形式,具體形式如公式(5),最終模型利用反向傳播對(duì)模型參數(shù)進(jìn)行優(yōu)化。
本實(shí)驗(yàn)主要使用精準(zhǔn)率、召回率和F1值作為評(píng)判指標(biāo),精準(zhǔn)率表示預(yù)測(cè)為正的樣本中真正為正的樣本所占的比例,召回率表示樣本中的正例有多少預(yù)測(cè)正確,F(xiàn)1值為精準(zhǔn)率和召回率的調(diào)和平均。
我們將標(biāo)注的數(shù)據(jù)按照8:1:1的比例劃分為訓(xùn)練集、驗(yàn)證集以及測(cè)試集,然后投入模型進(jìn)行訓(xùn)練,下表6展示了模型部分超參數(shù)設(shè)置。
表6 模型超參數(shù)設(shè)置
1)實(shí)驗(yàn)結(jié)果
本實(shí)驗(yàn)中,使用《中醫(yī)診斷學(xué)》、《中醫(yī)內(nèi)科學(xué)》以及各種診療標(biāo)準(zhǔn)的標(biāo)注語(yǔ)料進(jìn)行實(shí)驗(yàn)分析,所采用的模型是添加注意力機(jī)制的序列標(biāo)注模型。因?yàn)橐淮斡?xùn)練的結(jié)果具偶然性,所以本實(shí)驗(yàn)采用三次結(jié)果的均值來(lái)作為實(shí)驗(yàn)的最終結(jié)果,模型最終對(duì)觸發(fā)詞的準(zhǔn)確率以及召回率進(jìn)行計(jì)算。
由于事件抽取涉及到的實(shí)體種類較多,在本實(shí)驗(yàn)中,我們定義了6種中醫(yī)事件類型,對(duì)應(yīng)6種事件觸發(fā)詞實(shí)體類型以及15種事件論元,因此存在的標(biāo)簽類型有4×(15+6)+1=85種。在分類任務(wù)中,標(biāo)簽類型越多,對(duì)分類準(zhǔn)確率影響越大。為了提高模型的準(zhǔn)確率,本實(shí)驗(yàn)針對(duì)不同事件類型分別訓(xùn)練模型,將標(biāo)注好的語(yǔ)料按照事件類型分開(kāi),對(duì)同一種事件類型只標(biāo)注與其相關(guān)的事件論元并放入模型中,訓(xùn)練得到該種事件的事件抽取模型。但是這種方式會(huì)使得訓(xùn)練語(yǔ)料規(guī)模大幅度降低,結(jié)合表1可知。本實(shí)驗(yàn)將交集較多的劃分為一組,將證候概念、臨床表現(xiàn)、證候分析、辨證要點(diǎn)作為一個(gè)訓(xùn)練集,發(fā)病信息與治法信息作為一個(gè)訓(xùn)練集,總共訓(xùn)練兩個(gè)模型,模型的各項(xiàng)指標(biāo)如下表7所示。
上表為六種中醫(yī)事件觸發(fā)詞的評(píng)價(jià)指標(biāo),在六種中醫(yī)事件類型中,模型整體的精確率達(dá)到74.99%,召回率達(dá)到79.26%,F(xiàn)1值達(dá)到76.96%。模型的觸發(fā)詞識(shí)別的總體效果能達(dá)到70%以上,但是證候分析和辨證要點(diǎn)的精確率相對(duì)較低。這是因?yàn)樽C候分析和辯證要點(diǎn)的觸發(fā)詞變化相對(duì)較大,如在證候分析中“多因”“因”“多為”“為”都是證候分析的觸發(fā)詞,那么識(shí)別過(guò)程中可能出現(xiàn)未識(shí)別到“多因”中的“多”的情況,圖4展示了模型預(yù)測(cè)的部分結(jié)果。
圖4中左側(cè)為人為標(biāo)注的標(biāo)簽,右側(cè)為模型預(yù)測(cè)的標(biāo)簽,可以看到“多因”中的“多”是沒(méi)有預(yù)測(cè)出來(lái)的,因?yàn)橥ǔUZ(yǔ)句中“多因”和“因”使用變化比較頻繁而且變化無(wú)明顯規(guī)律,也可以看到下方的“所致”也是沒(méi)有預(yù)測(cè)出來(lái)的,這是因?yàn)樵跇?biāo)注時(shí)通常只標(biāo)注一個(gè)事件觸發(fā)詞,而人為校正的過(guò)程也會(huì)存在一些噪聲,這些噪聲也是精確率偏低的原因。表8為各類事件對(duì)應(yīng)的事件論元各項(xiàng)指標(biāo)。
從上表可以看出癥狀、病因病機(jī)和用法的精確率是偏低的。這是因?yàn)榘Y狀表達(dá)方式較為多樣而且癥狀邊界不明顯,而病因病機(jī)的精確率較低是因?yàn)橛行┎∫虿C(jī)的描述較長(zhǎng),所以模型識(shí)別時(shí)會(huì)將從來(lái)沒(méi)有遇到過(guò)的語(yǔ)句切分開(kāi)來(lái)。圖5分別展示了部分結(jié)果,其中左邊表示癥狀預(yù)測(cè)的結(jié)果,右邊表示病因病機(jī)預(yù)測(cè)的結(jié)果。
圖5 部分預(yù)測(cè)結(jié)果
2)對(duì)比分析
另外,本文還針對(duì)Pipeline模型和聯(lián)合抽取模型做了對(duì)比分析實(shí)驗(yàn),Pipeline模式分為兩個(gè)階段:事件觸發(fā)詞識(shí)別階段。我們利用一個(gè)事件觸發(fā)詞分類器DMCNN[3]對(duì)句子中每個(gè)詞進(jìn)行分類,判斷是否為觸發(fā)詞;如果存在觸發(fā)詞,執(zhí)行論元分類階段,將事件論元分類過(guò)程看作一個(gè)多分類問(wèn)題,使用一個(gè)分類器判定論元角色,同樣使用DMCNN[3]幫助實(shí)現(xiàn)。因?yàn)榈谝浑A段主要目的是為了確定事件類型,對(duì)事件信息的描述并沒(méi)有什么實(shí)質(zhì)性的影響,所以我們主要針對(duì)事件論元進(jìn)行對(duì)比實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如表9所示。
表9 Pipeline與聯(lián)合抽取模型對(duì)比實(shí)驗(yàn)結(jié)果
由上表可以看出,聯(lián)合抽取模型效果普遍高于Pipeline抽取模型。這是由于聯(lián)合抽取模型可以捕獲到觸發(fā)詞與事件論元之間的關(guān)系,使得兩個(gè)任務(wù)的準(zhǔn)確率都有所提升,而且受益于Self-Attention層可以更精確地捕獲這兩種詞之間的語(yǔ)義關(guān)系,并且CRF層可以學(xué)習(xí)到標(biāo)簽之間的依賴關(guān)系。針對(duì)不同的事件論元,可以看出聯(lián)合抽取模型F1值平均高于Pipeline模型14.2個(gè)百分點(diǎn)。因此實(shí)驗(yàn)證明在我們的數(shù)據(jù)集上聯(lián)合抽取的方法確實(shí)較Pipeline模式的方法更為有效。
本文主要介紹了針對(duì)中醫(yī)文獻(xiàn)的句子級(jí)事件抽取的任務(wù)、數(shù)據(jù)來(lái)源,又根據(jù)ACE事件模式定義了中醫(yī)領(lǐng)域的六類事件類型及其對(duì)應(yīng)的事件論元,對(duì)比當(dāng)前流行的Pipeline事件抽取模型與聯(lián)合事件抽取模型的優(yōu)缺點(diǎn),提出了一種針對(duì)中醫(yī)文獻(xiàn)的句子級(jí)聯(lián)合事件抽取模型,并且結(jié)合事件抽取任務(wù)的特性,提出將Self-Attention機(jī)制融入模型進(jìn)行改進(jìn)的方法。通過(guò)對(duì)比實(shí)驗(yàn)以及分析結(jié)果可知,本文提出的方法是有效的。另外從數(shù)據(jù)準(zhǔn)備與數(shù)據(jù)預(yù)處理的角度,本文還介紹了如何篩選包含中醫(yī)事件類型的句子,定義數(shù)據(jù)標(biāo)注規(guī)則并介紹如何利用規(guī)則和人工結(jié)合的方式對(duì)數(shù)據(jù)進(jìn)行標(biāo)注,從而更好地完成針對(duì)《中醫(yī)診斷學(xué)》、《中醫(yī)內(nèi)科學(xué)》以及各種診療方案的初步事件抽取任務(wù)。
未來(lái),我們將針對(duì)一個(gè)句子可能缺少事件觸發(fā)詞或同一個(gè)事件的事件論元可能分布在不同的句子中的情況開(kāi)展進(jìn)一步的事件抽取方法研究。