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