Questo tutorial è un prezioso contributo della nostra community ed è stato rivisto da DataCamp per chiarezza e accuratezza.
Ti piacerebbe condividere la tua esperienza? Ci farebbe piacere sentirti! Invia i tuoi articoli o idee tramite il nostro Modulo per i contributi della community.
Come professionista dei dati, saprai bene quanto sia importante costruire una solida pipeline di pulizia e preparazione dei dati in qualsiasi progetto di machine learning. Tuttavia, quando si lavora con dati testuali, l’importanza di una pipeline del genere è ancora maggiore a causa delle sfide specifiche che i testi presentano. Problemi come rumore nei dati, errori di ortografia, abbreviazioni, slang ed errori grammaticali possono influire negativamente sulle prestazioni dei modelli di machine learning.
Per garantire che i dati testuali utilizzati nei modelli di machine learning siano accurati, coerenti e privi di errori, è cruciale una pipeline di pulizia e preparazione ben progettata. In genere include una serie di attività come normalizzazione del testo, tokenizzazione, rimozione delle stopword, stemming, lemmatizzazione e data masking.
Sebbene librerie popolari come NLTK, gensim e spaCy offrano un’ampia gamma di strumenti per l’elaborazione e la pulizia del testo, lavorare con dati testuali può comunque porre sfide specifiche che incidono in modo significativo sulle prestazioni dei modelli. Queste sfide spaziano dalla normalizzazione dei caratteri al data masking e molto altro. Pur potendo essere affrontate con le librerie citate, spesso richiedono tempo e impegno considerevoli.
È qui che Textacy brilla. Textacy è una libreria Python che offre un modo semplice e immediato per affrontare una serie di problemi comuni che emergono lavorando con dati testuali. Sebbene altre librerie offrano funzionalità simili, l’attenzione di Textacy alla risoluzione di problemi specifici, come la normalizzazione dei caratteri e il data masking, la distingue dalle altre in questo contesto.
Normalizzazione dei caratteri con Textacy
La normalizzazione dei caratteri è il processo di conversione del testo in un formato standard, particolarmente importante quando si lavora con dati multilingue.
Text = ‘ the cafe “Saint-Raphaël” is loca-/nted on Cote d’Azur.’
I caratteri accentati sono un problema comune nella normalizzazione del testo e possono incidere in modo significativo sulla precisione dei modelli di machine learning.
Il problema nasce dal fatto che le persone non usano in modo coerente i caratteri accentati, il che può introdurre incoerenze nei dati.
Per esempio, i token "Saint-Raphaël" e "Saint-Raphael" possono indicare la stessa entità, ma senza normalizzazione non verranno riconosciuti come identici. Inoltre, i testi contengono spesso parole spezzate da un trattino, e apostrofi come quelli usati nel testo sopra possono creare problemi per la tokenizzazione. Per tutti questi motivi, ha senso normalizzare il testo e sostituire accenti e caratteri tipografici con equivalenti ASCII.
Useremo Textacy a questo scopo, perché offre una comoda raccolta di funzioni predefinite per risolvere il problema in modo semplice ed efficiente. La tabella seguente mostra una selezione delle funzioni di preprocessing di Textacy che possono funzionare indipendentemente da altre librerie.
|
Funzione |
Descrizione |
|---|---|
|
normalize _hyphentated_words |
Ricompone parole spezzate da un a capo |
|
normalize_quotation_marks |
Sostituisce tutti i tipi di virgolette tipografiche con un equivalente ASCII |
|
normalize_unicode |
Uniforma i diversi codici dei caratteri accentati in Unicode |
|
remove_accents |
Sostituisce i caratteri accentati con ASCII |
|
replace_emails |
Sostituisce le email con __EMAIL__ |
|
replace_urls |
Sostituisce le URL con __URL__ |
text = "The café "Saint-Raphaël" is loca-\nted on Cote dʼAzur."
import textacy
import textacy.preprocessing as tprep
def normalize(text):
text = tprep.normalize_hyphenated_words(text)
text = tprep.normalize_quotation_marks(text)
text = tprep.normalize_unicode(text)
text = tprep.remove_accents(text)
return text
Usare la funzione normalize sopra, basata sulle funzioni di preprocessing predefinite di Textacy, ci aiuterà ad affrontare il problema della normalizzazione con il minimo sforzo.
print(normalize(text)
Output:
The cafe Saint-Raphael is located in Cote d' Azure
Data Masking con Textacy
I dati testuali contengono spesso non solo parole comuni ma anche diversi tipi di identificatori, come URL, indirizzi email o numeri di telefono. A volte ci interessano proprio questi elementi. In molti casi, però, può essere meglio rimuovere o mascherare queste informazioni, sia perché non rilevanti sia per motivi di privacy.
Textacy offre alcune comode funzioni di sostituzione per il data masking, come mostrato nella tabella sopra. Queste funzioni sono predefinite e rendono semplice mascherare informazioni sensibili o irrilevanti senza dover scrivere funzioni personalizzate con espressioni regolari.
text = "Check out https://spacy.io/usage/spacy-101"print(replace_urls(text))
Output:
Check out __URL__
Riepilogo
In questo articolo abbiamo mostrato come usare Textacy per semplificare il preprocessing dei dati testuali. Grazie alla sua gamma di funzioni integrate, Textacy rende facile gestire sfide comuni di preprocessing, come la normalizzazione dei caratteri e il data masking.
Snellendo il processo di preprocessing, Textacy apre la strada per concentrarsi sugli aspetti più complessi e impegnativi dell’elaborazione del linguaggio naturale. Che tu stia lavorando su analisi del sentiment, topic modeling o qualsiasi altro compito di NLP, Textacy può aiutarti a preparare rapidamente ed efficacemente i tuoi dati per l’analisi.
Quindi, la prossima volta che ti troverai di fronte a una sfida di preprocessing, prendi in considerazione l’uso di Textacy per semplificare il flusso di lavoro e risparmiare tempo ed energie preziose.
Se questa guida su Textacy ti è stata utile e vuoi approfondire il preprocessing dei dati testuali e l’elaborazione del linguaggio naturale, valuta l’iscrizione al corso di DataCamp Natural Language Processing Fundamentals in Python.

