这是一个面向论文抓取、筛选、LLM 分析、分类统计与分类汇总输出的项目,当前主要用于处理 ICLR 2026 相关论文数据。
整个项目可以理解为一条流水线:
- 用
paperCrawler/抓取论文元数据; - 用
filter_papers.py从全量论文中筛出目标论文; - 用
split_papers.py将待分析论文切分成小批次; - 用
parallel_analyze.py+breeze_analyze_papers_by_llm.py并行调用 LLM 做逐篇分析; - 用
extract_fields.py提取结构化字段; - 用
classify_papers.py做研究方向分类; - 用
generate_report.py生成总分类报告; - 用
generate_category_md_from_split.py生成按类别汇总的 Markdown 文件。
paper_analyze/
├── paperCrawler/ # 论文抓取工具
├── filter_papers.py # 关键词筛选论文
├── split_papers.py # 将筛选后的论文切分成多个小 JSON
├── parallel_analyze.py # 并行调度 LLM 分析
├── breeze_analyze_papers_by_llm.py # 对单个批次论文做 LLM 分析
├── extract_fields.py # 从分析结果中抽取结构化字段
├── classify_papers.py # 对论文进行研究领域分类
├── generate_report.py # 生成分类总报告
├── generate_category_md_from_split.py # 生成按类别汇总的 md 文件
├── iclr26_all_papers.json # 全量论文数据
├── filtered_papers.json # 筛选后的论文
├── split_papers/ # 切分后的输入文件
├── split_results_json/ # LLM 分析 JSON 输出
├── split_results_md/ # LLM 分析 Markdown 输出
└── category_split_results_md/ # 按类别聚合后的 Markdown 输出
paperCrawler/ 是整个项目的数据源入口,用来从会议/期刊页面或 DBLP 等来源抓取论文信息。当前项目中的 ICLR 数据就是基于这套工具得到的。
paperCrawler为网上开源的论文抓取工具,具体使用方法可看其readme文件。
- 抓取指定会议、年份的论文列表;
- 支持关键词查询;
- 输出 CSV;
- 可附带抓取
pdf_url、标题、摘要、作者、引用数等信息; - 后续可再转换为本项目使用的 JSON。
抓取入口脚本。通过 Scrapy 启动 crawler。
常用参数:
-confs:会议/期刊列表,如iclr,icml,nips-years:年份列表,如2024,2025,2026-queries:关键词查询表达式-out:输出 CSV 路径-download_pdf:当引用数达到阈值时下载 PDF
示例:
cd /home/weijia/paper_analyze/paperCrawler/crawl_conf
python3 main.py -confs iclr -years 2026 -queries "" -out ./downloads/iclr2026.csv维护 venue 名称到 DBLP 地址的映射,便于扩展新的会议/期刊来源。
原始 crawler 的英文说明文档,包含安装方式、支持会议列表、查询语法等。
如果你想重新抓取新的会议数据,通常先进入 paperCrawler/crawl_conf/ 运行 main.py,得到 CSV 后,再按本项目需要转换成 JSON。
下面按推荐执行顺序介绍所有主要 Python 脚本的作用和用法。
作用:从 iclr26_all_papers.json 中筛选出目标方向论文。
当前脚本内置关键词为:
code generation
输入:
iclr26_all_papers.json
输出:
filtered_papers_code_generation.json
运行方式:
cd /home/weijia/paper_analyze
python3 filter_papers.py说明:
- 脚本会在标题、摘要、关键词、
primary_area中做关键词匹配; - 如果要筛选别的主题,直接修改脚本里的
keywords列表即可。
作用:把筛选后的论文列表切分成多个小文件,便于并行调用 LLM。
输入:
filtered_papers.json
输出:
split_papers/papers_1.jsonsplit_papers/papers_2.json- ...
运行方式:
cd /home/weijia/paper_analyze
python3 split_papers.py说明:
- 当前默认每个文件 20 篇论文;
- 可修改
chunk_size控制切分粒度。
作用:对一个论文批次逐篇进行 LLM 分析,并输出 JSON 和 Markdown。
每篇论文目前包含 4 个分析步骤:
- Step 1:论文问题、贡献、创新点、结论、局限性概述
- Step 2:研究领域、核心技术、任务类型、主要贡献抽取
- Step 3:方法级系统分析
- Step 4:与“基于 LLM 智能体的代码迁移”方向的相关性评估
常用参数:
--input:输入论文 JSON--output:输出分析 JSON--markdown-output:输出 Markdown--resume:断点续跑--max-papers:只处理前 N 篇--sleep-seconds:每篇之间暂停秒数
运行示例:
cd /home/weijia/paper_analyze
python3 breeze_analyze_papers_by_llm.py \
--input split_papers/papers_1.json \
--output split_results_json/analysis_papers_1.json \
--markdown-output split_results_md/analysis_papers_1.md \
--resume说明:
- 该脚本是整个分析流程的核心;
- 目前脚本内部使用 OpenAI SDK 兼容接口调用模型;
- 若更换模型、API 地址或密钥,需要修改脚本中的相关配置。
作用:并行调度 breeze_analyze_papers_by_llm.py,批量处理 split_papers/ 下的所有 JSON。
输入:
split_papers/papers_*.json
输出:
split_results_json/analysis_papers_*.jsonsplit_results_md/analysis_papers_*.md
运行方式:
cd /home/weijia/paper_analyze
python3 parallel_analyze.py说明:
- 当前默认使用 16 个进程;
- 每个 worker 会给子进程设置
WORKER_ID,便于日志区分; - 每个子任务实际执行的是
breeze_analyze_papers_by_llm.py --resume; - 如果某个批次已分析过,resume 逻辑会自动跳过已完成论文。
作用:从 split_results_json/ 中提取后续分类所需的关键字段,汇总为一个总文件。
当前提取字段包括:
idnumbertitlekeywordsstep2
输入:
split_results_json/*.json
输出:
extracted_data.json
运行方式:
cd /home/weijia/paper_analyze
python3 extract_fields.py作用:基于论文标题、关键词和分析结果中的结构化字段,对论文进行研究领域分类。
当前脚本内置了多类分类规则,例如:
- LLM训练与优化
- LLM推理与效率
- LLM对齐与安全
- 智能体与工具使用
- 多智能体系统
- 检索增强与知识
- 推理与数学
- 多模态LLM
- 强化学习
- 代码生成与程序合成
- 其他
输入:
extracted_data.json
输出:
paper_categories2.jsoncategory_stats.json
运行方式:
cd /home/weijia/paper_analyze
python3 classify_papers.py说明:
- 脚本内部通过关键词规则和优先级顺序决定类别;
- 如果要调整分类体系,可修改
CATEGORY_RULES和CATEGORY_PRIORITY。
作用:把分类结果整理成一个总的 Markdown 报告。
当前脚本读取:
extracted_data.jsonpaper_categories2.jsoncategory_stats2.json
输出:
iclr2026_paper_classification2.md
运行方式:
cd /home/weijia/paper_analyze
python3 generate_report.py说明:
- 报告包含分类统计表和每个类别下的论文列表;
- 使用前请确认输入文件名与脚本中配置一致。
作用:根据分类结果,把 split_results_md/ 中属于同一类别的论文分析内容聚合到一个 md 文件中。
输入:
paper_categories.jsonsplit_results_md/analysis_papers_*.mdiclr26_all_papers.json(用于补充pdf_url)
输出:
category_split_results_md/01_智能体与多智能体系统.mdcategory_split_results_md/02_多模态LLM.md- ...
运行方式:
cd /home/weijia/paper_analyze
python3 generate_category_md_from_split.py说明:
- 会自动合并“智能体与工具使用”和“多智能体系统”;
- 会排除“代码生成与程序合成”;
- 会为每篇论文条目补充
pdf_url字段; - 适合后续按方向阅读论文分析结果。
# 1) 抓取或准备全量论文数据
# 2) 筛选目标论文
python3 filter_papers.py
# 3) 切分论文
python3 split_papers.py
# 4) 并行 LLM 分析
python3 parallel_analyze.py
# 5) 抽取结构化字段
python3 extract_fields.py
# 6) 研究领域分类
python3 classify_papers.py
# 7) 生成总报告
python3 generate_report.py
# 8) 生成按类别聚合的 Markdown
python3 generate_category_md_from_split.py- Python 3.10+;
breeze_analyze_papers_by_llm.py依赖openaiSDK;paperCrawler/依赖scrapy、pyparsing、feedparser、fuzzywuzzy等;- 部分脚本中使用了写死的输入/输出路径,迁移项目时请先检查路径;
- 某些脚本的输入输出文件名存在历史版本差异,如
paper_categories.json/paper_categories2.json、category_stats.json/category_stats2.json,运行前建议先核对脚本中的文件名。