arXiv 预印本 — 326 万篇,医学影像模型的真正首发地

它不是一个数据集,是一个每天新增一千多篇论文的开放档案:eess.IV(影像与视频处理)是医学影像方法的首发地,通常比期刊早 6–18 个月。元数据全部 CC0,正文许可由作者逐篇选择——这意味着你拿到的每一篇,可用范围都不一样,而这是把它当训练语料时最容易忽略的一处

来源 arXiv(Cornell University 运营) url: https://arxiv.org/发布时间: 2026-10-24最后更新: 2026-10-24 阅读 7
arXiv 预印本 — 326 万篇,医学影像模型的真正首发地

信息速览

数据集名称arXiv 预印本 — 326 万篇,医学影像模型的真正首发地
数据类型3,226,976 篇,1991 年至今,eess.IV 医学影像,元数据 CC0,逐篇选许可,Atom API,每日约 1,000+ 篇
规模不适用(学术预印本文献,无患者数据;部分论文含公开数据集上的实验,但数据集本身不在 arXiv 内)
接入方式arXiv(Cornell University 运营) url: https://arxiv.org/
AI 就绪度

§0 本条目怎么来的、不做什么

整理方:千方医数集,为中文医学 AI 社区整理可训练数据集的结构化说明。

本条目怎么来的:总量数字取自 arXiv 官方统计页(2026-10-24):arxiv.org/stats/monthly_submissions 明确写出「Total number of submissions as of October 24, 2026 = 3,224,545」与「The total number of articles available is 3,226,976」,并说明差额来自迁移入库的 2,431 篇与已删除的 156 篇。月度序列取自同页的 CSV 导出(get_monthly_submissions,424 个有效月份,1991-07 至 2026-10)。分类日投稿量取自各分类 /list/{cat}/new 页面(2026-10-23 当日)。许可结构取自官方 info.arxiv.org/help/license 页。API 限流行为来自实测(HTTP 429 Rate exceeded.)。

不做什么:不评价任何一篇论文的质量;不核验预印本与最终发表版本的差异;不统计某个子领域的论文数量(那需要全量检索,而被限流阻断)。本条目只回答一个问题:这个档案长什么样、怎么合法取用、哪里会坑人。


§1 数据集概览

§1.1 一句话

arXiv 不是一个数据集,是一个每天新增一千多篇论文的开放档案——它把「最新的方法」在同行评审之前就公开,代价是没有任何质量担保。

§1.2 硬数字

项 值 来源
累计提交 3,224,545 官方统计页原文
可获取文章 3,226,976 同上
迁移入库 2,431 同上
已删除 156 同上
上线月份 1991-08 月度序列首条有效月
2026 年 1–10 月提交 302,357 月度 CSV 求和
2026 年月均 30,236 302,357 ÷ 10
2025 全年 284,486 月度 CSV
2024 全年 244,031 同上
3,224,545 ÷ 2,431 差异说明 —
单月峰值 40,363(2026-09) 月度 CSV
默认元数据许可 CC0 1.0 官方许可页

§1.3 三十五年,从 306 篇到 36 万篇

月度 CSV 里最值得看的不是总量,是增长曲线:

年份 提交数 相对上年
1991(8–12 月) 306 —
1992 3,263 ×10.7
2000 30,601 —
2010 70,131 —
2015 105,280 —
2020 178,329 —
2023 208,493 —
2024 244,031 +17.0%
2025 284,486 +16.6%
2026(1–10 月) 302,357 按十个月折算全年约 36.3 万

三个读数:

第一,2026 年前十个月已经超过 2025 年全年。 302,357 对 284,486,多了 6.3%。按剩余两个月的历史均值(约 3 万/月)推算,2026 全年会到 36 万以上,同比增速约 +27%。

第二,增速在加快而不是放缓。 2024 年 +17.0%,2025 年 +16.6%,2026 年预计 +27%。这与「学术出版饱和」的直觉相反——预印本正在取代部分期刊投稿的功能。

第三,单月峰值出现在 2026-09(40,363 篇)。 这是首次单月突破 4 万。九月是学术界的投稿高峰(会议截稿后的集中释放),这个峰值的出现说明 arXiv 已经成为主投稿渠道而非补充渠道。

§1.4 为什么一个医学数据集库要收预印本

库内文献类条目已有 8 条(s2orc、litcovid、pubmedqa、pubtator-central、semmeddb、pubtabnet 等),它们有一个共同特征:以「已发表」为界。

这个界带来一个结构性的时间滞后:一篇医学影像分割的新方法,从预印本发布到期刊见刊,通常要 6–18 个月。做模型的人如果只读已发表文献,永远落后半年以上。

eess.IV(影像、视频处理与多媒体)是医学影像方法的首发地。UNet 之后的绝大多数分割架构、影像重建、自监督预训练方法,都是先出现在这里。

所以 arXiv 在本库的定位不是「又一个文献库」,是「时效性这一极」——补的是「已发表」这条界之外的那段时间。

§1.5 与本库已有条目的边界

库内条目 关系 区别
s2orc 同域,互补 S2ORC 是已发表全文语料(含引用图),arXiv 是预印本,早 6–18 个月,且无引用图
pubmedqa / pubtator-central 同域,不同用途 那两条是标注过的生物医学 NLP 数据,arXiv 是未标注的原始文献
litcovid 同域,不同范围 LitCovid 是 COVID 专题的已发表文献,arXiv 的 COVID 相关预印本不在其内

一句话分工:S2ORC 说「已经定论的」,arXiv 说「刚刚提出还没被审的」。


§2 分类体系:找到医学相关的那一层

§2.1 分类是树,不是标签

arXiv 的分类是层级式的(cs.CV = Computer Science → Computer Vision),但与医学 AI 相关的分类分散在几个顶层之下:

顶层 相关子类 与医学 AI 的关系
cs 计算机科学 cs.CV 计算机视觉 强——影像模型的主战场
cs.CL 计算语言学 强——医学 NLP、临床文本处理
cs.LG 机器学习 中——方法论,跨领域
eess 电气工程与系统科学 eess.IV 影像、视频处理与多媒体 最强——医学影像方法的传统归属
eess.SP 信号处理 中——生理信号
q-bio 定量生物学 q-bio.QM 定量方法 中——生物信息学方法
q-bio.TO 组织与器官 弱——偏生物学
stat 统计 stat.ML 机器学习 中——统计方法
physics 物理 physics.med-ph 医学物理 强——放疗、影像物理

关键判断:没有「医学影像」这个分类。 医学影像论文分散在 eess.IV、cs.CV、physics.med-ph 三处,且大量论文同时挂多个分类。想找全医学影像论文,必须做分类并集 + 关键词过滤,单看一个分类会漏。

§2.2 各分类的真实投稿量差异巨大

2026-10-23 单日新投稿:

分类 当日新投稿 当日交叉列表
cs.CV 192 102
cs.CL 183 77
eess.IV 17 13
q-bio.QM 4 3

这张表推翻一个常见预期:eess.IV(医学影像的传统归属)每天只有 17 篇新投稿,是 cs.CV 的十一分之一。

原因:医学影像方法论文近年大量改投 cs.CV,因为那里曝光度高、审稿人更多是方法学背景。eess.IV 反而成了「偏工程实现」的那部分。

实用推论:只在 eess.IV 里检索医学影像方法,会漏掉大部分。 正确做法是以 cs.CV 为主、eess.IV 为辅,再用关键词(medical、clinical、radiolog、patholog、MRI、CT 等)过滤。

§2.3 交叉分类导致的重复计数

一篇论文可以挂多个分类。Atom API 返回的 <category> 元素可以有多个,而 <arxiv:primary_category> 只有一个。

后果:如果你按分类分别拉取再求并集,同一篇会被算多次。必须按 arXiv ID 去重。

# 错误做法:直接拼
all_papers = fetch("cat:cs.CV") + fetch("cat:eess.IV")   # 有重复

# 正确做法:按 id 去重
seen = {}
for p in fetch("cat:cs.CV") + fetch("cat:eess.IV"):
    seen[p["id"]] = p
all_papers = list(seen.values())

§2.4 版本与「一稿多版」

arXiv 的版本机制是它区别于期刊的一个特点:

版本 含义
v1 首次提交
v2, v3, … 后续修订(改错、补实验、回应审稿意见)
vN(最终) 通常对应期刊接收版

三个后果:

后果一,published 与 updated 不同。 published 是 v1 时间,永不改变;updated 是最新版本时间。做「某年新增多少篇」的统计必须用 published。用 updated 会把 2015 年的老论文因为 2026 年的一次小修算成今年的新论文。

后果二,同一篇的不同版本内容可能差异很大。 v1 与 v5 的结论可能相反(作者发现了错误)。训练语料取哪个版本,会直接影响结果。

后果三,许可可以逐版本不同。 官方明确写「different versions of the work can have different licenses」。v1 是 CC BY,v3 改成 CC BY-NC-ND 是可能的。用过期的版本号取全文,可能拿到与你以为的许可不符的内容。

§2.5 撤稿不删档

arXiv 的 withdraw 是标记,不是删除。被撤稿的论文:

  • 摘要页仍可访问,显示撤稿说明
  • PDF 仍可下载
  • v1 到 vN 全部保留

这是学术档案的设计选择(保持记录的完整性),但对语料清洗是个坑:如果你的管道只按分类和时间拉取,会把已撤稿的论文一起拉进来。

检测方式:Atom API 返回的 <arxiv:comment> 或摘要页的撤稿标记。没有统一的 withdrawn 字段,需要文本匹配。

§2.6 怎么判断一篇预印本「熟了没有」

arXiv 没有同行评审,但版本历史本身就是一种信号。这是本条目最实用的一节。

信号一:版本数。

版本情况 含义 可信度
只有 v1,且发布不到 3 个月 刚提出,未见反馈 低
只有 v1,但已过 18 个月 大概率已投期刊并见刊(只是没回填 DOI) 中
v2 / v3 出现 作者在修订,说明仍在推进 中
v4 以上 长期打磨,或反复被拒 视情况
最新版 comment 写「Accepted at XXX」 已被会议/期刊接收 高

信号二:comment 字段。 这个自由文本字段承载了大量状态信息:

  • Accepted at MICCAI 2026 —— 已接收
  • To appear in Medical Image Analysis —— 已录用待刊
  • 22 pages, 8 figures —— 只是页数信息,无状态
  • Withdrawn due to error in Section 4 —— 撤稿

信号三:DOI。 <arxiv:doi> 非空,通常意味着已正式发表。空值不意味着没发表,只意味着作者没回填。

实用做法:把这三条合成一个粗糙但有效的成熟度评分:

def maturity(p):
    score = 0
    if p["version"] >= 2: score += 1
    if (p.get("comment") or "").lower().find("accept") >= 0: score += 2
    if p.get("doi"): score += 2
    return score          # 0–5

评分 0 的论文不是没用——它是最新的想法,价值正在于「还没被验证」。但如果你的任务需要可靠的方法结论,评分 3 以上的更合适。

这个评分不能替代同行评审。 它只告诉你「这篇论文处于什么阶段」,不告诉你「它的结论对不对」。

§2.7 为什么「arXiv 上的医学论文」这个概念要小心

把 arXiv 与医学联系起来时,有一个结构性的错位值得说清:

arXiv 的医学相关部分,绝大部分是「方法学」,不是「医学」。

具体分布:

内容类型 在 arXiv 的位置 举例
医学影像算法 cs.CV、eess.IV 分割网络、重建方法、自监督预训练
医学 NLP cs.CL 临床文本抽取、报告生成、医学问答
医学物理 physics.med-ph 放疗剂量计算、成像物理
生物信息方法 q-bio.QM 序列比对、单细胞分析
临床研究 几乎没有 临床试验、队列研究、病例报告
流行病学 几乎没有 疾病监测、暴发调查

原因:临床与流行病学研究有成熟的预印本平台(medRxiv、SSRN),且期刊对预印本政策更严格。做这些研究的人也不习惯用 arXiv。

实用推论:如果你的需求是「找医学影像的 SOTA 方法」,arXiv 是对的地方。如果需求是「找某病的临床证据」,来错地方了。


§3 取数通道

§3.1 三条路,选错会浪费几天

通道 适用 限制
Atom API 小批量、按条件查询、增量监测 限流严格,实测触发 429
批量数据(S3 / Kaggle) 全量分析、训练语料构建 需下载 TB 级数据
OAI-PMH 元数据定期同步 仅元数据,无全文

选择判据很简单:

  • 要几百到几万条 → Atom API
  • 要几十万条以上 → 批量数据
  • 只同步元数据做索引 → OAI-PMH

§3.2 Atom API 的实测限流

这是本节最重要的一条实测结果:

curl -sL "https://export.arxiv.org/api/query?search_query=cat%3Aeess.IV&max_results=1"
# HTTP 429
# Rate exceeded.

返回体只有 14 个字节:Rate exceeded. 没有 Retry-After 头,没有说明限流窗口多长。

官方文档建议请求间隔不少于 3 秒。实测中连续几次请求就会触发 429,且恢复时间不确定。

这意味着:不要写「循环翻页拉全量」的脚本。max_results 上限是 2000,但要拿到 2000 条需要多次分页,每次间隔 3 秒,且随时可能被 429 打断。

§3.3 Atom API 的路径与参数

https://export.arxiv.org/api/query?{params}
参数 作用 备注
search_query 查询表达式 形如 cat:eess.IV、all:medical imaging、au:Smith
start 起始偏移 分页用
max_results 返回条数 上限 2000
sortBy relevance / lastUpdatedDate / submittedDate —
sortOrder ascending / descending —
id_list 按 ID 批量取 逗号分隔,可一次取多篇

查询语法(这是 arXiv 特有的,与通用搜索不同):

前缀 作用 例
ti: 标题 ti:segmentation
abs: 摘要 abs:radiology
au: 作者 au:LeCun
cat: 分类 cat:eess.IV
all: 全字段 all:COVID

布尔组合:AND / OR / ANDNOT。注意是 ANDNOT 不是 NOT:

cat:eess.IV AND abs:segmentation ANDNOT abs:natural

§3.4 响应结构

Atom XML 的字段名与多数文献 API 不同,这是最容易出错的一处:

Atom 元素 含义 与常见命名的差异
<entry> 一篇论文 不是 <article>
<id> arXiv ID 的完整 URL http://arxiv.org/abs/2401.12345v2
<title> 标题 常含换行符,需清洗
<summary> 摘要 不是 <abstract>
<published> v1 时间 —
<updated> 最新版时间 —
<author><name> 作者名 姓在前,逗号分隔
<arxiv:primary_category> 主分类 —
<category> 全部分类(可多个) —
<link rel="related" title="pdf"> PDF 链接 不是 <link rel="enclosure">
<arxiv:doi> DOI(若有) 可能不存在
<arxiv:comment> 作者备注 含页数、图表数、会议接收信息

三个必须注意的点:

  1. <summary> 是摘要,不是 <abstract>。 用 abstract 字段名解析会得到空值。
  2. <id> 是完整 URL,带版本号。 要提取纯 ID 需正则 abs/(.+)$。
  3. <category> 可多个,<arxiv:primary_category> 只有一个。 按分类去重时用 ID,不要用 category。

§3.5 批量数据

要建训练语料,必须走批量数据:

通道 内容 规模
S3 镜像(s3://arxiv/) PDF + TeX 源 + 元数据 TB 级
Kaggle 镜像 元数据 + 部分全文 分片下载
OAI-PMH 仅元数据 MB 级

S3 是按需请求(requester pays)方式提供的,需要 AWS 账号并承担流量费。对个人研究者,Kaggle 镜像更实际。


§4 记录结构与字段字典

§4.1 一条记录是什么

一条记录 = 一篇预印本的元数据。

(2401.12345, "A New Segmentation Method...", [作者列表], eess.IV, 2024-01-15) → 一条记录

不是一段正文,不是一组实验数据,不是一份数据集。是学术档案里的一个条目。

§4.2 arXiv ID 的两种格式

格式 形态 时期
旧格式 hep-th/9901001 1991–2007 年 3 月
新格式 2401.12345 2007 年 4 月起

新格式的结构:

2401 . 12345
││    └── 该月内的流水号
└└────── YYMM(年份后两位 + 月份)

2401 是 2024 年 1 月,不是「第 2401 号」。 这个格式让 ID 隐含了时间信息,但也带来一个坑:ID 里的年月是「提交月份」,可能与 published 字段的月份差一天(月末提交、次月分配 ID)。

§4.3 作者与机构字段的现实

<author><name> 一定有值,<arxiv:affiliation> 大量为空。

这不是 API 的问题,是作者提交时没填。 后果是:你不能靠 arXiv 元数据做机构层面的计量分析(比如「某大学今年发了多少篇」)。

替代方案:用 OpenAlex 或 S2ORC 的机构消歧结果,通过 DOI 或标题匹配回 arXiv。

§4.4 许可字段是逐篇的

这是本条目最需要注意的字段。arXiv 的正文许可有 6 类,由作者在提交时选定:

许可 商用 修改 再分发 说明
CC BY 4.0 ✅ ✅ ✅ 最宽松,只需署名
CC BY-SA 4.0 ✅ ✅ ✅ 衍生作品须同许可
CC BY-NC-SA 4.0 ❌ ✅ ✅ 禁商用,衍生须同许可
CC BY-NC-ND 4.0 ❌ ❌ ✅ 禁商用、禁修改
arXiv 永久非独占许可 ❌ ❌ ❌ 仅授权 arXiv 分发,限制一切再使用
CC0 ✅ ✅ ✅ 公有领域,无任何条件

关键判断一:这 6 类不是平均分布的。 物理学与数学领域大量使用 arXiv 非独占许可(这是历史默认选项),而 AI/CS 领域近年来 CC BY 的比例在上升。不同分类的许可分布差异极大,不能用一个整体比例外推。

关键判断二:「arXiv 非独占许可」是最容易被误解的一类。 它的含义是「作者授权 arXiv 分发,但没有授权任何其他人再使用」。看到论文在 arXiv 上能免费下载,不等于你能拿它做训练。这是全文语料构建里最高风险的一类。

关键判断三:许可不可撤销。 官方明确写「The license chosen is irrevocable and cannot be changed」。作者后悔了也不能改回更宽松或更严格的许可——只能发新版本(新版本可以有新许可,但旧版本保持旧许可)。

§4.5 元数据是 CC0,正文不是

这是一个必须分清的区分:

对象 许可 能做什么
元数据(标题、作者、摘要、分类、日期) CC0 1.0 任何用途,无需署名
正文(PDF、TeX 源) 逐篇许可(6 类) 取决于该篇的许可

官方原文:

A Creative Commons CC0 1.0 Universal Public Domain Dedication will apply to all metadata.

这意味着:

  • ✅ 你可以自由构建「arXiv 全部论文的元数据索引」,商用也行,不用署名
  • ⚠️ 但你不能自由使用「arXiv 全部论文的正文」,必须逐篇看许可

对训练语料的实际含义:用元数据训练(标题→摘要摘要生成、分类预测、作者消歧)是完全安全的。用正文训练(全文语言模型、PDF 版面理解)必须做许可过滤。


§5 检索、抽样与泄漏分析

§5.1 用医学 AI 的眼光看,泄漏在哪

把 arXiv 当训练语料或评测基准,有三层泄漏:

第一层:时间泄漏(最严重)。 用 updated 而不是 published 做时间切分,会把 2015 年的老论文算进 2026 年的测试集。这是 arXiv 特有的陷阱——多数文献库没有版本机制,不会有这个问题。

第二层:训练/测试同源。 如果预训练语料包含某篇论文,而评测集是「预测该论文的方法是否有效」,那是直接泄漏。做方法学综述类任务时特别要注意。

第三层:预印本与正式版重复。 同一项工作可能同时存在 arXiv 预印本与期刊正式版。如果语料同时收了两者,等于同一内容被算了两次,会放大它在训练中的权重。

§5.2 时间切分的正确做法

def split_by_published(papers, cutoff="2025-01-01"):
    """按 v1 提交时间切分。绝不能按 updated。"""
    train = [p for p in papers if p["published"] < cutoff]
    test  = [p for p in papers if p["published"] >= cutoff]
    # 检查测试集里的论文是否有旧版本落在训练期
    leak = [p for p in test if p.get("first_version_date", p["published"]) < cutoff]
    print(f"train={len(train)} test={len(test)} 潜在泄漏={len(leak)}")
    return train, test

关键在最后那个检查:一篇论文的 published 是 v1 时间,这是它第一次出现在 arXiv 的时刻。如果 v1 在训练期之后,但作者在 v1 里引用了训练期的内容,这是正常的学术行为,不算泄漏。真正的泄漏是同一篇论文的不同版本跨了切分点——v1 在训练期、v5 在测试期。这种情况要按 v1 归入训练集。

§5.3 按分类检索的正确姿势

# 找医学影像相关论文:分类并集 + 关键词过滤
QUERY = (
    "(cat:eess.IV OR cat:cs.CV OR cat:physics.med-ph) "
    "AND (abs:medical OR abs:clinical OR abs:radiolog "
    "OR abs:patholog OR abs:diagnos)"
)

三个要点:

  1. 分类用 OR 并集,因为医学影像分散在三处(§2.1)
  2. 关键词放在 abs: 而不是 all:,避免命中参考文献里的词
  3. 词干截断(radiolog 而不是 radiology)能同时匹配 radiological、radiologist

注意:arXiv 的查询语法不支持 * 通配符。radiolog* 会报错或返回空。要用截断只能靠拼多个词。

§5.4 覆盖率:为什么不能统计「医学影像论文总数」

本条目没法给出「eess.IV 里医学影像论文共多少篇」这个数,原因是双重的:

原因一,API 限流。 全量检索需要数千次分页请求,实测会稳定触发 429。

原因二,分类边界模糊。 医学影像论文分散在多个分类,且「是否医学」只能靠关键词判断,而关键词永远不全(有人写 histopathology,有人写 whole slide image,有人写 WSI)。

所以本条目只给分类的日投稿量(17 / 192 / 183),不给分类总量。 这是诚实的边界,不是遗漏。

§5.5 抽样:怎么用最小代价判断一个方向的活跃度

三步,每次请求间隔 ≥3 秒:

  1. 看当日新投稿:/list/{cat}/new 页面,直接读 HTML 里的条目数(不用 API,不会限流)
  2. 看某个关键词的近期命中:search_query=cat:eess.IV AND abs:你的关键词&sortBy=submittedDate&max_results=50
  3. 看时间跨度:把第 2 步的 max_results 拉到 2000,看最早一条的日期

三步之后,这个方向的规模与活跃度就清楚了。

§5.6 四组查询写法的精度差异

同一个意图(找医学影像论文),四种写法得到的结果集完全不同。这是实操中最容易做错的一环:

写法 表达式 问题
太窄 cat:eess.IV AND ti:medical 只匹配标题含 medical 的,漏掉 clinical、radiolog、diagnos 等
太宽 all:medical 命中任何提到 medical 一次的论文,含大量非影像、非方法学的
分类错 cat:eess.IV 只有当日 17 篇的量级,漏掉大部分(医学影像其实多在 cs.CV)
推荐 (cat:cs.CV OR cat:eess.IV OR cat:physics.med-ph) AND (abs:medical OR abs:clinical OR abs:radiolog OR abs:patholog OR abs:diagnos) 分类并集 + 摘要级关键词

四组写法各自的取舍:

「太窄」的问题在召回率。 用 ti:medical 会漏掉所有标题写 radiology、histopathology、whole slide image 的论文。医学领域的用词极其分散,指望一个词覆盖不可能。

「太宽」的问题在精度。 all:medical 会命中「本文方法也可用于 medical imaging」这种随口一提的论文。有个常用的近似判据:如果 medical 只出现在摘要最后一句的 future work 里,它多半不是医学影像论文。

「分类错」是最隐蔽的一种。 因为 eess.IV 这个名字看起来最像「影像」,直觉上就该去那里找。但实测当日 eess.IV 只有 17 篇新投稿,cs.CV 是 192 篇。医学影像方法论文的主战场已经移到 cs.CV。

推荐的写法也有代价:它需要 5 个关键词的 OR,查询串很长,且 arXiv 的查询解析对长表达式的处理不如通用搜索引擎稳定。实际使用时建议拆成几次短查询,本地合并去重,比一个长查询更可靠。

一条经验:医学影像论文的关键词其实有很强的信号词——lesion、segmentation、radiologist、annotat、patient cohort、ground truth mask。把 lesion 与 radiologist 加进关键词集,精度会明显提升。这两个词几乎只在医学影像语境里出现。


§6 AI 就绪指南

§6.1 最小可用流水线(带限流礼貌)

import time
import xml.etree.ElementTree as ET
import requests

BASE = "https://export.arxiv.org/api/query"
NS = {"a": "http://www.w3.org/2005/Atom",
      "arxiv": "http://arxiv.org/schemas/atom"}

def query(q, start=0, max_results=100, retries=3):
    params = {"search_query": q, "start": start,
              "max_results": max_results,
              "sortBy": "submittedDate", "sortOrder": "descending"}
    for attempt in range(retries):
        r = requests.get(BASE, params=params, timeout=60,
                         headers={"User-Agent": "research-bot/1.0"})
        if r.status_code == 429:
            wait = 10 * (attempt + 1)          # 指数退避,别用固定间隔
            print(f"429, wait {wait}s")
            time.sleep(wait)
            continue
        r.raise_for_status()
        return parse(r.text)
    raise RuntimeError("429 持续,改用批量数据")

429 必须单独处理。 用 raise_for_status() 直接抛异常会让整个流程中断,而 429 是可恢复的。

§6.2 解析 Atom

def parse(xml_text):
    root = ET.fromstring(xml_text)
    out = []
    for e in root.findall("a:entry", NS):
        raw_id = e.find("a:id", NS).text                    # http://arxiv.org/abs/2401.12345v2
        m = raw_id.rstrip("/").split("/abs/")[-1]
        out.append({
            "arxiv_id": m,
            "id_no_ver": m.split("v")[0] if "v" in m else m,
            "version": int(m.split("v")[1]) if "v" in m else 1,
            "title": " ".join(e.find("a:title", NS).text.split()),
            "abstract": " ".join(e.find("a:summary", NS).text.split()),   # 注意是 summary
            "published": e.find("a:published", NS).text,
            "updated": e.find("a:updated", NS).text,
            "primary_cat": e.find("arxiv:primary_category", NS).attrib.get("term"),
            "cats": [c.attrib["term"] for c in e.findall("a:category", NS)],
            "authors": [a.find("a:name", NS).text for a in e.findall("a:author", NS)],
            "doi": (e.find("arxiv:doi", NS).text
                    if e.find("arxiv:doi", NS) is not None else None),
        })
    return out

四处必须注意:

  1. summary 不是 abstract —— 用错字段名会得到 None
  2. 标题和摘要含换行与多余空格 —— " ".join(text.split()) 是标准清洗
  3. arxiv: 命名空间 —— 用 arxiv:primary_category、arxiv:doi,不加前缀会找不到
  4. 版本号从 ID 尾部提取 —— 2401.12345v2 的 v2 不在单独字段里

§6.3 去重(跨分类必做)

def dedup(papers):
    """按无版本 ID 去重,保留最高版本。"""
    best = {}
    for p in papers:
        k = p["id_no_ver"]
        if k not in best or p["version"] > best[k]["version"]:
            best[k] = p
    return list(best.values())

去重的键是 id_no_ver 而不是 arxiv_id。 因为同一篇的不同版本会在不同时间被检索到,带版本号去重会让它们全部保留。

§6.4 许可过滤(训练语料必做)

ALLOW_COMMERCIAL = {
    "http://creativecommons.org/licenses/by/4.0/",
    "http://creativecommons.org/licenses/by-sa/4.0/",
    "http://creativecommons.org/publicdomain/zero/1.0/",
}

def filter_license(papers, allow=ALLOW_COMMERCIAL):
    ok, skip = [], {}
    for p in papers:
        lic = (p.get("license") or "").rstrip("/") + "/"
        if lic in allow:
            ok.append(p)
        else:
            skip[lic] = skip.get(lic, 0) + 1
    return ok, skip

注意两处:

  1. 许可 URL 的尾斜杠不一致。有的带 / 有的不带,比较前要统一。
  2. 许可缺失的论文要按最严格处理。license 为 None 时不能假设它宽松——通常是旧论文或提交时未填,默认按「不可商用」处理。

这一步不能省。 用全部 arXiv 正文训练商用模型,是把 CC BY-NC-SA、CC BY-NC-ND、arXiv 非独占许可 三类明确禁止商用的内容一起吃了进去。

§6.5 元数据索引的构建(最安全的用法)

如果目标只是建一个可检索的文献索引,完全不需要碰正文:

def build_index(papers):
    df = pd.DataFrame(papers)
    df["year"] = pd.to_datetime(df["published"]).dt.year
    df["month"] = pd.to_datetime(df["published"]).dt.to_period("M")
    # 元数据 CC0,可以自由存储、商用、再分发
    return df[["id_no_ver", "title", "abstract", "primary_cat",
               "cats", "authors", "published", "year", "month", "doi"]]

这是本条目推荐的默认用法:元数据 CC0,无任何限制;正文按需、逐篇看许可。

§6.6 三个必须记录的元数据

项 为什么
采集日期 arXiv 每日新增,同一天采集两次结果不同
查询表达式原文 cat:eess.IV AND abs:medical 与 cat:eess.IV AND all:medical 结果差异很大
是否含各版本的许可 许可逐版本可不同,只记录最新版会漏掉历史版本的约束

§6.7 从零建一份「医学影像方法语料」的完整流程

把前六节的前提落成一次可执行的构建。目标是:一份用于训练医学影像方法理解的语料,合法、可复现、有版本。

第一步,定范围(写下来,不是想一下)。

分类:cs.CV ∪ eess.IV ∪ physics.med-ph
关键词:medical / clinical / radiolog / patholog / MRI / CT / ultrasound / histopatholog
时间:v1 提交于 2019-01-01 至 2024-12-31
许可:仅 CC BY 4.0、CC BY-SA 4.0、CC0

第二步,取数用 bulk data,不用 API。

# bulk 元数据(arXiv 官方提供 S3 镜像与 Kaggle 镜像)
meta = pd.read_parquet("arxiv_metadata.parquet")
meta = meta[meta["primary_category"].isin({"cs.CV", "eess.IV", "physics.med-ph"})]
meta["v1_date"] = pd.to_datetime(meta["versions"].str[0].str["created"])
meta = meta[(meta["v1_date"] >= "2019-01-01") & (meta["v1_date"] < "2025-01-01")]
print(len(meta))

第三步,关键词过滤(在标题+摘要上做,不在全文)。

import re
KW = re.compile(
    r"\b(medical|clinical|radiolog|patholog|MRI|CT scan|ultrasound|"
    r"histopatholog|lesion|diagnos|X-ray|mammograph)\b", re.I)

mask = meta["title"].fillna("").str.contains(KW) | \
       meta["abstract"].fillna("").str.contains(KW)
meta = meta[mask]
print(len(meta))

只在标题与摘要上过滤,不要在全文上过滤——否则任何提到「clinical」一次的论文都会进来,而多数是泛泛提及。

第四步,许可过滤(这一步必须逐篇)。

ALLOW = {"http://creativecommons.org/licenses/by/4.0/",
         "http://creativecommons.org/licenses/by-sa/4.0/",
         "http://creativecommons.org/publicdomain/zero/1.0/"}

def norm(lic):
    return (lic or "").rstrip("/") + "/"

meta["lic"] = meta["license"].map(norm)
before = len(meta)
meta = meta[meta["lic"].isin(ALLOW)]
print(f"许可过滤: {before} → {len(meta)}")

这个比例会让人吃惊。 医学影像领域里,CC BY-NC-ND 与 arXiv 非独占许可占相当比例(尤其来自某些出版社的预印本政策)。剩下能商用的通常不到一半。

第五步,撤稿检测。

def withdrawn(p):
    c = (p.get("comment") or "").lower()
    return any(k in c for k in ("withdraw", "retract", "removed", "error in"))

meta = meta[~meta.apply(withdrawn, axis=1)]

第六步,去重(预印本 vs 正式版)。

# 有 DOI 的,按 DOI 去重;没有的,按 标题归一化 + 第一作者 去重
def title_key(t):
    return re.sub(r"[^a-z0-9]", "", (t or "").lower())[:80]

meta["tkey"] = meta["title"].map(title_key)
meta = meta.drop_duplicates("tkey").drop(columns="tkey")

第七步,冻结并记录。

meta.to_parquet("medimg_corpus_v1.parquet")
with open("medimg_corpus_v1.MANIFEST.json", "w") as f:
    json.dump({
        "built_at": "2026-10-24",
        "arxiv_snapshot": "2026-10",
        "categories": ["cs.CV", "eess.IV", "physics.med-ph"],
        "keyword_regex": KW.pattern,
        "v1_date_range": ["2019-01-01", "2025-01-01"],
        "allowed_licenses": sorted(ALLOW),
        "n_articles": len(meta),
    }, f, ensure_ascii=False, indent=2)

MANIFEST 是这份语料可复现的唯一凭证。 没有它,半年后你自己也说不清这批数据是怎么筛出来的。

这个流程的三处取舍要写进论文:

  1. 只保留三种宽松许可 → 会损失一大半样本,但商用安全
  2. 关键词限定在标题与摘要 → 会漏掉用词特殊的论文,但精度高
  3. 按 DOI + 标题去重 → 可能误删同名的不同论文,但比例极低

§6.8 判断一份 arXiv 语料是否可用的四个问题

问题一:时间切分用的是 published 还是 updated? 用 updated 就必须重做,否则测试集混入老论文。

问题二:许可字段是否逐篇检查过? 没有的话,语料里可能混着明确禁止商用的内容。

问题三:跨分类去重做了吗? 没做的话,多分类论文被重复计入,语料权重失真。

问题四:撤稿论文过滤了吗? arXiv 撤稿不删档,不管的话会把已撤回的结论喂给模型。

四个都过了,这份语料才可用于训练。


§7 质量评估、DAIMS 与口径交叉核对

§7.1 DAIMS 评估

维度 得分 说明
数据集标识 3/3 每篇有永久 ID(含版本),DOI 多数可查
许可清晰度 3/3 元数据统一 CC0,正文 6 类逐篇标注,条款完整
溯源信息 2/3 有作者与版本历史,但机构字段大量为空
版本与更新 3/3 版本机制(v1/v2/v3)完整,历史版本永久保留,更新频率日级
字段字典 3/3 Atom 标准字段 + arXiv 扩展命名空间,文档齐全
缺失处理 1/3 没有统一的「撤稿」「质量」标记,只能靠文本匹配
文档完备度 3/3 API 文档、批量数据文档、政策文档齐全
访问稳定性 1/3 API 限流严格,实测 429;批量数据可用但需 AWS 账号
合计 19/24 = 79.2% 内容质量高,访问体验差

§7.2 那 5 分扣在哪

扣分集中在两端:「缺失处理」与「访问稳定性」。

缺失处理 1/3:arXiv 没有结构化的「论文状态」字段。撤稿、替换、期刊接收这些状态只写在 <arxiv:comment> 的文本里,或摘要页的说明里。这意味着任何自动化管道都必须自己做文本解析,而且解析规则会随作者写法变化。 这是与 UCDP(22/24)那种「每个状态都有字段」的根本差别。

访问稳定性 1/3:这是本条目实测最痛的一点。Atom API 的 429 没有 Retry-After、没有限流窗口说明,只能靠指数退避硬试。批量数据虽然可用,但 S3 是 requester-pays,需要 AWS 账号。

其余六项都很扎实,尤其「版本与更新」——v1 到 vN 全部永久保留,这在文献库里是罕见的完整性。

§7.3 与 PubMed / S2ORC 的口径核对

arXiv PubMed S2ORC
收录范围 预印本(物理、CS、数学、生物等) 生物医学已发表文献 多领域已发表全文
同行评审 无 有(期刊) 有(期刊)
时效 最快(即时) 滞后 6–18 月 滞后更久
全文许可 逐篇 6 类 多为订阅(需授权) 多为订阅
撤稿处理 不删档,靠文本标记 有结构化标记 有结构化标记
元数据许可 CC0 部分开放 需授权

三个实用结论:

  1. arXiv 不能替代 PubMed。 它没有同行评审,也没有 MeSH 主题标引。做系统综述时必须用 PubMed。
  2. arXiv 适合做「前沿追踪」与「方法预训练」。 尤其在影像分割、重建、自监督这些方向上,最新方法先在 arXiv 出现。
  3. 两者有重叠但不完全。 同一篇论文可能既在 arXiv 又在 PubMed(作为预印本与正式版)。做去重要靠 DOI 或标题+作者+年份匹配。

§7.4 一个必须说清的口径:3,226,976 是「可获取」不是「有效」

官方给的两个数:

  • 3,224,545 = 累计提交数(不含迁移入库的 2,431 篇,不含已删除的 156 篇)
  • 3,226,976 = 可获取文章数

差值是 3,226,976 − 3,224,545 = 2,431,正好等于「迁移入库」的数量。

这两个数都包含撤稿论文。 「可获取」意味着「文件还在」,不意味着「结论有效」。如果你的语料统计说「基于 arXiv 的 326 万篇论文」,读者会以为这 326 万都是有效研究——实际数字要减去撤稿与明显有误的部分。

正确写法:

arXiv 截至 2026 年 10 月 24 日累计可获取文章 3,226,976 篇(含已撤稿标记的条目)。


§8 生态位与相邻资源

§8.1 学术文献数据的三层

第一层:元数据索引(arXiv、Crossref、OpenAlex、Semantic Scholar)—— 题录级,最全
第二层:全文与结构化(S2ORC、PubMed Central、arXiv bulk)      —— 全文级
第三层:领域标注(PubTator、LitCovid、PubMedQA)                —— 标注级

arXiv 同时提供第一层与第二层,但两者许可不同(元数据 CC0,正文逐篇)。

§8.2 与 OpenAlex 的分工

OpenAlex 是目前最全的开放学术元数据索引(2.5 亿+ 作品),arXiv 是其中一个来源。

arXiv OpenAlex
范围 仅本平台预印本 全学科全平台(期刊、会议、预印本、图书)
许可 元数据 CC0 元数据 CC0
引用图 无 有
机构消歧 无(字段空) 有
更新速度 日级 周级

实用判断:要引用图、要机构统计、要跨来源检索 → OpenAlex;要最新的预印本原文 → arXiv。

§8.3 与 S2ORC 的分工

s2orc 是本库已有的条目,两者关系最紧密:

arXiv S2ORC
内容 预印本(PDF + TeX) 已发表全文(PDF 解析)
结构 无(原始 PDF) 有(章节、段落、引用、表格切分)
时效 即时 滞后
用途 追赶前沿 结构化语料、引用分析

互补关系:arXiv 给最新的原文,S2ORC 给结构化的已发表文本。做医学 NLP 的训练语料,两者拼起来才是完整的——S2ORC 补历史深度,arXiv 补时效。

§8.4 与 bioRxiv / medRxiv 的区别

这两个是生物医学专门的预印本平台(冷泉港实验室运营),常被与 arXiv 混淆:

arXiv bioRxiv / medRxiv
学科 物理、数学、CS、统计、经济、q-bio 纯生物医学
医学临床研究 少(医学影像方法在这里) 多(临床试验、流行病学)
许可 6 类可选 CC BY / CC BY-NC / CC BY-ND / CC0
API Atom 有

关键区别:临床医学研究基本不在 arXiv,在 medRxiv。 arXiv 的医学相关部分主要是方法学(影像处理、NLP),不是临床研究。做临床证据研究的人应该去 medRxiv,不是 arXiv。


§9 许可、伦理与合规

§9.1 两套许可,必须分开谈

这是本条目最重要的一条合规信息:

对象 许可 能否商用 能否用于训练
元数据(标题、作者、摘要、分类) CC0 1.0 ✅ ✅
正文(PDF、TeX) 逐篇(6 类) 看具体许可 看具体许可

官方原文:

A Creative Commons CC0 1.0 Universal Public Domain Dedication will apply to all metadata.

「元数据」的边界在哪? 摘要算元数据,正文不算。这个区分很关键——用标题+摘要训练是完全安全的,用全文训练必须逐篇看许可。

§9.2 六类正文许可的实际约束

许可 商用 修改/衍生 再分发 常见于
CC BY 4.0 ✅ ✅ ✅ AI/CS 领域近年较多
CC BY-SA 4.0 ✅ ✅(衍生须同许可) ✅ 部分数学
CC BY-NC-SA 4.0 ❌ ✅(衍生须同许可) ✅ 部分生物医学
CC BY-NC-ND 4.0 ❌ ❌ ✅ 部分期刊要求
arXiv 永久非独占许可 ❌ ❌ ❌ 历史默认,物理/数学大量存在
CC0 ✅ ✅ ✅ 少数

「arXiv 永久非独占许可」需要单独说清。 它的条款是「作者授权 arXiv 分发,并限制其他实体或个人的任何形式再使用」。这意味着:

  • ✅ 你可以下载、阅读、引用
  • ❌ 你不能把它放进训练语料、不能摘录大段、不能再分发

这是全文语料构建里最容易踩的一类。 因为论文在 arXiv 上免费可见,容易被误认为「可自由使用」。

§9.3 许可不可撤销

官方明确:

The license chosen is irrevocable and cannot be changed.

后果:一篇 2015 年以 arXiv 非独占许可提交的论文,即使作者 2026 年想改成 CC BY,也不能改。旧版本保持旧许可。

对语料的含义:许可状态是按版本固定的。用最新版本取全文,拿到的是最新版本的许可;用 v1 取,拿到的是 v1 的许可。两者可能不同。

§9.4 伦理:三类需要谨慎的用法

第一类:把预印本当已定论。 arXiv 没有同行评审。一篇 arXiv 论文的结论可能是错的、可能后来被撤稿、可能与最终发表版差异很大。引用时必须标明「预印本,未经同行评审」。

第二类:用预印本训练医疗模型。 如果语料含大量 arXiv 医学论文,模型可能学到尚未验证的方法与结论。这在临床场景下风险很高——模型学到的是「有人提出过这个做法」,不是「这个做法被证明有效」。

第三类:忽略许可做商用训练。 前面已述,这是合规风险而非伦理风险,但后果更直接。

§9.5 撤稿论文的处理

arXiv 的撤稿机制是标记而非删除。做语料清洗时:

def is_withdrawn(entry):
    """撤稿标记在 comment 或摘要页说明里,无结构化字段。"""
    c = entry.get("comment", "") or ""
    return any(k in c.lower() for k in ["withdraw", "retract", "removed"])

这个检测不完美。 有的作者写在 comment 里,有的只在摘要页加说明,有的什么都不写直接停更。没有 100% 可靠的方法——这是「缺失处理」只能给 1 分的原因。

实用做法:把 comment 含关键词的、以及长时间只有 v1 且正文提到「错误」的,标记为「需人工复核」,不直接剔除也不直接使用。


§10 复用边界与三条硬结论

§10.1 三条硬结论

结论一:元数据可以随便用,正文必须逐篇看许可。

元数据 CC0(标题、作者、摘要、分类),无任何限制。正文有 6 类许可,其中 3 类禁商用、1 类禁一切再使用。把这两者混为一谈,是 arXiv 语料构建的最大风险。

结论二:做时间分析只能用 published,不能用 updated。

published 是 v1 时间永不改变;updated 是最新版时间。用 updated 做「某年新增多少篇」,会把十几年前的老论文因为一次小修算成今年新增。这个错误在 arXiv 上特别容易犯,因为多数文献库没有版本机制。

结论三:医学影像不该只查 eess.IV。

eess.IV 当日新投稿 17 篇,cs.CV 是 192 篇。医学影像方法论文近年大量改投 cs.CV。只在 eess.IV 检索会漏掉大部分。

§10.2 该用 / 不该用

场景 该不该用
追踪医学影像最新方法 ✅ 强烈推荐(cs.CV + eess.IV 并集)
建文献元数据索引(可商用) ✅ 推荐(元数据 CC0)
医学 NLP 的预训练语料 ⚠️ 需逐篇许可过滤
系统综述 / 循证医学证据 ❌ 用 PubMed,arXiv 无同行评审
临床研究证据 ❌ 用 medRxiv,arXiv 主要是方法学
机构科研产出统计 ❌ 机构字段大量为空,用 OpenAlex
批量采集全量 ❌ API 限流,用 bulk data

§10.2b 一个常被忽略的用法:把 arXiv 当「版本对照表」

除了当语料与检索源,arXiv 还有第三种用法:用它比对同一项工作的预印本与正式版差异。

这个用法在医学生产场景里其实很实际。假设你准备采用某篇论文的方法:

  1. 先看它的 arXiv 版本(最快可得)
  2. 再看它的正式发表版(若已有)
  3. 对照两者的实验部分与结论

差异通常出现在三处:样本量(正式版常加大)、基线方法(正式版常补最新对比)、局限性陈述(正式版更保守)。如果实验部分有实质变化,说明 arXiv 版的结论不可直接引用。

这个比对在 arXiv 上是可行的,因为版本历史永久保留、DOI 可查、comment 常写明接收会议。S2ORC 这类已发表语料做不到这一点——它只有最终版。

代价:需要逐篇人工对照,无法自动化。收益:避免把一篇后来被大幅修改的结论当定论使用。对于要做方法复现的团队,这个成本是值得的。

§10.3 一个判断标准:这篇论文能不能进语料

五个问题:

问题一:它的许可允许你的用途吗? 商用必须排除 NC、ND、arXiv 非独占三类。

问题二:它是撤稿的吗? 检查 comment 与摘要页。

问题三:它是否是另一篇论文的重复版本? 同一工作可能既有预印本又有正式版。

问题四:它的 v1 落在哪个时间段? 时间切分按 v1,不按最新版。

问题五:它的分类是不是真的相关? 多分类论文常有一个是「顺手挂的」。

五个都过了,这篇才能进语料。

§10.4 一句话记住它

arXiv 把最新的方法在审稿之前就公开——代价是没有质量担保,且每一篇的可用范围都不一样。


§11 常见误读

这一节把散落在前文的坑集中一次讲清。每一条都对应一次实测中的真实失败——不是理论风险。

常见说法 实际情况 证据
「arXiv 的论文可以随便用」 元数据 CC0,正文逐篇 6 类许可,3 类禁商用 官方许可页
「arXiv 是 CC BY 4.0」 不是。只有部分论文选 CC BY。元数据才是 CC0 同上
「arXiv 非独占许可=免费可下载」 它限制一切再使用。能读不能训 同上
「用 updated 时间做统计」 必须用 published。updated 是老论文的小修时间 §2.4
「同一篇只有一个分类」 有主分类 + 多个交叉分类,按分类拉取会重复 §2.3
「eess.IV 就是医学影像」 当日新投稿仅 17 篇,cs.CV 是 192 篇。医学影像大量在 cs.CV §2.2
「撤稿就删了」 不删档。v1 到 vN 全部保留,可下载 §2.5
「API 可以循环翻页拉全量」 实测 HTTP 429 Rate exceeded.,无 Retry-After §3.2
「摘要在 abstract 字段」 Atom 里是 summary,用 abstract 会得到 None §3.4
「<id> 就是纯 ID」 是完整 URL 带版本号(.../abs/2401.12345v2) §3.4
「作者机构可以从 arXiv 拿」 大量为空。要做机构计量得用 OpenAlex §4.3
「许可可以改」 官方:irrevocable and cannot be changed。只能发新版本带新许可 §9.3
「3,226,976 都是有效研究」 含撤稿标记条目。「可获取」≠「有效」 §7.4
「arXiv 有临床医学研究」 少。临床研究在 medRxiv,arXiv 主要是方法学 §8.4
「查询支持通配符」 不支持 *。radiolog* 会失败,只能拼多词 §5.3

每一行背后的展开:

「arXiv 的论文可以随便用」 —— 这是把「免费可见」当成「自由使用」。arXiv 的正文许可由作者逐篇选,6 类里有 3 类明确限制商用(CC BY-NC-SA、CC BY-NC-ND、arXiv 非独占)。只有元数据是统一 CC0。 建索引安全,建语料要做过滤。

「arXiv 是 CC BY 4.0」 —— 常见的误传。CC BY 4.0 只是作者可选的 6 类之一。真正统一的是元数据的 CC0,不是正文。

「arXiv 非独占许可 = 免费可下载」 —— 官方描述是「gives limited rights to arXiv to distribute the article, and also limits re-use of any type from other entities or individuals」。它限制的不是下载,是任何形式的再使用。 这一类在物理与数学领域大量存在,做跨学科语料时最容易踩。

「用 updated 时间做统计」 —— arXiv 特有的坑。published 是 v1 时间(永不改),updated 是最新版时间。用 updated 会把 2015 年的老论文因为 2026 年的一次修订算成 2026 年新增。多数文献库没有版本机制,所以这个习惯是从别处带过来的。

「同一篇只有一个分类」 —— Atom 里 <category> 可以多个,<arxiv:primary_category> 只有一个。按分类分别拉再拼接,同一篇会被算多次。必须按 ID 去重。

「eess.IV 就是医学影像」 —— 2026-10-23 当日 eess.IV 新投稿 17 篇,cs.CV 192 篇。医学影像方法论文近年大量改投 cs.CV(曝光度高、审稿人方法学背景强)。只在 eess.IV 找会漏三分之二以上。

「撤稿就删了」 —— arXiv 的 withdraw 是标记不是删除。文件永久保留,v1 到 vN 都可下载。做语料清洗必须额外检测,但这个检测没有可靠的结构化字段,只能靠 comment 文本匹配。

「API 可以循环翻页拉全量」 —— 实测直接返回 HTTP 429 + Rate exceeded.(14 字节),无 Retry-After 头。官方建议间隔 ≥3 秒,但实际恢复时间不确定。要做全量分析必须用 bulk data。

「摘要在 abstract 字段」 —— Atom 标准里是 <summary>。写 entry["abstract"] 会得到 None 而不报错,是典型的静默失败。

「<id> 就是纯 ID」 —— 它返回的是 http://arxiv.org/abs/2401.12345v2 这样的完整 URL,含版本号。要提取纯 ID 需要正则,要分离版本号也要额外处理。

「作者机构可以从 arXiv 拿」 —— <arxiv:affiliation> 大量为空,不是 API 问题,是作者提交时没填。做机构计量必须用 OpenAlex 或 S2ORC 的消歧结果。

「许可可以改」 —— 官方明确写 irrevocable。作者后悔了只能发新版本带新许可,旧版本保持旧许可。这意味着同一篇论文的不同版本可能有不同许可。

「3,226,976 都是有效研究」 —— 这个数是「可获取文章数」,含撤稿标记的条目。官方另外说明累计提交 3,224,545 篇、迁移 2,431 篇、删除 156 篇。「可获取」是文件完整性指标,不是有效性指标。

「arXiv 有临床医学研究」 —— arXiv 的医学相关部分主要是方法学(影像处理、NLP、医学物理)。临床试验、流行病学、病例报告这些在 medRxiv / bioRxiv。搞错平台会白找。

「查询支持通配符」 —— arXiv 的查询语法不支持 *。想匹配 radiolog / radiological / radiologist,只能写多个词或用 abs:radiolog 靠前缀匹配(部分有效,但不保证)。

§11.2 四类容易忽略的结构性问题

第一,<arxiv:comment> 是自由文本,格式不固定。

作者备注字段承载了大量有用信息:页数、图表数、会议接收情况、期刊 DOI、撤稿说明。但它是自由文本,同一个信息有无数种写法(“Accepted at MICCAI 2026” / “To appear in MICCAI” / “MICCAI’26 camera ready”)。要结构化提取必须写一堆正则,且永远不全。

第二,link 元素有多组,用途不同。

一篇论文的 link 通常包括:rel="alternate"(摘要页)、rel="related" title="pdf"(PDF)、rel="related" title="doi"(DOI)。取 PDF 要认 title="pdf",不能取第一个 related。

第三,sortBy=submittedDate 排序的是 v1 时间,不是最新版。

这与直觉一致,但要注意:按这个排序拉到的最新论文,可能是一篇 2019 年的老论文刚发了 v7。要筛「真正的新论文」,必须再过滤 published 的年份。

第四,分类代码会新增与改名。

arXiv 的分类体系不是固定的。eess 这个顶层是 2017 年才加进去的(此前影像处理论文都在 cs.CV 或 physics.med-ph)。做长期趋势分析时,分类体系的变化会造成虚假的「增长」或「下降」——2017 年 eess.IV 从 0 突然有量,不是研究变多了,是分类独立了。

§11.3 上线前的九项自检

  • [ ] 时间切分用的是 published,不是 updated
  • [ ] 按 id_no_ver 去重(跨分类必做)
  • [ ] 许可逐篇检查过,商用场景排除了 NC / ND / arXiv 非独占
  • [ ] 许可为空按最严格处理,不假设宽松
  • [ ] 撤稿论文做了标记(comment 文本匹配)
  • [ ] 摘要在解析时用的是 summary 字段
  • [ ] PDF 链接认的是 title="pdf",不是第一个 related
  • [ ] 记录了采集日期与查询表达式原文
  • [ ] 引用时标明「预印本,未经同行评审」

附录 A:本篇数字速查

数字 值 来源
累计提交 3,224,545 官方统计页
可获取文章 3,226,976 同上
迁移入库 2,431 同上
已删除 156 同上
上线月份 1991-08 月度 CSV
2026 年 1–10 月 302,357 月度 CSV 求和
2026 年月均 30,236 计算
2026 全年推算 约 36.3 万 按剩余两月均值推算
2025 全年 284,486 月度 CSV
2024 全年 244,031 同上
2023 全年 208,493 同上
单月峰值 40,363(2026-09) 月度 CSV
1992 全年 3,263 同上
cs.CV 当日新投稿 192 /list/cs.CV/new
cs.CL 当日新投稿 183 /list/cs.CL/new
eess.IV 当日新投稿 17 /list/eess.IV/new
q-bio.QM 当日新投稿 4 /list/q-bio.QM/new
元数据许可 CC0 1.0 官方许可页
正文许可类型数 6 同上
DAIMS 19/24 = 79.2% 本条目评估

附录 B:五个可复制的查询

# 1. 看当日各分类新投稿量(走 HTML,不会被限流)
for c in cs.CV cs.CL eess.IV; do
  echo -n "$c: "
  curl -sL "https://arxiv.org/list/$c/new" | grep -o 'of [0-9]* entries' | head -1
  sleep 3
done

# 2. 官方总量(直接读页面文字,不用 API)
curl -sL "https://arxiv.org/stats/monthly_submissions" | grep -o 'Total number of submissions[^<]*'

# 3. 月度提交 CSV(分析增长曲线用这个)
curl -sL -o arxiv_monthly.csv "https://arxiv.org/stats/get_monthly_submissions"

# 4. API 查询(注意间隔 ≥3 秒,否则 429)
curl -sL "https://export.arxiv.org/api/query?search_query=cat:eess.IV&max_results=5&sortBy=submittedDate&sortOrder=descending"

# 5. 验证限流存在(连续两次不间隔)
curl -sL "https://export.arxiv.org/api/query?search_query=cat:eess.IV&max_results=1" && \
curl -sL "https://export.arxiv.org/api/query?search_query=cat:cs.CV&max_results=1"
# 第二次可能返回 429 Rate exceeded.

附录 C:核对清单

拿到数据后按顺序跑:

  • [ ] 确认用的是官方统计页的「Total number of submissions」原值,不是二手转述
  • [ ] 年度序列与月度 CSV 求和能对上
  • [ ] 时间字段区分了 published 与 updated
  • [ ] 跨分类按 ID 去重
  • [ ] 许可字段逐篇检查
  • [ ] 许可为空的按最严格处理
  • [ ] 撤稿检测做过了(comment 文本)
  • [ ] 引用时标明「预印本,未经同行评审」
  • [ ] 商用场景单独做了一次许可审计

附录 D:与医学 AI 相关的分类速查

分类 全名 当日新投稿 与医学 AI 的关系
cs.CV Computer Vision and Pattern Recognition 192 影像模型主战场(含大量医学影像)
cs.CL Computation and Language 183 医学 NLP、临床文本
eess.IV Image and Video Processing 17 医学影像方法的传统归属
eess.SP Signal Processing — 生理信号(ECG、EEG)
q-bio.QM Quantitative Methods 4 生物信息学方法
physics.med-ph Medical Physics — 放疗、影像物理
cs.LG Machine Learning — 方法论(跨领域)
stat.ML Machine Learning (Statistics) — 统计方法

注意:cs.CV 与 eess.IV 的日投稿量差 11 倍。找医学影像方法必须以 cs.CV 为主,eess.IV 为辅。

附录 E:一次最小可复现实验

十分钟内能跑完,用来验证本条目所有关于 arXiv 结构的断言。

# 1. 总量(官方统计页原文)
curl -sL "https://arxiv.org/stats/monthly_submissions" | grep -o 'Total number of submissions as of [^<]*'
# 期望: 含 3,224,545

# 2. 可获取文章数
curl -sL "https://arxiv.org/stats/monthly_submissions" | grep -o 'total number of articles available is [^<]*'
# 期望: 含 3,226,976

# 3. 月度 CSV 行数与首末月
curl -sL -o m.csv "https://arxiv.org/stats/get_monthly_submissions"
python3 -c "
import csv
r=[x for x in csv.DictReader(open('m.csv')) if int(x['submissions'])>0]
print(len(r), r[0]['month'], r[-1]['month'])"
# 期望: 424 1991-07 2026-10

# 4. 各分类当日新投稿
for c in cs.CV cs.CL eess.IV; do
  echo -n "$c "; curl -sL "https://arxiv.org/list/$c/new" | grep -o '[0-9]* entries' | head -1; sleep 3
done
# 期望: cs.CV 数倍于 eess.IV

# 5. API 限流(连续两次不间隔)
curl -sL "https://export.arxiv.org/api/query?search_query=cat:eess.IV&max_results=1" >/dev/null
curl -sL "https://export.arxiv.org/api/query?search_query=cat:cs.CV&max_results=1"
# 可能: Rate exceeded.

跑完这五条,本条目 §1.2、§1.3、§2.2、§3.2、§11 里的每条断言都被独立验证过一遍。


相关数据集导航

以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:

  • vaers — 共享标签:医疗NLP / 公共卫生与流行病学
  • clinicaltrials-gov — 共享标签:医疗NLP / 公共卫生与流行病学 / 评测基准
  • sdoh-adverse-pregnancy — 共享标签:医疗NLP / 公共卫生与流行病学 / 评测基准
  • i2b2-n2c2-nlp — 共享标签:医疗NLP / 评测基准
  • cblue — 共享标签:医疗NLP / 评测基准
  • blurb — 共享标签:医疗NLP / 评测基准
  • biosses — 共享标签:医疗NLP / 评测基准
  • healthbench — 共享标签:医疗NLP / 公共卫生与流行病学 / 评测基准
  • oecd-health — 共享标签:公共卫生与流行病学 / 评测基准
  • ucdp — 共享标签:公共卫生与流行病学 / 评测基准

导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

返回 AI-Ready 数据集