计算机毕业设计:Python基于知识图谱的医疗问答与数据挖掘分析系统 Django框架 Bert模型 深度学习 知识图谱 大模型(建议收藏)✅
博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立软件开发工作室,专注于计算机相关专业项目实战6年之久,累计开发项目作品上万套。凭借丰富的经验与专业实力,已帮助成千上万的学生顺利毕业,选择我们,就是选择放心、选择安心毕业✌
> 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与我联系了。🍅🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。🍅
1、毕业设计:2026年计算机专业毕业设计选题汇总(建议收藏)✅
1、项目介绍
技术栈:Python、Django框架、Bert模型、Neo4j图数据库、深度学习、知识图谱、智能问答机器人、可视化
· 知识图谱可视化模块
· 医疗问答交互模块
· 问答信息管理模块
· 词云图分析模块
· 后台数据管理模块
· 用户注册登录模块
本项目面向医疗领域智能问答需求,基于Python和Django框架构建后端系统,采用Neo4j图数据库实现医疗知识图谱的存储与可视化展示。系统运用Bert模型结合LSTM-CRF进行医疗问句意图识别与实体抽取,实现用户自然语言提问的精准理解。通过爬取医疗数据进行知识图谱构建,支持疾病、症状、药物等实体关联查询,为用户提供智能化的在线医疗问答服务,助力智慧医疗应用发展。
2、项目界面
(1)知识图谱
这是Neo4j数据库管理界面,通过节点和关系图谱可视化展示医疗数据间的关联,支持Cypher查询与数据浏览,可直观呈现疾病、症状、药物、检查等实体及其相互关系,辅助医疗知识图谱的构建与分析。
(2)医疗问答模块
该基于知识图谱的医疗问答系统界面,提供用户提问与系统回复的交互区域,用户可输入医疗相关问题,系统基于知识图谱返回疾病症状、描述等结构化医疗答案,实现医疗知识的智能问答与交互查询。

(3)问答信息管理
该医疗问答系统的问答管理页面,以表格形式展示用户提问、回答内容、问题类型及创建时间,支持按姓名搜索和删除操作,方便管理员管理与维护系统内的问答记录。
(4)词云图分析
该词云图分析页面以词云形式直观呈现医疗问答中的高频关键词,字体大小反映词频高低,帮助用户快速识别系统中用户最关注的疾病、症状等医疗话题,为后续的知识图谱优化和内容运营提供方向参考。
(5)后台数据管理
这是后台管理系统的问答表界面,以列表形式展示所有问答条目,支持批量选择、新增与删除操作,方便管理员维护医疗问答数据,实现对系统问答库的高效管理。

(6)注册登录
这是基于知识图谱医疗问答系统的登录界面,提供用户名与密码输入框及登录、注册入口,用户可通过输入账号信息完成身份验证,进入系统使用医疗问答、数据管理等功能。

3、项目说明
一、技术栈简要说明
本系统后端采用Python语言进行业务逻辑开发,搭配Django框架构建Web服务接口与后台管理体系。在自然语言处理方面,引入Bert预训练模型结合LSTM-CRF网络进行医疗问句的意图识别与实体抽取。数据存储层面,使用Neo4j图数据库构建医疗知识图谱,实现疾病、症状、药物、检查等实体及其关系的可视化存储与管理。前端页面采用HTML进行布局,配合词云图等可视化组件展示用户问答数据的关键词分布。
二、功能模块详细介绍
· 用户注册登录模块
该模块为系统的身份认证入口,提供用户注册与登录功能。新用户可通过注册页面创建个人账号,已有用户输入用户名和密码后完成身份验证,成功登录后方可进入系统使用医疗问答、数据管理等功能,保障系统的访问安全性与用户个性化操作。
· 知识图谱可视化模块
该模块基于Neo4j图数据库,通过节点和关系图谱的方式直观展示医疗数据之间的关联结构。用户可在界面中浏览疾病、症状、药物、检查等实体节点及其相互之间的连接关系,并支持Cypher查询语句进行数据检索。该模块为医疗知识图谱的构建、分析与优化提供了可视化辅助工具。
· 医疗问答交互模块
该模块是系统的核心功能区域,提供用户与智能问答机器人的交互界面。用户可在输入框中提交医疗相关问题,系统基于知识图谱进行语义理解和答案匹配,返回疾病症状、疾病描述、诊疗建议等结构化医疗信息。通过自然语言交互方式,实现医疗知识的智能问答服务。
· 词云图分析模块
该模块以词云图形式展示医疗问答过程中出现的高频关键词,字体大小直观反映词频的高低程度。用户和管理员可通过该模块快速识别系统中用户最为关注的疾病类型、症状表现、药物名称等医疗话题,为知识图谱的内容优化和系统运营方向提供数据参考。
· 问答信息管理模块
该模块以表格形式集中展示系统内所有的用户提问及对应的回答内容,同时呈现问题类型、创建时间等字段信息。管理员支持按用户姓名进行搜索检索,并可对问答记录执行删除操作,方便对系统中的问答数据进行日常管理与维护。
· 后台数据管理模块
该模块为系统管理员提供问答库的全面管理界面,以列表形式展示所有问答条目,支持批量选择、新增问答记录以及批量删除等操作。管理员可通过该模块高效维护医疗问答数据,持续扩充和优化系统的知识库内容,提升问答系统的覆盖面和准确性。
三、项目总结
本系统针对医疗领域中智能问答能力不足、知识关联不清晰等问题,设计并实现了一套基于知识图谱与深度学习的医疗智能问答解决方案。系统整合了知识图谱可视化、智能问答交互、词云分析、后台数据管理等多个能力模块,覆盖了从用户提问到知识检索、从数据维护到图谱优化的完整流程。通过Bert与LSTM-CRF相结合的模型,系统能够较为准确地识别用户问句中的医疗实体和意图,结合Neo4j图数据库中的结构化医疗知识,返回精准的答案内容。整体而言,本系统为智慧医疗领域的在线问诊、知识查询与医疗数据管理提供了有效的技术支持。
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、项目列表





6、项目获取方式
🍅由于篇幅限制,获取完整文章或源码、代做项目的,拉到文章底部即可看到个人联系方式。🍅
点赞、收藏、关注,不迷路,下方查看👇🏻获取联系方式👇🏻
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)