Lemmatizzazione (con codice Python)

Nell’articolo di oggi ti parlo di uno dei concetti cardine dell’NLP e vediamo come implementarlo in Python. Parliamo di Lemmatizzazione (lemmatization).

Lemmatizzazione
Foto di Pixabay

Il Natural Language Processing, ovvero l’analisi del linguaggio naturale tramite tecniche di AI e Machine Learning, è un campo molto interdisciplinare e che prende in prestito metodologie e tecniche da molti ambiti distinti.

Uno di quelli di cui è maggiormente debitore è sicuramente la linguistica (in particolar modo la linguistica computazionale). Tra questi concetti, la lemmatizzazione (lemmatization) è sicuramente uno dei più importanti.

Cos’è il Lemma

Per comprendere la lemmatizzazione bisogna prima capire cosa sia un lemma. Il lemma è la forma di citazione di una parola in un dizionario.

Vi ricordate quando a scuola durante i compiti di italiano avevamo con noi il dizionario? Ecco, quello che facevamo era ricercare il lemma di una parola.

Più facile forse fare un esempio: se volessi cercare “calciatori” sul dizionario, cercheresti “calciatore”. “calciatore” è il lemma.

Cos’è la Lemmatizzazione

Avendo capito cos’è il lemma, è facilmente intuibile cosa si intenda per lemmatizzazione.

La lemmatizzazione è il processo di trasformazione di una parola (che ormai abbiamo imparato a chiamare token) nel suo lemma.

Trasformare “calciatori” in “calciatore” è quindi un esempio di lemmatizzazione.

La lemmatizzazione è importante nell’NLP perché consente di ridurre la dimensione del testo e di rendere più significative le relazioni tra le parole.

Immaginiamo un caso di text classification: sarebbe molto utile utilizzare una sola variabile per tutte le parole che afferiscono al campo semantico di calciatore per esempio.

Riducendo le parole alle loro forme di base rendiamo infatti più efficiente il processo di analisi del testo, collassando su una sola parola tutta una serie di altre parole che potrebbero introdurre rumore nei dati.

Lemmatizzazione in Python con Spacy

Esistono tanti modi per fare lemmatizazione in Python, anche se uno dei più semplici ed efficaci è secondo me l’API di Spacy, che lavora discretamente anche con l’italiano.

La prima cosa da fare, se non fosse stato fatto, è quella di scaricare il modello in italiano. Lo possiamo fare facilmente in una cella Jupyter nel seguente modo:

!python -m spacy download it_core_news_sm

Una volta scaricato il modello in italiano, possiamo:

  • importare spacy
  • definire il nostro modello “nlp”
  • scrivere una “frase”
  • creare il nostro “doc”, ovvero il processamento della “frase” grazie al modello pre-addestrato “nlp”
  • stampare il lemma di ogni token
lemmatizzazione

Il risultato finale sarà il seguente:

lemmatizzazione

Per ogni parola è stato quindi estratto il lemma.

In questo articolo abbiamo visto cos’è la lemmatizzazione (lemmatization), a cosa serve e come possiamo usarla con Python. Se sei interessato a contenuti come questo, ti invito a seguire il blog Pulp Learning e a dare un’occhiata al mio profilo LinkedIn -> Davide Nardini