Skip to content

Aggregare le etichette della crowd: oltre il voto di maggioranza

Come combinare tante annotazioni rumorose in un'unica etichetta con modelli di annotatore come Dawid-Skene e MACE, quando fidarsene e come Potato stima la competenza e inferisce le etichette.

Quando più persone etichettano lo stesso elemento, il voto di maggioranza è il modo ovvio di combinare le risposte e di solito quello sbagliato. I modelli che stimano l'affidabilità di ciascun annotatore recuperano etichette migliori, individuano gli spammer e ti dicono quanta fiducia riporre nel risultato. Ma tutti quanti presuppongono che esista una sola risposta corretta, quindi nei task soggettivi devi prima decidere se il disaccordo è errore da eliminare o segnale da conservare. Questa guida copre i principali modelli di aggregazione, l'assunzione che hanno in comune e come farne girare uno in Potato.

Il problema che il voto di maggioranza fa finta non esista

Raccogli tre etichette per un elemento e prendi la maggioranza. Funziona quando gli annotatori si equivalgono e per lo più hanno ragione. Si rompe nel momento in cui non è così. Il voto di maggioranza conta allo stesso modo un esperto scrupoloso e un bot che clicca a caso, butta via la ripartizione dei voti (un 2-1 e un 3-0 escono uguali) e non ti dà modo di distinguere un elemento davvero difficile da un annotatore svogliato. È il problema della truth inference: recuperare insieme l'etichetta vera latente e l'affidabilità di ogni annotatore, partendo solo dalla matrice delle etichette.

Modelli a matrice di confusione: Dawid e Skene

Il metodo di riferimento ha quasi 50 anni. Dawid e Skene (1979) hanno modellato ogni annotatore con una matrice di confusione, cioè le probabilità che etichetti come positivo un elemento realmente positivo, come negativo, e così via, e hanno usato l'expectation-maximization per stimare congiuntamente quelle matrici e le etichette vere. Un annotatore che confonde due categorie ottiene una matrice di confusione che lo dice, e il suo voto su quella distinzione pesa di meno. Quasi tutti i modelli di aggregazione moderni discendono da questa idea.

MACE: competenza e individuazione dello spam

Hovy et al. (2013) hanno introdotto MACE (Multi-Annotator Competence Estimation), che aggiunge un modello esplicito dello spamming: ogni annotatore viene trattato come uno che conosce la risposta oppure tira a indovinare, e MACE stima la probabilità che stesse tirando a indovinare su ciascun elemento. Ne esce un unico punteggio di competenza per annotatore tra 0 e 1, più un'entropia per elemento che segnala gli elementi davvero ambigui. È veloce, coglie bene chi clicca a caso, ed è il modello incluso in Potato.

Modelli bayesiani e l'evidenza dalle rassegne

Il campo è cresciuto ben oltre questi due. Paun et al. (2018) hanno confrontato una famiglia di modelli di annotazione bayesiani su dataset reali e hanno trovato che battono sistematicamente il voto di maggioranza, soprattutto quando la qualità degli annotatori varia molto, offrendo per di più un'incertezza calibrata che puoi propagare a valle. Sul versante ingegneristico, Zheng et al. (2017) hanno messo a confronto 17 metodi di truth inference chiedendosi se il problema fosse risolto. La risposta breve: nessun metodo vince ovunque, ma quasi tutti battono il voto di maggioranza, e il divario cresce man mano che la qualità delle etichette cala.

L'assunzione che tutti questi condividono

Ogni modello visto sopra presuppone che esista un'etichetta vera e che il disaccordo sia errore. Per i task oggettivi va bene. Per quelli soggettivi è proprio sbagliato: su offensività, emozione o giudizio morale due annotatori possono divergere perché leggono davvero il testo in modo diverso, e Plank (2022) sostiene che questa variazione nelle etichette umane è spesso segnale, non rumore. Se la aggreghi via, hai buttato quello che rendeva i dati interessanti. (Ne parliamo più a fondo in Il disaccordo è segnale, non rumore.)

È qui che comincia a contare sapere chi ha annotato. NUTMEG (Ivey, Gauch e Jurgens, 2025) è un modello bayesiano costruito esattamente per questa tensione: usa le informazioni di background degli annotatori per separare il disaccordo legittimo e sistematico dal rumore, togliendo dai dati di addestramento le etichette date con leggerezza e conservando il disaccordo che dipende da chi è l'annotatore. Funziona solo se quel background l'hai raccolto. Se somministri un questionario demografico preliminare (vedi raccogliere i dati demografici degli annotatori in modo responsabile e gli strumenti di survey di Potato), hai i metadati sugli annotatori che serve a un modello in stile NUTMEG; senza, ti tocca trattare ogni disaccordo o come tutto errore o come tutto segnale.

Farlo in Potato

Potato esegue MACE sui tuoi dati multi-annotatore e riporta competenza ed etichette inferite nella dashboard di amministrazione. Funziona sugli schemi categoriali (radio, likert, select, multiselect) e ha bisogno di sovrapposizione reale, più annotatori per elemento, per avere qualcosa da stimare.

yaml
mace:
  enabled: true
  trigger_every_n: 10            # re-estimate after every 10 new annotations
  min_annotations_per_item: 3    # ignore items with fewer than 3 labels
  min_items: 5                   # wait for at least 5 eligible items

Dopo l'esecuzione, ogni annotatore riceve un punteggio di competenza (vicino a 1.0 è affidabile, sotto 0.5 è probabilmente uno spammer) e ogni elemento un'etichetta prevista più un valore di entropia. Entropia bassa vuol dire che il modello è sicuro; entropia vicina al massimo vuol dire nessun consenso, e di solito segnala un elemento davvero difficile o poco specificato più che un cattivo annotatore. Tutte le opzioni sono nel riferimento della funzionalità MACE.

Due note pratiche. Primo, aggrega sulla sovrapposizione che hai effettivamente raccolto, MACE ha bisogno di più etichette per elemento, quindi pianifica la sovrapposizione prima dello studio, non dopo. Secondo, MACE ti restituisce un'etichetta sola; se il tuo task è soggettivo, valuta di tenere la distribuzione con uno schema soft_label, e ricorri all'adjudication solo dove ti serve davvero una risposta unica.

Quando aggregare e quando tenere la dispersione

Una regola di massima:

  • Task oggettivo, esiste una vera chiave di risposta → aggrega su un'etichetta sola. Usa MACE o il voto di maggioranza e vai avanti.
  • Task quasi oggettivo, ma alcuni annotatori sono inaffidabili → aggrega con un modello di competenza (MACE), non con il semplice voto di maggioranza, così i valutatori scadenti non spostano il risultato.
  • Task soggettivo, il disaccordo ha significato → conserva l'intera distribuzione (soft_label) e, se hai metadati sugli annotatori, modella il disaccordo invece di cancellarlo.

Approfondimenti