徐麗娜,李 燕,鐘昕妤,陳月月,帥亞琦
(甘肅中醫(yī)藥大學(xué)信息工程學(xué)院,甘肅 蘭州 730000)
中醫(yī)方劑(traditional Chinese medicine prescriptions)是千百年來名醫(yī)大家臨床實(shí)踐總結(jié)得出的成果,是集中醫(yī)、方法、方劑、中藥四大理論為一體的綜合體系,不僅可以運(yùn)用中醫(yī)的主要手段即辯證論治的理論用于指導(dǎo)臨床防治疾病,也是藥性理論的具體表現(xiàn)[1]。因中醫(yī)方劑有其獨(dú)到的組合方式,蘊(yùn)含著豐富的信息,但事實(shí)上這些復(fù)雜的方劑變換中就已包含了大量規(guī)律,故提取中醫(yī)藥信息便成為了促進(jìn)中醫(yī)藥信息化結(jié)構(gòu)化的重要手段方法[2]。中醫(yī)藥文本數(shù)據(jù)挖掘從最初的在海量歷史數(shù)據(jù)中進(jìn)行簡(jiǎn)單查詢,發(fā)展成為不僅從大量數(shù)據(jù)中獲取知識(shí),還能夠揭示事物的內(nèi)在發(fā)展規(guī)律,預(yù)測(cè)事物發(fā)展趨勢(shì)的潛在關(guān)聯(lián)或模型的一項(xiàng)技術(shù)[3]。利用數(shù)據(jù)挖掘可以分析和討論中醫(yī)治療的療效和基本理論、中醫(yī)辨證論治的各種方法以及方劑的分類理論,從而了解中醫(yī)的用藥規(guī)律[4]。命名實(shí)體識(shí)別作為文本數(shù)據(jù)挖掘中重要的一環(huán),其主要任務(wù)為在非結(jié)構(gòu)化數(shù)據(jù)中提取出一組相關(guān)性較高的名詞。目前文獻(xiàn)研究集中于中醫(yī)醫(yī)案及電子病歷,或是單一研究藥品命名實(shí)體識(shí)別,對(duì)中醫(yī)方劑文本領(lǐng)域關(guān)注度較少,尤其在中醫(yī)方劑領(lǐng)域中基于種類多樣且復(fù)雜的實(shí)體類型,使得此方法在實(shí)際應(yīng)用中進(jìn)展較慢。而將命名實(shí)體識(shí)別技術(shù)運(yùn)用在中藥學(xué)中,從海量的中醫(yī)方劑文本數(shù)據(jù)中識(shí)別出不同類型的且較為準(zhǔn)確的實(shí)體信息將是中醫(yī)藥學(xué)者未來的重點(diǎn)研究方向。本文主要基于Bert的中醫(yī)方劑文本命名實(shí)體識(shí)別的數(shù)據(jù)獲取與標(biāo)注、實(shí)驗(yàn)?zāi)P团c框架、實(shí)驗(yàn)結(jié)果進(jìn)行分析。
1.1 數(shù)據(jù)獲取 從以PDF 格式存放的《中醫(yī)方劑大詞典》[5]中獲取數(shù)據(jù),整理分散在各個(gè)文獻(xiàn)中的所有方劑,包括各種適應(yīng)證、試驗(yàn)用例及實(shí)驗(yàn)研究資料等。通過文本識(shí)別技術(shù),將《中醫(yī)方劑大詞典》進(jìn)行文本識(shí)別,并轉(zhuǎn)換成TXT 等命名實(shí)體識(shí)別模型可輸入的格式。
1.2 數(shù)據(jù)標(biāo)注 從獲取到的數(shù)據(jù)中進(jìn)行篩選,基于內(nèi)容完整的方劑數(shù)據(jù),選擇在主治中明確提到“心悸”“心痛”“怔忡”等關(guān)鍵詞的方劑,刪除主治功效中雖含有關(guān)鍵字,但不是主要癥狀的方劑,最后得到治療心血管疾病的方劑567 首。并遵照中醫(yī)藥學(xué)語言系統(tǒng)(TCMLS)中的標(biāo)準(zhǔn),選擇方劑(prescription)、藥物(medicine)、疾病(disease)、功效(efficacy)、炮制方法(processing method)五類實(shí)體進(jìn)行研究,命名實(shí)體定義及標(biāo)注規(guī)則見表1。
表1 命名實(shí)體定義表
中醫(yī)方劑數(shù)據(jù)語料標(biāo)注采用方法為“BIO+命名實(shí)體”的序列標(biāo)注方法,序列標(biāo)注是指對(duì)序列中的每個(gè)字符分配一個(gè)特定的標(biāo)簽,當(dāng)給定一個(gè)序列時(shí),對(duì)序列中的每個(gè)元素進(jìn)行標(biāo)注。通常一個(gè)序列即為一個(gè)句子,而一個(gè)元素即為句子中的一個(gè)單詞。序列標(biāo)注中最常用的方法是BIO 標(biāo)注法,B 標(biāo)記為實(shí)體的開始,I 標(biāo)記為實(shí)體的中間部分,O 標(biāo)記為非實(shí)體字符的部分[6]。命名實(shí)體標(biāo)注信息見表2。
表2 命名實(shí)體標(biāo)注信息表
為了保持標(biāo)注的一致性,由一人單獨(dú)完成標(biāo)注任務(wù),根據(jù)選取好的語料對(duì)句子進(jìn)行切分,使用BIO標(biāo)注方法對(duì)篩選完成的567 首方劑數(shù)據(jù)進(jìn)行人工標(biāo)注,并將現(xiàn)有數(shù)據(jù)劃分為70%的訓(xùn)練集和30%的測(cè)試集,隨后即可進(jìn)行后續(xù)研究,中醫(yī)方劑數(shù)據(jù)標(biāo)注示例見表3。
表3 中醫(yī)方劑標(biāo)注示例
近年來隨著中醫(yī)文本數(shù)據(jù)量的增多,對(duì)于從大量數(shù)據(jù)中挖掘有用知識(shí)的技術(shù)也在快速發(fā)展,命名實(shí)體識(shí)別任務(wù)作為重要的一環(huán),模型的質(zhì)量將影響整個(gè)識(shí)別任務(wù)的準(zhǔn)確性。預(yù)訓(xùn)練模型因其可獲得高質(zhì)量的詞向量被廣泛關(guān)注,將預(yù)訓(xùn)練模型運(yùn)用到中醫(yī)方劑文本識(shí)別任務(wù)中,從一定程度上可以減輕臨床人員錄入數(shù)據(jù)的負(fù)擔(dān),還能夠有效提高識(shí)別準(zhǔn)確率,為挖掘更多中醫(yī)方劑的知識(shí)奠定基礎(chǔ),更能促進(jìn)中醫(yī)藥相關(guān)事業(yè)的發(fā)展及傳承[7]。
本文模型框架由Bert 模塊、BiLSTM 模塊和CRF 模塊組合構(gòu)建而成,模型結(jié)構(gòu)見圖1。Bert-BiLSTM-CRF 模型命名實(shí)體識(shí)別的主要步驟如下:首先,將已標(biāo)注完成的中醫(yī)方劑文本標(biāo)記詞,如“心血康飲”通過Bert 預(yù)訓(xùn)練模型并接受其相對(duì)應(yīng)的詞向量,然后將預(yù)處理完成的詞向量輸入到BiLSTM模塊中,更好地完成對(duì)文本上下文語義信息的捕獲,最后使用CRF 模塊解碼BiLSTM 模塊中輸出得到的預(yù)測(cè)標(biāo)簽排序,然后依次檢索和排序各類中醫(yī)方劑文本實(shí)體,從而完成整個(gè)實(shí)體識(shí)別步驟。
圖1 Bert-BiLSTM-CRF 模型框架圖
2.1 Bert 模塊 Bert 預(yù)處理模型源于谷歌的一個(gè)開源項(xiàng)目word2vec[8]。本文的Bert 預(yù)訓(xùn)練模型使用12層的Transformer 架構(gòu),由編碼器與解碼器組成,它們使用分層堆疊來實(shí)現(xiàn)自然語言處理中的最佳特征提取器,在訓(xùn)練時(shí),只有Transformer 的編碼器被使用,且每層編碼器由自注意力機(jī)制與前饋神經(jīng)網(wǎng)絡(luò)構(gòu)成,通過從輸入的中醫(yī)方劑長(zhǎng)文本信息中提取特征,最終實(shí)現(xiàn)文本表示。
2.2 BiLSTM 模塊 BiLSTM 模塊包括前向長(zhǎng)短時(shí)記憶神經(jīng)網(wǎng)絡(luò)(LSTM)和后向長(zhǎng)短時(shí)記憶神經(jīng)網(wǎng)絡(luò)(LSTM)[9],本文所使用的LSTM 結(jié)構(gòu)首先通過遺忘和記憶狀態(tài)門中的新信息,因?yàn)槠淇梢詡鬟f對(duì)后續(xù)計(jì)算有價(jià)值的信息,舍棄無價(jià)值信息,再在每一步輸出隱藏層的狀態(tài),其中遺忘、記憶和輸出由遺忘門、記憶門和通過前一時(shí)刻隱藏層的狀態(tài)和當(dāng)前輸入計(jì)算的輸出控制[10],基本單元結(jié)構(gòu)見圖2。雙向長(zhǎng)短時(shí)記憶神經(jīng)網(wǎng)絡(luò)模型(BiLSTM)可克服傳統(tǒng)循環(huán)神經(jīng)網(wǎng)絡(luò)的梯度消失問題,允許網(wǎng)絡(luò)選擇性地保留以前的信息,且雙向傳輸模型在傳播過程中利用時(shí)間來處理前后文的信息,最終輸出結(jié)果也為事前向傳播和后向傳播相結(jié)合而成的[11]。在傳統(tǒng)中醫(yī)方劑文本中,很多情況是多個(gè)詞構(gòu)成一個(gè)實(shí)體,即長(zhǎng)序列實(shí)體,利用雙向長(zhǎng)短期記憶神經(jīng)網(wǎng)絡(luò),可以快速獲取長(zhǎng)距離所屬特征,有效優(yōu)化模型對(duì)長(zhǎng)序列實(shí)體的識(shí)別性能。
圖2 LSTM 基本單元結(jié)構(gòu)圖
2.3 CRF 模塊 雖然BiLSTM 模塊已經(jīng)學(xué)習(xí)了輸入序列的上下文信息,但其默認(rèn)序列標(biāo)簽的狀態(tài)間是相互獨(dú)立不影響的,這將會(huì)出現(xiàn)實(shí)體標(biāo)簽不一致問題,所以關(guān)鍵步驟仍然是在獲取標(biāo)簽數(shù)據(jù)集后處理標(biāo)簽之間的關(guān)系[12]。本實(shí)驗(yàn)解決方案是添加CRF 模塊,這是一個(gè)條件概率模型,該模型會(huì)考慮標(biāo)簽之間的順序,可以處理標(biāo)簽之間的相互約束,有效解決標(biāo)簽順序不一致的問題,從而提高中醫(yī)方劑文本模型實(shí)體識(shí)別的準(zhǔn)確率。
3.1 實(shí)驗(yàn)設(shè)計(jì) 本實(shí)驗(yàn)是在Windows 系統(tǒng)下使用Python3.9 為主要編程語言,在Pytorch1.6.0、Pytorchcrf2.10.0 以及Transformers0.7.2 的實(shí)驗(yàn)環(huán)境下進(jìn)行。其中,將實(shí)驗(yàn)分為2 個(gè)環(huán)節(jié),第1 個(gè)環(huán)節(jié)使其他條件不變,分別訓(xùn)練BiLSTM-CRF 和Bert-BiLSTM-CRF這2 種模型,來對(duì)比2 種模型的性能;第2 個(gè)環(huán)節(jié)使其他條件不變,在模型訓(xùn)練過程中主要改變模型學(xué)習(xí)率的大小,并最終主要通過F 值來評(píng)判模型訓(xùn)練效果。
3.2 模型性能 采用目前常用來衡量命名實(shí)體識(shí)別模型性能的3 個(gè)評(píng)分指標(biāo)進(jìn)行分析,分別為準(zhǔn)確率(P)、召回率(R)以及F值[13],指標(biāo)的數(shù)學(xué)定義如公式(1)~(3)所示;
上述公式中,α 是識(shí)別正確的實(shí)體數(shù)目,A 是實(shí)體總數(shù)目,B 是被識(shí)別出的實(shí)體數(shù)目。P 是指在所有預(yù)測(cè)結(jié)果中與實(shí)際結(jié)果一致的實(shí)體數(shù)目占總實(shí)體數(shù)目的百分比,R 是指被正確識(shí)別的實(shí)體數(shù)目占總實(shí)體數(shù)目的百分比,F(xiàn) 值是準(zhǔn)確率與召回率的綜合值,用來對(duì)模型進(jìn)行總體評(píng)估[14]。
在實(shí)驗(yàn)過程中,因Bert 模型要求樣本長(zhǎng)度低于512,最初將句子切分長(zhǎng)度設(shè)置為256,但參數(shù)設(shè)置太低可使模型識(shí)別率不理想,且分析數(shù)據(jù)發(fā)現(xiàn)文本長(zhǎng)度大多集中在200~600,因此將最大句子長(zhǎng)度參數(shù)更換為512,發(fā)現(xiàn)訓(xùn)練結(jié)果得到明顯提升;對(duì)于Bert 層學(xué)習(xí)率,由于預(yù)訓(xùn)練模型的參數(shù)在訓(xùn)練過程中已經(jīng)更新若干次,所以在調(diào)整參數(shù)過程中為了保持模型的高泛化率,將預(yù)訓(xùn)練模型Bert 層的參數(shù)設(shè)置為(2e-5),并在訓(xùn)練過程中將CRF 層學(xué)習(xí)率從(2e-3)調(diào)整為(1e-3),取得了較好的效果;Batch-Size 選擇設(shè)置為16,Dropout 設(shè)置一般取值0.5,Epoch 設(shè)置為30,通過實(shí)驗(yàn)結(jié)果證明獲得了較優(yōu)的模型識(shí)別效果,見表4、圖3。
表4 模型總評(píng)對(duì)比表(%)
圖3 模型總評(píng)對(duì)比圖
通過圖3 模型總評(píng)對(duì)比圖可以看出,相比BiLSTM-CRF 模型,加入Bert 后,模型命名實(shí)體識(shí)別準(zhǔn)確率整體升高6%左右,性能明顯增強(qiáng)。使模型性能增強(qiáng)的方式較多,如調(diào)整模型參數(shù)或改進(jìn)算法等。本實(shí)驗(yàn)通過調(diào)整模型參數(shù),不斷進(jìn)行模型訓(xùn)練及測(cè)試,將Bert 層訓(xùn)練級(jí)別設(shè)置為較低,CRF 層訓(xùn)練級(jí)別設(shè)置較高,以此獲得了更好地框架識(shí)別效果。并且本身BiLSTM-CRF 模型由于CRF 模塊的加入,利用CRF 模塊的特性得到全局最優(yōu)標(biāo)簽序列,在此基礎(chǔ)上再次引入Bert 模型進(jìn)行預(yù)處理,充分提取字符級(jí)、詞級(jí)和句子間的關(guān)聯(lián)關(guān)系,使得預(yù)訓(xùn)練時(shí)得到的詞向量能夠更好地表達(dá)所需要的語義信息,從而提升模型的命名實(shí)體識(shí)別性能。Bert-BiLSTM-CRF 模型與BiLSTM-CRF 模型對(duì)方劑、藥物、疾病、功效和炮制方法五類實(shí)體識(shí)別的F 值對(duì)比統(tǒng)計(jì)圖見圖4。
圖4 模型實(shí)體識(shí)別F 值對(duì)比圖
從圖4 模型實(shí)體識(shí)別F 值對(duì)比圖可以看出,Bert-BiLSTM-CRF 模型相較于BiLSTM-CRF 模型,對(duì)于5 類實(shí)體整體識(shí)別準(zhǔn)確率都有所增長(zhǎng),其中藥物、方劑、疾病、炮制方法的識(shí)別準(zhǔn)確率較高,對(duì)于功效識(shí)別準(zhǔn)確率較低,原因可能是本實(shí)驗(yàn)心血管疾病中醫(yī)方劑數(shù)據(jù)來源于《中醫(yī)方劑大詞典》及相關(guān)數(shù)據(jù)庫(kù)補(bǔ)充資源,這些數(shù)據(jù)中對(duì)于一首方劑的描述主要包括其方劑名稱、藥物組成、主治何種疾病以及如何炮制使用,在文本中數(shù)量較多且方劑名稱大部分以丸、湯、方結(jié)尾,實(shí)體特征較明顯,所以識(shí)別率較高;而方劑數(shù)據(jù)集中對(duì)于功效的描述較為稀缺,在文本數(shù)量中占據(jù)較少,且對(duì)于功效術(shù)語的規(guī)范化存在不足,容易出現(xiàn)用詞繁復(fù)的情況,如“發(fā)汗解肌”“發(fā)汗解表”都可表述發(fā)散風(fēng)寒藥的功效,這種同近義詞使得模型實(shí)體識(shí)別難度較大,從而導(dǎo)致模型識(shí)別率降低。由此可見,實(shí)體特征、實(shí)體數(shù)據(jù)量大小以及數(shù)據(jù)規(guī)范性對(duì)于模型的識(shí)別精度都存在一定程度的影響,未來可以通過擴(kuò)展中醫(yī)方劑文本數(shù)據(jù)量,規(guī)范化使用中醫(yī)術(shù)語來提高模型整體識(shí)別精確率以及模型有效性。
中醫(yī)藥豐富的治療手段以及靈活的方法作為中醫(yī)藥傳統(tǒng)特色優(yōu)勢(shì)之一,在提高人們健康及生活質(zhì)量方面都做出了卓越貢獻(xiàn)。而中醫(yī)方劑是中醫(yī)最常用的藥物治療手段之一,通過與現(xiàn)代技術(shù)相結(jié)合來適應(yīng)當(dāng)代社會(huì)的發(fā)展需求,可使用計(jì)算機(jī)處理及分析方劑文本數(shù)據(jù),但其需將醫(yī)學(xué)數(shù)據(jù)做結(jié)構(gòu)化處理,而命名實(shí)體識(shí)別技術(shù)則是結(jié)構(gòu)化表示的基礎(chǔ)。
國(guó)內(nèi)對(duì)醫(yī)學(xué)命名實(shí)體識(shí)別的研究最早認(rèn)為是分類問題,經(jīng)典的隱馬爾可夫以及條件隨機(jī)場(chǎng)等模型被廣泛研究[15,16]。隨著各個(gè)領(lǐng)域的快速發(fā)展,深度學(xué)習(xí)方法的優(yōu)勢(shì)逐漸顯現(xiàn)出來,通過自動(dòng)提取特征標(biāo)簽,在命名實(shí)體識(shí)別領(lǐng)域得到了較好的效果[17]。在國(guó)際領(lǐng)域,基于循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)與長(zhǎng)短期記憶網(wǎng)絡(luò)-條件隨機(jī)場(chǎng)(LSTM-CRF)模型都具有較高的代表性。并且隨著深度學(xué)習(xí)領(lǐng)域的發(fā)展,自注意力機(jī)制(Attention)和Transformer 模型等在自然語言處理領(lǐng)域的優(yōu)異表現(xiàn),不斷有更多優(yōu)秀的改進(jìn)模型在各個(gè)領(lǐng)域被提出[18,19]。
Bert 預(yù)訓(xùn)練模型是使用大規(guī)模未標(biāo)注數(shù)據(jù)集訓(xùn)練Bert 來提取文本特征,再使用BiLSTM-CRF 模型進(jìn)行標(biāo)注。即使Bert 在各個(gè)領(lǐng)域已得到廣泛應(yīng)用,但在中醫(yī)藥方劑領(lǐng)域的研究仍然匱乏,針對(duì)于此,本實(shí)驗(yàn)提出基于深度學(xué)習(xí)的Bert 預(yù)訓(xùn)練模型,結(jié)合BiLSTM-CRF 模型運(yùn)用于中醫(yī)方劑的命名實(shí)體識(shí)別任務(wù)中,對(duì)模型進(jìn)行改進(jìn)優(yōu)化,并與BiLSTM-CRF模型進(jìn)行對(duì)比,發(fā)現(xiàn)將Bert 預(yù)訓(xùn)練框架與BiLSTMCRF 模型進(jìn)行結(jié)合,運(yùn)用到中醫(yī)方劑文本識(shí)別任務(wù)中,中醫(yī)方劑各類實(shí)體識(shí)別的準(zhǔn)確率得到提升,充分發(fā)揮了模型在構(gòu)建字符向量時(shí)充分考慮到字符間的關(guān)聯(lián)關(guān)系,解決以往模型常見的邊界模糊、歧義性等問題,且得益于Bert-BiLSTM-CRF 模型設(shè)計(jì)與優(yōu)化訓(xùn)練,模型識(shí)別性能也得到了有效提升。
總之,命名實(shí)體識(shí)別作為自然語言處理技術(shù)中最重要的一環(huán),在各個(gè)領(lǐng)域已有卓越表現(xiàn),但在中醫(yī)領(lǐng)域尚在起步階段,仍然是未來的研究重點(diǎn),并且一個(gè)性能較高的中醫(yī)方劑文本命名實(shí)體識(shí)別模型能夠?yàn)橹嗅t(yī)智能化、信息化的發(fā)展奠定良好基礎(chǔ),也能夠構(gòu)建更精準(zhǔn)的中醫(yī)藥知識(shí)網(wǎng)絡(luò)、中醫(yī)方劑知識(shí)圖譜,為實(shí)現(xiàn)臨床輔助決策、智慧醫(yī)療、中醫(yī)方劑知識(shí)推薦等智能服務(wù)提供支撐與動(dòng)力。本研究不足之處在于對(duì)部分實(shí)體的識(shí)別準(zhǔn)確率較低,原因可能是實(shí)體數(shù)據(jù)量較少、實(shí)體特征不明顯等,從而對(duì)模型識(shí)別準(zhǔn)確率造成影響。目前,仍有許多隱藏有意義的藥物知識(shí)未被發(fā)現(xiàn),在今后的研究中,將增加更多相關(guān)數(shù)據(jù),或引入專業(yè)詞典來提高模型的有效性。