Normalizzazione, tokenizzazione e lemmatizzazione del testo

Normalizzazione, tokenizzazione e lemmatizzazione del testo

Immagina di avere una scatola piena di calzini di tutti i colori e forme. Prima di metterli negli armadi, vuoi che tutti siano in coppie, ordinati e piegati nello stesso modo. Questo ti aiuta a trovare più facilmente quello che cerchi, giusto?

Bene, la normalizzazione del testo nel campo del Natural Language Processing (NLP), che significa “elaborazione del linguaggio naturale” in italiano, è un po’ come ordinare e organizzare i calzini.

Il NLP è un campo della scienza dei computer che si occupa di fare in modo che i computer possano capire e rispondere al testo o alla voce umana come farebbe una persona.

Quando le persone scrivono o parlano, usano parole diverse, abbreviazioni, accenti e possono fare errori di ortografia. Tutte queste variazioni sono come calzini di forme e colori diversi.

La normalizzazione è il processo di trasformazione di tutto questo testo “disordinato” in una forma più uniforme e standard, in modo che il computer possa capirlo meglio.

Proprio come piegare i calzini nello stesso modo li rende più ordinati, la normalizzazione rende il testo più “ordinato” per i computer.


Ecco alcuni passi comuni che possono venire effettuati durante la normalizzazione del testo:

Convertire maiuscole in minuscole

Rimuovere la punteggiatura

Eliminare gli spazi extra

Correggere gli errori ortografici

Trasformare numeri in parole

Riconoscere e sostituire gergo e abbreviazioni

Facendo tutto questo, si rende il testo molto più facile da elaborare per i programmi di NLP, proprio come avere i calzini ben organizzati rende più facile trovare il paio che stai cercando.

Ecco un esempio:

Dopo aver normalizzato il testo si passa alla tokenizzazione

La tokenizzazione

Immagina ora di avere un secchio pieno di Lego e di voler costruire una casa. Prima di poter iniziare, devi ordinare tutti i pezzi per colore e forma. Quando un computer prova a comprendere le parole che scriviamo (questo si chiama “elaborazione del linguaggio naturale”), deve fare qualcosa di simile.

La tokenizzazione è come quando prendi tutti i Lego e li separi in pezzetti più piccoli che puoi poi usare per costruire qualcosa. Invece di avere una grande scatola di testo, dividiamo ogni cosa in parole o frasi più piccole (questi sono i “token”), proprio come separi i Lego in pezzi più piccoli.

La tokenizzazione è spesso uno dei primi passi nel processo NLP e è cruciale per molte applicazioni, come il posizionamento di parole in un indice per le ricerche testuali, l’analisi del sentiment, il riconoscimento delle entità nominate, la traduzione automatica e il part-of-speech tagging.

Un token può essere una parola, un numero, un simbolo di punteggiatura, o qualsiasi altro elemento che ha un significato nel contesto di un testo.

Sfide da affrontare con testi in diverse lingue

In inglese o in italiano, abbiamo spazi che separano le parole e ciò rende abbastanza semplice dividere un testo in token. Ogni spazio ci dice: “Ehi, qui c’è una pausa! Probabilmente una nuova parola sta per iniziare”.

Immagina che tu sta giocando a un gioco dove devi tagliare una lunga stringa di perle in pezzi più piccoli. Se ogni perla è collegata alla prossima da un piccolo nodo, è facile da vedere dove fare il taglio. Questo è simile all’inglese o all’italiano con gli spazi tra le parole.

In lingue come il cinese o il giapponese, le parole non sono separate da spazi, quindi è come se avessi una stringa di perle senza nodi. Devi essere molto bravo a riconoscere i modelli per sapere dove dividere la stringa per ottenere pezzi significativi.

Per riconoscere i token mai visti prima, possiamo usare delle tecniche speciali. Una di queste si chiama “apprendimento automatico” o machine learning. Questi modelli di intelligenza artificiale possono essere addestrati a riconoscere nuovi token, osservando un sacco di esempi di come sono usate le parole in quella lingua e imparando a riconoscere i modelli.

Consideriamo la stringa “theatre” che in inglese britannico si scrive con “re” alla fine, mentre in inglese americano la parola si scrive “theater” con “er”. Se un sistema di tokenizzazione è stato addestrato principalmente su testi in inglese americano, potrebbe non riconoscere subito la forma britannica e considerarla un errore o un termine diverso.

Ecco come il machine learning può aiutare:

Addestrare il modello su un grande set di dati che include varietà linguistiche, slang, terminologie tecniche, ecc., può aiutare il modello a riconoscere una gamma più ampia di pattern e usi dei caratteri.

I modelli n-gramma possono calcolare la probabilità che una sequenza di caratteri appaia insieme come token, permettendo al modello di distinguere meglio tra parti di parole frequenti e token a sé stanti.

È possibile usare tecniche di apprendimento supervisionato, dove il modello viene addestrato su esempi di testo che sono stati già tokenizzati correttamente. Il modello apprende quindi a riconoscere i token basandosi sugli esempi forniti.

Modelli più avanzati, come le reti neurali ricorsive (RNN) o le reti neurali convoluzionali (CNN), possono essere addestrati per riconoscere la struttura e la semantica dei token nel testo. Questi modelli possono catturare relazioni più complesse tra i caratteri e i token e sono spesso più efficaci nel gestire ambiguità e variazioni linguistiche.

Per esempio, in uno scenario concreto, un modello come il Subword Tokenizer, che è parte di algoritmi come Byte Pair Encoding (BPE) o WordPiece, è stato addestrato per dividere le parole in unità più piccole (subword) che sono comuni tra le parole. Questo è particolarmente utile per le lingue in cui si formano parole molto lunghe con l’aggiunta di prefissi o suffissi o in scenari di lingue in cui ci sono molti termini tecnici o nomi propri.

Il processo di apprendimento permette a questi modelli di comprendere e adattarsi meglio al contesto in cui si trovano i token e di generalizzare da questi per gestire situazioni nuove o meno comuni. Ciò è particolarmente utile nelle lingue in cui la segmentazione delle parole non è chiara come in alcune lingue asiatiche (es. cinese, giapponese), dove la tokenizzazione richiede una comprensione sofisticata del testo per determinare i confini dei token.

In alcune lingue, possiamo anche usare delle regole basate sulla struttura e la formazione delle parole per indovinare i nuovi token. Questo è un po’ come capire come funzionano i pezzi di una costruzione Lego per poter indovinare come assemblare un pezzo che non hai mai visto prima.

La lemmatizzazione

Dopo aver suddiviso il testo in pezzi più piccoli, ti accorgi che a volte le parole hanno forme diverse, ma significano la stessa cosa.

Come i Lego, che possono avere forme diverse ma essere dello stesso colore. La lemmatizzazione è come organizzare i pezzi di Lego per colore: trasforma le parole nelle loro forme base o “lemma”. Ciò aiuta il computer a capire che anche se le parole sembrano un po’ diverse, in realtà sono dello stesso “colore” o hanno lo stesso significato.

Per esempio, “gatto”, “gatti” e “gattino” possono essere trasformati tutti nel lemma “gatto” perché, al fondo, sono la stessa cosa.

Parole: gatti, gattino
Lemma: gatto

Ecco altri esempi:

Usando la tokenizzazione e la lemmatizzazione, un computer può capire meglio il significato di ciò che scriviamo e rispondere in modo più intelligente. È come costruire una casa di Lego con i pezzi giusti e ben organizzati.

La funzione del contesto

Quando una parola come “better” appare in una frase, il processo di lemmatizzazione deve decidere se “better” è legato al verbo “to better” (migliorare qualcosa) o se è una forma di “good” (buono). Se la frase è “This is better than that,” il nostro modello decide che “better” è una forma di “good” perché sta descrivendo qualcosa. Quindi, il lemma di “better” in questo contesto è “good”.

Il processo di lemmatizzazione utilizza il contesto in diversi modi per capire la forma base di una parola, per esempio guarda le parole vicine, capisce quale ruolo la parola gioca nella frase e conosce le regole della lingua

Per esempio, se trova la parola “ran”, il programma guarderà intorno a questa parola per capire se “ran” è usato come un verbo (per esempio in “He ran fast”) o forse come un sostantivo (in un contesto diverso, “ran” potrebbe anche essere una parola in un’altra lingua o un acronimo). Se “ran” è usato come un verbo, allora il programma saprà che il lemma è “run”.

Ora, per immaginare tutto questo, pensa a una serie di scatole con etichette per ogni categoria di giocattoli. Il programma deve decidere in quale scatola va messo ogni giocattolo (parola) basandosi sulla storia in cui il giocattolo è coinvolto. Se la storia parla di velocità e movimento, allora il giocattolo “ran” andrà probabilmente nella scatola etichettata “run”.

Linguisti computazionali al lavoro

Quando i linguisti computazionali progettano algoritmi di lemmatizzazione, devono affrontare sfide come eccezioni e irregolarità linguistiche, perché le lingue naturali sono piene di irregolarità derivanti dall’evoluzione storica e dall’influenza di altre lingue. Ecco alcune delle strategie utilizzate:

Mantengono una lista precompilata di termini irregolari e delle loro forme lemmatizzate standard. Per esempio, il verbo “to go” in inglese ha la forma passata “went” che non si può dedurre attraverso regole regolari di lemmatizzazione, quindi deve essere inclusa come eccezione.

Sviluppano regole basate sulla morfologia della lingua per gestire i casi regolari, ad esempio rimuovendo i suffissi tipici del plurale o le terminazioni del passato per l’inglese.

Implementano algoritmi più sofisticati che analizzano il contesto in cui una parola è usata per determinarne la forma di base. Ad esempio, il termine inglese “leaves” potrebbe essere il plurale di “leaf” o la forma coniugata del verbo “to leave”; l’analisi del contesto aiuta a determinare il lemma corretto.

Utilizzano modelli statistici come reti neurali o modelli di Markov nascosti che possono apprendere dalla frequenza e dalla distribuzione delle parole in grandi corpora di testo come gestire le irregolarità linguistiche.

Aggiungono informazioni sulla parte del discorso delle parole per migliorare l’accuratezza della lemmatizzazione. La parola “saw” potrebbe essere sia un nome sia una forma passata del verbo “to see”; conoscere la parte del discorso aiuta a distinguere tra i due casi.

Continuano a migliorare gli algoritmi integrando feedback sia da utenti umani sia dai risultati ottenuti su nuovi dati, affinando le regole e le eccezioni man mano che emergono.

Un’ottima risorsa per approfondire questo argomento e altri argomenti attinenti all’elaborazione del linguaggio naturale è Speech and Language Processing. An Introduction to Natural Language Processing, Computational Linguistics, and Speech Recognition