信息速览
§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> |
作者备注 | 含页数、图表数、会议接收信息 |
三个必须注意的点:
<summary>是摘要,不是<abstract>。 用abstract字段名解析会得到空值。<id>是完整 URL,带版本号。 要提取纯 ID 需正则abs/(.+)$。<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)"
)
三个要点:
- 分类用 OR 并集,因为医学影像分散在三处(§2.1)
- 关键词放在
abs:而不是all:,避免命中参考文献里的词 - 词干截断(
radiolog而不是radiology)能同时匹配 radiological、radiologist
注意:arXiv 的查询语法不支持 * 通配符。radiolog* 会报错或返回空。要用截断只能靠拼多个词。
§5.4 覆盖率:为什么不能统计「医学影像论文总数」
本条目没法给出「eess.IV 里医学影像论文共多少篇」这个数,原因是双重的:
原因一,API 限流。 全量检索需要数千次分页请求,实测会稳定触发 429。
原因二,分类边界模糊。 医学影像论文分散在多个分类,且「是否医学」只能靠关键词判断,而关键词永远不全(有人写 histopathology,有人写 whole slide image,有人写 WSI)。
所以本条目只给分类的日投稿量(17 / 192 / 183),不给分类总量。 这是诚实的边界,不是遗漏。
§5.5 抽样:怎么用最小代价判断一个方向的活跃度
三步,每次请求间隔 ≥3 秒:
- 看当日新投稿:
/list/{cat}/new页面,直接读 HTML 里的条目数(不用 API,不会限流) - 看某个关键词的近期命中:
search_query=cat:eess.IV AND abs:你的关键词&sortBy=submittedDate&max_results=50 - 看时间跨度:把第 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
四处必须注意:
summary不是abstract—— 用错字段名会得到None- 标题和摘要含换行与多余空格 ——
" ".join(text.split())是标准清洗 arxiv:命名空间 —— 用arxiv:primary_category、arxiv:doi,不加前缀会找不到- 版本号从 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
注意两处:
- 许可 URL 的尾斜杠不一致。有的带
/有的不带,比较前要统一。 - 许可缺失的论文要按最严格处理。
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 是这份语料可复现的唯一凭证。 没有它,半年后你自己也说不清这批数据是怎么筛出来的。
这个流程的三处取舍要写进论文:
- 只保留三种宽松许可 → 会损失一大半样本,但商用安全
- 关键词限定在标题与摘要 → 会漏掉用词特殊的论文,但精度高
- 按 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 | 部分开放 | 需授权 |
三个实用结论:
- arXiv 不能替代 PubMed。 它没有同行评审,也没有 MeSH 主题标引。做系统综述时必须用 PubMed。
- arXiv 适合做「前沿追踪」与「方法预训练」。 尤其在影像分割、重建、自监督这些方向上,最新方法先在 arXiv 出现。
- 两者有重叠但不完全。 同一篇论文可能既在 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 还有第三种用法:用它比对同一项工作的预印本与正式版差异。
这个用法在医学生产场景里其实很实际。假设你准备采用某篇论文的方法:
- 先看它的 arXiv 版本(最快可得)
- 再看它的正式发表版(若已有)
- 对照两者的实验部分与结论
差异通常出现在三处:样本量(正式版常加大)、基线方法(正式版常补最新对比)、局限性陈述(正式版更保守)。如果实验部分有实质变化,说明 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 — 共享标签:公共卫生与流行病学 / 评测基准
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

