馬甲林,王兆軍,郭海
1.淮陰工學院計算機學院,江蘇 淮安223003;2.淮安市吳鞠通中醫學術研究會,江蘇 淮安 223300;3.南京醫科大學附屬淮安第一醫院,江蘇 淮安 223000
中藥配伍理論經過古今醫家的發展和總結,形成較為完整理論體系的主要有藥性配伍、七情配伍及君臣佐使等。其中,君臣佐使是中醫方劑重要配伍理論原則之一,最早見于《黃帝內經》。《素問·至真要大論篇》有“主藥之謂君,佐君之謂臣,應臣之謂使”,“君一臣二,制之小也。君二臣三佐五,制之中也”,“君一臣三佐九,制之大也”。元代李杲《脾胃論》將其表述為:“君藥分量最多,臣藥次之,使藥又次之。不可令臣過于君,君臣有序,相與宣攝,則可以御邪除病矣。”《黃帝內經》對君臣佐使的定義得到眾多醫家認可[1-4]。
歷代中醫處方數據中蘊含著豐富的藥方配伍原則的先驗知識[5-6]。針對中醫藥配伍規律挖掘分析研究工作主要關注藥物的組合關系,以藥物作為復方的特征項,采用關聯規則分析、頻繁項分析、主成分分析、聚類分析等[7]。目前研究大多專注于抽取某種疾病的特殊規則,探索某種特定疾病或中醫名家的用藥規律。而針對君臣佐使配伍規律和分析集中在對有限數量的藥方進行人工注解分析,以探索其概念的內涵和外延及臨床原則,采用數據挖掘分析的研究極少[7-8]。本研究以中藥方數據為分析挖掘對象,以主題模型理論為建模基礎,提出一種用于分析君臣佐使隱性結構的雙關主題模型(double correlated topic model,DCTM),建立主題在病證和藥方2個語義空間的聯系,分析標注出中藥方的君臣佐使角色,為研究計算機自動組方、驗證和完善中醫君臣佐使配伍理論提供幫助。
組方藥物可按其在方中所起的作用和地位分為君藥、臣藥、佐藥、使藥[9]。君臣佐使依據藥物功效,表明藥物在整首方中的作用和重要程度[10-12]。君臣佐使配伍理論從多元用藥角度,論述組方各味藥物在方中的地位及配伍后的性效變化規律。它高度概括了中醫配藥組方的原則,是七情配伍理論的進一步發展[10]。根據《方劑學》[9]定義,君臣佐使具有以下核心含義:君藥針對治療主病或主證;臣藥輔助君藥加強治療主病或主證,或治療兼病或兼證;佐藥有3種,佐助藥輔助君臣藥加強療效,佐制藥消除或緩解君臣藥毒性與烈性,反佐藥與君藥性味相反而又能在治療中起相成作用;使藥包括引經藥和調和藥,起引經作用或調和作用。
根據君臣佐使概念,可總結中藥方數據存在的主要特性。顯性數據包括病證、藥物。隱性數據包括以下4類:①主病證和兼病證;②君藥、臣藥、佐藥、使藥;③佐助藥、佐制藥、反佐藥;④引經藥和調和藥的隱含角色。根據以上特性,可進一步從中抽象出以下主要關系:①君藥對應主病證;②臣藥輔助君藥,或對應兼證;③佐藥與君藥有關;④使藥相對較為獨立。根據以上抽象關系需要建立一種多關系主題模型,不僅需要分析處方的君臣佐使的配伍結構,而且能夠描述君藥與臣藥、君藥與主病證、臣藥與兼病證的隱性關系。
主題模型是一種概率圖生成模型,能夠從文本數據中學習潛在的主題信息和語義結構,廣泛用于文本數據挖掘。目前研究在經典主題模型PLSA[13]、LDA[14]基礎上,弱化主題模型的各種假設、與元數據結合,結合領域理論及數據特點進行拓展建模[15-16]。針對多類型數據,GM-Mixture模型采用潛在變量連接圖像及其文字標題2種不同類型的數據,用于圖像數據自動組織、自動注釋及檢索等任務[16]。在此基礎上,提出GM-LDA和Corr-LDA模型[17-19]。此外,針對社會媒體中的文檔和標簽數據,提出Tag-LDA模型用于實時標簽推薦[20]。
主題模型對多種數據類型同時建模,根據實際任務選擇不同的分布描述變量之間的相關關系,已用于中醫臨床診療[12]。相關主題模型(correlated topic model,CTM)[21]為表達主題之間的相關性,引入正態分布ηd~N{μ,Σ}替代LDA中Dirichlet分布,但CTM模型為單語義空間模型。中藥方內容分為病證和藥方兩部分,二者處于不同的特征空間,病證的特征詞由病、證候和癥狀組成,藥方的特征詞為中藥。本研究對處方的君臣佐使配伍結構,及君藥與臣藥、君藥與主病證、臣藥與兼病證關系同時建模,提出無監督的DCTM,用于挖掘中藥方數據表現為病-證、證-藥及藥-藥配伍等多重復雜隱性關系。
中藥方數據集可看作D個獨立的文檔生成過程,單個藥方被看作一篇文檔d,該文檔同時存在2個語義空間的特征(包含2種類型的詞):病證被看作組成文檔的第一類語義空間,中藥被看作第二類語義空間。DCTM為一個雙類型詞袋模型。在DCTM中,文檔d由兩部分分步生成:第一部分是病證生成,由K個主題按比例組成,主題是建立在病證語義空間上的詞分布;第二部分是中藥,同樣由K個主題按比例組成,主題是建立在中藥語義空間上的詞分布。2個語義空間共享主題分布,實現主題的雙關聯,并引入正態分布作為先驗,建立主題之間跨2個語義空間的兩兩相關關系。DCTM的圖模型表示見圖1,符號含義見表1。

表1 DCTM圖模型表示符號含義

圖1 DCTM圖模型表示
圖1所示DCTM中采用一個K維隱變量ηd,服從正態分布N(μ,Σ),μ(為K維向量)和Σ(為K*K協方差矩陣)為該分布的參數先驗。由K個主題的協方差矩陣Σ表達主題兩兩之間的相關性。因為ηd~N(μ,Σ),所以類似CTM,DCTM中exp(ηd)服從對數正態分布,可用來表達中藥復方中主題之間的比例;但為了滿足各個主題比例之和為1,因此將ηd轉化為參數θd,滿足θd1+θd2…+θdK=1,且0≤θdi≤1,具 體 為:θd=f(ηd)=exp(ηd)/Σkexp(ηk)。
DCTM建模在2個語義空間上,包含病證描述部分的詞和藥方部分的中藥;一篇中藥復方文檔d同時共享主題分布f(ηd)且服從多項分布;通過共享主題分布,建立病證主題和中藥主題的兩兩相關關系。φs為多項式分布,表示主題上的病證分布;同理,φh為多項式分布,表示主題上的中藥分布;一篇中醫復方文檔d的病證和中藥的聯合生成概率可表達為公式(1)。

DCTM模型中,一個中藥復方語料庫的生成過程為:
步驟1抽取一個文本-主題(document-topics)分布:ηd|{μ,Σ}~N(μ,Σ)
步驟2 For eachsdnind:
步驟2-1隨機抽取一個主題編號:zdn|ηd~multinomial(f(ηd))
步驟2-2從病證詞袋中為主題zdn抽取詞:sdn|zdn,φs~multinomial(φzdn)
步驟3 For eachhdnind:
步驟3-1隨機抽取一個主題編號:z'dn|ηd~
multinomial(f(ηd))
步驟3-2從中藥詞袋中為主題z'dn抽取詞:hdn|z'dn,φh~multinomial(φz'dn)
本研究DCTM中引入了正態分布來建模主題之間的相關關系。正態分布不是多項分布的共軛分布,所以依靠共軛分布來推斷后驗分布的Gibbs Sample不再適用于DCTM模型參數推理,因而采用變分推斷EM算法進行參數求解[15-16]。根據DCTM生成過程可見,模型的目標是推斷隱變量在顯性變量條件下的后驗估計,見公式(2)。

DCTM可通過變分EM算法推斷關鍵模型參數φs、φh及{μ,Σ},并可通過參數ηd間接轉化得到文檔d的主題比例參數θd,θd=f(ηd)=exp(ηd)/Σkexp(ηk)。
2.3.1 由參數θd分析君藥及主病證
通過中藥復方d中第一部分的病證描述部分,可知主病證必然反映為較高的主題比例概率值;君藥針對主病證,第二部分的藥方部分必然反映為較高的主題比例。因此,選取主題比例最高的主題對應藥物為君藥(φhd,k),對應病證為主病證(φsd,k),其中k=argmax({θd,1,θd,2,…θd,K})。進一步可知,在d中除去φsd,k,均為兼證。
2.3.2 由參數Σ分析臣藥及兼證
在前述關系中,臣藥輔助君藥,或對應兼證,可知臣藥與君藥相關度較高,或與兼證相關。因此,可通過分析各主題之間相關性得到臣藥。參數Σ反映各主題之間兩兩相關度,可得到兩兩主題間相關系數ρi,j矩陣。所以臣藥可取與主題i相關度高的(ρi,j>ε,ε為相關度閾值參數,在實驗中根據實際情況觀察確定)主題{j}的前topn個詞:φd,{j}(j∈{1,2…K})。
2.3.3 佐藥和使藥確定
使藥的作用主要是引經和調和,常用使藥相對比較固定,因此,使藥可選用自固定集合。依據中醫六經和十二歸經理論,相應藥物大約幾十種,可在DCTM模型分析中直接根據固定集合標注。佐藥作用相對比較復雜,也反映出佐藥的多關系特性。因此,在分析方法中,可在其他結果得出后將剩余藥物全部劃歸佐藥。
2.3.4 基于DCTM的君臣佐使分析算法步驟
輸入:中藥方數據集、中藥信息庫
輸出:中藥方中各味藥的君臣佐使角色標記
步驟1輸入中藥方數據集、并利用中藥信息庫對數據集進行中藥識別及同名中藥歸一化等預處理;
步驟2訓練DCTM模型;
步驟3根據DCTM模型訓練結果進行藥方君臣佐使角色標記;
步驟3-1根據“2.3.1”項下方法標記君藥;
步驟3-2根據“2.3.2”項下方法標記臣藥;
步驟3-3根據“2.3.3”項下方法標記佐使;
步驟4結果輸出保存。
數據來源于國家人口健康科學數據中心(http://dbcenter.cintcm.com/)中國方劑數據庫共84 464首方劑及中國中藥數據庫共8 173種中藥。84 464首方劑數據包含的方劑信息項有:名稱、別名、組成、出處、功效、主治、附注、用法、加減、制備方法、用藥禁忌、各家論述。根據分析目的選取數據集中處方的中藥組成和主治描述部分進行分析。經統計分析,該數據集涉及中藥6 213種,病證5 436種。8 173種中藥信息共有別名21 890個,每種中藥平均2.7個別名。對上述方劑數據進行預處理:①由8 173種中藥構建專用詞表,對方劑藥物構成部分進行分詞;②對方劑中的所有中藥同名藥物進行統一替換;③為保證模型中的多項分布,去除中藥構成少于3種的方劑。
DCTM及LDA為無監督學習模型,主題參數K對實驗結果影響較大,由于方劑功效與病證及組方有直接關系,因此,分析中借助數據集自帶的功效項,統計出數據集共有479種功效,作為依據來確定實驗各模型參數K=479。另外,參照文獻[15,21],EM算法的迭代次數為500,似然邊際不小于10-5;變分推斷的下界不小于10-6。
金代成無已《傷寒明理藥方論》首次以君臣佐使組方原理完整解析了《傷寒論》的20首常用經方,開創了后世君臣佐使方論的先河。為進一步評估本研究建立的DCTM模型對中藥方君臣佐使組方規律挖掘結果,分別計算20首經方的DCTM分析結果,并與《傷寒明理藥方論》的君臣佐使注解[22]進行對比。
20首經方中,小青龍湯包含藥物最多,有8味藥,其他多為4~7味藥,為方便比較,本研究中君藥和臣藥各取1味。20首經方DCTM分析結果與《傷寒明理藥方論》注解對比見表2。表中,k=argmax(θd,k)=i,表示在DCTM模型分析結果中選取方劑d的主題概率最大的主題編號i,θd,i為該概率值;Top(φsd,i)n表示取方劑d中,主題i概率最高的前n個病證;Top(φhd,i)n表示取方劑d中,主題i概率最高的前n個中藥;argmax(ρi,j)表示取與主題i相關度最高的主題j。

表2 20首經方DCTM分析結果與《傷寒明理藥方論》注解對比
DCTM模型能夠正確分析大部分君藥,20首經方中有15首與《傷寒明理藥方論》注解一致,其他5首經方中有2首君臣藥角色篡位;臣藥共有8首與文獻一致,臣藥不全的有2首,其中桂枝湯由于臣佐藥角色兼職導致DCTM模型不能正確識別;此外,梔子湯模型給出的臣藥黃連不在該經方內是由于DCTM模型以主題相關性進行關聯主題所得臣藥,黃連在該關聯主題中出現概率過高導致分析結果有誤。結果偏差較大的是大陷胸湯,臣藥標注為君藥,將君藥標注為佐藥。綜合其他幾個差錯較大的方劑如梔子湯、大陷胸湯、茵陳蒿湯和建中湯方可見,經方包含藥物較少,一般少于4味藥的容易標注錯誤;另外,一味藥兼多個角色的經方如桂枝湯也易出錯。
采用準確率、召回率、F1-得分對20首經方的DCTM分析結果進行評價。君藥的準確率、召回率、F1-得分分別為0.75、0.75、0.75,臣藥的準確率、召回率、F1-得分分別為0.50、0.45、0.47,佐藥的準確率、召回率、F1-得分分別為0.71、0.85、0.77,使藥的準確率、召回率、F1-得分分別為0.81、0.43、0.56。
由評價結果可以看出,部分指標較低,尤其是臣藥和使藥,分析其原因主要為統計的中藥方數量較少。另外,DCTM分析結果中差錯較大的是臣藥和使藥,臣藥容易與君藥或佐藥混淆,使藥主要起引經和調和作用,因此很多使藥的應用具有很大的靈活性,本研究中對使藥的識別采用固定的集合匹配方式,存在不足之處。盡管如此,20首經方DCTM分析結果中,有8首方的臣藥標注結果與《傷寒明理藥方論》注解一致。

續表2
為探究中醫方劑君臣佐使配伍原則和規律,本研究提出一個涉及病證及中藥,反映君臣佐使隱性結構的DCTM。本模型以病證和中藥2種顯性變量為線索,挖掘分析君臣佐使隱性結構。但是,自《黃帝內經》和《神農本草經》有記載以來,君臣佐使理論一直存在爭議,且很多經典經方中君臣佐使的藥物對應爭議較大,君臣佐使理論尚未統一,權威標注君臣佐使文獻嚴重欠缺,采用專家人工評判又存在爭議性。為進一步評估DCTM對君臣佐使組方規律挖掘結果,本研究以《傷寒明理藥方論》解析的20首經方君臣佐使注解為參照進行檢驗,結果表明,DCTM對君藥識別較為準確,能夠對大部分經方的佐使正確識別,對臣藥的識別結果一般。由于缺乏已標注的數據集,模型還需進一步尋求其他驗證方法,有待今后提高和改進。