信息速览
一个句子理解模型到底好不好,在 2018 年之前几乎是个各说各话的问题。研究单句情感的人报电影评论上的准确率,研究蕴含的人报新闻与百科上的准确率,研究问答匹配的人报社区提问上的准确率,三个数字之间没有任何可换算关系。更麻烦的是,数据集的规模差异悬殊:有的任务训练集只有几百条,有的有几十万条,于是"我在某个任务上又涨了零点几个点"这类结论既无法横向比较,也无法说明模型是不是真的更懂语言,还是只是把某个领域的表面线索背得更熟。GLUE 通用语言理解基准就是冲着这个麻烦来的:它不造新数据,而是把九个已经存在、被反复用过的英文句子理解数据集收拢到同一套格式、同一套划分、同一个提交口径下,再用一个公开排行榜把它们变成一个可以比较的总分。
它解决矛盾的思路很直接,代价也很直接。九个任务里有单句任务,有句对相似度与释义任务,也有四类被统一改写成自然语言推理形式的推理任务;训练规模从几百条到几十万条不等,领域横跨语言学文献、电影评论、新闻、社区提问、维基百科与小说。设计者明确声明,这样安排是为了"奖励能在任务之间共享参数的模型",也就是说,GLUE 从一开始就不是九个独立榜单的拼盘,而是一次对"通用性"的施压测试。它的另一半是一份由作者亲手构造的诊断集,用 550 个句对、33 个细粒度语言学现象去追问模型到底卡在哪一类语言能力上。一屏速览见下表。
| 维度 | 内容 |
|---|---|
| 全名 | General Language Understanding Evaluation(GLUE) |
| 中文通称 | GLUE 通用语言理解基准 |
| 官方主页 | https://gluebenchmark.com/ |
| 发起与维护 | Alex Wang、Amanpreet Singh、Julian Michael、Felix Hill、Omer Levy、Samuel R. Bowman;纽约大学、华盛顿大学、DeepMind |
| 首次发布 | 2018 年 4 月(arXiv:1804.07461),同年见于 EMNLP 2018 BlackboxNLP 研讨会论文集,后有 ICLR 2019 版本 |
| 主体构成 | 九个句子级或句对级英文理解任务,全部构建于已有数据集之上 |
| 训练规模区间 | 最小任务训练集 634 条,最大任务训练集约 39.3 万条 |
| 提交文件数 | 11 份预测 TSV(MNLI 的 matched 与 mismatched 各一份,另加诊断集 AX) |
| 诊断集 | 550 个句对,正反两个方向各标一次,共 1100 条蕴含样例 |
| 诊断集来源域 | News、Reddit、Wikipedia、ACL 各 100 个句对,人工构造 150 个 |
| 语言学标注 | 4 个粗粒度类别,下分 33 个细粒度现象 |
| 评测指标 | 九任务各自指标后取平均;诊断集用 R₃(三类马修斯相关系数的推广) |
| 榜单门槛 | 总分低于论文最佳基线 70% 的提交不上榜;每天最多两份提交 |
| 语言与范围 | 仅英文;官方论文明确不覆盖英语的全部方言及其他语言 |
| 数据来源层次 | 九个任务沿用原数据集,官方只做标准化与重划分,未从零采集 |
| 文件格式 | 每任务一个 zip,内含 train / dev / 无标签 test 的 TSV;诊断集为单份八列 TSV |
| 许可 | 官方不提供统一许可,指引用户回到各原始数据集各自的许可 |
| 后继基准 | SuperGLUE(https://super.gluebenchmark.com/),八个更难的任务 |
| 典型用途 | 预训练语言模型的通用性评测、跨任务迁移对比、语言学现象分层诊断、教学与复现基线 |
§1 它要解决的具体麻烦
1.1 单一任务分数为什么说明不了"理解"
一个只在电影评论上训练出来的情感分类器,拿到临床出院小结上会立刻失准,这一点几乎人人同意;但把它拿到新闻标题的蕴含判断上会怎样,在 GLUE 之前没人能给出一个公认的答案。原因是缺少共同的坐标系:不同论文用不同的数据集、不同的划分、不同的评价体系,甚至同一个数据集的同一份数据在不同仓库里列数都不一致。结果是"模型 A 比模型 B 强"这句话只在特定论文内部成立,出了那篇论文就失效。
GLUE 给出的坐标系有三个支点。第一,把任务固定为九個,且全部改写为"输入一个句子或一对句子、输出一个类别或一个分数"的统一形态,这样任何能处理句子与句对的系统都能参与,无论它内部是神经网络还是规则。第二,把每个任务的训练、开发、测试划分固定下来,测试集只发布输入不带标签,预测交给服务器打分。第三,用一个公开排行榜把九个分数压成一个总分,让"通用性"第一次变成一个可以排名、可以随时间追踪的量。
1.2 三条常见的错误期待
第一条,期待它是"九个新数据集"。它一个数据集也没有从零采集。官方 FAQ 与论文都写明,九个任务全都建立在已有数据集之上,GLUE 做的是格式统一、划分统一与评测统一。把引用写成"GLUE 数据集"而不引原始数据集,在学术规范上是错的(§9.3)。
第二条,期待它能代表"语言理解"的全部。它是纯英文的,且官方论文自己声明不覆盖英语的所有方言、不覆盖英语以外的语言,还警告这些语料因采集环境不受控,含有刻板印象与偏见。把它当作跨语言能力的证据,超出了它的设计范围。
第三条,期待诊断集的分数可以横向比较。官方诊断页写得很清楚:样例是人为挑选出来针对特定现象的,不代表语言的自然分布;同一个模型在不同类别上的分数对比没有意义,有意义的是不同模型在同一类别上的分数对比,或者拿分数当线索去翻具体样例做错误分析。
1.3 它能给到的与给不到的
| 你的需求 | 它给的 | 够不够 |
|---|---|---|
| 一个可横向比较的通用英文 NLU 总分 | 九个任务统一划分、统一提交、公开排行榜 | 够,这是它被设计出来做的事 |
| 判断模型卡在哪类语言学现象上 | 诊断集按 4 个粗类、33 个细类打标的 1100 条样例 | 够做定性诊断,不够做类别间排名 |
| 训练一个通用句向量编码器 | 九任务训练集,规模从 634 条到约 39.3 万条不等 | 够,但各任务规模悬殊,小任务需要迁移 |
| 多任务学习与参数共享的验证场 | 任务形态统一、规模梯度大,天然适合共享底层 | 够,且这是官方声明的鼓励方向 |
| 中文或医学领域的 NLU 评测 | — | 不够,全英文通用域;医学方向应看站内垂直基准(§6) |
| 生成式任务的评测 | — | 不够,全部任务都是分类或回归输出 |
| 测试集的自由分析与自查 | 测试标签私有,官方禁止训练与调优时触碰 | 不够,且官方明令禁止自行标注测试集 |
| 一个可以整体打包商用的语料 | 许可碎片化,官方不提供统一许可 | 不够,需逐任务回到原始许可核对 |
1.4 你的处境与它能帮到的事
| 你的处境 | 它能帮你什么 | 下一步该做什么 |
|---|---|---|
| 你训了一个英文预训练模型,想证明它不只是记住了预训练语料 | 九个任务在同一个划分上给出可比分,外加排行榜历史对照 | 先按官方脚本取数据,跑通九任务的开发集,再提交一次测试集预测 |
| 你怀疑模型靠词汇重叠这种表面线索得分 | 诊断集的句对被刻意做成高词汇重叠、不同蕴含关系 | 用 MultiNLI 的预测头跑诊断集,按细粒度类别拆开看,别看总分 |
| 你在做医学文本的推理任务,想找一个通用基线做对照 | 通用英文基线可以作为"域外能力"的下限参照 | 同时报通用基线与站内医学基准,比较落差而不是只报一个 |
| 你要复现一篇 2019 年前后的论文结果 | 数据与划分固定,下载脚本公开 | 注意 QNLI 有 v1 与 v2 之分(§5.6),确认论文用的是哪一版 |
| 你在教评测方法学 | 它同时提供了"分数"与"诊断"两种评价姿态的完整范例 | 用诊断集讲清楚什么叫"分数高不等于能力全" |
| 你想给自家内部语料做一套类似基准 | 它的任务选择、划分策略、提交格式、诊断集设计都可照搬 | 照搬结构,别照搬许可声明方式——碎片化许可是它的短板 |
1.5 一句话判断
它不是"九个数据集",是一把刻意做成有刻度的尺:九个任务给出刻度,诊断集告诉你尺子量的到底是什么。
1.6 不适合谁:四条边界
不适合做垂直领域的能力证明。 全英文、通用域,语料来自电影评论、新闻、维基百科、社区提问、语言学文献与小说。在医疗、法律、金融这类专业域上拿到的分数,与它在 GLUE 上的分数之间没有可推导的关系。
不适合做生成或长文本任务的评测。 全部任务的输出都是一个类别标签或一个 0 到 5 的连续分,没有生成、没有多轮对话、没有长文档。
不适合需要完整可审计数据的项目。 测试标签私有,官方规则禁止在测试集上训练或调优,也禁止发布针对九个主任务测试集的详细分析;许可又回到各原始数据集,商用前必须逐任务核对。
不适合追求"还没被做烂"的研究选题。 官方 FAQ 已经写明 GLUE 上的表现趋于饱和,并明确建议改在 SuperGLUE 上评测。把它当主战场,审稿人大概率会问一句"为什么不用更难的那个"。
§2 数据构成与规格
2.1 三层结构:主任务、诊断集、排行榜
GLUE 官网首页自述由三部分组成:九个句子级或句对级理解任务构成的基准、一份用于按语言学现象分析模型表现的诊断数据集、以及一个公开排行榜加一个诊断看板。三部分的分工很清楚——主任务给分,诊断集给解释,排行榜给时间维度。
理解这三者的关系,是正确使用它的前提。主任务的分数可以互相平均,因为它们的划分与提交方式被统一过;诊断集的分数不参与这个平均,它是三分类的自然语言推理问题,用 R₃ 单独报告。排行榜上的提交必须同时包含十一份文件(九个主任务,其中 MNLI 拆成 matched 与 mismatched 两份,再加诊断集 AX),缺少任何一份都不会被评分。
2.2 九个任务的规模与指标
下表来自官方论文的表一,训练、开发、测试规模为论文给出的整数近似值。
| 任务 | 训练集 | 开发集 | 测试集 | 任务类型 | 指标 | 领域 |
|---|---|---|---|---|---|---|
| CoLA | 8.5k | 1k | 1k | 可接受性判断 | 马修斯相关系数 | 语言学文献 |
| SST-2 | 67k | 872 | 1.8k | 情感 | 准确率 | 电影评论 |
| MRPC | 3.7k | 408 | 1.7k | 释义 | 准确率 / F1 | 新闻 |
| STS-B | 7k | 1.5k | 1.4k | 相似度 | 皮尔逊 / 斯皮尔曼相关 | 混合 |
| QQP | 364k | 40k | 391k | 释义 | 准确率 / F1 | 社区提问 |
| MNLI | 393k | 20k | 20k | 蕴含 | matched / mismatched 准确率 | 混合 |
| QNLI | 108k | 5.7k | 5.7k | 问答 / 蕴含 | 准确率 | 维基百科 |
| RTE | 2.5k | 276 | 3k | 蕴含 | 准确率 | 混合 |
| WNLI | 634 | 71 | 146 | 指代 / 蕴含 | 准确率 | 小说 |
从这张表能读出三件事。第一,规模梯度是刻意安排的:最大的 QQP 与 MNLI 在几十万条量级,最小的 WNLI 只有 634 条,这种梯度正是为了让"每个任务各训一个模型"的做法在小任务上吃亏。第二,除 STS-B 是回归、MNLI 是三分类之外,其余任务都是二分类。第三,测试集规模同样悬殊,WNLI 的测试集只有 146 条,这意味着它上一个样例的差别就会带来可见的分数跳动。
2.3 任务分成三组,各自的输入形态不同
| 组别 | 任务 | 输入 | 输出 |
|---|---|---|---|
| 单句任务 | CoLA、SST-2 | 一个句子 | 一个二值标签 |
| 相似度与释义任务 | MRPC、STS-B、QQP | 一对句子 | 二值标签(MRPC、QQP)或 0–5 的连续分(STS-B) |
| 推理任务 | MNLI、QNLI、RTE、WNLI | 一对句子 | MNLI 三分类,其余二分类 |
四個推理任务被统一改写成了自然语言推理的形式,这是 GLUE 最重要的一个工程决定。QNLI 原本是问答任务,被改写成"问句与句子是否构成答案关系";WNLI 原本是 Winograd 模式挑战,被改写成代词指代的二分类。改写的好处是所有任务都能用同一个模型骨架处理,代价是原任务的一部分细节被丢掉了——想要评测真正的问答抽取能力,QNLI 给不了。
2.4 提交文件的完整清单
官方 FAQ 给出了十一份预测文件的命名与内容要求,文件名必须严格一致,压缩包内不能有子目录。
| 文件名 | 对应任务 | 标签取值(官方要求的字符串) |
|---|---|---|
CoLA.tsv |
CoLA | 与训练数据标签一致(0 / 1) |
SST-2.tsv |
SST-2 | 与训练数据标签一致(0 / 1) |
MRPC.tsv |
MRPC | 与训练数据标签一致(0 / 1) |
STS-B.tsv |
STS-B | 与训练数据标签一致(连续分) |
QQP.tsv |
QQP | 与训练数据标签一致(0 / 1) |
MNLI-m.tsv |
MultiNLI matched | entailment / neutral / contradiction |
MNLI-mm.tsv |
MultiNLI mismatched | entailment / neutral / contradiction |
QNLI.tsv |
QNLI | entailment / not_entailment |
RTE.tsv |
RTE | entailment / not_entailment |
WNLI.tsv |
WNLI | 与训练数据标签一致(0 / 1) |
AX.tsv |
诊断集 | entailment / neutral / contradiction |
每份文件的格式都是带表头的两列,id 与 label 之间用制表符分隔,id 必须与官方无标签测试 TSV 里的 id 完全一致且从 0 递增。官方用字符串直接匹配标签,RTE 与 QNLI 必须写 entailment 或 not_entailment,写成 0/1 或大小写不一致都会导致该任务判错。官方 FAQ 里还给出了一份用于自检的行数参考,其中 AX.tsv 为 1105 行,CoLA.tsv 为 1064 行——这两个数字是"含表头的行数",与诊断集 1100 条样例、CoLA 测试集 1k 条规模相互印证。
2.5 各任务 TSV 的列结构
下列结构来自官方下载脚本产出的目录与官方 FAQ 的说明,列顺序以实际下载到的文件为准。
| 任务 | 训练 / 开发 TSV 主要列 | 测试 TSV 主要列 | 备注 |
|---|---|---|---|
| CoLA | source、label、label_notes、sentence |
index、sentence |
original/ 下另有 in_domain_train、in_domain_dev、out_of_domain_dev 的 raw 与 tokenized 两套 |
| SST-2 | sentence、label |
index、sentence |
官方说明给出的是已分好词的文本 |
| MRPC | Quality、#1 ID、#2 ID、#1 String、#2 String |
index、#1 ID、#2 ID、#1 String、#2 String |
官方不直接分发,需从原始站点取数后用官方脚本切分 |
| STS-B | index、genre、filename、year、old_index、source1、source2、sentence1、sentence2、score |
同上,去掉 score |
标签是 0 到 5 的连续分 |
| QQP | id、qid1、qid2、question1、question2、is_duplicate |
id、question1、question2 |
官方说明训练与开发文件里含少量畸形样例 |
| MNLI | index、promptID、pairID、genre、四列句法解析、sentence1、sentence2、label1、gold_label |
同上,去掉末尾标签列 | 官方 FAQ 特别提示:训练集标准答案在第 11 列,开发集在第 15 列 |
| QNLI | index、question、sentence、label |
index、question、sentence |
官方说明首版数据含可利用瑕疵,已重新发布 |
| RTE | index、sentence1、sentence2、label |
index、sentence1、sentence2 |
— |
| WNLI | index、sentence1、sentence2、label |
index、sentence1、sentence2 |
训练集规模最小的任务 |
| AX(诊断) | 四个现象列、一个 Domain 列、Premise、Hypothesis、Label,共八列 |
— | 前四列内部用分号分隔多个细粒度现象 |
MNLI 那一行的"第 11 列 / 第 15 列"是官方 FAQ 原文给出的提醒,也是最常见的踩坑点:开发集比训练集多出几列解析字段,如果按训练集的下标去取开发集标签,会静默取到错误的列而不报错。
2.6 诊断集的八列与三十三个现象
诊断集是 GLUE 里唯一由作者亲手构造的部分,其规格在官方诊断页与论文中都有完整说明。
| 列序 | 列名 | 取值 |
|---|---|---|
| 0 | Lexical Semantics | 分号分隔的细粒度现象名 |
| 1 | Predicate-Argument Structure | 分号分隔的细粒度现象名 |
| 2 | Logic | 分号分隔的细粒度现象名 |
| 3 | Knowledge & Common Sense | 分号分隔的细粒度现象名 |
| 4 | Domain | News / Reddit / Wikipedia / ACL / Artificial |
| 5 | Premise | 未分词的原始句子 |
| 6 | Hypothesis | 未分词的原始句子 |
| 7 | Label | entailment / contradiction / neutral |
三十三个细粒度现象分属四个粗粒度类别,这个分层本身就是它最有用的设计:
| 粗粒度类别 | 细粒度现象数 | 细粒度现象 |
|---|---|---|
| Lexical Semantics(词汇语义) | 7 | 词汇蕴含、形态否定、事实性、对称与集合性、冗余、命名实体、量词 |
| Predicate-Argument Structure(谓词论元结构) | 12 | 核心论元、介词短语、省略与隐含、回指与共指、主动被动、名物化、属格与部分格、与格、关系从句、并列范围、相交性、限制性 |
| Logic(逻辑) | 12 | 否定、双重否定、区间与数字、合取、析取、条件、全称、存在、时态、向上单调、向下单调、非单调 |
| Knowledge and Common Sense(知识与常识) | 2 | 常识、世界知识 |
句对的构造规则也有明确说明:每个来源域各 100 个句对,另有 150 个人工构造的句对,合计 550;每个句对正反两个方向各标一次,因此是 1100 条蕴含样例。标注时的刻意做法是让两句话在词汇与结构上高度重叠,只靠微小的改动改变蕴含关系——这是为了压制那些靠词汇重叠走捷径的模型。标注口径最接近 MultiNLI,官方因此要求提交时用模型的 MultiNLI 预测头去跑诊断集。
§3 它是谁的数据
3.1 贡献者与机构
GLUE 论文的作者是 Alex Wang、Amanpreet Singh、Julian Michael、Felix Hill、Omer Levy 与 Samuel R. Bowman,署名单位分别是纽约大学、华盛顿大学与 DeepMind。这个组合解释了它的两面性:学术侧提供了语言学现象的分层设计(诊断集的三十三个现象就来自这一支),工业侧提供了工程化的排行榜与数据托管。
但"贡献者"在 GLUE 这里要分两层看。第一层是组织者,也就是上面这六位与他们的机构,他们负责选任务、统一格式、构造诊断集、维护榜单。第二层是九个任务背后各自的原始数据集作者,他们才是语料的真正采集者。官方 FAQ 在致谢里单独点名感谢了 Quora(为 QQP 额外提供数据)、Ernie Davis(提供 Winograd 模式挑战的数据)与 Alex Warstadt 及其同事(提供 CoLA 数据)。引用时两层都要顾及,这也是它在文献里常被只引一半的原因。
3.2 时间线
| 时间 | 事件 |
|---|---|
| 2018 年 4 月 | 论文 arXiv:1804.07461 上线,基准与排行榜同期开放 |
| 2018 年 | 论文见于 EMNLP 2018 BlackboxNLP 研讨会论文集(W18-5446) |
| 2019 年 | 论文扩展版被 ICLR 2019 接收,任务表与诊断集说明进一步补全 |
| 2019 年 5 月 | SuperGLUE(arXiv:1905.00537)发布,八个更难的任务与新的排行榜 |
| 2020 年 12 月 | 官方下载脚本更新,注明不再下载 SNLI,需自行格式化 |
| 至今 | GLUE 保持开放,无固定截止日期;官方 FAQ 明示表现已饱和并推荐 SuperGLUE |
时间线里最值得注意的不是发布时间,而是"没有截止日期"这一条。官方 FAQ 明确说 GLUE 是一个开放式竞赛,没有截止日与预定结束日。这带来一个副作用:一个被设计成有保质期的基准,实际上被无限期使用,于是它的饱和状态也成了长期状态。
3.3 数据来源的三个层次
| 层次 | 内容 | 可否直接使用 |
|---|---|---|
| 第一层:原始采集 | 各数据集作者的原始采集,如电影评论、新闻句对、社区提问、维基百科段落、语言学文献例句 | 受各自许可约束 |
| 第二层:GLUE 标准化 | 格式统一为 TSV、划分统一为 train/dev/test、测试标签移除 | 官方直接分发(MRPC 除外) |
| 第三层:GLUE 自造 | 诊断集的 550 个句对与三十三个现象标注 | 由作者公开发布,用于分析而非打分 |
第三层的定位需要反复强调。官方诊断页写得毫不含糊:诊断集不是基准,是分析工具;它用来给模型的短板画粗线条,用来做错误分析、做模型间的定性比较、做能暴露弱点的对抗样例。把它当分数刷,就完全用反了。
3.4 为什么它不自己采集数据
不采集新数据是 GLUE 的主动选择,而非偷懒。理由有三条:一是复用已有数据集可以立刻获得大量已经过时间检验、被反复引用过的语料,省掉采集与标注的成本;二是已有数据集自带社区共识, reviewers 不需要重新争论"这个任务是否值得做";三是把重心放在"统一评测"而不是"新增语料",才能让整个基准在发布当年就被广泛采用。
代价是它继承了原始数据集的全部问题,包括许可碎片化、采集环境的不可控、以及各数据集内部本来就存在的标注瑕疵。GLUE 能做的是在 FAQ 里逐条点名这些瑕疵,而不是替它们修好。
§4 它最独特的东西
4.1 稀缺的不是数据,是"统一口径"这件事
数据集本身不稀缺:CoLA、SST-2、MRPC、STS-B、QQP、MNLI、QNLI、RTE、WNLI 这九份语料在 GLUE 之前都已存在并被大量使用。真正稀缺的是有人愿意把它们收进同一套划分、同一套提交格式、同一个排行榜,并且长期维护这套设施。
这件事的价值可以用一个反事实来说明:如果没有 GLUE,一个研究者想证明自己的模型"更通用",需要自己跑九个数据集、自己处理九种格式、自己处理测试集划分,并且要说服 reviewers 相信他的划分是公平的。GLUE 把这三件事一次性包办了,于是"通用性"从一个需要各自论证的主张,变成了一个可以查排行榜的数字。这也是它在两年内就成为预训练模型论文标准配置的原因。
4.2 规模梯度是被设计出来的,不是凑出来的
九个任务的训练集从 634 条到约 39.3 万条,跨度接近三个数量级。官方论文明确说明了这种安排的意图:如果每个任务单独训一个模型,那些数据稀缺的任务会因为训练样本太少而表现糟糕;只有在任务之间共享参数或表示,小任务才能借到大任务的力。换句话说,规模梯度本身就是一把尺,量的是"迁移能力"而不是"拟合能力"。
| 规模档 | 任务 | 对模型的要求 |
|---|---|---|
| 数百条 | WNLI(634) | 几乎不可能单靠本任务训练得好,必须靠迁移 |
| 数千条 | RTE(2.5k)、MRPC(3.7k)、STS-B(7k)、CoLA(8.5k) | 少量微调即可,但对初始化敏感 |
| 数万条 | SST-2(67k)、QNLI(108k) | 可独立训练,但共享底层仍有收益 |
| 数十万条 | QQP(364k)、MNLI(393k) | 数据充足,适合作为迁移源头 |
这张表的用法是:如果只想做单任务研究,选后两档;如果想验证迁移,必须把前两档一起报,否则梯度带来的压力就消失了。
4.3 诊断集:把"分数"拆成"现象"
这是它最独特、也最容易被跳过的部分。主任务给的是一个混合信号——一个模型在 RTE 上得 70 分,你不知道它丢的 30 分是败在否定、败在量词、还是败在世界知识。诊断集把这 30 分按三十三个现象拆开,虽然样例数是 1100 条、规模不足以支撑精细统计,但足以指出方向。
具体做法在官方诊断页有完整说明,可以概括成三步。第一步,把诊断集当成 MultiNLI 来跑,得到每条样例的预测标签。第二步,读取前四列的现象标签,一个样例可能同时带多个现象(同一粗类内用分号分隔),按现象名把样例分组。第三步,只做同一现象上的跨模型比较,或按现象分数从低到高翻具体句对做错误分析。
论文里还记录了一次反瑕疵审计:作者复现了只用假设句训练快速文本分类器的做法,这类分类器在 SNLI 与 MultiNLI 上能靠假设句的线索拿到远高于随机的成绩;放到诊断集上,两个分类器的表现都接近随机水平。这个结果说明诊断集至少不含这一类可被捷径利用的线索。
4.4 标注的两层:原始标注与官方重标注
GLUE 的标注其实有两层,混在一起就容易出错。第一层是九个任务从原始数据集继承的标注,比如 CoLA 的语法可接受性判断来自语言学文献的例句与专家判断,QQP 的重复问题标签来自社区平台,SST-2 的情感标签来自原始树库的标注。这些标注的质量、口径与噪声水平都各不相同,GLUE 不做修正。
第二层是 GLUE 自己做的标注,只有诊断集这一处。它由作者手工构造,来源句取自新闻首页链接的文章、Reddit 首页链接的帖子、维基百科特色条目以及近期 ACL 会议论文,另有 150 个纯人工构造的句对。标注时对每个句对的正反两个方向各判一次,并且刻意让同一来源句派生出多个标签不同的句对,以形成最小对立组。这层标注的粒度远细于第一层,它是 GLUE 唯一的原创内容。
4.5 边界条件:什么情况下它不再适用
| 条件 | 是否适用 | 判断依据 |
|---|---|---|
| 评测通用英文句子理解能力 | 适用,这是它的设计目标 | 官方首页自述 |
| 评测医学、法律等专业域的语言理解 | 不适用 | 全英文通用域,语料不含专业文本 |
| 评测中文或其他语言 | 不适用 | 官方论文明确声明不覆盖英语以外的语言 |
| 评测生成式或对话式能力 | 不适用 | 全部任务输出为类别或连续分 |
| 作为唯一的模型选型依据 | 谨慎,官方已声明饱和 | 官方 FAQ 建议改评 SuperGLUE |
| 商用产品的训练语料 | 需逐任务核许可 | 官方不提供统一许可 |
| 直接分析测试集做错误归因 | 禁止 | 官方规则禁止发布九个主任务测试集的详细分析 |
| 用它替代原始数据集的引用 | 不适用 | 九个任务构建于已有数据集之上 |
§5 怎么拿到
5.1 目录结构与下载面
官方提供两种方式:任务页逐个下载每任务的 zip,或用一个官方维护的便利脚本一次拉全。脚本的默认数据目录名为 glue_data,支持 --tasks 参数按逗号分隔选择感兴趣的任务。跑完全部任务后,目录树共 16 个子目录、56 个文件。
| 路径 | 内容 |
|---|---|
CoLA/ |
train.tsv、dev.tsv、test.tsv,加 original/raw/ 与 original/tokenized/ 各三个原始文件 |
SST-2/ |
三个 TSV,加 original/ 下的八个斯坦福树库原始文件 |
MRPC/ |
msr_paraphrase_train.txt、msr_paraphrase_test.txt、test.tsv |
STS-B/ |
三个 TSV,加 original/ 下三个原始 TSV、LICENSE.txt、readme.txt |
QQP/ |
train.tsv、dev.tsv、test.tsv |
MNLI/ |
train.tsv、dev_matched.tsv、dev_mismatched.tsv、test_matched.tsv、test_mismatched.tsv、README.txt,加 original/ 下六个原始文件 |
QNLI/ |
三个 TSV |
RTE/ |
三个 TSV |
WNLI/ |
三个 TSV |
diagnostic/ |
diagnostic.tsv |
每个主任务目录内的核心都是三份文件:train、dev 与不带标签的 test。MNLI 因为要分别报告 matched 与 mismatched,开发与测试各拆成两份,这是唯一一个目录结构不同的任务。
5.2 批量下载
#-- 取官方下载脚本;数据托管在 dl.fbaipublicfiles.com
wget https://gist.githubusercontent.com/W4ngatang/60c2bdb54d156a41194446737ce03e2e/raw/download_glue_data.py
#-- 一次拉九个任务加诊断集
python3 download_glue_data.py --data_dir glue_data --tasks all
#-- 只拉推理类任务,用逗号分隔任务名
python3 download_glue_data.py --data_dir glue_data --tasks MNLI,QNLI,RTE,WNLI
#-- MRPC 官方不分发,需先自备原始文件再用脚本按标准划分格式化
python3 download_glue_data.py --data_dir glue_data --tasks MRPC --path_to_mrpc /path/to/mrpc
脚本运行时会逐任务打印进度,有几个提示值得留意。MRPC 那一步会报"无法下载标准开发集 id,需要手动划分",这是官方声明过的限制而非脚本故障。MNLI 那一步会提示脚本自 2020 年 12 月起不再下载 SNLI,需要自行下载并格式化——这条提示针对的是想额外用 SNLI 做中间训练的人,跑 GLUE 本身不受影响。
5.3 单任务 zip 与诊断集的直取
不想跑脚本时,可以直接取任务 zip 与诊断集文件。各任务 zip 位于 dl.fbaipublicfiles.com/glue/data/ 下,文件名与任务名对应,其中 QQP 用的是清洗版、QNLI 用的是第二版。诊断集是一个单文件 AX.tsv,八列、带表头。
#-- 诊断集单文件,是八列 TSV
curl -O https://dl.fbaipublicfiles.com/glue/data/AX.tsv
#-- 单个任务包;MNLI 包内含 matched 与 mismatched 的开发与测试
curl -O https://dl.fbaipublicfiles.com/glue/data/MNLI.zip
curl -O https://dl.fbaipublicfiles.com/glue/data/QNLIv2.zip
5.4 用 pandas 读进来并核对列
import pandas as pd
#-- 读 MNLI 训练集;官方 FAQ 指出标准答案在第 11 列(0 起)
tr = pd.read_csv('glue_data/MNLI/train.tsv', sep='\t')
print(tr.shape, list(tr.columns))
print(tr.iloc[:, 11].name)
#-- 读开发集;官方提示开发集列数更多,标准答案在第 15 列
dev = pd.read_csv('glue_data/MNLI/dev_matched.tsv', sep='\t')
print(dev.shape, dev.iloc[:, 15].name)
#-- 读诊断集,八列,前四列内部用分号分隔多个现象
ax = pd.read_csv('glue_data/diagnostic/diagnostic.tsv', sep='\t')
print(ax.shape, list(ax.columns))
print(ax.iloc[:, 4].unique())
这段代码的重点不是读出数据,而是把官方 FAQ 点名的两个列位陷阱变成可执行的检查。训练集与开发集的标签列下标不同,如果代码里写死一个下标,会在两个地方静默出错。诊断集那行打印的是五个来源域的取值,用来确认文件没被截短或被错误地按逗号解析。
5.5 生成十一份提交文件
import pandas as pd
import os
#-- 预测字典:键是官方文件名,值是 DataFrame,含 index 与 prediction 两列
preds = {}
out = 'submission'
os.makedirs(out, exist_ok=True)
for fname, task_dir, split in [
('CoLA.tsv', 'CoLA', 'test.tsv'),
('SST-2.tsv', 'SST-2', 'test.tsv'),
('QQP.tsv', 'QQP', 'test.tsv'),
('QNLI.tsv', 'QNLI', 'test.tsv'),
('RTE.tsv', 'RTE', 'test.tsv'),
('WNLI.tsv', 'WNLI', 'test.tsv'),
]:
ids = pd.read_csv(f'glue_data/{task_dir}/{split}', sep='\t')['index']
y = preds[fname]
pd.DataFrame({'id': ids, 'label': y}).to_csv(
f'{out}/{fname}', sep='\t', index=False)
#-- MNLI 两份:matched 与 mismatched,标签必须写三个英文词
for fname, split in [('MNLI-m.tsv', 'test_matched.tsv'),
('MNLI-mm.tsv', 'test_mismatched.tsv')]:
ids = pd.read_csv(f'glue_data/MNLI/{split}', sep='\t')['index']
pd.DataFrame({'id': ids, 'label': preds[fname]}).to_csv(
f'{out}/{fname}', sep='\t', index=False)
写入完成后用 wc -l *.tsv 核一遍行数,这是官方 FAQ 给出的自检手段:任何一份文件缺 id 都会被判为无效提交。打包时不要建子目录,直接在文件所在目录 zip -r submission.zip *.tsv。
5.6 五个最容易出错的地方
第一,MNLI 的标签列位。 训练集与开发集的标签列下标不同,官方 FAQ 专门点名。写死下标的读取代码会在其中一边静默取错列。
第二,QNLI 有两个版本。 官方 FAQ 说明首版数据里存在可被利用的瑕疵,会让任务退化成一个更简单的问题,数据已重新发布。复现旧论文时要确认对方用的是哪一版,新旧文件名分别是 QNLI.zip 与 QNLIv2.zip。
第三,RTE 与 QNLI 的标签字符串。 官方用字符串直接匹配,必须写 entailment 或 not_entailment;MNLI 与诊断集必须写 entailment、neutral、contradiction。写成数字或大小写不符会整份判错。
第四,MRPC 不是从官方脚本直接下载的。 官方声明无法分发 MRPC,需要到原始站点取数据,再用官方脚本按标准划分格式化训练集、生成测试集格式。跳过这一步会让 MRPC 缺一份文件,进而导致整个压缩包不被评分。
第五,诊断集用错预测头。 官方诊断页说明诊断集的标注口径最接近 MultiNLI,提交时应跑模型的 MultiNLI 预测头。用 RTE 的二分类头去跑,输出的标签集合就少了一类。
§6 与库内条目的关系
6.1 关系图谱
| 站内词条 | 与 GLUE 的关系 | 分工 |
|---|---|---|
| CBLUE 中文生物医学语言理解评测基准 | 同为"多任务评测基准",但语言与领域都不同 | 中文医学方向用 CBLUE,英文通用方向用 GLUE |
| BLUE 基准(生物医学 NLP 十语料) | 同为基准,领域为生物医学英文 | 生物医学英文方向用 BLUE,通用英文用 GLUE |
| MedNLI | 同为自然语言推理任务,但语料来自临床文本 | 临床推理用 MedNLI,通用推理用 GLUE 的 MNLI/RTE |
| MedQA、MedMCQA、PubMedQA | 同为问答类评测 | 医学知识问答用这三个,GLUE 的 QNLI 只评测句子级推理 |
| MIMIC-IV-Note | 同为文本语料,但是原始临床自由文本,不是基准 | 需要在真实病历上做任务时用它,需要可比分数时用基准 |
| MedXpertQA、MultiMedBench、XMedBench | 同为综合评测集,面向医学与多模态 | 医学综合与多模态方向用它们 |
6.2 检索路径
如果你要的是"可比的分数",检索基准类词条,语言与领域是第一个筛选条件:英文通用走 GLUE 与 SuperGLUE,中文生物医学走 CBLUE,生物医学英文走 BLUE,医学多模态走 MultiMedBench 一类。如果你要的是"可加工的语料",检索语料类词条,去标识化临床文本走 MIMIC-IV-Note 一类。两类东西经常被混着找,但用途完全不同:基准给分数,语料给材料。
6.3 分工判据
| 你要做的事 | 该看谁 | 理由 |
|---|---|---|
| 证明英文预训练模型的通用性 | GLUE / SuperGLUE | 统一划分、公开排行榜、有历史对照 |
| 证明医学文本模型的能力 | MedNLI、CBLUE、BLUE | 领域匹配,GLUE 的语料不含专业文本 |
| 做中文任务 | CBLUE | GLUE 是纯英文 |
| 做句子级语言学现象分析 | GLUE 诊断集 | 三十三个现象的分层标注,别处没有 |
| 在真实病历上训练 | MIMIC-IV-Note | 基准的规模与领域都不适合当训练语料主力 |
§7 质量评估与局限性
7.0 阅读本节前的一个前置校正
评价一个基准,用的尺子和评价一个数据集不同。数据集看规模、看标注、看覆盖;基准还要多看一层:它是否还在有效地区分模型,以及它的分数是否真的量到了它声称要量的东西。GLUE 在这两层上的表现很不一致——它在第一层做得很扎实,在第二层已经被官方自己宣告失效(饱和)。下面按这把尺子评。
7.1 五维评分
| 维度 | 评分 | 依据 |
|---|---|---|
| 规模与梯度 | 5 / 5 | 九个任务训练集 634 条到约 39.3 万条,梯度是刻意设计的 |
| 标注质量 | 3 / 5 | 继承自原始数据集,良莠不齐;官方只在 FAQ 逐条提示,不统一修正 |
| 领域多样性 | 3 / 5 | 覆盖电影评论、新闻、维基百科、社区提问、语言学文献、小说,但全为英文通用域 |
| 工程可用性 | 5 / 5 | 统一格式、统一划分、下载脚本、自检手段、提交规则都写得很清楚 |
| 长期有效性 | 2 / 5 | 官方 FAQ 明示已饱和,并主动推荐改用 SuperGLUE |
五维里唯一低得刺眼的是长期有效性,而这恰恰是它最诚实的地方:一个基准自己承认自己被做完了,比一群人在上面刷零点几个点要有价值。
7.2 标注质量的两层
第一层继承自原始数据集。CoLA 的标签来自语言学文献中的可接受性判断,专业性高但样本偏窄;QQP 的标签来自社区平台的重复问题标记,规模大但官方自己承认训练与开发文件里有畸形样例;SST-2 的标签来自电影评论的情感标注,二值化之后丢掉了原始树库的中性档。GLUE 对这些差异的处理方式是"照单全收并在 FAQ 里点名",不做统一清洗。
第二层是诊断集,由作者手工构造,粒度远细于第一层,并且做过反瑕疵审计。这两层之间的质量落差很大,使用时要分开对待:主任务的分数受第一层噪声影响,诊断集的分析结论相对可信。
7.3 已知的、可枚举的偏差
| 偏差 | 表现 | 官方是否承认 |
|---|---|---|
| 语言单一 | 仅英文,不覆盖英语全部方言与其他语言 | 承认,写在论文的限制段 |
| 领域偏向通用 | 九个任务的领域都不含专业文本 | 承认,领域表逐条列出 |
| 语料含偏见 | 采集环境不受控,含刻板印象与偏见的证据 | 承认,论文明确提示 |
| 任务形态单一 | 全是分类或回归,无生成 | 事实如此,属于设计取舍 |
| 小任务不稳定 | WNLI 测试集 146 条,单样例影响可见 | 可由官方规模表推知 |
| 数据瑕疵 | QQP 畸形样例、QNLI 首版可利用瑕疵、MNLI 列位不一致 | 承认,FAQ 逐条点名 |
| 许可碎片化 | 无统一许可,需回到原始数据集 | 承认,FAQ 明确指引 |
| 测试集不可自查 | 标签私有且禁止详细分析 | 这是规则而非缺陷,但限制了外部审计 |
7.4 外部验证矩阵
| 用途 | 是否胜任 | 说明 |
|---|---|---|
| 作为预训练模型的标准对照 | 胜任 | 两年内成为论文标配,划分固定便于复现 |
| 作为迁移能力的压力测试 | 胜任 | 规模梯度迫使模型共享参数 |
| 作为语言学能力的诊断工具 | 胜任,但只能定性 | 1100 条样例不足以支撑精细比较 |
| 作为领域能力的证明 | 不胜任 | 不含专业域语料 |
| 作为长期研究目标 | 不胜任 | 官方已宣告饱和 |
| 作为训练语料主力 | 勉强 | 规模尚可但许可碎片化,且部分任务规模过小 |
7.5 它为何仍在被使用
一个被官方宣告饱和的基准还能长期存在,有三个原因。第一,它成了历史坐标系:2018 到 2021 年间绝大多数预训练模型论文都报了 GLUE,后来的模型如果不报,就与那段文献失去了可比的锚点。第二,它的工程设施最完整:下载脚本、自检手段、提交格式、诊断看板都还在,跑一遍的成本远低于自建基准。第三,诊断集这个设计没有被后继者完全取代——SuperGLUE 有 AX-b 与 AX-g 两个诊断任务,但分层现象的细度仍不及 GLUE 的三十三个类别。
§8 生态位与历史
8.1 历史沿革
GLUE 出现在 2018 年 4 月,正好卡在预训练语言模型起飞的前夜。它发布时最好的基线还是基于 ELMo 的迁移方案与当时的句表示模型,论文里的判断是"最好的模型绝对分数仍然偏低,诊断集上的表现同样疲弱"。一年之内,BERT 一类的方法把分数推到了接近非专家人类的水平,基准的区分能力迅速耗尽。
SuperGLUE 在 2019 年 5 月发布,直接回应了这个局面:换上八个更难的任务、更丰富的任务形态、新的排行榜与配套的人类基线。它的人类基线与 BERT 基线之间留出了近二十分的差距,这是 GLUE 当时已经给不出的空间。
8.2 与挑战赛的关系
GLUE 不是挑战赛,是一个开放式榜单。官方 FAQ 明确说没有截止日期、没有预定结束日,规则只有一条硬约束:不许在九个主任务的测试集上训练或调优,也不许自行标注这些测试集或以任何其他方式用它们改进提交的系统;此外不许发布针对测试集的详细分析,违反者会被从排行榜移除。每天最多两份提交,评分等待至少五分钟,上榜最多等二十四小时,总分低于论文最佳基线 70% 的提交不显示。
8.3 生态位:通用性的公共坐标系
它的生态位可以概括成一句话:在预训练时代,它是"通用英文句子理解"这件事的公共坐标系。这句话有三层含义——它提供的是相对位置而非绝对能力;它只覆盖英文通用域;它的价值随时间衰减。认识到第二层,才知道医学、法律等方向需要各自的基准;认识到第三层,才知道什么时候该换到 SuperGLUE。
8.4 谁在用它,用来做什么
| 使用者 | 用法 |
|---|---|
| 预训练模型研究者 | 报告九任务总分作为通用性证据,与同期模型对照 |
| 迁移学习研究者 | 用大小任务的落差论证参数共享或中间训练的效果 |
| 语言学导向的分析者 | 用诊断集按现象拆解模型短板、构造对抗样例 |
| 医学等其他领域的研究者 | 把它当域外基线,用来衡量领域模型损失了多少通用能力 |
| 教学与工程复现 | 用固定划分与公开脚本做可复现的实验课基线 |
§9 使用指引
9.1 三种角色的路径
| 角色 | 建议路径 |
|---|---|
| 做通用英文 NLU 的工程师 | 下载全部九个任务与诊断集 → 按 §5.4 核对列位 → 先跑开发集建立基线 → 提交一次测试集预测 → 用诊断集按现象找短板 |
| 做医学垂直 NLP 的研究者 | 不要把它当主评测 → 用它跑一个域外基线数字 → 与站内医学基准的分数并列报告 → 在讨论里说明通用域与专业域的落差 |
| 做评测方法学或教学的人 | 重点读诊断集的设计与官方对它的使用限制 → 用它的"分数 vs 诊断"双姿态讲清评价的两难 |
9.2 一条最短的可用流程
第一步,跑官方下载脚本取全量数据(MRPC 需自备原始文件)。第二步,用 pandas 读一个任务,核对列名与标签列下标,尤其核对 MNLI 的训练集第 11 列与开发集第 15 列。第三步,只跑 SST-2 与 MNLI 这两个规模充足的任务,建立可用的开发集基线。第四步,补跑 RTE 与 WNLI 这两个小任务,观察迁移是否真的发生。第五步,用 MultiNLI 的预测头跑诊断集,按三十三个现象分组看,找出最低的那一类,翻出对应句对人工看一遍。第六步,确认标签字符串写法与文件命名无误后打包提交。
9.3 引用方式
引用要引两层:GLUE 本身的论文,以及你实际用到的每个任务的原始数据集论文。GLUE 论文以 ICLR 2019 版本为完整版,研讨会版本为 EMNLP 2018 BlackboxNLP。
@inproceedings{wang2019glue,
title = {GLUE: A Multi-Task Benchmark and Analysis Platform
for Natural Language Understanding},
author = {Wang, Alex and Singh, Amanpreet and Michael, Julian
and Hill, Felix and Levy, Omer and Bowman, Samuel R.},
booktitle = {International Conference on Learning Representations},
year = {2019}
}
数据集侧则须按官方 FAQ 的指引,回到各原始数据集自己的论文与许可。官方论文附录给出了全部数据的出处与处理方式的细节,这是唯一权威的引用清单。
本词条在站内的链接形如 https://www.qianfanghub.com/ai-ready-dataset/glue/1815,其中的 __RID__ 由发布脚本在入库时替换为真实编号,写作时不填具体数字。
§10 AI 使用声明
| 项目 | 声明 |
|---|---|
| 文本生成 | 本文由 AI 辅助撰写,编辑把关结构与事实 |
| 数字来源 | 规模、结构、边界三类数字来自 GLUE 官方首页、官方 FAQ、官方诊断页与官方论文(arXiv:1804.07461) |
| 文件核验 | 官方首页、官方 FAQ、官方诊断页经直接访问确认可访问;数据托管地址与下载脚本来自官方公开资料 |
| 不一致说明 | 各任务列结构在官方 FAQ 与不同版本的下载产物间存在差异,已在 §2.5 标注"以实际下载文件为准" |
| 论文信息 | 论文任务表与诊断集规格取自公开全文;未逐条核对最新版下载产物的列序 |
| 未核验内容 | 各任务测试集的实际行数与标签、诊断集各细粒度现象的样例条数、榜单当前最高分的系统与分数 |
| 图像 | 无配图;封面为生成式提示词,不含真实数据截图 |
| 免责 | 本文不构成选型建议;使用九个任务须分别遵守其原始数据集的许可 |
常见误读(避坑清单)
| 说法 | 实际 | 证据 |
|---|---|---|
| GLUE 是九个新数据集 | 九个任务全部构建于已有数据集之上,官方只做标准化与重划分 | 官方首页与 FAQ |
| 总分高就说明模型真的理解语言 | 官方已声明 GLUE 表现饱和,并建议改用 SuperGLUE | 官方 FAQ 第三条 |
| 诊断集分数可以在类别之间比较 | 官方明说同一模型在不同类别上的对比没有意义 | 官方诊断页 Usage 段 |
| 提交十份文件就够了 | 需要十一份,MNLI 拆成 matched 与 mismatched,另加 AX | 官方 FAQ 文件命名清单 |
| RTE 与 QNLI 写 0/1 就行 | 官方用字符串直接匹配,必须是 entailment 与 not_entailment |
官方 FAQ 第七条 |
| MRPC 能从官方脚本直接下到 | 官方声明无法分发,需从原始站点取数再用官方脚本格式化 | 官方 FAQ 第四条 |
| 训练集与开发集的标签列下标一样 | MNLI 训练集在第 11 列、开发集在第 15 列 | 官方 FAQ 第四条 |
| QNLI 只有一版 | 首版含可利用瑕疵,数据已重新发布 | 官方 FAQ 第四条 |
| GLUE 有统一许可 | 官方明确指引用户回到各原始数据集各自的许可 | 官方 FAQ 第五条 |
| 可以分析测试集来做错误归因 | 官方禁止发布九个主任务测试集的详细分析,违者移除榜单 | 官方 FAQ 第二条 |
| 它能评测中文或医学文本 | 全英文通用域,官方论文声明不覆盖其他语言 | 官方论文限制段 |
FAQ
Q1:GLUE 和 SuperGLUE 到底该用哪个?
官方 FAQ 的回答很干脆:GLUE 上的表现已经饱和,因此他们发布了更难的 SuperGLUE,并建议改在 SuperGLUE 上评测。SuperGLUE 有八个任务,形态比 GLUE 丰富,除了 GLUE 里延续下来的 RTE,还有是非问答、三分类蕴含、因果推理、多跳阅读理解、完形式阅读理解、词义消歧与代词消解;它从设计之初就配了人类基线,人类基线与 BERT 基线之间留出近二十分的差距。实践上的取舍是:如果你想与 2018 到 2021 年的文献可比,两个都要报;如果你只想找一个还有区分度的榜单,只报 SuperGLUE。
Q2:为什么诊断集的分数不能当成分数用?
官方诊断页给出的理由是,这些样例是被人为挑选出来针对特定语言学现象的,因此不代表语言的自然分布,哪怕在它覆盖的那些领域内也不代表。设计者有意选择能揭示模型行为的句子,所以原始分数要"带一点怀疑地看"。他们给出的正确使用方式有两种:比较不同模型在同一类别上的分数,或者把分数当成线索去翻具体句对做错误分析、构造对抗样例。此外诊断集规模只有 1100 条样例,分摊到三十三个现象之后每类都不多,也支撑不起精细比较。
Q3:测试集标签拿不到,我怎么知道自己的系统是真的好?
官方的设计正是要让这件事只能靠测试集服务器回答,规则层面禁止在九个主任务的测试集上训练或调优,也禁止自行标注或用任何其他方式拿它们改进提交的系统。可行的替代路径有三条:一是用开发集做全部的模型选择与调参,开发集是带标签的;二是做跨任务的一致性检查,小任务上的表现是否符合你从大任务推断出的迁移预期;三是用诊断集做现象级的定性检查,它的标签是公开的,可以本地分析。
Q4:我想做医学文本的自然语言推理,能用 GLUE 的 MNLI 或 RTE 吗?
能用作对照,不能用作主评测。MNLI 与 RTE 的语料是通用英文,不含临床文本,因此在它们上的分数无法说明模型在病历、文献或医患对话上的推理能力。合理的做法是:把 GLUE 跑出来的数字当作"域外通用基线",与站内医学方向基准上的数字并列报告,用两者的落差说明领域迁移的代价。反过来,也不要把医学基准上的分数当成通用能力的证据——两个方向的不当外推都常见。
Q5:九个任务的许可都不一样,我该从哪儿查?
官方 FAQ 第五条写得很明确:九个主任务构建于并派生自已有数据集,官方指引用户回到各原始数据集附带的许可。也就是说 GLUE 本身不提供统一许可,也没有一个总的许可文件可以签。实际操作时,官方下载脚本拉下来的目录里部分任务保留了原始许可文件,例如 STS-B 目录下有 LICENSE.txt,SST-2 与 MNLI 目录下有 README.txt;其余任务需要回到各自的原始发布站点核对。商用或二次分发之前,这一步不能跳过。
术语表
| 术语 | 解释 |
|---|---|
| GLUE | General Language Understanding Evaluation,通用语言理解评测基准 |
| NLU | Natural Language Understanding,自然语言理解 |
| 自然语言推理(NLI) | 给定前提与假设,判断蕴含、矛盾或中立 |
| 单句任务 | 输入只有一个句子的任务,GLUE 里是 CoLA 与 SST-2 |
| 句对任务 | 输入一对句子的任务,包括相似度、释义与推理三类 |
| CoLA | 语言可接受性语料,判断句子是否合乎英语语法 |
| SST-2 | 斯坦福情感树库的二分类版本,判断电影评论句的正负情感 |
| MRPC | 微软释义语料,判断新闻句对是否语义等价 |
| STS-B | 语义文本相似度基准,输出 0 到 5 的连续分 |
| QQP | Quora 问题对,判断两个社区提问是否同义 |
| MNLI | 多体裁自然语言推理语料,三分类,测试分 matched 与 mismatched |
| QNLI | 由问答数据改写而成的推理任务,判断句子是否回答了问句 |
| RTE | 文本蕴含识别系列数据的集合,二分类 |
| WNLI | 由 Winograd 模式挑战改写而成的代词指代二分类任务 |
| AX | GLUE 诊断集在提交体系中的文件代号 |
| 诊断集 | 人工构造、按语言学现象打标的分析用数据,不参与总分 |
| R₃ | 三类情形下马修斯相关系数的推广,用于诊断集评分 |
| 马修斯相关系数 | 兼顾四类混淆矩阵的相关系数,适用于类别不均衡的二分类 |
| 饱和 | 榜单分数接近人类水平,已难以区分模型优劣 |
| SuperGLUE | GLUE 的后继基准,八个更难的任务 |
| 私有测试标签 | 从未以任何形式公开的测试集标签,由服务器持有 |
| 迁移学习 | 把在一个任务上学到的表示或参数用到另一个任务 |
| 中间训练 | 先在相关数据上训练再微调目标任务 |
| 最小对立组 | 仅差微小改动却标签不同的句对,用于压制表面线索 |
| 反瑕疵审计 | 检验数据是否含有可被捷径利用的线索 |
| TSV | 制表符分隔的纯文本表格格式 |
附录 A:核心数字核对表
| 项 | 值 | 来源 | 来源层级 |
|---|---|---|---|
| 主任务数 | 9 | 官方首页自述 | 官方页面 |
| 提交文件数 | 11 | 官方 FAQ 第一条 | 官方页面 |
| 诊断集句对数 | 550 | 官方论文第四节 | 官方论文 |
| 诊断集样例数 | 1100 | 官方论文第四节 | 官方论文 |
| 诊断集来源构成 | 四个域各 100 个句对 + 人工 150 个 | 官方论文第四节 | 官方论文 |
| 诊断集来源域 | News、Reddit、Wikipedia、ACL、Artificial | 官方诊断页 Format 段 | 官方页面 |
| 诊断集列数 | 8 | 官方诊断页 Format 段 | 官方页面 |
| 粗粒度现象类别 | 4 | 官方论文表三 | 官方论文 |
| 细粒度现象数 | 33(7 + 12 + 12 + 2) | 官方论文表三 | 官方论文 |
| 最大任务训练集 | MNLI 约 393k | 官方论文表一 | 官方论文 |
| 最小任务训练集 | WNLI 634 | 官方论文表一 | 官方论文 |
| 最小任务测试集 | WNLI 146 | 官方论文表一 | 官方论文 |
| 私有测试标签的任务数 | 4 | 官方论文正文 | 官方论文 |
| 榜单显示门槛 | 总分低于 70% 不显示 | 官方 FAQ 第七条 | 官方页面 |
| 每日提交上限 | 2 份 | 官方 FAQ 第一条 | 官方页面 |
| 下载后目录树规模 | 16 个子目录、56 个文件 | 官方下载脚本产出 | 官方脚本 |
| 语言范围 | 仅英文 | 官方论文限制段 | 官方论文 |
| 许可 | 无统一许可,回到原始数据集 | 官方 FAQ 第五条 | 官方页面 |
| 首次发布 | 2018 年 4 月,arXiv:1804.07461 | 官方论文 | 官方论文 |
| 后继基准发布 | 2019 年 5 月,arXiv:1905.00537 | SuperGLUE 官方站 | 官方页面 |
附录 B:数字的来源分层
第一层:官方页面与官方论文。 任务构成、九个任务的训练开发与测试规模、指标、领域、诊断集的句对数与样例数、来源域构成、现象分类的层级与数量、提交文件命名与标签写法、榜单门槛与提交规则、语言范围与许可声明。这些来自官方首页、官方 FAQ、官方诊断页与官方论文的表一、表三与第四节。
第二层:官方脚本与托管地址。 下载后的目录树规模、MRPC 不随脚本分发的限制、SNLI 不在脚本内的提示、QNLI 的两个版本文件名。这些来自官方维护的下载脚本与其运行输出,属于文件层面的事实。
第三层:未核验。 各任务测试集的实际行数与标签内容、诊断集各细粒度现象各自的样例条数、榜单当前的最高分及其系统。前者受私有标签规则限制无法核验,中者需要下载诊断集后按现象列拆分,后者会随时间变化。正文中涉及这三类的地方一律只做定性表述或引用官方给出的提示值。
附录 C:完整参考文献
| 编号 | 文献 | 链接 | 用途 |
|---|---|---|---|
| 1 | GLUE 官方站 | https://gluebenchmark.com/ | 首页自述、任务与榜单入口 |
| 2 | GLUE 官方 FAQ | https://gluebenchmark.com/faq | 提交文件命名、标签写法、数据瑕疵、许可、榜单规则 |
| 3 | GLUE 官方诊断集说明页 | https://gluebenchmark.com/diagnostics | 诊断集列格式、来源域、使用限制 |
| 4 | Wang 等,GLUE 论文,arXiv:1804.07461 | https://arxiv.org/abs/1804.07461 | 任务表、诊断集构造、语言学现象分类 |
| 5 | Wang 等,GLUE 论文,EMNLP 2018 BlackboxNLP | https://aclanthology.org/W18-5446/ | 研讨会版出处 |
| 6 | SuperGLUE 官方站 | https://super.gluebenchmark.com/ | 后继基准的任务构成与人类基线 |
| 7 | Wang 等,SuperGLUE 论文,arXiv:1905.00537 | https://arxiv.org/abs/1905.00537 | 八个任务的设计与基线差距 |
| 8 | GLUE 官方数据下载脚本 | https://gist.githubusercontent.com/W4ngatang/60c2bdb54d156a41194446737ce03e2e/raw/download_glue_data.py | 目录结构、MRPC 与 SNLI 的限制说明 |
附录 D:任务代码
任务一:核对九个任务的划分文件是否齐整
import os
#-- 官方下载脚本的默认目录;MNLI 的开发与测试各拆两份
EXPECT = {
'CoLA': ['train.tsv', 'dev.tsv', 'test.tsv'],
'SST-2': ['train.tsv', 'dev.tsv', 'test.tsv'],
'MRPC': ['msr_paraphrase_train.txt', 'msr_paraphrase_test.txt', 'test.tsv'],
'STS-B': ['train.tsv', 'dev.tsv', 'test.tsv'],
'QQP': ['train.tsv', 'dev.tsv', 'test.tsv'],
'MNLI': ['train.tsv', 'dev_matched.tsv', 'dev_mismatched.tsv',
'test_matched.tsv', 'test_mismatched.tsv'],
'QNLI': ['train.tsv', 'dev.tsv', 'test.tsv'],
'RTE': ['train.tsv', 'dev.tsv', 'test.tsv'],
'WNLI': ['train.tsv', 'dev.tsv', 'test.tsv'],
}
root = 'glue_data'
for task, files in EXPECT.items():
missing = [f for f in files if not os.path.exists(os.path.join(root, task, f))]
print(f'{task:6} 缺文件 {missing}' if missing else f'{task:6} 齐整')
任务二:按诊断集的现象列拆出句对做错误分析
import pandas as pd
#-- 八列:四个现象列 + Domain + Premise + Hypothesis + Label
ax = pd.read_csv('glue_data/diagnostic/diagnostic.tsv', sep='\t')
cols = list(ax.columns)
print(cols)
#-- 前四列内部用分号分隔多个细粒度现象
def tags(row, i):
v = row[cols[i]]
return [] if pd.isna(v) else [t.strip() for t in str(v).split(';') if t.strip()]
#-- 取出所有带"Downward Monotone"标签的句对,人工看模型的失败模式
target = 'Downward Monotone'
sub = ax[ax.apply(lambda r: target in tags(r, 2), axis=1)]
for _, r in sub.head(5).iterrows():
print('---', target)
print('P:', r['Premise'])
print('H:', r['Hypothesis'])
print('L:', r['Label'])
第二段代码给出的是诊断集的正确打开方式:不是算分数,而是按现象名把句对捞出来逐条看。论文里的三十三个现象名都可以用同样的方式检索,前四列分别对应词汇语义、谓词论元结构、逻辑、知识与常识。
附录 E:如果只记五件事
| 序号 | 记住什么 | 为什么 |
|---|---|---|
| 1 | 九个任务,全部来自已有数据集,官方只做统一 | 引用与许可都要回到原始数据集 |
| 2 | 规模梯度 634 条到约 39.3 万条是刻意设计 | 它量的是迁移能力,不是拟合能力 |
| 3 | 诊断集 550 个句对、1100 条样例、33 个现象 | 用来找短板,不用来刷分数 |
| 4 | 提交要十一份文件,标签字符串必须严格匹配 | 缺一份或写错一个词,整包不评分 |
| 5 | 官方已宣告饱和并推荐 SuperGLUE | 拿它当主战场会被问"为什么不用更难的" |
编辑说明
本文的核验时间为 2026 年 10 月 29 日。核对方式为直接访问 GLUE 官方首页、官方 FAQ 与官方诊断集说明页,并检索官方论文全文,逐条确认任务构成、九个任务的规模与指标、诊断集的句对数与来源构成、现象分类的层级与数量、提交文件的命名与标签写法、榜单门槛与提交规则、语言范围与许可声明。数据托管地址与下载脚本来自官方公开资料,目录树规模取自脚本产出。
未覆盖的内容包括:各任务测试集的实际行数与标签内容、诊断集各细粒度现象各自的样例条数、榜单当前的最高分及其系统。前一项受私有测试标签的规则限制,中一项需要下载诊断集后按现象列拆分,后一项随时间变化。正文中凡涉及这三类的地方一律只做定性表述。各任务 TSV 的列序在不同版本的下载产物之间可能有细微差异,§2.5 已标注"以实际下载到的文件为准"。
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- alma-archive — 共享标签:评测基准
- i2b2-n2c2-nlp — 共享标签:评测基准
- cblue — 共享标签:评测基准
- blurb — 共享标签:评测基准
- tus-rec — 共享标签:评测基准
- biosses — 共享标签:评测基准
- tg3k — 共享标签:评测基准
- qmugs — 共享标签:评测基准
- openpros — 共享标签:评测基准
- ai4life-mdc24 — 共享标签:评测基准
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

