陳雪松,朱鑫海,王浩暢
(1.東北石油大學(xué) 電氣信息工程學(xué)院,黑龍江 大慶 163318;2.東北石油大學(xué) 計算機與信息技術(shù)學(xué)院,黑龍江 大慶 163318)
命名實體識別(named entity recognition,NER)作為信息抽取[1]的關(guān)鍵性任務(wù),在關(guān)系抽取[2]、文本摘要[3]、機器翻譯[4]等任務(wù)中發(fā)揮著重要作用。醫(yī)學(xué)領(lǐng)域命名實體識別是指從海量的醫(yī)學(xué)數(shù)據(jù)中識別出有價值的信息的過程,包括癥狀信息、藥物信息、身體部位信息、疾病診斷信息等。有效的命名實體識別過程可以挖掘出醫(yī)學(xué)文本關(guān)鍵信息,對于電子病歷等文本的規(guī)范化和標(biāo)準(zhǔn)化有著重要的作用。
近年來有學(xué)者使用深度學(xué)習(xí)的方法[5-7]處理醫(yī)學(xué)領(lǐng)域命名實體識別任務(wù),然而目前大多數(shù)醫(yī)學(xué)領(lǐng)域命名實體識別模型單獨使用字符級別向量或者詞匯級別向量,而忽略了將字符級別和詞匯級別特征相結(jié)合作為句子特征表示的問題。Yue Zhang等[8]創(chuàng)造性地提出一種Lattice LSTM模型,以字符級別的中文命名實體識別模型為基礎(chǔ),融入大規(guī)模詞表匹配信息,在4個通用數(shù)據(jù)集上驗證引入詞匯信息之后效果可以有比較好的提升。為解決中文醫(yī)學(xué)文本結(jié)構(gòu)復(fù)雜,且單純使用字符級別特征或者詞匯級別特征所導(dǎo)致的語義信息缺失問題,本文提出PMV-LSTM(pre-trained medical vectors long short term memory)方法,通過對大規(guī)模醫(yī)學(xué)領(lǐng)域文本進(jìn)行詞向量和“字符分割”形式的字向量訓(xùn)練,然后將字向量送入Lattice LSTM中,通過Lattice結(jié)構(gòu)巧妙地將詞向量特征和字向量特征融合到一起,得到句子的特征表示,最后對特征表示經(jīng)過CRF層進(jìn)行解碼,得到最終的實體標(biāo)注結(jié)果。經(jīng)過實驗驗證,PMV-LSTM模型與同類型模型相比,在不同醫(yī)學(xué)領(lǐng)域文本命名實體識別任務(wù)中取得了優(yōu)異效果。
基于深度學(xué)習(xí)的命名實體識別一般被看作是序列標(biāo)注問題。通過特征抽取器對句子特征進(jìn)行編碼,然后使用解碼器進(jìn)行解碼來進(jìn)行端到端的處理,得到標(biāo)注結(jié)果。雖然深度學(xué)習(xí)的技術(shù)一定程度上解決了NER任務(wù)對詞典等外部信息的依賴,但只使用基于字符或者基于詞匯的NER方法也會影響到命名實體識別的效果。為此,根據(jù)中文命名實體識別的特點,設(shè)計出PMV-LSTM方法來對中文醫(yī)學(xué)文本進(jìn)行命名實體識別。
本文所提出的PMV-LSTM模型結(jié)構(gòu)分為3部分,嵌入層、Lattice LSTM層和CRF層。模型結(jié)構(gòu)如圖1所示。首先通過對輸入的醫(yī)學(xué)文本進(jìn)行詞級別和字符級別的Word2Vec訓(xùn)練,利用“字符分割”的方式增加字符級別向量的數(shù)量,所謂“字符分割”指的是將醫(yī)學(xué)文本按字符進(jìn)行切分,字符與字符之間以空格隔開,來達(dá)到字符分詞的效果。然后將得到的字符級別特征輸入到Lattice LSTM中進(jìn)行編碼,在Lattice LSTM中巧妙地利用Lattice結(jié)構(gòu)將詞級別特征結(jié)合到一起,最后輸入到CRF層中進(jìn)行解碼,從而得到醫(yī)學(xué)文本命名實體識別的標(biāo)注結(jié)果,整個模型處理過程屬于端到端的過程,不需要進(jìn)行特征工程處理。
圖1 PMV-LSTM模型結(jié)構(gòu)
Word2Vec是一種新的詞向量表示方法[9],通過Skip-gram和CBOW兩種可選的訓(xùn)練方式將詞匯之間的關(guān)系轉(zhuǎn)化成空間中向量的距離問題,距離越近的向量所代表的詞匯越相似。例如,醫(yī)學(xué)文本中,“關(guān)節(jié)炎”和“風(fēng)濕病”的相似度和相關(guān)度明顯比和“新冠肺炎”要高。
本文采用Word2Vec中的Skip-gram模型學(xué)習(xí)得到詞向量,PMV-LSTM模型需要將字符級別特征和詞匯級別特征都學(xué)習(xí)到。另外,為了保證字符級別特征的質(zhì)量,所以將詞向量和字向量分開訓(xùn)練。首先從網(wǎng)絡(luò)中爬取醫(yī)學(xué)文本語料,對其進(jìn)行去停用詞處理,利用pkuseg分詞工具[10]進(jìn)行醫(yī)學(xué)領(lǐng)域文本分詞,同時為了保證分詞質(zhì)量,加入自定義的醫(yī)學(xué)領(lǐng)域詞典,然后利用gensim工具包[11]進(jìn)行詞向量訓(xùn)練,維度為300維。將得到的詞向量中字符級別向量單獨取出,余下的向量作為詞匯級別向量使用。字符級別向量訓(xùn)練過程類似,不同的是醫(yī)學(xué)文本不需要進(jìn)行分詞處理,而是對每個字符以空格隔開,得到類似于字符級分詞的效果,然后再進(jìn)行Word2Vec訓(xùn)練,得到的向量全部都是模型中可以使用的字符級向量。此時得到醫(yī)學(xué)領(lǐng)域向量有542 554條,包括詞匯級別向量534 427條,字符級別向量8127條。最后將字向量和詞向量輸入到Lattice LSTM中融合,以提高模型的性能。
不同于英文文本的命名實體識別,中文文本的命名實體識別通常需要以字符級別為單位進(jìn)行序列標(biāo)注。這主要是因為中文文本的特點,并沒有像英文那樣以空格作為天然的分隔符,需要進(jìn)行分詞處理。然而中文分詞由于文本的領(lǐng)域不同和模型準(zhǔn)確率的原因會存在誤差,導(dǎo)致基于字符級別的命名實體識別模型效果要優(yōu)于基于詞匯級別的命名實體識別模型。但并不是NER任務(wù)不需要詞匯信息作為輔助,在NER模型中加入詞匯信息不僅可以強化命名實體的實體邊界,也可以看作是一種數(shù)據(jù)增強方式,以詞匯信息作為輔助信息來使模型學(xué)習(xí)到更多的句子深層語義特征。
本文提出的PMV-LSTM模型,引入Lattice LSTM,重新訓(xùn)練適用于醫(yī)學(xué)領(lǐng)域的詞向量,以詞匯作為外部資源信息,Lattice結(jié)構(gòu)能夠動態(tài)引入詞匯信息,用特殊的門控機制來控制詞信息流,對句子中所有可能存在的詞和詞典進(jìn)行匹配來編碼。
(1)
(2)
首先Lattice LSTM以字符級別的LSTM模型為基礎(chǔ),如果句子s中字符cj在詞典中沒有相匹配的詞,也就是說當(dāng)前位置j沒有對應(yīng)的詞序列,則在此位置Lattice LSTM就是基于字符級別的LSTM模型。
(3)
(4)
(5)
其中,WlT和bl為模型訓(xùn)練參數(shù)。
(6)
(7)
(8)
(9)
在NER模型訓(xùn)練過程中,反向傳播參數(shù)Wc,bc,Ww,bw,Wl和bl,使模型動態(tài)的關(guān)注標(biāo)注過程中更相關(guān)的詞,選出最適合當(dāng)前的字詞表征。
最后加入CRF層,通過計算CRF中的發(fā)射分?jǐn)?shù)和轉(zhuǎn)移分?jǐn)?shù)來對標(biāo)注結(jié)果進(jìn)行約束,學(xué)習(xí)到相鄰標(biāo)簽的結(jié)果,保證最終預(yù)測結(jié)果的準(zhǔn)確性。
訓(xùn)練出合適的詞向量是PMV-LSTM模型的基礎(chǔ),本文用來訓(xùn)練詞向量的醫(yī)學(xué)文本語料有兩部分,第一部分是采用爬蟲技術(shù)從39健康網(wǎng)、99健康網(wǎng)、A+醫(yī)學(xué)百科爬取的身體部位、疾病癥狀、診斷治療等信息。第二部分是cMedQA中文社區(qū)醫(yī)療問答數(shù)據(jù)和互聯(lián)網(wǎng)中搜集到的中文醫(yī)療對話數(shù)據(jù)集,涉及到疾病診斷、身體部位、治療藥物等信息,共約100萬個問答對。最后經(jīng)過數(shù)據(jù)清洗得到的有效醫(yī)學(xué)文本語料約144萬行,語料規(guī)模為650 MB大小。
分詞是利用Word2Vec進(jìn)行詞向量訓(xùn)練的關(guān)鍵,在NLP領(lǐng)域中,一般使用jieba分詞工具[12]進(jìn)行分詞操作,在通用領(lǐng)域取得了較好的效果。但是在中文醫(yī)學(xué)領(lǐng)域,通用的分詞工具在醫(yī)學(xué)文本上并不一定有較好的效果。所以,本文使用北京大學(xué)開發(fā)的具有領(lǐng)域分詞功能的pkuseg分詞工具,該分詞工具可以根據(jù)待分詞文本的特點選擇對應(yīng)領(lǐng)域的分詞模型。
本文在使用了醫(yī)學(xué)領(lǐng)域的分詞模型之后,為了確保分詞的準(zhǔn)確性,另外添加了一個自定義的醫(yī)學(xué)詞典。所構(gòu)造的詞典是從互聯(lián)網(wǎng)中搜集到的符合ICD10標(biāo)準(zhǔn)[13]的疾病名稱、藥名、癥狀詞典和醫(yī)院用電子病歷詞庫[14,15],共77 487條醫(yī)學(xué)詞匯。
經(jīng)過上述的分詞處理之后,本文使用Python中的gensim工具包進(jìn)行訓(xùn)練詞向量。由于Lattice LSTM的特點,需要使用句子的詞向量信息和字向量信息,首先對上述分詞之后的醫(yī)學(xué)文本進(jìn)行普通的詞向量訓(xùn)練,得到大規(guī)模的醫(yī)學(xué)詞向量539 809條,其中詞匯級別向量534 427條,字符級別向量5382條。這里只選擇詞匯級別的向量作為所需要的詞向量。然后對字符級別向量進(jìn)行訓(xùn)練,所使用的方法和之前類似,將獲取的醫(yī)學(xué)文本以字符為單位用空格分隔,相當(dāng)于分詞操作,然后對此時的文本進(jìn)行Word2Vec訓(xùn)練,得到字符級別的向量,共8127條。此時得到最終的醫(yī)學(xué)領(lǐng)域詞向量有542 554條,包括詞匯級別向量534 427條,字符級別向量8127條。
在訓(xùn)練過程中,Word2Vec模型選擇Skip-gram算法,窗口大小為5,最小詞頻選擇1,采用層次softmax技巧進(jìn)行訓(xùn)練,字詞向量的維度選擇300維。為了更直觀體現(xiàn)出字嵌入和詞嵌入的效果,分別選取“痛”和“心臟病”來對其字嵌入相關(guān)性和詞嵌入相關(guān)性進(jìn)行分析。如圖2所示,可以看出通過Word2Vec訓(xùn)練得到的兩個詞,在向量空間上距離相近時,實際詞義也相關(guān)。
圖2 字詞嵌入相關(guān)性
本文實驗使用Python語言進(jìn)行編寫,深度學(xué)習(xí)框架選擇Pytorch,在Ubuntu 5.4.0系統(tǒng),Intel(R) Core(TM) i7-9700K處理器,Nvidia RTX2080 Super顯卡環(huán)境下進(jìn)行本實驗。醫(yī)學(xué)領(lǐng)域命名實體識別的性能評估采用精確率(precision,P)、召回率(recall,R)和F1值3個指標(biāo)。
為了驗證本文模型對醫(yī)學(xué)領(lǐng)域命名實體識別任務(wù)的普適性,使用了3個醫(yī)學(xué)領(lǐng)域的數(shù)據(jù)集來進(jìn)行實驗,涉及到醫(yī)學(xué)電子病歷領(lǐng)域和醫(yī)學(xué)社區(qū)問答領(lǐng)域,分別是CCKS2017命名實體識別數(shù)據(jù)集[16]、cEHRNER命名實體識別數(shù)據(jù)集和cMedQANER命名實體識別數(shù)據(jù)集[17]。
CCKS2017(China conference on knowledge graph and semantic computing 2017)為2017年全國知識圖譜與語義大會的評測任務(wù)數(shù)據(jù),有4種類型的電子病歷,一般項目、病史特點、診療經(jīng)過和出院情況,其中有身體部位、癥狀和體征、疾病和診斷、檢查和檢驗、治療5種類型的醫(yī)學(xué)領(lǐng)域?qū)嶓w需要識別出來,實體數(shù)量分別為20 077個、14 583個、5205個、19 959個和5456個,標(biāo)注模式為BIO模式。
cEHRNER為從中國電子健康記錄(Chinese electronic health records)標(biāo)記的數(shù)據(jù)集。有癥狀、手術(shù)、疾病和診斷、解剖部位、藥物、實驗室檢驗、影像檢查7種醫(yī)學(xué)領(lǐng)域?qū)嶓w,標(biāo)注模式為BIO模式。其中訓(xùn)練集914條電子病歷數(shù)據(jù),驗證集44條電子病歷數(shù)據(jù),測試集41條電子病歷數(shù)據(jù)。
cMedQANER為從中文醫(yī)學(xué)社區(qū)問答中標(biāo)記的數(shù)據(jù)集。有癥狀、患者類型、疾病、藥物、治療、身體部位、特征、測試、時間、科室、生理機能11種醫(yī)學(xué)領(lǐng)域?qū)嶓w,標(biāo)注模式為BIO模式。其中訓(xùn)練集1673條醫(yī)學(xué)問答數(shù)據(jù),驗證集175條醫(yī)學(xué)問答數(shù)據(jù),測試集215條醫(yī)學(xué)問答數(shù)據(jù)。
詞向量的優(yōu)劣對于本文模型的效果有著重要的影響。為了得到合適的醫(yī)學(xué)領(lǐng)域詞向量,首先需要對醫(yī)學(xué)語料進(jìn)行文本分詞,然后再進(jìn)行詞向量的訓(xùn)練。本文從所使用的分詞工具、詞向量訓(xùn)練的維度兩個角度進(jìn)行實驗,充分驗證不同的方式對于醫(yī)學(xué)命名實體識別效果的影響,尋找到使得模型效果最好的參數(shù)。
本文選取目前自然語言處理中常用的jieba分詞和具有領(lǐng)域分詞功能的pkuseg分詞兩種工具,并且從50維、100維、200維、300維4個維度進(jìn)行對比,在CCKS2017數(shù)據(jù)集上進(jìn)行實驗驗證。此時所使用的詞匯級別向量和字符級別向量為Word2Vec直接訓(xùn)練得出,從中提取出字符級別的向量為字符向量,共5382條,其余部分為詞匯級向量,共534 427條。不同分詞工具和詞向量維度的醫(yī)學(xué)實體識別結(jié)果如圖3所示。
圖3 不同分詞和詞向量維度實體識別結(jié)果對比
從圖3中可以看出,詞向量維度為50維、100維、200維和300維情況下,pkuseg和jieba均對醫(yī)學(xué)實體識別的效果有所影響。當(dāng)選擇迭代次數(shù)為50次時,隨著迭代次數(shù)的增加,醫(yī)學(xué)實體識別的F1值在各個維度均處于先上升然后趨于平緩的狀態(tài)。詞向量維度在50維、100維、200維及300維時,使用pkuseg分詞工具進(jìn)行分詞,然后進(jìn)行實體識別的效果要好于使用jieba分詞的結(jié)果,最好的結(jié)果處于使用pkuseg分詞工具,并且詞向量維度為300維時。因此,本文選取pkuseg分詞工具進(jìn)行分詞,以確保分詞效果,詞向量維度選擇300維,可以更大程度上體現(xiàn)出語義信息。
為了進(jìn)一步探討PMV-LSTM模型的有效性,本文在多個醫(yī)學(xué)領(lǐng)域數(shù)據(jù)集上進(jìn)行驗證,并且與幾組基線模型進(jìn)行對比。
表1中列出了幾種對比模型的具體信息,其中字符向量訓(xùn)練方式中分開訓(xùn)練指Lattice LSTM字符向量是利用Giga-Word經(jīng)過大規(guī)模標(biāo)準(zhǔn)分詞后的語料[18]訓(xùn)練得到,詞匯向量是使用CTB6.0(Chinese treebank 6.0)語料庫[19]訓(xùn)練得到;聯(lián)合訓(xùn)練是指利用Word2Vec在醫(yī)學(xué)文本語料上將字符和詞匯向量一起訓(xùn)練得到;字符分割訓(xùn)練指字符級別向量是在醫(yī)學(xué)文本語料上利用字符分割的方式訓(xùn)練得到,詞匯級別向量取聯(lián)合訓(xùn)練中的詞匯級向量。
表1 對比模型信息
另外,BiLSTM、LSTM-CRF和BiLSTM-CRF是經(jīng)典的命名實體識別模型,BiLSTM模型通過利用詞向量信息,然后將其輸入到BiLSTM中進(jìn)行中文醫(yī)學(xué)命名實體識別。LSTM-CRF模型使用單向LSTM進(jìn)行編碼,然后使用CRF進(jìn)行解碼,BiLSTM-CRF在LSTM-CRF的基礎(chǔ)上使用了雙向LSTM,能更好捕獲雙向的語義依賴信息。以上3種命名實體識別模型均采用隨機初始化詞序列特征表示,利用NCRFpp框架[20]進(jìn)行復(fù)現(xiàn)。
PMV-LSTM模型在CCKS2017、cEHRNER和cMedQANER數(shù)據(jù)集的測試集結(jié)果見表2~表4,與其它經(jīng)典模型比較的結(jié)果見表5。
表2 CCKS2017上識別效果對比
表3 cEHRNER上識別效果對比
表4 cMedQANER上識別效果對比
表5 與其它經(jīng)典研究比較結(jié)果
由表2可知,在CCKS2017數(shù)據(jù)集上PMV-LSTM(dict)模型比PMV-LSTM(no dict)模型的F1值高了0.3%,表明在分詞過程中加入自定義的醫(yī)學(xué)領(lǐng)域詞典對詞向量的訓(xùn)練有著積極的作用。與PMV-LSTM(dict)模型相比,PMV-LSTM模型F1值也有著0.16%的效果提升,表明使用“字符分割”來得到字符級向量的方式,能夠增加醫(yī)學(xué)詞匯的匹配度。同時PMV-LSTM模型比Lattice LSTM基線模型效果提升0.92%,說明PMV-LSTM模型在醫(yī)學(xué)領(lǐng)域?qū)iT訓(xùn)練詞向量,使用“字符分割”來得到字符級向量的方式,能夠提升醫(yī)學(xué)領(lǐng)域命名實體識別的效果。
進(jìn)一步對比表3和表4,在cEHRNER和cMedQANER數(shù)據(jù)集中PMV-LSTM(dict)模型比PMV-LSTM(no dict)模型同樣都有一定的提升,F(xiàn)1值提升幅度分別為0.93%和0.1%,這也說明詞典作為額外的資源對醫(yī)學(xué)領(lǐng)域復(fù)雜的專業(yè)名詞分詞有著幫助作用。PMV-LSTM模型比PMV-LSTM(dict)模型在兩個數(shù)據(jù)集中F1值分別提升了2.47%和0.39%,進(jìn)一步說明字符級向量的數(shù)量會影響模型的結(jié)果。通過對醫(yī)學(xué)文本語料進(jìn)行空格分隔操作,可以得到更多的字符級向量,增加數(shù)據(jù)集中字符的匹配度,減少遇到詞庫外字符的情況,提升模型的識別效果。總體來看cEHRNER上PMV-LSTM模型比Lattice LSTM基線模型提升幅度巨大,精確率、召回率、F1值分別提升了32.49%、39.54%、37.34%。主要有兩個原因,首先在此數(shù)據(jù)集中,“手術(shù)”、“疾病和診斷”兩類實體相對于其它實體而言長度較長,平均長度分別為13個字符和7個字符,而在用Word2Vec訓(xùn)練詞向量時會有窗口大小限制,沒有學(xué)習(xí)到窗口外的上下文信息,所以會影響“手術(shù)”、“疾病和診斷”這兩類實體的識別準(zhǔn)確性,進(jìn)而影響整體識別效果;其次Lattice LSTM基線模型中的詞向量在此數(shù)據(jù)集上沒有得到很好的匹配,導(dǎo)致出現(xiàn)了較多“未登錄詞”的情況,所以識別效果較差,而用醫(yī)學(xué)文本訓(xùn)練出來的詞向量可以達(dá)到更高的匹配度,緩解OOV(out of vocabulary)的問題。cMedQANER上PMV-LSTM模型相較于Lattice LSTM基線模型識別效果也有所提升,精確率、召回率、F1值分別提升了2.33%、3.36%、2.87%。在此數(shù)據(jù)集上達(dá)到的F1值為85.32%,相較于CCKS2017數(shù)據(jù)集的F1值低,這表明實體類別的增加對實體識別也會有所影響,但PMV-LSTM模型效果能夠在Lattice LSTM基線模型基礎(chǔ)上有所提升,說明特定領(lǐng)域的詞向量和大量的字向量的引入能夠有效解決實體類別多的問題。由表5可知,與其它經(jīng)典研究相比,在CCKS2017上BiLSTM-CRF模型取得了87.97%的F1值,與BiLSTM模型相比提升2.34%,說明CRF可以在BiLSTM的基礎(chǔ)上進(jìn)一步學(xué)習(xí)到相鄰實體的信息,而LSTM-CRF模型取得了86.31%的F1值,均低于PMV-LSTM模型識別效果。在cEHRNER和cMedQANER上BiLSTM-CRF模型分別取得了70.00%和80.63%的F1值,均高于BiLSTM模型和LSTM模型效果,而PMV-LSTM模型在兩個數(shù)據(jù)集上的F1值相較于BiLSTM-CRF模型分別提升了9.01%和4.69%,表明PMV-LSTM模型在使用了詞匯級特征和字符級特征之后,比單純使用詞級特征效果要好。
綜上所述,本文提出的PMV-LSTM方法將字符級命名實體識別方法進(jìn)行改進(jìn),通過Lattice結(jié)構(gòu)巧妙地將詞匯信息動態(tài)引入字符級命名實體識別方法中,在文本表示時既考慮字符信息,也考慮到詞匯信息,打破了純字符級命名實體識別和純詞匯級命名實體識別方法不能很好地編碼醫(yī)學(xué)文本語義信息的缺陷。另外,通過對醫(yī)學(xué)語料進(jìn)行專門訓(xùn)練,得到面向醫(yī)學(xué)領(lǐng)域的詞向量,并且使用了“字符分割”方法來增加字符級別向量的數(shù)量,使得訓(xùn)練出來的向量能夠更好地匹配醫(yī)學(xué)領(lǐng)域文本,較好地適用醫(yī)學(xué)領(lǐng)域命名實體識別任務(wù),通過實驗驗證了本文模型的有效性。
本文針對目前中文醫(yī)學(xué)領(lǐng)域命名實體識別大多只基于字符級別或者只基于詞匯級別進(jìn)行實體識別的缺陷,提出PMV-LSTM模型,重新訓(xùn)練醫(yī)學(xué)領(lǐng)域詞向量,將醫(yī)學(xué)文本中的詞匯信息通過Lattice結(jié)構(gòu)引入基于字符級別的模型中,自動選擇適合當(dāng)前上下文語義的詞匯信息,并且利用“字符分割”的方法得到更多的字符級別向量,提升醫(yī)學(xué)文本的匹配度。通過實驗驗證,本文提出的方法在3個醫(yī)學(xué)領(lǐng)域數(shù)據(jù)集上均取得了不錯的效果,并且相較于Lattice LSTM模型效果有所提升,能夠有效解決字符級別模型和詞匯級別模型的語義信息缺失問題,更好提取上下文信息。由于醫(yī)學(xué)文本命名實體識別非常依賴上下文的信息,本文下一步的研究將會探索使用更先進(jìn)的預(yù)訓(xùn)練語言模型進(jìn)行命名實體識別任務(wù)。