Skip to content

WisdomJoy/paper_analyze

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

paper_analyze

这是一个面向论文抓取、筛选、LLM 分析、分类统计与分类汇总输出的项目,当前主要用于处理 ICLR 2026 相关论文数据。

整个项目可以理解为一条流水线:

  1. paperCrawler/ 抓取论文元数据;
  2. filter_papers.py 从全量论文中筛出目标论文;
  3. split_papers.py 将待分析论文切分成小批次;
  4. parallel_analyze.py + breeze_analyze_papers_by_llm.py 并行调用 LLM 做逐篇分析;
  5. extract_fields.py 提取结构化字段;
  6. classify_papers.py 做研究方向分类;
  7. generate_report.py 生成总分类报告;
  8. generate_category_md_from_split.py 生成按类别汇总的 Markdown 文件。

1. 项目目录说明

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 输出

2. paperCrawler/:论文抓取工具

paperCrawler/ 是整个项目的数据源入口,用来从会议/期刊页面或 DBLP 等来源抓取论文信息。当前项目中的 ICLR 数据就是基于这套工具得到的。

paperCrawler为网上开源的论文抓取工具,具体使用方法可看其readme文件。

2.1 主要作用

  • 抓取指定会议、年份的论文列表;
  • 支持关键词查询;
  • 输出 CSV;
  • 可附带抓取 pdf_url、标题、摘要、作者、引用数等信息;
  • 后续可再转换为本项目使用的 JSON。

2.2 关键文件

paperCrawler/crawl_conf/main.py

抓取入口脚本。通过 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

paperCrawler/venues.py

维护 venue 名称到 DBLP 地址的映射,便于扩展新的会议/期刊来源。

paperCrawler/ReadMe.md

原始 crawler 的英文说明文档,包含安装方式、支持会议列表、查询语法等。

2.3 使用建议

如果你想重新抓取新的会议数据,通常先进入 paperCrawler/crawl_conf/ 运行 main.py,得到 CSV 后,再按本项目需要转换成 JSON。


3. 根目录 Python 脚本说明

下面按推荐执行顺序介绍所有主要 Python 脚本的作用和用法。

3.1 filter_papers.py

作用:从 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 列表即可。

3.2 split_papers.py

作用:把筛选后的论文列表切分成多个小文件,便于并行调用 LLM。

输入:

  • filtered_papers.json

输出:

  • split_papers/papers_1.json
  • split_papers/papers_2.json
  • ...

运行方式:

cd /home/weijia/paper_analyze
python3 split_papers.py

说明:

  • 当前默认每个文件 20 篇论文;
  • 可修改 chunk_size 控制切分粒度。

3.3 breeze_analyze_papers_by_llm.py

作用:对一个论文批次逐篇进行 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 地址或密钥,需要修改脚本中的相关配置。

3.4 parallel_analyze.py

作用:并行调度 breeze_analyze_papers_by_llm.py,批量处理 split_papers/ 下的所有 JSON。

输入:

  • split_papers/papers_*.json

输出:

  • split_results_json/analysis_papers_*.json
  • split_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 逻辑会自动跳过已完成论文。

3.5 extract_fields.py

作用:从 split_results_json/ 中提取后续分类所需的关键字段,汇总为一个总文件。

当前提取字段包括:

  • id
  • number
  • title
  • keywords
  • step2

输入:

  • split_results_json/*.json

输出:

  • extracted_data.json

运行方式:

cd /home/weijia/paper_analyze
python3 extract_fields.py

3.6 classify_papers.py

作用:基于论文标题、关键词和分析结果中的结构化字段,对论文进行研究领域分类。

当前脚本内置了多类分类规则,例如:

  • LLM训练与优化
  • LLM推理与效率
  • LLM对齐与安全
  • 智能体与工具使用
  • 多智能体系统
  • 检索增强与知识
  • 推理与数学
  • 多模态LLM
  • 强化学习
  • 代码生成与程序合成
  • 其他

输入:

  • extracted_data.json

输出:

  • paper_categories2.json
  • category_stats.json

运行方式:

cd /home/weijia/paper_analyze
python3 classify_papers.py

说明:

  • 脚本内部通过关键词规则和优先级顺序决定类别;
  • 如果要调整分类体系,可修改 CATEGORY_RULESCATEGORY_PRIORITY

3.7 generate_report.py

作用:把分类结果整理成一个总的 Markdown 报告。

当前脚本读取:

  • extracted_data.json
  • paper_categories2.json
  • category_stats2.json

输出:

  • iclr2026_paper_classification2.md

运行方式:

cd /home/weijia/paper_analyze
python3 generate_report.py

说明:

  • 报告包含分类统计表和每个类别下的论文列表;
  • 使用前请确认输入文件名与脚本中配置一致。

3.8 generate_category_md_from_split.py

作用:根据分类结果,把 split_results_md/ 中属于同一类别的论文分析内容聚合到一个 md 文件中。

输入:

  • paper_categories.json
  • split_results_md/analysis_papers_*.md
  • iclr26_all_papers.json(用于补充 pdf_url

输出:

  • category_split_results_md/01_智能体与多智能体系统.md
  • category_split_results_md/02_多模态LLM.md
  • ...

运行方式:

cd /home/weijia/paper_analyze
python3 generate_category_md_from_split.py

说明:

  • 会自动合并“智能体与工具使用”和“多智能体系统”;
  • 会排除“代码生成与程序合成”;
  • 会为每篇论文条目补充 pdf_url 字段;
  • 适合后续按方向阅读论文分析结果。

4. 推荐使用流程

# 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

5. 依赖与注意事项

  • Python 3.10+;
  • breeze_analyze_papers_by_llm.py 依赖 openai SDK;
  • paperCrawler/ 依赖 scrapypyparsingfeedparserfuzzywuzzy 等;
  • 部分脚本中使用了写死的输入/输出路径,迁移项目时请先检查路径;
  • 某些脚本的输入输出文件名存在历史版本差异,如 paper_categories.json / paper_categories2.jsoncategory_stats.json / category_stats2.json,运行前建议先核对脚本中的文件名。

About

论文抓取与分析工具,里面含ICLR 2026的分析结果。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages