Tecniche di normalizzazione del testo

Natural Language Processing (NLP) in Python

Fouad Trad

Machine Learning Engineer

Normalizzazione del testo

  • La normalizzazione porta le parole a un formato standard
  • Utile in classificazione testo, ricerca, sentiment analysis
  • Tecniche da esplorare:
    • Minuscolizzazione
    • Stemming
    • Lemmatization

Immagine con tre persone che dicono in modi diversi che amano guardare film con un'ottima regia: "I enjoy watching movies with great direction!", "I enjoyed watching movies that are well-directed.", "Movies with excellent direction are something I enjoy."

Natural Language Processing (NLP) in Python

Minuscolizzazione

  • Senza normalizzazione, queste parole sono token separati
  • Fuorviano i modelli e gonfiano il vocabolario
text  = """Data scientists and data 
engineers need DATA"""
lower_text = text.lower()

print(lower_text)
data scientists and data 
engineers need data

Immagine di una persona confusa tra 'data', 'Data' e 'DATA.'

Natural Language Processing (NLP) in Python

Applicabilità della minuscolizzazione

Utile per

Attività basate su analisi di keyword

Immagine di una persona che cerca keyword in un testo.

Natural Language Processing (NLP) in Python

Applicabilità della minuscolizzazione

Utile per

Attività basate su analisi di keyword

Immagine di una persona che cerca keyword in un testo.

Non utile per

Attività che richiedono distinguere parole il cui significato dipende dalle maiuscole

Immagine con un gruppo di persone per rappresentare "us" e la bandiera americana per rappresentare "US".

Natural Language Processing (NLP) in Python

Stemming

  • Riduce le parole alla radice tagliando i suffissi
    • running → run
    • reading → read
  • Utile per raggruppare varianti simili
  • Può produrre parole non valide
    • organization → organizat

Logo dello stemming

Natural Language Processing (NLP) in Python

Stemming nel codice

from nltk.stem import PorterStemmer

stemmer = PorterStemmer()
tokens = ['running', 'bats', 'organizations', 'reading']
stemmed = [stemmer.stem(word) for word in tokens]
print(stemmed)
['run', 'bat', 'organizat', 'read']
Natural Language Processing (NLP) in Python

Lemmatization

  • Riduce le parole alla forma base
  • Garantisce una parola valida
    • organizations → organization
  • Utile quando serve accuratezza grammaticale
  • Più lento dello stemming ma più preciso

Logo della lemmatizzazione

Natural Language Processing (NLP) in Python

Lemmatization nel codice

from nltk.stem import WordNetLemmatizer

nltk.download('wordnet')
lemmatizer = WordNetLemmatizer()
tokens = ['running', 'bats', 'organizations', 'reading']
lemmatized = [lemmatizer.lemmatize(word) for word in tokens]
print(lemmatized)
['running', 'bat', 'organization', 'reading']
Natural Language Processing (NLP) in Python

Stemming

  • Più veloce
  • Può produrre parole fuori dizionario
  • Usa se serve velocità

Immagine di una persona che taglia un albero con una motosega.

Lemmatization

  • Più lenta
  • Più accurata
  • Usa se serve accuratezza grammaticale

Immagine di una persona che pota con cura un albero per preservarne la struttura.

Natural Language Processing (NLP) in Python

Ayo berlatih!

Natural Language Processing (NLP) in Python

Preparing Video For Download...