基于Spark的期刊推荐系统的设计与实现
PySpark MLlib 基于 PubMed 约 21 万篇论文训练的期刊投稿推荐系统,覆盖 469 本真实生物医学期刊 Top-5 推荐,含 DOAJ 元数据与 Spark 离线训练,适合大数据推荐类毕业设计。
项目封面

项目概览
本系统面向学术投稿场景,基于 LuckyLook PubMed Journal Recommendation 训练数据与 DOAJ 开放获取期刊 CSV 补充元数据,采用 Flask + SQLite + PySpark MLlib(NaiveBayes 文本分类)技术栈。用户输入论文标题、摘要与关键词,从 469 本真实生物医学期刊中返回 Top-5 投稿备选及推荐强度、相对强度条与推荐理由;含期刊库浏览搜索、论文库检索、数据概览统计与管理员异步 Spark 离线训练(仅成功才替换线上模型),无 mock 兜底数据,适合作为毕业设计中 Spark 大数据、文本分类推荐与学术投稿辅助系统方向。
项目说明
基于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 秒;应用启动后会后台预热模型。
获取完整源码
技术分类
包含内容
适合方向
适合计算机、生物医学信息学、大数据专业毕业设计中 PySpark 文本分类、期刊推荐与 Flask+Spark 混合架构方向。
关于 AI源码
AI源码 整理计算机毕业设计、课程设计向的可运行项目参考,含说明文档与演示材料。完整源码请通过联系方式沟通获取。
相关推荐
查看全部 →
基于用户画像的食谱推荐系统
Flask+SQLite 食谱推荐 Web:问卷与活动数据构建用户向量,KMeans 聚类画像 + 规则过滤 + RandomForest 融合排序,输出可解释推荐,含 Hit@K/NDCG 离线评估,适合推荐系统毕业设计。

基于协同过滤的电影推荐系统设计与实现
Flask+SQLite 豆瓣电影推荐平台:scikit-surprise 实现 UserCF/ItemCF,三级冷启动降级、星级评分收藏、Pyecharts 后台图表与一键重训,含算法讲解页,适合推荐算法毕业设计。

基于机器学习的古籍文字识别与断句校正系统
Vue3+Flask 古籍 OCR 流水线:PaddleOCR 识文、文本整理勘校、BERT 句读标注与多格式导出,JWT 任务隔离,支持离线微调数据闭环,适合 OCR+NLP 毕业设计。

基于深度学习的音乐风格分类系统
Django+Vue2 音乐平台:Mel 频谱 CNN+Bi-LSTM 八类风格分类,含在线 MP3 播放、协同过滤推荐、热榜与 SimpleUI 管理后台,MySQL 预置 12 首歌曲,适合深度学习+Web 毕业设计。

基于深度学习的日常服饰分类与推荐系统设计
PyTorch CNN 对 Fashion-MNIST 服饰图像 Top-5 分类,融合协同过滤与 Embedding 相似度的混合推荐引擎,含 120 件商品目录与评分收藏,适合深度学习推荐系统类毕业设计。

微小异物检测与识别系统
YOLOv8 工业表面六类微小缺陷(龟裂、夹杂、点蚀等)检测平台,基于 NEU-DET 钢材数据集,支持单张/批量检测、在线训练与 PDF 报告导出,适合计算机视觉质检类毕业设计。