摘 要: 在數(shù)據(jù)挖掘" title="數(shù)據(jù)挖掘">數(shù)據(jù)挖掘得出的知識庫基礎(chǔ)上,結(jié)合中藥方劑配伍理論及組方過程,提出了方劑配方模型,采用自定義的U連接操作生成主方劑,用中藥配伍規(guī)則修正主方劑中的藥物相克、有毒等不正常現(xiàn)象,再對方劑的四氣、五味進行數(shù)字化調(diào)整,成功為用戶開出治療特定癥狀的量化中藥方劑,切實為醫(yī)生及中藥研發(fā)人員提供計算機輔助決策支持。
關(guān)鍵詞: 中醫(yī)藥; 配方模型; 知識管理; 決策支持
?
自人工智能技術(shù)誕生以來,專家系統(tǒng)一直是最活躍的分支之一,而醫(yī)療也一直是專家系統(tǒng)的典型實際應(yīng)用領(lǐng)域。在此中,疾病診斷系統(tǒng)是近年來的研究熱點,眾多學(xué)者已先后提出多種疾病診斷模型[1-4]。然而,對癥開方系統(tǒng)尤其是中藥配方系統(tǒng)卻少有人涉及。中醫(yī)藥是我國的國粹,經(jīng)過數(shù)千年的發(fā)展,它積累了豐富的經(jīng)驗,擁有浩瀚的文獻,運用最新科學(xué)技術(shù)來促進中醫(yī)藥的國際化、現(xiàn)代化已成為中醫(yī)發(fā)展的必然趨勢。
為此,作者初步研制了中醫(yī)藥應(yīng)用決策支持系統(tǒng)。該系統(tǒng)是數(shù)據(jù)挖掘技術(shù)與中醫(yī)配伍理論相結(jié)合的結(jié)果。系統(tǒng)首先從原始的中藥專利數(shù)據(jù)庫中提取數(shù)據(jù)加以預(yù)處理,再經(jīng)數(shù)據(jù)挖掘得到有用的知識組建配方知識庫[5-6];然后用本文提出的對癥開方模型為用戶自動開出中藥方劑,從而達到?jīng)Q策支持的目的。這種方法智能而且高效,是人為中藥配伍所不及的。
1 對癥開方系統(tǒng)結(jié)構(gòu)
對癥開方系統(tǒng)模型結(jié)構(gòu)圖如圖1所示。從圖中可以看出,對癥開方模型針對病人或中藥研發(fā)人員輸入的癥狀集,從配方知識庫中匹配癥狀,生成初始主方劑;然后應(yīng)用配伍知識對主方劑進行修正;最終生成期望的中藥方劑??梢?,其最核心的部分是配方知識庫,下面介紹該模型的知識表示。
?
2 配方知識管理
本模型中的知識庫分為三大類:癥-藥組知識庫、配伍知識庫和藥性知識庫。每個知識庫主要包括配方參量和規(guī)則兩部分。配方參量是指開方過程中所利用的反映疾病或藥物的基本參數(shù);規(guī)則一般是指專家的經(jīng)驗知識,表現(xiàn)了病癥與藥組、藥物與藥物之間的內(nèi)在聯(lián)系。
2.1 配方知識的表示
配方參量在不同的情況下將會有不同的取值,為了有利于配方參量的組織和管理,本專家系統(tǒng)使用對象、屬性、值的三元組表示標(biāo)準(zhǔn)。對象可以是抽象的實體,如疾病、藥物等,屬性是與對象相關(guān)的普通特征,如疾病的癥狀、藥物的四氣五味等,值是指在特定環(huán)境下屬性的特殊性質(zhì)。在對癥開方系統(tǒng)中配方參量的結(jié)構(gòu)定義為:
? Struct Parameter{
??? Char *ParameterObj;? //對象
??? Char *ParameterAttr;? //屬性名
?? ? Int? *ParameterType;? //屬性類型
??? Int? *ParameterNum;? //屬性值的數(shù)目
? ? Char *ParameterVal;? //屬性值
??? };
產(chǎn)生式規(guī)則是應(yīng)用最廣泛的知識描述方法,其表示形式為:
IF〈前提〉THEN〈結(jié)論〉|〈動作〉[〈可信度〉c]
??ELSE〈結(jié)論〉 [〈可信度〉c]
即:當(dāng)前提滿足時,得出結(jié)論或執(zhí)行動作,其可信度是c。系統(tǒng)中規(guī)則類的定義為:
class rules{
?? Char *name;? ?? //規(guī)則名
?? Premise *clause;? ?//規(guī)則前提
?? Premise? *action;? ?//前提成立時要執(zhí)行的結(jié)論
Float *certainty;? //規(guī)則可信度
Void set_medicine();?
?? Void get_medicine();
?? Premise reference(Premise pr);
??? };
其中,前提是由配方參量在特定環(huán)境下取值。它是單個命題的五元組,定義為:
Struct Premise{
?? Char *ParameterObj;? ?//對象
?? Char *ParameterAttr;? ?//屬性名
?? char *ParameterOper;? ?//關(guān)系運算符
?? Char *ParameterVal;? ?//屬性值
?? Struct Premise*next;
??? };
2.2 配方知識庫的建立和維護
對知識進行系統(tǒng)化的組織與存儲并能夠進行有效的管理是建立專家系統(tǒng)時必須要考慮的問題。在關(guān)系數(shù)據(jù)庫" title="關(guān)系數(shù)據(jù)庫">關(guān)系數(shù)據(jù)庫的基礎(chǔ)上建立知識庫,充分利用關(guān)系數(shù)據(jù)庫管理系統(tǒng)" title="管理系統(tǒng)">管理系統(tǒng)功能,可以方便知識庫管理系統(tǒng)的設(shè)計。它通過數(shù)據(jù)庫本身的技術(shù),如關(guān)聯(lián)、索引等技術(shù)來實現(xiàn)簡單的知識推理,并實現(xiàn)對知識庫的維護。
從知識的邏輯表示觀點來看,配方知識庫中只存在兩種謂詞:配方參量和規(guī)則;而從數(shù)據(jù)的關(guān)系模型的觀點看,知識庫中存在兩種關(guān)系,對應(yīng)這兩種關(guān)系可以建立兩張表,如表1和表2所示。
表1中定義的六個字段分別對應(yīng)于參量的結(jié)構(gòu)定義。表2中的每一條規(guī)則都在特定的知識庫中,屬性名、關(guān)系運算符和屬性值構(gòu)成規(guī)則的前提,藥組即是由前提推導(dǎo)出的結(jié)論。
3 對癥開方模型的設(shè)計
根據(jù)圖1的系統(tǒng)結(jié)構(gòu),對癥開方模型分四步進行處理:
步驟1 藥組U連接,生成主方劑
當(dāng)病人或者中藥研發(fā)人員向中藥配方系統(tǒng)輸入他們需要配置中藥藥方的癥狀集時,對癥開方模塊第一步做的處理就是為輸入的各個癥狀,從(癥-藥組)知識庫中查找各自的藥組,然后進行一個U連接,生成主方劑。
定義1? X操作 (藥組與藥組間的操作)
設(shè)有藥組B1=(aL, bH, dM);B2=(aM, bH, cL)(小寫字母表示藥物名,大寫字母表示藥劑量,以下類同),則B1 X B2 =(aM, bH, cL, dM),即當(dāng)藥組中存在相同的藥物時合并同一藥物,藥劑量取相同藥物中最高的一項(L
若對59 049種不同的中藥方劑進行分析,可以發(fā)現(xiàn),其中有大量的方劑只有很細微的區(qū)別,并不具代表性,完全可以合并。為了組合方劑,使方劑的數(shù)量盡量地少,而各條方劑又都具代表性,本系統(tǒng)設(shè)計了如下的藥組連接方法:
定義2? U連接
設(shè)有n個癥狀(A1, A2, … An) (n≥1),分別從(癥-藥組)知識庫中查找到各自的藥組有:(A1;B11, B12,…,B1i),(A2;B21,B22,…,B2j),(A3;B31, B32,…,B3k)…(An;Bn1, Bn2, …,Bnl)(一個癥狀對應(yīng)的藥組個數(shù):i, j,k…l≥1),取前三位癥狀的藥組個數(shù)i、j、k,設(shè)y=max(i,j,k),則這n個癥狀的U連接操作如下:
當(dāng)癥狀A(yù)x對應(yīng)的藥組個數(shù)Γ(Γ≥1)小于y時,則取Bxt=B1(Γ
(1)對用戶輸入的癥狀進行一定的限制,按照癥狀表現(xiàn)的明顯程度和影響程度從高到低輸入癥狀,即(A1, A2,…An) n個癥狀中A1的影響和表現(xiàn)是最強的。
(2)對已知的一個癥狀從(癥-藥組)知識庫中查找藥組時,按照藥組的支持?jǐn)?shù)由高到低排列。
通過以上的預(yù)處理再進行U連接,便得出了比較具有代表性、數(shù)量較少的中藥方劑。從醫(yī)學(xué)的角度看,某種疾病一般而言有1~5種最能體現(xiàn)疾病的基本癥狀,因此,本系統(tǒng)在生成主方劑時重新考慮了前三個癥狀,所以有y=max(i,j,k),前三個癥狀所擁有的藥組數(shù)決定了將生成中藥方劑的數(shù)目。
為了加深U連接操作的理解,以圖2表示主方劑的生成過程。
?
通過以上方法,就可以將(癥-藥組)知識庫轉(zhuǎn)換成癥狀的主方劑。
步驟2? 應(yīng)用配伍知識修正主方劑
在數(shù)據(jù)庫設(shè)計中,可以知道配伍知識主要是收集了中藥性相克、會發(fā)生反應(yīng)、藥物組合顯毒性的規(guī)則。這項處理起來比較簡單,關(guān)鍵問題在于如何建立知識庫。
修正方法:把各主方劑依次和配伍知識庫中的屬性進行匹配,如匹配成功,則說明需對主方劑添加或減去藥組中的相應(yīng)藥物,從而達到方劑的配伍修正。
步驟3 方劑四氣調(diào)整
四氣的調(diào)整旨在為用戶開出特定四氣的中藥方劑。為了便于調(diào)整,可將四氣分成如表3所示的幾種,并且加以數(shù)字化。
?
經(jīng)過對方劑四氣的數(shù)字化,就可以用數(shù)字來計算方劑的平均四氣,并可以為用戶配出一定四氣值的方劑。有關(guān)方劑的四氣計算公式如下:
在公式(3)中,調(diào)整藥物是系統(tǒng)提供的少量幾種不影響藥性但能調(diào)整方劑四氣的中藥材,可以供用戶選擇或系統(tǒng)推薦(按最大推薦法,即如果需要添加四氣為涼的藥物,則選擇四氣值最低的藥物進行調(diào)整)并自動計算需要的劑量。通過公式(3),用戶即可以得到想要的四氣方劑。
步驟4? 方劑五味調(diào)整
中藥理論將五味分為:甘、苦、酸、咸、辛。五味的調(diào)整旨在為用戶開出特定五味的中藥方劑。為了方便調(diào)整可將五味數(shù)字化,用一個四元向量β(a, b, c, d)來表示,如表4所示。
?
因此,可以得出一個方劑的五味,其計算公式如下:
根據(jù)公式(4)就可以得到已經(jīng)方劑的五味向量。由于五味中只有甘、苦是明顯相克的,所以對五味的調(diào)整主要是對方劑甘、苦味覺的調(diào)整,調(diào)整的方法與四氣的調(diào)整方法相似,這里不再贅述。
經(jīng)過以上一系列過程的處理,系統(tǒng)已經(jīng)對用戶的需求開出了系統(tǒng)認為最佳的方劑。
4 對癥開方模型的實現(xiàn)
對癥開方系統(tǒng)運行于Windows操作系統(tǒng)上,采用了B/S結(jié)構(gòu),Tomcat5.5 作為Web服務(wù)器,SQL Sever2000作為系統(tǒng)數(shù)據(jù)庫,用Java Server Page(JSP) 及JavaBean技術(shù)編寫而成。用戶只需根據(jù)上述對癥開方流程在操作界面內(nèi)輸入相應(yīng)參數(shù),系統(tǒng)就可自動生成中藥方劑。例如,用戶在完成輸入如下四個癥狀:鼻塞、咳嗽、發(fā)熱和頭痛;方劑四氣設(shè)置為:微溫;方劑五味設(shè)置為微甘等步驟后,系統(tǒng)就會針對所輸入癥狀給出如圖3所示的推薦的中藥方劑。
?
本文重點研究了中醫(yī)藥的對癥開方模型,該模型是數(shù)據(jù)挖掘技術(shù)與中醫(yī)配伍理論相結(jié)合的結(jié)果。中醫(yī)藥與計算機的結(jié)合是全新的中藥配伍方法。它通過對藥組進行U連接產(chǎn)生主方劑,再經(jīng)配伍修正、四氣、五味調(diào)整,實現(xiàn)了對癥開方功能,成功地為用戶開出治療特定癥狀的量化中藥方劑,以此形式為病人、中藥研發(fā)人員提供強有力的決策支持,也為中醫(yī)藥現(xiàn)代化建設(shè)做出了貢獻。
參考文獻
[1] ?邵虹,崔文成,張繼武,等.醫(yī)療診斷專家系統(tǒng)研究進展[J]. 小型微型計算機系統(tǒng),2003,24(3):509-512.
[2] ?林媛,陳新,崔智.面向?qū)ο蟮尼t(yī)療診斷推理機設(shè)計[J].?計算機應(yīng)用" title="計算機應(yīng)用">計算機應(yīng)用與軟件,2001,18(1):5-9.
[3] ?張紅梅,王永成.一個仿人疾病診斷專家系統(tǒng)模型[J].?計算機應(yīng)用研究,2000,(1):41-43.
[4] ?譚義紅,陳治平,李學(xué)勇.基于決策樹?的中毒診斷專家系統(tǒng)實現(xiàn)[J]. 計算機應(yīng)用,2005,(10):2315-2317.
[5] ?朱金偉,鞠時光,辛燕.基于數(shù)據(jù)挖掘?的中醫(yī)藥數(shù)據(jù)預(yù)處理方法[J].計算機工程,2006,32(15):280-282.
[6] ?辛燕,鞠時光.基于多維數(shù)據(jù)模型的交叉層關(guān)聯(lián)規(guī)則挖掘[J]. 小型微型計算機系統(tǒng),2006,27(4):681-686.
?