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
| Approccio | Esempio 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.