异构标注者覆盖
为不同条目分配不同数量的标注者。配置默认上限、用于质量监控的分层重叠样本、自适应分歧提升、每位标注者配额以及自动裁决路由。
异构覆盖让你能够为不同条目分配不同数量的标注者,而不是采用统一上限。常见的研究设计是:对大多数条目使用一名标注者,并在 5–10% 的样本上让两到三名标注者重叠以监控质量。Potato 通过 num_annotators_per_item 和 per_annotator_quota 配置块来表达这一点。
每条目标注者上限
num_annotators_per_item 是规范键。它接受单个整数作为统一上限,或接受一个带默认值、重叠样本以及可选自适应提升的结构化映射:
num_annotators_per_item:
default: 1
overlap_sample:
fraction: 0.1
count: 3
stratify_by: domain
seed: 42
adaptive:
enabled: true
disagreement_threshold: 0.5
boost_to: 3
min: 1max_annotations_per_item 现在是 num_annotators_per_item: <int> 的已弃用别名。
重叠样本
overlap_sample 块会在一个确定性的条目子集上提高上限以监控质量。采样在启动时进行一次,所选条目会被打上 required_annotations 标记,以便分配逻辑将它们视为高覆盖条目。
| 字段 | 类型 | 描述 |
|---|---|---|
fraction | (0, 1] 内的浮点数 | 要采样的条目比例 |
count | int ≥ 2 | 采样条目的标注者上限(必须超过 default) |
stratify_by | 字符串(可选) | 用于对样本进行分层的条目数据字段 |
seed | int(可选) | RNG 种子;默认为全局 random_seed |
设置 stratify_by 时,比例会按层应用,因此每个类别都按比例贡献。
自适应提升
自适应提升会扩大那些早期标注者出现分歧的条目的上限。一旦某个条目至少有两个标注,且其分歧分数超过 disagreement_threshold,其上限就会提升到 boost_to,并且该条目会重新进入分配队列。每个条目仅提升一次。
每位标注者配额
per_annotator_quota 控制为每位标注者分配多少条目,独立于每条目上限:
per_annotator_quota:
default: 100
by_user:
alice: 30
by_user_role:
expert: 30
novice: 200
user_roles:
alice: expert
carol: novice解析顺序:by_user[uid] → by_user_role[user_roles[uid]] → default。
裁决自动路由
当裁决块启用时,达到上限的重叠样本条目会被自动评分,如果一致性低于 agreement_threshold,就会被推入裁决队列。低质量条目会在样本饱和时立即显现,而不必等到裁决者手动重建队列。
adjudication:
enabled: true
adjudicator_users: [admin]
min_annotations: 2
agreement_threshold: 0.75检查一致性
一旦重叠样本条目饱和,一致性统计数据便可在 /admin/iaa 处获取,它会计算适合每个模式 annotation_type 的指标集——例如,名义型方案使用 Cohen's 和 Fleiss' kappa,序数型方案使用加权 kappa,跨度(span)使用词元级 kappa 加上 span F1。有关这些指标含义的说明,请参见标注者间一致性指南。
示例
一个可运行的演示位于 examples/advanced/heterogeneous-coverage/。从仓库根目录运行:
python potato/flask_server.py start examples/advanced/heterogeneous-coverage/config.yaml -p 8000它使用了横跨两个领域的 20 个条目,按领域分层抽取 20% 用于 3 名标注者重叠,在阈值 0.5 处启用自适应提升,定义了两个专长层级,并将低一致性条目路由到裁决。
相关
有关实现细节,请参见源文档。