王忠民王永慶郭建軍劉 云
隨著科學(xué)的進步與時代的發(fā)展,知識的爆炸式增長對醫(yī)師工作提出了嚴(yán)峻挑戰(zhàn)。藥物的多樣性和患者不同的病理特點使藥物治療復(fù)雜化,多種因素都會對用藥種類和劑量產(chǎn)生影響,單靠醫(yī)師的個人判斷力往往不夠。傳統(tǒng)合理用藥系統(tǒng)中藥學(xué)知識庫主要依靠專業(yè)人員手工構(gòu)建,人力成本較高,但知識庫準(zhǔn)確度不高,無法滿足院內(nèi)電子處方審核的要求[1-3]。
藥品說明書是藥品說明的重要來源之一,也是醫(yī)師、藥師、護士對患者治療用藥時的科學(xué)依據(jù)。由于藥品說明書是由沒有計算機背景知識領(lǐng)域內(nèi)專家制定編寫的,其文本都是無結(jié)構(gòu)的自然語言形式的自有文本,因此增加了機器理解的難度。藥品說明書中的醫(yī)療實體識別和關(guān)系抽取是一個復(fù)雜的問題,尤其是藥物的用法、用量、適應(yīng)癥和相互作用[4-5]。知識圖譜由于包含了豐富的語義信息,故可以將海量知識以更直觀的方式展示在用戶面前。目前已有一些學(xué)者對基于國內(nèi)外藥品說明書所有藥物實體關(guān)系(包含給藥途徑、重復(fù)用藥、藥物相互作用、適應(yīng)癥、不良反應(yīng)、禁忌癥、老年用藥、兒童用藥、妊娠用藥等)構(gòu)建的“藥物-診斷-臨床”診療數(shù)據(jù)形成的知識圖譜進行了研究[6-7]。如上海曙光醫(yī)院構(gòu)建的中醫(yī)藥知識圖譜[8]、本體醫(yī)療知識庫 SNOMED-CT[9],IBM Watson Health等應(yīng)用近2年也開始進入人們視線?,F(xiàn)有技術(shù)中雖然已有藥品知識圖譜的構(gòu)建方法,但大量知識圖譜都是依靠人工或正則表達式規(guī)則提取結(jié)構(gòu)化數(shù)據(jù)構(gòu)建。人工方法提取的結(jié)構(gòu)化知識雖然比較精確,但是人力消耗大、花費時間較多,并且人工長時間操作因容易引起疲勞而造成誤差;基于正則表達式規(guī)則的方法依靠機器,雖然比較節(jié)省時間,但是正則方法只適合簡單的規(guī)則,針對中文的復(fù)雜情況,正則表達式的誤差會比較高。
目前醫(yī)學(xué)實體的抽取方法主要有基于醫(yī)學(xué)詞典及規(guī)則的方法[10]、基于醫(yī)學(xué)數(shù)據(jù)源的統(tǒng)計學(xué)[11]和機器學(xué)習(xí)方法與深度學(xué)習(xí)方法3類[12-13]。機器學(xué)習(xí)方法以及深度學(xué)習(xí)方法通過使用統(tǒng)計學(xué)和機器學(xué)習(xí)方法,結(jié)合醫(yī)學(xué)數(shù)據(jù)源的特點訓(xùn)練模型,進行實體識別。目前傳統(tǒng)機器學(xué)習(xí)方法有隱馬爾可夫模型(Hidden Markov Model,HMM)、條件隨機場模型(Conditional Random Field,CRF)、支持向量機模型(Support Vector Machine,SVM)等,深度學(xué)習(xí)方法有BiLSTM、BiLSTM-CRF、BERT等[14-15]。在醫(yī)學(xué)領(lǐng)域,命名實體識別的痛點在于數(shù)據(jù)質(zhì)量的良莠不齊以及人工標(biāo)注的專業(yè)性要求高。目前有關(guān)于如何降低對數(shù)據(jù)標(biāo)注依賴的研究,其原理主要是利用海量未標(biāo)注數(shù)據(jù)持續(xù)提升模型性能,從小樣本中進行學(xué)習(xí),自我探索逐步學(xué)習(xí)新知識,形成一個交互學(xué)習(xí)過程,但效果都不理想。
綜上所述,藥品說明書中的醫(yī)療實體和關(guān)系抽取是一個復(fù)雜的問題,尤其是藥品的用法、用量、適應(yīng)癥和相互作用。隨著人工智能技術(shù)的發(fā)展,知識圖譜、醫(yī)學(xué)命名實體識別、圖像識別等方法已成為人工智能醫(yī)學(xué)領(lǐng)域應(yīng)用的基礎(chǔ)技術(shù)。藥品說明書由于其格式不一、種類繁多,如何采用智能化手段結(jié)構(gòu)化藥品說明書,自動抽取說明書中的藥學(xué)實體和關(guān)系構(gòu)建合理的用藥知識圖譜,并基于知識圖譜提供臨床用藥決策支持成為了關(guān)鍵問題[16]。
本文構(gòu)建藥品知識庫的數(shù)據(jù)來源于我國國家食品藥品監(jiān)督管理總局、美國食品藥品監(jiān)督管理總局(Food and Drug Administration,F(xiàn)DA)及江蘇省人民醫(yī)院(以下簡稱“我院”)的院內(nèi)藥品庫。借助python語言,開發(fā)爬蟲程序,進行藥品說明書的抓取,解析之后存儲到本地數(shù)據(jù)庫中。從國家食品藥品監(jiān)督管理總局獲取了21 000條藥品數(shù)據(jù),從美國食品藥品監(jiān)督管理總局獲取了18 645條藥品數(shù)據(jù),從我院院內(nèi)藥品庫獲取了1 827條數(shù)據(jù)。
基于機器學(xué)習(xí)算法,由藥學(xué)專家總結(jié)歸納出完整的藥品實體和關(guān)系,構(gòu)建基于藥品說明書的合理用藥知識圖譜,提高合理用藥知識圖譜構(gòu)建自動化程度和精度,保障患者用藥安全。
具體流程見圖1。
圖1 基于深度學(xué)習(xí)構(gòu)建藥品知識庫的流程
利用互聯(lián)網(wǎng)搜尋可靠、權(quán)威的醫(yī)療數(shù)據(jù)來源,按照疾病所屬用藥利用多線程技術(shù)分段爬取全部數(shù)據(jù),保證涵蓋全部藥品大類內(nèi)容,并在數(shù)據(jù)爬取過程中分析包括藥物間相互作用、適應(yīng)癥、禁忌癥、用法、用量等數(shù)據(jù)結(jié)構(gòu)。
按照藥理學(xué)分類對爬取的說明書進行分類整理,并隨機抽取包含抗高血壓類、抗生素類、抗腫瘤類等500份藥品說明書用于人工標(biāo)注。
通過已標(biāo)注的數(shù)據(jù),訓(xùn)練機器學(xué)習(xí)模型,使用已訓(xùn)練好的機器學(xué)習(xí)模型預(yù)測未標(biāo)注的藥品說明書。本文使用基于BERT的深度學(xué)習(xí)算法進行命名實體識別,BERT本質(zhì)上是一個兩段式的NLP模型。第一個階段叫做“Pre-training”,跟WordEmbedding類似,利用現(xiàn)有無標(biāo)記的語料訓(xùn)練一個語言模型;第二個階段叫做“Fine-tuning”,利用預(yù)訓(xùn)練好的語言模型完成具體的NLP下游任務(wù)。Google已經(jīng)投入了大規(guī)模的語料和昂貴的機器幫我們完成了Pre-training過程,因此在藥品說明書命名實體識別任務(wù)中,我們只需要少量已標(biāo)注的藥品說明書數(shù)據(jù)就可以完成Fine-tuning。
使用 Neo4j 圖形數(shù)據(jù)庫存儲一部分結(jié)構(gòu)化的數(shù)據(jù),便于進行算法設(shè)計,搭配分詞、檢索、排除、統(tǒng)計等算法提升用藥正確率,最終形成可以推理的知識圖譜合理用藥數(shù)據(jù)庫。
知識圖譜構(gòu)建的核心是抽取實體和實體之間的關(guān)系。
本文基于開源標(biāo)注工具brat進行人工標(biāo)注,詳見圖2。其中,標(biāo)注實體包括但不限于“不良反應(yīng)-疾病”“貯藏-溫度-光照-濕度”“用法用量-起始劑量-低值”“相互作用-其他”“注意事項-檢驗相關(guān)”“藥物禁忌-人群”“不良反應(yīng)-癥狀”“用法用量-疾病狀態(tài)-低值”“相互作用-藥品名稱”“適應(yīng)癥-疾病類別”“相互作用-結(jié)果”“藥品名稱、藥物禁忌-禁用”“相互作用-藥品類別”“用法用量-給藥頻次-低值”“規(guī)格”“給藥途徑”“注意事項-人群”“注意事項-疾病相關(guān)”“用法用量-疾病名稱”等。
圖2 brat標(biāo)引工具
將標(biāo)注的數(shù)據(jù)劃分為訓(xùn)練集、測試集、驗證集。通過訓(xùn)練集訓(xùn)練模型和驗證集驗證訓(xùn)練過程中的性能,訓(xùn)練后通過測試集測試模型性能。以藥品名稱作為第一實體,藥品說明書中的實體作為第二實體,其與藥品名稱對應(yīng)的關(guān)系作為關(guān)系,最終得到“第一實體-關(guān)系-第二實體”的三元組數(shù)據(jù)。構(gòu)建的知識圖譜如圖3所示,三元組分別為“氨茶堿片-主要成分-氨茶堿”“氨茶堿注射液-主要成分-氨茶堿”“氨茶堿片-適應(yīng)癥-慢性喘息性支氣管炎”。以氨茶堿為例,它既作為自身的第一實體,也可能在別的說明書中以第二實體出現(xiàn)。其中氨茶堿片可以治療支氣管病,同時又與其他藥品、人群或者診斷有禁忌作用,當(dāng)醫(yī)生開立該處方時會提醒其用藥合理性。
圖3 生成的藥物知識圖譜示例
知識圖譜是基于圖的數(shù)據(jù)結(jié)構(gòu),通常用圖數(shù)據(jù)庫進行存儲。Neo4j圖形數(shù)據(jù)庫以其對復(fù)雜關(guān)系獨特的表達能力、關(guān)系型數(shù)據(jù)庫無法比擬的查詢速度及完整的事務(wù)性,使其廣泛應(yīng)用于人工智能醫(yī)療領(lǐng)域。本文通過對爬取的4萬余份藥品說明書進行預(yù)測,共得到“實體-關(guān)系-實體“三元組關(guān)系30余萬條。部分三元組關(guān)系示例見圖4。
本文基于深度學(xué)習(xí)算法實現(xiàn)藥品說明書命名實體識別,極大地節(jié)省了人力、物力和財力,實現(xiàn)了藥品的結(jié)構(gòu)化,構(gòu)建了全說明書實體關(guān)系的合理用藥知識圖譜。
首先,基于半監(jiān)督學(xué)習(xí)算法構(gòu)建命名實體識別的規(guī)則。由領(lǐng)域?qū)<抑贫?biāo)引規(guī)則是目前命名實體識別的主要手段。文中通過半監(jiān)督學(xué)習(xí)算法,結(jié)合人工的手段,自動構(gòu)建標(biāo)引規(guī)則,對領(lǐng)域?qū)<铱缬蜓芯刻峁┝酥匾募夹g(shù)支撐。
其次,利用小數(shù)據(jù)量訓(xùn)練集命名實體識別提高識別準(zhǔn)確率。大數(shù)據(jù)量文本標(biāo)注是當(dāng)前命名實體識別的主要方法。文中通過深度學(xué)習(xí)算法,在樣本量較小的情況下,提高命名實體識別的效率,對醫(yī)療領(lǐng)域自然語言處理具有推動作用。
第三,構(gòu)建全說明書實體關(guān)系知識圖譜。全藥品說明書實體關(guān)系知識圖譜的構(gòu)建,對降低臨床不合理用藥、患者不良反應(yīng)等具有重大的社會價值。
本文還存在一些不足,如僅對藥品說明書進行命名實體識別。后續(xù)還應(yīng)從醫(yī)學(xué)文獻、醫(yī)學(xué)詞典、醫(yī)學(xué)指南和專家共識等數(shù)據(jù)中提取知識,同時不斷提高模型預(yù)測的精度,為提高患者用藥安全提供有力的技術(shù)保障。
圖4 Neo4j三元組關(guān)系示例