博主介绍:✌全网粉丝50W+,前互联网大厂软件研发、集结硕博英豪成立软件开发工作室,专注于计算机相关专业项目实战6年之久,累计开发项目作品上万套。凭借丰富的经验与专业实力,已帮助成千上万的学生顺利毕业,选择我们,就是选择放心、选择安心毕业✌
> 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与我联系了。🍅🍅**感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。**🍅
1、毕业设计:2026年计算机专业毕业设计选题汇总(建议收藏)✅
1、项目介绍
技术栈:Python语言、Flask框架、知识图谱、机器学习、智能医疗问答、数据库
功能模块:
- 医疗问答模块
- 医疗查询模块
- 反馈建议模块
- 医疗问答咨询记录模块
- 数据可视化模块
- 注册登录模块
- 后台管理模块
项目介绍:该系统集成了Python、Flask、知识图谱与机器学习技术,构建了一个智能化的在线医疗服务平台。用户可通过自然语言与系统交互,获得基于知识图谱的专业医疗回答。系统支持医疗知识图谱可视化查询、高频疾病词云分析、用户反馈管理、咨询记录查看及后台数据维护等功能,帮助患者便捷获取医疗知识,也为医疗工作者提供了数据支持与管理工具,提升医疗服务的效率与准确性。
2、项目界面
(1)医疗问答模块
该智能医疗问答系统界面,提供对话式交互窗口,用户可输入文字或语音提问,系统返回医疗问题的专业解答,实现医疗知识的智能问答与交互查询。

(2)医疗查询模块----知识图谱
该智能医疗问答系统界面,以知识图谱形式可视化展示疾病相关信息,节点与关系清晰呈现疾病的症状、检查、并发症、治疗方案及注意事项,直观呈现疾病关联知识结构。

(3)数据可视化模块
该智能医疗问答系统界面,以词云形式可视化展示医疗数据中的高频疾病关键词,字体大小直观反映词频高低,帮助用户快速识别系统中最受关注的疾病话题,为医疗问答与知识图谱优化提供方向参考。

(4)知识图谱---neo4j图数据库
这是Neo4j数据库管理界面,通过节点与关系图谱可视化展示医疗数据间的关联,支持Cypher查询与数据浏览,可直观呈现疾病、症状、药物、检查等实体及其相互关系,辅助医疗知识图谱的构建与分析。

(5)反馈建议模块
该智能医疗问答系统反馈建议页面,提供反馈输入框与提交按钮,下方以列表形式展示用户历史反馈内容、更新时间及处理状态,方便用户提交意见并查看反馈处理进度。

(6)咨询记录模块
该智能医疗问答系统的咨询记录页面,以列表形式展示用户的咨询时间、问题内容与系统回答,方便用户回顾历史问答记录,随时查看之前的医疗咨询对话内容。

(7)后台数据管理模块
这是医疗问答系统的后台咨询记录管理界面,以列表形式展示用户提问、系统回答、咨询时间与用户信息,支持搜索、创建和编辑操作,方便管理员管理和维护所有用户的历史问答记录。

(8)注册登录模块
这是智能医疗问答系统的登录界面,提供账号密码输入框与登录按钮,用户可输入账号信息完成身份验证,登录后即可进入系统使用医疗问答、数据查询等相关功能。

3、项目说明
一、技术栈简要说明
本系统后端采用Python语言与Flask轻量级Web框架,负责处理请求路由与业务逻辑。知识图谱基于Neo4j图数据库构建,存储疾病、症状、药物、检查等实体及其相互关系。机器学习算法用于优化问答匹配与意图识别,提升回答准确性。系统同时使用关系型数据库管理用户信息、咨询记录、反馈数据等结构化数据,实现数据持久化存储。
二、功能模块详细介绍
医疗问答模块
该模块提供对话式交互窗口,支持用户通过文字或语音输入医疗问题。系统利用自然语言处理技术理解用户意图,结合知识图谱中的医疗知识库,返回专业、准确的解答。模块能够处理常见疾病咨询、症状分析、用药指导等类型问题,实现智能化的医疗问答服务。
医疗查询模块
模块以知识图谱形式可视化展示疾病相关信息。用户输入疾病名称后,系统呈现节点与关系图,清晰展示该疾病的症状、检查项目、并发症、治疗方案及注意事项。图谱支持交互操作,用户可点击节点进一步查看关联知识,直观理解疾病的知识结构。
数据可视化模块
该模块采用词云技术对医疗数据中的高频关键词进行可视化展示。词云中字体大小反映词频高低,帮助用户快速识别系统内最受关注的疾病话题。这一功能为优化医疗问答策略和知识图谱更新提供了数据参考方向。
知识图谱管理模块(Neo4j图数据库)
模块面向管理员与开发者,提供Neo4j数据库管理界面。用户可通过Cypher查询语言检索医疗实体与关系,直观浏览节点与链接构成的图谱。界面支持疾病、症状、药物、检查等实体的关联分析,辅助医疗知识图谱的构建、维护与调试。
反馈建议模块
该模块为用户提供意见提交入口,页面包含反馈输入框与提交按钮。下方以列表形式展示用户历史反馈内容、提交时间及处理状态。用户可随时查看自己的建议是否已被处理,便于追踪反馈进度,同时帮助系统持续优化服务。
医疗问答咨询记录模块
模块以列表形式记录每位用户的咨询历史,包括咨询时间、提问内容与系统给出的回答。用户可随时回顾过往对话,方便查找之前的医疗建议或重复参考有价值的解答,提升使用体验。
后台管理模块
该模块为管理员提供咨询记录管理功能,页面以列表展示所有用户的提问、系统回答、咨询时间及用户信息。管理员支持搜索、编辑、新增记录等操作,便于维护和管理整个系统的问答数据,确保数据准确性与可追溯性。
注册登录模块
模块提供用户身份验证功能,界面包含账号、密码输入框及登录按钮。用户需注册并登录后方可访问系统的医疗问答、数据查询等功能。该模块保障用户信息安全,同时支持个人信息的后续修改与管理。
三、项目总结
本智慧医疗问答系统融合了Python、Flask、知识图谱与机器学习等技术,构建了一个功能完善的在线医疗服务平台。系统通过智能问答帮助用户便捷获取专业医疗知识,通过知识图谱直观呈现疾病关联结构,借助词云分析用户关注热点,同时提供反馈、咨询记录、后台管理等配套功能。整体设计兼顾了普通用户的使用便捷性与管理者的维护需求,提升了医疗信息服务的智能化水平与运营效率。
4、核心代码
python
# -*- coding: utf-8 -*-
from py2neo import Graph
import json
import re
class Neo4jToJson(object):
"""知识图谱数据接口"""
def __init__(self):
"""初始化数据"""
# 与neo4j服务器建立连接
self.graph = Graph('http://localhost:7474',auth=('neo4j','neo4j' ))
self.links = []
self.nodes = []
def all(self):
# 取出所有节点数据
nodes_data_all = self.graph.run("MATCH (n) RETURN n").data()
# node名存储
nodes_list = []
for node in nodes_data_all:
nodes_list.append(node['n']['name'])
for name1 in nodes_list:
# 获取知识图谱中相关节点数据
try:
nodes_data = self.graph.run("MATCH (n)--(b) where n.name='" + name1 + "' return n,b").data()
links_data = self.graph.run("MATCH (n)-[r]-(b) where n.name='" + name1 + "' return r").data()
self.get_select_nodes(nodes_data)
self.get_links(links_data)
except:
continue
# 数据格式转换
neo4j_data = {'links': self.links, 'nodes': self.nodes}
neo4j_data_json = json.dumps(neo4j_data, ensure_ascii=False).replace(u'\xa0', u'')
return neo4j_data_json
def get_sql(self,sql):
nodes_data_all = self.graph.run(sql).data()
def post(self,name):
# 传过来的数据
select_name = name
# 取出所有节点数据
nodes_data_all = self.graph.run("MATCH (n) RETURN n").data()
# node名存储
nodes_list = []
for node in nodes_data_all:
nodes_list.append(node['n']['name'])
# 根据前端的数据,判断搜索的关键字是否在nodes_list中存在,如果存在返回相应数据,否则返回全部数据
for name1 in nodes_list:
if select_name in name1:
# 获取知识图谱中相关节点数据
nodes_data = self.graph.run("MATCH (n)--(b) where n.name='" + name1 + "' return n,b").data()
links_data = self.graph.run("MATCH (n)-[r]-(b) where n.name='" + name1 + "' return r").data()
self.get_select_nodes(nodes_data)
self.get_links(links_data)
break
# 数据格式转换
neo4j_data = {'links': self.links, 'nodes': self.nodes}
neo4j_data_json = json.dumps(neo4j_data, ensure_ascii=False).replace(u'\xa0', u'')
return neo4j_data_json
def get_links(self, links_data):
"""知识图谱关系数据获取"""
links_data_str = str(links_data)
links = []
i = 1
dict = {}
# 正则匹配
links_str = re.sub("[\!\%\[\]\,\。\{\}\-\:\'\(\)\>]", " ", links_data_str).split(' ')
for link in links_str:
if len(link) > 1:
if i == 1:
dict['source'] = link
elif i == 2:
dict['name'] = link
elif i == 3:
dict['target'] = link
self.links.append(dict)
dict = {}
i = 0
i += 1
return self.links
def get_select_nodes(self, nodes_data):
"""获取知识图谱中所选择的节点数据"""
dict_node = {}
for node in nodes_data:
name = node['n']['name']
tag = re.findall("_\d+:(.*?) ",str(node['n']))[0]
dict_node['name'] = name
dict_node['tag'] = tag
self.nodes.append(dict_node)
dict_node = {}
break
for node in nodes_data:
name = node['b']['name']
tag = re.findall("_\d+:(.*?) ",str(node['b']))[0]
dict_node['name'] = name
dict_node['tag'] = tag
self.nodes.append(dict_node)
dict_node = {}
def get_all_nodes(self, nodes_data):
"""获取知识图谱中所有节点数据"""
dict_node = {}
for node in nodes_data:
name = node['n']['name']
tag = node['n']['tag']
dict_node['name'] = name
dict_node['tag'] = tag
self.nodes.append(dict_node)
dict_node = {}
return self.nodes
if __name__ == '__main__':
data_neo4j = Neo4jToJson()
data = data_neo4j.graph.run("""MATCH (p:疾病名称)-[:症状]->(c:症状)
WHERE c.name CONTAINS '精神沉郁、 目光呆滞、反应极慢'
RETURN p.name""").data()
print(data)
print(list(data[0].values())[0])
# data = data_neo4j.all()
# print(data)
# null = 'null'
# print(eval(data))