F066 vue+flask中医草药靶点知识图谱智能问答系统|中医中药医学知识图谱

文章结尾部分有CSDN官方提供的学长 联系方式名片

文章结尾部分有CSDN官方提供的学长 联系方式名片

关注B站,私信获取! 麦麦大数据

编号: F066

视频

F066-中药草药成分靶点知识图谱智能问答系统

1 系统简介

系统简介:本系统是一个基于Vue+Flask+Neo4j构建的中医草药成分可视化分析系统。其核心功能围绕中药药方、药材、成分、靶点之间的复杂关系展开,支持知识图谱构建、智能问答、推荐系统与数据可视化分析。主要功能模块包括:登录注册、主页推荐、药方搜索、药材搜索、数据大屏展示、关键词分析、知识图谱查询与智能问答。

2 功能设计

该系统采用前后端分离的B/S架构模式,基于Vue+Flask+Neo4j技术栈实现。前端通过Vue.js框架搭建响应式界面,结合Element UI组件库提供友好的用户交互体验,使用Vue-Router进行页面路由管理,Axios实现与后端的异步数据交互。Flask后端负责构建RESTful API服务,通过Flask-RESTful扩展,利用SQLAlchemy 操作MySQL数据库存储用户信息、学习记录等结构化数据,PyMySQL作为MySQL驱动支持。

知识图谱构建 方面,系统采用Python脚本读取Excel、CSV数据文件,解析药方、药材、成分、靶点等结构化数据,通过Neo4j图数据库构建实体关系网络,实现多维度关联查询。在推荐系统 功能方面,系统采用协同过滤算法对药方进行智能推荐;在自然语言处理方面,系统集成LTP语义分析框架进行实体识别,结合图数据库查询实现智能问答服务。

2.1 系统架构图

系统采用分层架构设计,前端为Vue框架构建的单页面应用(SPA),通过Axios与Flask后端通信。后端使用Flask RESTful API提供数据接口,通过SQLAlchemy操作MySQL数据库,同时利用Py2neo库与Neo4j图数据库交互,实现高效的图数据存储与查询。数据输入层支持Excel/CSV文件导入,用于批量构建知识图谱。整个系统支持用户交互、数据可视化、文本挖掘与智能推理等多种功能。

2.2 功能模块图

主要功能模块有:

  1. 登录与注册模块
  2. 主页推荐模块(药方协同过滤推荐)
  3. 药方搜索模块(卡片式展示药方信息)
  4. 药材搜索模块(卡片式展示药材信息)
  5. 数据大屏展示模块(使用ECharts进行统计可视化)

3.1 登录 & 注册


登录注册做的是一个可以切换的登录注册界面,点击"去注册"或"去登录"可以切换对应表单。登录需要验证用户名和密码是否正确,后端通过Flask验证用户身份,成功后返回JWT令牌进行后续请求鉴权。

3.2 主页:药方推荐

主页展示轮播图展示热门方剂与特色推荐,下方采用协同过滤推荐算法,根据用户历史浏览行为和相似用户的偏好推荐个性化药方,提升用户体验。

3.3 方剂搜索

以卡片形式展示药方信息,点击可查看详细内容,包括药方组成、功效、适应症、使用方法等,并支持图片展示,方便用户查阅。

3.4 药材搜索

以卡片形式展示药材信息,包括药材图片、别名、性味归经、功效主治、使用禁忌等,用户可通过关键词快速查找所需草药。

3.5 数据大屏

使用ECharts进行可视化分析制作的中药数据大屏,包括方剂类型分布、典籍来源统计、药材使用频率等维度的图表展示,支持动态交互与多维筛选,为用户提供直观的数据洞察。

3.6 关键词分析 & 词云分析


通过TF-IDF算法TextRank算法对中医文献文本进行主题词提取与关键词分析,将高权重关键词生成词云图,直观展示文本核心内容,辅助用户进行主题理解。

3.7 知识图谱



提供交互式知识图谱查询界面,用户可通过输入药方、药材、成分或靶点,查询其在图谱中的相关实体及关系,实现多跳推理与路径探索。

3.8 智能问答

基于LTP(深度学习中文语言处理平台)进行实体识别,识别用户输入中的"症状"、"病名"、"药方"、"药材"等关键词,自动构建图查询语句,通过Neo4j查询对应关系并返回结构化结果。

支持以下问题类型:

  • 症状问病症:例如"恶寒发热属于什么病?"
  • 病症问药方:例如"气虚外感风寒怎么治疗?"
  • 药方问药材:例如"麻黄汤包含哪些药材?"
  • 药材问方剂:例如"用于咳嗽痰白的药方有哪些?"

3.9 个人设置


个人设置方面包含了用户信息修改、密码修改功能。

用户信息修改中可以上传头像,完成用户的头像个性化设置,也可以修改用户其他信息。

修改密码需要输入用户旧密码和新密码,验证旧密码成功后,就可以完成密码修改。

3.10 构建知识图谱

系统支持通过Python脚本读取Excel或CSV格式的中药数据文件,自动提取药方、药材、成分、靶点等实体,并建立它们之间的属性与关系,实时更新到Neo4j图数据库中。支持查看构建进度,提升数据处理的透明度与可控性。

3.11 修改头像与用户信息

用户可上传本地图片作为头像,系统自动进行尺寸裁剪与压缩处理,并保存至服务器,同时支持修改昵称、性别、联系方式等基本信息。

4 程序核心算法代码

4.1 代码说明

核心代码包括:

  • Python数据导入模块:用于读取Excel/CSV文件,解析中药数据。
  • Neo4j图数据库操作模块:利用Py2neo库与Neo4j交互,构建节点与关系。
  • 协同过滤推荐算法:基于用户-药方评分矩阵生成推荐列表。
  • LTP智能问答模块:完成中文句子的分词、词性标注、命名实体识别(NER)。
  • TF-IDF与TextRank关键词提取算法:用于文本内容的关键词挖掘与展示。

4.2 流程图

(此处可插入流程图说明:如用户请求 → 前端调用API → 后端解析 → Neo4j查询 → 返回结果 → 前端渲染)

4.3 代码实例

python 复制代码
# 1. 读取Excel文件构建知识图谱(示例)
import pandas as pd
from py2neo import Graph

# 连接Neo4j
graph = Graph("bolt://localhost:7687", auth=("neo4j", "password"))

# 读取药方数据
df_prescription = pd.read_excel("prescriptions.xlsx")
df_ingredient = pd.read_excel("ingredients.xlsx")

# 构建药方与药材关系
for _, row in df_prescription.iterrows():
    prescription_name = row['方剂名称']
    # 创建药方节点
    graph.run("MERGE (p:Prescription {name: $name}) RETURN p", name=prescription_name)
    # 关联药材
    ingredients = row['药材'].split(',')
    for ing in ingredients:
        graph.run("""
            MATCH (p:Prescription {name: $p_name})
            MERGE (i:Ingredient {name: $ing_name})
            MERGE (p)-[:CONTAINS]->(i)
        """, p_name=prescription_name, ing_name=ing.strip())
sql 复制代码
-- 2. Neo4j图查询:查询某药方的药材组成
MATCH (p:Prescription {name: "麻黄汤"})-[:CONTAINS]->(i:Ingredient)
RETURN p.name AS prescription, i.name AS ingredient
相关推荐
fengyucaihong_1232 小时前
vue加声音播放
javascript·vue.js·ecmascript
华仔啊2 小时前
Vue3 的设计目标是什么?相比 Vue2 做了哪些关键优化?
前端·vue.js
鹏多多2 小时前
前端纯js实现图片模糊和压缩
前端·javascript·vue.js
Aliex_git2 小时前
Vue 2 - 模板编译源码理解
前端·javascript·vue.js·笔记·前端框架
Irene19912 小时前
Vue:Props 和 Emits 对比总结
vue.js·props·emits
saadiya~2 小时前
实战笔记:在 Ubuntu 离线部署 Vue + Nginx 踩坑与避雷指南
vue.js·笔记·nginx
随祥4 小时前
Tauri+vue开发桌面程序环境搭建
前端·javascript·vue.js
老华带你飞13 小时前
农产品销售管理|基于java + vue农产品销售管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
C_心欲无痕13 小时前
vue3 - 类与样式的绑定
javascript·vue.js·vue3