Skip to content

L'accordo tra annotatori spiegato

Guida pratica all'accordo tra annotatori: percentuale di accordo, kappa di Cohen e di Fleiss, alpha di Krippendorff, quando usare ciascuno e come Potato li riporta.

L'accordo tra annotatori (IAA) misura quanto spesso annotatori indipendenti assegnano la stessa etichetta. È la prova standard che un task di annotazione è ben definito e che le etichette prodotte sono affidabili. Un accordo basso di solito significa che le linee guida non sono chiare, non che gli annotatori siano stati sbrigativi.

L'argomento generale è l'affidabilità tra valutatori. Potato calcola l'accordo in tempo reale nella dashboard di amministrazione, vedi Controllo qualità.

Perché la percentuale di accordo grezza non basta

La misura più semplice è la percentuale di accordo: la frazione di elementi che gli annotatori hanno etichettato in modo identico. Il problema è che una parte dell'accordo capita per caso. Se due annotatori scelgono entrambi «positivo» nel 90% dei casi, concorderanno quasi sempre anche etichettando a caso. Le misure corrette per il caso risolvono questo problema.

Un coefficiente corretto per il caso ha questa forma:

text
        P_observed − P_expected
  κ =  ─────────────────────────
            1 − P_expected

dove P_observed è l'accordo effettivo e P_expected è l'accordo atteso per caso. Un valore di 1 indica accordo perfetto, 0 indica il livello del caso.

Le tre che userai davvero

  • Kappa di Cohen: due annotatori, etichette categoriali. La scelta classica per una coppia.
  • Kappa di Fleiss: più di due annotatori, etichette categoriali, quando elementi diversi possono essere giudicati da valutatori diversi.
  • Alpha di Krippendorff: l'opzione più generale. Funziona con qualsiasi numero di annotatori, gestisce i dati mancanti e supporta dati nominali, ordinali, a intervalli e di rapporto. È quella che Potato riporta di default.

Usa il kappa per semplici coppie con etichette categoriali; passa all'alpha di Krippendorff quando hai molti annotatori, una sovrapposizione incompleta o etichette ordinate o continue, dove sbagliare di uno dovrebbe pesare meno che sbagliare di quattro.

Kappa di Fleiss o alfa di Krippendorff con tre annotatori?

Se tutti e tre gli annotatori hanno etichettato ogni item e le etichette sono categorie non ordinate, entrambi i coefficienti sono difendibili. Se a un item manca un'etichetta, o se le etichette sono ordinate, usa l'alfa di Krippendorff.

I due differiscono in ciò che presuppongono:

  • Etichette mancanti. La kappa di Fleiss richiede lo stesso numero di valutazioni per ogni item. Se uno dei tre annotatori ha saltato un item, devi scartare quell'item. L'alfa di Krippendorff usa tutte le valutazioni disponibili.
  • Livello di misura. La kappa di Fleiss tratta le etichette come non ordinate, quindi su una scala da 1 a 5 un 4 contro un 5 conta come lo stesso disaccordo di un 1 contro un 5. L'alfa di Krippendorff accetta una metrica di distanza (nominale, ordinale, a intervalli o di rapporto) e conta le differenze piccole come disaccordi minori.
  • Campioni piccoli. L'alfa di Krippendorff include una correzione per i campioni piccoli, quindi in un pilota di qualche decina di item i due possono divergere anche quando i dati si adattano a entrambi.

Con dati nominali completi e un numero ragionevole di item, i due di solito sono vicini. Riporta quello che si aspetta il tuo campo e indica nel paper coefficiente e metrica, perché «l'accordo era 0,72» significa cose diverse con l'uno o con l'altro.

Potato riporta più coefficienti insieme invece di costringerti a sceglierne uno in partenza. Uno schema categoriale riceve affiancati la percentuale di accordo, la kappa di Cohen, la kappa di Fleiss e l'alfa nominale, e uno schema ordinato la kappa con ponderazione lineare, la kappa con ponderazione quadratica, la rho di Spearman e l'alfa ordinale. Prima della versione 2.9, l'alfa ordinale di una scala Likert con etichette testuali ordinava le etichette in ordine alfabetico, rendendolo di fatto nominale, quindi ricalcola l'accordo ordinale sulle scale con etichette testuali se l'hai riportato con una versione precedente. Fino alla versione 2.10.1 l'alfa ordinale pesava un disaccordo con la semplice differenza tra i ranghi, che non è la metrica ordinale di Krippendorff. Dalla 2.10.2 coincide con l'alfa ordinale del calcolatore, quindi ricalcola ogni alfa ordinale che hai riportato con una versione precedente. Puoi anche controllare una tabella di etichette nel browser con il calcolatore di accordo, che calcola l'alfa nominale, ordinale e a intervalli insieme alle kappa di Cohen e di Fleiss.

Interpretare il numero

Non esiste una soglia universale, ma per alpha e kappa si usa spesso questa indicazione di massima:

  • ≥ 0,80: abbastanza alto da farci affidamento.
  • 0,67–0,80: utilizzabile per conclusioni provvisorie, ma vale la pena esaminare i disaccordi.
  • < 0,67: rivedi le linee guida prima di fidarti delle etichette.

Prendili come spunti per indagare, non come esami da superare. Guarda sempre quali elementi e quali etichette generano il disaccordo.

Misurarlo in Potato

Fai lavorare gli annotatori in sovrapposizione su un sottoinsieme condiviso, poi attiva il calcolo dell'accordo:

yaml
agreement_metrics:
  enabled: true
  # Krippendorff's alpha is reported in the admin dashboard.

Per i task a span e quelli strutturati, misura l'accordo al livello che ti interessa davvero, perché le metriche a livello di documento nascondono i disaccordi sui confini. Per gli schemi a span Potato riporta la kappa a livello di token, l'F1 sugli span a match esatto e parziale, l'alfa di Krippendorff sulle etichette per carattere e una forma semplificata del gamma di Mathet, così puoi separare un disaccordo sull'etichetta da un disaccordo su dove inizia lo span.

Quando l'accordo è basso

  1. Leggi gli elementi su cui c'è disaccordo: è ambigua la linea guida o è l'elemento a essere davvero difficile?
  2. Rendi le definizioni più stringenti e aggiungi i casi difficili come esempi. Vedi Scrivere le linee guida di annotazione.
  3. Rifai il pilota. Se su task genuinamente soggettivi l'accordo resta basso, valuta di registrare il disaccordo stesso invece di forzare una risposta unica.

Domande frequenti

Le domande seguenti riguardano l'intervallo di valori dell'alfa di Krippendorff, come si calcola e l'accordo con soli due annotatori.

L'alfa di Krippendorff può essere minore di -1?

No. L'alfa scende sotto 0 quando gli annotatori sono in disaccordo più di quanto preveda il caso, e si avvicina a -1 senza raggiungerlo. Due annotatori in disaccordo su ciascuno di N item, che usano due etichette con la stessa frequenza, danno un alfa di esattamente -1 + 1/N, cioè -0,8 con 5 item e -0,95 con 20. Krippendorff (2011) indica come intervallo rilevante per l'affidabilità quello da 0 a 1 e attribuisce i valori sotto 0 a un disaccordo sistematico o a un errore di campionamento. Un alfa nettamente negativo indica un disaccordo sistematico, per esempio annotatori che leggono una scala in direzioni opposte, e richiede di rivedere le linee guida invece di riportare il numero.

Come si calcola l'alfa di Krippendorff?

L'alfa è 1 meno il rapporto tra il disaccordo osservato e il disaccordo atteso per caso. Il disaccordo osservato deriva dalle coppie di etichette assegnate allo stesso item, e il disaccordo atteso deriva da coppie estratte da tutte le etichette dello studio, con una metrica di distanza (nominale, ordinale, a intervalli o di rapporto) che stabilisce quanto pesa ogni discrepanza. Potato lo calcola per ogni schema di annotazione nella dashboard di amministrazione non appena min_overlap annotatori hanno etichettato lo stesso item, e il calcolatore di accordo calcola nel browser l'alfa nominale, ordinale e a intervalli a partire da una tabella di etichette.

Si può calcolare l'accordo tra annotatori con soli due annotatori?

Sì. La kappa di Cohen è pensata proprio per due annotatori con etichette categoriali, e l'alfa di Krippendorff funziona sia con due annotatori sia con più di due. Entrambi i coefficienti richiedono che i due annotatori abbiano etichettato gli stessi item in modo indipendente, e con pochi item la stima è instabile, quindi riporta il numero di item accanto al coefficiente.

Approfondimenti