Vai al contenuto principale

Capire la classificazione del testo in Python

Scopri cos'è la classificazione del testo, come funziona e i casi d'uso di successo. Esplora esempi end-to-end su come costruire una pipeline di preprocessamento del testo seguita da un modello di classificazione del testo in Python.
Aggiornato 29 set 2026  · 12 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

I dati testuali sono uno dei tipi di dati più comuni utilizzati oggi dalle aziende ma, non avendo una struttura chiara, può essere difficile e richiedere molto tempo estrarre insight da essi. Lavorare con dati testuali rientra nell’ambito del Natural Language Processing, uno dei sotto-campi dell’intelligenza artificiale. 

Natural Language Processing (NLP) è un campo dell’informatica e dell’intelligenza artificiale che studia come i computer interagiscono con le lingue umane e come programmarli per elaborare e analizzare grandi quantità di dati in linguaggio naturale.

L’NLP viene usato in molti modi diversi, ad esempio per rispondere automaticamente alle domande, generare riassunti di testi, tradurre testi da una lingua all’altra, ecc. La ricerca in NLP è condotta anche in aree come scienze cognitive, linguistica e psicologia. La classificazione del testo è uno di questi casi d’uso per l’NLP. 

In questo blog esploreremo i casi d’uso della classificazione del testo. Troverai anche un esempio end-to-end su come costruire una pipeline di preprocessamento del testo seguita da un modello di classificazione del testo in Python.

Se vuoi saperne di più sull’elaborazione del linguaggio naturale, i nostri percorsi Natural Language Processing in Python e Natural Language Processing in R sono utili. Acquisirai le competenze NLP fondamentali per trasformare i dati testuali in insight di valore. Inoltre, conoscerai le librerie NLP più popolari in Python, tra cui NLTK, scikit-learn, spaCy e SpeechRecognition.

Cos’è la classificazione del testo?

La classificazione del testo è un compito NLP comune utilizzato per risolvere problemi aziendali in vari settori. L’obiettivo è categorizzare o prevedere la classe di documenti testuali mai visti prima, spesso con l’aiuto dell’apprendimento supervisionato.

Analogamente a un algoritmo di classificazione addestrato su un dataset tabellare per prevedere una classe, anche la classificazione del testo utilizza il machine learning supervisionato. Il fatto che nella classificazione del testo siano coinvolti dati testuali è la principale distinzione tra i due.

È possibile eseguire la classificazione del testo anche senza usare l’apprendimento supervisionato. Invece degli algoritmi, si può progettare un sistema manuale basato su regole per svolgere il compito di classificazione del testo. Confronteremo pro e contro dei sistemi di classificazione basati su regole e su machine learning nella prossima sezione.

Pipeline di classificazione del testo

Fonte immagine

Se vuoi approfondire il machine learning supervisionato, consulta il nostro articolo dedicato.

Casi d’uso e applicazioni della classificazione del testo

Classificazione dello spam

Ci sono molti casi d’uso pratici per la classificazione del testo in numerosi settori. Per esempio, un filtro antispam è un’applicazione comune che usa la classificazione del testo per separare le email in categorie spam e non spam. 

Classificazione dello spam

Fonte immagine

Classificare articoli di news e blog

Un altro caso d’uso è assegnare automaticamente i documenti testuali a categorie predefinite. Un modello di machine learning supervisionato viene addestrato su dati etichettati, che includono sia il testo grezzo sia il target. Una volta addestrato, il modello viene usato in produzione per ottenere una categoria (etichetta) su dati nuovi e mai visti (articoli/blog scritti in futuro).

Filtro articoli di news

Fonte immagine

Categorizzare le richieste di supporto clienti

Un’azienda potrebbe usare la classificazione del testo per categorizzare automaticamente le richieste di supporto in base all’argomento o per dare priorità e indirizzare le richieste al reparto appropriato. 

Richieste di supporto clienti

Fonte immagine

Rilevamento dei discorsi d’odio

Con oltre 1,7 miliardi di utenti attivi al giorno, su Facebook è inevitabile la creazione di contenuti che violano le regole. I discorsi d’odio rientrano tra questi contenuti indesiderati. 

Facebook affronta il problema richiedendo una revisione manuale dei post che un classificatore di testo AI ha identificato come discorsi d’odio. I post segnalati dall’AI vengono esaminati allo stesso modo di quelli segnalati dagli utenti. Solo nei primi tre mesi del 2020, la piattaforma ha rimosso 9,6 milioni di contenuti classificati come discorsi d’odio.

Classificatore di testo di Facebook

Fonte immagine

Tipi di sistemi di classificazione del testo

Esistono principalmente due tipi di sistemi di classificazione del testo: basati su regole e basati su machine learning.

Classificazione del testo basata su regole

Le tecniche basate su regole usano un insieme di regole linguistiche costruite manualmente per categorizzare il testo in categorie o gruppi. Queste regole indicano al sistema di classificare un testo in una determinata categoria in base al contenuto, usando elementi testuali semanticamente rilevanti. Ogni regola è composta da un antecedente o pattern e da una categoria prevista.

Per esempio, immagina di avere molti nuovi articoli e che il tuo obiettivo sia assegnarli a categorie pertinenti come Sport, Politica, Economia, ecc. 

Con un sistema di classificazione basato su regole, effettuerai una revisione manuale di alcuni documenti per definire regole linguistiche come questa:

  • Se il documento contiene parole come money, dollar, GDP o inflation, appartiene al gruppo (classe) Politica. 

I sistemi basati su regole possono essere raffinati nel tempo e sono comprensibili per gli esseri umani. Tuttavia, ci sono alcuni svantaggi in questa strategia. 

Innanzitutto, questi sistemi richiedono una conoscenza approfondita del dominio. Sono dispendiosi in termini di tempo, poiché creare regole per un sistema complesso può essere difficile e spesso richiede ampi studi e test. 

Dato che l’aggiunta di nuove regole può modificare i risultati di quelle preesistenti, i sistemi basati su regole sono anche difficili da mantenere e non scalano efficacemente.

Classificazione del testo basata su machine learning

La classificazione del testo basata su machine learning è un problema di apprendimento supervisionato. Impara l’associazione tra i dati in input (testo grezzo) e le etichette (note anche come variabili target). È simile ai problemi di classificazione non testuali, in cui addestriamo un algoritmo di classificazione supervisionato su un dataset tabellare per prevedere una classe, con la differenza che nella classificazione del testo l’input è testo grezzo invece di feature numeriche. 

Come in qualsiasi altro apprendimento supervisionato, la classificazione del testo tramite machine learning ha due fasi: training e predizione.

Classificazione del testo con machine learning

Fonte immagine

Fase di training

Durante la fase di training, un algoritmo di apprendimento supervisionato viene addestrato sul dataset etichettato in input. Al termine, otteniamo un modello addestrato che possiamo usare per ottenere predizioni (etichette) su dati nuovi e mai visti.

Fase di predizione

Una volta addestrato, un modello di machine learning può essere usato per prevedere etichette su dati nuovi e mai visti. Di solito si fa distribuendo il miglior modello da una fase precedente come API sul server. 

Pipeline di preprocessamento del testo

Il preprocessamento dei dati testuali è un passaggio importante in qualsiasi compito di NLP. Aiuta a pulire e preparare i dati testuali per l’ulteriore elaborazione o analisi. 

Una pipeline di preprocessamento del testo è una serie di passaggi applicati al testo grezzo per prepararlo all’uso in compiti di elaborazione del linguaggio naturale. 

I passaggi in una pipeline di preprocessamento possono variare, ma in genere includono attività come tokenizzazione, rimozione delle stop word, stemming e lemmatizzazione. Questi passaggi aiutano a ridurre la dimensione dei dati testuali e migliorano anche l’accuratezza di compiti NLP come classificazione del testo ed estrazione di informazioni.

I dati testuali sono difficili da elaborare perché sono non strutturati e spesso contengono molto rumore. Questo rumore può presentarsi sotto forma di errori di ortografia, errori grammaticali e formattazioni non standard. Una pipeline di preprocessamento del testo mira a ripulire questo rumore in modo che i dati testuali possano essere analizzati più facilmente.


Text Mining

Fonte testo

Vuoi saperne di più? Dai un’occhiata al nostro percorso Text Mining with R. 

Estrazione delle feature

I due metodi più comuni per estrarre feature dal testo, ossia convertire i dati testuali (stringhe) in feature numeriche per poter addestrare un modello di machine learning, sono: Bag of Words (alias CountVectorizer) e Tf-IDF. 

Bag of Words

Un modello bag of words (BoW) è un modo semplice per rappresentare i dati testuali come feature numeriche. Consiste nel creare un vocabolario di parole note nel corpus e quindi creare, per ciascun documento, un vettore che contiene le conte di quante volte compare ogni parola.

Bag of Words

Fonte immagine

TF-IDF

TF-IDF sta per term frequency-inverse document frequency ed è un altro modo per rappresentare il testo come feature numeriche. Ci sono alcune lacune nel modello Bag of Words (BoW) che Tf-IDF colma. Non entreremo nei dettagli in questo articolo, ma se vuoi esplorare ulteriormente il concetto, consulta il nostro corso Introduction to Natural Language Processing in Python.

Il modello TF-IDF è diverso dal bag of words perché tiene conto sia della frequenza delle parole nel documento sia dell’inverse document frequency. Questo significa che il modello TF-IDF ha maggiori probabilità di individuare le parole importanti in un documento rispetto al modello bag of words.

Esempio end-to-end di classificazione del testo in Python

Importazione del dataset

Per iniziare, importa il dataset direttamente da questo link GitHub. L’SMS Spam Collection è un dataset contenente 5.574 messaggi SMS in inglese insieme all’etichetta Spam o Ham (non spam). Il nostro obiettivo è addestrare un modello di machine learning che apprenda dal testo degli SMS e dalle etichette e sia in grado di prevedere la classe dei messaggi SMS.

# reading data

import pandas as pd

data = pd.read_csv('https://raw.githubusercontent.com/mohitgupta-omg/Kaggle-SMS-Spam-Collection-Dataset-/master/spam.csv', encoding='latin-1')

data.head()

SpamHam non preprocessati

Dopo aver letto il dataset, nota che ci sono alcune colonne extra di cui non abbiamo bisogno. Ci servono solo le prime due colonne. Procediamo a eliminare le restanti e a rinominare anche le prime due.

# drop unnecessary columns and rename cols

data.drop(['Unnamed: 2', 'Unnamed: 3', 'Unnamed: 4'], axis=1, inplace=True)

data.columns = ['label', 'text']

data.head()

Preprocessamento SpamHam

Analisi esplorativa dei dati (EDA)

Facciamo un po’ di EDA di base per vedere se ci sono valori mancanti nel dataset e com’è il bilanciamento del target.

# check missing values

data.isna().sum()

EDA

# check data shape

data.shape
>>> (5572, 2)
# check target balance

data['label'].value_counts(normalize = True).plot.bar()

EDA SpamHam

Preprocessamento del testo

Qui avviene tutta la pulizia del testo. È un ciclo che itera su tutti i 5.572 documenti ed esegue quanto segue:

  • Rimuovere tutti i caratteri speciali
  • Convertire tutte le parole in minuscolo
  • Tokenizzare
  • Rimuovere le stopword
  • Lemmatizzare
# text preprocessing




# download nltk

import nltk

nltk.download('all')




# create a list text

text = list(data['text'])




# preprocessing loop

import re

from nltk.corpus import stopwords

from nltk.stem import WordNetLemmatizer

lemmatizer = WordNetLemmatizer()




corpus = []




for i in range(len(text)):

    r = re.sub('[^a-zA-Z]', ' ', text[i])

    r = r.lower()

    r = r.split()

    r = [word for word in r if word not in stopwords.words('english')]

    r = [lemmatizer.lemmatize(word) for word in r]

    r = ' '.join(r)

    corpus.append(r)




#assign corpus to data['text']

data['text'] = corpus

data.head()

Spam Ham processati 1.png

Train-test split

Dividiamo il dataset in train e test prima dell’estrazione delle feature.

# Create Feature and Label sets

X = data['text']

y = data['label']




# train test split (66% train - 33% test)

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=123)




print('Training Data :', X_train.shape)

print('Testing Data : ', X_test.shape)
>>> Training Data : (3733,)

>>> Testing Data :  (1839,)

Estrazione delle feature

Qui usiamo il modello Bag of Words (CountVectorizer) per convertire il testo pulito in feature numeriche. Questo è necessario per addestrare il modello di machine learning.

# Train Bag of Words model

from sklearn.feature_extraction.text import CountVectorizer

cv = CountVectorizer()

X_train_cv = cv.fit_transform(X_train)

X_train_cv.shape
>>> (3733, 7020)

Addestramento ed evaluation del modello

In questa parte addestriamo un modello di Regressione Logistica e valutiamo la matrice di confusione del modello addestrato.

# Training Logistic Regression model

from sklearn.linear_model import LogisticRegression

lr = LogisticRegression()

lr.fit(X_train_cv, y_train)




# transform X_test using CV

X_test_cv = cv.transform(X_test)




# generate predictions

predictions = lr.predict(X_test_cv)

predictions
>>> array(['ham', 'spam', 'ham', ..., 'ham', 'ham', 'spam'], dtype=object)
# confusion matrix

import pandas as pd

from sklearn import metrics

df = pd.DataFrame(metrics.confusion_matrix(y_test,predictions), index=['ham','spam'], columns=['ham','spam'])

df

Tabella SpamHam

Consulta il DataLab workbook completo per maggiori dettagli.

Conclusione

L’NLP è ancora un’area di ricerca e sviluppo attiva, con molte università e aziende che lavorano allo sviluppo di nuovi algoritmi e applicazioni. L’NLP è un campo interdisciplinare, con ricercatori provenienti da diversi ambiti, tra cui informatica, linguistica, psicologia e scienze cognitive.

La classificazione del testo è un compito potente e ampiamente utilizzato nell’NLP che può essere impiegato per categorizzare automaticamente o prevedere la classe di documenti testuali mai visti prima, spesso con l’aiuto del machine learning supervisionato. 

Non è sempre accurata, ma se usata correttamente può aggiungere molto valore alle tue analisi. Esistono molti modi e algoritmi per impostare un classificatore di testo e non c’è un unico approccio migliore. È importante sperimentare e trovare ciò che funziona meglio per i tuoi dati e i tuoi obiettivi.

Domande frequenti sulla classificazione del testo

La classificazione del testo può essere usata se ci sono più di due etichette?

Sì, se ci sono solo due etichette, allora userai algoritmi di classificazione binaria. Se ci sono più di due etichette, dovrai usare un algoritmo di classificazione multiclasse.

La classificazione del testo è un compito dell'NLP?

Sì, l’NLP è un campo molto ampio. La classificazione del testo è uno dei casi d’uso fondamentali dell’NLP, con applicazioni in un’ampia gamma di settori.

La classificazione del testo è un problema di machine learning supervisionato?

I sistemi di classificazione del testo possono essere anche basati su regole, ma stanno rapidamente passando di moda perché sono difficili da mantenere e scalare. Un sistema basato su machine learning per i compiti di classificazione del testo usa l’apprendimento supervisionato.

Che cos'è il Natural Language Processing?

Il Natural Language Processing (NLP) è un campo dell’informatica e dell’intelligenza artificiale che si occupa delle interazioni tra computer e lingue umane (naturali), in particolare di come programmare i computer per elaborare e analizzare grandi quantità di dati in linguaggio naturale.

La classificazione del testo è la stessa cosa dell'analisi del sentiment?

L’analisi del sentiment è un esempio di sistema di classificazione del testo. Tuttavia, come suggerisce il nome, l’analisi del sentiment si fa di solito quando l’etichetta è una qualche forma di sentimento (positivo o negativo, felice o triste, ecc.).

Si può fare la classificazione del testo senza usare il machine learning?

Sì, possiamo anche usare sistemi basati su regole per la classificazione del testo.

Possiamo usare il deep learning per la classificazione del testo?

Sì, possiamo usare qualsiasi algoritmo di deep learning al posto del machine learning. Dai un’occhiata a questo fantastico corso su Recurrent Neural Networks (RNN) for Language Modeling in Python per saperne di più su NLP e Deep Learning. Se vuoi costruire un modello di classificazione del testo usando TensorFlow, dai un'occhiata a questo case study su TensorFlow 2.0 su Datacamp.

Qual è il miglior algoritmo per la classificazione del testo?

Non esiste un algoritmo migliore in assoluto. In genere, l’algoritmo Naive Bayes offre buone prestazioni su dati ad alta dimensionalità (testo).

BERT viene usato per la classificazione del testo?

Sì, BERT, acronimo di Bidirectional Encoder Representations from Transformers, si basa sull'architettura dei Transformers, un modello di deep learning. Tra i molti casi d’uso, BERT può essere utilizzato anche per sistemi di classificazione del testo. Vedi il nostro tutorial su NLP con BERT per maggiori dettagli.

La classificazione del testo e il Text Mining sono la stessa cosa?

No, il Text Mining è il processo di trasformazione del testo non strutturato in un formato strutturato per identificare pattern significativi, mentre l’obiettivo della classificazione del testo è categorizzare o prevedere la classe di documenti testuali mai visti prima, spesso con l’aiuto del machine learning supervisionato.

Argomenti
Intelligenza artificiale
Python

Corsi migliori

Corso

Text mining con Bag-of-Words in R

4 ore
44.4K
Impara la tecnica del bag of words per il text mining con R.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra AltroMostra Altro