摘要 目的/意义 采集和处理经方医案数据,为中医智能诊疗模型提供高质量训练数据。方法/过程 构建中医经方医案数据采集与处理框架,提出针对网页、纸质文献、电子病历、已有数据库的经方医案数据采集、清洗、相似度检测方法。结果/结论 共获得有效经方医案数据12 499条,为下游中医智能诊疗模型训练奠定基础。该经方医案数据采集和处理方法,可为中医药领域大数据处理提供参考。
关键词:
医案
数据集
人工智能
中医药
近年来,人工智能技术发展迅速,在中医药领域广泛应用,如中医四诊、辨证诊断、处方推荐、中药识别等方面研究 [1-5] ,以及中医智能诊疗系统与设备研制 [6-8] 。中医诊疗大数据是中医智能诊疗研究的重要基础,然而其建设工作没有得到足够重视,已有数据集数据量较小,缺乏高质量、开放共享的数据集,制约了人工智能技术在中医智能诊疗领域的应用与发展。中医诊疗领域拥有数千年临床医案和海量医院电子病历数据,但这些数据来源多样,且呈现非结构化、半结构化特征,只有经过采集、清洗、融合等处理后,才能满足人工智能模型训练的需求。本研究针对中医智能诊疗研究所需经方医案,提出针对网页、纸质文献、电子病历及已有医案库的经方医案数据采集、数据清洗、医案分割、相似度检测方法,开发经方医案校对工具,为中医药数据集构建奠定基础并提供参考。
早期中医医案数据采集与整理研究主要集中于医案数据库建设,建立了“新安医案数据库”“中医历代医案数据库”等 [9] 。早期医案数据获取方式以手工整理为主,医案数据量偏小,且大部分医案数据库没有共享发布。随着人工智能技术的发展,对于数据量有了更高的要求,医案数据获取方式转向自动化采集。朱彬等 [10] 针对传统医案采集效率低、形式单一、整理和分析困难等问题,提出一种多媒体医案采集移动平台。针对中医药网站信息爬取中数据结构化程度低且信息维度高的问题,章亚东等 [11] 提出基于网络爬虫的名老中医医案数据采集与清理算法。在系统化采集方面,韦昌法等 [12] 提出中医数字辨证配套医案智能采集与分析系统,实现医案采集、医案展示、医案检索、数据统计分析及可视化等功能;马亚楠等 [13] 设计开发用于中医智能诊疗的信息采集系统,支持患者四诊数据采集并存储为医案,同时获得可用于智能诊疗算法训练与验证的数据集。针对医案数据管理与校对,中国中医科学院中医药信息研究所 [14] 开发了包含名医信息管理、临床医案导入、数据标准化、医案数据管理、医案数据分析、数据字典管理模块的中医名医医案分析系统,并迭代升级为“古今医案云平台”,在中医行业具有较大影响力。基于该平台,于琦等 [15] 利用大数据和机器学习方法构建中医医案语音识别模型,支持中医临床信息实时采集。中医医案数据获取逐步发展到应用网络爬虫、光学字符识别(optical character recognition,OCR)等技术的自动采集模式,出现了一批可用于医案展示、分析、管理的系统平台。但在数据集方面,中医诊疗领域缺乏高质量、公开共享的开放数据集,也缺乏从数据采集到融合处理完整过程的方法共享。
经方医案数据采集与处理框架由数据源选定、数据采集、数据处理、系统工具4部分组成,见 图1 。本研究将经方限定为张仲景《伤寒论》《金匮要略》中出现的方剂,经方医家限定为伤寒流派医家,古代如许叔微、陈修园、徐灵胎,近代如陆渊雷、曹颖甫,当代如胡希恕、刘渡舟等。中医历史发展特征决定了高疗效医案主要保存于纸质书籍中,也有部分医案经过整理发布于互联网,本研究数据采集对象以纸质医案数据为主,以网页和已有医案库中数据为辅。因电子病历类医案难以确定真实疗效,仅提供采集思路,未予正式采集。
3.2.1 网页经方医案数据采集 网页经方医案数据采集包含发起超文本传输协议(hypertext transfer protocol,HTTP)请求、获取地址列表、解析网页内容、提取医案数据、保存医案数据5个步骤,采用Python语言编写程序。在前两步利用Requests进行HTTP请求以解析并获取待访问医案的统一资源定位符(uniform resource locator,URL)。在第3步对URL列表循环遍历,采用Selenium驱动浏览器访问网页医案内容。当目标网站具有较强反爬机制时,多次分批采集,将已经爬取过、访问异常的URL记录入库,在后续爬取中忽略被记录的URL。在第4步根据网页标签内容解析并提取所需结构化医案数据内容。在第5步将结构化数据保存入数据库。以“360个人图书馆”中“经方医案”栏目为爬取目标,共爬取URL记录1 799条,其中爬取异常记录23条、爬取失败记录150条,最终采集经方医案数据1 626条。
3.2.2 纸质经方医案数据采集 纸质书籍中的医案经过医家筛选首肯、编辑校对,具有治疗效果突出、数据质量可靠的特点,是经方采集的重点对象。采用百度智能OCR应用程序编程接口(application programming interface,API)进行纸质医案数据采集。采集过程分为经方医案书籍扫描、图片PDF书籍生成、OCR识别、文本电子书籍生成、结构化提取、存储数据入库6个步骤。前两个步骤需手工处理,后4个步骤通过程序算法自动化采集,参考既有研究 [15] 使用经方医案书籍体例模板优化相关算法。选取《经方实验录》《刘渡舟验案精选》《胡希恕医论医案集粹》《伤寒方历代治案》《伤寒名医验案精选》《伤寒论方医案集》《伤寒论方医案选编》《金匮方百家医案评议》《金匮名医验案精选》《国医大师经方验案精选》共10本经方医案纸质书籍,采用CZUR ET16设备快速扫描书籍并保存为PDF格式。每本医案书籍体例格式有所不同,预先提取其体例模板特征,通过算法提取结构化数据。根据目标书籍共性特点及后续研究需要,提取“方剂”“证型”“医案”“医案和按语”“方药”“提取的方药”“用法”“原文”“解说”“来源”“医家”共11种属性,存储于CSV文件中。从10本纸质书籍中共提取经方医案数据3 092条。
3.2.3 电子病历经方医案数据采集 电子病历是结构化数据,采集方式相对简单,可通过电子病历系统开放式API或数据库接口直接采集,只需解决数据库字段内容转换与合并问题。考虑到电子病历中数据质量问题以及疾病临床疗效评价的复杂性,本研究谨慎使用电子病历数据。
3.2.4 已有医案库中经方医案数据采集 以本团队历年积累的医案资源库作为补充,扩展可用经方医案数据量。提取思路为:建立经方方剂名称索引列表,依据索引对库中数据进行二重遍历,提取文本中含有经方方剂名称的医案并进行内容解析,提取所需结构化数据,并保存为CSV文件,待后期融合处理。该医案库中大部分数据为时方医案,需从中提取经方医案。医家在治疗过程中有时会使用经方与时方相结合的合方,因为下游智能诊疗模型目标标签中不包含时方,所以只保留经方与合方医案数据。利用正则表达式循环遍历经方方剂名称索引列表,采用最长匹配模式,避免出现错误结果。在二重循环遍历全部医案数据后,经方方名共出现17 218次,得到经方医案数据10 894条,剔除空值后获得经方医案数据9 357条。
医疗领域数据质量尤为重要,本研究通过数据清洗保证数据的完整性、一致性;通过相似度检测去除重复医案,保证数据的唯一性;通过医案分割、人工校对确保医案数据的准确性。
3.3.1 数据清洗 数据清洗是对数据进行重新审查和校验的过程,主要包括重复值删除、缺失值处理、异常数据处理等。重复值删除即删除出现重复内容的医案。由于采集源不同,同一则医案在出版、发布过程中可能有少许改动,需结合相似度检测算法判定重复度,再删除重复数据。缺失值处理是判断医案数据中是否存在空值,空值为非法记录,应删除。异常数据处理主要是对医案内容的合法性进行判断,如医案内容过短,则属于属性采集错误,应删除。
3.3.2 相似度检测 重复数据会影响下游模型训练效果,应剔除经方医案中的重复数据。采用在医学文本相似度分析中表现优秀的余弦相似度来计算医案文本的相似性。其主要思想是,将医案文本分割为 个连续字符的片段(n-gram片段),然后比较这些序列的重合度,计算方式如下。其中 、 表示两个医案文本语言片段集合, [
{
"name": "text",
"data": "i"
}
] , [
{
"name": "text",
"data": "i"
}
] 分别表示 、 对应的语言片段, 是两个医案文本语言片段集合的交集,表示两个文本的相似性。 dif , dif 分别表示 、 中没有进行匹配的语言片段, 表示没有匹配语言片段集合的大小。
医案文本相似度检测流程为:提取医案内容存入列表,循环抽取列表中文本的所有n-grams,使用Hash函数映射到0— 之间的整数( 为医案内容向量的维度),并使医案内容向量归一化,设 取值为5(医案文本中重复出现的词汇较多, 值不宜过小,此处取常见词汇的两倍长),文档总长度取值为5 000(取医案文本长度最大值整数);循环计算各分割语言片段之间的余弦相似度,将结果保存为CSV文件;遍历CSV中相似度数据,相似度大于等于0.95、0.90、0.85、0.80、0.75、0.70、0.65、0.60的成对医案数量统计结果,见 表1 。对不同段的成对医案进行人工抽样比对,发现相似度大于等于0.90的医案属于不同来源的重复医案。因此,确定0.90为两个医案相似度阈值,剔除相似度大于等于0.90的医案102条。
3.3.3 经方医案分割与人工校对 分析所采集的经方医案发现,近现代医案具有多诊次特点。一般而言,每诊医案对应一组诊断结果、处方用药等标签是比较合理的记录。如果多诊信息混合对应一组标签,将影响下游模型训练的准确性,因此要对多诊次医案进行分割。此外,医家首诊医案信息记录较为详细,二诊、三诊信息记录仅提到症状减轻或加重,因此仅收集分割后的首诊经方医案数据作为下游模型训练数据。针对本研究数据处理和人工校对涉及的常用功能,开发包含医案筛选、医案分诊分割、症状、主诉、疾病、证型、方剂、中药等校对功能的软件平台。“新增分诊医案”功能将原医案按照诊次进行拆分,包含病史、症状、诊断、处方用药等信息;为方便校对症状,纳入《中医临床症状术语规范修订版》中2 088条症状记录,便于快速检索对应症状;为方便校对方剂及其对应中药,纳入《伤寒论》《金匮要略》《方剂学》中对应的方剂名称及其对应中药,输入部分字符可快速检索对应方剂,选中方剂后可在“方剂对应中药”框中自动呈现中药内容;软件工具具有新增、删除、修改和查询上一诊、下一诊分诊医案的功能。
通过对网页、纸质书籍、已有医案库进行经方医案数据采集,得到14 075条经方医案数据,经过上述清洗、分割、相似度检测等数据预处理,并使用经方医案校对工具进行人工校对,最终获得12 449条经方医案数据。预处理前,部分医案文本长度超过3 000字符,最长达17 609字符。预处理后,绝大部分医案文本长度在2 600字符以内,为正常医案记录长度。
12 449条医案数据中共有经方方剂358方(包含合方),大部分经方方剂对应的医案数量在50个以下,少量在150个以上,医案数量最多的20个经方方剂及其医案数量,见 图2 。在所有经方中,以理中汤为主方的医案数量最多(有615则),其次分别是小柴胡汤、白虎汤、桂枝汤、五苓散等。处方频次与经方在临床中的使用习惯比较吻合,一定程度上反映了医案数据采集的有效性。经方方剂对应医案数量占比分布,见 图3 ,分布中心点落在30~50个之间,说明绝大部分经方方剂有比较充分的样本。
4.2.1 选择高可信度数据源作为采集目标 在公开出版的中医书籍中,医案经过作者的深入整理和后人的临床实践,具有最高的可信度,但其采集难度、成本也最高;网页公开医案数据大部分来源于已出版书籍、文献,可信度次之,采集难度较纸质文献低,但查询信息的时间成本较高;医院电子病历数据多为结构化数据,采集难度最低,但因临床疗效评价复杂,人工确认成本较高;为获得更多医案数据,已有医案数据库也可作为数据来源,其数据可信度要根据具体情况分别对待。
4.2.2 重视人工校对,提升数据质量 医学领域具有特殊性,对医案准确性要求较高,低质量医案数据将严重影响下游智能诊疗模型的训练效果。目前医案数据质量有待提升,虽然技术手段能辅助发现、处理部分问题,但人工校对依然是提升医案数据质量的重要途径。
4.2.3 加强技术人员中医学专业能力 开展中医医案数据采集,技术人员须具备一定中医学专业知识,在数据采集与处理过程中能从容解决一些非技术原因导致的问题,将有助于提升数据采集与处理效率。
4.2.4 仅用首诊医案数据的可行性及弊端 首诊医案记录详细、续诊医案记录简单是近现代医案的显著特征。首诊医案中含有丰富的症状、体征信息,是学习训练的良好素材。中医主要是对证治疗,如复诊时症状减轻,可视为首诊具有有效性。仅使用首诊医案数据而忽略后续治疗信息,无法反映疾病在治愈过程中的时序递进关系和前后诊次的因果关系。因此,多诊次医案的时序关系值得进一步探索。
4.2.5 数据采集异常值分析 本研究中异常值主要出现在纸质医案提取中,少量医案内容过短。通过对比发现问题集中于《伤寒论方医案选编》和《金匮方百家医案评议》。二者出版年代久远并采用铅版印刷,部分字体存在浓淡、变形、残缺等问题,通过模板提取容易产生错位分割,导致出现异常值。因此,原始书籍版本选择非常重要,如果所选版本确实存在问题,可在OCR识别后对文本数据模板的提要信息进行初步校对,以降低异常发生概率。
医案数据是智能诊疗模型训练的基础,本研究提出针对纸质文献、网页、电子病历、已有医案库的经方医案数据采集方法,共采集经方医案数据14 075条。为了提升数据质量,采用医案数据清洗、相似度检测等方法,对原始数据进行预处理,最终获得经方医案数据12 449条。通过医案文本长度与医案数量、经方方剂与医案数量分析,验证本研究预处理方法以及所获得经方医案数据的有效性,可为下游智能诊疗模型训练提供可靠数据。
作者贡献 :文志华负责经方医案数据采集、处理与分析,论文撰写;张龙信负责经方医案校对工具构建;刘青萍、肖莉、夏帅帅负责经方医案校对;晏峻峰负责研究设计、提供指导。