基于 NebulaGraph 与大语言模型构建中医药鼻炎知识图谱
背景与目标
在构建中医药领域的知识图谱过程中,面临着提高知识抽取效率和降低人力成本的双重挑战。传统的人工标注方式耗时耗力,难以应对海量的临床医案数据。为了解决这些问题,本文探索了利用大语言模型(LLM)技术进行自动化知识抽取的方法,并结合高性能图数据库 NebulaGraph 构建结构化的知识网络。
本文以国医大师干祖望治疗鼻炎的临床医案为例,详细介绍从非结构化文本到结构化知识图谱的完整构建流程,旨在挖掘名医用药规律,助力中医药领域的数字化创新。
数据来源与预处理
数据概况
本文选取的数据源于真实的临床鼻炎患者医案,共计 1081 份详尽的临床记录。这些宝贵的医案涵盖了患者的多项基础信息,包括姓名、工作场所、性别、年龄、确诊时间、疾病类型、症状细节、诊断结果、舌象与脉象的观察、治疗记录、处方内容以及用药指导等。
隐私保护与清洗
在数据进入处理流程前,所有涉及患者个人隐私的信息(如真实姓名、联系方式等)均已进行脱敏处理,仅保留诊疗相关的医学特征数据,确保符合数据安全规范。
知识图谱构建流程
Step 1:本体层设计与模式定义
在构建图谱之前,首先需要定义本体层(Schema Layer),明确节点类型和边关系。针对中医鼻炎诊疗场景,我们设计了以下核心实体与关系:
-
顶点类型 (Vertices):
Patient(患者):包含年龄、性别等属性。Disease(疾病):如鼻炎、过敏性鼻炎等。Symptom(症状):如鼻塞、流涕、喷嚏等。Herb(中药):如蝉蜕、防风、甘草等。Prescription(方剂):具体的处方名称或组合。
-
边类型 (Edges):
Has_Symptom(患症):连接患者与症状。Treats(治疗):连接医生/方剂与疾病。Contains_Herb(含药):连接方剂与中药。Has_Dosage(剂量):连接中药与具体用量。
Step 2:定义抽取目标
根据定义的本体构建的知识图谱模式层设定抽取目标。关键信息包括疾病、相关疾病、症状、检查、舌象、脉象、配伍等。针对每种抽取目标类型,需制定相应的抽取规则,确保三元组生成的规范性。
Step 3:自动抽取知识
采用'示范案例 + 关系列表'的提示模板引导大语言模型对医案数据进行自动化抽取,生成三元组。以下是具体的 Prompt 设计示例:
假如你是一个中医的关系抽取大语言模型,对鼻炎患者的症状和相关疾病进行关系抽取。
抽取医案示范:'鼻炎近来密帘三天,病症当然发作,涕多,涕难擤。头痛。鼻塞。鼻粘膜水肿,有分泌物。舌薄苔,脉浮紧。桑叶6g,薄荷6g,桔梗6g,石菖蒲6g,路路通10g,荆芥6g,白芷6g,苍耳子10g,金荞麦10g,蔓荆子10g。'。
输出格式为 [('鼻炎','症状','涕多'),('鼻炎','症状','头痛'),('鼻炎','检查','鼻粘膜水肿'),('鼻炎','舌象',),(,,),(,,)...]。
学习上述抽取格式,抽取下列病案,以三元组格式输出。给定的句子为:。给定关系列表:[, , , , , ],请给出关系列表中的关系。如果不存在则输出:无。


