胡 為 劉 偉 盛 威 盧彥杰 石玉敬
(湖南中醫(yī)藥大學信息科學與工程學院 長沙 410013)
中醫(yī)醫(yī)案是中醫(yī)醫(yī)師臨床實施辨證論治的文字記錄和實施臨床診斷的寶貴經(jīng)驗[1]。但目前中醫(yī)醫(yī)案信息化程度低,各醫(yī)案相對零散且缺乏聯(lián)系,非結構化數(shù)據(jù)多,對醫(yī)案結構化數(shù)據(jù)的定義難以形成統(tǒng)一標準,嚴重影響中醫(yī)醫(yī)案數(shù)據(jù)挖掘工作的推進,因此,研究如何從海量中醫(yī)醫(yī)案數(shù)據(jù)中挖掘有用信息具有重要意義。近年來,人工智能在自然語言處理、計算機視覺等領域均取得重要突破,計算機技術已應用于中醫(yī)藥各領域,如中醫(yī)醫(yī)案命名實體識別、實體關系抽取、知識圖譜構建等。2018年雙向編碼器表征(bidirectional encoder representations from transformers,BERT)預訓練模型[2]問世,并被應用于各類通用自然語言處理任務,準確率大幅度提升。預訓練模型先在一個原始任務上預先訓練一個初始模型,然后在目標任務上使用該模型針對目標任務特性,對初始模型精調,達到精準完成目標任務的目的。目前BERT預訓練模型是基于通用語料訓練的,受限于領域知識,難以在各中醫(yī)醫(yī)案自然語言處理下游任務中取得良好效果。因此,有些學者研究基于特定領域的預訓練模型,如將面向古文、基于BERT的繼續(xù)訓練遷移至古漢語模型得到SikuBERT模型[3],訓練面向生物醫(yī)學領域的預訓練模型BioBERT[4]、面向臨床醫(yī)學領域的預訓練模型ClinicalBERT[5]、面向科學領域的預訓練模型SciBERT[6]、面向專利領域的預訓練模型PatentBERT[7],但目前還沒有面向中醫(yī)醫(yī)案領域的預訓練模型。本文基于BERT預訓練模型技術,利用光學字符識別(optical character recognition,OCR)技術和爬蟲技術獲取大量中醫(yī)醫(yī)案數(shù)據(jù)語料,構建首個面向中醫(yī)醫(yī)案領域專有預訓練模型(traditional Chinese medical YiAn bidirectional encoder representation from transformers,TcmYiAnBERT),并在多個中醫(yī)醫(yī)案自然語言處理下游任務實驗中證明其優(yōu)越性。
本文數(shù)據(jù)集來源于兩方面。一是《中國現(xiàn)代名中醫(yī)醫(yī)案精粹》[8]《古今醫(yī)案按》[9]《明清十八家名醫(yī)醫(yī)案》[10]《丁甘仁醫(yī)案》[11]等中醫(yī)醫(yī)案經(jīng)典書籍,通過Python語言編寫OCR程序,將PDF文本轉為TXT文本,得到10萬條中醫(yī)醫(yī)案,共512萬字。二是“中醫(yī)中藥網(wǎng)”“中醫(yī)資源網(wǎng)”“經(jīng)方派”“道醫(yī)網(wǎng)”等中醫(yī)藥網(wǎng)站,通過Python語言提供的Request和BeautifulSoup等爬蟲庫及正則表達式等技術得到120萬條中醫(yī)醫(yī)案,共4 100萬字。剔除一些禁用字、識別錯誤的字、非中文標點符號的字等,最終得到的數(shù)據(jù)集共有漢字44 121 245個,對數(shù)據(jù)集中的每個句子按照15%進行掩碼操作,最后按照8∶1∶1構建訓練集、測試集和驗證集。
在自然語言處理的各類任務中都需要考慮如何將文本信息轉化為計算機能識別的數(shù)據(jù)形式,早期主流做法是以Word2Vec[12]和Glove[13]為代表的基于預訓練靜態(tài)詞向量技術。該技術通常將詞匯用多維向量表示,但構建的詞向量沒有考慮語境,因此無法解決一詞多義問題。且該方法本身屬于一種淺層結構的靜態(tài)詞向量,在句子較長時無法學習到長距離依賴的上下文語義信息。
基于深度學習算法的另一個特點是各類任務都需要考慮構建大規(guī)模帶標注的數(shù)據(jù)集,以便使程序學習到相關的語法和語義信息,但標注數(shù)據(jù)需要消耗大量低技術的人工成本。自2018年以來,以BERT[2]為代表的超大規(guī)模預訓練語言模型可有效彌補自然語言處理一詞多義及處理數(shù)據(jù)標注耗時耗力的問題。BERT是一個超大規(guī)模的語義表征預訓練模型,它從維基百科大規(guī)模語料庫通過無監(jiān)督學習到通用的語義表示信息,且該模型可通過微調適應各種下游任務。該模型采用Transformer架構的Encoder模塊,基于Transformer的雙向編碼模型具有強大的特征提取能力,最終生成的字向量融合字詞上下文語義信息,能更充分地表征字詞的多義性。
本文預訓練模型構建的總體流程,見圖1。
圖1 TcmYiAnBERT預訓練模型構建總體流程
2.3.1 模型的輸入 對數(shù)據(jù)集中每一句文本進行編碼得到3個向量,見圖2。其中字向量Token Embeddings通過查詢字向量表將每個字轉換為該字的字編碼,句子嵌入編碼Segment Embeddings表示文本的全局語義信息,位置嵌入編碼Position Embedding表示文本中每個字所在的位置語義信息。
圖2 TcmYiAnBERT模型輸入
2.3.2 模型訓練任務 以BERT模型的掩碼語言模型(maskedlanguage model,MLM)和下一句預測(next sentenceprection,NSP)預訓練任務為基礎進行訓練。MLM任務采用在句子中隨機掩蓋掉若干字的方式學習該字在上下文的語義信息。如將“患者舌淡苔白滑脈沉遲小緊”這個句子掩蓋若干字后變成了“患者[mask]淡苔[mask]滑脈沉[mask]小緊”,然后通過模型訓練預測[mask]處的字信息,見圖3。NSP任務主要目標是預測兩個句子是否連在一起,令模型學習兩個連續(xù)句子的關系,使模型具有更好的長距離上下文語義學習能力,如“患者舌淡苔白滑”和“脈沉遲小緊”同時輸入模型,最后模型輸出這兩個句子是否連在一起。
圖3 TcmYiAnBERT模型 MLM任務示例
采用Pytorch 1.15框架、Python 3.7版本環(huán)境,模型參數(shù)與BERT模型一致,設置12層Transformer、12個Attention-head、768個隱藏層單元,整個模型有110兆參數(shù)。實驗過程中,將BERT模型參數(shù)最大句子長度設置成256,批處理大小設置成64,訓練輪數(shù)設置為100。最終在單臺V 100顯卡機器上經(jīng)過680小時的訓練得到本文的TcmYiAnBERT預訓練模型,并且將該模型發(fā)布到Huggingface網(wǎng)站(https://huggingface.co/lucashu/TcmYiAnBERT)。
采用中醫(yī)醫(yī)案命名實體識別任務對TcmYiAnBERT模型性能進行驗證,驗證模型包括TcmYiAnBERT預訓練層、BiLSTM層和條件隨機場(conditional random field,CRF)層,見圖4。
圖4 TcmYiAnBERT-BiLSTM-CRF模型
驗證實驗用的數(shù)據(jù)集是從《中國現(xiàn)代名中醫(yī)醫(yī)案精粹》中選取的1 000條高質量醫(yī)案,并由多位經(jīng)驗豐富的中醫(yī)學者對數(shù)據(jù)集標注。數(shù)據(jù)集采用命名實體識別任務通用的BIO標注法,共設計功效實體、辨證實體、治則實體、癥狀實體、方藥實體、人群實體6類實體類別。
采用命名實體識別任務常用的精確率(P)、召回率(R)和F1測度值評估模型性能。假設Tp表示模型識別正確的實體個數(shù),F(xiàn)p表示模型識別錯誤的實體個數(shù),F(xiàn)N為模型沒有識別出的實體個數(shù)。計算方式如下:
(1)
(2)
(3)
選取命名實體識別3種經(jīng)典模型,對比驗證TcmYiAnBERT模型在下游任務的效果,見表1。
表1 對比模型實驗結果
TcmYiAnBERT-BiLSTM-CRF模型得到的各類癥狀實體評價指標,見表2。
表2 TcmYiAnBERT-BiLSTM-CRF模型各類實體識別結果
從結果可以看出,加入中醫(yī)醫(yī)案領域專有預訓練模型TcmYiAnBERT后,在命名實體識別任務中不同實體標簽結果存在一定差異。
從實驗結果可以看出,在中醫(yī)醫(yī)案自然語言處理命名實體識別任務中,相比于傳統(tǒng)的BiLSTM模型,加入CRF后準確度有所提升,加入預訓練模型BERT后準確率提升效果較明顯,而加入中醫(yī)醫(yī)案領域專有預訓練模型TcmYiAnBERT后,準確率有更大提升,說明在中醫(yī)醫(yī)案自然語言處理任務中,專有領域的預訓練模型TcmYiAnBERT比通用領域的預訓練模型BERT更具優(yōu)勢。其原因是預訓練模型TcmYiAnBERT通過MLM任務和NSP任務已經(jīng)提前學到了大量中醫(yī)醫(yī)案語義信息,在中醫(yī)醫(yī)案下游任務中,只需要在該模型上微調即可達到較高的準確率。
從6類實體識別結果可以看出,方藥實體標簽和人群實體標簽的準確率較高,治則、辨證、功效實體標簽的準確率低于前面兩類標簽。其原因既與命名實體識別任務數(shù)據(jù)集劃分有一定關系,又與預訓練模型的數(shù)據(jù)來源有一定關系,預訓練模型的數(shù)據(jù)來源于中醫(yī)醫(yī)案經(jīng)典著作和中醫(yī)醫(yī)案網(wǎng)站,在預訓練模型訓練過程中學到的方藥實體標簽和人群實體標簽語義信息較多。后續(xù)將增大數(shù)據(jù)集,進一步提高中醫(yī)醫(yī)案各類自然語言處理任務的準確率。
本文構建首個面向中醫(yī)領域專有預訓練模型TcmYiAnBERT,并在中醫(yī)醫(yī)案自然語言處理下游任務命名實體識別任務上實驗證明其優(yōu)越性。該預訓練模型對中醫(yī)醫(yī)案的分詞任務和實體關系抽取也將有一定幫助,進而為中醫(yī)藥信息化提供技術支撐。