信息速览

S2ORC — 学术论文开放语料库 AI-Ready Wikipedia
INFOBOX
| 数据集名称 | S2ORC |
| 英文全称 | S2ORC: The Semantic Scholar Open Research Corpus |
| 别名/简称 | S2ORC(读作 “stork”)、前身项目名 GORC、S2 Open Research Corpus |
| 疾病分类 | 不限定疾病(跨学科文献语料;医学类全文约 290 万篇为最大单一学科,生物类约 220 万篇) |
| 数据模态 | 学术论文元数据、结构化全文(PDF/LaTeX 自动解析)、摘要、引用图(含引用上下文与意图) |
| AI 任务类型 | 科学文献预训练、文档嵌入、引用意图分类、引用推荐、文献检索、信息抽取、文献综述自动化、科学计量分析 |
| 样本总数 | 约 1.36 亿篇论文(2020-07 静态版口径,当前 API 版持续重建增长);其中开放获取全文约 1,200 万篇 |
| 数据大小 | 分片 gzipped JSON 文件(总量随最新 release 变化,官方建议预留大规模磁盘与较长下载时间) |
| 数据格式 | gzipped JSON 分片(每分片多行 JSON 记录);配套 s2orc-doc2json 工具可将自有 PDF/LaTeX 转为同构 JSON |
| 许可证 | ODC-By 1.0(当前 API 版;历史研究版为非商业许可 CC BY-NC 系列) |
| 访问级别 | 开放(免费申请 Semantic Scholar API key 后经 Bulk Dataset 分片下载) |
| 语言 | 英文 |
| 首发日期 | 2019-09-28(首版,81M+ 论文) |
| 最后更新 | 持续更新(2023-01 起经 Semantic Scholar Public API 月度快照滚动重建) |
| 发布机构 | Allen Institute for AI(开发);Semantic Scholar API 产品团队(现维护) |
| 官方主页 | https://allenai.org/data/s2orc |
| 下载地址 | https://api.semanticscholar.org/api-docs/datasets(Bulk Dataset 分片下载) |
| DOI | 10.18653/v1/2020.acl-main.447(ACL 2020 论文) |
| 引用次数 | 939+(Google Scholar,截至 2026-09) |
| AI 就绪度评分 | ⭐⭐⭐⭐(4/5)— JSON 结构化与下载脚本成熟、许可开放;扣分项:无官方任务划分、需自行关联多个数据集、全量下载成本高、PDF 解析存在噪声 |
| 页面状态 | published |
§0 E-E-A-T 专业审核声明
医学审核者:千方病案医学编辑部交叉审核:§2 医学背景(S2ORC 医学子库的学科构成与文献挖掘任务)、§7 偏倚分析。
数据工程审核者:[千方病案医学编辑部交叉审核] 医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
审核日期:2026-09-05
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。S2ORC 当前经 Semantic Scholar Public API 以 ODC-By 1.0 许可分发,要求使用者免费申请 API key,并自行确认预期用途(尤其是涉及出版方版权内容的部分)在许可条款下被允许。具体使用限制以数据集官方协议为准。
§1 数据集概览
§1.0 30 秒速览
S2ORC(Semantic Scholar Open Research Corpus,读作 “stork”)是 Allen Institute for AI 于 2019 年 9 月首发、2023 年起由 Semantic Scholar API 团队以月度快照持续重建的开放学术语料库。它把数百家出版商与文献档案库(PubMed、arXiv 等)的论文聚合起来:约 1.36 亿篇论文的元数据、7,300 余万篇出版方摘要、3.805 亿条引用边,并为约 1,200 万篇开放获取论文提供机器可读全文——节标题、段落、参考文献条目和行内引用提及都被结构化标注(Lo et al., 2020, ACL;S2 开放数据平台论文)。
它重要,因为它是迄今为止最大的公开机器可读学术全文集合。在此之前,科学文献挖掘研究要么只能用摘要(信息密度不足),要么受限于期刊版权只能覆盖单一档案库。S2ORC 把全文解析、引用链接和元数据统一到一个许可开放(ODC-By 1.0)的资源里,成为科学 NLP 领域事实上的基础设施。
你能用它做什么:训练或微调科学文献大模型与 SciBERT 类编码器、构建 SPECTER/SciNCL 式论文嵌入、做引用意图分类与引用推荐、自动化文献综述与系统评价的证据筛选;对医学 AI 而言,其 290 万篇医学全文子库是生物医学文本挖掘(药物、疾病、表型知识发现)的高质量燃料。注意:它不含非英文论文,全文仅覆盖开放获取论文。
§1.1 摘要
S2ORC 的构建是一条大规模自动化管线:Semantic Scholar 从出版商、PubMed、arXiv 与开放网络抓取论文并聚成约 2 亿个论文簇;对约 3,050 万个筛选后的 PDF 用 ScienceParse v3.0.0 与 Grobid v0.5.5 做结构化解析,对 arXiv 的 150 万篇 LaTeX 源码直接从源码解析;随后为每个论文簇选择规范化元数据(优先开放获取来源与出版方元数据、多数投票、最少来源原则),最后解析参考文献条目并与语料内其他论文建立链接,形成带引用上下文的引用图(论文 §2)。ACL 2020 论文版语料含 8,110 万篇论文、3.805 亿条引用边(其中 1.565 亿条带引用上下文)、810 万篇 PDF 全文与 150 万篇 LaTeX 全文;2020-07-05 增补版扩展到 1.36 亿篇论文与 1,270 万篇全文。2023 年 1 月起,S2ORC 不再以静态文件发布,而是作为 Semantic Scholar Public API 的核心 Bulk Dataset 持续重建,与 papers、abstracts、citations(含引用意图与影响力分类)、embeddings(SPECTER)等数据集同源同 ID 体系分发,月度快照并提供相邻版本增量(S2 开放数据平台论文 §4.2)。
§1.2 战略价值分析
基础设施维度:S2ORC 解决了科学 NLP 的"数据基建"问题。它把以往散落在各出版商、CLUTTER 工具与私有爬虫中的全文资源,统一为一份可引用、可复现、许可明确(ODC-By 1.0)的语料,让"在多大语料上预训练/评测"不再是特权团队的专利。其统一 ID 体系(S2 paper ID,兼容 DOI、arXiv ID、PMID、PMCID、ACL Anthology ID)让全文、引用边、摘要、嵌入可以按论文主键自由拼装——这是它区别于一次性静态数据集的根本优势:数据集家族随 Semantic Scholar 管线持续演化,而非发布即冻结。
医学 AI 维度:医学是 S2ORC 最大的单一学科——开放获取全文中 Medicine 约 290 万篇、Biology 约 220 万篇,远超其他学科(2023 平台论文 Table 4)。这使得 S2ORC 成为生物医学文献挖掘的高杠杆资源:药物不良反应信号挖掘、临床试验资格标准解析、表型知识图谱构建、系统评价的自动筛选与数据抽取,都可以在该子库上冷启动。同时,其引用意图与影响力标注(经 citations 数据集)为循证医学的"证据强度分级"研究提供了弱监督信号。需要注意:全文仅限开放获取论文,意味着大量付费期刊文献只有元数据与摘要。
生态杠杆维度:S2ORC 的价值随使用人数递增。SPECTER、SciNCL 等公开模型权重让后来者可以"站在语料之上"直接获得强文档嵌入;CORD-19 等派生数据集证明了它作为"语料底座"再生产能力;S2 Public API 的统一分发让下游系统可以用同一套代码消费论文、引用、嵌入三类资产。对一个数据集而言,"被多少下游工作当成基础设施"是比规模更硬的价值指标——这正是 S2ORC 在科学 NLP 中的地位。
§1.3 同类数据集横向对比
| 数据集 | 规模 | 全文覆盖 | 标注/结构 | 许可 | 与 S2ORC 的差异化 |
|---|---|---|---|---|---|
| S2ORC | 约 1.36 亿篇论文 | 约 1,200 万篇 OA 全文(节/段/引用标注) | 引用上下文+意图(citations 数据集)、SPECTER 嵌入 | ODC-By 1.0 | 规模最大、持续重建、数据集家族同 ID 体系 |
| S2AG | 文献图节点与边(元数据层) | 无全文 | 引用/署名边、作者消歧 | ODC-BY | S2ORC 专注机器可读全文;S2ORC 引用链接器精度更高但覆盖更低 |
| unarXive 2022 | arXiv 论文全集 | arXiv 全文含公式与表格 | 参考文献行内标注更丰富 | 开放(arXiv 范畴) | 仅 arXiv 来源;保留数学记号等非文本内容 |
| PubMed Central (OA) | 数百万篇生物医学论文 | OA 子集全文(XML/JATS) | 人工出版级 XML | 出版方/PMC 政策 | 仅生物医学;出版级结构优于自动解析,但规模与学科广度小 |
| CORD-19 | 约 33 万篇 COVID-19 文献 | 全文(OA 子集) | 任务导向标注 | 混合 | 主题专精(COVID-19),由 S2ORC 全文管线支撑构建 |
| OpenAlex | 约 2.5 亿作品 | 无全文(元数据+摘要为主) | 机构/主题/引用图 | CC0 | 纯图与元数据层,无全文解析 |
§1.4 版本时间轴
| 版本 | 发布时间 | 关键变化 | 当前状态 |
|---|---|---|---|
| 首版 | 2019-09-28 | 81M+ 论文节点、73M+ gold 摘要、8M+ 全文;存在缺节名等 release bug | 已停用,官方不再支持 |
| ACL 2020 论文版 | 2020(论文发表) | 81.1M 论文、380.5M 引用边、8.1M PDF 全文 + 1.5M LaTeX 全文 | 静态历史口径 |
| 2020-07-05 版 | 2020-07-05 | 论文收录至 2020-04-14;全文 8M→12M(官方站称 12.7M);总论文 81M→136M;schema 拆分 metadata 与正文 | 已停用(2023-02 起官方不再提供该版访问) |
| s2orc-doc2json | 2021-02-01 | 工具发布:用户自有 PDF/LaTeX 解析为 S2ORC JSON 格式 | 活跃可用 |
| S2 Public API 版 | 2023-01 至今 | 成为 S2 Public API “Bulk Dataset”,持续重建滚动收录新论文,月度快照+增量 diffs | 当前推荐 |
| 现状(截至 2026-09) | — | 月度快照滚动重建;旧静态版本访问通道已关闭 | 官方唯一支持形态 |
§1.5 典型应用场景
- 科学文献预训练与领域编码器:在全文+引用图上预训练 SciBERT/SPECTER 式模型;SPECTER 与 SciNCL 均以 S2ORC 引用图构造训练三元组(SciNCL 论文)。
- 引用意图分类与引用推荐:利用 citations 数据集的引用上下文与意图标注训练分类器;大规模引用推荐评估直接以 S2ORC 为候选池(Medić & Šnajder 评估)。
- 生物医学文献挖掘:在医学子库(290 万篇全文)上做疾病/药物/基因实体与关系抽取、表型知识发现、药物警戒信号挖掘。
- 系统评价与证据合成自动化:自动检索-筛选-抽取管线的语料基础;引用上下文可定位"被引论文在本文中如何被使用"。
- 科学计量与"科学的科学"研究:引用网络演化、跨学科流动、发表偏倚等大规模 bibliometrics 分析。
- 教学与入门:单分片即可跑通的 JSON lines 结构(§6.1)适合作为 NLP 数据工程课程的教学语料;对比 MIMIC-III 等临床库,其零访问门槛让学生当天即可上手。
§2 医学背景与文献挖掘任务映射
本节说明 S2ORC 医学子库的学科构成,以及医学文献挖掘任务与标准术语体系(ICD-11、SNOMED CT)的关系。S2ORC 本身不含疾病标注,下表为主题域映射而非病例级诊断编码。
§2.1 医学子库主题域与 ICD-11 章节映射
S2ORC 全文学科分布(2023 平台论文 Table 4)中,Medicine(约 290 万篇)与 Biology(约 220 万篇)合计占开放获取全文的近一半。医学文献研究的主题与 ICD-11 疾病章节天然对应:
| 研究主题域(S2ORC 医学文献常见方向) | 对应 ICD-11 章节 | ICD-11 编码示例 | 典型文献挖掘任务 |
|---|---|---|---|
| 肿瘤学文献 | 肿瘤 | 2A00-2F99 恶性肿瘤 | 突变-药物-癌种三元组抽取、临床试验匹配 |
| 心血管文献 | 循环系统 | CB4Z 心力衰竭 | 风险因素与预后证据挖掘 |
| 感染性疾病与抗微生物耐药 | 感染性疾病 | 1G4Z 脓毒症 | 耐药信号监测、暴发文献预警 |
| 呼吸系统文献 | 呼吸系统 | CA4Z 肺炎 / CA23 哮喘 | 症状-诊断知识抽取 |
| 内分泌与代谢文献 | 内分泌、营养或代谢疾病 | 5A11 2 型糖尿病 | 并发症共现网络构建 |
| 神经与精神文献 | 神经系统 / 精神、行为或神经发育障碍 | 8A00 阿尔茨海默病、6A20 抑郁发作 | 药物疗效与不良反应文本挖掘 |
§2.1b SNOMED CT 映射表
生物医学 NLP 任务通常以 SNOMED CT(或 UMLS)作为实体归一化的目标本体。S2ORC 医学全文上训练的抽取模型,其输出概念常映射如下:
| 文本中的实体/概念类型 | SNOMED CT 概念示例(编码 + 术语) | 用途 |
|---|---|---|
| 疾病/疾患 | 91302000 | Sepsis(disorder) |
| 药物/物质 | 372614000 | Finasteride (substance) |
| 操作/手术 | 387713003 | Surgical procedure (procedure) |
| 临床发现 | 250171008 | Clinical finding (finding) |
| 生物体 | 409822005 | Superbug (organism) |
§2.2 医学文献语料的背景与"流行病学"
S2ORC 的医学子库并非病例数据,而是医学知识的文本载体:其规模决定了下游医学 NLP 系统的知识上限。按 2023 平台论文 Table 4,开放获取全文的学科分布为 Medicine 290 万、Biology 220 万、Physics 120 万、Computer Science 81 万、Mathematics 58 万、Psychology 54 万、Chemistry 43 万、Materials Science 40 万、Environmental Science 40 万、Engineering 39 万、Agricultural and Food Sciences 38 万,其余学科(教育、商科、法学等)各 2 万-26 万。医学占比最高的结构性原因包括:生物医学是开放获取(PubMed Central、出版方 OA 政策)渗透率最高的学科;PubMed 作为稳定档案库为 Semantic Scholar 提供持续供给;临床研究论文量本身在学术出版中居前。使用时应意识到该分布带来的学科偏倚(详见 §7.1)。
§2.3 临床/科研任务定义
S2ORC 支持的不是临床诊断任务,而是医学知识工程任务链。四个环节层层递进,每个环节都有明确的输入/输出与在 S2ORC 上的实现路径:
| 任务环节 | 任务定义 | 输入 | 输出 | S2ORC 上的实现路径 |
|---|---|---|---|---|
| ① 证据检索 | 从大规模文献中定位与临床问题相关的研究 | 临床问题(PICO 结构化查询) | 排序的相关文献列表 | 全文+标题+摘要上构建稠密检索(SciNCL 式嵌入)与 BM25 混合召回 |
| ② 证据抽取 | 从文献正文抽取结构化要素 | 命中的论文全文 | PICO 要素、纳入排除标准、结局指标 | 段落级序列标注/阅读理解模型,节名(Methods/Results)作先验 |
| ③ 证据分级辅助 | 区分"支撑性引用"与"背景性引用" | 引用上下文句 | 引用意图类别 + 影响力标记 | citations 数据集的自动 intent/influential 标注作弱监督 |
| ④ 知识整合 | 跨文献合并实体与关系 | 各文献抽取结果 | 领域知识图谱 | 以 paper_id 溯源证据,引用图提供证据传播路径 |
每个环节的最终临床落地仍需人工专家审核与前瞻验证;S2ORC 的角色是提供可复现的语料基座,而非直接给出临床结论。
§2.4 覆盖人群(学科子库分布)表
| 学科子库 | 开放获取全文规模 | 占比特征 | 代表性内容类型 | 对医学 AI 的意义 |
|---|---|---|---|---|
| Medicine | 约 290 万篇 | 最大单一学科 | 临床试验报告、队列研究、系统评价、病例系列 | 核心:临床 NLP 主战场 |
| Biology | 约 220 万篇 | 第二大 | 基础研究论文、组学研究、模式生物文献 | 基础医学与转化研究 |
| Physics | 约 120 万篇 | 中坚(OA 渗透高) | 预印本为主的物理论文 | 方法学迁移与交叉研究 |
| Computer Science | 约 81 万篇 | 中坚 | 会议论文为主(ACL/NeurIPS 等) | NLP 方法来源 |
| Mathematics / Psychology / Chemistry / Materials / Environmental / Engineering / Agriculture | 各 38 万-58 万篇 | 中坚 | 理论与应用论文混合 | 跨学科检索 |
| Education / Business / Economics / Political Science / Geology 等 | 各 11 万-26 万篇 | 次级 | 期刊论文为主 | 社会科学文献挖掘 |
| Art / Sociology / History / Linguistics / Philosophy / Law / Geography | 各 2 万-5 万篇 | 长尾 | 人文社科期刊 | 学科长尾与偏倚研究对象 |
§2.5 临床价值与转化路径
S2ORC 医学子库的价值在于把"文献"变成"可计算的知识",四条转化路径各自对应不同的成熟度:
- 加速证据合成(近期可落地):系统评价的文献筛选与数据抽取自动化,缩短指南更新周期。Cochrane 类机构估计人工筛选占系统评价工时的主要部分;以 S2ORC 为候选池的召回-精排两段管线已是文献筛选自动化的标准架构。
- 药物警戒前移(中期):从真实世界文献(病例报告、上市后研究)中抽取不良反应信号,补充自发报告体系的滞后与漏报;引用上下文可帮助定位"效应量表述"所在段落。
- 精准医学证据匹配(中期):将患者分子特征与文献中的临床试验资格标准、生物标志物证据对齐,支持试验匹配与适应证拓展研究。
- 医学教育知识图谱(长期):基于引用图构建学科知识结构与学习路径,识别综述性"枢纽文献"与新兴主题。
所有路径的最终临床落地仍需人工专家审核与前瞻验证——S2ORC 提供的是"知识原料",不是"医学结论"。
§2.6 质量金标准:引用链接质量评估
| 评估项 | 内容 |
|---|---|
| 划分方式 | 独立第三方评估(非官方),以六大文献数据库为参照 |
| 标注方式 | 人工抽样 + 三种近重复检测方法对比构建 ground truth |
| 核心结论 | 92.6% 的文档正确链接到六大数据库;链接质量随学科域波动(Scholarly big data quality assessment, 2022) |
| 性质 | 文档链接/conflation 质量的外部验证证据 |
| 使用建议 | 引用网络分析须做敏感性分析(见坑点 5);元数据消费建议交叉核对 DOI |
§3 数据集规格与获取
§3.0 版本抉择矩阵
| 你的需求 | 推荐版本 | 获取方式 | 理由 |
|---|---|---|---|
| 任何新项目(默认) | 当前 S2 Public API 月度快照 | 免费申请 API key → Bulk Dataset 分片下载 | 持续更新、与 citations/embeddings 同 ID 体系、官方唯一支持通道 |
| 复现 2020-2022 年论文的原始实验 | 2020-07-05 静态版 | 官方已停发;仅在确有必要时联系原作者 | 该版不再被支持;先确认论文用的具体版本号 |
| 解析自有 PDF/LaTeX 到 S2ORC 格式 | s2orc-doc2json 工具 | GitHub 开源 | 与语料同构,便于混合训练 |
| 只需元数据/摘要/嵌入,不需要全文 | S2 datasets 家族其他成员 | 同一 API(papers/abstracts/tldrs/embeddings) | 下载量小一个数量级 |
§3.1 模态详情
- 元数据(metadata):标题、作者(姓名字符串,未消歧)、年份、期刊/会议、摘要、标识符(DOI、PubMed、PMC、arXiv、ACL Anthology ID)(论文 §2.3)。
- 结构化全文(PDF 解析):约 1,200 万篇开放获取论文;节标题、段落序列、参考文献条目、行内引用提及(链接到对应参考文献)、图表标题与图表引用;公式、表格内容、页眉页脚在正文提取时被移除(2023 平台论文 §4.2)。
- LaTeX 解析全文:ACL 2020 论文版含 150 万篇 arXiv 论文;引用 span、参考文献、图表标题、节标题与公式检测近乎完美,但元数据质量反而低于 PDF 解析,故不用于聚类(论文 §2.2)。
- 引用图(经 citations 数据集):引用边 + 引用上下文 + 自动分类的引用意图 + 影响力引用标记(2023 平台论文 §4.2)。
- 嵌入(经 embeddings 数据集):SPECTER 论文向量,与全文同 ID 关联。
§3.2 子集规模表(开放获取全文学科分布)
| 学科子库 | 全文规模 | 学科子库 | 全文规模 |
|---|---|---|---|
| Medicine(医学) | 约 290 万篇 | Engineering(工程) | 约 39 万篇 |
| Biology(生物) | 约 220 万篇 | Agricultural and Food Sciences(农业食品) | 约 38 万篇 |
| Physics(物理) | 约 120 万篇 | Education(教育) | 约 26 万篇 |
| Computer Science(计算机) | 约 81 万篇 | Business(商科) | 约 23 万篇 |
| Mathematics(数学) | 约 58 万篇 | Economics(经济) | 约 21 万篇 |
| Psychology(心理) | 约 54 万篇 | Political Science(政治学) | 约 15 万篇 |
| Chemistry(化学) | 约 43 万篇 | Geology(地质) | 约 11 万篇 |
| Materials Science(材料) | 约 40 万篇 | Art / Sociology / History / Linguistics / Philosophy / Law / Geography | 各约 2 万-5 万篇 |
| Environmental Science(环境) | 约 40 万篇 | 合计 | 约 1,200 万篇 |
数据来源:Semantic Scholar 开放数据平台论文(arXiv:2301.10140)Table 4。元数据层(不含全文)规模为 1.36 亿篇量级;该表仅为开放获取全文部分。
§3.3 数据格式表
| 组成 | 格式 | 说明 |
|---|---|---|
| 分发单元 | .gz(gzip 压缩的 JSON lines 分片) |
每行一条论文记录;分片以 S3 URL 列表形式随 release 提供 |
| 记录结构 | JSON 对象:paper_id + metadata + 全文解析 |
metadata 与正文自 2020-07 版起分离存储 |
| 全文解析 | JSON:节标题、段落文本、cite_spans、ref_spans、参考文献条目、图表引用 |
自动解析产物,非出版级 XML |
| 配套工具 | s2orc-doc2json(Python) | 将用户自有 PDF/LaTeX 转为同构 JSON(2021-02-01 发布) |
§3.4 存储大小
官方未公布单 release 固定总量:语料以分片 .gz 形式随最新 release 变化,且官方明确提示"下载可能需要较长时间"(GitHub README)。可参照的量级锚点:全文约 1,200 万篇,平均每篇论文正文数万字符;压缩 JSON 形态下单一学科子库通常在十 GB 量级,全量数据集家族(s2orc + citations + abstracts + embeddings)合计显著更大。实践建议:
| 规划项 | 建议 | 理由 |
|---|---|---|
| 磁盘余量 | 预留预估量 1.5-2 倍 | 解压后 JSON 膨胀数倍,且需保留 .gz 原件校验 |
| 先抽样后全量 | 仅下载部分分片评估再决定 | 避免为不需要的学科全量下载 |
| 分库存储 | s2orc / citations / embeddings 分目录 | 数据集家族共享 release 但独立分片 |
| 网络与耗时 | 服务器直连 S3、断点续传脚本 | 官方明示下载耗时长 |
| 版本记录 | 记录 release_id |
保证实验可复现(见坑点 8) |
§3.5 标注方式
S2ORC 无人工标注层:节标题、段落、引用提及、参考文献条目全部来自自动解析管线——ScienceParse v3.0.0(标题/作者,评估优于 Grobid)+ Grobid v0.5.5(结构化全文),配正则后处理(引用样式分类、bracket 范围展开、误检清除)(论文 §2.1)。引用意图与影响力分类亦为自动模型产物。因此"标注质量"等价于"解析模型质量",消费前应做抽样质检(见 §7.2 与坑点 4)。
§3.6 解析器资质与一致性
以"标注者"类比解析器:Grobid 是学术文档解析的事实标准开源模型(Lopez, 2009 起持续维护);ScienceParse 在标题/作者抽取上经官方评估优于 Grobid。论文还披露了系统性纠偏规则:对 bracket 型引用论文,上标与公式引用易被误检为行内引用(false positives),用正则清除;"[3]-[5]"型范围引用需手动展开为逐条再链接(false negatives)(论文 §2.1)。LaTeX 路径的检测近乎完美,是全文结构质量的"上界"参照。
§3.7 采集周期
- 首版收录截至 2019-09;2020-07-05 版收录截至 2020-04-14(GitHub News)。
- 2023-01 起:月度快照(monthly snapshots),并发布相邻版本间的增量 diffs(2023 平台论文 §4.2)。
- 官方 FAQ 提示:当前 S2ORC 由 S2 数据管线持续重建,旧论文解析结果也可能随解析器升级而更新。
采集与发布节奏一览:
| 阶段 | 时期 | 更新方式 | 收录范围 |
|---|---|---|---|
| 研究项目期 | 2019-09 至 2022 | 一次性静态发布(两版) | 分别截至 2019-09、2020-04-14 |
| 工具发布期 | 2021-02 起 | s2orc-doc2json 开源(用户自解析) | 不限(用户自有文档) |
| 生产系统期 | 2023-01 至今 | 月度快照 + 增量 diffs,持续重建 | 滚动收录新论文 |
§3.8 地域与语言覆盖
论文来自全球数百家出版商与档案库(含 PubMed、arXiv),地域覆盖为"全球学术出版体系";但语料仅含英文论文(官方 FAQ 明确当前不含非英文论文),且仅开放获取论文有全文。
| 覆盖维度 | 状况 | 对使用的含义 |
|---|---|---|
| 学科地域 | 全球学术出版(数百家出版商聚合) | 无单一国家/机构偏倚的官方声明,但英文出版体系隐含地域偏倚 |
| 语言 | 仅英文(官方 FAQ) | 非英文文献挖掘需换用其他资源 |
| 学科 | 23 个学科域(Table 4) | 医学/生物占全文近半,长尾学科样本稀薄 |
| 访问地域 | 无地理限制(ODC-By 1.0,免费 key) | 全球研究者可同等获取 |
§3.9 解析软件规格
| 组件 | 版本/说明 | 角色 |
|---|---|---|
| ScienceParse | v3.0.0 | 标题与作者抽取(优先用于元数据回退) |
| Grobid | v0.5.5 | 结构化全文解析(节/段/引用/图表) |
| LaTeX→XML 管线 | 受 Saier and Färber (2019) 启发 | arXiv 源码解析 |
| s2orc-doc2json | 2021-02-01 开源 | 用户自有文档 → S2ORC JSON |
§3.10 深度溯源链
出版商/PubMed/arXiv/开放网络 → Semantic Scholar 聚类(约 2 亿论文簇,近重复合并)→ PDF 筛选(剔除学位论文、幻灯等,3,050 万 PDF 进入解析)→ ScienceParse + Grobid 解析 → 规范化元数据选择(优先 OA 与出版方来源;多数投票;最少来源原则)→ 参考文献解析与语料内链接 → S2ORC 月度 release(每条记录含 paper_id 可回溯 DOI/arXiv/PMID 原始标识符)(论文 §2)。
每条记录的溯源锚点:
| 锚点 | 溯源到 | 用途 |
|---|---|---|
paper_id |
Semantic Scholar 论文簇 | 语料内关联与去重追踪(paper-ids 数据集) |
| DOI / arXiv ID / PMID / PMCID / ACL ID | 原始出版源 | 外部核验(OpenAlex/出版方) |
release_id |
具体月度快照 | 复现与版本对比 |
| 解析器版本(管线说明) | ScienceParse/Grobid 版本 | 解析质量归因 |
§4 数据结构
§4.0 目录树
s2orc/
├── release_id.txt # 当前 release 标识(实验须记录,见坑点 8)
├── 2025-06-01-release/ # 以下载到的 release_id 命名(示例)
│ ├── s2orc/
│ │ ├── 00000.gz # 分片:gzip 压缩的 JSON lines
│ │ ├── 00001.gz # 每行一条论文记录:
│ │ ├── ... # {"paper_id": ..., "metadata": {...}, "pdf_parse": {...}}
│ │ └── NNNNN.gz
│ ├── citations/ # 配套引用边数据集(引用上下文/意图/影响力)
│ │ ├── 00000.gz
│ │ └── ...
│ ├── abstracts/ # 出版方许可允许的摘要
│ ├── embeddings/ # SPECTER 论文向量
│ └── diffs/ # 相邻 release 的增量
└── scripts/
└── download_s2orc.py # 官方 README 提供的下载脚本模式
目录名与分片数为示意;实际以
GET /datasets/v1/release/latest返回的release_id与files列表为准。
单条记录的 JSON 结构(示意,字段名以官方 schema 文档为准):
{
"paper_id": "S2 paper ID(语料内主键,兼容 DOI/arXiv/PMID 等映射)",
"metadata": {
"title": "论文标题",
"authors": [{"name": "作者姓名字符串(未消歧)"}],
"year": 2020,
"venue": "期刊或会议",
"journal": "期刊名称",
"abstract": "出版方摘要(许可允许时)",
"doi": "10.18653/v1/2020.acl-main.447"
},
"pdf_parse": {
"body_text": [
{
"text": "段落文本……",
"section": "节标题(首版曾存在缺失 bug,已修复)",
"cite_spans": [{"start": 0, "end": 5, "text": "[3]", "ref_id": "BIB_REF_12"}],
"ref_spans": [{"start": 10, "end": 20, "text": "Table 1", "ref_id": "TAB_REF_1"}]
}
],
"abstract": "解析自 PDF 的摘要",
"bib_entries": [{"ref_id": "BIB_REF_12", "title": "被引文献标题", "authors": "...", "year": 2019}],
"ref_entries": [{"ref_id": "TAB_REF_1", "text": "图表标题"}]
}
}
§4.1 DAIMS 字段字典(8 列)
| 字段 | 类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
paper_id |
文本 | S2 论文唯一标识,语料主键 | "5c5751d4..." |
主键关联 citations/embeddings | 聚类错误可致两版本文并存 | 无(必填) | S2 ID 空间 |
metadata.title |
文本 | 规范化标题 | 论文题目 | 检索/匹配输入 | LaTeX 元数据质量低于 PDF | 缺失为空串 | 自由文本 |
metadata.abstract |
文本 | 出版方摘要(许可允许时) | 摘要正文 | 零样本嵌入、检索 | 许可差异致部分缺失 | 空串=许可性缺失 | 自由文本 |
metadata.year |
整数 | 出版年份 | 2020 |
时间切分、防泄漏 | 出版方元数据缺失时来自解析 | 空=未知 | 出版年至当前 |
metadata.venue |
文本 | 期刊/会议 | "ACL" |
领域过滤 | 字符串形式未规范化 | 空=未知 | 自由文本 |
metadata.authors |
列表 | 姓名字符串,未消歧 | [{"name": "Kyle Lo"}] |
合作网络分析 | 同名/异写无法区分 | 空列表=未知 | 姓名字符串 |
pdf_parse.body_text[].text |
文本 | 段落正文 | 段落字符串 | 预训练/抽取输入 | PDF 解析噪声、公式表格被移除 | 无全文时整字段缺失 | 自由文本 |
pdf_parse.body_text[].section |
文本 | 所属节标题 | "Methods" |
章节感知模型 | 自动检测错误 | 空串=节名未检出 | 自由文本 |
cite_spans[].ref_id |
文本 | 行内引用→参考文献条目链接 | "BIB_REF_12" |
引用上下文提取、意图分类 | 链接器高精度低覆盖 | 无 | 引用 ID |
bib_entries[] |
对象列表 | 解析出的参考文献条目 | 标题/作者/年份 | 构建引用图 | 解析错误传递 | 空列表=无参考文献 | 对象 |
citations.context |
文本 | 引用边携带的上下文句 | 引用句全文 | 意图分类训练数据 | 截断与解析噪声 | 空=无上下文 | 自由文本 |
citations.intent |
标签 | 自动分类的引用意图 | "method" |
弱监督信号 | 自动分类有误差 | 无 | 意图类别集合 |
citations.is_influential |
布尔 | 是否影响力引用 | true |
证据强度分级 | 模型判定非金标准 | 无 | true/false |
字段间引用关系:paper_id 是全家族主键——s2orc 分片的记录用它关联 citations 分片的引用边(引用方/被引方两侧)、embeddings 分片的 SPECTER 向量、papers/abstracts 分片的元数据;cite_spans[].ref_id 只在单篇论文内部有效(指向同记录 bib_entries 的条目),跨论文链接需经 bib_entries 解析出的外部标识符(DOI/arXiv 等)回到 paper_id 空间。
§4.2 标签分布(引用意图)
S2ORC 本体无监督标签;引用意图标签位于配套 citations 数据集,由自动模型分类(含引用上下文与影响力标记),官方未随语料发布稳定的意图分布统计。实用做法:下载 citations 分片后自行统计分布,并注意其为模型输出而非人工金标注(2023 平台论文 §4.2)。
§4.3 关键统计
| 统计项 | 数值 | 口径 |
|---|---|---|
| 论文总数 | 81.1M → 136M | ACL 2020 论文版 → 2020-07-05 版 |
| 出版方摘要 | 73.4M | 论文版 |
| 结构化引用链接论文 | 27.6M | 论文版 |
| 引用边 | 380.5M | 论文版 |
| 带引用上下文的引用边 | 156.5M | 论文版 |
| PDF 全文 | 8.1M(论文版)→ 约 12M(当前) | 开放获取论文 |
| LaTeX 全文 | 1.5M | 论文版(arXiv) |
| 底层论文簇 | 约 200M | Semantic Scholar |
| 进入解析的 PDF | 30.5M(筛选自 31.3M) | 论文版 |
| SciDocs 论文可映射率 | 98.6% | SciNCL 论文 |
| S2ORC 引用图(嵌入训练口径) | 52.4M 节点 / 447M 边(去泄漏版) | SciNCL 论文 |
| S2 snippet search 段落索引 | 275M+ passages(12M+ 论文) | S2 平台论文更新版 |
来源:S2ORC 论文(arXiv:1911.02782v2)、2023 平台论文 Table 4、SciNCL 论文。不同口径(论文版/静态版/当前 API 版)的数字不可混用,引用时请注明。
§4.4 数据层级
语料(release)
└── 论文记录(paper_id 主键)
├── metadata(标题/作者/年份/venue/摘要/标识符)
├── 全文解析
│ ├── 节(section)
│ │ └── 段落(body_text 条目)
│ │ ├── cite_spans(行内引用提及 → bib_entries)
│ │ └── ref_spans(图表引用 → ref_entries)
│ ├── bib_entries(参考文献条目 → 语料内其他 paper_id)
│ └── ref_entries(图表标题)
└── 引用边视角(citations 数据集)
├── 入边:谁引用了我(含上下文/意图/影响力)
└── 出边:我引用了谁
§4.5 缺失值与信息性缺失
| 缺失模式 | 原因 | 对 AI 的影响 | 建议处理 |
|---|---|---|---|
pdf_parse 整体缺失 |
仅约 12M 篇 OA 论文有全文 | 依赖全文的模型训练集缩小 | 全文任务前先过滤 pdf_parse != null |
metadata.abstract 为空 |
出版方许可限制(abstracts 数据集注明 “where allowed by licensing”) | 摘要检索召回下降 | 用全文首节或 tldrs 数据集补充 |
section 为空串 |
节名自动检测失败(首版系统性 bug,已修复) | 章节感知特征退化 | 统计空串比例并降权 |
venue/year 缺失 |
出版方元数据不全 | 时间/领域切分有偏 | 以 DOI 交叉核对 OpenAlex |
引用边无 context |
引用未在可解析正文出现 | 意图分类样本减少 | 过滤或作为负样本策略 |
| 同一论文多版本并存 | 聚类未合并(arXiv 预印本 vs 终稿) | 重复计数、跨集泄漏 | 以 DOI/标题相似度二次合并 |
信息性缺失的正确读法:S2ORC 的缺失大多是"结构性的"而非"错误的"——pdf_parse 缺失告诉你该论文非开放获取;摘要为空告诉你出版方许可未覆盖;读懂缺失的原因本身就是一个分类信号,切勿把结构性缺失当随机缺失做插补。
§5 数据划分与使用建议
§5.1 官方划分
无官方划分。S2ORC 是语料型资源而非基准数据集:官方只提供 release 快照,不定义 train/dev/test。
§5.2 社区惯例划分
- 时间切分:引用推荐大规模评估按出版年份切分——以 2019 年(或更早)论文为查询、候选池限同年或更早,避免"未来文献"泄漏(Medić 等, arXiv:2209.05452)。
- 引用图三元组:SPECTER/SciNCL 以引用图构造 (query, positive, negative) 三元组训练,负样本用随机或 kNN 困难负例采样(SciNCL, arXiv:2202.06671)。
- 预过滤惯例:剔除空标题、摘要过短(<30 字符)、引用数过少的论文后再评估(同上引用推荐评估预过滤后约 1,600 万篇)。
§5.3 泄漏风险(重点)
- 基准泄漏:SciDocs 基准论文中有 40.5% 曾泄漏进 SPECTER 训练数据;SciNCL 论文为透明起见同时报告了含/不含泄漏两种训练集,并把可映射的 SciDocs 论文显式剔除(98.6% 的 SciDocs 论文可映射到 S2ORC)(SciNCL 论文 §4.2)。在任何 SciDocs/SciBERT 评测上报告 S2ORC 预训练结果前,必须先排除基准论文。
- 时间泄漏:全文任务若随机划分,同一论文的不同版本(arXiv 预印本 vs 终稿)可能分属两侧;建议以
paper_id聚类后按年份切分。 - 近重复泄漏:文档链接评估显示存在 conflation(近重复误并)现象(§2.6),随机划分易让"同一工作的两个版本"跨越 train/test。
§5.3b 按任务类型的划分决策表
| 任务类型 | 推荐划分 | 切分键 | 关键防泄漏动作 |
|---|---|---|---|
| 引用意图分类 | 分组 K 折 | 论文 paper_id |
同一论文的上下文句不跨折 |
| 引用推荐/检索 | 时间切分 | 出版年份 | 查询 2019、候选 ≤2019(社区协议) |
| 文档嵌入训练 | 引用图连通分量切分 | 引用图分量 | 避免训练三元组与评测集共享节点 |
| 语料预训练 + SciDocs 评测 | 剔除 + 时间切分 | 基准论文清单 + 年份 | 显式排除 98.6% 可映射的 SciDocs 论文 |
| 文献筛选(系统评价模拟) | 按话题/年份外推 | 目标话题 | 训练话题与测试话题不重叠 |
§5.4 交叉验证建议
语料级任务(如引用意图分类)建议:按论文 paper_id 分组 K 折,避免同一论文的引用上下文同时出现在训练与验证折;报告折间标准差。
§5.5 外部验证建议
在 S2ORC 上训练的抽取/检索模型,上线前应在与训练分布不同的外部集合上验证:如 PubMed Central 出版级 XML 抽取任务、unarXive(含公式表格)上的解析鲁棒性、以及真实用户查询的检索日志,观察学科与年份外推能力。
§6 AI 就绪指南(AI-Ready Pipeline Guide)
§6.0 环境与前置条件
S2ORC 全量下载为 TB 级长时任务,不建议在 Colab 免费档全量操作。推荐配置:一台 ≥16 核、≥64 GB 内存、≥2 TB SSD 的服务器;Python 3.9+;网络直连 AWS S3(官方分片托管于 ai2-s2ag.s3.amazonaws.com)。
下载前的环境自检:
# 磁盘余量与网络连通性检查
df -h /data # 确认 ≥2 TB 可用
curl -sI https://ai2-s2ag.s3.amazonaws.com \ # S3 托管域连通性
| head -n 1
curl -s https://api.semanticscholar.org/datasets/v1/release/latest \
| head -c 200 # 无 key 也可查最新 release_id
§6.1 快速上手
目录结构预期:以下代码假设你已用 §6.2 的脚本把某个 release 的 s2orc 分片下载到
data_root/s2orc/,每个分片是.gz压缩的 JSON lines。data_root是任何本地路径(如/data),代码内部用os.path.join(data_root, "s2orc")拼接。
最小可用子集:先只下载并解压一个分片(约含数万条记录)跑通全流程,再扩展到多分片。
# 环境:pip install requests wget tqdm
import gzip, json, os
DATA_ROOT = "/data" # ← 你的本地数据根目录
SHARD = os.path.join(DATA_ROOT, "s2orc", "00000.gz") # 单个分片即可跑通
records = []
with gzip.open(SHARD, "rt", encoding="utf-8") as f:
for i, line in enumerate(f):
if i >= 1000: # 先看 1000 条
break
records.append(json.loads(line))
r = records[0]
print(r["paper_id"]) # S2 论文 ID
print(r["metadata"].get("title")) # 标题
if "pdf_parse" in r and r["pdf_parse"]:
paras = r["pdf_parse"].get("body_text", [])
print(f"段落数: {len(paras)}")
print(paras[0]["text"][:200]) # 第一段前 200 字符
§6.2 数据获取
申请流程:在 Semantic Scholar API 页面 免费申请 API key(截至 2022-12 已发出 700+ 密钥、单月服务约 1.5 亿次请求,2023 平台论文 §4)。
下载端点:
| 步骤 | 端点/操作 | 说明 |
|---|---|---|
| 1 | GET https://api.semanticscholar.org/datasets/v1/release/latest |
获取最新 release_id |
| 2 | GET /datasets/v1/release/{release_id}/dataset/s2orc/(header x-api-key) |
返回分片 .gz 的 S3 URL 列表 |
| 3 | wget 逐分片下载到本地 |
官方 README 模式 |
| 4 | GET /datasets/v1/release/{release_id}/dataset/{name}/diffs |
可选:相邻 release 增量 |
下载注意事项:
| 事项 | 说明 |
|---|---|
| key 保密 | x-api-key 不要提交进版本库;用环境变量注入 |
| 幂等重跑 | 脚本对已存在分片跳过(下例已实现);中断后直接重跑 |
| 完整性校验 | 下载完成后 gzip -t *.gz 校验每个分片 |
| 记录 release_id | 下载即写入 release_id.txt(复现与 diff 更新都依赖它) |
| 限速礼貌 | 避免高并发轰炸 S3;顺序下载即可满足 |
官方下载脚本模式(改写自 GitHub README):
import json, os, re, requests, wget
from tqdm import tqdm
API_KEY = "你的-API-KEY"
DATASET_NAME = "s2orc"
LOCAL_PATH = "/data/s2orc/"
os.makedirs(LOCAL_PATH, exist_ok=True)
# 1) 最新 release ID
response = requests.get(
"https://api.semanticscholar.org/datasets/v1/release/latest"
).json()
RELEASE_ID = response["release_id"]
print(f"Latest release ID: {RELEASE_ID}")
with open(os.path.join(os.path.dirname(LOCAL_PATH), "release_id.txt"), "w") as f:
f.write(RELEASE_ID) # 记录版本,保证可复现(坑点 8)
# 2) 获取分片 URL(需 x-api-key 头)
response = requests.get(
f"https://api.semanticscholar.org/datasets/v1/release/{RELEASE_ID}/dataset/{DATASET_NAME}/",
headers={"x-api-key": API_KEY},
).json()
# 3) 逐分片下载(可中断重跑;wget 对已存在文件跳过)
for url in tqdm(response["files"]):
match = re.match(r"https://ai2-s2ag.s3.amazonaws.com/staging/(.*)/s2orc/(.*).gz(.*)", url)
SHARD_ID = match.group(2)
out = os.path.join(LOCAL_PATH, f"{SHARD_ID}.gz")
if os.path.exists(out):
continue
wget.download(url, out=out)
print("Downloaded all shards.")
§6.3 预处理全流程
目标:把分片 JSON lines 转成"一篇论文一个样本"的干净记录,过滤解析质量差的论文,展平段落与引用上下文。
import gzip, json, os, re
from typing import Iterator, Dict, Any
DATA_ROOT = "/data"
S2ORC_DIR = os.path.join(DATA_ROOT, "s2orc")
def iter_records(shard_path: str) -> Iterator[Dict[str, Any]]:
"""逐条读取 gzipped JSON lines 分片。"""
with gzip.open(shard_path, "rt", encoding="utf-8") as f:
for line in f:
line = line.strip()
if line:
yield json.loads(line)
WS = re.compile(r"\s+")
def clean_text(t: str) -> str:
"""轻量清洗:合并空白、去零宽字符。保留原始标点,勿过度清洗。"""
return WS.sub(" ", t).strip()
def paper_to_sample(rec: Dict[str, Any]) -> Dict[str, Any] | None:
"""一条 S2ORC 记录 → 一个训练样本;解析质量差则返回 None。"""
meta = rec.get("metadata") or {}
parse = rec.get("pdf_parse") or rec.get("latex_parse")
title = clean_text(meta.get("title") or "")
if not title or not parse:
return None # 无标题或无全文:丢弃
body = parse.get("body_text") or []
if len(body) < 3: # 正文过短:解析大概率失败
return None
total_chars = sum(len(p.get("text", "")) for p in body)
if total_chars < 500:
return None
sections, seen = [], set()
for p in body:
sec = (p.get("section") or "").strip() or "UNKNOWN"
if sec not in seen:
seen.add(sec)
sections.append({
"section": sec,
"text": clean_text(p.get("text", "")),
"cite_spans": p.get("cite_spans", []),
})
return {
"paper_id": rec["paper_id"],
"title": title,
"year": meta.get("year"),
"venue": meta.get("venue"),
"abstract": clean_text(meta.get("abstract") or ""),
"n_sections": len(seen),
"n_paragraphs": len(body),
"n_bib_entries": len(parse.get("bib_entries", [])),
"sections": sections,
}
def build_clean_dataset(out_path: str) -> None:
n_in = n_out = 0
with open(out_path, "w", encoding="utf-8") as w:
for fname in sorted(os.listdir(S2ORC_DIR)):
if not fname.endswith(".gz"):
continue
for rec in iter_records(os.path.join(S2ORC_DIR, fname)):
n_in += 1
s = paper_to_sample(rec)
if s is not None:
n_out += 1
w.write(json.dumps(s, ensure_ascii=False) + "\n")
print(f"kept {n_out}/{n_in} papers")
if __name__ == "__main__":
build_clean_dataset(os.path.join(DATA_ROOT, "s2orc_clean.jsonl"))
两个进阶过滤器(可选加入 paper_to_sample):
def has_broken_structure(sample: Dict[str, Any]) -> bool:
"""解析结构完整性检查:无参考文献或全部段落无节名视为可疑。"""
if sample["n_bib_entries"] == 0:
return True
known_sections = [s for s in sample["sections"] if s["section"] != "UNKNOWN"]
return len(known_sections) == 0
def dedup_by_title_key(samples: list) -> list:
"""标题+首作者+年份 的朴素去重(处理近重复版本并存)。"""
seen, out = set(), []
for s in samples:
key = (s["title"].lower()[:80], s["year"])
if key in seen:
continue
seen.add(key)
out.append(s)
return out
过滤阈值(段落数 <3、字符数 <500)是工程经验值而非官方数字;建议先在自己抽样的分片上统计分布再定阈值。
引用上下文提取(把行内引用 span 展开为"引用句 + 被引条目"对,供意图分类/证据定位使用):
def extract_citation_contexts(sample: Dict[str, Any], window: int = 1):
"""返回 [(引用句上下文, 被引条目标题)]。window 为扩展句子数。"""
pairs = []
bib = {b.get("ref_id"): b for b in sample.get("bib_entries", [])}
for sec in sample["sections"]:
for span in sec["cite_spans"]:
entry = bib.get(span.get("ref_id"))
if not entry:
continue # 引用链接未解析到条目:跳过(坑点 5)
context = sec["text"][max(0, span.get("start", 0) - 400):
min(len(sec["text"]), span.get("end", 0) + 400)]
pairs.append({"context": context,
"cited_title": entry.get("title"),
"section": sec["section"]})
return pairs
§6.4 PyTorch DataLoader 完整代码
import json, gzip
import torch
from torch.utils.data import Dataset, DataLoader
class S2orcParagraphDataset(Dataset):
"""章节感知的段落级数据集:输入论文标题+节名+段落文本。
目录预期:data_root/s2orc_clean.jsonl 由 §6.3 生成。"""
def __init__(self, data_root: str, max_len: int = 512,
tokenizer=None, min_year: int | None = None):
self.samples = []
self.tokenizer = tokenizer
self.max_len = max_len
with open(f"{data_root}/s2orc_clean.jsonl", encoding="utf-8") as f:
for line in f:
p = json.loads(line)
if min_year and (p.get("year") or 0) < min_year:
continue # 时间切分(防泄漏)
for sec in p["sections"][:64]: # 限制单篇段落数
self.samples.append({
"paper_id": p["paper_id"],
"title": p["title"],
"section": sec["section"],
"text": sec["text"],
})
def __len__(self):
return len(self.samples)
def __getitem__(self, idx):
s = self.samples[idx]
text = f"{s['title']} [SEP] {s['section']} [SEP] {s['text']}"
if self.tokenizer is not None:
enc = self.tokenizer(text, truncation=True, max_length=self.max_len,
padding="max_length", return_tensors="pt")
return {k: v.squeeze(0) for k, v in enc.items()}
return {"text": text, "paper_id": s["paper_id"]}
def build_loader(data_root: str, tokenizer=None, batch_size: int = 32,
min_year: int | None = None):
ds = S2orcParagraphDataset(data_root, tokenizer=tokenizer, min_year=min_year)
return DataLoader(ds, batch_size=batch_size, shuffle=True,
num_workers=4, pin_memory=True, drop_last=True)
# 用法(以 SciBERT 分词器为例):
# from transformers import AutoTokenizer
# tok = AutoTokenizer.from_pretrained("allenai/scibert_scivocab_uncased")
# loader = build_loader("/data", tokenizer=tok, batch_size=32, min_year=2019)
# for batch in loader:
# ... # 训练循环
§6.5 八大坑点
⚠️ 坑点 1:使用已停用的 2019/2020 静态版(分类:工程陷阱)
问题:2019-09-28 首版与 2020-07-05 静态版均已被官方停用(2023-02 起不再支持访问),且首版存在缺失节名等 release bug;许多老教程仍指向旧下载链接。
症状:下载链接 404;语料里大量section为空;行内引用提及解析不到参考文献条目;与 2023 年后论文结果不可比。
解决:
- 简单方法:一律改用 Semantic Scholar Public API Bulk Dataset(§6.2),记录
release_id。- 进阶方法:必须复现旧实验时,先核对论文声明的具体版本号,联系原作者获取(官方 README 指明联系 Kyle 与 Lucy),并在复现报告中注明版本差异。
- SOTA 方法:以当前 API 版重建数据集卡(dataset card),用版本字段+解析器版本做双维版本控制,新旧结果分别报告。
参考:GitHub README News 与 FAQ
⚠️ 坑点 2:把 S2ORC 与 S2AG 混为一谈(分类:工程陷阱)
问题:S2ORC 与 Semantic Scholar Academic Graph(S2AG)是同平台两个数据集:S2AG 是文献图(论文/作者/引用边等元数据),S2ORC 是机器可读全文;两者论文数、字段、引用链接器均不同(官方 FAQ:S2ORC 的"论文"定义更严格,不含幻灯、学位论文、书籍,且不含非英文论文;引用链接器精度更高但覆盖更低)。
症状:按 S2AG 的论文数预期 S2ORC 记录数却对不上;在 S2ORC 里找消歧后的作者 ID 而找不到(S2ORC 仅提供姓名字符串);引用网络覆盖率与预期不符。
解决:
- 简单方法:明确任务需要全文还是图;只用其一则各取所需。
- 进阶方法:需要两者时,用
paper_id关联 s2orc + papers + citations 分片,作者消歧改用 S2AG 的 authors 数据集。- SOTA 方法:构建统一 ETL 层,把 ID 映射(paper-ids 数据集)落库,任务侧只暴露一种规范 schema。
参考:GitHub FAQ(S2ORC vs S2AG)
⚠️ 坑点 3:在 s2orc 分片里找引用意图字段(分类:预处理陷阱)
问题:引用意图(citation intent)与影响力标记不在 s2orc 数据集本体里,而在同 release 的 citations 数据集(“Citation links between papers, with citation context and intent and influential classifications”)。
症状:遍历全部 s2orc 分片找不到intent字段,误以为"官方承诺的意图标注缺失"。
解决:
- 简单方法:同时下载 citations 数据集,按
paper_id(引用方/被引方)与 s2orc 关联。- 进阶方法:用 s2orc 的
cite_spans → bib_entries自行重建引用上下文(§6.3 代码),与 citations 数据集互补校验。- SOTA 方法:把 citations 的自动意图标签当作弱监督,配合小规模人工标注微调,校准后在下游使用。
参考:2023 平台论文 §4.2 数据集清单
⚠️ 坑点 4:把 PDF 自动解析文本当"出版级"文本(分类:预处理陷阱)
问题:全文来自 ScienceParse+Grobid 自动解析:公式、表格内容、页眉页脚被移除;段落切分与节名检测有错;LaTeX 提取的元数据质量反而低于 PDF(官方论文结论)。
症状:正文出现断裂句、表格标题后正文空缺、方法节内容错归入附录;依赖表格数值的任务完全失败。
解决:
- 简单方法:像 §6.3 一样按段落数/字符数过滤解析质量差的论文。
- 进阶方法:抽样人工质检各学科解析错误率;对公式/表格敏感的任务改用 unarXive(保留数学记号)或出版级 XML(PubMed Central)。
- SOTA 方法:用 s2orc-doc2json 以更高版本 Grobid 重新解析高价值子集,并以 LaTeX 版本记录交叉校准。
参考:S2ORC 论文 §2.1-2.2、s2orc-doc2json
⚠️ 坑点 5:把引用链接的"缺失"当"真阴性"(分类:评估误用)
问题:官方 FAQ 明确 S2ORC 引用链接器"更高精度、更低覆盖";第三方评估显示 92.6% 文档正确链接到六大数据库,即约 7% 存在链接或合并问题。
症状:引用网络分析中某些论文"引用数为 0";以引用图构造的对比学习正样本系统性缺失;文献计量结论偏离 Scopus/WoS。
解决:
- 简单方法:涉及引用边的结论前,用 DOI 交叉核对 OpenAlex 或出版方元数据。
- 进阶方法:对引用边做抽样人工验证并估计覆盖率,报告中给出置信区间;引用推荐评估中把"未链接"与"未引用"区分处理。
- SOTA 方法:融合 S2AG 引用边(覆盖更高)与 S2ORC 引用边(精度更高),以边级置信度加权。
参考:Scholarly big data quality assessment(2022)、GitHub FAQ
⚠️ 坑点 6:忽视开放获取与英语偏倚(分类:偏倚陷阱)
问题:全文仅覆盖开放获取论文且学科高度不均(Medicine 290 万 vs Law 2 万),非英文论文不含;OA 渗透率高的学科被系统性过代表。
症状:在全文子库上训练的学科分类器高估医学类先验;跨学科检索系统对人文社科查询召回率骤降;多语任务完全失效。
解决:
- 简单方法:训练前统计并报告学科/年份分布;按学科分层采样(§3.2 表)。
- 进阶方法:对目标域做重要性加权或领域自适应微调;明确在模型卡中声明"英文 OA 语料训练"。
- SOTA 方法:与 OpenAlex(CC0 元数据)联合使用校正学科先验;多语需求改用 unarXive/多语科学文献资源。
参考:2023 平台论文 Table 4、GitHub FAQ
⚠️ 坑点 7:预训练/评估与 SciDocs/SPECTER 训练集泄漏(分类:数据泄漏)
问题:S2ORC 全量包含 SciDocs 基准论文;SciNCL 论文发现 40.5% 的 SciDocs 论文曾泄漏进 SPECTER 训练数据(仅无监督论文数据,非金标注)。
症状:在 SciDocs 上报告的平均分虚高;对比不同论文结果时出现不可解释的差异。
解决:
- 简单方法:训练集显式剔除全部可映射的 SciDocs 论文(98.6% 可映射),参照 SciNCL 的 “w/o leakage” 协议。
- 进阶方法:同时报告含/不含泄漏两种结果,提升可比性与透明度。
- SOTA 方法:按年份切分(查询 2019、候选 ≤2019)+ 论文簇级去重,杜绝近重复跨集。
参考:SciNCL 论文 §4.2 与附录 B
⚠️ 坑点 8:下载与版本漂移破坏可复现性(分类:工程陷阱)
问题:S2ORC 每月重建:分片集合、解析结果、记录数都会变化;S3 分片 URL 随 release 轮换;全量下载中断后重跑容易混入不同 release 的分片。
症状:两周前下载的数据与新 release 统计对不上;复现实验时数字漂移;部分分片下载不完整(gzip 校验失败)。
解决:
- 简单方法:下载脚本幂等(已存在跳过)+ 下载后
gzip -t校验完整性(§6.2 已含跳过逻辑)。- 进阶方法:把
release_id写入数据目录与实验配置(§6.2 第 1 步已保存),用 DVC/git-lfs 记录数据版本;更新用官方 diffs 增量。- SOTA 方法:内网镜像固定 release 快照,生产环境冻结数据集版本,实验平台强制记录数据指纹(分片清单哈希)。
参考:GitHub README 下载脚本、2023 平台论文 §4.2(月度快照与 diffs)
§6.6 数据增强
| 策略 | 安全性 | 说明 |
|---|---|---|
| 段落级采样/截断 | ✅ 安全 | 保留单段完整性;长文按节采样 |
| 引用上下文窗口扩展(±400 字符) | ✅ 安全 | 保留引用 span 与条目对齐(§6.3) |
| 节名标准化(数字编号归一) | ✅ 安全 | 统一 “2.1 Methods”/“Methods” 表达 |
| 同义替换/回译 | ⚠️ 谨慎 | 学术文本术语敏感,替换易破坏术语一致性 |
| 跨论文段落拼接 | ❌ 危险 | 破坏引用链接与篇章逻辑,污染上下文学习 |
| 重复上采样少数学科 | ❌ 危险 | 引发记忆化与重复计数,加剧偏倚 |
§6.7 模型推荐
| 任务 | 推荐模型 | 起点权重 | 备注 |
|---|---|---|---|
| 科学文档嵌入 | SPECTER / SciNCL 式三元组训练 | allenai/scibert_scivocab_uncased 初始化 |
SciNCL 在 SciDocs 平均 81.8(论文) |
| 引用意图分类 | SciBERT/DeBERTa 微调 | SciBERT | 标签来自 citations 数据集(弱监督) |
| 罕见文献检索 | BM25 + 向量混合 | Pyserini + dense index | 大池下 BM25 仍具竞争力(2209.05452) |
| 长文档建模 | Longformer/BigBird | 长上下文权重 | 段落+节名层次化编码 |
| 医学实体抽取 | SciBERT + CRF / 生物医学 LLM | SciBERT 或领域 LLM | 归一化到 SNOMED CT/UMLS |
| 段落级证据定位 | 长上下文编码器 + cite_spans 监督 | Longformer | 引用 span 即天然弱标注 |
§6.8 硬件需求
| 场景 | CPU/内存 | 存储 | GPU | 说明 |
|---|---|---|---|---|
| 单分片探索 | 8 核 / 32 GB | 100 GB SSD | 无 | 流式解压即可 |
| 全量清洗(12M 全文) | 16-32 核 / 64-128 GB | 2-4 TB SSD | 无 | 多进程按分片并行 |
| SciBERT 级微调 | 16 核 / 64 GB | 1 TB | 1×24 GB | batch 32、fp16 |
| 三元组嵌入训练 | 32 核 / 128 GB | 2 TB | 2-4×24 GB | 参照 SciNCL 双卡设置 |
| 大规模检索索引 | 32 核 / 128 GB | 1 TB | 可选 FAISS GPU | 1,600 万级候选池 |
§6.9 评估指标代码
import numpy as np
def map_at_k(ranked: list, relevant: set, k: int = 30) -> float:
"""MAP@k:引用推荐标准指标(Medić 等 2022 协议)。"""
hits, score = 0, 0.0
for i, doc in enumerate(ranked[:k], start=1):
if doc in relevant:
hits += 1
score += hits / i
return score / max(1, min(len(relevant), k))
def ndcg_at_k(ranked: list, relevant: set, k: int = 30) -> float:
dcg = sum(1.0 / np.log2(i + 2) for i, d in enumerate(ranked[:k]) if d in relevant)
idcg = sum(1.0 / np.log2(i + 2) for i in range(min(len(relevant), k)))
return dcg / idcg if idcg > 0 else 0.0
def recall_at_k(ranked: list, relevant: set, k: int = 30) -> float:
return sum(1 for d in ranked[:k] if d in relevant) / max(1, len(relevant))
§6.10 MLOps 笔记
- 版本冻结:生产管线固定
release_id,升级走灰度;月度重建意味着"同一份数据"必须指 release 而非"S2ORC"。 - 数据指纹:对分片清单(文件名+大小+gzip 校验)做哈希,写入实验追踪(MLflow/W&B)。
- 增量更新:用官方 diffs 只处理新增/变更论文;注意被重新解析的旧论文会改变引用图。
- 质量监控:上线后监控段落空串率、引用链接解析失败率(§6.3 过滤器的通过率),突变即报警。
- 许可合规流水线:分发任何基于 S2ORC 的衍生语料时附 ODC-By 1.0 归属声明。
监控指标参考:
| 监控项 | 健康信号 | 异常处置 |
|---|---|---|
| 过滤通过率(kept/total) | 相对基线 ±5% 内 | 骤降→解析器或分片格式变更,核对 release |
section == "UNKNOWN" 比例 |
稳定低位 | 骤升→节名检测回归,检查记录 schema |
| 引用链接解析失败率 | 稳定低位 | 骤升→bib_entries 结构变化 |
| 记录数/分片 | 符合 release 公告 | 偏差大→分片混版本(坑点 8) |
§7 质量评估与局限性
§7.1 已知偏倚
| 偏倚类型 | 描述 | 严重程度 | 缓解措施 |
|---|---|---|---|
| 开放获取偏倚 | 全文仅限 OA 论文,付费期刊文献缺全文 | 高 | 元数据任务不依赖全文;引用 OpenAlex 补充 |
| 学科不均衡 | Medicine 290 万 vs Law 2 万(全文) | 高 | 分层采样、重要性加权 |
| 英语偏倚 | 不含非英文论文(官方 FAQ) | 高 | 多语任务换用其他资源 |
| 解析噪声 | 公式/表格/页眉页脚被移除;段落切分有错 | 中 | §6.3 过滤;敏感任务用 unarXive/PMC XML |
| 链接 conflation | 近重复论文误并/误链,92.6% 正确率 | 中 | DOI 交叉核对、敏感性分析(坑点 5) |
| 时间覆盖偏差 | 静态版止于 2020-04;当前版随重建滚动 | 低 | 用当前 API 版 |
§7.2 标注质量(解析质量)
无人工标注层,质量即解析质量:Grobid 对规范排版论文解析良好,但双栏、公式密集、扫描版 PDF 出错率上升;LaTeX 路径结构检测近乎完美但元数据反而不佳;引用提取有两类已修正的系统性错误(上标误检、范围引用漏检,论文 §2.1)。建议对目标子集做 100-500 篇人工抽检,估计错误率后再决定下游用途。
§7.3 泛化性
| 使用场景 | 失效风险 | 证据 |
|---|---|---|
| 跨学科全文模型 | 高(学科长尾样本极少) | 学科分布 Table 4 |
| 非英语文献处理 | 完全失效(不含非英文) | 官方 FAQ |
| 引用图完整分析 | 中(链接器低覆盖) | FAQ + 92.6% 评估 |
| 医学摘要检索 | 中(许可性摘要缺失) | abstracts 数据集 “where allowed by licensing” |
| 表格/公式信息抽取 | 高(解析时被移除) | 论文 §2.1 |
§7.4 伦理与合规
- 内容属性:公开出版的学术文献,无患者级个人信息;作者姓名与单位属书目元数据(rai:personalSensitiveInformation 已在结构化数据中声明)。
- 许可:当前版 ODC-By 1.0(允许商用,须归属);历史研究版为非商业许可;官方明确提醒用户自查底层内容的版权约束(尤其出版方许可的摘要与全文)。
- 合理使用:大规模文本挖掘多数司法辖区有 TDM 例外,但再分发解析全文需谨慎;衍生模型不受逐篇论文版权约束的一般结论需法律确认。
- 双重用途:文献挖掘产出的知识图谱可能被用于伪科学背书或误导性引用;分发衍生资源时应保留溯源信息(
paper_id→DOI),让证据可回查。
§7.5 公平性
语料继承学术出版的结构性不平等:英语霸权、发达地区出版商占比高、OA 付费能力差异转化为全文可及性差异。以该语料训练的检索/推荐系统会把这种"可见性偏倚"传导给下游用户;文献计量类应用应显式讨论"哪些文献根本不在语料里"。
§7.6 数据漂移
月度重建带来两种漂移,应对策略不同:
| 漂移类型 | 表现 | 对项目的影响 | 应对 |
|---|---|---|---|
| 内容漂移 | 新论文进入;论文数、引用边数逐月增长 | 统计口径变化;排行榜数字缓慢失效 | 固定 release 报告数字;升级时重跑基线 |
| 管线漂移 | 解析器升级导致同一论文前后版本解析不同 | 段落数/引用链接变化;缓存失效 | 用 diffs 定位变更记录;缓存键加 release_id |
实验复现策略见坑点 8;长期监控建议固定 release + 增量 diffs 双轨。
§7.7 DAIMS 24 项检查
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 宽格式 | ✅ | JSON lines 一条一论文,字段自包含 |
| 2 | 唯一标识 | ✅ | paper_id 主键,兼容 DOI/arXiv/PMID/PMCID/ACL ID 映射 |
| 3 | 特殊字符 | ⚠️ | PDF 解析文本含连字、断词、异形字符;LaTeX 数学符号被移除 |
| 4 | 重复行 | ⚠️ | 聚类去重后仍存在近重复与版本并存;92.6% 链接正确率意味着约 7% 有合并问题 |
| 5 | 缺失编码 | ✅ | 缺失以空串/空对象表达,语义一致 |
| 6 | 标签标识 | ⚠️ | 无监督标签;引用意图为自动弱监督(citations 数据集) |
| 7 | 罕见类分组 | ❌ | 无类别体系;学科字段未规范化 |
| 8 | 偏倚评估 | ✅ | OA/英语/学科偏倚有官方文档与第三方评估支撑 |
| 9 | 数据字典 | ✅ | GitHub README + 论文 schema 详述字段 |
| 10 | 信息性缺失解释 | ⚠️ | 摘要缺失=许可限制需自行推断;全文缺失=非 OA |
| 11 | 设备记录 | ❌ | 不适用(文献语料,无采集设备) |
| 12 | 共线性 | ✅ | 不适用(非表格型统计数据),引用边共线无意义 |
| 13 | 编码映射 | ✅ | 多标识符体系(DOI/arXiv/PMID 等)可映射外部资源 |
| 14 | 时间戳处理 | ⚠️ | 仅出版年份无月份日期;重建时间以 release_id 表达 |
| 15 | 划分建议 | ❌ | 无官方划分;社区惯例需自行实现(§5) |
| 16 | 泄漏讨论 | ✅ | 基准泄漏(SciDocs 40.5%)有论文级披露与协议 |
| 17 | 标签分布 | ⚠️ | 意图分布官方未发布,需自行统计 |
| 18 | 测量偏倚 | ⚠️ | 解析器即"测量仪器",其系统误差已被论文表征 |
| 19 | 外部验证建议 | ✅ | 第三方链接质量评估 + SciDocs 映射率可作锚点 |
| 20 | 版本记录 | ✅ | release_id + 月度快照 + 增量 diffs 机制完善 |
| 21 | 预处理脚本 | ⚠️ | 官方提供下载脚本与 doc2json;端到端清洗需自建(§6.3) |
| 22 | 合规要求 | ✅ | ODC-By 1.0 明确、API key 免费申请、官方有合规提示 |
| 23 | 多模态对齐 | ❌ | 纯文本单模态;图表仅存标题,图内容不可对齐 |
| 24 | 去标识化 | ✅ | 公开出版物,无个人敏感信息需脱敏 |
DAIMS 评分:14.5 / 24(✅ 14 项、⚠️ 8 项折半计 4 分、❌ 2 项计 0 分)
评分解读:S2ORC 在标识体系、版本管理、许可合规与偏倚文档上达到旗舰水准——这正是"平台化数据集"相对一次性静态数据集的优势;短板集中在"任务就绪"侧:无官方划分、无人工标签、多模态缺失、以及自动解析固有的噪声。作为预训练与文献挖掘的原料库它接近满分;作为即用型基准它需要使用者补齐评估协议。
对你意味着什么:① 直接把 §6.1-§6.4 代码跑通即可获得干净训练流,无需等待官方预处理;② 任何论文级比较实验前,先固定 release_id 并排除 SciDocs 论文(坑点 7/8),否则结果不可复现;③ 引用图类分析必须做 DOI 交叉验证(坑点 5),不能把引用边的缺失当事实;④ 计划发论文的团队应在实验章节报告学科/年份分布与解析质量抽检结果,这是审稿人对 S2ORC 类语料的常见质询点。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| 六大文献数据库链接核对 | 独立学术团队(2022) | 文档链接正确性 | 92.6% 正确链接 | — | 链接质量随学科域波动;三种近重复检测方法量化 conflation |
| SciDocs(Cohan et al. 2020) | AI2/华盛顿大学 | 论文映射率 | 98.6% 可映射到 S2ORC | — | 基准与语料高度重叠,防泄漏必须显式处理 |
| SciDocs 基准(平均分) | SciNCL(2022) | 文档嵌入 12 任务 | SciNCL 81.8 vs SPECTER 80.0 | +1.8 | S2ORC 引用图(52.4M 节点/447M 边)训练优于 SPECTER 原始数据 |
| 引用推荐候选池(200k/500k/1M/2M) | Medić 等(2022) | MAP/NDCG/R@30 | SciNCL MAP 42.5@200k 最优 | 大池下 BM25 反超 | 1,600 万级候选上稀疏检索仍有竞争力 |
表中结果均来自同行评审论文或其 arXiv 版本;不同评估协议(候选池大小、查询集、指标)之间数值不可直接比较。
§8 基准性能与生态
§8.1 排行榜(SciDocs 文档嵌入基准 + S2ORC 引用推荐评估)
| 排名 | 模型 | 性能 | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|
| 1 | SciNCL | SciDocs 平均 81.8;引用推荐 MAP 42.5(200k 池) | 2022 | 引用图近邻对比学习(kNN 难负例采样),S2ORC 引用图训练 | Ostendorff et al., 2022, arXiv:2202.06671(ACL 2022). https://arxiv.org/abs/2202.06671 | GitHub |
| 2 | SPECTER | SciDocs 平均 80.0(复现口径) | 2020 | SciBERT 初始化 + 引用三元组 triplet loss | Cohan et al., 2020, ACL. https://doi.org/10.18653/v1/2020.acl-main.207 | GitHub |
| 3 | BM25(稀疏基线) | 引用推荐 MAP 40.5(200k 池),2M 大池反超稠密模型 | 2022 | 词法检索(Pyserini 实现) | Medić et al., 2022, SDP@AACL. https://arxiv.org/abs/2209.05452 | Pyserini |
| 4 | ASPIRE(BioMed 变体) | 引用推荐 MAP 41.4(200k 池) | 2022 | 上下文化文档嵌入 | 同上(Medić et al., 2022 评估协议内) | GitHub |
| 5 | SciBERT | 作为编码器弱基线(文档级任务) | 2019 | 科学文本预训练 BERT | Beltagy et al., 2019, arXiv:1903.10676. https://arxiv.org/abs/1903.10676 | GitHub |
数值不可直接比较:SciDocs 平均分与引用推荐 MAP 来自不同任务与协议;引用推荐结果依赖候选池大小(200k-2M)与查询集构造;SPECTER 80.0 为 SciNCL 论文中的复现值而非原始论文报告值。
§8.2 SOTA 总结与选型建议
科学文档嵌入的事实标准演进路径是 SciBERT → SPECTER → SciNCL:三者共享"引用信号监督"思想,S2ORC 引用图是后两代的核心训练资产。选型决策表:
| 你的场景 | 首选方案 | 理由 |
|---|---|---|
| 论文检索/推荐(万级以上候选池) | BM25 + SciNCL 向量混合 | 大池下 BM25 反超稠密模型,混合取长补短 |
| 引用意图分类/证据定位 | SciBERT/DeBERTa 微调 + citations 弱监督 | 强基线易复现,弱监督标签免费 |
| 科学文档聚类/可视化 | SPECTER 或 SciNCL 嵌入 | 无需微调,嵌入即输入 |
| 医学领域精调 | 通用 LLM + S2ORC 医学子库继续预训练 | 医学全文量最大,领域术语覆盖好 |
| 表格/公式密集任务 | 不用 S2ORC(改 unarXive/PMC XML) | 解析时公式表格被移除 |
§8.3 评测协议
以引用推荐为例(Medić et al., 2022):S2ORC 预过滤(剔除空年份/空标题/摘要 <30 字符/引用数 <3)→ 约 1,600 万篇候选;按年份构造查询(2019)与候选池(≤2019);池规模 200k/500k/1M/2M 各重复采样 3 次取均值;报告 MAP、NDCG、R@30。文档嵌入则用 SciDocs 12 任务(分类/共读共引/推荐),嵌入不做任务内微调直接评估(SciNCL §4.1)。
§8.4 相关数据集
| 数据集 | 关系 | 用途互补 |
|---|---|---|
| S2AG | 同平台元数据层 | 作者消歧、机构归一 |
| papers/abstracts/tldrs/embeddings(S2 datasets) | 同 release 家族 | 与 s2orc 同 ID 体系拼装 |
| PubMed Central OA | 出版级 XML | 医学全文金标准对照 |
| unarXive 2022 | arXiv 深解析版 | 公式/表格保留 |
| CORD-19 | 派生应用 | COVID-19 专精语料 |
| OpenAlex | CC0 元数据图 | 学科先验校正、引用覆盖对照 |
| paper-ids / tldrs / publication-venues(S2 datasets) | 同 release 家族 | ID 映射与补全元数据 |
§8.5 关键论文 Top 8
- Lo, K., Wang, L. L., Neumann, M., Kinney, R., & Weld, D. S. (2020). S2ORC: The Semantic Scholar Open Research Corpus. ACL 2020, pp. 4969-4983. https://doi.org/10.18653/v1/2020.acl-main.447 — 数据集奠基论文:构建管线、规模统计与质量评估。
- Kinney, R., et al. (2023). The Semantic Scholar Open Data Platform. arXiv:2301.10140. https://arxiv.org/abs/2301.10140 — 平台化后的权威描述:datasets 家族、月度快照与全文学科分布。
- Cohan, A., et al. (2020). SPECTER: Document-level Representation Learning using Citation-informed Transformers. ACL 2020. https://doi.org/10.18653/v1/2020.acl-main.207 — 基于 S2ORC 引用三元组的文档嵌入开山之作。
- Ostendorff, M., et al. (2022). Neighborhood Contrastive Learning for Scientific Document Representations with Citation Embeddings. arXiv:2202.06671(ACL 2022). https://arxiv.org/abs/2202.06671 — SciNCL:S2ORC 引用图 + 难负例,披露 SciDocs 泄漏问题。
- Medić, S., et al. (2022). Large-scale Evaluation of Transformer-based Article Encoders on the Task of Citation Recommendation. SDP@AACL. https://arxiv.org/abs/2209.05452 — 以 S2ORC 为候选池的大规模引用推荐评测协议。
- Beltagy, I., Lo, K., & Cohan, A. (2019). SciBERT: A Pretrained Language Model for Scientific Text. EMNLP-IJCNLP 2019. https://arxiv.org/abs/1903.10676 — 科学 NLP 预训练基座,S2ORC 生态的常用初始化。
- Saier, T., & Färber, M. (2019). unarXive: A Large Scholarly Data Set with Publications’ Full-Text, Annotated In-Text Citations, and Links to Metadata. arXiv:1903.11044. https://arxiv.org/abs/1903.11044 — LaTeX→XML 解析思想来源,S2ORC LaTeX 管线参照。
- Scholarly big data quality assessment (2022). Document linking and conflation with S2ORC. https://www.semanticscholar.org/paper/5c5751d45e298cea054f32b392c12c61027d2fe7 — 第三方链接质量评估:92.6% 正确链接率。
§8.6 社区活跃度
- 官方渠道:问题反馈统一走 s2-folks GitHub repo(issue 搜索优先);团队邮箱 {kylel, lucyw, rodneyk}@allenai.org(README)。
- 采用规模:截至 2022-12 发出 700+ API 密钥,单月请求约 1.5 亿次(2023 平台论文 §4);论文 Google Scholar 引用 939+(截至 2026-09)。
- 工具生态:s2orc-doc2json(自有 PDF/LaTeX 入库)、Pyserini/FAISS 检索栈、HuggingFace 上的 SciBERT/SPECTER/SciNCL 权重。
生态时间线:
| 年份 | 里程碑 |
|---|---|
| 2019 | 首版发布;unarXive 等同类资源同年出现 |
| 2020 | ACL 2020 论文发表;SPECTER 以引用三元组训练发布 |
| 2021 | s2orc-doc2json 开源,社区可自解析 PDF/LaTeX |
| 2022 | SciNCL 发布并披露 SciDocs 泄漏问题;大规模引用推荐评估成文 |
| 2023 | 转入 S2 Public API 月度快照;平台论文系统化公开数据家族 |
| 2024 至今 | 持续月度重建;科学文献 LLM 与检索增强研究以 S2ORC 为常用语料 |
§8.7 生态快照
| 资源 | 类型 | 链接 | Star(截至 2026-09) | 推荐理由 |
|---|---|---|---|---|
| allenai/s2orc | 官方仓库 | https://github.com/allenai/s2orc | — | 下载脚本、FAQ、许可与引用规范的唯一权威来源 |
| allenai/s2-folks | 社区支持 | https://github.com/allenai/s2-folks | — | 官方指定 issue 渠道 |
| allenai/specter | 模型 | https://github.com/allenai/specter | — | S2ORC 引用三元组训练的嵌入模型 |
| malteos/scincl | 模型 | https://github.com/malteos/scincl | — | 当前 SciDocs 最优开源科学文档编码器 |
| castorini/pyserini | 检索工具 | https://github.com/castorini/pyserini | — | BM25 基线与大规模检索协议实现 |
| allenai/s2orc-doc2json | 解析工具 | https://github.com/allenai/s2orc | — | 自有 PDF/LaTeX 转 S2ORC 格式 |
Star 数随时间变化,使用前请以 GitHub 实时数据为准;官方仓库以文档价值为主,未以 Star 数为活跃度指标。
§9 相关资源与引用
§9.1 官方资源
| 资源 | 链接 | 说明 |
|---|---|---|
| 数据集主页 | https://allenai.org/data/s2orc | 版本历史、FAQ、许可说明 |
| GitHub 仓库 | https://github.com/allenai/s2orc | 下载脚本与文档(权威入口) |
| S2 Datasets API 文档 | https://api.semanticscholar.org/api-docs/datasets | release/dataset/diffs 端点 |
| API key 申请 | https://www.semanticscholar.org/product/api#api-key-form | 免费 |
| ACL 2020 论文 | https://aclanthology.org/2020.acl-main.447/ | 官方 Anthology 页(含 12 分钟报告视频链接) |
| 平台论文 | https://arxiv.org/abs/2301.10140 | 2023 起的架构与数据家族描述 |
| 社区支持 | https://github.com/allenai/s2-folks | issue 搜索与反馈 |
§9.2 BibTeX 引用
@inproceedings{lo-wang-2020-s2orc,
title = "{S}2{ORC}: The Semantic Scholar Open Research Corpus",
author = "Lo, Kyle and Wang, Lucy Lu and Neumann, Mark and
Kinney, Rodney and Weld, Daniel",
booktitle = "Proceedings of the 58th Annual Meeting of the
Association for Computational Linguistics",
month = jul,
year = "2020",
address = "Online",
publisher = "Association for Computational Linguistics",
url = "https://www.aclweb.org/anthology/2020.acl-main.447",
doi = "10.18653/v1/2020.acl-main.447",
pages = "4969--4983"
}
@article{kinney-2023-s2-platform,
title = "The Semantic Scholar Open Data Platform",
author = "Kinney, Rodney and Anastasiades, Chloe and Authur, Russell and
Beltagy, Iz and Bragg, Jonathan and Buraczynski, Alexandra and
Ester, Moontae and Feldman, Isaac and Goyal, Amandeep and
Groenendijk, Isa and Hsu, Sophia and Mulholland, Nicholas and
Machavajhala, Anirudh and May, Tony and Liu, Waleed and
Weld, Daniel S. and Downey, Doug and Lo, Kyle and Wang, Lucy Lu",
journal = "arXiv preprint arXiv:2301.10140",
year = "2023",
url = "https://arxiv.org/abs/2301.10140"
}
§9.3 引用指南
- 使用 S2ORC 数据本身 → 引
lo-wang-2020-s2orc(官方 README 明确要求)。 - 描述 2023 年后的分发机制/数据家族 → 引
kinney-2023-s2-platform。 - 使用 SPECTER/SciNCL 模型 → 分别引用对应模型论文(§8.5)。
- 引用规模数字时注明口径(静态版 vs 当前 release)与"截至"日期。
§9.4 常见问题速查(官方 FAQ 摘编)
| 问题 | 官方口径 |
|---|---|
| S2ORC 和 S2AG 有什么区别? | S2AG 是文献图(节点+边的元数据);S2ORC 是机器可读全文(对 PDF 跑解析模型得到);两者应视为独立数据集 |
| 旧版 S2ORC 文件还能下载吗? | 原文件已不可下载,被重构为 S2 API 的多个数据集;旧版访问已停止支持 |
| 当前版与旧研究版差异? | 当前版是研究思想在 S2 生产管线中的重实现,由不同团队维护;许可由非商业变为 ODC-By 1.0 |
| 不确定该用哪个/怎么引用? | 官方 README 建议邮件联系团队讨论({kylel, lucyw, rodneyk}@allenai.org) |
§10 AI 使用声明卡
§10.1 使用的 AI 模型列表
| 模型 | 用途 |
|---|---|
| Claude(Anthropic) | 条目初稿撰写、结构组织、代码示例生成 |
§10.2 AI 参与范围
AI 负责基于检索事实清单(FACTS.md)撰写正文、生成代码示例与表格;所有事实性内容(数字、版本、许可、评估结果)均来自 §10.3 所列公开来源并由人工交叉核对;结构性规范遵循千方病案医数集写作宪法。代码示例经人工审查目录假设、数据拼接关系与过滤逻辑的一致性;未在来源中出现的技术细节(如过滤阈值)已在正文中标注为工程经验值而非官方数字。
§10.3 输入来源列表
- Lo, K., Wang, L. L., Neumann, M., Kinney, R., & Weld, D. S. (2020). S2ORC: The Semantic Scholar Open Research Corpus. ACL 2020, pp. 4969-4983. DOI: 10.18653/v1/2020.acl-main.447.
- Allen Institute for AI. S2ORC — AI2 Data. https://allenai.org/data/s2orc
- Allen Institute for AI. allenai/s2orc GitHub README(版本历史、下载脚本、FAQ、许可). https://github.com/allenai/s2orc
- Kinney, R., et al. (2023). The Semantic Scholar Open Data Platform. arXiv:2301.10140. https://arxiv.org/abs/2301.10140
- Semantic Scholar API Team. Datasets API Documentation. https://api.semanticscholar.org/api-docs/datasets
- Ostendorff, M., et al. (2022). Neighborhood Contrastive Learning for Scientific Document Representations with Citation Embeddings. arXiv:2202.06671. https://arxiv.org/abs/2202.06671
- Medić, S., et al. (2022). Large-scale Evaluation of Transformer-based Article Encoders on the Task of Citation Recommendation. arXiv:2209.05452. https://arxiv.org/abs/2209.05452
- Cohan, A., et al. (2020). SPECTER: Document-level Representation Learning using Citation-informed Transformers. ACL 2020. DOI: 10.18653/v1/2020.acl-main.207.
- Beltagy, I., Lo, K., & Cohan, A. (2019). SciBERT. EMNLP-IJCNLP 2019. arXiv:1903.10676. https://arxiv.org/abs/1903.10676
- Saier, T., & Färber, M. (2019). unarXive. arXiv:1903.11044. https://arxiv.org/abs/1903.11044
- Scholarly big data quality assessment: a case study of document linking and conflation with S2ORC (2022). Semantic Scholar 论文页. https://www.semanticscholar.org/paper/5c5751d45e298cea054f32b392c12c61027d2fe7
- OpenAlex. S2ORC: The Semantic Scholar Open Research Corpus — Works 记录. https://openalex.org/w3015453090
- Google Scholar. S2ORC 论文引用记录(939 次,截至 2026-09-13 检索;见 Lucy Lu Wang 主页引用列表). https://scholar.google.com
- DeepWiki. allenai/s2orc 架构与演进文档. https://deepwiki.com/allenai/s2orc
§10.4 人工校验记录
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| §1 概览与版本时间轴 | 千方病案医学编辑部 | 对照官方站点与 GitHub News 逐条核对 | ✅ 已通过 |
| §2 医学背景与术语映射 | 千方病案医学编辑部 | 学科分布数字溯源至平台论文 Table 4 | ✅ 已通过 |
| §3-§4 规格与数据字典 | 数据工程师 | 对照论文 schema 与 2023 平台论文核对字段 | ✅ 已通过 |
| §6 就绪指南与 8 坑点 | 数据工程师 | 下载脚本与官方 README 逐行比对;坑点溯源 FAQ/论文 | ✅ 已通过 |
| §7 质量评估与 DAIMS | 数据工程师 | 24 项逐项核对事实依据 | ✅ 已通过 |
| §8 基准与生态 | 千方病案医学编辑部 | 排行榜数值溯源至原始论文 | ✅ 已通过 |
§10.5 AI 生成章节标注
本条目全部章节由 AI 依据 §10.3 来源初稿生成,经 §10.4 所列人工校验后发布;无未校验的 AI 直发内容。
§10.6 最后人工审核日期
2026-09-05(与 §0 审核声明一致)
页面状态:published(全部内容已完成审核并发布)
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- medmentions — 共享标签:医疗NLP / 生物医学文献 / 知识图谱
- biored — 共享标签:医疗NLP / 生物医学文献 / 知识图谱
- craft — 共享标签:医疗NLP / 生物医学文献 / 知识图谱
- open-pmc — 共享标签:医疗NLP / 生物医学文献
- pharos — 共享标签:医疗NLP / 知识图谱
- pmc-oa-subset — 共享标签:医疗NLP / 生物医学文献
- cometa — 共享标签:医疗NLP / 知识图谱
- ncbi-disease — 共享标签:医疗NLP / 生物医学文献
- jnlpba — 共享标签:医疗NLP / 生物医学文献
- biosses — 共享标签:医疗NLP / 生物医学文献
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

