Skip to content

Asignación de tareas

Controla cómo Potato distribuye los elementos de anotación entre los anotadores. Cubre todas las estrategias de asignación, incluida la estrategia Batch personalizada para estudios de rondas repetidas, y la recuperación de asignaciones abandonadas por trabajadores de Prolific o bloqueados por QC.

La asignación de tareas controla qué elementos ve cada anotador, cuántos completa, cuántas anotaciones recibe cada elemento y el orden en que aparecen los elementos. Esta página cubre las estrategias de asignación de Potato, la estrategia Batch personalizada para diseños de estudios de rondas repetidas y cómo recuperar asignaciones abandonadas por trabajadores de crowdsourcing.

Estrategias de asignación

Establece assignment_strategy en uno de los siguientes valores:

EstrategiaQué hace
randomAsigna elementos de forma aleatoria (el valor predeterminado).
fixed_orderAsigna elementos en el orden del conjunto de datos.
least_annotatedDa prioridad a los elementos con menos anotaciones hasta el momento.
max_diversityDa prioridad a los elementos con mayor desacuerdo entre las anotaciones existentes.
diversity_clusteringIncrusta y agrupa los elementos en clústeres y luego los sirve por turnos entre los clústeres.
batchRestringe la asignación a cohortes explícitas de anotadores/elementos (ver más abajo).
prioritySirve primero los elementos de mayor prioridad; consulta la cola de triaje.
active_learningUsa un modelo para priorizar los elementos inciertos.
yaml
assignment_strategy: random
max_annotations_per_user: 10    # -1 for unlimited
max_annotations_per_item: 3     # -1 for unlimited

Asignación Batch personalizada

La estrategia batch asigna lotes predefinidos de elementos a anotadores específicos. Está pensada para diseños de estudios de rondas repetidas, donde los mismos anotadores que vieron un lote de la primera ronda deben recibir el lote correspondiente de la segunda ronda.

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"]

Para lotes largos, mueve la lista de instancias a un archivo de datos aparte (json, jsonl, csv, tsv o parquet); los identificadores se leen con item_properties.id_key:

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

Los elementos también pueden indicar directamente sus anotadores permitidos, lo cual resulta útil cuando los datos de la segunda ronda se generan a partir de las anotaciones de la primera:

yaml
assignment_strategy: batch
 
batch_assignment:
  annotator_key: round1_annotators

Los usuarios que estén fuera de las cohortes configuradas no reciben ningún elemento con esta estrategia.

Recuperación de asignaciones abandonadas

En los lotes de crowdsourcing, los trabajadores pueden devolver los elementos, agotar el tiempo o no superar los controles de calidad después de recibir los elementos asignados. Con instance_reclaim activado, Potato devuelve al grupo los elementos asignados pero sin anotar para que puedan asignarse de nuevo.

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

La recuperación se ejecuta automáticamente para las asignaciones obsoletas cuando se ejecuta la asignación, para los trabajadores de Prolific cuyos envíos pasan a estado RETURNED, TIMED-OUT o REJECTED, y para los usuarios bloqueados por no superar una verificación de atención (que liberan de inmediato sus elementos sin anotar).

Puedes decidir, según el motivo, si conservar las anotaciones completadas de un trabajador recuperado. Esto te permite confiar en el trabajo parcial de un trabajador de Prolific cuyo tiempo se agotó y, al mismo tiempo, descartar todo lo de un trabajador bloqueado por el control de calidad:

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

Cuando preserve_completed_annotations es false, Potato borra las anotaciones de ese usuario para sus elementos asignados, elimina su crédito como anotador y devuelve los elementos al grupo. La respuesta fallida de la verificación de atención que desencadena un bloqueo nunca se conserva.

Relacionado

Para conocer los detalles de implementación, consulta la documentación de origen.