计算机毕业设计:Python基于知识图谱的医疗问答系统 Neo4j 机器学习 BERT 深度学习 ECharts(建议收藏)✅

博主介绍:✌全网粉丝50W+,前互联网大厂软件研发、集结硕博英豪成立软件开发工作室,专注于计算机相关专业项目实战6年之久,累计开发项目作品上万套。凭借丰富的经验与专业实力,已帮助成千上万的学生顺利毕业,选择我们,就是选择放心、选择安心毕业✌
> 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与我联系了。🍅

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

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

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

2、最全计算机大数据专业毕业设计选题大全(建议收藏)✅

1、项目介绍

技术栈

Python、Django/Flask、Neo4j图数据库、深度学习模型(如BERT)、ECharts数据可视化、Py2neo驱动。

功能模块

· 系统首页模块(数据统计与折线图可视化)

· Neo4j知识图谱可视化模块

· 智能问答聊天模块(对话式交互)

· 问答记录管理模块(列表展示、搜索、分页、删除)

· 用户个人信息模块

· 登录与注册模块

· 后台运维管理模块(问答与用户数据管理)

整个项目介绍

该系统基于知识图谱与深度学习技术,构建医疗智能问答平台。后端利用Neo4j存储疾病、药品、症状等实体及其关联关系,并通过前端图形化界面直观展示知识结构。用户可在对话窗口输入问题,系统返回知识图谱支撑的专业解答。平台提供问答记录管理、用户信息查看及后台数据运维功能,同时以折线图展示每日问答量等核心统计指标,实现医疗知识交互、数据可视化与全流程管理。

2、项目界面

基于知识图谱的医疗问答系统首页

该页面展示系统核心统计数据,以折线图可视化呈现每日问答数量变化趋势,帮助管理员直观了解系统用户活跃度与问答业务的运行情况。

基于知识图谱的医疗问答系统数据库可视化界面

该界面为Neo4j数据库管理页面,通过节点与关系图谱直观展示医疗知识图谱中的实体及关联,支持Cypher查询,可可视化查看疾病、症状、药物等实体及其相互关系,辅助医疗知识的构建与分析。

基于知识图谱的医疗问答系统医疗问答界面

该界面提供对话式交互窗口,用户可在输入框中提交医疗问题,通过发送按钮与系统进行问答,系统会返回基于知识图谱的专业解答,实现医疗知识的智能交互查询。

基于知识图谱的医疗问答系统问答管理界面

该界面以列表形式展示用户的医疗问答记录,包含问题、回答、提问人及创建时间,支持搜索、分页和删除操作,方便管理员查看与管理系统中的历史问答数据。

基于知识图谱的医疗问答系统医疗问答界面

该界面为对话式交互窗口,用户可在输入框中提交医疗问题,系统会返回基于知识图谱的专业解答,支持发送与清空操作,实现医疗知识的智能问答交互。

基于知识图谱的医疗问答系统个人信息界面

该界面以表格形式展示用户的个人信息,包含ID、姓名、联系方式、角色、创建时间及最后修改时间,用于用户查看与管理自身账号的基础信息。

用户登录界面

该界面为系统登录入口,提供账户、密码和验证码输入框,支持用户完成身份验证并登录系统,同时设有注册入口,方便新用户创建账号。

后台管理系统界面

该界面为系统后台管理中心,提供问答信息表、用户管理及认证和权限等模块,支持对相关数据进行增加和修改操作,方便管理员维护系统数据与用户权限。

基于知识图谱的医疗问答系统知识图谱可视化界面

该界面为Neo4j数据库可视化页面,以节点和关系图谱的形式直观展示医疗知识图谱中的实体及关联,可清晰呈现疾病、症状、药物等不同类型实体间的相互关系,辅助医疗知识的构建与分析。

3、项目说明

一、技术栈简要说明

本系统后端采用Python语言开发,结合Django或Flask框架构建Web服务。数据层使用Neo4j图数据库存储医疗实体及其关联关系,通过Py2neo驱动实现Python与数据库的交互。智能问答模块引入深度学习模型BERT进行语义理解与意图识别。前端使用ECharts实现数据可视化图表,知识图谱展示部分调用Neo4j自带的可视化组件。

二、功能模块详细介绍

· 系统首页模块(数据统计与折线图可视化)

该模块展示系统收录用户数、问答总数等核心统计数据,并通过折线图呈现每日问答量的变化趋势。管理员可以直观了解系统活跃度与问答业务运行情况,为运营决策提供数据支撑。

· Neo4j知识图谱可视化模块

该模块以节点和关系图谱形式展示医疗知识图谱中的实体及关联。疾病、药品、症状等不同类型实体以多色节点区分,支持Cypher查询,可清晰呈现感冒等疾病与药品、食物之间的相互关系,辅助医疗知识的构建与分析。

· 智能问答聊天模块(对话式交互)

该模块提供对话式交互窗口,用户可在输入框中提交医疗问题,支持发送和清空操作。系统接收问题后基于知识图谱返回专业解答,实现医疗知识的智能问答交互,提升用户咨询体验。

· 问答记录管理模块(列表展示、搜索、分页、删除)

该模块以列表形式展示用户的医疗问答记录,包含问题内容、系统回答、提问人及创建时间等信息。支持按关键词搜索历史记录、分页浏览以及单条或多条删除操作,方便管理员管理系统的历史问答数据。

· 用户个人信息模块

该模块以表格形式展示用户的个人信息,包括用户ID、姓名、联系方式、角色、创建时间及最后修改时间。用户可在此查看与管理自身账号的基础资料,保障个人信息的准确性与安全性。

· 登录与注册模块

该模块作为系统身份验证入口,提供账户、密码和验证码输入框,支持用户完成登录。同时设有注册入口,方便新用户创建账号,保障系统的访问安全与用户管理规范性。

· 后台运维管理模块(问答与用户数据管理)

该模块为后台管理系统核心,提供问答信息表和用户管理等功能入口。管理员可对问答内容进行修改、批量操作,对用户数据进行增删改查及权限配置,实现系统数据的全流程运维管理。

三、项目总结

本系统基于知识图谱与深度学习技术,构建了一套完整的医疗智能问答平台。后端利用Neo4j存储疾病、药品、症状等实体及其关联关系,通过前端图形化界面直观展示知识结构。用户可在对话窗口输入问题,系统调用BERT模型进行语义解析并返回知识图谱支撑的专业解答。平台提供问答记录管理、用户信息查看及后台数据运维功能,同时以折线图展示每日问答量等核心统计指标。系统涵盖登录注册、首页统计、知识图谱可视化、智能问答、问答管理、个人信息及后台运维等完整功能模块,实现了医疗知识智能交互、数据可视化与全流程管理,具备良好的实用性与可扩展性。

4、核心代码

python 复制代码
import datetime

from django.core.paginator import Paginator
from django.http import HttpResponseRedirect, HttpResponse, HttpResponseForbidden, JsonResponse
from django.shortcuts import render
from user.models import User
from .models import Medical
from .knowledge.chatbot_graph import main
def login(req):
    """
    跳转登录
    :param req:
    :return:
    """
    return render(req, 'login.html')
def day_get():
    d = datetime.datetime.now()
    # 通过for 循环得到天数,如果想得到两周的时间,只需要把8改成15就可以了。
    for i in range(0, 7):    # 1,8
        oneday = datetime.timedelta(days=i)
        day = d - oneday
        date_to = datetime.datetime(day.year, day.month, day.day)
        yield str(date_to)[0:10]


def get_recent_seven_day():
    """
    获取最近的七天日期
    @return:
    """
    qq = day_get()
    day_list = []
    for obj in qq:
        day_list.append(obj)
    list_week_day = day_list[::-1]
    return list_week_day


def register(req):
    """
    跳转注册
    :param req:
    :return:
    """
    return render(req, 'register.html')


def index(req):
    """
    跳转首页
    :param req:
    :return:
    """
    username = req.session['username']
    total_user = len(User.objects.all())
    total_wd = Medical.objects.count()
    date = datetime.datetime.today()
    month = date.month
    year = date.year
    seven_days = get_recent_seven_day()
    seven_data_dict = dict.fromkeys(seven_days, 0)
    for i in seven_days:
        d = datetime.timedelta
        r = Medical.objects.filter(create_time=i).all()
        if r:
            seven_data_dict[i] = r.count()
    seven_count_list = [seven_data_dict[x] for x in seven_days]
    return render(req, 'index.html', locals())


def login_out(req):
    """
    注销登录
    :param req:
    :return:
    """
    del req.session['username']
    return HttpResponseRedirect('/')


def personal(req):
    username = req.session['username']
    role_id = req.session['role']
    user = User.objects.filter(name=username).first()
    return render(req, 'personal.html', locals())

def wechat(req):
    username = req.session.get('username','admin')
    return render(req, 'wechat.html', locals())


def qa(request):
    text = request.POST.get('text')
    print(text)
    result = main(text)
    username = request.POST.get('username','admin')
    Medical.objects.create(
        question=text,
        answer=result,
        owner=username,
        create_time=str(datetime.datetime.now().strftime("%Y-%m-%d"))
    )
    return JsonResponse({'result':result})
def wdgl(request):
    username = request.session.get('username', 'admin')
    return render(request, 'wdgl.html', locals())
def get_wd(request):
    """
    获取用户列表信息 | 模糊查询
    :param request:
    :return:
    """
    keyword = request.GET.get('name')
    page = request.GET.get("page", '')
    limit = request.GET.get("limit", '')
    role_id = request.GET.get('position','')
    response_data = {}
    response_data['code'] = 0
    response_data['msg'] = ''
    data = []
    if keyword is None:
        results_obj = Medical.objects.all()
    else:
        results_obj = Medical.objects.filter(question__contains=keyword).all()
    paginator = Paginator(results_obj, limit)
    results = paginator.page(page)
    if results:
        for result in results:
            record = {
                "id": result.id,
                "question": result.question,
                "answer": result.answer,
                "owner": result.owner,
                'create_time': result.create_time,
            }
            data.append(record)
        response_data['count'] = len(results_obj)
        response_data['data'] = data

    return JsonResponse(response_data)


def delete_wd(request):
    """
    删除
    """
    user_id = request.POST.get('id')
    result = Medical.objects.filter(id=user_id).first()
    try:
        if not result:
            response_data = {'error': '删除失败!', 'message': '找不到id为%s' % user_id}
            return JsonResponse(response_data, status=403)
        result.delete()
        response_data = {'message': '删除成功!'}
        return JsonResponse(response_data, status=201)
    except Exception as e:
        response_data = {'message': '删除失败!'}
        return JsonResponse(response_data, status=403)

5、源码获取方式

相关推荐
沪漂阿龙1 小时前
面试题:传统序列模型详解——RNN、LSTM、GRU 原理、区别、优缺点一文讲透
人工智能·rnn·深度学习·gru·lstm
m0_596749091 小时前
SQL统计分组内的所有数据唯一值_使用DISTINCT汇总
jvm·数据库·python
WL_Aurora1 小时前
备战蓝桥杯国赛【Day 11】
python·蓝桥杯
m0_609160491 小时前
Golang项目目录结构如何组织_Golang项目结构教程【核心】
jvm·数据库·python
YangYang9YangYan1 小时前
2026营销策划岗学数据分析的价值
数据挖掘·数据分析·产品经理
Dust-Chasing1 小时前
Claude Code源码剖析 - Phase1
人工智能·python·ai
m0_463672201 小时前
如何优雅处理SQL存储过程异常_使用TRY-CATCH块机制
jvm·数据库·python
li星野1 小时前
动态规划十题通关:从爬楼梯到编辑距离(Python + C++)
c++·python·学习·算法·动态规划
ㄟ留恋さ寂寞1 小时前
HTML5中SharedWorker生命周期与浏览器进程关闭的关系
jvm·数据库·python