Skip to content

任务分配

控制 Potato 如何将标注项分发给标注者。涵盖所有分配策略,包括用于多轮重复研究的自定义 Batch 策略,以及从 Prolific 或被 QC 阻止的工作者那里回收已放弃的分配。

任务分配控制每位标注者看到哪些标注项、完成多少个、每个标注项获得多少次标注,以及标注项出现的顺序。 本页介绍 Potato 的分配策略、用于多轮重复研究设计的自定义 Batch 策略,以及如何回收众包工作者放弃的分配。

分配策略

assignment_strategy 设置为以下之一:

策略作用
random随机分配标注项(默认值)。
fixed_order按数据集顺序分配标注项。
least_annotated优先分配迄今为止标注次数最少的标注项。
max_diversity优先分配现有标注中分歧最大的标注项。
diversity_clustering对标注项进行嵌入和聚类,然后跨聚类轮询分发。
batch将分配限制于明确的标注者/标注项群组(见下文)。
priority优先分发优先级最高的标注项;参见 分诊队列
active_learning使用模型优先分配不确定的标注项。
yaml
assignment_strategy: random
max_annotations_per_user: 10    # -1 for unlimited
max_annotations_per_item: 3     # -1 for unlimited

自定义 Batch 分配

batch 策略将预定义的标注项批次分配给特定标注者。它专为多轮重复研究设计而构建,在这类设计中,看过第一轮批次的同一批标注者必须收到与之匹配的第二轮批次。

yaml
assignment_strategy: batch
num_annotators_per_item: 4
 
batch_assignment:
  groups:
    - name: round1_batch_a
      annotators: ["u1", "u2", "u3", "u4"]
      instances: ["r2_item_001", "r2_item_002"]

对于较长的批次,将实例列表移到单独的数据文件中(jsonjsonlcsvtsvparquet);ID 通过 item_properties.id_key 读取:

yaml
batch_assignment:
  groups:
    - name: round1_batch_a
      annotators: ["u1", "u2", "u3", "u4"]
      instances_file: batches/round1_batch_a.csv

标注项也可以直接指定其允许的标注者,这在第二轮数据由第一轮标注生成时非常有用:

yaml
assignment_strategy: batch
 
batch_assignment:
  annotator_key: round1_annotators

在此策略下,处于已配置群组之外的用户不会收到任何标注项。

回收已放弃的分配

在众包批次中,工作者在收到所分配的标注项后可能会退回、超时或未通过质量检查。启用 instance_reclaim 后,Potato 会将已分配但未标注的标注项返回到池中,以便再次分配。

yaml
instance_reclaim:
  enabled: true
  timeout_hours: 24
  preserve_completed_annotations: true

回收会在以下情况下自动运行:分配运行时针对陈旧的分配、针对提交状态变为 RETURNEDTIMED-OUTREJECTED 的 Prolific 工作者,以及针对因注意力检查失败而被阻止的用户(他们会立即释放其未标注的标注项)。

你可以按原因分别决定是否保留被回收工作者已完成的标注。这样你既可以信任超时 Prolific 工作者的部分工作,又能丢弃被质量控制阻止的工作者的全部内容:

yaml
instance_reclaim:
  enabled: true
  timeout_hours: 24
  preserve_completed_annotations: true   # default for reasons not overridden below
 
  prolific:
    status_policies:
      TIMED-OUT:
        preserve_completed_annotations: true
      RETURNED:
        preserve_completed_annotations: true
      REJECTED:
        preserve_completed_annotations: false
 
  quality_control:
    preserve_completed_annotations: false

preserve_completed_annotationsfalse 时,Potato 会清除该用户对其所分配标注项的标注,撤销其标注者贡献记录,并将这些标注项返回到池中。触发阻止的那次失败的注意力检查回答永远不会被保留。

相关内容

有关实现细节,请参阅 源文档