文章结尾部分有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 功能模块图

主要功能模块有:
- 登录与注册模块
- 主页推荐模块(药方协同过滤推荐)
- 药方搜索模块(卡片式展示药方信息)
- 药材搜索模块(卡片式展示药材信息)
- 数据大屏展示模块(使用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