Skip to content

Affectation des tâches

Contrôlez la façon dont Potato distribue les éléments d'annotation aux annotateurs. Couvre toutes les stratégies d'affectation, y compris la stratégie Batch personnalisée pour les études à plusieurs tours, ainsi que la récupération des affectations abandonnées par les travailleurs Prolific ou bloqués par le QC.

L'affectation des tâches détermine quels éléments chaque annotateur voit, combien il en termine, combien d'annotations chaque élément reçoit et dans quel ordre les éléments apparaissent. Cette page présente les stratégies d'affectation de Potato, la stratégie Batch personnalisée pour les conceptions d'études à plusieurs tours et la manière de récupérer les affectations abandonnées par les travailleurs de crowdsourcing.

Stratégies d'affectation

Définissez assignment_strategy sur l'une des valeurs suivantes :

StratégieCe qu'elle fait
randomAffecte les éléments de façon aléatoire (valeur par défaut).
fixed_orderAffecte les éléments dans l'ordre du jeu de données.
least_annotatedDonne la priorité aux éléments ayant reçu le moins d'annotations jusqu'à présent.
max_diversityDonne la priorité aux éléments présentant le plus de désaccord entre les annotations existantes.
diversity_clusteringPlonge et regroupe les éléments en clusters, puis les sert à tour de rôle entre les clusters.
batchRestreint l'affectation à des cohortes explicites d'annotateurs/d'éléments (voir ci-dessous).
prioritySert d'abord les éléments les plus prioritaires ; voir la file de triage.
active_learningUtilise un modèle pour prioriser les éléments incertains.
yaml
assignment_strategy: random
max_annotations_per_user: 10    # -1 for unlimited
max_annotations_per_item: 3     # -1 for unlimited

Affectation Batch personnalisée

La stratégie batch affecte des lots prédéfinis d'éléments à des annotateurs précis. Elle est conçue pour les études à plusieurs tours, où les mêmes annotateurs qui ont vu un lot du premier tour doivent recevoir le lot correspondant du second tour.

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

Pour les lots longs, déplacez la liste des instances dans un fichier de données distinct (json, jsonl, csv, tsv ou parquet) ; les identifiants sont lus avec item_properties.id_key :

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

Les éléments peuvent aussi désigner directement leurs annotateurs autorisés, ce qui est utile lorsque les données du second tour sont générées à partir des annotations du premier :

yaml
assignment_strategy: batch
 
batch_assignment:
  annotator_key: round1_annotators

Les utilisateurs qui ne font pas partie des cohortes configurées ne reçoivent aucun élément avec cette stratégie.

Récupération des affectations abandonnées

Dans les lots de crowdsourcing, les travailleurs peuvent renvoyer les éléments, dépasser le délai imparti ou échouer aux contrôles de qualité après avoir reçu les éléments affectés. Avec instance_reclaim activé, Potato renvoie dans le pool les éléments affectés mais non annotés afin qu'ils puissent être affectés de nouveau.

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

La récupération s'exécute automatiquement pour les affectations obsolètes lors de l'exécution de l'affectation, pour les travailleurs Prolific dont les soumissions passent à l'état RETURNED, TIMED-OUT ou REJECTED, et pour les utilisateurs bloqués à la suite d'un échec à un contrôle d'attention (qui libèrent immédiatement leurs éléments non annotés).

Vous pouvez décider, motif par motif, de conserver ou non les annotations terminées d'un travailleur récupéré. Cela vous permet de faire confiance au travail partiel d'un travailleur Prolific dont le délai a expiré tout en écartant tout ce que produit un travailleur bloqué par le contrôle qualité :

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

Lorsque preserve_completed_annotations vaut false, Potato efface les annotations de cet utilisateur pour les éléments qui lui ont été affectés, retire son crédit d'annotateur et renvoie les éléments dans le pool. La réponse de contrôle d'attention défaillante qui déclenche un blocage n'est jamais conservée.

Voir aussi

Pour les détails d'implémentation, consultez la documentation source.