影视聚合站 养生 文章内容

【TCMKB】使用Neo4j构建中医哮喘知识图谱的初步探索

发布时间:2020-09-11 22:20:21来源:中医药知识服务平台

目录

1.中医临床知识图谱

2.数据加工和准备

3.将数据导入Neo4j数据库

4.基本查询案例

5.面向方药推荐的路径查询案例

6.小结

1.中医临床知识图谱

知识图谱技术可以帮助我们建立疾病、证候、症状、治法、方剂、药物等核心概念之间的关系,把各种中医临床知识资源关联起来,实现资源的整合。Neo4j图数据库(GraphDatabase)是基于图论实现的一种新型NoSQL数据库,Neo4j在中医药知识图谱技术体系中可作为图数据的存储仓库,支持各种图算法和应用。

在信息所数据资源(特别是10余万临床医案)的基础上,可以构建“病、证、症、方、药”等核心概念所构成的知识图谱,将事实型知识转换为概念性知识,更好地支持临床研究并辅助临床决策。例如,基于临床知识图谱,可建立临床表现(症状、证候、疾病)与方剂、中成药之间的关系,据此向用户推荐药物疗法(推荐算法);也可检索与用户当前病历相关的医案、指南和知识库内容,辅助用户进行决策。

为实现上述想法,我们选择“中医治疗支气管哮喘”作为专题,在前期工作“中医哮喘专题知识库”的基础上,将中医临床数据集导入Neo4j图数据库中,并通过一些查询进行了测试。下一步拟实现图搜索、中成药推荐等功能。在本文中报告了初步的实验结果。

2.数据加工和准备

在前期工作中,已采集文献中关于名医、诊疗、病理、药物等方面的数据,从而建立了中医治疗支气管哮喘专题的结构性数据库。该数据库对中医哮喘诊疗技术的相关数据进行了全面采集和存储,内容包括:古今外文献、诊疗规范、方剂、中药、临床研究、名医经验、医案、实验、养生保健、诊疗技术、不良反应、西药、实验室检查等内容,数据量达到八万余条。

如图1所示,我们从数据库中提取出病、证、症、方、药等实体的信息,以及病证关系、方证关系、治疗关系、药证关系、方剂组成关系、药症关系等实体间关系,构成中医临床知识图谱。接下来,拟基于知识图谱实现的第一个应用是中成药推荐。其基本思想是,根据知识图谱之中疾病、证候、症状、病因及方药功效之间关系,搜寻临床表现与中成药之间的路径,这些路径就代表了临床表现与中成药之间的潜在关系,或者说在某个场景下可以适用或不适用的中成药(可推广到方、药等其他疗法)。具体的路径可以包括:

证候——>症状——>功效——>方药

证候——>病因——>功效——>方药

证候——>方药

疾病——>证候——>方药

反过来,“禁忌推荐”的路径包括:

方药—不能同时服用—>方药

方药—适应症—>患者情况(孕妇、特定疾病等)

图1中医临床知识图谱示意图

3.将数据导入Neo4j数据库

使用Python语言编写程序,将知识图谱的内容导入Neo4j图数据库(如图2所示)。在知识图谱中,将中药、中成药、方剂、功效、症状、疾病、证候、病因、化学成分等概念设定为节点,建立节点之间的上下位关系和相关关系。通过节点的属性,表示每个实体的信息。例如,可将中药的拉丁文全名、中文药名、药物疗效归属、药性、药味、功效、中文拼音、来源等设置为节点的属性。

图2在Neo4j中展示中医临床知识图谱

如图3所示,

图3通过Neo4j对中医临床知识图谱进行查询处理

4.基本查询案例

查询1:查询某个节点(如中成药“儿童清肺口服液”)的信息

MATCH(n{name:'儿童清肺口服液'})RETURNn

图4查询中成药“儿童清肺口服液”的信息

查询2:查询“止血药”有哪些?

MATCH(n:`止血药`)RETURNnLIMIT25

图5查询“止血药”有哪些

查询3:查询“菊科”的中草药

通过“上位词”构成的路径查询,可找出属于同一科(如“菊科”)的植物。

MATCH(n:`科`{name:"菊科"})RETURNnLIMIT25

图6查询“菊科”的中草药

查询4:与“人参”为同一属的植物

通过“上位词”构成的路径查询,可找出与某味中草药(如人参)属于同一属的植物。

MATCH(p:`种`{name:"人参"})-[r1:`上位词`]->(c),(q:`种`)-[r2:`上位词`]->(c)

RETURNp,c,q

图7查询与“人参”同一属的中草药

查询5:搜索“白茅”的信息

在搜索某一个药物时,可以展示出与这个药物的直接相关的药性、药味、药物功效、药物别名、中文属名、中文科名、拉丁文属名、拉丁文全名,具体如下:

MATCH(n{name:'白茅'})RETURNn

图8查询与“白茅”的信息

查询6:搜索“葱属”的植物

在搜索某一个拉丁文属名时,可以展示出与这个属名相关的中文科名、中文属名以及其直接相关药物(即它的下位词:种)的中文药名、药性、药味、药物功效归属名,具体如下:

MATCH(p:`属`{name:"葱属"})

RETURNp

图9查询“葱属”的植物

5.面向方药推荐的路径查询案例

查询7:证候——症状——功效——中成药路径查询

基于知识图谱的路径查询(如证候——症状——功效——中成药),可以发现证候/疾病与中成药之间的治疗关系,从而帮助我们进行中成药推荐。例如:如果肺经痰热具有痰多粘稠,气促等临床表现,而痰多粘稠,和气促一般用化痰,平喘的治法治疗,那么如果儿童清肺口服液具有化痰,平喘的功效,那么就可以治疗肺经痰热的证候

MATCH(syndrome:`证候`)-[r:`现象表达`]-(symptom:`症状`)-[s:`治疗`]-(foaf:`功效`)-[t:`具有...功效`]-(drug:`中成药`)

WHEREsyndrome.name='肺经痰热'

RETURNsyndrome,r,symptom,s,foaf,t,drug

图10基于图路径查询进行中成药推荐

查询8:证候——病因——功效——中成药路径查询

MATCH(syndrome:`证候`)<-[r:`导致`]-(origin:`病因`)<-[s:`治疗`]-(function:`功效`)-[t:`具有...功效`]-(drug:`中成药`)

WHEREsyndrome.name='肺经痰热'

RETURNsyndrome,r,origin,s,function,t,drug

图11基于“证候——病因——功效——中成药”进行中成药推荐

查询9:证候——功效——中成药路径查询

本查询在证候与中成药之间以“功效”为中介建立关系。查询结果将返回所有证候-功效之间的路径(长度在1~5之间)。返回值可返回路径(path)、中成药名称列表、或中成药实体。

MATCHpath=(syndrome:`证候`)-[*1..5]-(function:功效)--(drug:`中成药`)

WHEREsyndrome.name='肺经痰热'

RETURNpath

查询9:症状——功效——中成药路径查询

在某一临床场景中,根据患者的一些症状,可以沿着症状——功效——中成药路径进行搜索,找到中成药,也可以按照某种规则对其进行排序。

MATCHpath=(symptom)-[s:`治疗`]-(function:`功效`)-[t:`具有...功效`]-(drug:`中成药`)

WHEREsymptom="外感风寒"orsymptom="咳嗽"symptom.name="面赤身热"orsymptom.name="气促"orsymptom.name="痰黄黏稠"orsymptom.name="咽痛声哑"orsymptom.name="舌淡红"orsymptom.name="脉数"or

RETURNpath

6.总结

采用知识图谱和Neo4j图数据库技术,可基于中医临床数据建立病、证、症、方、药等核心概念的知识网络,实现中医临床知识体系的可视化,帮助专家梳理医案中蕴含的知识,帮助中医药工作者研究历代医家的用药规律和治疗方法。中医临床知识图谱的构建和分析工作才刚刚起步,本文档汇报了数据准备和导入的初步结果。接下来还要深入学习Neo4j的高级功能,在中医临床知识图谱上实现处方和中成药推荐等功能。

推荐阅读:

更多中医哮喘知识,点击下方阅读原文搜索↓↓↓

本文作者:于彤。转载请注明出处。

© 2016-2017 ysjhz.com Inc.

站点统计| 举报| Archiver| 手机版| 小黑屋| 影视聚合站 ( 皖ICP备16004362号-2 )