基于 Apriori 算法的中药配伍审查系统 基于 Apriori 算法的中药配伍审查系统项目介绍本系统是一个基于经典Apriori 关联规则挖掘算法的中药配伍审查平台使用真实中医药处方数据集PTM-TKDE2018实现药材频繁项集挖掘、关联规则生成与配伍禁忌审查。核心功能数据导入一键下载并导入真实 PTM 处方数据集到 SQLite约 811 味药材、6693 条处方事务Apriori 挖掘频繁项集与关联规则挖掘支持度/置信度/提升度lift可调配伍审查十八反/十九畏禁忌检测 低支持度警告 关联规则建议含药名别名匹配批量审查支持多张处方批量审查药材共现分析指定药材的共现频次统计数据看板Chart.js 可视化展示高频药材与挖掘历史REST API14 个 API 端点完整覆盖业务功能审查日志与挖掘历史记录数据来源数据来源用途药材与处方事务PTM-TKDE2018herbs_contains.txtpre_herbs.txtApriori 事务挖掘配伍禁忌data/forbidden_canonical.json药典十八反、十九畏整理41 条硬性禁忌审查药材属性可选DragonTCM性味归经增强仅供教学研究不可替代临床审方。目录结构apriori-zhongyao-check/ ├── app.py # Flask 主应用路由定义 启动入口 ├── config.py # 应用配置阈值、数据库路径、分页等 ├── requirements.txt # Python 依赖 ├── mac_run.sh # macOS 一键启动脚本 ├── window_run.bat # Windows 一键启动脚本 ├── 项目说明.md # 本文件 ├── 挖掘手册.md # Apriori 挖掘参数与数据集说明 │ ├── core/ # 核心算法 │ ├── __init__.py │ ├── apriori.py # Apriori 频繁项集与关联规则挖掘 │ └── reviewer.py # 配伍审查逻辑禁忌检测 关联建议 同义词标注 │ ├── database/ # 数据库层 │ ├── __init__.py │ ├── db.py # SQLite 访问层连接管理 缓存 全部 CRUD │ └── importer.py # 数据导入PTM 文件解析 禁忌规则写入 │ ├── routes/ # 路由层 │ ├── __init__.py │ └── api.py # REST API 蓝图14 个端点 │ ├── services/ # 服务层 │ ├── __init__.py │ └── mining.py # Apriori 挖掘服务参数回退 结果持久化 │ ├── scripts/ # 运维脚本 │ ├── download_datasets.py# 从 GitHub/HuggingFace 下载数据集 │ ├── setup_all.py # 一键下载 → 导入 → 挖掘 │ └── init_and_mine.py # 初始化数据库 执行挖掘 │ ├── data/ # 数据目录 │ ├── forbidden_canonical.json # 十八反/十九畏禁忌规则 │ ├── tcm.db # SQLite 数据库运行时生成 │ ├── raw/ # 原始数据文件 │ │ ├── herbs_contains.txt # PTM 药材名索引811 行 │ │ ├── pre_herbs.txt # PTM 处方事务数值索引7189 行 │ │ └── prescriptions.txt # PTM 原始文本方98334 行未接入导入 │ └── imported/ # 已导入数据备份目录 │ ├── templates/ # Jinja2 HTML 模板12 个页面 │ ├── base.html # 基础布局导航栏 页脚 │ ├── index.html # 首页统计概览 高频药材图表 │ ├── dashboard.html # 数据看板挖掘历史 审查日志 │ ├── check.html # 单方配伍审查 │ ├── batch.html # 批量配伍审查 │ ├── herbs.html # 药材库列表 │ ├── herb_detail.html # 药材详情 共现分析 │ ├── prescriptions.html # 方剂库列表 │ ├── forbidden.html # 十八反/十九畏规则表 │ ├── rules.html # Apriori 关联规则 频繁项集 重新挖掘 │ ├── dataset.html # 数据集说明 │ └── api_docs.html # REST API 文档 │ ├── static/ │ └── css/style.css # 自定义样式 │ └── 运行步骤必看/ └── window.md # Windows 运行步骤说明运行环境项目要求Python 3.12操作系统macOS / Linux / Windows数据库SQLite 3Python 内置无需额外安装网络首次运行需联网下载 PTM 数据集依赖Flask 3.0、Werkzeug 3.0、datasets 2.14可选端口与访问项目值默认端口5050环境变量覆盖PORT访问地址http://127.0.0.1:5050API 文档http://127.0.0.1:5050/api-docs技术架构浏览器 ←→ Flask (Jinja2 模板 REST API) ↕ SQLite (tcm.db) ↕ Apriori 算法 禁忌审查引擎 ↕ PTM-TKDE2018 真实处方数据集模块职责模块文件职责主应用app.pyFlask 应用工厂、页面路由、启动入口、自动引导挖掘配置config.py最小支持度/置信度/提升度、数据库路径、分页大小、密钥算法core/apriori.pyApriori 频繁项集挖掘与关联规则生成审查core/reviewer.py禁忌规则检测、低支持度警告、关联规则建议、同义词标注数据库database/db.py连接管理上下文管理器、事务缓存、全部 CRUD 操作导入database/importer.pyPTM 文件解析、药材/处方入库、禁忌规则写入、配置持久化APIroutes/api.pyREST API 蓝图14 个端点JSON 输入输出挖掘服务services/mining.py封装 Apriori 执行、参数回退、结果持久化、缓存失效下载scripts/download_datasets.py从 GitHub/HuggingFace 下载数据集到data/raw/初始化scripts/init_and_mine.py建表 → 导入 → 挖掘三步合一一键部署scripts/setup_all.py下载 → 导入 → 挖掘四步合一页面功能页面路由功能首页/统计概览药材数/处方数/规则数、Top 20 高频药材柱状图配伍审查/check输入药材名 → 返回禁忌/警告/建议批量审查/batch多处方批量审查药材库/herbs药材列表分页、搜索药材详情/herbs/name单味药材共现分析、关联规则方剂库/prescriptions处方列表分页、搜索禁忌规则/forbidden十八反/十九畏规则表关联规则/rules关联规则表 频繁项集 重新挖掘参数可调数据看板/dashboard挖掘历史趋势、审查日志数据集/datasetPTM 数据集说明API 文档/api-docsREST API 端点文档REST API 列表方法路径功能GET/api/statistics系统统计药材数/处方数/规则数等POST/api/review单方配伍审查{herbs: [甘草,海藻]}POST/api/review/batch批量审查{prescriptions: [[甘草,海藻],[人参,黄芪]]}GET/api/herbs药材列表分页、搜索GET/api/herbs/name药材详情与共现GET/api/prescriptions处方列表分页、搜索GET/api/forbidden十八反/十九畏规则GET/api/rules关联规则列表分页GET/api/itemsets频繁项集列表分页POST/api/mine重新执行 Apriori 挖掘GET/api/config获取当前挖掘参数GET/api/dataset-meta数据集元信息GET/api/mining-history挖掘历史GET/api/review-logs审查日志算法说明Apriori 算法Apriori 是经典的关联规则挖掘算法核心思想如果一个项集是频繁的则它的所有子集也是频繁的Apriori 性质。算法流程扫描事务数据库统计每个单项的支持度过滤低于min_support的项逐层产生候选项集由 k-频繁项集连接生成 (k1)-候选项集剪枝移除包含非频繁 k-子集的候选项集计数再次扫描数据库统计候选项集支持度重复直到无法生成更大的频繁项集受max_k限制生成规则对每个频繁项集计算所有非空子集的置信度和提升度保留满足min_confidence和min_lift的规则关键参数参数默认值说明min_support0.02最小支持度项集至少在 2% 的处方中出现min_confidence0.5最小置信度规则 A→B 的置信度至少 50%min_lift1.0最小提升度大于 1 表示正相关max_k4最大项集大小防止组合爆炸审查逻辑配伍审查分三层检测禁忌层硬性十八反/十九畏命中即标记为forbidden警告层软性药材组合的支持度低于min_support标记为warning建议层参考与已输入药材相关的关联规则标记为info同义词对额外标注⚠可能是同义词/包含关系数据流程PTM 数据集 (GitHub/HuggingFace) ↓ scripts/download_datasets.py data/raw/herbs_contains.txt pre_herbs.txt ↓ database/importer.py SQLite (tcm.db): herbs prescriptions forbidden_rules ↓ core/apriori.py services/mining.py SQLite: frequent_itemsets association_rules apriori_config ↓ core/reviewer.py 配伍审查结果 (forbidden / warning / info) ↓ routes/api.py app.py 浏览器 (HTML / JSON)许可证本项目仅供学习交流使用请勿用于商业用途。源码地址https://www.aiyuanma.vip/posts/apriori-zhongyao-check