Skip to content

Assegnazione delle attività

Controlla come Potato distribuisce gli elementi di annotazione agli annotatori. Copre tutte le strategie di assegnazione, inclusa la strategia Batch personalizzata per gli studi a turni ripetuti, e il recupero delle assegnazioni abbandonate da lavoratori Prolific o bloccati dal QC.

L'assegnazione delle attività controlla quali elementi vede ogni annotatore, quanti ne completa, quante annotazioni riceve ciascun elemento e l'ordine in cui gli elementi compaiono. Questa pagina illustra le strategie di assegnazione di Potato, la strategia Batch personalizzata per i disegni di studio a turni ripetuti e come recuperare le assegnazioni abbandonate dai lavoratori in crowdsourcing.

Strategie di assegnazione

Imposta assignment_strategy su uno dei seguenti valori:

StrategiaCosa fa
randomAssegna gli elementi in modo casuale (valore predefinito).
fixed_orderAssegna gli elementi nell'ordine del set di dati.
least_annotatedDà la priorità agli elementi con il minor numero di annotazioni finora.
max_diversityDà la priorità agli elementi con il maggior disaccordo tra le annotazioni esistenti.
diversity_clusteringIncorpora e raggruppa gli elementi in cluster, poi li serve a rotazione tra i cluster.
batchLimita l'assegnazione a coorti esplicite di annotatori/elementi (vedi sotto).
priorityServe per primi gli elementi con la priorità più alta; vedi la coda di triage.
active_learningUsa un modello per dare la priorità agli elementi incerti.
yaml
assignment_strategy: random
max_annotations_per_user: 10    # -1 for unlimited
max_annotations_per_item: 3     # -1 for unlimited

Assegnazione Batch personalizzata

La strategia batch assegna lotti predefiniti di elementi a specifici annotatori. È pensata per i disegni di studio a turni ripetuti, in cui gli stessi annotatori che hanno visto un lotto del primo turno devono ricevere il lotto corrispondente del secondo turno.

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

Per i lotti lunghi, sposta l'elenco delle istanze in un file di dati separato (json, jsonl, csv, tsv o parquet); gli ID vengono letti 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

Gli elementi possono anche indicare direttamente i propri annotatori consentiti, il che è utile quando i dati del secondo turno vengono generati dalle annotazioni del primo:

yaml
assignment_strategy: batch
 
batch_assignment:
  annotator_key: round1_annotators

Gli utenti al di fuori delle coorti configurate non ricevono alcun elemento con questa strategia.

Recupero delle assegnazioni abbandonate

Nei lotti di crowdsourcing, i lavoratori possono restituire gli elementi, andare in timeout o non superare i controlli di qualità dopo aver ricevuto gli elementi assegnati. Con instance_reclaim abilitato, Potato restituisce al pool gli elementi assegnati ma non annotati, in modo che possano essere assegnati di nuovo.

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

Il recupero viene eseguito automaticamente per le assegnazioni obsolete quando viene eseguita l'assegnazione, per i lavoratori Prolific i cui invii diventano RETURNED, TIMED-OUT o REJECTED, e per gli utenti bloccati per il mancato superamento di un controllo dell'attenzione (che rilasciano immediatamente i propri elementi non annotati).

Puoi decidere, motivo per motivo, se conservare le annotazioni completate di un lavoratore recuperato. Questo ti consente di fidarti del lavoro parziale di un lavoratore Prolific andato in timeout, scartando al contempo tutto ciò che proviene da un lavoratore bloccato dal controllo 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

Quando preserve_completed_annotations è false, Potato cancella le annotazioni di quell'utente per gli elementi a lui assegnati, rimuove il suo riconoscimento come annotatore e restituisce gli elementi al pool. La risposta fallita al controllo dell'attenzione che attiva un blocco non viene mai conservata.

Correlati

Per i dettagli di implementazione, consulta la documentazione sorgente.