# SmartPaperClassifier **Repository Path**: Gurid/smart-paper-classifier ## Basic Information - **Project Name**: SmartPaperClassifier - **Description**: 基于Transformer的学术论文分类系统 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-27 - **Last Updated**: 2025-03-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 智能论文分类系统 ## 📚 项目概述 基于Transformer架构的学术论文智能分类系统,整合了NLP分类、论文推荐和知识图谱构建功能。支持本地CPU训练与推理,适用于实验室学术资源管理场景。 ![](./智能论文分类系统.png) ## 🧩 技术架构 | 层级 | 组件 | 技术栈 | 功能 | | :--------- | :------- | :--------------------- | :-------------------------------- | | **接入层** | Web服务 | FastAPI + Uvicorn | 提供RESTful API接口,处理HTTP请求 | | **业务层** | 分类模块 | Transformers + PyTorch | 执行论文分类推理 | | | 推荐模块 | Scikit-learn + NumPy | 计算论文相似度 | | | 图谱模块 | NetworkX + Pandas | 构建学科关联图谱 | | **数据层** | 模型存储 | PyTorch模型文件 | 保存训练好的BERT模型 | | | 向量存储 | Numpy矩阵 | 存储论文特征向量 | | | 图谱存储 | GraphML文件 | 持久化知识图谱数据 | | **训练层** | 训练系统 | PL + Torch Dataset | 模型训练与验证 | ## 🌟 核心功能 - **智能分类**:BERT论文分类(1000+类别) - **知识图谱**:学科领域关联分析 - **推荐系统**:余弦相似度论文推荐 - **历史追溯**:本地存储最近分析记录(待完善) ## 📂 项目结构 ```bash SmartPaperClassifier/ ├── api/ # API服务 │ ├── main.py # 路由与控制器 │ └── schemas.py # 数据模型 ├── models/ # 模型核心 │ ├── dataset.py # 数据预处理 │ ├── model.py # 神经网络定义 │ └── trainer.py # 训练逻辑 ├── configs/ # 模型配置 │ └── bert-base/ # BERT模型文件 ├── data/ # 原始数据 ├── static/ # 静态资源 │ └── styles.css └── templates/ # 前端模板 └── index.html ``` ## 🚀 启动指南 ### 环境准备 ```bash # 创建虚拟环境 python -m venv venv source venv/bin/activate # Linux/Mac venv\Scripts\activate # Windows # 安装依赖 python.exe -m pip install --upgrade pip pip install -r requirements.txt --index-url https://pypi.tuna.tsinghua.edu.cn/simple --extra-index-url https://download.pytorch.org/whl/cpu ``` ### 数据准备 ```bash # 下载最新数据集(约2.5GB) wget https://arxiv.org/help/oa/index.html -O data/arxiv-metadata-oai-snapshot.json # 验证数据完整性 wc -l data/arxiv-metadata-oai-snapshot.json # 应输出约2.3 million条记录 # 放入项目的data/目录 ``` ### 启动训练 ```bash python train.py \ --data_path data/arxiv-metadata-oai-snapshot.json \ --batch_size 64 \ --max_length 256 \ --num_epochs 10 \ --learning_rate 3e-5 \ --cpu_workers 8 # 从检查点恢复 python train.py --resume_from_checkpoint ./lightning_logs/version_0/checkpoints/last.ckpt ``` ### 关键参数说明 | 参数 | 推荐值 | 作用 | | :------------ | :---------- | :--------------------------- | | `batch_size` | 32-128 | 根据内存调整,完整数据建议64 | | `max_length` | 256 | 截断长文本保留主要信息 | | `num_epochs` | 5-10 | 防止过拟合 | | `cpu_workers` | CPU核心数-2 | 优化数据加载速度 | ### 启动服务 ```bash uvicorn api.main:app --reload --port 8000 ``` 访问 http://localhost:8000 ## ⚠️ 遇到的问题和解决 | 问题现象 | 原因分析 | 解决方案 | |---|---|---| | 模块导入失败 (No module named...) | Python路径配置错误 | 添加项目根目录到PYTHONPATH环境变量 | | TokenTypeIDs报错 | BERT模型输入参数不匹配 | 修改forward方法接收**kwargs | | 类别编码错误 | Pandas类型转换失败 | 显式转换列为category类型 | | 前端样式加载失败 | 静态资源路径错误 | 检查StaticFiles目录配置 | | 历史记录不显示 | 浏览器禁用localStorage | 检查浏览器设置或改用sessionStorage | ## 🎯 设计原则 - 模块化架构:服务层/模型层/数据层分离 - CPU优先:全程兼容无GPU环境 - 渐进增强:基础功能优先,逐步扩展 - 可观测性:训练指标与API日志监控 ## 📈 性能优化 - 量化训练:使用16位浮点精度减少内存占用 - 缓存机制:推荐结果LRU缓存 - 批量推理:支持多论文同时分类 - 预计算:论文特征向量离线生成