基于vue+neo4j 的中药方剂知识图谱可视化系统
前言
历时一周时间,中药大数据R02系统中药开发完毕,该系统通过scrapy工程获取中药数据,使用python pandas预处理数据生成知识图谱和其他相关数据,利用vue+springboot+neo4j+mysql 开发系统,具体功能请看本文介绍。
简要介绍
🩵编码:R02
🩵网站端:neo4j知识图谱+推荐算法、药方查询(带图谱)、中药查询,数据下钻、产地地图、数据纠错,中医中药资讯新闻
🩵管理端:药方、药材、资讯、用户的增删改查管理等
🩵大屏端:超酷知识图库结合可视化
🩵架构: 3+1+2架构 三前端一后端双数据库
🩵技术:vue+springboot+neo4j+mysql (java开发为主)
🩵数据来源:包含scrapy爬虫,数据预处理,图谱生成
🩷展望:R02 ultra版本正在开发,将会升级AI大模型中医问答+药材识别两大超强超实用吊打答辩老师的功能
视频演示
解说vue+neo4j知识图谱中药大数据+推荐算法+neo4j知识图谱+可视化 java开发vue+springboot
系统功能架构图

爬虫流程

网站端介绍
药材推荐
集成推荐算法,提供个性化药材推荐,帮助用户根据不同需求选择合适的药材。算法方面集成usercf和itemcf两种算法。药材卡片可以点击下钻:

中医知识图谱
中医知识图谱,模糊搜索功能的集成,并且支持力导向图和环形布局两种布局模式之间的切换:

切换到环形视图:

模糊搜索石斛:

中医方剂和药材可视化:
提供中医方剂及其药材的可视化展示,用户可以方便地查询方剂及其组成药材,并深入了解每种药材的特性。
查询功能:
用户可根据中药和方剂进行查询,支持根据方剂查询药材构成,并查看相关知识图谱。用户可下钻至具体药材界面进行详细了解,并可对药材进行评论,利用 LSTM 算法进行情感分析,以获取用户反馈。

在方剂的详情页面中可以查看这个处方的【例如阿魏麝香散】构成的药材的知识图谱,下面褐色的就是构成的药材,这个药材是可以点击的,点击之后进行下钻,下钻到药材


同时也支持单独的查询药材


系统支持留言评论功能,用户可以与其他用户进行互动,分享经验和见解。这个留言可以通过后台的paddle飞浆模型情感分析其情感倾向

中医资讯浏览:
提供最新的中医资讯,帮助用户获取中医领域的最新动态和研究成果。支持点赞、评论、收藏等操作:


中药产地地图可视化:
根据药材名称在中国地图上高亮显示重要产地,用户可在此界面提交纠错信息,管理员收到后可进行处理,确保信息的准确性。
比如输入青藤子:

用户管理与安全性:
提供用户注册和登录功能,通过阿里云短信验证码确保密码修改的安全性。


技术架构
前端: 使用 Vue.js 构建用户友好的界面,确保良好的用户体验。
后端: 采用 Spring Boot 构建高效的服务端逻辑,支持大并发请求。
数据存储:
Neo4j: 存储和管理中医知识图谱,支持复杂的关系查询。
MySQL: 用于存储其他信息数据,实现高效的数据管理。
大屏端介绍
数据大屏,数据大屏支持各种不同形式的展示

force图展示

环形图展示

图谱构造部分

neo4j截图部分


整个大屏通过丰富的图表与数据展示了中医药材和药方的多维度信息,包括用户注册数量、中药药材和药方的记录数、热门词汇图、性味比例、中药产地分布及注册情况等。
详细部分
顶部区域:展示了系统的总体统计信息,包括平台总用户数、中药药材记录数和中药药方记录数,为用户提供整体数据的概览。
左上角图表:展示了各种古籍的收录排行,说明了中药材信息主要来源于哪些古籍,反映了古籍在中医药材数据中的重要性。
左下角图表:展示性味比例图,不同颜色的扇形代表不同性味的中药材数量占比,帮助用户直观了解中医药性味的分布情况。
中部主要区域:中药药方关系图谱展示了不同药方和药材之间的关系,节点以 “Book” 和 “Prescription” 两种颜色区分,青色节点代表书籍,橙色节点代表药方,各个节点之间的连线展示了它们之间的关系,帮助识别药材和药方的联系网络。
右上角图表:通过词云图展示了中药相关的大数据热词,可以用户快速了解当前中药领域的热点话题和研究方向。
右中部图表:中药产地分布图,通过辐射状的图形展示了中药材的主要产地分布信息,图上的不同区域代表不同省份,每个省份用不同的颜色标记。
右下角时间轴:展示了项目的设计过程和时间节点,包括服务器端开发、前端页面设计、数据爬取和大屏设计等步骤,帮助用户了解该项目的开发过程和时间线。
左下角登陆情况:折线图展示了用户登录的时间分布情况,通过数据点和连线观察用户访问的高峰和低谷时段。
这个大屏将复杂的中药材和药方数据通过可视化方式展示出来,为用户提供了一目了然的中药材数据查询和分析服务,充分展现了中医药数据的多样性和丰富性。
管理端介绍
提供主页功能:管理员可以直观查看系统数据情况、用户登录的信息、3D词云

用户信息管理:可以进行用户增删改查的操作

中药材信息查询:用户可以点击系统名称进行模糊查询,或通过搜索框自主输入想要查询的信息进行中药材查询,另外支持增删改:

中药的方剂管理,支持增删改查:

中药材资讯管理:后台可以进行咨询管理。

中药材产地可视化:内含全国省份的中药材种类分布地图,这个数据是从scrapy爬虫爬取到的数据进行提取之后使用echarts可视化进行提取的
比如我们输入了青酒缸,在中国地图上金色的点位展示了产地的信息

用户可以向后台管理员发送中药药材和药方的纠错申请,管理员可以进行处理

评论管理
用户的登录和退出功能

爬虫介绍
爬取逻辑非常简单,根据url来处理翻页,然后获取到详情页面的链接,再去爬取详情页面的内容即可!
需要注意的是:这里面有一个方剂多个来源的情况,这个没有处理。
最终数据落地到excel中。
经测试,总计获取 24909条中医方剂数据。
import pandas as pd
import scrapyclass ZhongyaofangSpider(scrapy.Spider):name = 'fangji'allowed_domains = ['zysj.com.cn']start_urls = [f"https://www.zysj.com.cn/zhongyaofang/index_{i}.html" for i in range(1, 27)]def __init__(self, *args, **kwargs):self.data = []def parse(self, response):# 提取包含链接和标题的部分for li in response.css('div#list-content ul li'):a_tag = li.css('a')title = a_tag.css('::attr(title)').get()href = a_tag.css('::attr(href)').get()if title and href:# 构建完整的详情页 URLdetail_url = response.urljoin(href)yield scrapy.Request(detail_url, callback=self.parse_detail, meta={'title': title})# 如果没有这个元素,就设置空就行# 处方: div[class="item prescription"]/div[class="item-content"]/p/text# 制法: div[ class="item making"]/div[class="item-content"]/p/text# 主治: div class="item functional_indications"]/div[class="item-content"]/p/text# 用法用量: class="item usage"]/div[class="item-content"]/p/text# 注意事项: class="item care"]/div[class="item-content"]/p/text# 摘录: class="item excerpt"]/div[class="item-content"]/textdef parse_detail(self, response):title = response.meta['title']# 提取各个字段prescription = response.css('div.item.prescription div.item-content p::text').get(default='').strip()making = response.css('div.item.making div.item-content p::text').get(default='').strip()functional_indications = response.css('div.item.functional_indications div.item-content p::text').get(default='').strip()usage = response.css('div.item.usage div.item-content p::text').get(default='').strip()care = response.css('div.item.care div.item-content p::text').get(default='').strip()excerpt = response.css('div.item.excerpt div.item-content::text').get(default='').strip()item = {'title': title,'prescription': prescription,'making': making,'functional_indications': functional_indications,'usage': usage,'care': care,'excerpt': excerpt}self.data.append(item)yield itemdef closed(self, reason):# 当爬虫关闭时,保存数据到 Excel 文件df = pd.DataFrame(self.data)df.to_excel('zhongyaofang_data.xlsx', index=False)
爬取截图

爬取后的数据

数据预处理:从药材数据中提取药材的产地信息

从药材和药方数据中提取知识图谱信息并且构建到neo4j数据库中
系统的图谱构建由于时间比较长,我们加上了进度条日志,可以方便用户在导入数据的时候去预估时间:

图谱信息(由于前端显示限制,只展示冰山一角):



相关文章:
基于vue+neo4j 的中药方剂知识图谱可视化系统
前言 历时一周时间,中药大数据R02系统中药开发完毕,该系统通过scrapy工程获取中药数据,使用python pandas预处理数据生成知识图谱和其他相关数据,利用vuespringbootneo4jmysql 开发系统,具体功能请看本文介绍。 简要…...
(自用)机器学习python代码相关笔记
一些自存的机器学习函数和详细方法记录,欢迎指错。 前言:读取数据方法 import pandas as pd import pandas as pddf pd.read_csv(数据集.csv, header0) # header是从哪一行开始读起,一般是0,也可以取infer 一、数据处理&#…...
docker复现pytorch_cyclegan
1、安装docker 配置docker镜像 添加镜像源至docker engine 2、wsl2安装nvidia-docker 要在Ubuntu中安装NVIDIA Docker,需要满足以下条件: 确保主机已安装NVIDIA的CUDA驱动程序,并使用适用于您操作系统的正确版本。 wsl --update在Ubuntu…...
IDEA2024下安装kubernetes插件并配置进行使用
【1】安装插件 其实2024.2.3下默认已经安装了kubernetes插件,如果你发现自己IDEA中没有,在市场里面检索并下载即可。 【2】kubernetes配置 ① 前置工作 首先你要准备一个config文件和一个kubectl.exe 。 config文件类似如下: apiVersi…...
理解原子变量之二:从volatile到内存序-进一步的认识
目录 实例1 实例2 实例3 内存序中两个最重要的概念 补记 结论 实例1 看下面的例子:在vs2013中建立如下工程: #include <thread> #include <iostream> #include <chrono>bool done false;void worker(){std::this_thread::sle…...
DICOM标准:MR图像模块属性详解——磁共振成像(MR)在DICOM中的应用
目录 引言 磁共振成像(MR) 一、MR图像模块 二、MR图像属性描述 1、图像类型 (Image Type) 2、抽样每个象素 (Sampling per Pixel) 3、光度插值 (Photometric Interpretation) 4、位分配 (Bits Allocated) 结论 引言 数字成像和通信在医学(…...
Linux内核与用户空间
Linux内核与用户空间是Linux操作系统中的两个重要概念,它们各自承担着不同的功能和职责,并通过特定的机制进行交互。以下是对Linux内核与用户空间的详细解释: 一、Linux内核 定义:Linux内核是Linux操作系统的核心组件,…...
计算机网络-以太网小结
前导码与帧开始分界符有什么区别? 前导码--解决帧同步/时钟同步问题 帧开始分界符-解决帧对界问题 集线器 集线器通过双绞线连接终端, 学校机房的里面就有集线器 这种方式仍然属于共享式以太网, 传播方式依然是广播 网桥: 工作特点: 1.如果转发表中存在数据接收方的端口信息…...
找树根和孩子c++
题目描述 给定一棵树,输出树的根root,孩子最多的结点max以及他的孩子 输入 第一行:n(0<结点数<100),m(0<边数<200)。 以下m行;每行两个结点x和y…...
植物源UDP-糖基转移酶及其分子改造-文献精读75
植物源UDP-糖基转移酶及其分子改造 摘要 糖基化能够增加化合物的结构多样性,有效改善水溶性、药理活性和生物利用度,对植物天然产物的药物开发至关重要。UDP-糖基转移酶(UGTs)能够催化糖基从活化的核苷酸糖供体转移到受体形成糖苷键,植物中天然产物的糖基化修饰主要通过UGTs实…...
Redis中String 的底层实现是什么?
Redis中String 的底层实现是什么? Redis 是基于 C 语言编写的,但 Redis 的 String 类型的底层实现并不是 C 语言中的字符串(即以空字符 \0 结尾的字符数组),而是自己编写了 SDS(Simple Dynamic String&…...
像mysql一样查询es
先简单介绍一下这个sql查询,因为社区一直反馈这个Query DSL 实在是太难用了。大家可以感受一下下面这个es的查询。 GET /my_index/_search { “query”: { “bool”: { “must”: [ { “match”: { “title”: “search” } }, { “bool”: { “should”: [ { “te…...
SpringBoot中@Validated或@Valid注解校验的使用
文章目录 SpringBoot中Validated或Valid注解校验的使用1. 添加依赖2. 使用示例准备2-1 测试示例用到的类2-2 实体Dto,加入校验注解2-2 Controller 3. 示例测试4. Valid 和 Validated注解详解4-1 常用规则注解4-2 分组验证4-2-1 示例准备4-2-2 Controller接口4-2-3 P…...
HashMap为什么线程不安全?
一、Put操作(数据覆盖) HashMap底层是基于数组 链表(在 Java 8 以后,当链表长度超过一定阈值时会转换为红黑树)的数据结构。在多线程环境下,当多个线程同时对HashMap进行put操作时,可下面这种…...
类加载器及反射
目录 1.类加载器 1.1类加载【理解】 1.2类加载器【理解】 1.2.1类加载器的作用 1.2.2JVM的类加载机制 1.2.3Java中的内置类加载器 1.2.4ClassLoader 中的两个方法 2.反射 2.1反射的概述【理解】 2.2获取Class类对象的三种方式【应用】 2.2.1三种方式分类 2.2.2示例…...
aws boto3 下载文件
起因:有下载 aws s3 需求,但只有web 登录账号,有 id 用户名 密码,没有 boto3 的 key ID 经过分析,发现网页版有个地址会返回临时 keyID,playwright 模拟登录,用 page.on 监测返回数据ÿ…...
3DDFA-V3——基于人脸分割几何信息指导下的三维人脸重建
1. 研究背景 从二维图像中重建三维人脸是计算机视觉研究的一项关键任务。在虚拟现实、医疗美容、计算机生成图像等领域中,研究人员通常依赖三维可变形模型(3DMM)进行人脸重建,以定位面部特征和捕捉表情。然而,现有的方…...
求串长(不使用任何字符串库函数)
问题描述 编写一个程序,输入一个字符串,输出串的长度。 要求: (1)字符串长度不超过100个字符。 (2)不使用任何字符串库函数,建议使用堆串存储结构。 输入描述 输入一个字符串。 …...
第02章 MySQL环境搭建
一、MySQL的卸载 如果安装mysql时出现问题,则需要将mysql卸载干净再重新安装。如果卸载不干净,仍然会报错安装不成功。 步骤1:停止MySQL服务 在卸载之前,先停止MySQL8.0的服务。按键盘上的“Ctrl Alt Delete”组合键࿰…...
linux系统编程 man查看manual.stat
获取文件属性,(从inode结构体中获取) stat/lstat 函数 int stat(const char *path, struct stat *buf); 参数: path: 文件路径 buf:(传出参数) 存放文件属性,inode结构体…...
中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
并发编程 - go版
1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...
