知识图谱:python医疗问答系统 知识图谱 智能问答机器人 深度学习 可视化 ne04j图形数据库 Bert模型 Django框架 毕业设计✅

博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久,选择我们就是选择放心、选择安心毕业✌
> 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与我联系了。🍅

点击查看作者主页,了解更多项目!

🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。🍅

1、毕业设计:2025年计算机专业毕业设计选题汇总(建议收藏)✅

2、大数据毕业设计:2025年选题大全 深度学习 python语言 JAVA语言 hadoop和spark(建议收藏)✅

1、项目介绍

技术栈:

python语言、医疗问答系统、知识图谱、智能问答机器人、深度学习、可视化 ne04j图形数据库 毕业设计
Django框架、Bert模型

2、项目界面

(1)知识图谱
在这里插入图片描述
(2)医疗问答模块

在这里插入图片描述

(3)问答信息管理
在这里插入图片描述

(4)词云图分析
在这里插入图片描述

(5)后台数据管理

在这里插入图片描述

(6)注册登录

在这里插入图片描述

3、项目说明

随着智能问答机器人在人工智能领域的不断发展,市场逐步发布了如天猫精灵、小米智能音箱等语音对话类产品,该类产品底层的系统逻辑与算法一直在不断积累与更新。此类产品目前对医学名词及问题还不够敏感。
现有意图识别分类较为常用的方法有基于规则模板或特征等,此类方法需消耗较多人力并且覆盖面、分类能力也相当有限。
针对上述问题,结合医疗领域对话文本特点,本文提出了基于主题词嵌入的意图识别模型(ETM-T)。
该模型将用户的就医意图视作分类问题,首先使用ETM模型挖掘出与中文医患问答数据相关的主题语义向量表示,然后将主题向量与TF-IDF词权重进行融合,得到的句向量作为Transformer编码器模型的输入,
再利用Transformer编码器提取文本语义特征并完成对用户问答数据的分类。通过对实验结果分析得出,该模型拥有较好的意图分类效果。但仅依靠问答文本内容,无法使ETM-T模型提取到与患者病情相关的并发症、忌吃食物等医学知识相关的语义信息。
为解决此问题,对医疗问句进行分类。

摘 要
计算机的应用越来越智能化,通过不断地对计算机进行训练,现在计算机正在朝向人工智能的领域大力发展。而在智能应用的过程中,自动问答系统成为了人机互动的一种新的趋势,计算机可以通过在知识图谱中寻找答案来为人们提出的问题进行精准回复。而这一应用在医疗健康领域中有着很好的应用场景,但是应用效果却并没有达到预期。我国对于智慧医疗的建设支持力度很大,国家卫健委对于智能化的在线问诊、人机对话、智慧医疗等项目的需求较大,急需在该领域中寻求更大的发展。本次为了响应国家在智慧医疗领域的开发需求,满足民众在线就医、在线问诊的需求,本次通过医疗领域的用户问答系统的搭建来进行相关知识图谱的搭建,通过构建医疗领域的知识图谱来实现计算机的深度学习,并且能够实现自动问答的功能。本次的内容研究主要是通过以Python技术来对医疗相关内容进行数据的爬取,通过爬取足量的数据来进行知识图谱的的搭建,通过Neo4j来实现知识图谱的可视化。通过智慧问答的方式构建出以bert+lstm+crf的识别模型,从而完成对医疗问句主体的识别,构建出数据集以及实现文本的训练。通过django来进行web网页的开发,通过面向用户的网页端开发使用来满足用户医疗问答的需要。

关 键 词:深度学习;智慧医疗;Python;bert

4、核心代码

import os
import json
from py2neo import Graph,Node

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

    '''读取文件'''
    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,encoding='utf-8'):
            disease_dict = {}
            count += 1
            print(count)
            data_json = json.loads(data)
            disease = data_json['name']
            disease_dict['name'] = disease
            diseases.append(disease)
            disease_dict['desc'] = ''
            disease_dict['prevent'] = ''
            disease_dict['cause'] = ''
            disease_dict['easy_get'] = ''
            disease_dict['cure_department'] = ''
            disease_dict['cure_way'] = ''
            disease_dict['cure_lasttime'] = ''
            disease_dict['symptom'] = ''
            disease_dict['cured_prob'] = ''

            if 'symptom' in data_json:
                symptoms += data_json['symptom']
                for symptom in data_json['symptom']:
                    rels_symptom.append([disease, symptom])

            if 'acompany' in data_json:
                for acompany in data_json['acompany']:
                    rels_acompany.append([disease, acompany])

            if 'desc' in data_json:
                disease_dict['desc'] = data_json['desc']

            if 'prevent' in data_json:
                disease_dict['prevent'] = data_json['prevent']

            if 'cause' in data_json:
                disease_dict['cause'] = data_json['cause']

            if 'get_prob' in data_json:
                disease_dict['get_prob'] = data_json['get_prob']

            if 'easy_get' in data_json:
                disease_dict['easy_get'] = data_json['easy_get']

            if 'cure_department' in data_json:
                cure_department = data_json['cure_department']
                if len(cure_department) == 1:
                     rels_category.append([disease, cure_department[0]])
                if len(cure_department) == 2:
                    big = cure_department[0]
                    small = cure_department[1]
                    rels_department.append([small, big])
                    rels_category.append([disease, small])

                disease_dict['cure_department'] = cure_department
                departments += cure_department

            if 'cure_way' in data_json:
                disease_dict['cure_way'] = data_json['cure_way']

            if  'cure_lasttime' in data_json:
                disease_dict['cure_lasttime'] = data_json['cure_lasttime']

            if 'cured_prob' in data_json:
                disease_dict['cured_prob'] = data_json['cured_prob']

            if 'common_drug' in data_json:
                common_drug = data_json['common_drug']
                for drug in common_drug:
                    rels_commonddrug.append([disease, drug])
                drugs += common_drug

            if 'recommand_drug' in data_json:
                recommand_drug = data_json['recommand_drug']
                drugs += recommand_drug
                for drug in recommand_drug:
                    rels_recommanddrug.append([disease, drug])

            if 'not_eat' in data_json:
                not_eat = data_json['not_eat']
                for _not in not_eat:
                    rels_noteat.append([disease, _not])

                foods += not_eat
                do_eat = data_json['do_eat']
                for _do in do_eat:
                    rels_doeat.append([disease, _do])

                foods += do_eat
                recommand_eat = data_json['recommand_eat']

                for _recommand in recommand_eat:
                    rels_recommandeat.append([disease, _recommand])
                foods += recommand_eat

            if 'check' in data_json:
                check = data_json['check']
                for _check in check:
                    rels_check.append([disease, _check])
                checks += check
            if 'drug_detail' in data_json:
                drug_detail = data_json['drug_detail']
                producer = [i.split('(')[0] for i in drug_detail]
                rels_drug_producer += [[i.split('(')[0], i.split('(')[-1].replace(')', '')] for i in drug_detail]
                producers += producer
            disease_infos.append(disease_dict)
        return set(drugs), set(foods), set(checks), set(departments), set(producers), set(symptoms), set(diseases), disease_infos,\
               rels_check, rels_recommandeat, rels_noteat, rels_doeat, rels_department, rels_commonddrug, rels_drug_producer, rels_recommanddrug,\
               rels_symptom, rels_acompany, rels_category

    '''建立节点'''
    def create_node(self, label, nodes):
        count = 0
        for node_name in nodes:
            node = Node(label, name=node_name)
            self.g.create(node)
            count += 1
            print(count, len(nodes))
        return

    '''创建知识图谱中心疾病的节点'''
    def create_diseases_nodes(self, disease_infos):
        count = 0
        for disease_dict in disease_infos:
            node = Node("Disease", name=disease_dict['name'], desc=disease_dict['desc'],
                        prevent=disease_dict['prevent'] ,cause=disease_dict['cause'],
                        easy_get=disease_dict['easy_get'],cure_lasttime=disease_dict['cure_lasttime'],
                        cure_department=disease_dict['cure_department']
                        ,cure_way=disease_dict['cure_way'] , cured_prob=disease_dict['cured_prob'])
            self.g.create(node)
            count += 1
            print(count)
        return

5、源码获取方式

biyesheji0005  或  biyesheji0001   (绿色聊天软件)

🍅由于篇幅限制,获取完整文章或源码、代做项目的,查看我的【用户名】、【专栏名称】、【顶部选题链接】就可以找到我啦🍅

感兴趣的可以先收藏起来,点赞、关注不迷路,下方查看👇🏻获取联系方式👇🏻

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值