劉龍航 趙鐵軍
摘 要: 從醫(yī)療文本中抽取知識(shí)對(duì)構(gòu)建醫(yī)療輔助診斷系統(tǒng)等應(yīng)用具有重要意義。實(shí)體識(shí)別是其中的核心步驟?,F(xiàn)有的實(shí)體識(shí)別模型大都是基于標(biāo)注數(shù)據(jù)的深度學(xué)習(xí)模型,非常依賴(lài)高質(zhì)量大規(guī)模的標(biāo)注數(shù)據(jù)。為了充分利用已有的醫(yī)療領(lǐng)域詞典和預(yù)訓(xùn)練語(yǔ)言模型,本文提出了融合知識(shí)的中文醫(yī)療實(shí)體識(shí)別模型。一方面基于領(lǐng)域詞典提取領(lǐng)域知識(shí),另一方面,引入預(yù)訓(xùn)練語(yǔ)言模型BERT作為通用知識(shí),然后將領(lǐng)域知識(shí)和通用知識(shí)融入到模型中。此外,本文引入了卷積神經(jīng)網(wǎng)絡(luò)來(lái)提高模型的上下文建模能力。本文在多個(gè)數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果表明,將知識(shí)融合到模型中能夠有效提高中文醫(yī)療實(shí)體識(shí)別的效果。
關(guān)鍵詞: 實(shí)體識(shí)別; 序列標(biāo)注模型; 融合知識(shí)
文章編號(hào): 2095-2163(2021)03-0094-04 中圖分類(lèi)號(hào):TP391.4 文獻(xiàn)標(biāo)志碼:A
【Abstract】Extracting knowledge from medical texts is of great significance to the construction of medical auxiliary diagnosis system and other applications. Entity recognition is an important step. Most of the existing entity recognition models are based on the deep learning model of annotation data, which rely heavily on high-quality large-scale annotation data. In order to make full use of the existing medical dictionary and pre-training language model, this paper proposes a Chinese medical entity recognition model with knowledge fusion. On one hand, domain knowledge is extracted based on domain dictionary; on the other hand, the pre-training language model BERT is used as general knowledge, and then domain knowledge and general knowledge are integrated into the model. In addition, convolution neural network is introduced to improve the context modeling ability of the model. In this paper, experiments are carried out on multiple datasets. The experimental results show that knowledge fusion can effectively improve the effect of medical entity recognition.
【Key words】 entity recognition; ?sequence labeling model; ?knowledge fusion
0 引 言
在醫(yī)療健康領(lǐng)域中,擁有大量疾病及藥品等數(shù)據(jù)。這些數(shù)據(jù)廣泛存在于在線(xiàn)百科和醫(yī)療網(wǎng)站中,其中則蘊(yùn)含著豐富的醫(yī)學(xué)知識(shí)。從醫(yī)療文本中抽取知識(shí)對(duì)構(gòu)建醫(yī)療輔助診斷系統(tǒng)等應(yīng)用具有重要意義。中文醫(yī)療實(shí)體識(shí)別指的是給定一篇醫(yī)學(xué)文本,標(biāo)注出文本中出現(xiàn)的醫(yī)學(xué)實(shí)體,是從醫(yī)學(xué)文本中獲取醫(yī)學(xué)知識(shí)的關(guān)鍵技術(shù)。對(duì)于中文醫(yī)療實(shí)體識(shí)別任務(wù)而言,采用詞級(jí)別的序列標(biāo)注,會(huì)引入分詞錯(cuò)誤帶來(lái)的誤差。通常將中文醫(yī)療實(shí)體識(shí)別任務(wù)轉(zhuǎn)為字符級(jí)別的序列標(biāo)注問(wèn)題。
本文探索了一種融合知識(shí)的深度學(xué)習(xí)模型架構(gòu)。一方面基于領(lǐng)域詞典提取領(lǐng)域知識(shí),另一方面,引入預(yù)訓(xùn)練語(yǔ)言模型BERT作為通用知識(shí),然后將領(lǐng)域知識(shí)和通用知識(shí)融入到模型中。此外,引入了CNN來(lái)提高模型的上下文建模能力。實(shí)驗(yàn)方面,本文在多個(gè)數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果表明,將知識(shí)融合到模型中能夠有效提高中文醫(yī)療實(shí)體識(shí)別的效果。
1 相關(guān)工作
早期的研究人員通常采用醫(yī)學(xué)專(zhuān)家定義的規(guī)則并且基于醫(yī)學(xué)領(lǐng)域詞典對(duì)醫(yī)療實(shí)體進(jìn)行自動(dòng)識(shí)別[1-2]。基于醫(yī)學(xué)詞典及規(guī)則方法的優(yōu)點(diǎn)是無(wú)需標(biāo)注數(shù)據(jù),缺點(diǎn)是維護(hù)高質(zhì)量的醫(yī)學(xué)詞典困難,并且專(zhuān)家定義的規(guī)則只適合某些場(chǎng)景。后來(lái)機(jī)器學(xué)習(xí)模型逐漸成為了實(shí)體識(shí)別的主流方法[3-4]?;趥鹘y(tǒng)機(jī)器學(xué)習(xí)方法無(wú)需人工定義規(guī)則和醫(yī)學(xué)詞典,具有不錯(cuò)的穩(wěn)定性。然而,該方法的效果很大程度上取決于定義的特征模板是否考慮周全,限制了模型的泛化能力。
近年來(lái),深度學(xué)習(xí)方法在實(shí)體識(shí)別領(lǐng)域取得了顯著的效果[5]。Li等人[6]將BiLSTM-CRF模型應(yīng)用于中文電子病歷的實(shí)體識(shí)別任務(wù),并基于醫(yī)療領(lǐng)域數(shù)據(jù)訓(xùn)練了更豐富、更專(zhuān)業(yè)的詞向量,進(jìn)一步提高了模型性能。Lee等人[7]將預(yù)訓(xùn)練語(yǔ)言模型BERT[8]應(yīng)用于醫(yī)療領(lǐng)域,基于大規(guī)模醫(yī)學(xué)領(lǐng)域的英文語(yǔ)料訓(xùn)練得到BioBert模型,最終在多個(gè)英文實(shí)體識(shí)別語(yǔ)料上取得最優(yōu)結(jié)果?;谏疃葘W(xué)習(xí)的方法效果優(yōu)于傳統(tǒng)機(jī)器學(xué)習(xí)方法的重要原因是該方法無(wú)需人工定義特征模板,而是通過(guò)深度神經(jīng)網(wǎng)絡(luò)自動(dòng)進(jìn)行特征學(xué)習(xí),從而具有更強(qiáng)的泛化能力。
2 知識(shí)提取
2.1 基于領(lǐng)域詞典的領(lǐng)域知識(shí)提取
字級(jí)別的序列標(biāo)注問(wèn)題本質(zhì)上是對(duì)每個(gè)字進(jìn)行多分類(lèi)。因此,可以利用醫(yī)療領(lǐng)域詞典這一額外資源增強(qiáng)每個(gè)字的特征表示,從而提高分類(lèi)的準(zhǔn)確度。基于此,最樸素的思想就是基于醫(yī)療領(lǐng)域詞典給每個(gè)字打標(biāo)簽,再對(duì)離散化的標(biāo)簽進(jìn)行特征表示。具體來(lái)說(shuō),給定一個(gè)由T個(gè)漢字構(gòu)成的句子S=
通過(guò)雙向最大匹配算法得到打上標(biāo)簽的文本片段后,可以進(jìn)一步對(duì)文本片段中的字打標(biāo)簽??紤]了每個(gè)字在其所屬實(shí)體的位置信息:如果該字單獨(dú)構(gòu)成一個(gè)實(shí)體,那么在字標(biāo)簽由前綴“S”和其所屬文本片段的實(shí)體類(lèi)型標(biāo)簽構(gòu)成;類(lèi)似地,用標(biāo)志“B”和其所屬文本片段的實(shí)體類(lèi)型標(biāo)簽指示某個(gè)實(shí)體的第一個(gè)字;用標(biāo)志“E” 和其所屬文本片段的實(shí)體類(lèi)型標(biāo)簽指示某個(gè)實(shí)體的最后一個(gè)字;用標(biāo)志“I” 和其所屬文本片段的實(shí)體類(lèi)型標(biāo)簽指示某個(gè)實(shí)體中間的字。表1中舉例說(shuō)明了這種標(biāo)記方式。通過(guò)embedding方式對(duì)字標(biāo)簽進(jìn)行表示得到相應(yīng)的特征表示向量。
2.2 基于BERT的通用知識(shí)提取
從大規(guī)模無(wú)標(biāo)注文本中進(jìn)行語(yǔ)言表示學(xué)習(xí)是自然語(yǔ)言處理的重要研究方向。BERT(Bidirectional Encoder Representations from Transformers)是一個(gè)上下文表示的語(yǔ)言表示模型。這是基于使用雙向多層Transformer編碼器[10]的屏蔽語(yǔ)言模型(masked language model)預(yù)先訓(xùn)練的,結(jié)合下一個(gè)句子預(yù)測(cè)任務(wù)和更大的文本語(yǔ)料庫(kù),可以用于學(xué)習(xí)更好的雙向上下文表示。
BERT模型有2個(gè)步驟,分別是:預(yù)訓(xùn)練和微調(diào)(finetuning)。通過(guò)預(yù)訓(xùn)練,BERT從大規(guī)模無(wú)標(biāo)注數(shù)據(jù)學(xué)習(xí)到的語(yǔ)言上下文表示向量,這些向量蘊(yùn)含了自然語(yǔ)言的組織內(nèi)在規(guī)律,本文把這種內(nèi)在規(guī)律稱(chēng)為通用知識(shí)。序列標(biāo)注任務(wù)是token級(jí)別的分類(lèi),對(duì)于中文而言,BERT模型的token是字級(jí)別,這與本文采用字符級(jí)別的序列標(biāo)注解決中文醫(yī)療實(shí)體識(shí)別問(wèn)題正好吻合?;贐ERT的通用知識(shí)提取則如圖1所示。由圖1可知,本文將BERT模型最后一層隱狀態(tài)輸出向量作為字的表示向量,將其視為通用知識(shí)融入到后續(xù)序列標(biāo)注模型部分,豐富序列標(biāo)注模型的輸入信息,從而提高模型的識(shí)別能力。
3 融合知識(shí)的實(shí)體識(shí)別模型
融合知識(shí)的實(shí)體識(shí)別模型的輸入是單個(gè)句子,輸出是字符級(jí)別的標(biāo)注結(jié)果。模型分為3部分,分別是:輸入編碼層、上下文建模層以及條件隨機(jī)場(chǎng)(CRF)輸出層。其中,輸入編碼層將融合領(lǐng)域知識(shí)和通用知識(shí),上下文建模層將通過(guò)CNN和BiLSTM對(duì)輸入編碼進(jìn)行上下文建模,CRF輸出層用于解決標(biāo)簽依賴(lài)問(wèn)題,并輸出最終的序列標(biāo)注結(jié)果。對(duì)此擬展開(kāi)研究分述如下。
3.3 條件隨機(jī)場(chǎng)層
對(duì)于字符級(jí)別的序列標(biāo)注任務(wù),通常來(lái)說(shuō)考慮相鄰標(biāo)簽的依賴(lài)性有助于提高模型的識(shí)別能力。例如,開(kāi)始標(biāo)簽“B”后面應(yīng)該跟中間標(biāo)簽“I”或結(jié)束標(biāo)簽“E”,I標(biāo)簽后面不能跟B標(biāo)簽或S標(biāo)簽。因此,研究中沒(méi)有只使用的ht來(lái)進(jìn)行標(biāo)簽分類(lèi)決策,而是使用條件隨機(jī)場(chǎng)(CRF)來(lái)聯(lián)合建模標(biāo)簽序列。CRF層是一個(gè)將狀態(tài)轉(zhuǎn)移矩陣作為參數(shù)的線(xiàn)性鏈?zhǔn)綗o(wú)向圖模型。通過(guò)該模型,可以利用前一個(gè)標(biāo)簽和后一個(gè)標(biāo)簽的信息來(lái)預(yù)測(cè)當(dāng)前標(biāo)簽。
4 實(shí)驗(yàn)
4.1 數(shù)據(jù)集與評(píng)價(jià)指標(biāo)
本實(shí)驗(yàn)采用2個(gè)數(shù)據(jù)集,分別是:CCKS 2019評(píng)測(cè)一面向中文電子病歷的醫(yī)療實(shí)體識(shí)別數(shù)據(jù)集[13]和天池平臺(tái)中文糖尿病標(biāo)注數(shù)據(jù)集[14](A Labeled Chinese Dataset for Diabetes)。上述兩個(gè)數(shù)據(jù)集都是按照文檔級(jí)進(jìn)行構(gòu)建的,需要將文檔級(jí)樣本切分為句子級(jí)樣本,切分后的數(shù)據(jù)集詳細(xì)情況見(jiàn)表2。
對(duì)應(yīng)醫(yī)療實(shí)體識(shí)別任務(wù),本文選擇最常用的評(píng)價(jià)指標(biāo),即所有實(shí)體類(lèi)型上的微平均(micro-average) F1值。
4.2 實(shí)驗(yàn)設(shè)置
本文采用Pytorch框架[15]進(jìn)行模型實(shí)現(xiàn)。具體來(lái)說(shuō),對(duì)于輸入編碼層部分,字嵌入維度為128,字標(biāo)簽的嵌入向量維度均為128,BERT采用Google官方基于中文維基百科訓(xùn)練的BERTbase模型;上下文建模層部分,BiLSTM的隱狀態(tài)維度是128,CNN采取多種窗口大小的卷積核,分別是3,5,7,每種卷積核特征數(shù)為100。
4.3 實(shí)驗(yàn)結(jié)果與分析
通過(guò)對(duì)不同的輸入編碼以及不同的上下文建模進(jìn)行組合,可以得到多個(gè)模型,將這些模型應(yīng)用于實(shí)驗(yàn)數(shù)據(jù)集進(jìn)行訓(xùn)練和預(yù)測(cè)。實(shí)驗(yàn)結(jié)果見(jiàn)表3。由表3可以看出,采用BERT結(jié)合字標(biāo)簽的詞典特征作為輸入編碼,使用CNN+BiLSTM作為上下文建模層時(shí),在2個(gè)數(shù)據(jù)集的實(shí)驗(yàn)效果達(dá)到最好。下面將單獨(dú)分析不同輸入編碼方式以及不同上下文建模方式的效果。
(1)領(lǐng)域知識(shí):在其他條件相同的情況下,融入詞典特征要比不融入詞典特征的效果好。實(shí)驗(yàn)結(jié)果表明基于領(lǐng)域詞典提取的領(lǐng)域知識(shí)能夠有效提高模型的性能。這種領(lǐng)域知識(shí)取決于上下文和領(lǐng)域詞典,不受其他句子或統(tǒng)計(jì)信息的影響。因此,在某種程度上可以提供與監(jiān)督學(xué)習(xí)數(shù)據(jù)驅(qū)動(dòng)不同的信息。
(2)通用知識(shí):在其他條件相同的情況下,使用BERT的實(shí)驗(yàn)效果要明顯優(yōu)于不使用BERT。這表明將BERT輸出的字向量作為通用知識(shí)融入到模型能有效提高醫(yī)療實(shí)體識(shí)別的效果,研究認(rèn)為這是因?yàn)锽ERT模型蘊(yùn)含了自然語(yǔ)言構(gòu)成的內(nèi)在規(guī)律,這種規(guī)律是一種通用知識(shí),能夠提高模型的泛化能力。
(3)上下文建模層:在其他條件相同的情況下,CNN+BiLSTM要優(yōu)于BiLSTM。這表明加入CNN能夠提高模型上下文建模能力。研究認(rèn)為這是因?yàn)镃NN通過(guò)多窗口卷積能夠捕獲局部上下文信息,尤其是對(duì)于字級(jí)別的序列標(biāo)注任務(wù)而言,這種局部上下文信息類(lèi)似于字的組合信息,將這種信息和BiLSTM的全局上下文信息結(jié)合,提高了模型上下文建模能力。
5 結(jié)束語(yǔ)
針對(duì)中文醫(yī)療實(shí)體識(shí)別問(wèn)題,本文提出了融合知識(shí)的實(shí)體識(shí)別模型,包括利用了詞典提取領(lǐng)域知識(shí)和利用BERT預(yù)訓(xùn)練模型提取通用知識(shí),并且在上下文建模方面引入了CNN來(lái)提取局部窗口上下文信息。實(shí)驗(yàn)結(jié)果表明,CNN能夠提高上下文的建模能力,基于詞典的領(lǐng)域知識(shí)和基于BERT的通用知識(shí)都能提高模型效果。
參考文獻(xiàn)
[1] ?FRIEDMAN C, ALDERSON P O, AUSTIN J H M, et al. A general natural-language text processor for clinical radiology[J]. Journal of the American Medical Informatics Association, 1994, 1(2): 161-174.
[2] WU S T, LIU Hongfang, LI Dingcheng, et al. Unified medical language system term occurrences in clinical notes: A large-scale corpus analysis[J]. Journal of the American Medical Informatics Association, 2012, 19(e1): e149-e156.
[3] 葉楓, 陳鶯鶯, 周根貴,等. 電子病歷中命名實(shí)體的智能識(shí)別[J]. 中國(guó)生物醫(yī)學(xué)工程學(xué)報(bào), 2011, 30(2):256-262.
[4] 王世昆, 李紹滋, 陳彤生. 基于條件隨機(jī)場(chǎng)的中醫(yī)命名實(shí)體識(shí)別[J]. 廈門(mén)大學(xué)學(xué)報(bào) (自然科學(xué)版), 2009,48 (3): 359-364.
[5] JAGANNATHA A N, YU Hong. Bidirectional RNN for medical event detection in electronic health records[C]//Proceedings of The 2016 Conference of The North American Chapter of The Association For Computational Linguistics: Human Language Technologies. San Diego, California:ACL, 2016, 2016 : 473-482.
[6] LI Z, ZHANG Q, LIU Y, et al. Recurrent neural networks with specialized word embedding for chinese clinical named entity recognition[C]//CEUR Workshop Proceedings 2017. [S.l.]:dblp, 2017,1976:55-60.
[7] LEE J, YOON W, KIM S, et al. BioBERT: A pre-trained biomedical language representation model for biomedical text mining[J]. arXiv preprint arXiv:1901.08746v2, 2019.
[8] DEVLIN J, CHANG M W, LEE K, et al. BERT: Pre-training of deep bidirectional transformers for language understanding[C]//Proceeding of the 2019 Conference of the North American Chapter of the Association for Computational Linguistics:Human Language Technologies(Long and Short Papers). Minneapolis, Minnesota: ACL,2019:4171-4186.
[9] GAI Rongli, GAO Fei, DUAN Liming, et al. Bidirectional maximal matching word segmentation algorithm with rules[J]. ?Advanced Materials Research, 2014,926-930: 3368-3372.
[10] VASWANI A, SHAZEER N, PARMAR N, et al. Attention is all you need[C]//Advances in Neural Information Processing Systems. Long Beach, CA:dblp,2017: 5998-6008.
[11]HOCHREITER S, SCHMIDHUBER J. Long short-term memory[J]. Neural Computation, 1997, 9(8):1735-1780.
[12]KIM Y . Convolutional neural networks for sentence classification[J]. arXiv preprint arXiv:1408.5882, 2014.
[13]醫(yī)渡云. CCKS 2019 評(píng)測(cè)任務(wù)一面向中文電子病歷的命名實(shí)體識(shí)別數(shù)據(jù)集[DB/OL] .[2019-08-05]. http://openkg.cn/dataset/yidu-s4k.
[14]阿里云. 中文糖尿病標(biāo)注數(shù)據(jù)集[DB/OL] . [2019]. https://tianchi.aliyun.com/dataset/dataDetail?dataId=22288.
[15]PASZKE A, GROSS S, MASSA F, et al. PyTorch: An imperative style, high-performance deep learning library[M]//WALLACH H, LAROCHELLE H, BEYGELZIMER A, et al. Advances in Neural Information Processing Systems. Harju Maakond Tallin Estonia:Curran Associates, Inc., 2019:8024-8035.