基于知识图谱的医疗对话系统(1)

该博客介绍了如何基于Python库Py2Neo将疾病数据导入Neo4j图数据库。首先,定义了一个`BuildGraph`类,初始化时设置数据路径和图数据库连接。接着,从CSV文件中读取疾病数据,包括疾病名称、别名、部位、年龄等属性,并创建疾病与其他实体(如症状、科室)的关系。然后,通过`create_node`方法创建疾病、症状等节点,`create_diseases_nodes`方法为疾病节点添加属性,最后通过`create_relationship`方法建立节点间的关系。通过运行`create_graphNodes`和`create_graphRela`方法,完成了疾病知识图谱的构建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 基于py2neo库导入数据到neo4j

from py2neo import Graph, Node, Relationship
import pandas as pd
import re
import os


class BuildGraph():
    def __init__(self):
        curdir = '/'.join(os.path.abspath(' ').split('/')[:-1])
        self.data_path = os.path.join(curdir, 'data/disease.csv')
        self.graph = Graph("http://localhost:7474", username="neo4j", password="neo4j")    #如果是远程服务器上,将localhost:7474改成服务器ip和端口号

    def read_file(self):
        """
        读取文件,获得实体,实体关系
        :return:
        """
        # cols = ["name", "alias", "part", "age", "infection", "insurance", "department", "checklist", "symptom",
        #         "complication", "treatment", "drug", "period", "rate", "money"]
        # 实体
        diseases = []      # 疾病
        aliases = []       # 别名
        symptoms = []      # 症状
        parts = []         # 部位
        departments = []   # 科室
        complications = [] # 并发症
        drugs = []         # 药品

        # 疾病的属性:age, infection, insurance, checklist, treatment, period, rate, money
        diseases_infos = []
        # 关系
        disease2symptom = []       # 疾病与症状关系
        disease2alias = []         # 疾病与别名关系
        diseases2part = []         # 疾病与部位关系
        disease2department = []    # 疾病与科室关系
        disease2complication = []  # 疾病与并发症关系
        disease2drug = []          # 疾病与药品关系

        all_data = pd.read_csv(self.data_path, encoding='gb18030').loc[:, :].values
        
        for data in all_data:
            disease_dict = {
   }  # 疾病信息
            ''' ---------------------疾病--------------------'''
            disease = str(data[0]).replace("...", " ").strip()
            disease_dict["name"] = disease
            '''----------------------别名--------------------'''
            line = re.sub("[,、;,.;]", " ", str
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值