F076 中医中药知识智能问答与图谱构建研究系统 Vue+Flask+Neo4j

文章结尾部分有CSDN官方提供的学长 联系方式名片
关注B站,私信获取! 麦麦大数据

编号: F076

视频

<<待上传>>

1 系统简介

系统简介:本系统是一个基于Vue+Flask+Neo4j+MySQL构建的《中医中药知识智能问答与图谱构建研究系统》。其核心围绕中医证型、中药信息的数字化管理、智能问答及知识图谱的构建与多维度可视化分析能力展开。

本系统主要面向用户提供中医证型查询、中药推荐、病症知识智能问答等功能,同时面向管理员提供数据分析、用户管理、基础数据维护等系统级管理功能。其关键技术栈涵盖前后端分离架构、图数据库Neo4j、传统关系型数据库MySQL,结合多种文本挖掘算法(如TF-IDF、TextRank、YAKE)完成对数据内容的智能分析。

主要功能模块包括:用户登录与注册、中医证型管理、中药信息展示、知识图谱可视化、智能问答、病症知识推荐、用户画像分析、系统数据管理、个人信息设置等。

2 功能设计

本系统基于Vue + Flask + Neo4j + MySQL架构,采用B/S架构模式,从前端界面设计、后端业务逻辑到数据库管理均实现了模块化和分层设计。


2.1 系统架构图

系统采用经典的三层架构:

  1. 前端层:用户界面构建,基于Vue框架,结合Vuetify组件库打造美观、流畅的交互体验。前端模块通过Axios调用Flask后端接口,使用ECharts和D3.js完成知识图谱和数据分析的可视化展示。
  2. 后端层:基于Flask Web框架构建RESTful API服务,采用SQLAlchemy进行MySQL数据管理,使用Py2Neo与Neo4j图数据库进行交互,为前后端交互提供数据支持。
  3. 数据库层
    • MySQL:用于存储用户、权限、系统配置等结构化数据;
    • Neo4j:用于知识图谱的存储与查询,支持图结构化数据的复杂关系表达。

2.2 功能模块图

系统主要分前端用户界面与后端管理接口两大部分:

  • 前端用户模块:

    • 用户登录、注册、个人信息管理
    • 中医证型信息浏览
    • 中药信息展示与搜索
    • 中医智能问答系统
    • 病症知识推荐系统
    • 知识图谱展示
    • 多维度数据分析与展示
  • 后端管理模块:

    • 用户行为与画像分析
    • 用户管理功能
    • 证型与中药数据管理
    • 数据统计与报表生成
    • 系统配置维护

3 系统功能描述


3.1 登录 & 注册

系统采用身份认证机制,分为普通用户和管理员角色,根据不同的角色权限展示不同的菜单内容。

登录注册界面支持账号切换,前端通过Vuetify实现登录表单,通过Axios发送请求与后台Flask进行数据验证。

  • 登录流程
    • 用户输入用户名和密码
    • 后端验证是否与数据库(MySQL)中的用户匹配
    • 验证通过后返回用户角色,前端根据角色渲染对应界面
  • 注册流程
    • 用户填写用户名、密码、邮箱等基础信息
    • 邮箱格式校验
    • 判断用户名是否唯一
    • 注册信息写入MySQL并发送一封确认邮件

3.2 用户与管理员角色划分

系统根据用户角色(普通用户与管理员用户)渲染不同的菜单与功能页面。前端通过Vue-Router进行页面切换,管理员有访问后台管理模块的权限。


3.3 中医证型信息管理

3.3.1 证型浏览
  • 每个证型以卡片形式展示,包含详细内容(如定义、症状、对应中药等)
  • 支持搜索与筛选功能
  • 提供"喜欢"、"收藏"、"不喜欢"操作功能,提升用户参与度,并作为推荐数据源之一
3.3.2 中药浏览
  • 展示每种中药的基本信息,如图片、功效、适应症状、药理说明等
  • 提供搜索框进行快速筛选
  • 每种中药与对应的证型建立映射关系,支持知识图谱查看

3.4 智能问答功能(中医中药知识问答)

系统通过构建知识图谱及自然语言处理模块,支持用户基于症状、中药名称、功效等关键词发起智能问答。

  • 比对用户输入文本与知识图谱中的实体、关系进行匹配
  • 提供自动补全与语义理解功能,实现"问症状,给出建议"或"问某种中药,说明其功能"
  • 支持问答过程中的上下文记录,以优化后续推荐

3.5 病症知识推荐

系统根据用户搜索历史、点击记录及收藏记录,采用混合推荐算法(基于内容、协同过滤与深度学习模型)进行个性化推荐。

  • 推荐中医证型、病症与中药组合
  • 用户可查看推荐内容并反馈是否喜欢,作为算法优化依据
  • 后台可监控推荐效果,优化推荐逻辑与模型参数

3.6 知识图谱可视化

知识图谱模块是系统的技术核心之一,用户可以选择浏览"药方与药剂"的关联知识。

  • 基于Neo4j,系统构建了中药、证型、病症、处方之间的复杂关系图谱
  • 前端使用ECharts和D3.js进行图谱展示,节点代表实体(如证型、中药),边代表关系(如"适合使用"、"用于治疗")
  • 可拖动、放大缩小、点击查看详细信息

3.7 多维度数据分析

本系统具备多维度的数据分析能力,包括:

  • 病症数据分析

    • 按疾病类别、证候、病位、病性进行图表展示
    • 使用饼图、柱状图、折线图表呈现用户关注热点或系统数据趋势
  • 文本分析

    • 对中药功效、药理、化学成分进行文本挖掘
    • 分别采用TF-IDF(词频-逆文档频率)、TextRank(文本摘要排名)、YAKE(关键词提取)三种算法处理
    • 后台生成关键词或主题词,前端展示为词汇云或关键词列表,便于用户获取重点词义

3.8 用户画像分析

管理员可以通过此模块进行用户行为分析,辅助系统优化与内容推荐策略。

  • 分析方式
    • 对用户浏览、收藏、搜索等行为进行数据统计
    • 按时间维度分析用户行为趋势
    • 提取用户关注的中医证候热点
  • 展示形式
    • 数据图表(折线、柱状图、饼图等)
    • 可选择特定用户单独查看其行为轨迹

3.9 信息可视化加载提示

在进行文本分析处理 (如TF-IDF处理功效)时,处理速度可能较快较慢,因此前端需加入加载状态提示,以增强用户体验。

  • 当用户选择分析维度时,前端显示"正在分析..."状态
  • 分析完成后返回结果展示

3.10 系统用户管理(管理员功能)

管理员拥有更高权限,可以对系统用户进行以下操作:

  • 用户增删改查
  • 查看用户详情(点击行为、收藏记录、注册时间等)
  • 设置账号状态(启用/禁用)
  • 生成用户画像报告

3.11 证型与中药数据管理

管理员可维护系统核心数据,包括:

  • 添加、删除、编辑证型、中药条目(名称、定义、成分、适应症等)
  • 配置数据字段(如是否公开、是否启用推荐等)
  • 所有配置操作记录均存入MySQL供后续查询
  • 证型、中药可配置为可否添加到知识图谱

3.12 个性化设置模块

该模块面向所有用户,允许其根据自身需求进行个性化设置:

  • 修改个人信息:可设置姓名、年龄、电话、地址,并选择预设头像
  • 密码修改:输入用户旧密码和新密码,通过后台验证后完成更新
  • 所有信息更新均通过Flask API完成,并与MySQL数据库同步

4 程序核心算法代码

4.1 代码说明

系统的核心算法包括:

  1. TF-IDF分析中药功效: 通过计算关键词在每条功效中的重要性,提取关键词。
  2. TextRank分析中药药理: 结构化的摘要提取,用于推荐中药适应症。
  3. YAKE分析化学成分: 通过文本中的上下文位置与重复频率,提取中药的化学关键成分词。
  4. 混合推荐算法: 根据用户点击、搜索与收藏记录,进行内容推荐或个性化知识展示。

4.2 流程图

(建议展示从用户输入到生成推荐结果的流程)


4.3 代码实例

Python示例:Flask后端调用Neo4j获取知识图谱数据
python 复制代码
from flask import Flask, request, jsonify
from py2neo import Graph
import json

app = Flask(__name__)
neo4j_graph = Graph("bolt://localhost:7687", auth=("neo4j", "password"))

@app.route('/api/zhongyi/graph', methods=['GET'])
def get_knowledge_graph():
    label = request.args.get('label')    # 动态标签如"证型"或"中药"
    query = """
    MATCH (n:`{}`)-[r]->(m)
    RETURN n.name AS source, type(r) AS relation, m.name AS target
    LIMIT 50
    """
    if not label or label not in ["证型", "中药"]:
        return jsonify({"error": "无效标签"})

    results = neo4j_graph.run(query.format(label))
    data = [{"source": r["source"], "relation": r["relation"], "target": r["target"]} for r in results]
    return jsonify({"nodes": results.unique(), "relationships": data})
Cypher 示例:获取与"气滞血瘀"相关的中药关系图谱
cypher 复制代码
MATCH (n:证型 {name: '气滞血瘀'})-[r:适合使用]->(m:中药)
RETURN n.name AS source, type(r) AS relation, m.name AS target

如果你对本系统感兴趣,或者需要源码、文档、演示视频,欢迎关注B站账号,私信获取资料!

作者:麦麦大数据

文章编号:F076

CSDN官方提供的联系方式


相关推荐
英俊潇洒美少年1 小时前
vue confirm、messageBox等弹窗关闭后焦点残留问题
前端·javascript·vue.js
harrain2 小时前
vue3怎么扩展第三方依赖库内部逻辑(拿element plus举例)
前端·javascript·vue.js·elementui
_xaboy2 小时前
开源Vue组件-动态表单组件设计,告别重复CRUD,JSON一键生成表单
前端·vue.js·低代码·开源·json
曲幽3 小时前
FastAPI异步多线程:从踩坑到精通,解锁高性能API的正确姿势
python·flask·fastapi·web·thread·async·httpx·asyncio
HWL56793 小时前
Vue Router中,传递参数的几种方式
前端·javascript·vue.js
高洁013 小时前
知识图谱在装备领域应用场景
python·深度学习·机器学习·数据挖掘·知识图谱
Eiceblue3 小时前
Vue文档编辑器(Word默认功能)示例
前端·vue.js·word
Mr Xu_3 小时前
在 Vue 3 中集成 WangEditor 富文本编辑器:从基础到实战
前端·javascript·vue.js
光影少年3 小时前
react和vue中的优点和缺点都有哪些
前端·vue.js·react.js