中医药大语言模型项目(TCMLLM)拟通过大模型方式实现中医临床辅助诊疗(病证诊断、处方推荐等)中医药知识问答等任务,推动中医知识问答、临床辅助诊疗等领域的快速发展。
目前针对中医临床智能诊疗问题中的处方推荐任务,发布了中医处方推荐指令微调大模型TCMLLM-PR。
本项目针对中医临床智能诊疗问题中的处方推荐任务,通过整合真实世界临床病历、医学典籍与中医教科书等数据,构建了包含68k数据条目(共10M token)的处方推荐指令微调数据集,并使用此数据集,在ChatGLM大模型上进行大规模指令微调,最终得到了中医处方推荐大模型TCMLLM-PR。
[2023/08/01] 面向处方推荐的大模型TCMLLM-PR
[2023/06] 项目启动
- 首先需要下载ChatGLM-6B原始模型代码和参数,并配置依赖环境
- 下载 TCMLLM 模型参数,将checkpoint压缩文件解压到 ChatGLM-6B/ptuning/ 路径下
- 百度网盘链接: https://pan.baidu.com/s/1QFx-206Ww9Xt-7_Z0RF85g 提取码: iwg3
本项目构建的指令微调数据集包含8个数据来源,涵盖4本中医经典教科书《中医内科学》、《中医外科学》、《中医妇科学》和《中医儿科学》(即“内外妇儿”,Internal medicine,Surgery, Gynecology,Pediatrics,简称ISGP)、2020版中国药典(Chinese pharmacopeia,简称CHP)、中医临床经典医案数据(Chinese Medicine Clinical Cases,简称CMCC)、以及多个三甲医院的涵盖肺病(简称Lung)、中风病(简称Stroke)、糖尿病(简称Diabetes)、肝病(简称Liver)、脾胃病(Splenic and stomach diseases,简称SSD)等多病种的临床病历数据。8个数据集共68k条,token总数约为10M(输入token总数为5M、输出token总数为4M),统计信息如下表。
类型 | 名称 | 简称 | 数量 | 来源 | 输入token总数 | 输出token总数 | token总数 |
---|---|---|---|---|---|---|---|
知识 | 内外妇儿 | ISGP | 2k | 中医4本教材 | 218k | 75k | 294k |
药典 | CHP | 1k | 中国药典2020版 | 85k | 50k | 136k | |
医案 | CMCC | 15k | 临床经典医案 | 163k | 613k | 225k | |
临床 | |||||||
肺病 | Lung | 15k | 中医医院1 | 755k | 849k | 160k | |
中风病 | Stroke | 5k | 中医医院2 | 298k | 294k | 593k | |
糖尿病 | Diabetes | 8k | 中医医院3 | 494k | 262k | 756k | |
肝病 | Liver | 2k | 中医医院4 | 86k | 116k | 202k | |
脾胃病 | SSD | 17k | 中医医院5 | 2M | 2M | 4M | |
总计 | Mixed | 68K | 5M | 4M | 10M |
- 中风病数据集示例
{"Content":"请根据中风病患者的症状信息进行中医处方推荐。肢体活动不利,言语不利,肢体麻木,烦躁,口苦,口干,便秘","Summary":"白僵蚕,炒白术,炒枳壳,刺蒺藜,大黄,当归,葛根,钩藤,厚朴,黄芪,菊花,牡蛎,片姜黄,全蝎,石决明,石菖蒲,首乌藤,酸枣仁,天麻,盐杜仲,郁金,远志,茯神,槲寄生"}
- 经典教材(内外妇儿)数据集示例
{"Content":"请根据患者的症状信息进行中医处方推荐。恶寒,发热,无汗,头痛,肢体酸楚,鼻塞,声重,打喷嚏,鼻流清涕,咽痒,咳嗽,痰色白,痰稀薄,舌苔白,舌苔薄,脉浮,脉紧,恶寒甚", "Summary":"荆芥,防风,茯苓,独活,柴胡,前胡,川芎,枳壳,羌活,桔梗,薄荷,甘草"}
- 药典数据集示例
{"Content":"请根据患者的症状信息进行中医处方推荐。燥热蕴肺所致的咳嗽、痰黄而黏不易咳出、胸闷气促、久咳不止、声哑喉痛","Summary":"川贝母,知母,石膏,炒栀子,黄芩,蜜桑白皮,茯苓,炒瓜蒌子,陈皮,麸炒枳实,炙甘草,五味子"}
- 训练阶段:TCMLLM-PR在两张3090显卡(24G显存*2)上完成训练。batch_size=16情况下单卡显存占用约23G,建议根据显存大小来调整batch_size。
- 推理阶段:显存占用约为14G。
Question | ChatGPT输出 | 通义千问输出 | TCMLLM-PR输出 | Human |
请根据中风病患者的症状信息进行中医处方推荐。口角歪斜,吞咽呛咳,肢体活动不利,不能持物,不能行走,头晕,胸闷,干咳,日常生活能力重度下降 | 白芍,甘草,生姜,大枣,桂枝,生薏苡仁,蜂蜜,人参,黄精,党参,白术,茯苓,熟地,山药,枸杞子,巴戟天,麦冬,陈皮,黄芩,连翘,金银花,银杏叶,红参,黄连等 | 黄芪,当归,白术,地龙,全蝎,蜈蚣,桃仁,红花,赤芍,姜黄 | 白僵蚕,炒白术,穿山甲,胆南星,党参,独活,防风,甘草,瓜蒌,红曲,化橘红,姜半夏,全蝎,石菖蒲,天麻,郁金,竹茹,茯苓 | 白僵蚕,炒白术,穿山甲,胆南星,党参,独活,防风,甘草,瓜蒌,红曲,化橘红,姜半夏,全蝎,石菖蒲,天麻,郁金,竹茹,茯苓 |
请根据中风病患者的症状信息进行中医处方推荐。肢体活动不利,肢体麻木,头晕,心慌,视物不清,痰少,痰白,眠差 | 桂枝,芍药,甘草,生姜,大枣,半夏,人参,黄芩,当归,麦冬,陈皮,白术,木通,茯苓,枳实,川芎,越婢 | 川芎,当归,白芍,细辛,黄芪,党参,灸甘草,地龙,全蝎,红花,桃仁,红参,茯苓,桂枝,白术,泽泻 | 川贝母,胆南星,甘草,红花,红曲,化橘红,鸡血藤,姜半夏,全蝎,桑枝,石菖蒲,桃仁,郁金,远志,竹茹,茯苓 | 川贝母,胆南星,甘草,红花,红曲,化橘红,鸡血藤,姜半夏,全蝎,桑枝,石菖蒲,酸枣仁,桃仁,郁金,远志,竹茹,茯苓 |
请根据患者的症状信息进行中医处方推荐。心悸,气短,头晕,目眩,失眠,健忘,面色无华,倦怠,乏力,纳呆,食少,舌淡,舌红,脉细,脉弱,阳虚而汗出肢冷 | 人参,黄芪,麦冬,枸杞子,熟地黄,当归,白术,茯苓,陈皮,天麻,龙骨,牡蛎,酸枣仁,远志,丹参,川芎,生姜,大枣 | 黄芪,桂枝,白芍,生姜,大枣 | 黄芪,白术,当归,茯神,酸枣仁,远志,龙眼肉,炙甘草,木香,大枣 | 白术,当归,茯神,炙黄芪,龙眼肉,远志,酸枣仁,木香,炙甘草,人参,生姜,大枣 |
请根据患者的症状信息进行中医处方推荐。小便黄赤,小便灼热,尿血,心烦,口渴,面赤,口疮,夜寐不安,舌质红,脉数,尿血较甚 | 黄柏,泽泻,车前草,丹参,金银花,生地黄,丝瓜络,玄参,天花粉,茯苓,甘草 | 黄连,黄芩,黄柏,萆薢,萹蓄,瞿麦,滑石,甘草 | 小蓟,地黄,滑石,木通,蒲黄,藕节,淡竹叶,黄芩,甘草 | 小蓟,地黄,滑石,木通,蒲黄,藕节,淡竹叶,当归,栀子,甘草 |
请根据肺病患者的症状信息进行中医处方推荐。大便困难,水肿,有喘息中,痛苦面容,气短,双侧鼻腔通畅,鼻翼煽动,皮肤未见出血点及蜘蛛痣,胸闷,双输尿管压痛点无明显压痛,肺部叩诊清音,咳嗽,头颅无压痛,腰酸,可闻及干湿性啰音,心脏震颤,纳差,咳痰,气喘,易感冒,下肢酸胀,头晕,尿频,精神不振,双肺呼吸音粗 | 杏仁,瓜蒌,桔梗,苏叶,葶苈子,半夏,黄芩,生甘草,川贝母,白芍,制附子 | 葶苈子,大枣,桑白皮,杏仁,黄芩,党参,甘草,猪苓,茯苓,泽泻,黄芪,桂枝,白芍,生姜,白术,炙甘草,当归,升麻,柴胡 | 桑白皮,茯苓,陈皮,山药,半夏,紫菀,苦杏仁,地龙,白前,白果仁,瓦楞子,桔梗,款冬花,贝母,前胡,麻黄,射干,甘草,罂粟壳,黄芪,百部 | 桑白皮,山药,陈皮,半夏,黄芩,紫菀,苦杏仁,地龙,白前,白果仁,桔梗,款冬花,贝母,前胡,麻黄,射干,甘草,百部 |
请根据肺病患者的症状信息进行中医处方推荐。双肺呼吸音粗,气喘,眠差,严重影响休息及日常活动,呼吸困难,咳嗽,胸闷,咳痰 | 桔梗,杏仁,炙甘草,生姜片,麻杏,石膏,黄连,黄芩,陈皮,干姜 | 黄芪,党参,白术,茯苓,甘草,当归,陈皮,半夏,枳壳,杏仁,黄芩,黄连,石膏,知母,杏仁,桑白皮,葶苈子,地骨皮,芦根,百部,款冬花,地骨皮,五味子,川贝母 | 桑白皮,陈皮,半夏,黄芩,紫菀,苦杏仁,瓜蒌,白前,桔梗,款冬花,贝母,前胡,麻黄,射干,金荞麦,甘草,罂粟壳,百部 | 桑白皮,陈皮,半夏,黄芩,紫菀,苦杏仁,瓜蒌,地龙,白前,白果仁,桔梗,款冬花,贝母,前胡,麻黄,射干,金荞麦,甘草,百部 |
请根据肝病患者的症状信息进行中医处方推荐。乏力,腹胀,肝区不适,倦怠,纳差,身目尿黄,小便深黄 | 柴胡,白芍,泽泻,枳实,甘草 | 黄连,黄芩,白术,茵陈,板蓝根,猪苓,泽泻,枸杞子,女贞子,菊花,生地黄 | 牡蛎,莪术,薏苡仁,郁金,连翘,瓦楞子,鸡内金,丹参,半枝莲,白花蛇舌草,鳖甲 | 郁金,瓦楞子,地丁,槟榔,车前子,薏苡仁,莪术,丹参,连翘,茵陈,鳖甲,牡蛎,赤芍 |
请根据脾胃病患者的症状信息进行中医处方推荐。反酸,嗳气,烧心,胃痛,时胃胀,胃寒,大便调,午后易饥饿,入睡困难,做梦,乏力,情绪急躁,易上火,易感冒,畏风,畏寒,舌胖,质淡暗,苔薄白腻,脉沉细 | 人参,白术,茯苓,砂仁,甘草,大枣,陈皮,枳壳,泽泻,莱菔子,丹皮,苍术,草果,山楂,木香,香附,附子(煅),干姜,大茴 | 苍术,厚朴,陈皮,半夏,黄连,黄芩,生姜,大枣,附子,肉桂 | 柴胡,白芍,陈皮,法半夏,浙贝母,海螵蛸,枳壳,党参,生白术,当归,甘草,生龙骨,生牡蛎,珍珠母,白花蛇舌草,醋三棱,醋莪术,半枝莲,三七,旋覆花,煅赭石 | 醋三棱,醋莪术,半枝莲,半边莲,藤梨根,旋覆花,煅赭石,甘草,柴胡,白芍,赤芍,陈皮,法半夏,浙贝母,煅瓦楞子,海螵蛸,枳壳,党参,生白术,桂枝,生龙骨,生牡蛎,黄连,当归,合欢皮,合欢花,天花粉,生地黄,黄芪,防风,白花蛇舌草,川芎 |
请根据脾胃病患者的症状信息进行中医处方推荐。大便不成形年;服药后症状改善不明显,现大便不成形,日次,质黏,粘马桶,进食时腹痛,腹胀减轻,排气减少,晨起恶心好转,近日腹泻未作,腹部畏寒同前,乏力减轻,纳欠佳,无食欲,睡眠可,小便正常,急躁易怒 | 炙甘草,干姜,白术,茯苓,半夏,陈皮,枳壳,泽泻,荷叶,薏苡仁,大腹皮,麦芽 | 党参,白术,茯苓,甘草,砂仁,桔梗,薏苡仁,莲子,扁豆,山药,苍术,厚朴,陈皮,半夏,生姜,大枣,枳壳,吴茱萸,干姜,灸甘草,当归,川芎,肉桂 | 马齿苋,山药,白芍,北柴胡,芡实,陈皮,麸炒白术,茯苓,防风,乌梅,当归,麸煨肉豆蔻,麸炒芡实,五味子,炙甘草,北败酱草,诃子,盐补骨脂,炒麦芽 | 砂仁,醋延胡索,赤石脂,茯苓,法半夏,胡黄连,马齿苋,诃子,芡实,麸炒白术,北败酱草,当归,菊花,陈皮,麸神曲,川芎,山药,五味子,白芍,盐补骨脂,麸煨肉豆蔻,蝉蜕,炒麦芽,炒白扁豆,木香,炙甘草,炒鸡内金,枸杞子,炒僵蚕,乌梅,防风,黄芪 |
请根据糖尿病患者的症状信息进行中医处方推荐。上肢麻木加重,皮肤瘙痒不变,舌苔白,舌苔薄,舌淡,舌暗 | 黄芪,桂枝,白术,川芎,熟地,五味子,生姜,大枣 | 黄芪,党参,大枣,萆薢,黄柏,茯苓,泽泻,麻黄,附子,细辛,当归,川芎,桃仁,红花,羌活,防风,藁本,细辛 | 干姜,黄连,黄芩,太子参,桑叶,桑枝,天花粉,乌梅 | 干姜,黄连,黄芩,太子参,桑叶,桑枝,天花粉,鸡血藤,夜交藤,知母,葛根,乌梅 |
请根据糖尿病患者的症状信息进行中医处方推荐。怕冷,苔白,脉数,脉弦,舌红 | 人参,白术,茯苓,甘草,附子,干姜 | 人参(或党参),白术,茯苓,炙甘草肉桂,附子(先煎),姜半夏,泽泻,苡仁,陈皮,黄连,黄芩,白扁豆,山药 | 黄芪,桂枝,鸡血藤,夜交藤,甘草,白芍 | 鸡血藤,白芍,黄芪,黄连,知母,桂枝,夜交藤,甘草 |
注:
- 在测试ChatGPT、通义千问模型时,是从结果中将处方的药物手动提取出来,以方便模型对比。
- 文本加粗的为正确药物(与医生一致)。
Dataset | Method | P@5 | R@5 | F1@5 | P@10 | R@10 | F1@10 | P@20 | R@20 | F1@20 |
---|---|---|---|---|---|---|---|---|---|---|
CMCC | PTM(d) | - | - | - | - | - | - | - | - | - |
TCMPR | 0.3098 | 0.1314 | 0.1845 | 0.2531 | 0.2116 | 0.2305 | 0.1868 | 0.3085 | 0.2327 | |
TCMLLM-PR | 0.2678 | 0.1128 | 0.1537 | 0.2219 | 0.1864 | 0.1956 | 0.1270 | 0.2127 | 0.1541 | |
CHP | PTM(d) | 0.2044 | 0.1019 | 0.1360 | 0.1751 | 0.1784 | 0.1767 | 0.1385 | 0.2889 | 0.1872 |
TCMPR | 0.1545 | 0.0719 | 0.0982 | 0.1237 | 0.1205 | 0.1221 | 0.1097 | 0.2264 | 0.1477 | |
TCMLLM-PR | 0.3632 | 0.2508 | 0.2642 | 0.2804 | 0.3489 | 0.2818 | 0.1593 | 0.3771 | 0.2064 | |
Diabetes | PTM(d) | 0.4835 | 0.2549 | 0.3338 | 0.3892 | 0.4132 | 0.4008 | 0.2897 | 0.6118 | 0.3932 |
TCMPR | 0.4648 | 0.2460 | 0.3217 | 0.3788 | 0.4026 | 0.3903 | 0.2802 | 0.5935 | 0.3807 | |
TCMLLM-PR | 0.3548 | 0.1880 | 0.2420 | 0.2652 | 0.2786 | 0.2671 | 0.1358 | 0.2852 | 0.1812 | |
Liver | PTM(d) | 0.5753 | 0.1560 | 0.2454 | 0.4765 | 0.2554 | 0.3326 | 0.3853 | 0.4045 | 0.3947 |
TCMPR | 0.5531 | 0.1487 | 0.2343 | 0.4536 | 0.2427 | 0.3162 | 0.3754 | 0.3946 | 0.3847 | |
TCMLLM-PR | 0.3876 | 0.1037 | 0.1572 | 0.3291 | 0.1751 | 0.2179 | 0.2579 | 0.2705 | 0.2505 | |
Lung | PTM(d) | 0.5827 | 0.1700 | 0.2632 | 0.5086 | 0.2949 | 0.3733 | 0.4083 | 0.4726 | 0.4381 |
TCMPR | 0.5890 | 0.1716 | 0.2657 | 0.5119 | 0.2967 | 0.3756 | 0.4114 | 0.4761 | 0.4414 | |
TCMLLM-PR | 0.3750 | 0.1082 | 0.1671 | 0.3138 | 0.1809 | 0.2279 | 0.2991 | 0.3457 | 0.3183 | |
ISGP | PTM(d) | 0.3822 | 0.2113 | 0.2722 | 0.3071 | 0.3415 | 0.3234 | 0.2179 | 0.4810 | 0.2999 |
TCMPR | 0.4950 | 0.3038 | 0.3765 | 0.4183 | 0.4838 | 0.4487 | 0.2803 | 0.6314 | 0.3883 | |
TCMLLM-PR | 0.7378 | 0.4356 | 0.5283 | 0.5786 | 0.6448 | 0.5914 | 0.3138 | 0.6808 | 0.4180 | |
SSD | PTM(d) | - | - | - | - | - | - | - | - | - |
TCMPR | 0.7150 | 0.1562 | 0.2564 | 0.6286 | 0.2732 | 0.3809 | 0.5166 | 0.4453 | 0.4783 | |
TCMLLM-PR | 0.5371 | 0.1139 | 0.1866 | 0.4351 | 0.1842 | 0.2562 | 0.3494 | 0.2937 | 0.3155 | |
Stroke | PTM(d) | 0.6440 | 0.2133 | 0.3204 | 0.5353 | 0.3513 | 0.4242 | 0.4187 | 0.5476 | 0.4746 |
TCMPR | 0.5783 | 0.1903 | 0.2863 | 0.5085 | 0.3335 | 0.4028 | 0.4084 | 0.5344 | 0.4630 | |
TCMLLM-PR | 0.3528 | 0.1140 | 0.1714 | 0.3770 | 0.2444 | 0.2946 | 0.3090 | 0.3999 | 0.3463 | |
Mixed | PTM(d) | - | - | - | - | - | - | - | - | - |
TCMPR | 0.4921 | 0.1547 | 0.2354 | 0.4243 | 0.2626 | 0.3244 | 0.3399 | 0.4133 | 0.3731 | |
TCMLLM-PR | 0.3933 | 0.1300 | 0.1870 | 0.3243 | 0.2111 | 0.2437 | 0.2488 | 0.3033 | 0.2622 |
注:基线模型为: 1) PTM(一种基于主题模型的处方推荐算法, Yao et al. TKDE 2018); 2) TCMPR(一种基于症状术语映射与深度学习的中医处方推荐算法, Dong et al. BIBM 2021)
Dataset1 | Dataset2 | P@5 | R@5 | F1@5 | P@10 | R@10 | F1@10 | P@20 | R@20 | F1@20 |
---|---|---|---|---|---|---|---|---|---|---|
CHP | Stroke | 0.1123 | 0.0364 | 0.0546 | 0.0959 | 0.0619 | 0.0746 | 0.0632 | 0.0821 | 0.0707 |
Liver | 0.1794 | 0.0455 | 0.0704 | 0.1608 | 0.0820 | 0.1048 | 0.0987 | 0.1007 | 0.0958 | |
SSD | 0.2871 | 0.0596 | 0.0980 | 0.2175 | 0.0901 | 0.1262 | 0.1290 | 0.1068 | 0.1155 | |
ISGP | Stroke | 0.1918 | 0.0619 | 0.0930 | 0.1550 | 0.0997 | 0.1204 | 0.0831 | 0.1072 | 0.0929 |
Liver | 0.2990 | 0.0800 | 0.1225 | 0.2338 | 0.1232 | 0.1551 | 0.1232 | 0.1296 | 0.1209 | |
SSD | 0.2487 | 0.0520 | 0.0853 | 0.1918 | 0.0795 | 0.1112 | 0.1017 | 0.0840 | 0.0908 |
本项目由北京交通大学计算机与信息技术学院医学智能团队田昊宇、董鑫、徐宽、花睿、赵辰羲、王鸿燕、叶明蔚和胡敏杰等完成,项目负责人为杨扩和周雪忠老师。另外,感谢多家合作单位提供的医疗数据。
本项目参考了以下开源项目,在此对相关项目和研究开发人员表示感谢。
- ChatGLM-6B: https://github.com/THUDM/ChatGLM-6B
- Facebook LLaMA: https://github.com/facebookresearch/llama
- Stanford Alpaca: https://github.com/tatsu-lab/stanford_alpaca
- Huatuo: https://github.com/SCIR-HI/Huatuo-Llama-Med-Chinese
本项目相关资源仅供学术研究之用,严禁用于商业用途。使用涉及第三方代码的部分时,请严格遵循相应的开源协议。模型生成的内容受模型计算、随机性和量化精度损失等因素影响,本项目无法对其准确性作出保证。本项目数据集绝大部分由模型生成,即使符合某些医学事实,也不能被用作实际医学诊断的依据。对于模型输出的任何内容,本项目不承担任何法律责任,亦不对因使用相关资源和输出结果而可能产生的任何损失承担责任。
如果你使用了本项目的数据或者代码,请声明引用
@misc{alpaca,
author={Xuezhong Zhou,Kuo Yang,Haoyu Tian,Xin Dong,Kuan Xu,Rui Hua},
title = {TCMLLM},
year = {2023},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/2020MEAI/TCMLLM}},
}