Codifica Byte-Pair per principianti

La codifica Byte-Pair per principianti

Una guida illustrativa alla tokenizzazione BPE in linguaggio semplice e chiaro

Immagine di autore

In questo articolo, parleremo di uno degli algoritmi di tokenizzazione più famosi chiamato Byte-Pair Encoding (BPE). È utilizzato in molti modelli di lingua di ultima generazione come la famiglia BERT, BART e GPT.

Cominciamo.

Byte-Pair Encoding (BPE)

Byte-Pair Encoding (BPE) è un algoritmo di tokenizzazione di sottoinsiemi basato sul corpus. È basato sul corpus perché utilizza il corpus di addestramento per apprendere i caratteri (o simboli) più frequenti e unirli in un unico simbolo. Ed è un tokenizzatore di sottoinsiemi perché suddivide il testo in unità più piccole (o uguali) alle parole.

L’immagine sottostante mostra la tokenizzazione dei sottoinsiemi nella frase “sta piovendo”. Nota che mentre “sta” e “piove” sono token di parole complete, “piov” e “endo” sono sottoinsiemi presi da “piove”.”

L’algoritmo BPE si divide in due parti principali: apprenditore di token e segmentatore di token.

1- Apprenditore di token: prende un corpus di testo e crea un vocabolario contenente i token. Questo corpus agisce come corpus di addestramento.

L'apprenditore di token prende un corpus di testo e crea un vocabolario - immagine dell'autore

2- Segmentatore di token: prende un pezzo di testo come una frase e lo suddivide in token. Questo testo è il dato di prova. Utilizziamo i conoscimenti acquisiti dal passaggio precedente per tokenizzare i dati di prova in questo passaggio.

Il segmentatore di token converte una frase nei suoi token - immagine dell'autore

Merita di essere menzionato,

“Byte Pair Encoding (BPE) (Gage, 1994) è una vecchia tecnica di compressione dei dati che sostituisce iterativamente la coppia di byte più frequente in una sequenza con un singolo byte inutilizzato.” [1]

L’attuale algoritmo BPE che conosciamo per la tokenizzazione adatta questo algoritmo ma anziché unire le coppie di byte più frequenti, unisce i caratteri più frequenti (o…