Intermedio7 min di letturaAggiornato

Classificazione zero-shot: come un modello capisce regole scritte a parole

Come fa un modello a far rispettare «Niente spoiler» se non è mai stato addestrato su quella regola? Inferenza in linguaggio naturale e regole personalizzate.

Il problema

Un classificatore classico conosce solo le categorie su cui è stato addestrato. Ma ogni community ha le sue regole: niente spoiler, niente vendita di account, si parla solo di calcio, niente link ad altri server. Addestrare un modello nuovo per ogni regola di ogni community è impossibile.

La classificazione zero-shot risolve il problema: il modello riceve la categoria come frase al momento della richiesta, e giudica se il testo la rispetta.

L'inferenza in linguaggio naturale (NLI)

Molti classificatori zero-shot si basano su un compito chiamato inferenza in linguaggio naturale. Il modello riceve due testi:

  • una premessa (qui: il messaggio in chat),
  • un'ipotesi (qui: una regola o la descrizione di una categoria),

e decide se la premessa implica l'ipotesi, la contraddice o è neutra.

Premessa (messaggio)IpotesiRisposta
«ahah alla fine il cane muore»«Questo messaggio rivela la trama di un film o di una serie.»implica
«qualcuno ha visto il finale?»«Questo messaggio rivela la trama di un film o di una serie.»non implica
«vendo account livello 80, scrivetemi»«Questo messaggio offre di comprare o vendere account di gioco.»implica

La probabilità di «implica» diventa il punteggio della regola. Lo stesso meccanismo vale per le categorie fisse: «insulto» è solo l'ipotesi «Questo messaggio insulta una persona».

Perché generalizza

In addestramento il modello vede centinaia di migliaia di coppie premessa-ipotesi su ogni tipo di argomento. Non impara le regole in sé: impara la capacità di verificare se un testo corrisponde a una descrizione. Questa capacità vale anche per regole mai viste, in ogni lingua che il modello conosce.

Scrivere buone regole

  • Concreto batte astratto. «Niente compravendita o scambio di account e oggetti» funziona meglio di «Rispetta l'economia del gioco».
  • Un'idea per regola. Dividi «Niente spam e niente politica» in due regole.
  • Descrivi il comportamento, non una lista di parole. «Non rivelare il finale di film o serie» prende gli spoiler scritti in qualsiasi modo.
  • Prova su esempi veri e regola la soglia, come per ogni categoria.

Il contesto aiuta anche le regole

«Alla fine muore lui» è uno spoiler solo se la conversazione parla di una serie. I modelli zero-shot che leggono anche i messaggi precedenti possono giudicare regole che dipendono dalla chat: vedi il contesto nella moderazione.

In VigiMod

Le regole si mandano con ogni richiesta, fino a 10, in qualsiasi lingua:

"rules": {"niente-spoiler": "Niente spoiler su film o serie"}

Ogni regola restituisce il suo punteggio e la sua segnalazione (rule:niente-spoiler), accanto alle categorie predefinite. I dettagli sono nella documentazione.

Mettiti alla prova

Rispondi alle domande, poi controlla le risposte.

  1. 1. Cosa significa qui «zero-shot»?
  2. 2. Nell'NLI, il messaggio in chat è…
  3. 3. Quale regola probabilmente funziona meglio?
  4. 4. Perché il modello sa controllare una regola mai vista?

Tutte le guide →

Guardalo su messaggi veri

Prova la demo dal vivo, o leggi come funziona l'API.