L’elaborazione del linguaggio naturale (NLP) è una branca dell’intelligenza artificiale che si occupa di far comprendere e generare il linguaggio umano da parte dei computer. Uno dei concetti chiave dell’NLP è il token, che gioca un ruolo fondamentale nel permettere ai modelli di apprendere e interpretare testi.
Cos’è un token?
Un token è l’unità minima di un testo che ha un significato per un modello NLP. In termini pratici, si tratta di segmentare una stringa di testo in parti più piccole come parole, frasi o persino caratteri, che vengono poi analizzati singolarmente dai modelli di elaborazione del linguaggio. Vedremo in seguito come viene interpreta una frase e come un LLM non è in grado di contare correttamente le lettere presente in una parola.
Token vs. parole: qual è la differenza?
Una confusione comune è considerare i token e le parole come sinonimi. Tuttavia, c’è una distinzione importante: i token possono essere parole intere, parti di parole o simboli, mentre le parole sono unità linguistiche ben definite con un significato semantico. Per esempio, nell’NLP, una parola complessa può essere divisa in più token per facilitare l’elaborazione.
Esempi di tokenizzazione
Per comprendere meglio la tokenizzazione, possiamo prendere la frase: “L’intelligenza artificiale sta cambiando il mondo“. Un approccio semplice di tokenizzazione potrebbe dividere la frase in parole singole. É necessario sapere che ogni modello ha un proprio “tokenizer” che trasforma una frase in un token. Ecco una rappresentazione di come viene interpretata la frase.
Per facilitare la lettura ogni “quadrato” colorato è un token.
Cliccando il bottone “Show Tokenized text” possiamo vedere l’ID assegnato a ciascun token. In sostanza questo è l’input che vede, ad esempio, ChatGPT o qualsiasi altro chatbot.
È utile sapere che è stato scelto di sviluppare con la modalità token perché quest’ultimi sono riutilizzabili, mentre utilizzare il sistema “carattere per carattere” o “parola per parola” si sarebbe avuto un addestramento più complesso. Ad esempio, la parola “rapidamente” viene interpretata “rapida” “mente” così da poter utilizzare la parola “mente” anche in altri contesti. Ovviamente c’è un contro nell’utilizzo dei token poiché il Large Language Model non ha cognizione del conteggio dei caratteri o quali sono le lettere che formano una parola. Infatti se si prova a chiedere di scrivere una frase o paragrafo di una lunghezza massima di “x” caratteri non riesce nel compito.
Ma cosa succede se chiediamo a GPT di contare le “i” nella parola “supercalifragilistichespiralidoso”? Il sistema risponde con “7” restituendo, ovviamente, una risposta (output) errato. Per aggirare questo problema sarà sufficiente chiedere di generare il codice Python e contare le “i” nella parola “supercalifragilistichespiralidoso” e il risultato sarà 6, che è quello corretto.
L’importanza dei token nell’NLP
I token sono centrali nell’NLP perché permettono di trasformare il testo non strutturato in una forma che i modelli di machine learning possono manipolare e comprendere. La segmentazione di un testo in token rende possibile la creazione di rappresentazioni numeriche che i modelli possono utilizzare per fare inferenze.
Come i modelli di linguaggio utilizzano i token
I modelli di linguaggio, come BERT o GPT, usano i token per costruire rappresentazioni vettoriali dei testi. I token vengono convertiti in numeri (attraverso tecniche come l’embedding) e processati per identificare pattern, relazioni semantiche e strutturali nel testo. Questo processo consente ai modelli di fare previsioni o generare nuove frasi basandosi su input testuali.
Vantaggi della tokenizzazione
La tokenizzazione permette una gestione più granulare e flessibile dei testi. Tra i principali vantaggi troviamo:
- Efficienza: riduce la complessità computazionale, trasformando il testo in una sequenza di elementi semplici.
- Generalizzazione: consente ai modelli di affrontare meglio la variabilità delle lingue, segmentando anche parole rare o complesse in componenti più comuni.
- Compatibilità: facilita l’integrazione di dati multilingue o testi con caratteri speciali.
Il processo di tokenizzazione
Il processo di tokenizzazione implica la segmentazione di un testo in unità logiche che possono essere parole, frasi o sottoparti di parole. A seconda del contesto e degli obiettivi, il processo di tokenizzazione può variare significativamente.
Tecniche di tokenizzazione
Esistono diverse tecniche per la tokenizzazione, come:
- Tokenizzazione basata su spazi: semplice suddivisione in base agli spazi bianchi.
- Tokenizzazione basata su regole: utilizza modelli grammaticali per separare i token.
- Tokenizzazione basata su modelli statistici: sfrutta le frequenze e le probabilità per identificare i token.
Tipi di tokenizzazione
A seconda del livello di granularità, esistono vari tipi di tokenizzazione:
- Word tokenization: segmenta il testo in parole.
- Subword tokenization: divide le parole in unità più piccole, come prefissi e suffissi.
- Character tokenization: tratta singoli caratteri come token.
Strumenti per la tokenizzazione
Numerosi strumenti esistono per eseguire la tokenizzazione, tra i più comuni:
- NLTK: una libreria Python che offre funzioni per tokenizzare testi in varie lingue.
- SpaCy: una libreria avanzata per l’NLP che include una tokenizzazione efficiente e personalizzabile.
- Hugging Face Tokenizers: strumenti ottimizzati per la tokenizzazione di modelli come BERT o GPT.
Sfide nella tokenizzazione
La tokenizzazione non è priva di difficoltà. Alcune delle principali sfide includono:
- Ambiguità linguistica: diverse lingue presentano difficoltà particolari (ad esempio, in cinese o giapponese, dove non ci sono spazi tra le parole).
- Gestione delle parole composte: lingue come il tedesco possono avere parole estremamente lunghe, che necessitano di essere tokenizzate in parti.
- Rilevanza semantica: mantenere il significato originale durante la tokenizzazione è cruciale per l’accuratezza dei modelli.
Applicazioni dei token nell’NLP
I token sono fondamentali per diverse applicazioni pratiche nell’NLP, migliorando l’efficacia e l’accuratezza di modelli linguistici avanzati. Ecco alcuni esempi:
Traduzione automatica: nel contesto della traduzione automatica, i token permettono di segmentare le frasi in unità che possono essere tradotte singolarmente o in blocchi, migliorando la qualità delle traduzioni tra lingue molto diverse.
Analisi del sentiment: per l’analisi del sentiment, la tokenizzazione aiuta a identificare le parole o frasi chiave che indicano emozioni o opinioni. Segmentando un testo in token, un modello può determinare se un’espressione è positiva, negativa o neutra.
Generazione di testo: nella generazione di testo, i token consentono ai modelli di prevedere la parola o il frammento successivo basandosi su quelli precedenti, migliorando la fluidità e coerenza dei testi prodotti.
Named entity recognition: la Named Entity Recognition (NER) utilizza i token per identificare e classificare entità come nomi di persone, luoghi o organizzazioni, segmentando il testo in modo da isolare questi elementi.
Part-of-speech tagging: il Part-of-Speech Tagging si basa sulla tokenizzazione per assegnare a ciascun token una categoria grammaticale, come verbi, sostantivi o aggettivi, fondamentale per l’analisi sintattica.
Text summarization: la sintesi automatica del testo dipende dalla tokenizzazione per estrarre le informazioni più rilevanti da un documento, segmentando il testo per ottenere un riepilogo coerente.
Tecniche avanzate: la tokenizzazione subword
Una delle tecniche avanzate nell’NLP è la tokenizzazione subword, che spezza le parole in unità ancora più piccole. Questo approccio è particolarmente utile per gestire parole sconosciute o rare. Algoritmi come Byte-Pair Encoding (BPE) e WordPiece sono comunemente utilizzati nei modelli avanzati di linguaggio, come BERT e GPT, poiché migliorano la capacità del modello di generalizzare e gestire vocaboli complessi.