数据来源
数据源于临床的鼻炎患者医案,一共选择了1081份详尽的临床记录进行实验。这些宝贵的医案涵盖了患者的多项基础信息,包括姓名、工作场所、性别、年龄、确诊时间、疾病类型、症状细节、诊断结果、舌象与脉象的观察、治疗记录、处方内容以及用药指导等。
在构建知识图谱的过程中,面临着提高知识抽取效率和降低人力成本的双重挑战。为了有效地解决这些问题,本文在模式层构建的基础上,深入探索了自动化知识抽取的方法,如图所示,接下来将详细介绍国医大师干祖望治疗鼻炎的知识图谱构建流程。
知识图谱构建流程图
Step1:准备样本数据。将经过数据预处理的 1081 条医案数据作为样本数据。
Step2:定义抽取目标。根据定义的本体构建的知识图谱模式层设定抽取目标,如疾病、相关疾病、症状、检查、舌象、脉象、配伍等关键信息,针对抽取目标类型,只能定抽取规则。
Step3:自动抽取知识。根据定义的抽取目标制定 Prompt 提示模板,采用“示范案例+关系列表”的提示模板引导大语言模型对医案数据进行自动化抽取,生成三元组。
以下是一个具体的 Prompt 示例:
“假如你是一个中医的关系抽取大语言模型,对鼻炎患者的症状和相关疾病进行关系抽取,抽取医案示范:“鼻炎近来密帘三天,弊病当然发作,涕多,涕难擤。头痛。鼻塞。鼻粘膜水肿,有分泌物。舌薄苔,脉浮紧。桑叶6g,薄荷6g,桔梗6g,石菖蒲6g,路路通10g,荆芥6g,白芷6g,苍耳子10g,金荞麦10g,蔓荆子10g。”。输出格式为[(“鼻炎”,“症状”,“涕多”),(“鼻炎”,“症状”,“涕难擤”),(“鼻炎”,“症状”,“头痛”),(“鼻炎”,“症状”,“鼻塞”),(“鼻炎”,“检查”,“鼻粘膜水肿”),(“鼻炎”,“检查”,“有分泌物”),(“鼻炎”,“舌象”,“舌薄苔”),(“鼻炎”,“脉象”,“脉浮紧”),(“鼻炎”“配伍”,“石菖蒲6g”),(“鼻炎”,“配伍”,“路路通10g”),(“鼻炎”,“配伍”,“荆芥6g”),(“鼻炎”,“配伍”,“白芷6g”),(“鼻炎”,“配伍”,“苍耳子10g”),(“鼻炎”,“配伍”,“金荞麦10g”),(“鼻炎”,“配伍”,“蔓荆子10g”)],学习上述抽取格式,抽取下列病案,以三元组格式输出,给定的句子为:“***”。给定关系列表:[‘症状’, ‘相关疾病’, ‘配伍’, ‘舌象’, ‘检查’, ‘脉象’],请给出关系列表中的关系。如果不存在则输出:无。
Step4:清洗抽取结果。利用正则表达式对自动化抽取生成的三元组数据进行清洗,去除错误、冗余、不相关和不完整的三元组,确保数据的准确性和可靠性。
Step5:存储三元组。将最终获取到的三元组数据存储到 NebulaGraph 数据库中。
在利用大语言模型抽取知识的过程中,为了保证其可靠性,本文直接将疾病和中药抽取成对应的三元组,在写入知识图谱的过程中进一步分解,保证图谱的合理性。同时在利用大语言模型抽取知识的过程中将中药实体及属性联合抽取,如某一个鼻炎患者的处方中,金荞麦的剂量10g抽取为(“鼻炎”,“配伍”,“金荞麦10g”)。本文在存储三元组之前,利用正则表达式对实体和对应属性进一步抽取。例如(“鼻炎”,“配伍”,“金荞麦10g”)抽取为(“鼻炎”,“配伍”,“金荞麦”)和(“金荞麦”,“剂量”,“10g”),在下文中具体展示构建的知识图谱。
NebulaGraph 作为一款高性能、用户友好的图数据库,以其出色的特性和广泛的应用场景,为研究者提供了一种全新的方式来探索和分析数据[18]。NebulaGraph 内置了图查询语言 nGQL,为用户提供了丰富的图操作功能。无论是基础的节点和边的增删改查,还是复杂的图算法和路径查询,nGQL 都能轻松应对[33]。这种灵活性和强大的功能使得 NebulaGraph 成为处理复杂网络结构和发挥医案数据的最大价值的理想选择,方便后续的分析和应用。
算法伪代码
构建提示模板,相关案例和关系列表
编写连接 NebulaGraph 的函数
for i :=0 to N do //遍历医案数据
将数据和模板生成问题
将问题传给LLM,获得对应的答案
清洗答案,删除不必要的三元组
构建当前医案的患者、检查、症状、处方的id
for j:= 0to M do //遍历三元组列表
if relation'=="配伍”:
判断·三元组中的中药是否包含剂量单位属性,有的话,进行属性抽取,将抽取结果写入图谱。
Else:
直接写入图谱。
end for
end for
实验
本文以前期准备的353条医案作为基础样本,并利用大语言模型进行知识抽取实验。在实验过程中,本文采用其他大语言模型进行数据标注,然后采取人工校对的方式,对标注结果进行验证和修正,以确保标注数据的准确性和可靠性,以此评价各个模型的知识抽取性能。本文选择Bert-BiLSTM-CRF模型作为基准模型进行实体关系联合抽取,并将Bert-BiLSTM-CRF模型与大语言模型自动化抽取的结果进行比较,本文选取的大语言模型主要有GLM3、GLM4、ChatGPT4。本文采用的评估指标包括F1分数、准确率和召回率,实验结果如表所示。
模型 | F1分数 | 准确率(P) | 召回率(R) |
---|---|---|---|
Bert-BiLSTM-CRF | 81.97% | 80.16% | 83.87% |
GLM3 | 48.33% | 48.78% | 47.89% |
GLM4 | 81.68% | 82.57% | 80.82% |
ChatGPT4 | 82.75% | 82.98% | 82.52% |
知识图谱展示与数据挖掘
本文利用构建的知识图谱,分析挖掘国医大师治疗鼻炎的用药规律,如治疗狂嚏症状用药频率的前10位。MATCH (v:患者
)-[:患者症状
]->()-[:具体症状
]->(v1) where id(v1)==‘狂嚏’
MATCH (v:患者
)-[:治疗方剂
]-(v3)-[e2:配伍
]->(v4) RETURN v4,count(v4) as cnt ORDER BY cnt DESC limit 10;上述语句查询具有狂涕症状的患者,再获取患者的治疗方剂,根据配伍中的用药频次进行排序,获取前10味药。结果如图所示,用药前10味分别为蝉蜕、防风、墨旱莲、甘草、地龙、黑豆衣、诃子、白术、茜草、黄芪。