基于Spark的期刊推荐系统的设计与实现
面向学术投稿的期刊智能推荐平台:输入论文标题、摘要与关键词后,基于 Apache Spark(PySpark MLlib)文本分类模型,从 PubMed 生物医学数据学习到的 469 本真实期刊中返回 Top-5 投稿备选,并提供数据概览、期刊/论文库、管理员离线训练与评估指标。
项目封面

项目说明
基于Spark的期刊推荐系统的设计与实现
项目简介
本系统是面向学术投稿场景的期刊智能推荐平台。用户输入待投稿论文的标题、摘要与关键词后,系统基于 Apache Spark(PySpark MLlib)训练的文本分类模型,从 PubMed 生物医学公开数据中学习到的 469 本真实期刊里,返回 Top-5 投稿备选,并展示 ISSN、出版社、学科等元数据。
- 训练数据:LuckyLook PubMed Journal Recommendation(Zenodo)
- 期刊详情补充:DOAJ 开放获取期刊 CSV
- 管理员可在 Web 端重新发起 Spark 离线训练,并查看真实测试集评估指标
- 无 mock / 兜底假数据:推荐结果与统计均来自模型与数据库真实查询
文档索引
| 文档 | 说明 |
|---|---|
| 大文件交付说明.md | 超 100MB 文件网盘交付(db / train.csv) |
| 运行步骤必看/window.md | Windows 安装、一键启动、训练与排错 |
| 运行步骤必看/mac.md | macOS / Linux 安装与启动 |
| 训练手册.md | PySpark 训练流程、发布策略、指标说明 |
| docs/dataset.md | 数据集下载地址与引用格式 |
| 数据清理说明.md | 交付前清理(保留模型与原始数据) |
| 用户上传检测文件/README.md | 推荐功能测试样例用法 |
功能模块
| 模块 | 功能说明 |
|---|---|
| 用户认证 | 注册、登录、退出;管理员 / 普通用户两级权限 |
| 数据概览 | 论文量、期刊数、训练/测试划分、推荐次数;热门期刊、学科/国家分布、推荐趋势图 |
| 投稿推荐 | 输入论文信息,返回 Top-5 及推荐强度(强烈推荐 / 推荐 / 可考虑)、相对强度条、推荐理由;仅输刊名时引导至期刊库 |
| 期刊库 | 浏览与搜索 469 本期刊;详情页;CSV 导出 |
| 论文库 | 浏览 PubMed 训练/测试论文,支持关键词检索 |
| 模型训练 | 管理员异步启动 Spark 训练;查看 Top-1/3/5 准确率、F1、历史记录;仅成功才替换线上模型 |
| REST API | 概览、推荐、期刊/论文检索、训练启停状态、期刊导出等 JSON 接口 |
推荐结果如何理解
| 概念 | 说明 |
|---|---|
| 推荐强度 | 面向用户的档位文案,表示本次 Top-5 内的相对优先程度 |
| 相对强度 | 将本次第 1 名记为 100,其余按模型概率比例缩放,便于看进度条 |
| 模型原始概率 | 后台 NaiveBayes 类别概率,用于排序;不在前台用「录取率」误导 |
| 不是 | 影响因子、录用率、或「搜刊名必出 99%」 |
正确用法:粘贴论文标题 + 摘要做投稿推荐。若只输入期刊名,系统会提示去「期刊库」查询。
推荐期刊范围
训练与推荐覆盖 469 本生物医学相关期刊(2018–2022 年 PubMed 过滤子集,每刊至少约 200 篇)。结果为真实期刊名,非虚构。
典型库规模(以当前导入为准):论文约 21 万篇(训练约 15.7 万 / 测试约 5.3 万)。
标准版目录结构
python-spark-tuijian/
├── app.py # Flask 入口
├── config.py # 相对路径、端口、数据库、Spark Python
├── requirements.txt # Python 依赖(含 pyspark)
├── README.md # 文档入口
├── mac_run.sh # macOS/Linux 一键启动
├── window_run.bat # Windows 一键启动(英文脚本)
├── mac_clear_all.sh # 交付前清理
├── 项目说明.md / 训练手册.md / 数据清理说明.md
├── app/
│ ├── routes/ # auth / main / api
│ └── services/ # recommender / stats
├── spark/train_model.py # PySpark 训练(成功才发布)
├── scripts/ # 下载、建库、导入、静态资源
├── data/raw/pubmed/ # PubMed CSV
├── data/doaj/ # DOAJ CSV
├── database/journal_rec.db # SQLite
├── models/
│ ├── spark_model/ # 正式线上模型
│ ├── label_indexer/
│ ├── journal_index.json
│ ├── metrics.json
│ └── _train_staging_*/ # 训练临时目录(成功后删除)
├── templates/ / static/
├── docs/dataset.md
├── 运行步骤必看/window.md | mac.md
└── 用户上传检测文件/ # 测试样例
技术栈
| 类别 | 技术 |
|---|---|
| 后端 | Python 3.12 + Flask 3.0 |
| 数据库 | SQLite 3 |
| 训练 / 推理 | Apache Spark 3.5 + PySpark 3.5.1(在 .venv) |
| 算法 | Tokenizer + HashingTF(2048) + NaiveBayes(multinomial) |
| 前端 | Bootstrap 5.3 + ECharts 5.5(本地 vendor) |
| 数据 | LuckyLook PubMed(Zenodo)+ DOAJ CSV |
环境要求
| 项目 | 要求 |
|---|---|
| Python | 3.12(Mac:python3.12;Windows:python 并加入 PATH) |
| Java | JDK 8+(系统安装,不能装进 venv) |
| 内存 | 建议 ≥ 8GB(训练时) |
| 磁盘 | 约 1GB+(数据 + 模型 + 依赖) |
| OS | Windows 10/11、macOS、Linux |
快速启动
交付包已含数据与模型。对方只需安装依赖并启动,不会自动下载或训练。
# macOS / Linux
chmod +x mac_run.sh && ./mac_run.sh
REM Windows:双击或执行
window_run.bat
账号
| 角色 | 用户名 | 密码 | 权限 |
|---|---|---|---|
| 管理员 | admin | admin123 | 全部(含训练) |
| 普通用户 | 自行注册 | 自行设置 | 推荐与浏览 |
访问地址
- 端口:6000–9000 随机,写入根目录
.port - 终端打印:
http://127.0.0.1:端口号
API 与性能(摘要)
| 接口 | 说明 |
|---|---|
POST /api/recommend | 投稿推荐;刊名查询返回 code: 2 引导期刊库 |
GET /api/stats/overview | 概览统计 |
GET /api/journals / papers | 分页检索 |
GET /api/metrics | 训练指标(无模型时 404) |
POST /api/training/start | 管理员异步训练 |
GET /api/training/status | 训练状态轮询 |
GET /api/export/journals | 期刊 CSV |
首次推荐可能因 Spark 冷启动较慢(约十余秒),之后热请求约 0.2–0.3 秒;应用启动后会后台预热模型。
技术分类
包含内容
适用人群
学习参考与二次开发
关于 AI源码
AI源码 专注优质项目源码分享,提供完整源码、详细文档与技术支持,助力源码设计与课程作业。
相关推荐
查看全部 →
城市交通流量预测与拥堵成因分析系统
是一个面向城市交通拥堵分析的 monorepo,覆盖计算机设计课题中的主要能力链路:

电商用户行为漏斗与CRO转化率优化分析
电商用户行为漏斗与CRO转化率优化分析(E-Commerce Funnel CRO)是一套面向电商运营的数据分析平台,覆盖从用户访问到最终购买的完整漏斗链路,提供多维诊断、统计检验、PIE 优先级矩阵与 XGBoost 购买预测等能力,帮助运营团队精准定位转化瓶颈并制定优化策略。

多组学癌症预后预测分析系统
基于 Flask 的 Web 应用,用于上传 TCGA 风格合并表、做特征与标签概览、Cox 预后风险评分与生存相关可视化。模型在本地训练后以 形式加载,不提供旧版演示数据或假模型兜底。

基于 Apriori 算法的中药配伍审查系统
本系统是一个基于经典 Apriori 关联规则挖掘算法的中药配伍审查平台,使用真实中医药处方数据集(PTM-TKDE2018),实现药材频繁项集挖掘、关联规则生成与配伍禁忌审查。

基于 Python 的城市共享单车骑行需求时空分析系统
本系统是一个基于 Python Flask 框架的城市共享单车骑行需求时空分析平台,使用 Oslo City Bike(奥斯陆城市自行车)开放数据,提供系统总览、时间维度分析、空间维度分析、站点运营分析、OD 起讫流动分析、骑行需求预测、综合分析报告等功能模块,适用于城市共享单车运营调度与骑行需求研究场景。

基于 Python 的短视频用户行为分析系统
基于快手 KuaiRec / KuaiRand 数据集的短视频推荐分析平台,提供用户行为分析、推荐偏差检测、内容运营洞察、图神经网络推荐等完整分析链路。