基于Neo4j的中医体质干预知识图谱构建实验综述

2024-12-20 00:00:00张璐瑶
电脑知识与技术 2024年30期

关键词:知识图谱;中医;图数据库

0 引言

知识图谱作为一种系统化组织人类知识的技术,是人工智能领域的核心技术之一,广泛应用于搜索引擎、问答系统和智能对话等多种应用场景。在中医药领域,知识图谱的应用也得到了广泛的关注,例如基于知识图谱的智能问答系统[1]和中医问诊模型[2]。知识图谱通过图数据结构组织和存储信息,相较于传统的关系型数据结构,图结构更适合建模复杂关系,尤其适合处理现实中的复杂场景。Neo4j是一个开源的非关系型NoSQL图数据库,通过节点和关系的方式组织数据,能够高效处理大量复杂、互相连接且低结构化的数据。掌握知识图谱的构建技术对于完善中医药知识体系具有重要意义。本文以中医体质辨识任务为切入点,对构建知识图谱的实验过程进行了综述,旨在为中医药领域研究者提供参考和借鉴。

1 中医药领域知识图谱研究现状

知识图谱是一种由若干节点和边组成的结构化知识表示语义网络。知识图谱通常采用三元组或图模型表示知识,并利用关系型数据库或Neo4j、Janus⁃Graph等图数据库进行存储。一般来说,知识图谱的构建技术包括知识抽取、知识融合和知识加工等。具体而言,知识抽取即从结构化数据、半结构化数据或非结构化数据中抽取实体、关系和属性数据。知识融合技术则将抽取到的实体数据链接到知识库中对应的实体对象中,消除实体指代项与实体对象之间的歧义。知识加工旨对已形成的事实表达数据进行本体抽取、知识推理和质量评估。

中医药领域知识图谱研究主要包括基于古籍的基础知识图谱构建、基于知识图谱的临床知识挖掘和基于知识图谱的中医药文献可视化分析三个方面。基于古籍的基础知识图谱构建侧重运用知识抽取、知识融合和知识加工等技术从非结构化数据中提炼中医药知识并可视化。韩梦娇等以《药性赋》为数据源,提取中药性味、归经、功用和主治等要素数据及关系,利用Neo4j图数据库存储、展示知识图谱[3]。陈莹璇等对中医古籍《灵枢》进行分词、抽取实体与关系,经人工校正后存入Neo4j数据库,构建了能充分展示经脉理论内容的知识图谱[4]。基于知识图谱的临床知识挖掘则是基于已建好的知识图谱,利用机器学习、数据挖掘等算法,挖掘临床诊疗中隐性知识。吴娟等构建小儿腹泻知识图谱,对中药频次、功效等数据进行分析,并利用关联网络分析方法对小儿腹泻病证方药知识元进行聚类分析,从而筛选出特色药对及核心处方,进一步指导临床实践[5]。刘燕君等基于已有知识图谱,利用聚类分析、关联规则等算法对路志正治疗干燥综合征特色用药的隐性知识进行挖掘,从数据可视化视角分析、总结名医临证经验与学术思想[6]。基于知识图谱的中医药文献可视化分析主要利用知识图谱工具对中医药文献分析、总结,从可视化视角探讨领域研究现状、热点及未来发展趋势。庞舒文等基于已发表的中医药治疗冠心病领域相关文献,运用CiteSpace软件对领域发文作者、科研机构及关键词进行知识图谱绘制与分析,从而总结出中医药治疗冠心病的用药规律、安全性等规律[7]。

构建中医药领域知识图谱,以可视化语义关系网络视角揭示中医药知识元内在关联,对中医药科学研究具有一定借鉴与参考价值。

2 实验内容

基于真实的中医体质辨识数据,构建干预知识图谱。利用Neo4j图数据库存储数据,并使用Python语言进行处理,创建相应知识图谱,并针对特定问题编写图数据库查询脚本。

3 实验环境

Windows10操作系统64位,8G内存,Neo4j desk⁃top 1.5.9 版本,Protégé 5.6.4 版本,Jupyter Notebook平台和相关数据文件。

4 实验流程与步骤

知识图谱构建流程包括设计模式层、知识抽取、知识融合、知识存储和可视化展示等环节。首先,在中医专家和医生指导下,参考《中医药学系统语义网络框架》,设计中医体质辨识干预知识本体层;其次,从已整理好的实验数据中提取实体及关系;然后在中医专家指导下,按照相关规则进行知识融合及实体对齐操作,统一实体及关系命名;最后,利用Neo4j图数据库对中医体质干预知识进行存储及可视化展示。知识图谱构建流程如图1所示。

(1) 实验数据与预处理

实验使用中医体质辨识真实数据构建气虚体质辨识干预知识图谱。数据以二维表格形式存储,内容包含舌象、体质、干预措施等,详细数据如表1所示。

实验数据存在冗余信息,且数据语义属性缺失,需要对数据进行去重、增加类别信息。在去除重复值后,筛选出体质、舌象、干预手段等数据,给每组数据赋予类别属性信息,如“舌苔润”的数据类别是“舌象”。

(2) 设计模式层

知识图谱模式层是用于规范领域中实体、关系和属性之间的联系,是知识图谱的核心。首先梳理实验数据所对应中医药术语的语义类型,如证候、中医诊断、辨证、中医预防等。舌象数据属于中医诊断术语中辨证子术语类别,体质数据属于病因、病机和疾病术语中证候子术语类别,干预手段数据、饮食数据、运动数据、情志数据和起居数据属于中医预防术语类别。随后,根据《中医药学系统语义网络框架》,结合术语语义类型结构图,明确中医药术语间层次关系,确定了“ 体质-舌象-干预类型-干预措施”的语义层次关系[8]。最后,确定构建气虚体质辨识干预知识图谱所需要的4种类别(体质、症状、干预类型、措施)及4种关系(舌象、干预措施、建议、不宜)。

(3) 知识抽取

知识抽取包括实体抽取和关系抽取。将表1中已整理的列数据,通过编写python脚本,转换、存储为实体节点文件Nodes.csv。根据模式层定义的4种关系,在舌象与体质节点数据中增加关系数据“体质”;在体质与干预类型节点数据中增加关系数据“干预措施”;在干预类型与措施节点数据中增加关系数据“建议”和“不宜”,最后将这些关系数据整理为<实体,关系,实体>三元组数据并存储为Relation.csv。

(4) 知识融合

知识融合是指通过实体链接、指代消解等方式将抽取的实体及关系数据与模式层的类与关系对应起来,确保构建的图谱节点与关系命名统一、规范。实验采用人工方式核对抽取的实体与关系数据的类别及关系类别,消除实体同义词的多表述现象。

(5) 知识存储与可视化展示

实验利用Cypher图数据库查询语言在Neo4j数据库中创建知识图谱实例。实例的创建包括实体节点的创建和关系的创建。

① 创建Neo4j图数据库

第一步,打开Neo4j 程序,点击左上角new按钮,选择create project创建数据库。第二步,点击右上角add按钮,选择local DBMS。第三步,在密码栏中输入密码。第四步,点击create按钮,完成本地图数据库创建。

② 创建实体节点

第一步,打开Jupyter notebook 平台,编写连接Neo4j图数据库脚本。第二步,读取节点数据。第三步,依次创建体质、舌象、干预类别、干预措施4个实例节点。

③ 创建关系

读取关系文件数据,根据模式层定义的4种关系,依次创建4种关系,分别是舌象节点与体质节点间的无向关系(体质),体质节点到干预类型节点的有向关系(干预措施),干预类型节点到干预措施节点的有向关系(建议),干预类型节点到干预措施节点的有向关系(不宜)。

④ 知识图谱展示

编写查询图谱脚本语句,将查询语句复制到Neo4j数据库中,展示气虚体质干预知识图谱。

(6) 知识查询

知识图谱创建好后便可进行查询。实验设置查询问题为“患者舌质偏淡,建议饮食有哪些?”分析发现,查询问题涉及到的节点有舌象、体质、干预类别和干预措施,涉及的关系有辨证、预防手段和建议。编写相关查询cypher语句,执行查询结果。

5 实验结果

(1) 设计模式层

实验利用Protégé本体建模工具,采用“七步法”绘制气虚体质辨识干预知识图谱模式层次结构,如图7 所示。

(2) 创建实体节点

执行创建实体节点脚本,创建实体节点如图8 所示。

(3) 创建关系

执行创建关系脚本,创建关系节点如图9所示。

(4) 展示知识图谱

执行知识图谱展示脚本,创建的气虚体质辨识干预知识图谱如图10所示。

(5) 问题查询结果

执行问题查询脚本,查询问题结果如图11所示。

6 结束语

本文对基于Neo4j图数据库的中医领域知识图谱构建进行实验综述,重点介绍了知识图谱的创建过程。知识图谱作为一种结构化知识表示工具,凭借其图数据结构的优势,有效处理复杂关系信息,从而提升中医药知识体系的系统性和应用效率。同时,以Neo4j为代表的图数据库工具在处理复杂的、互相关联的数据方面具有显著优势。本文综述的实验过程和方法,为后续知识图谱的相关研究提供了一定参考和实践指导。