趁热打铁,再构建百万节点关系中医药方剂知识图谱
趁热打铁,再构建百万节点关系中药方剂知识图谱
前文自顶向下构建中药知识图谱初探中,已经介绍了知识图谱和中药知识图谱构建的相关基础概念,本文将研究中药方剂数据,趁热打铁,再构建百万节点关系中药方剂知识图谱。该图谱能够让中医药知识图谱更加完善与全面。详细内容请看全文。
目录
- https://github.com/fengxi177/Knowlegde_Graph_TCM
https://gitee.com/fengxi177/Knowlegde_Graph_TCM
3、中药方剂知识图谱数据展示
本文共计生成中药方剂节点标签8类215987个,关系类型7类793514个。存入neo4j中的中药知识图谱概况如图4所示。
图4 中药方剂知识图谱数据概述 图5 6000关系中药方剂知识图谱局部可视化效果(缩略图) 该图谱svg格式获取地址: https://github.com/fengxi177/Knowlegde_Graph_TCM/blob/main/fangji/img_svg/ 相较于前文从中药性能和中药功效角度构建的中药知识图谱,方剂知识图谱更加复杂,节点关系呈现的知识也更加丰富。后续对齐两份知识图谱之间的属性关系,将联通中药和方剂知识,呈现更完整的中药知识图谱。特别的,领域数据特别是医疗数据对齐,由于其特殊应用性,更应该关注背景知识,而不能仅仅从nlp视角利用方法对齐。
其他主要关系图谱已在前后文进行展示,此处主要补充100组来源关系中药方剂知识图谱可视化结果如图6。MATCH p=()-[r:from]->() RETURN p LIMIT 100
图6 100来源关系中药方剂知识图谱可视化结果 以上就是本文所构建中药方剂知识图谱的部分可视化结果。
4、问题发现
有了数据,完成初步的知识图谱构建是比较便捷的,当然也会发现不少问题。该部分将主要介绍发现的2类问题,以便于后续图谱优化与注意。
4.1 节点关系定义问题
当打算利用2级关系查询“金仙膏”的组方和剂量情况时发现了如图7中的问题,即同一中药包含极多的剂量,这无法确定处方中的具体剂量情况。因此,2.1节中单纯的<中药名, dose, 剂量>关系无法准确表达确定处方的中药与剂量关系。为此,简单的,或许可再增加剂量与处方id之间的关系<处方_id, prescription dose, 剂量>。这样,dose关系能够从剂量角度发现用药情况,prescription dose关系能够确定关联处方的剂量单位。
图7两级关系查询语法如下:
MATCH (n:`处方`)-[r:composition]->(n2:`中药名`) where n.name contains "金仙膏" with n, r, n2 match (n2:`中药名`)-[r2:dose]->(n3:`剂量`) RETURN n, r, n2, r2, n3 LIMIT 500
图7 两级关系查询“金仙膏”组方和剂量知识图谱部分可视化结果 4.2 知识融合问题
如图6所示,中医药资料丰富,有很多来源。当构建一定数量节点关系的图谱后,会发现同一实体或关系的表达变化多样,且中医药中的用词有其领域性和特殊性,发掘一种能够恰到好处的中医药知识融合方法将会极大的提升相关知识图谱的质量。
5、总结
本文基于多个来源的中药方剂数据,构建了一份有21.6w节点和79.4w关系的中药方剂知识图谱,并结合知识图谱对方剂数据进行了简单的分析与可视化展示。同时就当前构建过程中发现的问题进行了分析。希冀通过不断迭代修改,能够让中医药知识图谱更加完善与全面,发掘有价值的信息。
欢迎关注公众号:实用自然语言处理
主要参考文献
[1] https://baike.baidu.com/item/中药方剂/4844485?fr=aladdin
原文首发于微信公众号:实用自然语言处理