徐金波 潘建中 楊帆
摘要:充分發(fā)揮中醫(yī)藥特色優(yōu)勢,大力拓展中醫(yī)藥健康服務與互聯(lián)網(wǎng)、AI技術融合的廣度和深度,對創(chuàng)新中醫(yī)藥健康服務模式,釋放發(fā)展?jié)摿突盍Γ瑸槿嗣袢罕娞峁┤轿蝗芷诮】捣站哂兄匾饬x。
關鍵詞:中醫(yī)問診;AI技術;探討
一、研究背景
國家中醫(yī)藥管理局《關于推進中醫(yī)藥健康服務與互聯(lián)網(wǎng)融合發(fā)展的指導意見》中明確提出,未來中醫(yī)藥發(fā)展的主要任務是優(yōu)化中醫(yī)醫(yī)療服務流程、創(chuàng)新中醫(yī)醫(yī)療服務模式、推進中醫(yī)遠程醫(yī)療服務;鼓勵企業(yè)和相關部門依照國家有關法律法規(guī),利用互聯(lián)網(wǎng)、大數(shù)據(jù)等技術,規(guī)范開展互聯(lián)網(wǎng)中醫(yī)診療活動;支持基于標準協(xié)議的滿足中醫(yī)臨床要求、數(shù)據(jù)互聯(lián)互通、高度共享的區(qū)域中醫(yī)診療中心信息化建設;加快推動中醫(yī)電子病歷和電子健康檔案的連續(xù)記錄及醫(yī)療機構之間的信息共享,構建中醫(yī)臨床應用知識庫和患者診療信息庫;支持人工智能輔助診斷、多種生物特征識別、中醫(yī)專家系統(tǒng)等建設,開展互聯(lián)網(wǎng)延伸醫(yī)囑等服務應用。探索和推廣“智慧藥房”建設;鼓勵醫(yī)聯(lián)體相關醫(yī)院管理、醫(yī)療服務等信息平臺建設,推進醫(yī)聯(lián)體內(nèi)和同城同級中醫(yī)醫(yī)療機構的檢查檢驗結果互認,實現(xiàn)醫(yī)聯(lián)體內(nèi)診療信息互聯(lián)互通。加快基層醫(yī)療衛(wèi)生機構中醫(yī)診療區(qū)(中醫(yī)館)健康信息平臺建設,探索移動終端、智能終端的研發(fā)與應用。
就目前而言,中醫(yī)診療方式還比較傳統(tǒng),AI、互聯(lián)網(wǎng)等技術的應用還較為缺乏。國家產(chǎn)業(yè)政策的支持,為“中醫(yī)+AI” 模式的推廣提供了堅實的基礎,為中醫(yī)AI技術的研發(fā)起到極大的促進作用。
本文主要圍繞AI中醫(yī)智能問診技術的研究開發(fā)展開一些探討,以期起到拋磚引玉的作用,
二、中醫(yī)智能問診技術的基礎架構設計
業(yè)界共識:沒有知識的機器不可能實現(xiàn)認知智能想要實現(xiàn)AI的精確自動問診。因此,研發(fā)AI中醫(yī)智能問診技術必須要有一個完整的知識圖譜,以此作為機器學習的支撐。所以我們的構想是實現(xiàn)一個精準的中醫(yī)知識圖譜架構。我們對中醫(yī)知識圖譜定義了一個四維的框架。具體設計如下:
(1)第一維框架
一維——由具有獨立語義概念且不可拆分的單一語義成分所構成的知識元(線)【基于條文拆解而構建形成。即基于既有知識(條文)所框定的不可再分解的最小知識單元?!浚ㄈ纾禾柌√峋V證(線)、方劑(線)、基礎病機(線)。包涵:單一癥狀、治法、藥物、方名(點));
補充條件:主語、謂語唯一性。
(2)第二維框架
二維——由兩個及以上同屬一個三維知識體組合的知識元構建而成的知識體(面)【基于既有知識(條文)串聯(lián)而構成的可獨立表達主題不可再分解的知識單元】(如:證候(面)、復合病機(面)、方證(面)、病證(面)、藥證(面)。包涵:方劑(線))。
(3)第三維框架
三維——由多個知識體組合構建而成且相對穩(wěn)定的復合信息(空間),不可疊加 不能構成一個知識(表達一個獨立的完整信息),(如:疾?。臻g)、六病、雜病、類方(方陣理論))【基于既有知識(條文)若疊加后無相應的已知知識體系來概括和認知該疊加信息,則認定該知識體系屬于頂層知識體,如濕病、暍病疊加后,無相應的已知概念進行定義。如太陽病、陽明病疊加后可由已知太陽陽明合病概念所定義,則太陽陽明合病重新作為獨立頂層知識體而存在。
(4)第四維框架
四維——可隨時間推移進行更替的復合信息(時間)(邏輯推演、病傳、預后預測(時間))
我們構想能通過這樣一個多維知識體構建模式,可謂知識圖譜嵌入轉換為深度學習的多維向量,奠定良好的數(shù)據(jù)結構基礎。
三、技術選型
1、數(shù)據(jù)庫選型
數(shù)據(jù)庫目前使用的是關系型數(shù)據(jù)庫neo4j作為底層數(shù)據(jù)的存儲。Neo4j是一個高性能的NOSQL圖形數(shù)據(jù)庫,它將結構化數(shù)據(jù)存儲在網(wǎng)絡上而不是表中。它是一個嵌入式的、基于磁盤的、具備完全的事務特性的Java持久化引擎,但是它將結構化數(shù)據(jù)存儲在網(wǎng)絡(從數(shù)學角度叫做圖)上而不是表中。Neo4j也可以被看作是一個高性能的圖引擎,該引擎具有成熟數(shù)據(jù)庫的所有特性。所以使用neo4j來作為我們知識圖譜的底層數(shù)據(jù)庫是非常合適的,對于我們發(fā)現(xiàn)經(jīng)方、藥材、病機等關系也是事半功倍的。
2、底層邏輯選型
邏輯層則使用java作為編寫的語言,通過spring boot 框架對neo4j 及其穩(wěn)定的支持 作為我們對業(yè)務及數(shù)據(jù)處理的工具。
機器學習目前我們采用python來作為首要的開發(fā)語言。因為Python上有相當成熟的機器學習框架或工具庫。目前我們選擇Tensorflow 和 Keras 作為我們首選的機器學習框架。
3、圖譜實現(xiàn)
(1)基礎節(jié)點
首先我們以消渴為目標來構造一個基礎的知識網(wǎng)絡。
我們整理了傷寒論及其他典籍條文,總結了一個初步的結構化數(shù)據(jù)表并導入到了neo4j中。并且對于基礎節(jié)點構建出三元組關系作為節(jié)點與節(jié)點之間的聯(lián)系。后面又引入了病機的概念,進一步增加其圖譜的關系構成。
Equation 3 消渴知識圖譜
(2)社區(qū)發(fā)現(xiàn)算法分析癥狀
對于圖譜節(jié)點之間的關系,我們經(jīng)過分析最終選擇社區(qū)發(fā)現(xiàn)算法來進行分析。
典型的社區(qū)發(fā)現(xiàn)算法有Louvain、Label Propagation、Weakly Connected Components等,經(jīng)過嘗試最終選擇louvain作為我們的社區(qū)分區(qū)算法
Louvain方法是一種用于檢測大型網(wǎng)絡中的社區(qū)的算法。它最大化了每個社區(qū)的模塊化評分,其中模塊化量化了節(jié)點向社區(qū)的分配質量。Louvain算法是一種分層聚類算法,該算法將社區(qū)遞歸合并到單個節(jié)點中,并在壓縮圖上執(zhí)行模塊化聚類。最后通過模塊度來劃分不同的社區(qū)
對節(jié)點數(shù)據(jù)分析時,首先對癥狀的節(jié)點單獨創(chuàng)建,并建立一定的規(guī)則對不同的關系進行加權。在通過打分的形式篩選出一定的社區(qū)中心節(jié)點。最終將全部癥狀節(jié)點進行分區(qū),來展現(xiàn)他們之間的關系。
(3)相似度分析
通過對癥狀的分析,我們得到了一個癥狀關系的社區(qū)圖譜,用以支撐我們后續(xù)開發(fā)的機器學習部分所需的數(shù)據(jù)
知識圖譜屬于需要建立在海量數(shù)據(jù)之上的一種應用,在構建知識圖譜的圖關系時,基礎數(shù)據(jù)來自很多不同的數(shù)據(jù)源。常見的數(shù)據(jù)源有抓取的公開信息、業(yè)務數(shù)據(jù)、三方數(shù)據(jù)、用戶授權的數(shù)據(jù)等。這個時候,需要進行的工作就是實體消歧,這樣才能夠將實體和關系成功的創(chuàng)建。
我們即針對古籍方劑也做了一定的分析,用余弦相似度算法進行數(shù)據(jù)分析,發(fā)現(xiàn)藥方及藥物之間的聯(lián)系。
余弦相似度是n維空間中兩個n維向量之間角度的余弦。它是兩個向量的點積除以兩個向量的長度(或幅度)的乘積。具體的計算方式可參見下面的公式:
通過余弦相似度的分析 我們最終得到了藥方之間相似度分數(shù)的數(shù)據(jù)。
4、后續(xù)開發(fā)
目前我們已經(jīng)擁有了大量的特征數(shù)據(jù),后面的開發(fā)就是基于我們大量數(shù)據(jù)的導入之后。再進行數(shù)據(jù)的一系列清洗,將數(shù)據(jù)歸一化、標準化,在通過我們整理出的數(shù)據(jù),進行特征提取。最終構建模型 建立訓練數(shù)據(jù)集 進行機器學習訓練 后面按照結果來評估出最適合我們中醫(yī)的經(jīng)方的模型 來實現(xiàn)AI問診。
參考文獻:
[1]王憶勤,郭睿,顏建軍等 ? ?基于多標記學習的中醫(yī)問診智能系統(tǒng)[A] 中華中醫(yī)藥學會,2011(10):6.
[2]國家中醫(yī)藥管理局《關于推進中醫(yī)藥健康服務與互聯(lián)網(wǎng)融合發(fā)展的指導意見》
杭州甘之草科技有限公司