文章结尾部分有CSDN官方提供的学长 联系方式名片
文章结尾部分有CSDN官方提供的学长 联系方式名片
关注B站,私信获取! 麦麦大数据
编号: F063
视频
F063知识图谱中成药推荐与知识科普平台
1 系统简介
系统简介:本系统是一个基于Vue+Flask+MySQL+Neo4j构建的基于知识图谱的中成药推荐与养生知识平台 。其核心功能围绕智能医药推荐、养生知识传播与后台数据管理。主要功能模块包括:用户端的智能推荐、在线开药、养生内容浏览与互动,以及管理员端的知识图谱构建、药库管理、新闻管理、用户管理与数据可视化分析。
2 功能设计
该系统采用前后端分离的B/S架构模式,基于Vue+Flask+MySQL+Neo4j技术栈实现。前端通过Vue.js框架搭建响应式界面,结合Element UI等组件库提供友好的用户交互体验,使用Vue-Router进行页面路由管理,Axios实现与后端的异步数据交互。Flask后端负责构建RESTful API服务,通过Sqlalchemy操作MySQL数据库存储用户信息、新闻、用药记录等结构化数据,PyMySQL作为MySQL驱动支持。Neo4j作为图数据库,用于存储和查询由知识图谱构建的药物、病症、养生等关系数据。在智能推荐 功能方面,系统采用paraphrase-MiniLM-L6-v2(一个预训练的句子嵌入模型)对用户的症状描述进行语义理解,并在Neo4j图谱中寻找语义最相似的匹配药物,从而实现精准推荐。
2.1系统架构图

系统架构分为前端、后端和数据层。用户通过浏览器访问前端(Vue)界面,前端通过HTTP请求与Flask后端进行通信。Flask后端负责处理业务逻辑,并与MySQL和Neo4j进行数据交互。MySQL用于存储常规的结构化数据,如用户信息、新闻、用药历史等;Neo4j则负责存储和查询动态的知识图谱数据。系统还包含一个Python爬虫程序,用于从外部网站抓取养生知识,并将其存储到MySQL中,供后续构建知识图谱使用。
2.2 功能模块图

主要功能模块有:
- 用户端模块 :
- 登录 & 注册
- 智能推荐
- 在线开药
- 养生科普和新闻
- 用药历史
- 反馈
- 个人信息设置
- 管理员端模块 :
- 养生数据采集
- 知识图谱构建
- 知识图谱可视化
- 药库管理
- 新闻管理
- 用户管理
- 可视化分析
- 权限管理
3.1 登录 & 注册
登录注册做的是一个可以切换的登录注册界面,点击去登录后者去注册可以切换。登录需要验证用户名和密码是否正确,密码需经过哈希加密后与数据库中的信息进行比对。注册时,系统会验证用户名是否已存在,并对新用户信息进行合法性校验。


3.2 智能推荐
用户在输入框中描述自己的症状(如"嗓子疼"、"咳嗽"等),系统会将这些文本输入到paraphrase-MiniLM-L6-v2模型中,生成一个语义向量。后端在Neo4j图谱中搜索与该向量最相似的节点(代表药物),并返回推荐的药物列表。用户可以根据推荐结果选择开药。


3.3 在线开药
在智能推荐页面,用户点击推荐的药物后,进入在线开药页面。用户可填写购买数量等信息,确认订单后,系统会将用药记录写入MySQL数据库的"用药历史"表中。同时,系统会为用户生成药品的购买链接或提供购买指引。

3.4 养生新闻&养生科普
用户可以浏览养生科普和养生新闻列表,点击进入详情页面查看具体内容。在详情页,用户可以对文章进行点赞和评论。系统通过Ajax请求将用户的点赞和评论信息实时提交到后端,存储到数据库中。



3.5 用药历史
用户登录后可以查看自己过去的所有用药记录,包括药物名称、使用时间、用药时长等信息。用户可以按时间筛选历史记录。

3.6 反馈
用户可以通过反馈模块提交自己的意见或建议。系统会将反馈内容存储到数据库,供管理员查阅和处理。

3.7 个人信息设置
个人信息设置方面包含了用户信息修改、密码修改功能。
用户信息修改中可以上传头像,完成用户的头像个性化设置,也可以修改用户其他信息。上传头像时,前端使用File API选择本地图片,通过FormData传给后端,后端将图片保存到指定目录,并在数据库中更新用户信息。
修改密码需要输入用户旧密码和新密码,验证旧密码成功后,就可以完成密码修改。


3.8 养生数据采集
管理员通过后台的"养生数据采集"功能,可以启动爬虫程序。爬虫会从预先配置的养生知识网站抓取文章,提取出标题、内容、发布时间等字段,并将数据存入MySQL中的"养生知识"表中,为后续的知识图谱构建提供原始数据。
3.9 知识图谱构建
管理员在后台"知识图谱构建"功能中,可以启动图谱生成程序。该程序会调用py2neo库连接Neo4j,读取MySQL中"养生知识"表的文本,通过自然语言处理技术(如实体识别、关系抽取)解析出药物、病症、养生方法等实体及其关系,并将其作为节点和关系写入Neo4j图数据库中,完成知识图谱的构建。


3.10 知识图谱可视化
系统利用D3.js在前端实现知识图谱的动态可视化展示。管理员可以在可视化界面中搜索特定实体(如"感冒"),查看其关联的药物和症状节点。用户可以进行放大、缩小、拖拽、点击查看节点详细信息等交互操作,直观地了解药物之间的关联。

3.11 药库管理
管理员可以对中成药库进行管理。通过增删改查操作,可以维护药品信息,如药品名称、药品成分、主要功效、适应症、禁忌症等,数据存储于MySQL的"药库"表中。


3.12 新闻管理
管理员可以管理养生新闻。支持添加、修改、删除新闻,新闻内容支持富文本编辑(如添加图片、链接等)。新闻数据存储于MySQL的"新闻"表中。


3.13 用户管理
管理员可以查看、修改、删除用户信息。包括用户的基本信息和注册状态,所有操作均通过管理员面板在MySQL中进行。

3.14 可视化分析
系统提供数据可视化分析功能,管理员可以查看:
- 用户留存度分析:统计每日、每周、每月的用户登录情况。
- 用户活跃度分析:分析用户使用系统的频率、时长等。
- 用户满意度分析:通过分析用户反馈的词云,了解用户对系统的整体评价和关注点。
- 用户反馈词云 :将用户提交的反馈文本进行分词和词频统计,生成词云图,直观展示用户最常提及的关键词。


3.15 权限管理
系统采用RBAC(基于角色的访问控制)模型。管理员可以创建不同的角色(如普通用户、管理员),并为每个角色分配可以访问的菜单和执行的操作权限,确保系统安全和数据隔离。

4程序核心算法代码
4.1 代码说明
代码介绍:
- 文本相似度计算 :使用
sentence_transformers库中的paraphrase-MiniLM-L6-v2模型,将用户输入的症状文本和知识图谱中的药物描述文本转换为向量,再计算余弦相似度,找出最相似的药物。 - 知识图谱构建 :使用Python的
py2neo库,结合NLP技术,从养生文本中提取实体和关系,批量写入Neo4j数据库。 - D3.js图谱渲染:利用D3.js库的力导向图(Force-Directed Graph)算法,动态展示Neo4j中的知识图谱节点和连接。
4.2 流程图
用户输入症状
调用paraphrase-MiniLM-L6-v2模型生成向量
在Neo4j中查询语义相似度最高的药物
返回推荐药物列表
前端展示推荐结果
用户选择开药
记录用药历史
4.3 代码实例
python
# 1. 使用sentence_transformers进行语义相似度计算
from sentence_transformers import SentenceTransformer, util
# 加载预训练模型
model = SentenceTransformer('paraphrase-MiniLM-L6-v2')
# 用户输入的症状描述和知识图谱中的药物描述
symptom = "嗓子疼"
medicines = ["板蓝根颗粒", "银翘解毒片", "川贝枇杷膏"]
# 将症状和药物描述转换为向量
symptom_embedding = model.encode(symptom)
medicine_embeddings = model.encode(medicines)
# 计算余弦相似度
cosine_scores = util.cos_sim(symptom_embedding, medicine_embeddings)
# 找出相似度最高的药物
top_results = util.semantic_search(cosine_scores, medicines, top_k=1)
sql
-- 2. Neo4j数据库中创建节点和关系
CREATE (m:Medicine {name: '板蓝根颗粒', effect: '清热解毒', symptom: '喉咙痛'})
CREATE (s:Symptom {name: '喉咙痛'})
CREATE (m)-[:TREATS]->(s)
关注B站,私信获取! 麦麦大数据
文章结尾部分有CSDN官方提供的学长 联系方式名片
文章结尾部分有CSDN官方提供的学长 联系方式名片