标注者间一致性详解
一份关于标注者间一致性的实用指南,涵盖百分比一致率、Cohen kappa、Fleiss kappa 与 Krippendorff alpha,说明何时使用各项指标,以及 Potato 如何报告它们。
标注者间一致性(IAA)衡量独立标注者给出相同标签的频率。它是证明标注任务定义清晰、所得标签可信的标准证据。 一致性偏低通常说明标注指南不够清晰,而非标注者粗心。
这一主题的总称是评分者间信度。Potato 会在管理后台中实时计算一致性,参见质量控制。
为什么原始百分比一致率还不够
最简单的指标是百分比一致率:标注者给出完全相同标签的条目所占比例。问题在于,部分一致是偶然发生的。如果两位标注者都有 90% 的概率选择"正面",那么即便随机标注,他们大多数时候也会一致。经过偶然性校正的指标能解决这一问题。
经过偶然性校正的系数具有如下形式:
P_observed − P_expected
κ = ─────────────────────────
1 − P_expected
其中 P_observed 是实际一致率,P_expected 是偶然情况下预期的一致率。取值为 1 表示完全一致,0 表示与随机水平相当。
你真正会用到的三种指标
- Cohen kappa:两位标注者、分类标签。成对标注的经典选择。
- Fleiss kappa:多于两位标注者、分类标签,且不同条目可能由不同评分者判定。
- Krippendorff alpha:最通用的选择。它适用于任意数量的标注者,能处理缺失数据,并支持名义、有序、等距和等比数据。这是 Potato 默认报告的指标。
成对的简单分类任务用 kappa;当标注者较多、重叠不完整,或标签为有序/连续值(此时"相差一级"应比"相差四级"扣分更少)时,则选用 Krippendorff alpha。
三名标注者时用 Fleiss' kappa 还是 Krippendorff's alpha?
如果三名标注者都标注了每一条数据,且标签是无序类别,两种系数都说得过去。如果有任何一条数据缺少标签,或者标签是有序的,就用 Krippendorff's alpha。
两者的差别在于各自的假设:
- 缺失标签。 Fleiss' kappa 要求每条数据的评分数相同。如果三名标注者中有一人跳过了某条数据,你就得把这条数据删掉。Krippendorff's alpha 会用上它拿到的每一个评分。
- 测量层次。 Fleiss' kappa 把标签当作无序的,因此在 1–5 分量表上,4 对 5 与 1 对 5 算作同样的分歧。Krippendorff's alpha 使用距离度量(名义、定序、定距或定比),把相近的差异算作较小的分歧。
- 小样本。 Krippendorff's alpha 含有小样本校正,所以在只有几十条数据的试标中,即使数据同时适合两者,两者的结果也可能拉开。
在完整的名义数据上、数据量足够时,两者通常很接近。报告你所在领域惯用的那一个,并在论文中写明系数和度量,因为"一致性为 0.72"在两者之下含义不同。
Potato 会同时报告多个系数,而不是让你事先只选一个。分类型标注方案会并列给出百分比一致率、Cohen's kappa、Fleiss' kappa 和名义 alpha,有序型标注方案则给出线性加权 kappa、二次加权 kappa、Spearman's rho 和定序 alpha。在 2.9 版本之前,带文字标签的 Likert 量表在计算定序 alpha 时按字母顺序排列文字标签,实际上成了名义 alpha,所以如果你用更早的版本报告过带文字标签量表的定序一致性,请重新计算。在 2.10.1 及更早的版本中,定序 alpha 按名次之间的简单差值给分歧加权,这不是 Krippendorff 的定序度量。从 2.10.2 起,它与计算器给出的定序 alpha 一致,所以用更早版本报告过的定序 alpha 都应重新计算。你也可以用浏览器中的一致性计算器检查一张标签表,它会同时计算名义、定序和定距 alpha,以及 Cohen's kappa 和 Fleiss' kappa。
如何解读这个数值
并不存在通用的判定阈值,但对于 alpha/kappa,常见的粗略参考是:
- ≥ 0.80:足以信赖。
- 0.67–0.80:可用于得出初步结论,但需排查分歧。
- < 0.67:在信任这些标签之前,先重新审视标注指南。
把这些数值当作进一步排查的提示,而非"通过/不通过"的硬性门槛。务必查看是哪些条目和哪些标签导致了分歧。
在 Potato 中进行测量
让标注者在一个共享子集上重叠标注,然后启用一致性报告:
agreement_metrics:
enabled: true
min_overlap: 2 # an item counts once this many annotators have answered it
refresh_interval: 60 # seconds between dashboard updates对于跨度(span)和结构化任务,应在你关心的层级上测量一致性,因为文档级指标会掩盖边界上的分歧。对于跨度标注方案,Potato 会报告词元级 kappa、精确匹配和部分匹配的跨度 F1、基于逐字符标签的 Krippendorff's alpha,以及 Mathet 的 gamma 的简化形式,这样你就能把对标签的分歧和对跨度起点的分歧区分开。
当一致性偏低时
- 阅读存在分歧的条目:是标注指南含糊,还是条目本身确实困难?
- 收紧定义,并把疑难案例作为示例补充进去。参见撰写标注指南。
- 重新试标。如果在真正主观的任务上一致性仍然偏低,可考虑直接记录分歧本身,而不是强求唯一答案。
常见问题
以下问题涉及 Krippendorff's alpha 的取值范围、它的计算方法,以及只有两名标注者时的一致性。
Krippendorff's alpha 会小于 -1 吗?
不会。当标注者之间的分歧多于偶然情况下的预期时,alpha 会低于 0,并且会趋近 -1 但不会达到 -1。两名标注者在 N 个条目上全部不一致、且两个标签使用频率相同时,alpha 恰好等于 -1 + 1/N,5 个条目时为 -0.8,20 个条目时为 -0.95。Krippendorff (2011) 给出的与信度相关的取值范围是 0 到 1,并把低于 0 的值归因于系统性分歧或抽样误差。明显为负的 alpha 说明存在系统性分歧,例如标注者把量表的方向理解反了,这时应当检查标注指南,而不是直接报告这个数值。
Krippendorff's alpha 怎么计算?
alpha 等于 1 减去观测分歧与偶然预期分歧之比。观测分歧来自同一条目上所得标签两两组成的配对,预期分歧来自从研究中全部标签里抽取的配对,并由距离度量(名义、定序、定距或定比)决定每处不一致计多少分。Potato 在 min_overlap 名标注者标注了同一条目之后,会在管理后台中按标注方案分别计算 alpha;一致性计算器则在浏览器中根据一张标签表计算名义、定序和定距 alpha。
只有两名标注者能计算标注者间一致性吗?
能。Cohen's kappa 正是为恰好两名标注者、分类标签的情形设计的,Krippendorff's alpha 在两名标注者和更多标注者时都适用。两种系数都要求这两名标注者独立标注了相同的条目,而且条目很少时估计值不稳定,所以报告系数时要同时报告条目数。