元代邓珍本《金匮要略》262方与640条原文计数考*
2021-09-25郑丰杰周璐李宇航
郑丰杰,周璐,李宇航
北京中医药大学,北京 100029
张仲景所撰《伤寒杂病论》成书不久即散乱不 存,魏晋太医令王叔和将其“伤寒”部分,编次为《张仲景方十五卷》,得以流传。北宋王洙在宫藏旧书中得仲景《金匮玉函要略方》三卷,宋臣孙奇、林亿等将“杂病”内容,又“采散在诸家之方”,编勒成《金匮方论》,后世习称《金匮要略》,但原版已佚。元代邓珍复刻仿宋本《新编金匮方论》传承王洙蠹简本,据目前所知,世间仅存一部,是赵开美本、医统本、明仿宋本、俞桥本的祖本,也是现存大字本系统中最善本[1]。
据宋臣孙奇、林亿等统计,《金匮要略》全书“凡二十五篇,除重复,合二百六十二方”。关于262方之统计,后世习以正方、附方和杂疗三篇方分别计数,但正方有226首、183首、177首、176首之说,附方有26首、28首、29首之谓[2-6],但杂疗方计数不详,全书条文计数也未见报道。本文以元代邓珍本《金匮要略》为蓝本,建立原文和方剂数据库,采用可提取电子文本特定内容的正则表达式与描述数据间映射关系的数据字典技术,结合人工校对,对《金匮要略》全篇条文与载方进行统计,以期为系统研究与学习《金匮要略》提供参考。
1 《金匮要略》原文数据库的建立
以影印元代邓珍本《新编金匮方论》为数据源[7],将原文与载方数据录入数据库。数据表中字段设置如下:段落ID字段(用于标识原文段落号),来源篇目字段(记录源于《金匮要略》篇目),段落字段(记述原文段落)。在此基础上,遵循《金匮要略方论》中“逐方次于证候之下”的原文排版,设置方名字段与方剂组成字段,列于段落字段之后。根据上述字段划分,各字段录入规则与示例如下:①论述证候与治疗用方的原文录入:即一段原文论述证候与治疗用方,再起一段原文记述具体的方药组成。对于此类原文,将论述证候与治疗用方的原文录入段落字段,具体的方药组成内容录入方名字段与方剂组成字段,如表1中段落ID为71与72的内容;②未载方名的原文录入:原文录入段落字段,方名字段与方剂组成字段以“无”字填充,如表1段落ID为70的内容;③有方无论的原文录入:若原文单列方名,则纳入条文段落当中,以作为有方无论的条文,如表1中段落ID为73的内容;④若记载方名与组成的原文存在多方并举,如《禽兽鱼虫禁忌并治第二十四》中载:“香豉二两,杏仁三两。右二味,蒸一食顷,熟杵之服,日再服;又方,煮芦根汁,饮之良。”方名或组成均以“/”进行分割,如表1中段落ID为275与331的内容;⑤若原文中某方剂未载药物组成,且非附方,可按原文方后所附说明找到方剂出处,继而确定方药组成。如“产后风,续之数十日不解,头微痛,恶寒,时时有热,心下闷,干呕汗出,虽久,阳旦证续在耳,可与阳旦汤即桂枝汤,方见下利中。”根据“即桂枝汤,方见下利中”提示,按桂枝汤药物组成录入。
表1 《金匮要略》原文数据表结构与示例
根据上述录入方案,从《脏腑经络先后病脉证第一》至《果实菜谷禁忌并治第二十五》,共采集364个段落,作为条文与载方统计的数据基础。
2 基于正则表达的《金匮要略》条文计数
2.1条文划分规则的确立本文《金匮要略》原文条文划分,据元代邓珍复刻影印本[7],这是现存最早的孤本、珍善本,最大程度上保留了宋版原貌。
该影印本为竖排版式,每段原文结尾后,新的一段原文另起一竖行,这种书写形式构成了原文固有的自然段,各自然段内的医理论述完整。此外,在部分原文段落内存在一种特殊的符号“○”。纵观全书,根据该符号所在位置的规律,可总结出以下四种功能:第一,标示篇名:“○”出现在各篇篇名之前,如“○痉湿暍病脉证并治第二”;第二,原文分段:“○”在原文之间,将大段的原文进一步分成若干医理论述完整的小段,如《痉湿暍病脉证并治第二》篇中“太阳病,发热无汗,反恶寒者,名曰刚痓。一作痉,余同。○太阳病,发热汗出而不恶寒,名曰柔痓。○太阳病,发热,脉沉而细者,名曰痓,为难治。”第三,标示问答句式:见于“问曰”“师曰”句式中,如“问曰,上工治未病,何也?○师曰,夫治未病者,见肝之病,知肝传脾,当先实脾……”。第四,标示加减法:如《疟病脉证并治第四》篇“蜀漆散方”后所附“○温疟加蜀漆半分,临发服一钱匕”。
本文即根据原文固有自然段与“○”的分段功能,结合分段后的原文应具有完整医理论述的规律,来确立条文的划分规则,即:①独立成条:原文段落中无“○”,则将原文固有的自然段落作为一则条文。②以“○”分条:原文段落中以“○”作为对条文划分的标识符,对段落中的条文进行划分。
经过正则表达式的条文划分统计,依据独立成条进行条文划分,100%的条文具有完整的医理论述。根据以“○”分条进行条文划分,所分条文的99.4%(317条)具有完整的医理论述。可见,完整的医理论述是邓珍复刻影印本[7]固有条文划分规律。
据统计,仅2处,占0.6%,疑似“○”误标,具体如下:①《痰饮咳嗽病脉证并治》中的“病溢饮者,当发其汗,大青龙汤主之。○小青龙汤亦主之。”②《禽兽鱼虫禁忌并治第二十四》中的“鳖目凹陷者,及压下有王字形者,不可食之。○其肉不得合鸡鸭子食之。”
可以看出,若将此两处误标“○”删除,则能体现出完整的医理论述特征,从而更加完整地体现出此影印本条文划分的固有规则。
故本文将“病溢饮者,当发其汗,大青龙汤主之。小青龙汤亦主之。”作为一条而不是两条;将“鳖目凹陷者,及压下有王字形者,不可食之。其肉不得合鸡鸭子食之。”作为一条而不是两条。
2.2利用正则表达进行条文计数正则表达是对字符操作的一种逻辑公式,用事先定义好的字符及字符组合,组成规则字符串,对符合规则的电子文本进行提取,该方法被广泛用于提取电子文本中的特定内容[8]。根据条文划分标志“○”,从段落中取出条文的正则表达式可写为“\○(.+?)\○/g”,该表达式中的两个“\○”表示将条文的提取限定在两个“○”之间;“(.+?)”表示提取出两“○”之间的全部文字,即提取出条文;“/g”意为global(全局)有效,即只要段落中的文字在两“○”之间,则作为条文取出。该正表达式可用java或python等计算机编程语言编写。使用编写的正则表达式进行条文提取前,先将上述①②中不作为条文划分标志的“○”去除,以避免错误的条文提取。
正则表达式作用于段落提取时,计算机会在所有段落的开头与末尾加入“○”,以保证正则表达式能将独立成条的段落提取为一则条文。如《肺痿肺痈咳嗽上气病脉证治第七》中的段落:“脉沉者,泽漆汤主之。”加入“○”变为“○脉沉者,泽漆汤主之。○”,从而使正则表达式的规则也适用于独立成条的段落。又如《五脏风寒积聚病脉证并治第十一》中段落:“肺中风者,口燥而喘,身运而重,冒而肿胀。○肺中寒,吐浊涕。○肺死藏,浮之虚,按之弱如葱叶,下无根者,死。”的开头与末尾加入“○”后,正则表达式可提取“肺中风者,口燥而喘,身运而重,冒而肿胀。”“肺中寒,吐浊涕。”“肺死藏,浮之虚,按之弱如葱叶,下无根者,死。”共3条原文。
经统计,邓珍本《金匮要略》各篇条文计数如表2所示,其中前22篇共计431条,后3篇共计209条,全书共载条文640条。
表2 《金匮要略》各篇条文计数一览表
3 基于数据字典的《金匮要略》载方数统计
3.1“方名-药物数据字典”的建立数据字典是一种用于对数据进行描述的计算机技术,可用于存放具有映射关系的数据[9]。利用数据字典,可将各篇的方名与方剂组成字段下的数据形成“键”与“值”的映射,其中方名作为数据字典的“键”,即方名索引,药物作为数据字典的值,即索引对应的具体药物组成,形成“方名-药物数据字典”。若方名下实载多方,则按方名_1,方名_2,方名_3……给予编号。字典示例如表3所示。
表3 方名-药物数据字典示例
3.2《金匮要略》全书载方计数应用数据字典进行统计邓珍本所载方剂计数,是在建立数据字典后,由计算机对各篇方名进行遍历,并利用数据字典获取方名对应的药物,获取药物组成后,再与篇内中其他方名对应的药物进行两两对比。在综合考虑方剂名称、药物组成与剂量、主治病证等基础上,确立两两比对标准如下:①方名相同(去除《外台》、《千金》等标明方剂来源的前缀)、药物组成相同,算作一方。如水气病篇之防己黄芪汤与《外台》防己黄芪汤,二者均由防己、甘草、白术、黄芪组成,且《外台》防己黄芪汤原文中写有“方见风湿中”。②方名不同(去除《外台》、《千金》等标明方剂来源的前缀),药物组成与剂量相同,视作一方,药物组成相同但剂量不同视作两方,如小承气汤与厚朴三物汤。
基于以上标准,应用数据字典对邓珍本《金匮要略》各篇载方数统计表明,全书二十五篇共载方297首,去除重复共计262方,其中前22篇去除重复为205方,其中正方182首(包括有方名而无药物组成方剂6首,即杏子汤、黄连粉、藜芦甘草汤、附子汤、胶姜汤、葶苈丸),见表4,附方23首,见表5,后3篇载方除重复共57首,见表6。
表4 《金匮要略》正方182首一览表
表5 《金匮要略》前22篇23首附方一览表
表6 《金匮要略》后3篇57首杂疗方一览表
续表4 《金匮要略》正方182首一览表
4 小结
对于邓珍本《金匮要略》的条文,使用正则表达的方法进行划分,可确保条文切分的客观性与准确性,依据划分条文的医理论述是否完备,确定条文是否需要合并,可保证条文能够传递完整的医理论述。经过条文计数的核定,邓珍本《金匮要略》全书条文为640条。对于《金匮要略》所载方剂,习惯上被分为正方、附方和杂疗方[10]。正方和附方均见于前22篇,附方是林亿等“采散在诸家之方,附于诸篇之末”之方,虽多冠以《千金》《外台》等晋唐方书,多数学者均认为宋臣校订《金匮要略》持之有据,方录之以附,故亦属仲景方的体系范畴[6,11-12]。在邓珍本中正方、附方方名多用黑底阴文(有学者称之为“黑帽”[13])突出显示。杂疗方专指《杂疗方第二十三》《禽兽鱼虫禁忌并治第二十四》《果实菜谷禁忌并治第二十五》3篇所载方剂。分析学者统计《金匮要略》载方数不同的原因,可能主要与划分标准、重复计算、依据版本等有关。我们以邓珍本为数据源,采用数据字典技术,发挥计算机统计标准一致、客观性高等特点,核定出《金匮要略》各篇载方、正方、附方、杂疗方数,除去重复,全书上中下三卷25篇共载方262首,与林亿等所云[7]:“断自杂病以下,终于饮食禁忌,凡二十五篇,除重复,合二百六十二方”之说相合。《金匮要略》条文与载方统计,既为《金匮要略》的系统学习与研究提供了参考,也为中医古籍文献整理提供了方法学借鉴。