Tokenization

·

3 min

Paper originale

Questo articolo è stato scritto al 100% da un AI

Prima che un modello linguistico possa “leggere” una frase, deve trasformarla in qualcosa di numerico. Il primo passo di questo processo si chiama tokenization: la conversione del testo grezzo in unità discrete chiamate token.

Intuitivamente si potrebbe pensare che ogni parola sia un token. In realtà è molto più sfumato: un token può essere una parola intera, una sua parte, un singolo carattere, o anche un simbolo di punteggiatura.

Perché non semplicemente parola = token?

Il problema è il vocabolario. La lingua italiana (e qualsiasi lingua naturale) contiene centinaia di migliaia di parole distinte, senza contare errori di battitura, neologismi, termini tecnici, nomi propri. Un sistema che mappasse ogni parola a un token dovrebbe gestire un vocabolario di milioni di voci — computazionalmente proibitivo.

All’altro estremo, tokenizzare carattere per carattere produce sequenze enormi e perde quasi tutto il significato semantico: il modello vedrebbe “gatto” come g·a·t·t·o invece che come concetto unitario.

La soluzione adottata dai moderni LLM è un compromesso intelligente: la tokenizzazione a subword.

BPE: Byte Pair Encoding

L’algoritmo più diffuso si chiama BPE (Byte Pair Encoding). L’idea di base: partire dai singoli caratteri e fondere iterativamente le coppie più frequenti. Alla fine si ottiene un vocabolario di circa 50.000–100.000 subword che bilancia efficienza e copertura.

  • Le parole comuni diventano un token solo.
  • Le parole rare o derivate vengono spezzate in parti riconoscibili.
  • Qualsiasi stringa, anche inventata, è sempre tokenizzabile.

Esempi concreti

Ecco come vengono tokenizzate frasi reali. I numeri tra parentesi indicano il totale di token prodotti.

“il gatto mangia il topo”

il · gatto · mangia · il · topo

5 token — parole comuni, una parola = un token.

“il trasformatore è straordinario”

il · tras · forma · tore · è · straord · inario

7 token — parole lunghe o rare vengono spezzate in subword.

“DeepSeek ha 671 miliardi di parametri”

Deep · Seek · ha · 6 · 7 · 1 · miliardi · di · parametri

9 token — i numeri vengono tipicamente spezzati cifra per cifra.

I tre approcci a confronto

ApproccioEsempio di “gatto”Problema
Parola intera["gatto"]Vocabolario enorme; parole sconosciute non gestite
Carattere singolo["g","a","t","t","o"]Sequenze lunghissime; perde significato semantico
Subword BPE ✓["gatto"] o ["gat","to"]Compromesso ottimale: vocabolario ~50k, tutto tokenizzabile

Implicazione pratica: token ≠ parole

Quando si legge che GPT-4 ha una context window di 128.000 token, non significa 128.000 parole. In media 1 token corrisponde a circa 0,75 parole in inglese — in italiano, con parole mediamente più lunghe, il rapporto è leggermente peggiore.

128.000 token ≈ 90.000–100.000 parole ≈ un romanzo di media lunghezza

I numeri sono spesso penalizzati: “671” diventa 3 token invece di 1, il che spiega in parte perché i modelli tendano a essere più imprecisi con l’aritmetica rispetto al linguaggio naturale.

Dal token al vettore

Una volta ottenuti i token, ogni token viene convertito in un embedding: un vettore numerico di centinaia o migliaia di dimensioni. È a questo punto che il modello comincia davvero a “capire” il significato — ma questa è la prossima tappa del percorso.