知识图谱的节点和关系实现(python)

本文详细介绍了一种医疗知识图谱的构建流程,包括节点创建、关系定义等关键步骤,并提供了具体的Python代码实现。

本文当中所涉及到的代码来源仍然是前一篇博文当中提到的刘老师架构的智能问答机器人中知识图谱部分,上一篇内容主要关于前期数据搜集和处理的内容,而在本期当中则会学习如何架构一个真实的知识图谱,并且在阅读完成之后,我也会自己进行尝试写一个小型的知识图谱来练习一下,请大家监督。

知识图谱基础代码构建(医疗向)_chen_nnn的博客-CSDN博客医疗知识图谱构建过程https://blog.csdn.net/chen_nnn/article/details/123410433

目录

build_medicalgraph.py

MedicalGraph类:

 read_nodes():

create_node():

create_diseases_nodes():

create_graphnodes():

create_relationship(): 

create_graphrels():

export_data():

结语

build_medicalgraph.py

import os
import json
from py2neo import Graph,Node


class MedicalGraph:


if __name__ == '__main__':
    handler = MedicalGraph()
    print("step1:导入图谱节点中")
    handler.create_graphnodes()
    print("step2:导入图谱边中")      
    handler.create_graphrels()

很明显的库函数调用,值得注意的是py2neo是Neo4j数据库的python驱动。neo4j里面最重要的两个数据结构就是节点和关系,即Node和Relationship,可以通过Node或Relationship对象创建。而在该代码文件中则是引入了Graph类和Node类。具体可以参照此篇博客Neo4j简介及Py2Neo的用法_yayun_kg的博客-CSDN博客_py2neoNeo4j是一个世界领先的开源图形数据库,由Java编写。图形数据库也就意味着它的数据并非保存在表或集合中,而是保存为节点以及节点之间的关系。Neo4j的数据由下面3部分构成:节点边属性Neo4j除了顶点(Node)和边(Relationship),还有一种重要的部分——属性。无论是顶点还是边,都可以有任意多的属性。属性的存放类似于一个HashMap,Key为一个字符串,而Value必须...https://blog.csdn.net/for_yayun/article/details/105494652

MedicalGraph类:

class MedicalGraph:
    def __init__(self):
        cur_dir = '/'.join(os.path.abspath(__file__).split('/')[:-1])
        self.data_path = os.path.join(cur_dir, 'data/medical.json')
        self.g = Graph(
            host="127.0.0.1",  # neo4j 搭载服务器的ip地址,ifconfig可获取到
            http_port=7474,  # neo4j 服务器监听的端口号
            user="lhy",  # 数据库user name,如果没有更改过,应该是neo4j
            password="lhy123")

复习一下,在上篇博文中提到了,在cur_dir中获得了当前运行程序的绝对路径,然后在后面加上数据库的路径得到data_path。然后利用py2neo当中的Graph类,在查找几篇文章之后,此处的作用是连接neo4j数据库。这个图形类表示的Neo4j图形数据库内的图数据的存储空间。使用URI和(或)单个设置提供连接详细信息。而关于Graph类的详细情况,可以参照此篇博客python使用Neo4j图数据库——py2neo详解(2)_Elenstone的博客-CSDN博客_graph py2neo目录0 前言1 py2neo.database-Graph Databases2 GraphService3 Graph0 前言python使用Neo4j图数据库——py2neo详解(1)1 py2neo.database-Graph Databasespy2neo.database包包含与Neo4j服务器交互所需的类和方法。为方便起见,这些类中的许多类也通过top-level包公开py2neo。提供的最有用的类是Graph,表示一个Neo4j图形数据库实例并提供对大部分最常用py2neo APIhttps://blog.csdn.net/Elenstone/article/details/106456449

 read_nodes():

    def read_nodes(self):
        # 共7类节点
        drugs = [] # 药品
        foods = [] # 食物
        checks = [] # 检查
        departments = [] #科室
        producers = [] #药品大类
        diseases = [] #疾病
        symptoms = []#症状

        disease_infos = []#疾病信息

        # 构建节点实体关系
        rels_department = [] # 科室-科室关系
        rels_noteat = [] # 疾病-忌吃食物关系
        rels_doeat = [] # 疾病-宜吃食物关系
        rels_recommandeat = [] # 疾病-推荐吃食物关系
        rels_commonddrug = [] # 疾病-通用药品关系
        rels_recommanddrug = [] # 疾病-热门药品关系
        rels_check = [] # 疾病-检查关系
        rels_drug_producer = [] # 厂商-药物关系

        rels_symptom = [] #疾病症状关系
        rels_acompany = [] # 疾病并发关系
        rels_category = [] # 疾病与科室之间的关系


        count = 0
        for data in open(self.data_path):
            disease_dict = {}
            count += 1
   
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值