Fondamenti di IA
Come Funziona la Classificazione del Testo?
La classificazione del testo è il processo di analisi di sequenze di testo e assegnazione di un’etichetta, raggruppandoli in base al loro contenuto. La classificazione del testo è alla base di quasi ogni compito di intelligenza artificiale o apprendimento automatico che coinvolge l’elaborazione del linguaggio naturale (NLP). Con la classificazione del testo, un programma per computer può eseguire una vasta gamma di compiti diversi come il riconoscimento dello spam, l’analisi del sentimento e le funzioni dei chatbot. Come funziona esattamente la classificazione del testo? Quali sono i diversi metodi di classificazione del testo? Esploreremo le risposte a queste domande di seguito.
Definizione della Classificazione del Testo
È importante prendersi un po’ di tempo per assicurarsi di capire cosa sia la classificazione del testo in generale, prima di addentrarsi nei diversi metodi di classificazione del testo. La classificazione del testo è uno di quei termini che viene applicato a molti compiti e algoritmi diversi, quindi è utile assicurarsi di capire il concetto di base della classificazione del testo prima di esplorare i diversi modi in cui può essere eseguita.
Tutto ciò che coinvolge la creazione di categorie diverse per il testo e l’etichettatura di campioni di testo come queste categorie può essere considerato classificazione del testo. Finché un sistema esegue questi passaggi di base, può essere considerato un classificatore di testo, indipendentemente dal metodo esatto utilizzato per classificare il testo e indipendentemente da come il classificatore di testo viene applicato alla fine. La rilevazione di spam nelle email, l’organizzazione di documenti per argomento o titolo e il riconoscimento del sentimento di una recensione di un prodotto sono tutti esempi di classificazione del testo perché vengono eseguiti prendendo il testo come input e producendo un’etichetta di classe per quel pezzo di testo.
Come Funziona la Classificazione del Testo?

Foto: Quinn Dombrowski via Flickr, CC BY SA 2.0 , (https://www.flickr.com/photos/quinnanya/4714794045)
La maggior parte dei metodi di classificazione del testo può essere inserita in una delle tre categorie diverse: metodi basati su regole o metodi di apprendimento automatico.
Metodi di Classificazione Basati su Regole
I metodi di classificazione del testo basati su regole operano attraverso l’utilizzo di regole linguistiche ingegnerizzate esplicitamente. Il sistema utilizza le regole create dall’ingegnere per determinare a quale classe un determinato pezzo di testo dovrebbe appartenere, cercando indizi sotto forma di elementi testuali semanticamente rilevanti. Ogni regola ha un modello che il testo deve soddisfare per essere inserito nella categoria corrispondente.
Per essere più concreti, supponiamo di voler progettare un classificatore di testo in grado di distinguere argomenti di conversazione comuni, come il meteo, i film o il cibo. Per abilitare il classificatore di testo a riconoscere la discussione del meteo, potremmo dirgli di cercare parole correlate al meteo nel corpo dei campioni di testo che sta elaborando. Avremmo un elenco di parole chiave, frasi e altri modelli rilevanti che potrebbero essere utilizzati per distinguere l’argomento. Ad esempio, potremmo istruire il classificatore a cercare parole come “vento”, “pioggia”, “sole”, “neve” o “nuvole”. Potremmo poi farlo esaminare il testo di input e contare quante volte queste parole appaiono nel corpo del testo e se appaiono più comunemente di parole correlate ai film, classificherei il testo come appartenente alla classe del meteo.
Il vantaggio dei sistemi basati su regole è che i loro input e output sono prevedibili e interpretabili dagli esseri umani e possono essere migliorati attraverso l’intervento manuale dell’ingegnere. Tuttavia, i metodi di classificazione basati su regole sono anche un po’ fragili e spesso hanno difficoltà a generalizzare perché possono aderire solo ai modelli predefiniti che sono stati programmato. Ad esempio, la parola “nuvola” potrebbe riferirsi all’umidità nel cielo o potrebbe riferirsi a una nuvola digitale in cui vengono archiviati i dati. È difficile per i sistemi basati su regole gestire queste sottigliezze senza che gli ingegneri spendano un po’ di tempo cercando di anticipare e adattarsi a queste sottigliezze manualmente.
Sistemi di Apprendimento Automatico
Come menzionato sopra, i sistemi basati su regole hanno limitazioni, poiché le loro funzioni e regole devono essere preprogrammate. Al contrario, i sistemi di classificazione del testo basati sull’apprendimento automatico operano applicando algoritmi che analizzano set di dati per modelli associati a una particolare classe.
Gli algoritmi di apprendimento automatico vengono alimentati con istanze pre-etichettate/pre-classificate che vengono analizzate per caratteristiche rilevanti. Queste istanze pre-etichettate sono i dati di training.
L’algoritmo di classificazione dell’apprendimento automatico analizza i dati di training e apprende modelli che sono associati alle diverse classi. Dopo di questo, le istanze non viste vengono private delle loro etichette e alimentate nell’algoritmo di classificazione, che assegna alle istanze un’etichetta. Le etichette assegnate vengono quindi confrontate con le etichette originali per vedere quanto precisa sia stata la classificazione dell’algoritmo di apprendimento automatico, valutando quanto bene il modello ha appreso i modelli che prevedono le classi.
Gli algoritmi di apprendimento automatico operano analizzando dati numerici. Ciò significa che per utilizzare un algoritmo di apprendimento automatico su dati testuali, il testo deve essere convertito in un formato numerico. Ci sono vari metodi per codificare i dati testuali come dati numerici e creare metodi di apprendimento automatico attorno a questi dati. Tratteremo alcuni dei diversi modi per rappresentare i dati testuali di seguito.
Bag-of-Words
Bag-of-words è uno degli approcci più comunemente utilizzati per la codifica e la rappresentazione dei dati testuali. Il termine “bag-of-words” deriva dal fatto che si prendono tutte le parole dei documenti e le si mettono tutte in un’unica “borsa” senza prestare attenzione all’ordine delle parole o alla grammatica, prestare attenzione solo alla frequenza delle parole nella borsa. Ciò risulta in un lungo array, o vettore, che contiene una rappresentazione unica di tutte le parole nei documenti di input. Quindi, se ci sono 10000 parole uniche totali nei documenti di input, i vettori delle caratteristiche saranno lunghi 10000 parole. Questo è come si calcola la dimensione della borsa delle parole/vettore delle caratteristiche.

Foto: gk_ via Machinelearning.co, (https://machinelearnings.co/text-classification-using-neural-networks-f5cd7b8765c6)
Dopo che la dimensione del vettore delle caratteristiche è stata determinata, ogni documento nell’elenco dei documenti totali viene assegnato il proprio vettore riempito con numeri che indicano quante volte la parola in questione appare nel documento corrente. Ciò significa che se la parola “cibo” appare otto volte all’interno di un documento testuale, il corrispondente vettore delle caratteristiche/vettore delle caratteristiche avrà un otto nella posizione corrispondente.
In altre parole, tutte le parole uniche che appaiono nei documenti di input vengono tutte accumulate in una borsa e poi ogni documento ottiene un vettore di parole della stessa dimensione, che viene quindi riempito con il numero di volte che le diverse parole appaiono nel documento.
I set di dati testuali spesso contengono un gran numero di parole uniche, ma la maggior parte di esse non vengono utilizzate molto frequentemente. Per questo motivo, il numero di parole utilizzate per creare il vettore di parole è solitamente limitato a un valore scelto (N) e quindi la dimensione del vettore delle caratteristiche sarà Nx1.
Frequenza del Termine-Inverse Document Frequency (TF-IDF)
Un altro modo per rappresentare un documento in base alle parole in esso è chiamato Frequenza del Termine-Inverse Document Frequency (TF-IDF). Un approccio TF-IDF crea anche un vettore che rappresenta il documento in base alle parole in esso, ma a differenza di Bag-of-words, queste parole sono pesate da più della sola frequenza. TF-IDF considera l’importanza delle parole nei documenti, cercando di quantificare quanto rilevante sia quella parola per l’argomento del documento. In altre parole, TF-IDF analizza la rilevanza invece della frequenza e i conteggi delle parole in un vettore delle caratteristiche vengono sostituiti da un punteggio TF-IDF che viene calcolato con riguardo all’intero set di dati.
Un approccio TF-IDF opera calcolando prima la frequenza del termine, il numero di volte che i termini unici appaiono all’interno di un documento specifico. Tuttavia, TF-IDF si assicura anche di limitare l’influenza delle parole molto comuni come “il”, “o” e “e”, poiché queste “parole di stop” sono molto comuni ma trasmettono pochissime informazioni sul contenuto del documento. Queste parole devono essere scontate, ed è a questo che si riferisce la parte “frequenza del documento inversa” di TF-IDF. Ciò viene fatto perché più documenti contiene una parola specifica, meno utile è quella parola per distinguere quel documento dagli altri documenti nell’elenco di tutti i documenti. La formula che TF-IDF utilizza per calcolare l’importanza di una parola è progettata per preservare le parole più frequenti e più ricche semanticamente.
I vettori delle caratteristiche creati dall’approccio TF-IDF contengono valori normalizzati che si sommano a uno, assegnando a ogni parola un valore ponderato come calcolato dalla formula TF-IDF.
Word Embeddings
Word embeddings sono metodi per rappresentare il testo in modo che le parole con significati simili abbiano rappresentazioni numeriche simili.
Le word embeddings operano “vettorizzando” le parole, rappresentandole come vettori a valori reali in uno spazio vettoriale. I vettori esistono in una griglia o matrice e hanno una direzione e una lunghezza (o magnitudine). Quando si rappresentano le parole come vettori, le parole vengono convertite in vettori composti da valori reali. Ogni parola viene mappata su un vettore e le parole che sono simili nel significato hanno direzioni e magnitudini simili. Questo tipo di codifica consente a un algoritmo di apprendimento automatico di apprendere relazioni complesse tra le parole.
I modelli di word embeddings che rappresentano parole diverse vengono creati con riguardo a come le parole in questione vengono utilizzate. Poiché le parole che vengono utilizzate in modi simili avranno vettori simili, il processo di creazione di word embeddings traduce automaticamente parte del significato che le parole hanno. Un approccio bag-of-words, d’altra parte, crea rappresentazioni fragili dove parole diverse avranno rappresentazioni dissimili anche se vengono utilizzate in contesti molto simili.
Di conseguenza, le word embeddings sono migliori nel catturare il contesto delle parole all’interno di una frase.
Ci sono diversi algoritmi e approcci utilizzati per creare word embeddings. Alcuni dei metodi di word embeddings più comuni e affidabili includono: layer di embedding, word2vec e GloVe.
Layer di Embedding
Un modo potenziale per utilizzare le word embeddings insieme a un sistema di apprendimento automatico/deep learning è utilizzare un layer di embedding. I layer di embedding sono layer di deep learning che convertono le parole in embeddings che vengono quindi alimentati nel resto del sistema di deep learning. Le word embeddings vengono apprese mentre la rete si allena per un compito testuale specifico.

In un approccio di word embeddings, parole simili avranno rappresentazioni simili e saranno più vicine l’una all’altra che a parole dissimili.
Per utilizzare i layer di embedding, il testo deve essere pre-elaborato prima. Il testo nel documento deve essere codificato one-hot e la dimensione del vettore deve essere specificata in anticipo. Il testo one-hot viene quindi convertito in vettori di parole e i vettori vengono passati nel modello di apprendimento automatico.
Word2Vec
Word2Vec è un altro metodo comune per l’embedding di parole. Word2Vec utilizza metodi statistici per convertire le parole in embeddings ed è ottimizzato per l’uso con modelli basati su reti neurali. Word2Vec è stato sviluppato da ricercatori di Google (GOOGL ) ed è uno dei metodi di embedding più utilizzati, poiché produce in modo affidabile embeddings utili e ricchi. Le rappresentazioni di Word2Vec sono utili per l’identificazione di somiglianze semantiche e sintattiche nel linguaggio. Ciò significa che le rappresentazioni di Word2Vec catturano relazioni tra concetti simili, essendo in grado di distinguere che la somiglianza tra “Re” e “Regina” è la regalità e che “Re” implica “uomo” mentre Regina implica “donna”.
GloVe
GloVe, o Global Vector per la rappresentazione di parole, si basa sugli algoritmi di embedding utilizzati da Word2Vec. I metodi di embedding GloVe combinano aspetti degli algoritmi di Word2Vec e della fattorizzazione di matrici come l’analisi semantica latente. Il vantaggio di Word2Vec è che può catturare il contesto, ma come compromesso cattura male le statistiche testuali globali. Al contrario, le rappresentazioni di vettori tradizionali sono buone nel determinare le statistiche testuali globali, ma non sono utili per determinare il contesto delle parole e delle frasi. GloVe trae il meglio da entrambi gli approcci, creando un contesto di parole basato su statistiche testuali globali.












