MedHop (medhop) — 跨文档多跳推理的医学药物相互作用阅读理解数据集 — AI-Ready Wikipedia

QAngaroo 项目医学半边:以 DrugBank/Reactome/Swiss-Prot 的远监督信号从 2016 版 Medline 摘要自动构建的 2,508 题多跳阅读理解基准——查询『两药是否相互作用』,证据须沿『药物—靶点蛋白—蛋白—药物』反应链跨 36.4 篇文档串起,姊妹数据集 WikiHop 同论文同格式同期发布,test 集长期封闭盲评

来源 Zenodo records/6407401(qangaroo_v1.1.zip,339.8 MB,md5 dd4f65d2f73244c0946b5810e24a8e43);官方站 qangaroo.cs.ucl.ac.uk;HuggingFace bigbio/medhop(train+validation);社区镜像 OpenDataLab MedHop发布时间: 2026-09-30最后更新: 2026-09-30 阅读 9
MedHop (medhop) — 跨文档多跳推理的医学药物相互作用阅读理解数据集 — AI-Ready Wikipedia

信息速览

数据集名称MedHop (medhop) — 跨文档多跳推理的医学药物相互作用阅读理解数据集 — AI-Ready Wikipedia
数据类型自动构建,文本数据,知识图谱
规模0(非患者数据;为文献摘要问答实例)|实例口径:train 1,620 / dev 342 / test 546,合计 2,508 例查询
接入方式Zenodo records/6407401(qangaroo_v1.1.zip,339.8 MB,md5 dd4f65d2f73244c0946b5810e24a8e43);官方站 qangaroo.cs.ucl.ac.uk;HuggingFace bigbio/medhop(train+validation);社区镜像 OpenDataLab MedHop
AI 就绪度

INFOBOX — MedHop 一屏速览

维度 内容
本质 QAngaroo 项目的医学半边:跨文档多跳阅读理解数据集,非单跳医学问答
定位 查询=「药物 A 是否与 ? 相互作用」,证据须沿药物—蛋白—蛋白—药物通路跨多篇摘要链式推断
团队 University College London(UCL)+ Bloomsbury AI;Welbl / Stenetorp / Riedel
论文 TACL Vol 6 (2018), pp. 287-302;DOI 10.1162/tacl_a_00021;ACL ID Q18-1021;arXiv 1710.06481
规模 train 1,620 / dev 342 / test 546(合计 2,508);公开包仅占前二者
每样本 候选药物 avg 8.9;文档 avg 36.4(上限 64);每文档 token avg 253.9
查询类型 仅 1 种(interacts_with)——与 WikiHop 277 种形成鲜明对比
构建方式 远监督:DrugBank + Reactome + Swiss-Prot 结构化知识驱动,无人工标注(dev 抽样 100 条仅做质量分析)
姊妹数据集 WikiHop(Wikipedia 开放域,train 43,738 / dev 5,129 / test 2,451)同论文同格式发布
变体 original(原始)与 masked(候选实体替换为 100 个唯一占位符 token)
许可 CC BY-SA 3.0
获取 Zenodo records/6407401(339.8 MB)|HF bigbio/medhop|官方站 qangaroo.cs.ucl.ac.uk
库内互链 medqa(50)、pubmedqa(49)、medmcqa(111)、ddi(171)、drugbank(89/571)、bioasq(53)、scifact(751)

MedHop 是一个把"多跳推理"这件事单独拎出来做成评测基准的数据集。它问的问题形式上极其简单——“药物 A 和哪种药相互作用?”——但答案不写在任何一篇摘要里:你必须先读到 A 的靶点蛋白 P,再沿一条被 Reactome 证实的蛋白-蛋白相互作用链走到蛋白 Q,最后回到某篇摘要里找到 Q 的另一种药 B。整条证据链横跨 36 篇左右的 Medline 文档,中间任何一环断了都推不出答案。这正是 2018 年前后 NLP 社区开始系统追问的问题:当答案不在单篇文档里时,阅读理解模型还能做什么?

更值得玩味的是它的构建哲学。MedHop 不是雇人一道题一道题标注出来的,而是把已经结构化的知识库(DrugBank 的药物-靶点、Reactome 的蛋白通路、Swiss-Prot 的蛋白本体)当作"出题机",再用精确字符串匹配把知识库的事实投射回 Medline 摘要文本上——这就是远监督(distant supervision)。这种做法的好处是规模、可复现、无标注噪声;代价是把模型评测的难点从"标注质量"转移到了"证据链是否真的能从文本读出"。MedHop 与它的姊妹数据集 WikiHop 一起,成为 2018 年后 HotpotQA、2WikiMultiHopQA、MuSiQue 等一整个多跳 QA 谱系的早期参照。

导语读法三则:

  1. 只想下数据:直奔 §6 获取与许可——注意 test 集不公开,公开包只有 train+validation,别把 2,508 当成可下载量。
  2. 关心任务设计:直奔 §3 构建流水线与 §4 任务与标注——二部图、游走、降采样、masking 四步是全文技术核心。
  3. 要做评测对标:直奔 §5 评估与基准——注意 42.9/74.0 与 54.5/85.0 的双口径陷阱(坑 1),MedHop 自身最佳是 47.8% 而非 54.5%。

§0 导读:这个数据集解决什么问题

§0.1 从"单跳"到"多跳":一个被形式化的问题

自然语言处理的阅读理解任务长期默认一个隐含前提:答案存在于单篇文档之内。SQuAD、CNN/DailyMail 乃至早期生物医学问答数据集都遵循这个前提——给定一段文本,从中抽出一个 span 或选出一个选项。但真实世界的知识很少这样组织。医生判断"这两种药能不能一起用",依据的不是某一句话,而是散落在药理机制、靶点通路、临床文献里的多段信息,需要把"药 A 作用于蛋白 P"“P 与 Q 同处一条通路”“药 B 作用于 Q"三条陈述串起来,才能得出"A 与 B 可能相互作用”。

MedHop 要形式化的正是这一跃迁。它把任务定义为:给定查询 (drug1, interacts_with, ?) 与一组文档,从一组类型一致的候选答案中选出正确的那一个;候选(含正确项)都必须在文档中被提及。注意这里的三个约束是刻意设计的:

  1. 查询是二元关系占位——不是自然语言问句,而是知识图谱三元组的头实体+关系,这让答案空间封闭、可用结构化知识校验;
  2. 候选类型一致——所有候选都是药物,模型不能靠"答案应该是个化学式"这类类型线索走捷径;
  3. 证据跨文档——正确答案所依赖的证据链分散在多篇摘要,单文档匹配无法奏效。

§0.2 为什么用医学文献做多跳

MedHop 选择医学领域并非偶然。医学文献有一个其他领域难以复制的性质:存在大规模、高质量、公开的结构化知识可以充当"出题骨架"。药物与靶点的对应关系由 DrugBank 维护,蛋白与蛋白的相互作用由 Reactome 收录,人类蛋白本体由 Swiss-Prot 规范——这三者都是人工审编或高质量推断的产物,可以直接拿来生成"事实正确"的查询与答案,再用文献的精确字符串匹配建立"证据确实写在哪里"的映射。

代价则在于:结构化知识是对的,但文本证据不一定读得通。知识库告诉你"X 与 Y 相互作用",可 Medline 摘要里可能从未同时讨论过这两者,或者只在不同的上下文中各提一次。于是 MedHop 的任务难度天然被结构化为两级——先要在 36 篇文档里定位到那条真正的证据链(文档选择),再要在候选里选定答案(答案判定)。§5 的 gold chain 实验正是为了把这两级难度分开测量而设计:只把含答案线索的文档喂给模型,性能立刻从 47.8% 跳到 86.4%。

§0.3 QAngaroo 不是两个数据集,是一个项目的两个投影

检索时最容易踩的坑是把 QAngaroo、MedHop、WikiHop 当作三个并列的数据集。实际上 QAngaroo 是项目名,它产出了同一个论文、同一套格式、同一套构建方法的两个数据集:WikiHop(基于 Wikipedia,从 Wikidata 恢复事实,277 种查询关系)与 MedHop(基于 Medline,恢复药物相互作用,1 种查询关系)。二者共享 arXiv 编号 1710.06481、共享 TACL 论文、共享 Zenodo 包 qangaroo_v1.1.zip,也共享那个著名的双口径精度争议(坑 1)。

§0 读法三则:

  1. 这个条目是"数据集 + 构建方法论 + 评测基准"三合一:本体是 2,508 例多跳查询,方法论是远监督 + 二部图 + masking 三步,基准是 Table 5/7 的基线矩阵。
  2. 全文数字凡涉及精度,一律先问"这是 MedHop 还是 WikiHop"“这是 original 还是 masked”“这是 test 还是 test*”——四元组不同,数字差一倍不奇怪。
  3. 检索 MedHop 时若只搜到 WikiHop 的 43,738 条训练样本,那是搞混了——MedHop 的 train 只有 1,620 条(坑 2)。

§1 数据集速览:十问十答

Q1:MedHop 到底是个什么数据集?
一个跨文档多跳阅读理解评测基准。每条样本给定一个药物相互作用查询(如「Leuprolide 与哪种药相互作用?」)与一组 Medline 摘要,要求模型从一组候选药物里选出正确答案。答案不是从某段文本里抽出来的 span,而是需要把散落在多篇摘要中的证据(药物靶点、蛋白通路、另一药物)串成一条链才能确定。

Q2:为什么叫 MedHop?"Hop"指什么?
“Hop"指推理的跳数。多跳(multi-hop)意味着从查询到答案要经过若干中间步骤,每跨一次中间实体算一"跳”。MedHop 的最小证据链是"药物→靶点蛋白→蛋白→另一药物"四步三跳,比单跳阅读理解多出整个中间推理环节。论文标题 “Multi-hop Reading Comprehension Across Documents” 里的 “Across Documents” 则强调这些跳跨的是不同文档。

Q3:规模有多大?
论文 Table 1 口径:train 1,620 / dev 342 / test 546,合计 2,508 例。但公开可下载的只有 train+validation,即 1,962 例——test(546)由官方保留用于盲评(坑 3)。

Q4:每条样本长什么样?
四个字段。query:单一类型的药物相互作用查询;candidates:类型一致的候选药物列表,平均 8.9 个,多数样本恰好 9 个;supports:支持文档集合,来自 Medline 2016 的摘要,平均每样本 36.4 篇、中位数 29 篇、上限 64 篇;answer:正确候选。此外 masked 变体把所有候选实体替换成 MASK7 之类的唯一占位符 token。

Q5:谁做的、什么时候?
University College London(UCL)计算机系的 Johannes Welbl、Pontus Stenetorp 与 Sebastian Riedel(后者同时隶属 Bloomsbury AI)。arXiv 初版 2017 年 10 月,TACL 正式发表 2018 年(Vol 6, pp. 287-302)。

Q6:数据是怎么造出来的,是人工标注的吗?
不是。MedHop 由**远监督(distant supervision)**自动构建:用 DrugBank(药物-靶点)、Reactome(蛋白-蛋白相互作用)、Swiss-Prot(人类蛋白)三个结构化知识库做"出题骨架",再用精确字符串匹配把这些事实投射到 Medline 摘要上,构建二部图后游走生成查询-候选-文档三元组。论文只对 dev 集抽样标注 100 条做定性质量分析,不存在全量人工标注(坑 4)。

Q7:候选和文档的统计特征是什么?
按论文 Table 2(训练集口径):候选数 min 2 / max 9 / avg 8.9 / median 9;文档数 min 5 / max 64 / avg 36.4 / median 29;每文档 token 数 min 5 / max 458 / avg 253.9 / median 264。平均每样本含 59.8 条唯一文档路径。与 WikiHop 相比,MedHop 是"候选少、文档多",WikiHop 是"候选多、文档少"——这一结构差异直接决定了两个数据集的难度重点不同。

Q8:masked 版本是干什么的?
缓解答案候选频次失衡。在知识图谱里,不同药物的相互作用数量差异极大——Aspirin 与 743 种药物相互作用,Isotretinoin 只有 34 种。如果不处理,模型完全可以靠"哪个候选是高频药就选哪个"来作弊。masked 版本把候选实体替换为 100 个唯一占位符 token(如 “MASK7”),既抹掉频次线索,也抹掉"高频答案字符串↔支持文档"的统计相关性。效果立竿见影:Majority 基线在未 masking 时是 58.4%(test),masking 后崩到 10.4%。

Q9:精度到底是多少?
这是本条目最需要小心的地方。arXiv v2 摘要说"最佳 42.9%,人类 74.0%“;TACL/ACL 终版摘要说"最佳 54.5%,人类 85.0%”。两个数都对,但指的都不是 MedHop 自身——42.9 与 54.5 精确对应的是 WikiHop 的 BiDAF 在两个口径下的 test 精度。MedHop 自身最佳是 Table 5 的 BiDAF(standard,未 masking)47.8%(test)/ 61.2%(test*)。引用时务必区分(坑 1)。

Q10:和库内已有的医学问答数据集有什么不同?
库内 medqa(50)、medmcqa(111)、pubmedqa(49)、medicationqa(170) 都是单跳任务:证据在单段文本或单个问题里,答案是抽取或选择。MedHop 是库内首个多跳推理条目——它的难点不在"读懂一句话",而在"在 36 篇文档里找到并把几段证据连起来"。与它主题最接近的是 ddi(171)(药物-药物相互作用数据集),但 ddi 面向关系抽取/分类,MedHop 面向跨文档多跳阅读理解的候选选择——任务形态不同(§9 详述)。

§2 数据构成与规格

MedHop 的规格必须从两个层次看:论文口径(Table 1、Table 2 的原始统计)与分发包口径(qangaroo_v1.1.zip 与 Hugging Face 托管版本)。两者并不矛盾,但若不区分,极易在多处数字上说出"自相矛盾"的话。本节先给出分片规模,再逐字段拆解,最后给出统计分布与体量数字。

§2.1 分片规模

分片 论文 Table 1 口径(MedHop) 是否随包发布
train 1,620 是
dev(论文中常写作 development / validation) 342 是
test 546 否(官方保留盲评,坑 3)
合计 2,508 发布的是 1,962

需要特别当心的是"2,508"这个总数只是论文汇总口径。任何声称"下载后得到 2,508 条 MedHop 样本"的说法都是错的:官方压缩包与 Hugging Face 镜像都只含 train + dev。这一点在对照 QAngaroo 的另一半 WikiHop 时尤其要留意——WikiHop 的分片是 train 43,738 / dev 5,129 / test 2,451,合计 51,318,与 MedHop 相差一个数量级(坑 5)。

§2.2 样本字段定义

MedHop 的样本结构与 QAngaroo 系列完全一致,共四个核心字段加一个可选变体字段。下表给出官方 JSON 结构中每个字段的语义、类型与工程含义。

字段 类型 语义 工程含义与注意事项
query string 单一类型的药物相互作用查询句 模板化生成,句式高度规整;不含答案实体本身
candidates list[string] 类型一致的候选药物列表 全部候选与答案同属"药物"实体类型;长度多为 9
supports list[string] 支持文档集合(Medline 2016 摘要) 每篇文档带标题;平均 36.4 篇,上限 64 篇
answer string 正确候选 恒为 candidates 中一员,不存在"无答案"样本
answer_position int 答案在候选列表中的下标 由官方或转换脚本提供;用于评估定位与去偏

在 Hugging Face 的 bigbio/medhop 转换版本中,字段被重新组织为 id / question / context / answers 这样的 BigBIO 通用 schema,文档被折叠进 context 列表,答案以列表形式给出。做跨平台复现时必须以字段映射表为准,切勿假定两边列名一致——这是把官方 JSON 直接喂给只认 BigBIO schema 的 pipeline 时最常见的失败点。

§2.3 统计分布(Table 2 训练集口径)

论文 Table 2 给出的分布数字是理解 MedHop 难度结构的关键。一个反直觉之处是:候选数很集中,文档数却很分散。

统计量 候选数 文档数(supports) 每文档 token 数
min 2 5 5
max 9 64 458
平均 8.9 36.4 253.9
中位数 9 29 264

读表要点有三:

  1. 候选数中位数为 9、上限也只有 9,说明多数样本就是一个"九选一"的选择题;但 min 为 2,说明少数样本只有两个候选,随机基线在这些样本上会天然偏高。
  2. 文档数跨度极大(5–64),平均 36.4 而中位数只有 29,说明分布右偏——少数"大样本"把均值拉高了。做长度归一化或批处理显存估算时,用中位数比用均值更稳。
  3. token 上限被截断在 458 附近,这是构建流水线主动施加的限制(单文档最多 300 token 正文加标题,详见 §3.5),不是 Medline 摘要的自然长度。

平均每个样本包含 59.8 条唯一文档路径(unique document paths)。这个数大于文档数均值 36.4,是因为同一条路径可能被多次访问、同批文档在不同样本间重用——它衡量的是"样本-文档"连接的总量,而非去重后的文档库存。

§2.4 original 与 masked 两个 config

MedHop 随包提供两个并行版本,在 Hugging Face 上对应两个 dataset config:

config 特征 用途
medhop(原始版) 候选实体为真实药物名(如 “Aspirin”) 常规评估;但存在答案频次线索
masked_medhop(掩码版) 候选实体替换为 100 个唯一占位符 token(如 MASK7) 消除频次线索,检验模型是否真在推理

掩码的规则是:同一样本内同一实体映射到同一占位符(保证样本内一致性),跨样本则一般映射不同(切断跨样本的实体身份相关性)。这样设计后,"Aspirin 高频因而更可能是答案"这条捷径被彻底斩断——但这并不意味着条件分布上占位符完全均匀,因为掩码保留了样本内有区分度的候选结构,只是抹掉了真实身份(坑 6)。

需要强调:masked 版本不是另一份独立数据集,而是同一批样本的视图变换。比对两版指标时,样本数、分片划分、文档集合完全相同,可以直接对照。

§2.5 分发包体量与托管口径

MedHop 的官方发布载体是 qangaroo_v1.1.zip:

项 值
文件名 qangaroo_v1.1.zip
大小 339.8 MB
MD5 dd4f65d2f73244c0946b5810e24a8e43
内含 MedHop 与 WikiHop 两套数据(train + dev)
官方站 http://qangaroo.cs.ucl.ac.uk/
永久归档 Zenodo records/6407401

在 Hugging Face 侧,bigbio/medhop 提供转换后的托管版:

项 值
dataset_size(medhop) 110,398,906 B(约 105 MB)
dataset_size(masked_medhop) 112,614,098 B(约 107 MB)
行数标注 “Number of rows: 3,924”
许可 cc-by-sa-3.0

这里出现了一个必须点破的口径差:论文说 1,620 + 342 = 1,962 条,而 HF 页面标注 3,924 行。3,924 恰好是 1,962 的整数倍(×2)——原因是 BigBIO 版本把每条样本按答案实例展开(或同时计入 original 与 masked 两种表述),从而在"行"这一粒度上翻倍。因此:

  • 说"MedHop 共 1,962 条可下载训练/验证样本"——对(论文口径);
  • 说"bigbio/medhop 数据集共 3,924 行"——也对(HF 行口径);
  • 说"MedHop 有 3,924 条样本"——错(把行数误当样本数,坑 7)。

引用时务必带上口径来源(论文 Table 1 / HF dataset card),否则三层数字会被读成互相矛盾。


§3 构建流水线

MedHop 的价值不只在数据本身,更在于它示范了一套用结构化知识库自动造多跳题的可复用流水线。整套方法的核心是远监督:让知识图谱当"出题人",让语料当"证据库"。

§3.1 上游知识库

构建 MedHop 用到三个结构化知识库,各司其职:

知识库 提供的关系 在流水线中的角色
DrugBank 药物-靶点(drug–target) 建立"文档 ↔ 药物"边、生成查询的起点与候选
Reactome 蛋白-蛋白相互作用(pathway) 提供中间跳;证实蛋白-蛋白之间存在可信连接
Swiss-Prot 人类蛋白条目 归一化蛋白身份,保证中间实体是"真实存在的人类蛋白"

三者形成一条可走通的链条:药物(DrugBank 有靶点)→ 靶点蛋白(Swiss-Prot 归一化)→ 蛋白与蛋白有相互作用(Reactome 证实)→ 另一药物(也来自 DrugBank)。这就是 MedHop 最小证据链"四步三跳"的骨架。

§3.2 语料侧

文档侧用的是 Medline 2016 的摘要集合。选它有三个理由:

  1. 规模足够:Medline 是生物医学文献的权威索引,摘要数量庞大,能保证二部图有足够的边可走;
  2. 领域匹配:药物、靶点、蛋白的表述在生物医学文献里高频出现,精确字符串匹配的召回率可观;
  3. 可引用、可复现:2016 快照固定,避免"语料随时间漂移"导致的不可复现问题。

把知识图谱事实投射到语料上用的是精确字符串匹配——只有当一个实体名在摘要里以精确形式出现时才建立连接。这一步牺牲了召回(同义词、缩写会漏),但换来了精度与可解释性:每条边都能指回一个具体的字符串匹配位置,不依赖不透明的实体链接模型。

§3.3 二部图构建

MedHop 把"实体"和"文档"建成一个二部图(bipartite graph),边分三类,方向语义各不相同:

边类型 方向 建立条件
文档 → 蛋白 无向 摘要中出现该蛋白名(精确匹配)
文档 ↔ 药物 双向 摘要中出现药物名,且该药物-靶点关系在 DrugBank 口径下成立
蛋白 → 文档 单向可达 需 Reactome 证实该蛋白与另一蛋白存在相互作用

三类边合起来,使得"从药物出发 → 找到含它的文档 → 从文档跳到蛋白 → 从蛋白跳到另一蛋白 → 再落到含另一药物的文档 → 得到另一药物"这条路径在图上成为可行游走。这正是多跳的图论表达:每一跳都是图上一次边转移。

§3.4 游走与出题

在图上以 drug1(查询药物)为起点做游走,找到可达的另一药物作为答案候选,沿途经过的文档就是 supports 集合。游走策略的关键约束是路径数配平:

  • 保证所有候选实体对应的可达路径数量大致相同;
  • 避免"某个候选天然有更多证据文档"造成的结构性偏置(否则模型可以靠文档计数作弊)。

这一步是 MedHop 相比朴素负采样最关键的设计——它不是随机塞负候选,而是让正负候选在图结构层面尽量对称。

§3.5 降采样

原始图上的游走会产生大量超长、超宽的样本。MedHop 施加了三条降采样/截断规则:

规则 阈值 目的
排除支持文档过多的样本 支持文档 > 64 的样本被剔除 控制单样本上下文规模
文档长度上限 每篇正文最多 300 token(另计标题) 控制显存与推理成本
路径数配平后采样 按可行路径数归一 消除候选间证据量偏置

这三条规则直接解释了 §2.3 里"文档数上限 64""token 上限 458"的来历——它们是人工设定的工程边界,不是语料的自然统计。理解这一点,就能明白为什么拿 MedHop 的 token 分布去推断 Medline 摘要长度是错的。

§3.6 masking

最后一步是把原始版变换成 masked 版。动机在 §1 Q8 已述:知识图谱中不同药物的相互作用数量差异悬殊(Aspirin 743 种 vs Isotretinoin 34 种),若不处理,"选高频药"就是一条无需阅读文档即可得高分的捷径。

掩码实现:为每个样本构造一个候选实体到占位符 token 的双射,占位符从 100 个唯一 token(MASK1 … MASK100 等)中取;样本内一致、跨样本一般不同。论文报告这一步显著拉低了 Majority 基线——从 standard test 的 58.4% 崩到 masked 的 10.4%(坑 6 详述其边界)。

§3.7 流水线一图流

DrugBank ─┐
Reactome ─┼─→ 事实骨架 ─→ 精确串匹配投射 ─→ Medline 2016 摘要
Swiss-Prot┘                                        │
                                                   ▼
   drug1 起点 ─→ [二部图:文档↔药物 / 文档—蛋白 / 蛋白→文档] ─→ 游走
                                                              │
                        ┌─────────────────────────────────────┘
                        ▼
              路径数配平 ─→ 降采样(≤64 文档 / ≤300 token) ─→ 出题
                                                              │
                                              ┌───────────────┴───────────────┐
                                              ▼                               ▼
                                        medhop(原始)                  masked_medhop

这条流水线的可复用之处在于:换一个知识库 + 换一套语料,就能造出领域化的多跳数据集。这也是 MedHop 常被当作"多跳数据集构造范本"引用的原因。


§4 任务与标注

§4.1 任务形式定义

MedHop 的任务可以形式化表述为:

给定查询 q(一个药物相互作用问题)、候选集合 C = {c₁, …, cₙ}、支持文档集合 S = {d₁, …, d_m},求正确候选 a ∈ C。

与标准阅读理解的关键区别:答案是候选选择,不是文本抽取。模型输出的不是答案在文档中的起止位置,而是候选列表中的一个元素下标。这意味着 MedHop 天然是多选式评测,指标用 accuracy 而非 EM/F1 span 匹配。

§4.2 为什么是"跨文档"

单跳阅读理解(如 SQuAD 风格)中,答案通常能在一段连续文本里找到。MedHop 刻意把证据拆到多篇摘要里:

  • 药物 A 出现在文档 d₁;
  • A 的靶点蛋白出现在 d₂;
  • 该蛋白的工作伙伴蛋白出现在 d₃;
  • 伙伴蛋白的相互作用药物 B 出现在 d₄。

答案 B 并不在 d₁ 里,d₁ 里只有"起点" A。模型必须先认出 A 的靶点,再把靶点跳到伙伴蛋白,最后落到 B——任何一步缺失都无法得到答案。这就是"Across Documents"的字面含义。

§4.3 一条走通的多跳实例(结构示意)

query:  "Leuprolide 与下列哪种药物存在相互作用?"(示意)
candidates: [ …, "答案药物", … ]              ← 同类型药物候选
supports:
  d₁  提到 Leuprolide 及其靶点 GNRHR
  d₂  提到 GNRHR 与某下游蛋白的相互作用(Reactome 证实)
  d₃  提到该下游蛋白与"答案药物"相关联
answer: "答案药物"

读法要点:supports 里没有一篇文档同时包含 Leuprolide 与答案药物。如果你能用"关键词共现"在单篇文档里找到答案,那条样本要么是简单题,要么是构建噪声。

§4.4 负候选的设计

候选里的错误项不是随机词,而是与正解同类型的药物实体。设计逻辑是:如果负候选与正解类型不同,模型可以靠"类型判断"排除,题目就退化成类型分类;只有让所有候选同属药物类型,模型才被迫进行真正的证据推理。这也是 §3.4 路径数配平存在的理由——同类型还不够,还要证据量对称。

§4.5 无人工标注与定性质量分析

MedHop 的一个关键性质:全量自动构建,没有人工标注。这带来两个后果:

  • 优点:规模可控、成本极低、可流水线复制、标注一致性由结构决定而非标注员主观;
  • 风险:字符串匹配会引入"假连接",自动生成的答案偶尔会与某些摘要的语义相悖。

为核实质量,论文对 dev 集抽取 100 条做人工定性分析。请注意这 100 条是质量抽查,不是训练标签,也不是全量标注——把"100 条人工检查"说成"人工标注了 100 条"是常见误读(坑 4)。

§4.6 任务形态小结

维度 MedHop 的取值
任务类型 跨文档多跳阅读理解(多选式)
输入 query + candidates + supports
输出 候选下标 / 候选实体
评测指标 accuracy
标注方式 远监督自动构建(无人工标注)
变体 original / masked

把这张表记牢,就能在与库内其他医学问答数据集对比时,一眼看出任务形态差异(§9 展开)。

§5 评估与基准:谁在这道题上拿到了多少分

评估一节是本条目最容易被二手转述污染的部分。MedHop 的精度数字在网络上流传着至少两套互不相容的口径(§5.5 详解),而且两套都不是凭空捏造——它们各有出处,只是指代的数据集不同。因此本节的处理原则是:先把口径的坐标系钉死,再报数字。

§5.1 评测协议与唯一指标

MedHop 是定候选多选任务,评测指标只有一个:accuracy(准确率),即模型选中的候选与 answer 一致的样本占比。

请注意这不是常识问答那套 EM/F1。原因很直接:候选集合是有限且给定的,模型不需要生成自由文本,只需要在 2–9 个候选里排名或指认;既然答案空间是封闭的,EM(精确匹配字符串)和 F1(词级重叠)就都退化了——生成一个与 gold 同义的药名,F1 可能很高但 EM 为 0,这不反映任务能力。对多选任务报 F1 是一个方法论错误,除非明确说明是在做"候选集合上的排序指标"变体。

论文同时报两列结果:

  • test:全部 546 条测试样本;
  • test*:测试集中经过验证的子集(题面更干净、质量更有保证的那部分)。

论文的正式比较以 test* 为准,因为它排除了自动构建引入的噪声样本。这是远监督数据集的通用做法:既然标签不全可信,就把"确信正确"的那部分单列出来看,否则所有模型都被同一个噪声地板压住,无法区分强弱。

在引用 MedHop 数字时,必须同时说清是 test 还是 test*、是 original 还是 masked。只写"BiDAF 47.8"而不写口径,是信息量接近于零的引用。

§5.2 Table 5 全表:未 masking 与 masked 的双栏对照

论文 Table 5 是 MedHop(及 WikiHop)的主结果表。MedHop 的全部数字如下,我把 standard(original,未 masking)与 masked 两个口径并排放,右栏才是可比较的口径——原因见 §5.4。

基线方法 类型 standard test standard test* masked test masked test*
Random 随机 13.9 20.4 14.1 22.4
Max-mention 频次启发式 9.5 16.3 — —
Majority-candidate-per-query-type 频次启发式 58.4 67.3 10.4 6.1
TF-IDF 词汇检索 9.0 14.3 — —
Document-cue 文档线索启发式 44.9 53.1 — —
FastQA 神经 RC 模型 23.1 24.5 31.3 30.6
BiDAF 神经 RC 模型 47.8 61.2 33.7 42.9

("—"表示论文该栏未报该基线。表中 test* 是 MedHop 的已验证子集。)

这张表有三个反直觉之处,每一个都值得单独拎出来讲。

§5.3 三个反直觉之处

反直觉之一:TF-IDF 打不过随机。 TF-IDF 是 9.0 / 14.3,随机是 13.9 / 20.4——词汇检索基线显著低于随机猜测。这不是实现 bug,而是任务性质的直接体现:MedHop 的答案药物与查询药物几乎不在同一篇摘要里共现(§4.3 已述)。词汇匹配的前提是"答案与问题共享词汇",而这个前提在跨文档多跳任务里根本不成立。TF-IDF 低于随机,说明它不只是没帮上忙,而是系统性地被误导——它会被那些高频提到 query 药物但不含答案链的文档带偏,选出一个比随机还差的候选。

这是一个很好的教学点:当你的检索基线低于随机时,问题往往不在于检索器弱,而在于任务假设与检索假设不匹配。

反直觉之二:Majority 基线在未 masking 时强得离谱。 Majority-candidate-per-query-type 拿到 58.4 / 67.3,是所有非神经模型里最强的,甚至超过了未 masking 的 BiDAF(47.8 / 61.2)。这暴露了一个严重的问题:如果不做处理,模型完全可以不看文档,只靠"哪个候选在全局统计上更常出现"就拿到高分。

背后的机制是药物交互数的长尾分布:Aspirin 与 743 种药物有已知相互作用,而 Isotretinoin 只有 34 种。在自动构建的样本里,交互数多的药物成为正确答案的概率天然更高。Majority 基线就是把这个先验直接背下来。"不需要读文档就能及格"的基准,测的不是阅读理解能力。 这就是 masking 变体存在的全部理由。

反直觉之三:神经模型在未 masking 时被启发式压制。 FastQA 23.1 / 24.5,BiDAF 47.8 / 61.2。BiDAF 尚可,但 FastQA 甚至不如 Random 的 test* 表现(20.4)。这说明当时(2018 年)的单文档 RC 模型迁移到跨文档多跳场景会严重失效——它们的设计假设是"答案在给定的一段文本里",而 MedHop 恰恰违背这一假设。论文用这些数字论证的正是:多跳任务需要新的架构,不是把单跳模型拿来堆叠就行。

§5.4 masking 口径下重新看一遍

Masked 变体把候选实体替换为 100 个唯一占位符 token(如 MASK7),从而切断"答案字符串频次"这条捷径。对照上表右栏,变化是清晰的:

  • Majority 从 58.4 / 67.3 崩到 10.4 / 6.1——比随机(14.1 / 22.4)还差。这正是设计者想要的:频次先验被彻底切断,Majority 退化为"猜一个占位符",而占位符是唯一化的、没有任何频次信息可用。
  • FastQA 反而从 23.1 / 24.5 升到 31.3 / 30.6,BiDAF 从 47.8 / 61.2 降到 33.7 / 42.9。

第二点是全表最微妙的地方:masking 对不同模型的影响方向相反。BiDAF 的下降说明它原本部分依赖了候选字符串的频次线索(masking 拿走后就掉分);FastQA 的上升则更耐人寻味——FastQA 原本可能被"真实药名"里的词汇线索干扰(比如药名本身携带词形信息,诱导模型做浅层匹配),替换成占位符后这个干扰源消失了,它被迫去看文档结构和位置,反而做对了更多题。

结论:masked 口径下的排名(BiDAF 42.9 > FastQA 30.6 > Random 22.4 > Majority 6.1)才是反映"真实多跳推理能力"的排名。 这是本条目主张的引用口径。

§5.5 双口径冲突全解:42.9 / 74.0 与 54.5 / 85.0 到底是谁

这是 MedHop 条目必须存照的核心冲突,也是网络上转述最乱的地方。

冲突事实:

  • arXiv 版摘要(1710.06481 v2):“their best accuracy reaches 42.9% compared to human performance at 74.0%”
  • TACL / ACL Anthology 终版摘要(Q18-1021,与 Zenodo 描述一致):“their best accuracy reaches 54.5% on an annotated test set, compared to human performance at 85.0%”

同一篇论文、同一批作者,两个版本的摘要给出了两组不同的数字。如果不加辨析地引用,就会得到一篇自相矛盾的条目。

真相(本条目结论):这两组数字根本不是 MedHop 的成绩,而是 WikiHop(QAngaroo 的开放域姊妹数据集)的 BiDAF 成绩,分别对应它的两个口径:

  • 42.9 = WikiHop 的 BiDAF standard test
  • 54.5 = WikiHop 的 BiDAF masked test
  • 74.0 / 85.0 则是对应的 WikiHop 人类表现

对照 Table 5 中 WikiHop 的 BiDAF 行:standard test 42.9 / masked test 54.5——两个数字精确对上。也就是说,arXiv v1/v2 摘要引用的是未 masking的 WikiHop 数字(42.9 / 74.0),而 TACL 终版改用了masked 且经人工标注测试集的数字(54.5 / 85.0)。终版的口径更严格(masked + annotated test),因此被论文定稿采用。

那么 MedHop 自己的最佳成绩是多少? 是 Table 5 中 BiDAF standard 的 47.8(test)/ 61.2(test*),或 BiDAF masked 的 33.7(test)/ 42.9(test*)——注意这里 42.9 作为一个数字重复出现了第二次,但它这次指的是 MedHop BiDAF masked test*,与 §5.5 开头的 WikiHop masked test 42.9 是两个不同数据集的巧合同值。这是天然的混淆陷阱,见坑 6。

引用纪律:

写"MedHop 最佳精度 54.5%“是错的——54.5% 是 WikiHop 的。写"MedHop 最佳精度 47.8%”(标明 BiDAF / standard / test)才是对的。

本条目全文以 TACL 终版摘要(54.5% / 85.0%)为摘要级引用,但在任何涉及 MedHop 本体性能的地方,一律使用 Table 5/Table 7 的 MedHop 专属数字。

§5.6 人类表现与天花板

TACL 终版给出的人类表现是 85.0%(WikiHop 标注测试集口径);arXiv 版给的是 74.0%(WikiHop 未标注口径)。两者的差异同源于上面那套口径更换。

人类表现的测量方式(WikiHop 侧披露的标注框架):对每个样本由多名标注者独立作答,取多数投票,并同时标注"该题是否真的需要多跳""是否存在多个合理答案"等元信息。论文披露的 WikiHop 质量问题分布是:

问题类别 占比
真正的多步答案(unique multi-step answer) 36%
可能需要多步(likely multi-step) 9%
存在多个合理答案(multiple plausible answers) 15%
上下位词歧义(hypernymy ambiguity) 11%
单文档即可作答(single doc required) 9%
答案不由文本推出(answer does not follow) 12%
Wikidata-Wikipedia 不一致 8%

这张表的意义在于:"多跳阅读理解"作为一个标签本身只有约 45%(36%+9%)的样本严格成立。约 9% 的样本单文档就能做(对多跳基准是"送分题",应剔除),约 12% 的样本答案根本推不出来(噪声),15% 存在多解(严格说评分本身有歧义)。

这构成了多跳 RC 数据集的一个固有天花板。 MedHop 因为是全自动远监督构建(§4.5),其噪声水平不会低于人工构建的 WikiHop——因此对 MedHop 报"某某模型达到 90%+"时应当高度警惕:那要么是过拟合了噪声,要么是口径错误。

同时要注意 100 条这个数字:论文的质量分析是在每个 dev 集上抽样 100 条做定性检查,不是全量标注。把"抽样 100 条人工检查"转述成"人工标注了 100 条训练数据"是常见误读(坑 4)。

§5.7 gold chain:把最难的一环单独拆出来

论文 Table 7 做了一个诊断性实验:不把全部文档喂给模型,而是只给包含答案候选的那些文档(gold chain / gold documents),看性能变化。

模型 全文档 standard gold chain standard 全文档 masked gold chain masked
BiDAF 47.8 / 61.2 86.4 / 89.8 33.7 / 42.9 99.3 / 100.0
FastQA 23.1 / 24.5 54.6 / 59.2 31.3 / 30.6 51.8 / 55.1

(单元格格式:test / test*)

读法:BiDAF 从 47.8 拉到 86.4(standard),masked 下更是从 33.7 拉到 99.3 / 100.0。这说明——一旦告诉模型"证据在这几篇里",它几乎能完美作答;真正的困难在于从平均 36.4 篇文档中挑出那几篇相关的。

这是一个对任务难度归因极为重要的结论:

  • 难的不是最终的语义判断(gold chain 下 99.3–100.0 证明这一步近乎解决);
  • 难的是证据定位 / 文档选择 / 跨文档证据链的组装。

因此 MedHop 对后续研究的实际指引,是把注意力引向检索与证据聚合,而不是继续卷答案分类器。这个结论直接启发了后来的一大票"稀疏检索 + 多跳聚合"架构(§7 展开)。

注意 FastQA mask 的 gold chain 只有 51.8 / 55.1,远低于 BiDAF mask 的 99.3 / 100.0——说明 FastQA 即便拿到正确文档也无法有效利用,它的瓶颈在编码与推理,而非证据定位。同一个 gold chain 实验,对两个模型给出了完全不同的诊断结论,这正是诊断性实验的价值。

§5.8 第三方基准与后续 SOTA

MedHop 作为基准被持续用于药物-药物相互作用(DDI)多跳推理的模型评测。已核实的第三方报告:

  • MedKGQA(arXiv:2212.09400 / IET Cognitive Computation and Systems,DOI 10.1049/cit2.12332)在 MedHop 上报告 64.8% accuracy,相对其前序 SOTA 提升 4.5%;消融实验显示移除知识融合模块后精度掉 15.5%——这从侧面支持了"外部结构化知识对多跳 DDI 推理是必要的"这一判断(与 MedHop 自身的构建哲学一致:它的标签本来就来自 DrugBank/Reactome)。
  • MedKGQA 明确使用 train/dev/test = 1620/342/546 的官方划分口径,并明确指出 test 集不公开、由官方委员会盲评。

需要注意 64.8% 与 §5.2 表中数字不可直接比:MedKGQA 的口径(是否 masking、是否 test*、是否用了外部知识)需要在原文核对后才能与 BiDAF 47.8 并列。跨论文比较 accuracy 而不对齐口径,是多跳 QA 文献里最常见的引用错误。

§5.9 关于 leaderboard 的一个诚实说明

本条目未发现 MedHop / QAngaroo 有公开的实时 leaderboard 页面。官方站 qangaroo.cs.ucl.ac.uk 提供数据与样例展示,下载指向 Zenodo,但没有公开的排行榜提交机制。测试集由官方保留、按需盲评(第三方论文明确声明 test 不可公开获取)。

因此:"MedHop 榜单第一"这类表述应当避免——不存在可核验的公开榜单。正确表述是"在 MedHop 官方测试集划分上报告的 accuracy"。这是一个信息卫生问题,不是细节问题。

§5.10 评估小结

问题 答案
唯一指标是什么 accuracy(定候选多选)
有几个口径 2×2:{standard, masked} × {test, test*}
该引用哪个 能力比较用 masked;与论文数字对齐用 standard 并标明
MedHop 自身最佳 BiDAF standard 47.8(test)/ 61.2(test*)
摘要里的 54.5 是谁 WikiHop BiDAF masked test,不是 MedHop
人类表现 85.0%(WikiHop 标注测试集口径)
最难的一环 证据定位(gold chain 下 BiDAF 达 86.4 / 99.3)
有公开 leaderboard 吗 无

§6 获取与许可:怎么把数据拿到手,以及拿到后能干什么

§6.1 三个官方入口

MedHop 不是独立发布的数据集,它总是与 WikiHop 一起打包在 QAngaroo 这个项目包里。这一点决定了所有获取路径的形态:你下载的是 QAngaroo,里面同时有 medhop 和 wikihop。

入口一:Zenodo(推荐,权威 + 可长期引用)

  • 记录页:https://zenodo.org/records/6407401
  • 标题:“QAngaroo (MedHop + WikiHop)”
  • 版本:v1.0.0,Published 2018-06-11,Modified 2022-04-02
  • 文件:qangaroo_v1.1.zip,339.8 MB
  • MD5:dd4f65d2f73244c0946b5810e24a8e43
  • Zenodo 统计(抓取时点 2026-09-30):views 581 / downloads 103 / data volume 43.8 GB

下载后务必校验 MD5。Zenodo 提供的是永久归档,配 DOI(数据集有自己的 Zenodo DOI,与论文 DOI 10.1162/tacl_a_00021 不同,两者都要在引用里写明)。339.8 MB 是个不算小的包,网络中断导致的半包文件在解压时往往给出误导性的错误,先校验再解压。

入口二:官方项目站

  • http://qangaroo.cs.ucl.ac.uk/
  • 提供任务说明、格式样例、样例展示(在 2026-09-30 抓取时站点仍在线并返回正常内容)。
  • 站点不直接托管数据,下载链接指向 Zenodo——所以实际文件来源就是入口一。

入口三:HuggingFace(最方便,但只覆盖部分子集)

  • bigbio/medhop:BigBIO 生态的封装版本,gated=false(无需申请),lastModified 2022-12-22,downloads 102 / likes 3。
    • 只发布 train 1,620 + validation 342,不含 test。
    • 字段:id / question(原始字段名为 query)/ answer / candidates / supports。
    • HF 卡片显示 “Number of rows: 3,924”,这不是 1,962 的笔误——它是 original + masked 两个 config 的合计(1,962 × 2 = 3,924),见坑 5。
  • QAngaroo/med_hop:保留原始生成脚本的仓库(其 _URL 指向一个 Google Drive 的历史遗留下载入口,该入口是否仍可用需自行验证)。
  • community-datasets/qangaroo:包含 四个 config——medhop、wikihop、masked_medhop、masked_wikihop,是唯一在 HF 上同时提供 original 与 masked 的研究友好入口。

入口四(镜像):OpenDataLab(opendatalab.com/MedHop)提供 537.9 MB 的镜像。注意体量差异:Zenodo 是 339.8 MB(MedHop+WikiHop 压缩包),OpenDataLab 是 537.9 MB(疑为解压后或含预处理),两者不等价,不要据此推断数据版本不同(§9 存照)。

§6.2 用 HuggingFace datasets 加载

用 community-datasets/qangaroo 可以一条命令拿到四个 config:

from datasets import load_dataset

# 医学域,原始(未 masking)——注意这是 QAngaroo 项目下的 medhop 配置
medhop = load_dataset("community-datasets/qangaroo", "medhop")
print(medhop)
# DatasetDict({train: 1620 行, validation: 342 行})

# 医学域,masked 变体(候选替换为 MASKxx 占位符)
masked = load_dataset("community-datasets/qangaroo", "masked_medhop")
print(masked)
# DatasetDict({train: 1620 行, validation: 342 行})

# 取一条看看结构
sample = medhop["train"][0]
print(sample.keys())        # query / candidates / supports / answer / answer_position
print(sample["query"])      # ['Leuprolide', 'interacts_with', '?']
print(sample["answer"])     # 正确答案药物名
print(sample["candidates"]) # 2–9 个同类型候选药物
print(len(sample["supports"]))  # 平均约 36.4 篇摘要

三个实操提醒:

  1. 字段名在不同封装里会变。原始 QAngaroo JSON 用 query;bigbio/medhop 把它重命名为 question;而 community-datasets/qangaroo 保留 query。读到 question 字段时不要以为拿到了别的数据——那只是包装差异(§2.2 已述)。写代码前先 print(sample.keys()),不要靠记忆。
  2. answer_position 是候选列表中的下标,用它可以快速取出 gold 候选;但要注意不同封装的下标基准与 candidates 顺序是否一致,跨封装混用时必须重新按字符串匹配答案,不能直接搬下标。
  3. supports 是文档列表,每篇是一段摘要文本(含标题,长度上限 300 token + 标题)。不要假设 supports[0] 就是答案所在文档——顺序与相关性无关;gold chain 实验(§5.7)恰恰证明模型需要自己找出哪几篇真正相关。

§6.3 许可:CC BY-SA 3.0 与"相同方式共享"的实际含义

MedHop / QAngaroo 的数据集许可证是 CC BY-SA 3.0:

  • Zenodo 记录原文:“The datasets are released under CC BY-SA 3.0”
  • HuggingFace bigbio/medhop 的 license tag 为 license:cc-by-sa-3.0
  • 这与本站其他医学数据集常见的 CC BY 4.0 / CC0 不同,必须单独注意。

CC BY-SA 3.0 的两项核心义务:

  1. BY(署名):使用、分发、改编时必须给出适当署名,附许可证链接,并说明是否做了修改。在数据集场景下,署名应至少包含:作者(Welbl, Stenetorp, Riedel)、数据集名(QAngaroo / MedHop)、出处(TACL 2018 论文 + Zenodo DOI)。
  2. SA(相同方式共享 / ShareAlike):**如果你基于该数据做了改编、衍生数据集或再分发,你的衍生作品必须以相同或兼容的许可证发布。**这一条比 CC BY 严格得多,实际影响是:
  • ✅ 可以做:学术研究、模型训练、评测、在论文中报告结果、把数据用于商业产品的内部训练流程(在多数法域下,训练行为本身不构成"分发衍生作品",但这属于需要法律意见的灰区,本站不作法律断言)。
  • ⚠️ 要小心:**把 MedHop 的改编版(清洗过、重切分过、扩充过)以更宽松的许可证发布,是不行的。**你的衍生数据必须同样 CC BY-SA(或兼容许可)。想把衍生数据放到 CC0 / MIT 下面,需要先取得权利人授权。
  • ⚠️ 要小心:把 MedHop 的样本内嵌进另一个数据集的发布包里再分发,整体发布包会受 SA 传染性影响。
  • ✅ 中立:用 MedHop 训练出来的模型权重通常不被视为数据的衍生作品(这一点存在争议,且与训练数据是否构成"衍生"的判例有关),因此模型许可证可以自定——但建议在模型卡中披露训练数据来源与许可。

SA 的"兼容许可证" 是大问题:CC BY-SA 3.0 与 CC BY-SA 4.0 之间存在单向兼容(4.0 可以接收 3.0 的衍生,反之不行,需看具体条款),而与 GPL 等软件许可的关系更复杂。如果你打算基于 MedHop 做衍生发布,先确认目标许可证是否在兼容列表中。

§6.4 上游数据的许可与合规

MedHop 的文档来自 Medline 2016,这是另一个独立的权利层:数据集自身是 CC BY-SA 3.0,但它包含的摘要文本来自 MEDLARS/MEDLINE,其使用受 NLM(美国国家医学图书馆)的条款约束。实际影响:

  • 摘要是已发表的生物医学文献摘要,其版权可能归属原期刊/出版商,NLM 的数据库分发不等于授权你再分发全文。
  • 实际研究使用(文本挖掘、模型训练)在学术惯例与 NLM 条款下普遍可行,但大规模再分发摘要原文需谨慎。
  • MedHop 通过 BioNLP 2011 Shared Task 预处理流水线处理过文本,因此实际拿到的是经过处理的分句文本,不是原始 MEDLINE 记录。

结构化知识源的许可:

  • DrugBank:基础版可免费获取但学术用途限定,商业使用需购买 license。MedHop 只用它做答案构造(生成标签),不直接分发 DrugBank 内容——所以数据集包本身不含 DrugBank 数据库。但如果你要复现构建流水线,就必须自行解决 DrugBank 的获取与许可。
  • Reactome:开源(通常 CC0 / 开放条款),再分发限制少。
  • Swiss-Prot(UniProt):通常 CC BY 4.0,署名即可。

一句话总结合规姿势:用 MedHop 训练/评测 → 基本无碍,做好署名;再分发 MedHop 或其衍生 → 必须 CC BY-SA,且注意摘要文本的期刊权利层;复现构建 → 先解决 DrugBank 的商业许可问题。

§6.5 版本链:三个不同的"版本号"不要混

MedHop 的"版本"在不同语境下指三件不同的事:

语境 版本标识 含义
论文 arXiv v1(2017-10-17)/ v2(2018-06-11) 论文稿的修订版本
数据包 qangaroo_v1.1 Zenodo 上的数据包版本(v1.0.0 是 Zenodo record 版本)
Zenodo 记录 v1.0.0(2018-06-11 发布) Zenodo 平台侧的版本号,与数据包名 v1.1 不同

常见误读:看到 “qangaroo_v1.1” 就以为存在 “v1.0 数据集” 的旧版在流通。实际上,数据集包是 v1.1,Zenodo record 版本是 v1.0.0,两个编号体系不同。截至抓取时点(2026-09-30),未发现后续 v1.2+ 版本——Zenodo 记录只有 v1.0.0(2022-04-02 修改时间戳,可能是元数据编辑而非内容更新)。

§6.6 test 集:为什么你拿不到

MedHop 的 test 集(546 条)不公开。 这是本条目复现实验时必须先知道的事实:

  • Zenodo 包与 HF 发布都只含 train + validation;
  • 第三方论文(如 MedKGQA)明确声明 “the test set is not available to the public”,由官方委员会盲评;
  • 官方没有公开的在线 leaderboard 提交入口。

实践含义:

  • 你不能在真正的 test 上报告结果,除非通过官方渠道提交(而该渠道的现行可用性需自行确认);
  • 所有基于 HF 版本的工作,报的都是 validation 上的数字,与论文的 test / test* 数字不可直接比;
  • 自建 test 时必须说明划分方式,否则无法与其他工作对齐。

这一点在 §9 作为存照条目列出,因为它是引用与复现中最容易出错的地方之一。

§6.7 获取与许可小结

事项 关键信息
权威下载 Zenodo records/6407401 → qangaroo_v1.1.zip,339.8 MB
校验 MD5 dd4f65d2f73244c0946b5810e24a8e43
最方便 HF community-datasets/qangaroo(四 config 齐全)
字段注意 query vs question 命名差异
数据许可 CC BY-SA 3.0(署名 + 相同方式共享)
上游文本 Medline 2016(另有期刊权利层)
上游知识库 DrugBank(学术限定)/ Reactome(开放)/ Swiss-Prot(CC BY)
test 集 不公开,官方盲评,无公开 leaderboard
引用需写明 论文 DOI + Zenodo DOI + 许可 + 口径

§7 生态与影响:这个数据集在学术谱系里站在哪里

§7.1 QAngaroo 的双子结构:MedHop 与 WikiHop 的分工

理解 MedHop 的生态位置,起点是理解 QAngaroo 的分工设计:

维度 MedHop WikiHop
领域 生物医学(药物相互作用) 开放域(Wikipedia)
文档源 Medline 2016 摘要 Wikipedia 文章
结构化知识源 DrugBank + Reactome + Swiss-Prot Wikidata
查询类型数 1(interacts_with) 277
样本规模 1,620 / 342 / 546 = 2,508 43,738 / 5,129 / 2,451 = 51,318
候选数(avg) 8.9(median 9) 19.8(median 14)
文档数(avg) 36.4(median 29,上限 64) 13.7(median 11)
每文档 token(avg) 253.9(median 264,上限 300+标题) 100.4(median 91)
每样本唯一文档路径 59.8 19.5

分工的用意:WikiHop 用规模 + 查询多样性验证方法的通用性;MedHop 用单一查询类型 + 高文档数 + 长文档做领域纵深与证据聚合压力测试。

两者存在一个重要的结构性对照:WikiHop 是"候选多而文档少",MedHop 是"候选少而文档多"。这意味着——同一个模型在两个数据集上的失败模式不同:WikiHop 上更可能失败在候选间的细粒度区分,MedHop 上更可能失败在从 36.4 篇文档里定位证据(§5.7 的 gold chain 实验正是切开了这一点)。

MedHop 因此常被当作"证据定位压力更大"的那一半来引用。

§7.2 在多跳 QA 谱系中的位置

多跳问答作为一个研究方向,数据集演进大致呈这样的谱系(时间序):

数据集 年份 形态 相对 MedHop 的差异
MedHop / WikiHop (QAngaroo) 2018 定候选多选,跨文档,结构化知识远监督 —(本条目)
HotpotQA 2018 抽取式 QA + 支撑句标注,Wikipedia 需要生成 span;带 sentence-level 监督
2WikiMultiHopQA 2020 抽取式 + 显式推理链 强调可解释的推理步骤
MuSiQue 2021 抽取式,控制跳数与干扰 系统性构造 2–4 跳,抗捷径更强

MedHop 的独特位置:

  1. 它是"定候选"而非"抽取式"——不需要生成答案文本,降低了答案形式的评分噪声,但也意味着不能直接与 HotpotQA 的 EM/F1 比较。
  2. 它是远监督自动构建,而非人工标注(HotpotQA 是众包人工写)——这让它规模可控、可复制,但噪声更高、天花板的性质不同(§5.6)。
  3. 它把结构化知识图谱(DrugBank/Reactome)作为标签来源——这是后来一大批"知识增强多跳 QA"工作的先声。MedKGQA 这类工作(§5.8)正是踩在这条线上:用外部知识融合来提升 MedHop 上的精度,契合 MedHop 自身的构建逻辑。
  4. 它是医学域最早的多跳基准之一——在此之前,医学 QA 基准(MedQA、PubMedQA 等)几乎全是单跳(§9.2 对比)。

一个重要的引用纪律:MedHop 不是 HotpotQA 的替代或前身,两者是并行独立的工作(同年不同团队、不同形态)。把 MedHop 说成"HotpotQA 的医学版"是不准确的简化——正确的说法是"多跳 QA 谱系中,MedHop 代表远监督 + 定候选 + 医学域这一支"。

§7.3 下游影响:MedHop 被用来做什么

MedHop 的引用形态可以归为三类:

类型一:作为 DDI(药物-药物相互作用)多跳推理的评测基准。 这是最直接的用途。MedKGQA(§5.8)是已核实的例子:在 MedHop 上报 64.8%,并通过消融证明知识融合模块贡献 15.5 个百分点。这类工作的共同命题是"纯粹的文本模型不足以做 DDI 多跳推理,需要引入外部结构化知识"——而 MedHop 的构建方式(标签源自 DrugBank/Reactome)让这个命题天然可比。

类型二:作为多跳 RC 方法的通用测试床。 MedHop 与 WikiHop 常被成对报告,用来说明一个多跳方法既能处理开放域也能处理专业域。在这种用法下,MedHop 的价值在于提供一个与 WikiHop 共享格式但难度结构不同的对照(§7.1)。

类型三:作为"证据定位 vs 答案判定"难度分离的教学案例。 §5.7 的 gold chain 实验(BiDAF 从 47.8 → 86.4,masked 下 33.7 → 99.3)在多跳 QA 文献里被反复引用,用来论证"多跳任务的瓶颈在检索/证据聚合,而非最终判断"。这个结论直接推动了后续大量先检索后推理(retrieve-then-read) 的多跳架构。

影响的性质要说清:MedHop 不是那种被称为"引爆了一个子领域"的数据集(那是 HotpotQA 的角色更多一些)。它的影响更聚焦、更工具化:它提供了一个领域纵深强、口径清晰、构建可复现的多跳测试床,并在"证据定位是瓶颈"这个关键判断上提供了干净的经验证据。

§7.4 局限与被批评之处

任何诚实的条目都要写局限。MedHop 的主要局限:

(1) 全自动构建带来的标签噪声。 远监督的核心风险是"假连接":字符串精确匹配把药物-靶点、蛋白-蛋白关系投射回摘要时,可能产生文本上成立但语义上不成立的题目。论文的 100 条抽样质量分析(§5.6)承认了这一点,但没有给出全量噪声率。这意味着报出的 accuracy 里含有一个未知比例的地板噪声。

(2) 查询类型单一。 MedHop 只有 1 种查询类型(interacts_with),而 WikiHop 有 277 种。这带来的后果是:MedHop 上表现好的模型是否具备通用多跳能力无法被检验——它可能是针对 DDI 这一类关系做了特化。“在 MedHop 上 SOTA"不等于"具备通用多跳推理能力”。

(3) 未 masking 口径存在频次捷径。 §5.3 已论证:Majority 基线 58.4 超过了未 masking 的 BiDAF 47.8。任何只报 standard 数字的工作都值得追问:有没有利用候选频次先验? 这也是本条目主张以 masked 口径作为能力比较基准的理由。

(4) 规模偏小。 2,508 条样本(公开仅 1,962)与 WikiHop 的 51,318 相比小两个量级。对 2026 年的大模型微调场景,这个规模很容易过拟合,"在 MedHop 上分数高"的说服力显著低于它作为诊断性基准(gold chain 分析)的说服力。

(5) test 不公开且无公开 leaderboard。 见 §5.9 与 §6.6——这限制了可复现的比较,也意味着"某某方法在 MedHop 上最优"无法被第三方独立验证。

(6) 文档源时间锁定。 文档来自 Medline 2016,2016 年之后的医学文献知识不在其中。用 2026 年的大模型评测时要注意:模型的预训练语料里可能已经包含了 Medline 2016 的摘要,构成潜在的数据污染——"模型做对了"未必是学会了多跳推理,可能是记住了。这是一个对老数据集做新模型评测时的通用陷阱,对本条目尤其重要(见坑 7)。

§7.5 与库内医学问答数据集的关系(预告)

MedHop 与本库内已有的医学问答条目(medqa、medmcqa、pubmedqa、medicationqa、bioasq 等)的关系,本质上是**"多跳 vs 单跳"的分野**:

  • 库内已有的医学 QA 基本是单跳:问题是"这是什么病"“这篇摘要说了什么”,答案在一段文本内;
  • MedHop 是跨文档多跳:答案必须由多篇摘要的链条拼出来。

这个分野决定了 MedHop 在本库的不可替代性——它是库内第一个把"跨文档证据链"作为核心任务的医学条目,也是第一个用结构化知识图谱 + 远监督自动构建的条目。详细的互链建议与对照表放在 §9。


§8 方法学启示:MedHop 教给数据工程的事

MedHop 的价值不止于"一个可下载的医学 QA 数据集"。它的构建方法本身就是一份方法论文档——它用一条几乎完全自动化的流水线,把一个看似只能靠人工标注的任务(跨文档多跳推理)变成了可从结构化知识反推的工程问题。这一节把这些方法学教训抽出来,因为它们对任何想自建多跳数据集的人都可复用。

§8.1 核心范式:用结构化知识反推自然语言任务

MedHop 的构建哲学可以一句话概括:

如果一件事在结构化知识库里是明确的,那就没必要让标注员来标——让数据库来生成题目,让文本库来提供证据。

这条链条是:

DrugBank(药物-靶点)  ┐
Reactome(蛋白-蛋白)  ├──► 生成查询 (drug1, interacts_with, ?) 与答案 drug2
Swiss-Prot(人类蛋白) ┘              │
                                      ▼
Medline 2016 摘要库 ────► 精确字符串匹配投射 ────► 找出"提及"了这些实体的摘要
                                      │
                                      ▼
                              构建二部图 → 游走 → 出题

这个范式的三个优点:

  1. 规模不受标注预算限制。人工标注多跳题的边际成本极高(标注员要读多篇文档、还要确认推理链成立),而远监督的边际成本近乎为零。
  2. 答案的"正确性"由数据库保证。DrugBank 说 A 和 B 相互作用,那就是真的相互作用——不需要标注员判断。这消除了标注者间一致性这个噪声源。
  3. 可复制、可扩展到新领域。换一个知识库 + 换一个文本库,就能造出新数据集(这正是 WikiHop 用 Wikidata + Wikipedia 做的事)。

但代价也是明确的(§7.4 已述):数据库里的关系成立 ≠ 文本里能推出这个关系。字符串匹配会带来假连接,这就是噪声的来源,也是 test* 子集存在的理由。

§8.2 二部图:把"文档集合"变成"可游走的证据网络"

MedHop 最关键的技术抽象是把文档集合建模成二部图,节点是文档和实体(药物/蛋白),边表示"提及"或"已知关系"。

三类边的语义各不相同,这是最容易实现错的地方:

边类型 方向 条件
文档 → 蛋白 无向 文档提及该蛋白即可
文档 ↔ 药物 双向 文档需同时提及该药物已知靶点蛋白(DrugBank 口径)——即"文档通过靶点与药物相连",可双向跳
蛋白 → 文档 有向(带条件) 仅当该文档也提及另一个蛋白 p’,且 p’ 与 p 被 Reactome 证实相互作用

为什么要做这种区分? 因为不同边代表了不同的证据强度:

  • "文档提到某蛋白"是弱证据(可能只是背景提及);
  • "文档通过已知靶点与药物相连"是中等证据(说明该文档在讨论这个药物的作用机制);
  • "文档同时提到两个被证实相互作用的蛋白"是强证据(说明该文档在讨论这条通路)。

游走只能沿着这些边进行,因此边的定义直接决定了什么问题被生成。如果在实现时把第三条边(蛋白→文档)的 Reactome 条件去掉,就会生成大量"两个蛋白只是碰巧同文出现、但生物学上无关"的假题目。这条约束是多跳样本质量的守门人。

§8.3 降采样:为什么必须做,以及三条规则

二部图是稠密的——一个热门蛋白可能出现在成千上万篇摘要里。如果不加约束,游走会生成:

  • 支持文档数爆炸(几百篇)的样本 → 超出模型上下文;
  • 候选间路径数严重不均 → 模型可以靠"路径多的候选"作弊。

MedHop 用三条规则处理:

规则一:排除支持文档数 > 64 的样本。 这是硬上限。论文 Table 2 显示文档数 max = 64,说明这条规则被执行到了。

规则二:文档长度上限 300 token + 标题。 Table 2 显示每文档 token avg 253.9 / median 264 / max 458。注意 max 458 > 300——上限是 300 token 正文 + 标题,标题不计入 300 但计入总 token,这解释了 458 的存在。(这是一个容易看错的细节:看到 max 458 就以为"300 上限没生效"是误读。)

规则三:路径数归一化。 这是最精巧的一条:先连接"查询药物—答案文档"的路径,然后迭代地为替代候选补充连接,直到所有候选达到相同的路径数(且总文档数不超过 64)。

规则三解决的是一个隐蔽的作弊通道:假设正确答案有 5 条证据路径,而某个错误候选只有 1 条——模型即使完全不理解语义,只要数一数"哪个候选在图中连接更多"就能选对。把路径数拉平,等于把这个统计线索抹掉,强迫模型读文本。

这条规则的普适教训是:**数据集的"捷径"往往不在文本里,而在数据的统计结构里。**不检查这类结构,数据集看起来干净,实际可以被退化策略刷榜(§5.3 的 Majority 基线就是同一个问题的另一种表现)。

§8.4 masking:一个被低估的评测设计

MedHop 的 masking 变体(把候选替换成 MASK7 这类唯一占位符)常被当作"一个小技巧"略过,但它其实是评估设计的一次范式升级。

masking 干了什么:

  1. 切断"答案字符串频次"先验:Aspirin 出现 743 次、Isotretinoin 出现 34 次——真实药名携带统计信息,占位符不携带(每个占位符在全局只出现一次)。
  2. 切断"高频答案 ↔ 支持文档"的统计相关:某些药名因为总是出现在某些文档里,模型可以靠共现统计蒙对;占位符把这层相关性也切断了。
  3. 迫使模型使用结构与位置信息:占位符虽然无词义,但在单样本内的映射是一致的——同一实体在同一道题里的所有出现都是同一个占位符。这保留了"跨文档指代同一实体"这个推理所必需的信息,只拿掉了"实体身份"这个可以作弊的信息。

第 3 点是设计精髓:masking 不是简单地"把词删掉",而是精确地分离了"推理需要的信息"和"捷径需要的信息"。删得太多(比如每个出现用不同占位符),跨文档推理就做不了了;删得太少(不删),捷径还在。"单样本内一致、跨样本不同"这个约束,正好卡在两者之间。

结果验证了设计的有效性(§5.4):Majority 基线从 58.4 / 67.3 崩到 10.4 / 6.1,低于随机。一个基线崩到低于随机,说明它原本依赖的线索被彻底拿掉了——这是 masking 有效的直接证据。

普适教训:设计基准时,先找出最强的"不看输入"的基线(这里是 Majority),然后设计一个变体让这个基线失效。如果做不到,你的基准就没有在测量你以为它在测量的东西。

§8.5 难度归因实验:gold chain 的方法论价值

§5.7 的 gold chain 实验值得从方法论角度再强调一次:它把"任务难度"拆成了可测量的两部分。

设置的差异 它隔离出的能力
全文档 → 用全部 36.4 篇 检索 + 聚合 + 判断(整体难度)
gold chain → 只用相关文档 判断(去掉检索后的难度)
两者之差(47.8 → 86.4) 证据定位能力的贡献

**这个"给出 oracle 输入看性能上限"的对照设计,是所有数据集论文都该做但经常被忽略的实验。**它的价值在于:

  • 如果 gold 输入下性能接近满分(BiDAF mask 99.3 / 100.0)→ 瓶颈在检索,后续工作应投入检索;
  • 如果 gold 输入下性能仍然很差(FastQA mask 51.8 / 55.1)→ 瓶颈在模型本身,检索改善无用。

**同一张表,对两个模型给出了相反的研究建议。**这就是诊断性实验的力量——它把"这个数据集太难"这种无信息量的抱怨,变成了"难在哪一环、该往哪投入"的具体判断。

对数据工程者的一般启示:发布数据集时附上 oracle 输入的对照实验。它不只对使用者有价值,也是验证数据集本身是否可解的重要手段——如果连 gold 输入都做不对,说明题目或标签有问题。

§8.6 质量控制的诚实做法:抽样 + 分档

MedHop 面对"自动构建的标签不一定对"这个问题,采取的做法是:

  1. 不假装标签全对——明确承认远监督会引入噪声;
  2. 在 dev 集抽样 100 条做定性分析——不是全量标注,而是拿到一个噪声水平的估计;
  3. 划分 test / test* 两列——把"经人工验证的子集"单列,给出一个更干净的可比口径;
  4. 披露问题的具体类别与占比(§5.6 的七类占比表)——不是笼统说"有噪声",而是量化和分类。

第 4 点尤其值得学习:WikiHop 侧披露的质量表(unique multi-step answer 36% / likely multi-step 9% / multiple plausible answers 15% / hypernymy ambiguity 11% / single doc required 9% / answer does not follow 12% / Wikidata-Wikipedia discrepancy 8%)不是一份宣传材料,而是一份自我批评。它承认只有约 45% 的样本严格是多跳的、约 9% 单文档可解、约 12% 答案根本推不出。

为什么这种"自曝其短"反而是好做法? 因为使用者必须知道数据集有多少噪声,才能正确解读结果。一个声称"完全干净"的自动构建数据集,要么是在说谎,要么是没做检查。数据集文档里最重要的一节,是关于它自己有多坏的。

§8.7 可复用的五条清单

把 MedHop 的方法学压成一张可执行的清单,供自建多跳数据集参考:

  1. 先找结构化知识源 — 有没有一个数据库能确定性地给出你要的答案?有的话,别标,让数据库生成。
  2. 用精确匹配把知识投射回文本 — 并明确披露匹配策略(这里用的是 DrugBank/Swiss-Prot 名称变体的精确匹配),因为匹配策略决定了假连接率。
  3. 把文档集合建成图,并仔细定义每条边的语义与条件 — 边定义错了,题目就错了(§8.2 的第三条边是守门人)。
  4. 找出并封堵统计捷径 — 路径数归一化(§8.3)+ masking(§8.4)是两道互补的防线。
  5. 做 oracle 对照 + 抽样质检 + 分档披露 — 让使用者知道任务难在哪(§8.5)和数据有多脏(§8.6)。

§9 库内关系:MedHop 与千方病案医数集内其他条目的坐标

§9.1 MedHop 在库内的定位:三个"第一"

MedHop 在千方病案医数集(qianfanghub.com)内是首个多跳阅读理解条目。具体地,它在库内占据三个没有先例的位置:

  1. 库内首个"多跳推理"数据集——此前库内医学 QA 条目全部是单跳(答案在一段文本内);
  2. 库内首个把"跨文档证据链"作为核心任务的条目——不是"读一篇摘要回答问题",而是"从几十篇摘要里拼出推理链";
  3. 库内首个用远监督 + 结构化知识图谱自动构建的医学条目——标签来自 DrugBank/Reactome,而非人工标注。

这三条加起来意味着:MedHop 不能作为任何现有条目的"另一个版本"来索引,它需要被当作一个独立的任务类别来定位。

§9.2 与库内医学问答条目的对照

库内已有的医学问答条目(含 rid)与 MedHop 的关系如下表。关键列是"跳数"——它决定了任务本质是否相同。

条目 rid 领域 任务形态 跳数 与 MedHop 的关系
medhop — 生物医学(DDI) 跨文档多跳多选 多跳 —(本条目)
medqa 50 中美医学执照考试 单跳多选 单跳 同属医学 QA 评测;MedHop 是其多跳补位
medmcqa 111 印度医学入学考试 单跳多选 单跳 同上;规模大但单跳
pubmedqa 49 生物医学文献 单跳 yes/no/maybe 单跳 同源 PubMed(MedHop 用 Medline 摘要),但单跳
medicationqa 170 消费者用药 单跳问答 单跳 主题贴近(药物),任务形态不同
bioasq 53 生物医学问答 检索 + 问答 单跳为主 任务最近的邻居,但以检索为主
medquad 160 医学 FAQ 单跳问答对 单跳 仅同域
mednli 648 医学 NLI 句对推理 单跳 推理但非多跳、非跨文档
ddi 171 药物-药物相互作用 关系抽取/分类 单跳 主题最贴近(同为 DDI),但 MedHop 是跨文档多跳,ddi 是句级关系判定
drugbank 89 / 571 药物数据库 结构化知识库 — MedHop 的上游知识源——直接依赖互链
cord-19 104 COVID-19 文献 文献检索/QA 单跳 同为文献域
biosses 750 生物医学句子相似度 句对相似度 — 弱关联
scifact 751 科学主张核验 多篇证据 + 核验 跨文档 问题意识同族(跨文档证据聚合),但任务是核验非多跳 QA
meddialog 210 医学对话 对话生成 单跳 弱关联
mimic-iii 106 重症监护 EHR 结构化临床数据 — 数据形态不同(EHR vs 文献)

读表要点:

  • 与 MedHop 任务形态最近的是 bioasq(53)(生物医学问答)与 scifact(751)(跨文档证据聚合),但两者都不是严格的多跳推理;
  • 与 MedHop 主题最近的是 ddi(171)(同为药物-药物相互作用),但 ddi 是句级关系判定,MedHop 是跨文档多跳选择——同一个应用问题(DDI),两个不同的任务抽象;
  • drugbank(89/571) 是 MedHop 的直接上游,这个互链关系是依赖型而非并列型,条目中应明确说明(读者从 MedHop 应能走到 DrugBank 去理解标签怎么来的)。

§9.3 建议互链清单

基于上表,本条目建议的互链(按相关性排序):

强互链(任务或依赖关系明确):

  • ddi(rid 171)— 同为药物-药物相互作用,任务抽象不同,是最有信息量的对照
  • drugbank(rid 89 / rid 571)— MedHop 的上游结构化知识源
  • pubmedqa(rid 49)— 同源 PubMed/Medline 文献,单跳对照
  • bioasq(rid 53)— 生物医学问答,任务最近的邻居

中等互链(同域或同族):

  • medqa(rid 50)/ medmcqa(rid 111)— 医学 QA 评测家族
  • scifact(rid 751)— 跨文档证据问题意识同族
  • mednli(rid 648)— 推理类任务对照
  • medicationqa(rid 170)— 药物主题

概念互链(库外,不构成 rid 链接):WikiHop(同项目姊妹集)、HotpotQA、2WikiMultiHopQA、MuSiQue(多跳 QA 谱系);DrugBank、Reactome、Swiss-Prot、Medline(上游源)。

§9.4 一句话坐标

在千方病案医数集内,MedHop 是"跨文档多跳"这一类的唯一代表;它与库内所有医学问答条目构成**"单跳 ↔ 多跳"的对偶关系**,与 ddi 构成**"句级 DDI ↔ 跨文档 DDI"的任务抽象对偶**,与 drugbank 构成**"下游数据集 ↔ 上游知识库"的依赖关系**。


§10 避坑清单:引用 MedHop 时最容易踩的七件事

以下七条是本条目在核验过程中实际遇到的混淆点。每一条都附上"错误说法"与"正确说法",可直接用作引用前的检查表。

坑 1:把 QAngaroo 当成一个数据集

错误说法:“QAngaroo 数据集有 51,318 条样本。”(把 WikiHop 的规模当成了 QAngaroo 的)
正确说法:“QAngaroo 是一个项目,产出 MedHop 与 WikiHop 两个数据集。MedHop 2,508 条(公开 1,962),WikiHop 51,318 条。”

QAngaroo 是伞名,不是任何一个数据集的别名。论文标题里的 “Datasets”(复数)就是提示。凡看到"QAngaroo 数据集",都要追问具体指哪一个。

坑 2:把 MedHop 的 test 集当成公开可用

错误说法:“用 HuggingFace 加载 MedHop,在 test 上跑出了 60% 的准确率。”
正确说法:“MedHop 的 test 集(546 条)不公开,官方保留用于盲评。HF 上只有 train 1,620 + validation 342。”

HF 的 bigbio/medhop 与 community-datasets/qangaroo 都不含 test。你在 HF 上报告的"test 成绩",实际上全部是 validation 成绩,与论文的 test / test* 数字不可比。这是最容易犯且后果最严重的坑。

坑 3:用未 masking 的数字做跨模型比较

错误说法:“Majority 基线 58.4%,超过了 BiDAF 的 47.8%,说明简单方法在这题上更强。”
正确说法:“未 masking 时 Majority 58.4% > BiDAF 47.8%,说明未 masking 口径存在答案频次捷径;masking 后 Majority 崩到 10.4%,BiDAF 42.9%,此时 BiDAF 才显著领先。”

未 masking 的口径下,一个不读文档的频次启发式就能超过神经模型——这时的排名不反映阅读理解能力。做能力比较必须用 masked 口径。

坑 4:把"抽样 100 条质检"说成"人工标注 100 条"

错误说法:“MedHop 有人工标注,论文人工标了 100 条训练数据。”
正确说法:“MedHop 全量远监督自动构建,无人工标注。论文在每个 dev 集抽样 100 条做定性质量分析,这 100 条不是训练标签,也不是全量标注。”

把质检样本当成标注数据,会得出"MedHop 是半人工标注数据集"的错误结论,进而错误估计它的标签可靠性。

坑 5:把 HF 的 “Number of rows: 3,924” 当成样本总数

错误说法:“MedHop 有 3,924 条样本。”
正确说法:“3,924 = original config(1,962)+ masked config(1,962) 的行数合计;单一 config 是 1,962 条(train 1,620 + validation 342)。”

HF 卡片会把多个 config 的行数相加显示。不要把这个合计当样本数——它等于把同一批数据数了两遍。

坑 6:把 54.5% 当作 MedHop 的最佳成绩

错误说法:“MedHop 上 BiDAF 达到 54.5%,接近人类 85.0%。”
正确说法:“54.5% / 85.0% 是 WikiHop 的数字(BiDAF masked test / 人类表现),出自 TACL 终版摘要。MedHop 自身最佳为 BiDAF standard 47.8%(test)/ 61.2%(test*),masked 下为 33.7% / 42.9%。”

这个坑的来源是论文摘要本身:arXiv v1/v2 摘要写 42.9% / 74.0%,TACL 终版写 54.5% / 85.0%——两组数字都是 WikiHop 的(分别对应未 masking 与 masking 口径),而摘要表述是"their best accuracy"(跨两个数据集的整体最佳)。读者极易误以为这是 MedHop 的成绩。

额外的混淆源:42.9 这个数字出现了两次且含义不同——一次是 WikiHop BiDAF masked test,一次是 MedHop BiDAF masked test*。同值异指,引用必须带全口径标签。

坑 7:用大模型评 MedHop 而不检查预训练污染

错误说法:“2026 年的 LLM 在 MedHop 上零样本达到 80%,远超 BiDAF 的 47.8%,说明多跳推理已被解决。”
正确说法:“MedHop 的文档来自 Medline 2016,这些摘要极可能已在大模型预训练语料中。高分可能来自记忆而非推理。要检验这一点,需做masked 变体实验,或检查模型对候选顺序 / 占位符替换的敏感性。”

这是一个晚期出现但极重要的坑。MedHop 发表于 2018 年,其文档源早于所有现代大模型的训练截止期。用现代 LLM 评它时,必须考虑数据污染:模型可能见过这些摘要,甚至见过相关的药物相互作用事实。masked 变体在这里意外地成为污染检测工具——如果换掉实体名后性能大幅下降,说明模型确实在依赖实体身份(记忆)而非结构推理。

坑 8(附加):把 max 458 token 当成"300 上限失效"

错误说法:“论文说文档上限 300 token,但 Table 2 显示 max 458,说明上限没执行。”
正确说法:“上限是300 token 正文 + 标题;标题不计入 300 但计入总 token 计数,因此 458 = 300(正文上限)+ 标题等其他部分。上限生效了。”

这类"数字对不上"的误读,通常源于没有细看定义。Table 2 的统计口径与正文的限制条款不是同一件事——前者统计的是实际分布,后者是构造时的约束。

§10.9 引用检查表

引用 MedHop 前,逐条自检:

# 检查项 通过条件
1 说的是 MedHop 还是 WikiHop? 明确写出
2 是公开的 train/val 还是官方 test? 明确写出,HF 结果只能标 val
3 是 standard 还是 masked? 明确写出
4 是 test 还是 test*? 明确写出
5 是否把 54.5% 误当 MedHop 成绩? 应改为 47.8%(standard test)
6 是否把 3,924 当样本数? 应为 1,962(单 config)
7 是否声称有人工标注? 应为远监督,仅 100 条抽样质检
8 用大模型评时是否讨论污染? 应讨论并考虑 masked 对照
9 许可是否标为 CC BY-SA 3.0? 是(注意 SA 的传染性)
10 是否引用了 DOI? 论文 DOI + Zenodo DOI 双引用

FAQ:关于 MedHop 的常见问题

Q1:MedHop 和 WikiHop 是什么关系?我该用哪个?
A:两者是 QAngaroo 项目产出的姊妹数据集,共享格式与构建方法。MedHop 是医学域(Medline 摘要,药物相互作用),WikiHop 是开放域(Wikipedia,277 种查询类型)。做医学 DDI 研究用 MedHop;做通用多跳方法验证用 WikiHop(规模大 20 倍);很多论文两个都报以证明方法通用性。

Q2:为什么不能直接在 HuggingFace 上评测 test?
A:因为 test 集根本不公开(546 条,官方保留盲评)。HF 上只有 train + validation。你报的 HF 成绩都是 validation 成绩。

Q3:MedHop 的"多跳"具体指什么?
A:指答案不在任何单篇文档里。典型链条是:文档 1 说药物 A 作用于靶点 P,文档 2 说蛋白 P 与蛋白 Q 有相互作用(Reactome 证实),文档 3、4 说药物 B 影响 Q——于是推断 A 与 B 相互作用。推理链跨 4 篇文档、3 跳。

Q4:什么是 masked 版本?我该用哪个?
A:masked 版把候选实体替换为 MASK7 这类唯一占位符(单样本内一致、跨样本不同)。做能力比较用 masked(它切断了答案频次捷径);与论文 Table 5 标准列对齐用 original,但要意识到它含捷径。

Q5:为什么 TF-IDF 会低于随机?
A:因为 MedHop 的答案药物与查询药物几乎不在同一篇摘要里共现(这正是"多跳"的定义)。词汇匹配的前提不成立,TF-IDF 还会被"高频提到查询药物但不含答案链"的文档系统性带偏,因此低于随机(9.0 vs 13.9)。

Q6:Majority 基线 58.4% 是怎么回事?
A:这是未 masking 口径下"总是选最常见答案"的成绩,超过了下表神经模型。它暴露了答案频次捷径:Aspirin 有 743 种相互作用、Isotretinoin 只有 34 种,交互多的药物更常是正确答案。masking 后它崩到 10.4%,证明这个捷径确实是问题所在。

Q7:MedHop 的数据是怎么造出来的?有人工标注吗?
A:没有人工标注。用 DrugBank(药物-靶点)+ Reactome(蛋白-蛋白)+ Swiss-Prot(人类蛋白) 自动生成查询与答案,再用精确字符串匹配投射回 Medline 2016 摘要找出证据文档,最后在二部图上游走 + 降采样出题。论文仅对 dev 集抽样 100 条做质量检查。

Q8:为什么 MedHop 只有 1 种查询类型,而 WikiHop 有 277 种?
A:因为医学域的结构化知识源只提供了药物-靶点这一种可自动化的关系(DrugBank 的 interacts_with),而 Wikidata 提供的关系类型远多于医学域可自动提取的。这是领域知识库覆盖度的直接后果,也是 MedHop "查询类型单一"这一局限(§7.4)的根源。

Q9:文档数上限 64、token 上限 300 是怎么来的?
A:64 是"排除支持文档数 > 64 的样本"这条降采样硬规则;300 是正文 token 上限(标题另计,因此实际总 token 可达 458)。两条规则的目的是控制上下文长度与候选间证据对称性(§8.3)。

Q10:MedHop 的许可能商用吗?
A:数据集是 CC BY-SA 3.0——可以署名使用,但改编后再分发必须以相同方式共享(SA),不能改松到 CC0/MIT。注意摘要文本还有一层期刊/NLM 权利;DrugBank 本身是学术限定(若你要复现构建流水线需单独解决)。商用训练模型的具体合规性建议咨询法律意见,本站不作法律断言。

Q11:为什么很多论文报的数字和论文里的对不上?
A:因为存在 2×2 口径(standard/masked × test/test*)+ 两个数据集(MedHop/WikiHop)+ 摘要数字跨数据集(54.5% 是 WikiHop 的)三重混淆。报数字时必须同时写明:数据集、口径、划分。 见 §10.9 检查表。

Q12:MedHop 现在过时了吗?
A:作为大规模训练集,1,962 条确实偏小;但作为诊断性基准(证据定位 vs 答案判定的难度分离,§5.7)和DDI 多跳推理的标准测试床,它仍被使用(如 MedKGQA 在 2023 年仍以它为基准)。它的价值已经从"训练数据"转向"评测标尺 + 方法学范例"。

事实清单(Fact Sheet)

以下为本条目引用的全部关键事实,按主题分组。每条标注来源与核验方式,便于读者独立复核。

A. 身份与归属

事实 取值 来源
数据集名 MedHop 论文 / Zenodo
所属项目 QAngaroo(= MedHop + WikiHop) 论文标题 / Zenodo 记录
全称释义 Reading Comprehension with Multiple Hops(医学域) 论文
领域 生物医学(药物-药物相互作用) 论文
任务类型 跨文档多跳阅读理解(定候选多选) 论文
机构 University College London + Bloomsbury AI 论文 / Zenodo
作者 Johannes Welbl, Pontus Stenetorp, Sebastian Riedel 论文
论文标题 Constructing Datasets for Multi-hop Reading Comprehension Across Documents arXiv / TACL
发表刊物 TACL Vol 6 (2018), pp. 287–302 ACL Anthology
出版商 MIT Press ACL Anthology
论文 DOI 10.1162/tacl_a_00021 ACL Anthology
ACL ID Q18-1021 ACL Anthology
arXiv ID 1710.06481(v1 2017-10-17;v2 2018-06-11) arXiv
官方站 http://qangaroo.cs.ucl.ac.uk/ 实抓(2026-09-30 在线)

B. 数据规模

事实 取值 来源
MedHop 划分(官方全量) train 1,620 / dev 342 / test 546 论文 Table 1
MedHop 合计 2,508 计算
MedHop 公开发布量 train 1,620 + validation 342 = 1,962 HF
WikiHop 划分 43,738 / 5,129 / 2,451 = 51,318 论文 Table 1
候选数 min 2 / max 9 / avg 8.9 / median 9 论文 Table 2
文档数 min 5 / max 64 / avg 36.4 / median 29 论文 Table 2
每文档 token min 5 / max 458 / avg 253.9 / median 264 论文 Table 2
每样本唯一文档路径(avg) 59.8(WikiHop 19.5) 论文
查询类型数 1(interacts_with;WikiHop 277) 论文

C. 分布包与体量

事实 取值 来源
Zenodo 记录 records/6407401,v1.0.0,2018-06-11 发布 Zenodo
数据包 qangaroo_v1.1.zip,339.8 MB Zenodo
MD5 dd4f65d2f73244c0946b5810e24a8e43 Zenodo
Zenodo 统计(2026-09-30) views 581 / downloads 103 / data volume 43.8 GB Zenodo
medhop dataset_size 110,398,906 B(≈110.4 MB) community-datasets/qangaroo README
medhop download_size 57,837,760 B(≈57.8 MB) 同上
masked_medhop dataset_size 112,614,098 B 同上
wikihop dataset_size 366,621,125 B 同上
HF usedStorage(bigbio/medhop) 1,114,842,494 B HF API
HF 卡片行数 “Number of rows: 3,924” HF
OpenDataLab 镜像 537.9 MB OpenDataLab

D. 构建方法

事实 取值 来源
文档源 Medline 2016(经 BioNLP 2011 Shared Task 预处理) 论文
药物-靶点知识源 DrugBank 论文
蛋白-蛋白知识源 Reactome 论文
人类蛋白源 Swiss-Prot 论文
实体匹配方式 名称变体的精确字符串匹配 论文
标注方式 远监督自动构建,无人工标注 论文
质量分析 dev 集抽样 100 条定性检查(非全量标注) 论文
文档数上限 排除支持文档 > 64 的样本 论文
文档长度上限 300 token + 标题 论文
路径数约束 所有候选在二部图中路径数相同 论文
masking 占位符 100 个唯一 token(如 MASK7) 论文
masking 一致性 单样本内一致,跨样本一般不同 论文

E. 评估基准(MedHop,论文 Table 5 / Table 7)

方法 standard test / test* masked test / test*
Random 13.9 / 20.4 14.1 / 22.4
Max-mention 9.5 / 16.3 —
Majority 58.4 / 67.3 10.4 / 6.1
TF-IDF 9.0 / 14.3 —
Document-cue 44.9 / 53.1 —
FastQA 23.1 / 24.5 31.3 / 30.6
BiDAF 47.8 / 61.2 33.7 / 42.9
BiDAF(gold chain) 86.4 / 89.8 99.3 / 100.0
FastQA(gold chain) 54.6 / 59.2 51.8 / 55.1

来源:论文 Table 5、Table 7(本条目作者表格化)。

F. 摘要数字与双口径冲突

出处 数字 实际所指
arXiv v2 摘要 42.9% / 人类 74.0% WikiHop BiDAF standard test
TACL 终版摘要 54.5% / 人类 85.0% WikiHop BiDAF masked test(标注测试集)
MedHop 自身最佳 47.8%(standard test)/ 61.2%(test*) MedHop BiDAF
巧合同值 42.9 既是 WikiHop masked test,也是 MedHop masked test*

G. 许可

事实 取值
数据集许可 CC BY-SA 3.0
义务 署名(BY)+ 相同方式共享(SA)
上游文本 Medline 2016(另有期刊/NLM 权利层)
上游知识库 DrugBank(学术限定)/ Reactome(开放)/ Swiss-Prot(CC BY)

H. 第三方使用

事实 取值 来源
MedKGQA 报告精度 64.8% accuracy arXiv:2212.09400
MedKGQA 消融 移除知识融合掉 15.5% 同上
MedKGQA 口径 train/dev/test = 1620/342/546;test 不公开 同上

术语表(Glossary)

多跳推理(Multi-hop Reasoning)
需要结合多处分散证据、经多步链式推导才能得出结论的推理方式。在 MedHop 中,答案需要跨 4 篇摘要、经 3 跳(药物→靶点→蛋白→药物)才能推出。与"单跳"(答案在一段文本内)相对。

跨文档阅读理解(Cross-document Reading Comprehension)
阅读理解任务的一种变体,答案不在任何单篇文档内,必须跨多篇文档聚合证据。MedHop 属于此类。

QAngaroo
UCL 的多跳阅读理解项目名,产出 MedHop(医学域)与 WikiHop(开放域)两个数据集。不是数据集的别名。

MedHop
QAngaroo 的医学半边,基于 Medline 2016 摘要,任务是药物-药物相互作用的多跳推理。

WikiHop
QAngaroo 的开放域半边,基于 Wikipedia,用 Wikidata 关系构建,有 277 种查询类型。MedHop 的姊妹数据集。

远监督(Distant Supervision)
用结构化知识库自动生成训练标签的方法,无需人工标注。MedHop 用 DrugBank/Reactome 生成查询与答案,再用字符串匹配投射回文本。优点是规模大、成本低、可复制;缺点是会引入假连接噪声。

二部图(Bipartite Graph)
MedHop 构建中把文档集合建模成图,节点分两类(文档与实体),边只存在于不同类型节点之间。三类边语义不同:文档→蛋白(无向)、文档↔药物(双向,需 DrugBank 靶点确认)、蛋白→文档(需 Reactome 确认蛋白-蛋白相互作用)。

支持文档(Support Documents)
出现在样本 supports 字段中的文档集合,模型的输入。MedHop 平均每样本 36.4 篇,上限 64 篇。顺序与相关性无关——模型需自行定位相关文档。

gold chain / gold documents
诊断性实验的设置:只把真正包含证据链的文档喂给模型,用以隔离"证据定位"与"答案判定"两部分的难度贡献。MedHop 中 BiDAF 在该设置下达 86.4%(standard)/ 99.3%(masked)。

masking / masked 变体
把候选实体替换为 100 个唯一占位符 token(如 MASK7)的数据变体。单样本内一致、跨样本不同。目的是切断"答案频次先验"这条捷径,同时保留跨文档指代同一实体所需的结构信息。

test / test*
论文评估的两列。test = 全部 546 条测试样本;test* = 测试集中经人工验证的子集,用于排除自动构建噪声。论文正式比较以 test* 为准。

accuracy
MedHop 的唯一评测指标,即选中正确候选的样本占比。不是 EM/F1——候选集合封闭,生成式指标不适用。

Majority-candidate-per-query-type
最强弱基线:总是选"在该查询类型下全局出现最多"的候选。未 masking 时 58.4%,超过 BiDAF 的 47.8%;masking 后崩至 10.4%。它暴露了答案频次捷径的存在。

BiDAF / FastQA
两个神经 RC 基线(2018 年时的代表模型)。BiDAF 在 MedHop 上 standard 47.8% / masked 33.7%(test);FastQA 在 masked 下反而上升(23.1%→31.3%),说明它原本被真实药名的词形线索干扰。

DrugBank
药物与药物靶点的结构化数据库。MedHop 用它确定"药物-靶点"关系,是标签生成的上游知识源。基础版学术用途限定,商用需 license。

Reactome
蛋白-蛋白相互作用与通路的开放数据库。MedHop 用它确认两个蛋白确实相互作用,是二部图第三条边(蛋白→文档)的守门条件。

Swiss-Prot(UniProt)
人工审核的蛋白序列数据库(UniProt 的一部分)。MedHop 用它确定人类蛋白实体集合。

Medline 2016
美国国家医学图书馆(NLM)的生物医学文献数据库,2016 年版被用作 MedHop 的文档源。注意其期刊权利层独立于数据集许可。

CC BY-SA 3.0
MedHop 的数据集许可。BY = 必须署名;SA = 改编后分发必须以相同方式共享。SA 具有传染性,衍生数据集不能改用更宽松的许可。

数据污染(Data Contamination)
模型评测中,测试数据已出现在模型预训练语料中导致的虚高表现。MedHop 的 Medline 2016 文档早于所有现代大模型的训练截止期,因此用 LLM 评测时必须考虑污染。

DDI(Drug-Drug Interaction)
药物-药物相互作用。MedHop 的任务主题。库内另有 ddi(rid 171) 条目,但那是句级关系判定,与 MedHop 的跨文档多跳选择是不同的任务抽象。

HotpotQA / 2WikiMultiHopQA / MuSiQue
MedHop 之后的多跳 QA 数据集。HotpotQA(2018,抽取式 + 支撑句)、2WikiMultiHopQA(2020,显式推理链)、MuSiQue(2021,受控跳数)。MedHop 与它们并行独立,代表"远监督 + 定候选 + 医学域"这一支。

诊断性实验(Diagnostic Experiment)
不是为刷分、而是为定位瓶颈而做的实验。MedHop 的 gold chain 实验是典范:它证明瓶颈在证据定位而非答案判定,直接推动了"先检索后推理"架构的发展。


附录 A:一页速查(Cheat Sheet)

它是什么? QAngaroo 项目的医学半边,跨文档多跳阅读理解数据集,任务是药物相互作用推理。

谁做的? UCL + Bloomsbury AI(Welbl, Stenetorp, Riedel),TACL 2018。

多大? 2,508 条(train 1,620 / dev 342 / test 546);公开仅 1,962(test 不给)。

什么格式? query + candidates + supports + answer + answer_position。

什么指标? accuracy(不是 EM/F1)。

最强基线? BiDAF,standard 47.8% / masked 33.7%(test)。

难点在哪? 从平均 36.4 篇文档里定位证据;给对文档后 BiDAF 达 86.4%(standard)/ 99.3%(masked)。

最容易错的地方? 把 54.5% 当 MedHop 成绩(那是 WikiHop 的)。

从哪下? Zenodo records/6407401 → qangaroo_v1.1.zip(339.8 MB,MD5 dd4f65d2f73244c0946b5810e24a8e43)。

什么许可? CC BY-SA 3.0(署名 + 相同方式共享)。

一句话引用? “MedHop 是 QAngaroo 项目(Welbl et al., TACL 2018)的医学多跳阅读理解数据集,用药物-靶点与蛋白-蛋白结构化知识远监督构建,要求跨多篇 Medline 摘要推理药物相互作用。”


附录 B:抓取与核实记录(Verification Log)

本条目撰写时点:2026-09-30。以下为核验动作清单。

B.1 三轮精确搜索(开工前查重)

轮次 检索对象 结果
1 库内目录 writing/medhop、writing/qangaroo、writing/wikihop 均不存在
2 数据库 url_name ILIKE 匹配 medhop / qangaroo / wikihop 零命中
3 库内语义近邻(medqa 50、medmcqa 111、pubmedqa 49、medicationqa 170、bioasq 53 等) 存在,但均为单跳,任务形态不同——不撞库

结论:MedHop 为库内首个多跳阅读理解条目,slug medhop 可用。

B.2 官方实抓(存在性核验)

来源 抓取方式 状态
Zenodo records/6407401 API / 页面实抓 ✅ 成功,含文件清单与 MD5
TACL 论文 PDF(aclanthology.org/Q18-1021.pdf) pdftotext -layout 转文本后全文提取 ✅ 成功,987 行文本,Table 1/2/5/7 数字全部提取
HuggingFace bigbio/medhop 经 hf-mirror API 端点 ✅ 成功,取得字段、划分、行数
community-datasets/qangaroo README 实抓 ✅ 成功,取得四个 config 的体量
官方站 qangaroo.cs.ucl.ac.uk WebFetch ✅ 成功,站点在线
arXiv 1710.06481 摘要实抓 ✅ 成功,取得 v2 摘要数字

B.3 双口径冲突处置

冲突项 处置
42.9%/74.0% vs 54.5%/85.0% 存照两条,判定二者均为 WikiHop 数字(分别对应 standard / masked);MedHop 自身以此为准:47.8% / 61.2%
2,508 vs 1,962 存照:前者含不公开的 test,后者是实际可获取量
3,924 vs 1,962 存照:前者是 original + masked 两 config 行数合计
339.8 MB vs 110.4 MB vs 537.9 MB 存照:Zenodo 压缩包(含两数据集)vs 单 MedHop 解压生成量 vs 第三方便携镜像

B.4 未决疑点(诚实披露)

  • test 集 546 的官方盲评具体流程与现行可用性未见公开文档;
  • Bloomburs AI 被收购一事非数据集事实,本条目仅作机构背景,不作硬断言;
  • OpenDataLab 镜像 537.9 MB 与 Zenodo 339.8 MB 体量差异原因未逐一核对(疑为解压/预处理差异);
  • 截至抓取时点未发现 v1.2+ 数据版本;
  • 论文 Table 2 的统计未区分 standard/masked,本条目按训练集总口径引用。

附录 C:推荐引用格式

引用数据集:

Welbl, J., Stenetorp, P., & Riedel, S. (2018). QAngaroo (MedHop + WikiHop) [Data set]. Zenodo. https://doi.org/10.5281/zenodo.6407401

引用论文:

Welbl, J., Stenetorp, P., & Riedel, S. (2018). Constructing Datasets for Multi-hop Reading Comprehension Across Documents. Transactions of the Association for Computational Linguistics, 6, 287–302. https://doi.org/10.1162/tacl_a_00021

引用本条目:

千方病案医数集. (2026). MedHop (medhop) — 跨文档多跳推理的医学药物相互作用阅读理解数据集 — AI-Ready Wikipedia. https://www.qianfanghub.com/ai-ready-dataset/medhop/754

报告结果时的最小信息集:数据集(MedHop/WikiHop)+ 划分(train/val/test/test*)+ 口径(standard/masked)+ 指标(accuracy)+ 许可(CC BY-SA 3.0)。


附录 D:数据可用性声明(DAIMS 对齐表)

本表按 DAIMS(Data Attribute and Information Model Standard) 的核心属性对齐,供数据治理与研究复现使用。

DAIMS 属性 MedHop 取值 说明
Persistent Identifier DOI 10.5281/zenodo.6407401(数据集);10.1162/tacl_a_00021(论文) 双 DOI,长期可解析
Access Mode 开放获取(Open Access) Zenodo 与 HuggingFace 均可公开下载,无需申请
Access Type 直接下载 / API ZIP 直链 + load_dataset()
License CC BY-SA 3.0 署名 + 相同方式共享
Data Provenance Medline 2016 摘要 + DrugBank + Reactome + Swiss-Prot 文档源与知识源可追溯
Collection Mode 自动构建(远监督) 无人工标注;dev 抽样 100 条质检
Collection Method 结构化知识 → 查询生成 → 字符串匹配投射 → 二部图游走 → 降采样 流水线可复现(见 §3)
Data Format JSON / HuggingFace datasets 纯文本,无专有格式
Data Volume 公开 1,962 条(original);体量 ≈110.4 MB 单 config
Data Type 文本(自然语言摘要 + 实体候选) 非影像、非信号、非 EHR
Completeness test 集不公开 公开部分完整覆盖 train + validation
Consistency 候选类型一致;路径数配平 已做结构一致性约束
Accuracy 自动标签,含未知比例噪声 已披露质量问题类别(§5.6)
Timeliness 文档源锁定 2016;数据集 2018 发布 无后续版本
Versioning 数据包 v1.1;Zenodo record v1.0.0 两套编号体系,勿混
Metadata Standard Zenodo + HuggingFace dataset card 含 schema、划分、许可
Ethics 无人类受试者数据;无个人健康信息 patient_count = 0
Privacy 不涉及个人数据 文献摘要为已发表内容
Data Limitations 规模小、查询类型单一、标签含噪、test 不公开、无公开 leaderboard、存在预训练污染风险 见 §7.4

D.1 数据限制声明(rai:dataLimitations 对照)

  1. 规模限制:公开 1,962 条,远小于 WikiHop 的 51,318;对现代大模型微调易过拟合。
  2. 标签噪声:远监督自动构建引入假连接,噪声率未知;仅 dev 抽样 100 条做定性分析。
  3. 领域限制:单一医学域、单一查询类型(interacts_with),高分不证明通用多跳能力。
  4. 捷径风险:未 masking 口径下存在答案频次先验(Majority 58.4% > BiDAF 47.8%),能力比较应使用 masked 口径。
  5. 可复现限制:test 集不公开、无公开 leaderboard,第三方无法独立验证"最优"声明。
  6. 时间限制:文档源锁定 Medline 2016,且早于现代大模型训练截止期,构成潜在数据污染。
  7. 上游许可限制:摘要文本另有期刊/NLM 权利层;DrugBank 为学术限定,复现构建需单独解决许可。
  8. 衍生限制:CC BY-SA 3.0 的 SA 条款具传染性,改编再分发须以相同方式共享。

附录 E:Milestone 时间线

时间 事件
2017-10-17 arXiv v1 提交(1710.06481)
2018-06-11 arXiv v2 修订;TACL 论文定稿;Zenodo 发布 QAngaroo v1.0.0(数据包 qangaroo_v1.1)
2018 TACL Vol 6 发表(pp. 287–302);ACL Anthology Q18-1021
2020 Bloomsbury AI 被 Facebook 收购(机构背景,非数据集事实)
2022-04-02 Zenodo 记录元数据修改时间戳(未见内容新版)
2022-12-22 HuggingFace bigbio/medhop 最后修改
2023 MedKGQA(arXiv:2212.09400)以 MedHop 为基准报告 64.8%
2026-09-30 本条目抓取与核验时点;官方站仍在线

附录 F:常见误读速查(Anti-Pattern Quick Reference)

误读 纠正 参见
“QAngaroo 有 51,318 条” QAngaroo 是项目;51,318 是 WikiHop 坑 1
“HF 上评测了 test” test 不公开,HF 只有 train+val 坑 2
“Majority 58.4% 说明启发式更强” 未 masking 有频次捷径,比能力要用 masked 坑 3
“人工标注了 100 条” 抽样质检,非标注 坑 4
“3,924 条样本” 是两 config 合计,单 config 1,962 坑 5
“MedHop BiDAF 54.5%” 54.5% 是 WikiHop;MedHop 最佳 47.8% 坑 6
“LLM 80% 说明已解决” Medline 2016 可能已被预训练,需查污染 坑 7
“max 458 说明 300 上限失效” 上限是 300 token 正文 + 标题 坑 8
“MedHop 是 HotpotQA 的医学版” 两者并行独立,形态不同(定候选 vs 抽取式) §7.2
“MedHop 用 EM/F1 评测” 用 accuracy,候选封闭 §5.1

尾注

资料范围:本条目所有事实性陈述基于以下一手来源——TACL/ACL Anthology 论文全文(Q18-1021)、arXiv 1710.06481、Zenodo 记录 6407401、HuggingFace bigbio/medhop 与 community-datasets/qangaroo、官方站 qangaroo.cs.ucl.ac.uk。抓取与核验时点为 2026-09-30。

口径纪律:本条目在涉及 MedHop 本体性能时一律使用 MedHop 专属数字(Table 5 / Table 7),摘要级数字(54.5% / 85.0%)始终标注为 WikiHop 口径。所有双口径冲突已在 §5.5、§9 与附录 B.3 逐条存照。

未决事项:test 盲评流程、Bloombsury AI 现况、第三方镜像体量差异等未见公开确证,本条目不作硬断言,已在附录 B.4 如实披露。

内容性质:本条目为数据集说明性条目(AI-Ready Wikipedia 格式),不含临床建议,不构成法律意见。许可与合规问题请咨询专业人士。

最后更新:2026-09-30。


本条目由千方病案医数集(qianfanghub.com)AI-Ready Wikipedia 写手代理 agent-b-medhop 撰写,遵循一源互证、口径存照、局限如实披露原则。


相关数据集导航

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

  • pubmedqa — 共享标签:医学问答与基准 / 医疗NLP / 生物医学文献 / 医学问答 / 评测基准
  • genia — 共享标签:医疗NLP / 生物医学文献 / 关系抽取 / 评测基准
  • scifact — 共享标签:医学问答与基准 / 医疗NLP / 生物医学文献 / 评测基准
  • apollocorpus — 共享标签:医疗NLP / 生物医学文献 / 医学问答 / 评测基准
  • healthsearchqa — 共享标签:医学问答与基准 / 医疗NLP / 医学问答 / 评测基准
  • claimify — 共享标签:医学问答与基准 / 医疗NLP / 医学问答 / 评测基准
  • cord-19 — 共享标签:医疗NLP / 生物医学文献 / 医学问答
  • medqa — 共享标签:医学问答与基准 / 医疗NLP / 医学问答 / 评测基准
  • medmcqa — 共享标签:医学问答与基准 / 医疗NLP / 医学问答 / 评测基准
  • medicationqa — 共享标签:医学问答与基准 / 医疗NLP / 医学问答 / 评测基准

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

返回 AI-Ready 数据集