Una breve introduzione ad alcune delle tecniche e dei modelli più comuni utilizzati nell'elaborazione del linguaggio naturale (NLP - Natural Language Processing)

Il Natural Language Processing (NLP), in italiano elaborazione del linguaggio naturale, è un’area di ricerca nell’ambito della disciplina dell’Intelligenza Artificiale focalizzata sull’elaborazione e sull’utilizzo di dati di testo e voce (il nostro “parlato”) per creare “macchine intelligenti” e produrre intuizioni. Vediamo di cosa si tratta e cosa si intende per macchine intelligenti e creazione di intuizioni.

Natural Language Processing, macchine che “discutono” con gli esseri umani

A seguito dello sviluppo dei Big Data nell’ultimo decennio, le organizzazioni devono ora analizzare quotidianamente grandi quantità di dati provenienti da un’ampia varietà di fonti, tra le quali anche quelle che generano dati dal linguaggio naturale (testo e voce – il parlato – del linguaggio naturale dell’essere umano).

Una delle applicazioni di Natural Language Processing più interessanti al giorno d’oggi è la creazione di macchine in grado di discutere con gli esseri umani su argomenti complessi. L’IBM Project Debater rappresenta finora uno degli approcci di maggior successo in questo settore.

Natural Language Processing (NLP), tecniche di pre-elaborazione

Alcune delle tecniche più comuni che vengono applicate per preparare i dati di testo per l’inferenza sono:

  • Tokenizzazione: viene utilizzato per segmentare il testo di input nelle sue parole costituenti (token). In questo modo diventa più semplice convertire i nostri dati in un formato numerico.
  • Stop Words Removal: viene applicato per rimuovere dal nostro testo tutte le preposizioni (es. “An”, “the”, ecc …) che possono essere considerate solo come fonte di disturbo nei nostri dati (poiché non portano informativa nei nostri dati).
  • Stemming: viene infine utilizzato per eliminare tutti gli affissi nei nostri dati (es. Prefissi o suffissi). In questo modo, infatti, può diventare molto più facile per il nostro algoritmo non considerare come parole distinte che hanno effettivamente un significato simile (es. Insight ~ persightful).

Tutte queste tecniche di preelaborazione possono essere facilmente applicate a diversi tipi di testi utilizzando le librerie NLP Python standard come NLTK e Spacy .

Inoltre, per estrapolare la sintassi del linguaggio e la struttura del nostro testo, possiamo fare uso di tecniche come il Tagging di parti di discorso (POS) e Shallow Parsing (Figura 1). Utilizzando queste tecniche, infatti, etichettiamo esplicitamente ogni parola con la sua categoria lessicale (che si basa sul contesto sintattico della frase).

NLP - Natural Language Processing - Esempio di etichetttaura vocale
NLP – Natural Language Processing – Esempio di etichetttaura vocale

Tecniche di modellazione per l’elaborazione del linguaggio naturale

1. Borsa di parole

Bag of Words è una tecnica utilizzata nell’elaborazione del linguaggio naturale e nella visione artificiale per creare nuove funzionalità per i classificatori di formazione (Figura 2). Questa tecnica viene implementata costruendo un istogramma che conta tutte le parole nel nostro documento (senza tener conto dell’ordine delle parole e delle regole di sintassi).

Borsa di parole - Tecniche di modellazione per l’elaborazione del linguaggio naturale
Borsa di parole – Tecniche di modellazione per l’elaborazione del linguaggio naturale (NLP – Natural Language Processing)

Uno dei principali problemi che possono limitare l’efficacia di questa tecnica è la presenza di preposizioni, pronomi, articoli, ecc. nel nostro testo. In effetti, queste possono essere tutte considerate come parole che possono comparire frequentemente nel nostro testo anche senza essere necessariamente davvero istruttive per scoprire quali sono le caratteristiche e gli argomenti principali del nostro documento.

Per risolvere questo tipo di problema, viene comunemente utilizzata una tecnica chiamata “Term Frequency-Inverse Document Frequency” (TFIDF). TFIDF mira a ridimensionare la frequenza di conteggio delle parole nel nostro testo considerando la frequenza con cui ciascuna delle parole nel nostro testo appare complessivamente in un ampio campione di testi. Usando questa tecnica, ricompenseremo le parole (aumentando il loro valore di frequenza) che appaiono abbastanza comunemente nel nostro testo ma raramente in altri testi, mentre puniremo le parole (riducendo il loro valore di frequenza) che appaiono frequentemente sia nel nostro testo che in altri testi ( come preposizioni, pronomi, ecc.).

2. Latent Dirichlet Allocation (LDA)

Latent Dirichlet Allocation (LDA) è un tipo di tecnica di Topic Modeling. Topic Modeling è un campo di ricerca incentrato sulla ricerca di modi per raggruppare i documenti al fine di scoprire marcatori distintivi latenti che possono caratterizzarli in base al loro contenuto (Figura 3). Pertanto, il Topic Modeling può anche essere considerato in questo ambito come una tecnica di riduzione della dimensionalità poiché ci consente di ridurre i nostri dati iniziali a un insieme limitato di cluster.

Modellazione di argomenti - Tecniche di modellazione per l’elaborazione del linguaggio naturale
Modellazione di argomenti – Tecniche di modellazione per l’elaborazione del linguaggio naturale

Latent Dirichlet Allocation (LDA) è una tecnica di apprendimento senza supervisione utilizzata per scoprire argomenti latenti che possono caratterizzare documenti diversi e raggruppare insieme quelli simili. Questo algoritmo prende come input il numero N di argomenti che si ritiene esistano e quindi raggruppa i diversi documenti in N gruppi di documenti strettamente correlati tra loro.

Ciò che caratterizza l’LDA da altre tecniche di clustering come K-Means Clustering è che LDA è una tecnica di soft-clustering (ogni documento è assegnato a un cluster in base a una distribuzione di probabilità). 

Ad esempio, un documento può essere assegnato a un Cluster A perché l’algoritmo determina che è dell’80% di probabilità che questo documento appartenga a questa classe, pur tenendo conto che alcune caratteristiche incorporate in questo documento (il restante 20%) sono maggiori probabilmente appartengono invece a un secondo Cluster B. 

3. Incorporamenti di parole

Gli incorporamenti di parole sono uno dei modi più comuni per codificare le parole come vettori di numeri che possono quindi essere inseriti nei nostri modelli di apprendimento automatico per l’inferenza. I Word Embedding mirano a trasformare in modo affidabile le nostre parole in uno spazio vettoriale in modo che parole simili siano rappresentate da vettori simili.

Incorporamento di parole - Tecniche di modellazione per l’elaborazione del linguaggio naturale
Incorporamento di parole – Tecniche di modellazione per l’elaborazione del linguaggio naturale

Al giorno d’oggi, ci sono tre tecniche principali utilizzate per creare Word Embeddings: Word2Vec, GloVe e fastText.  

Queste tre tecniche utilizzano una rete neurale superficiale per creare l’incorporamento delle parole desiderato.

[NOTA: Nel caso siate interessati a saperne di più su come funziona Word Embeddings, l’articolo “What Are Word Embeddings for Text?” è un ottimo punto di partenza – ndr]

4. Sentiment Analysis, tecnica di Natural Language Processing per capire i sentimenti umani

La Sentiment Analysis è una tecnica di NLP – Natural Language Processing comunemente utilizzata per capire se una qualche forma di testo esprime un sentimento positivo, negativo o neutro su un argomento. Questo può essere particolarmente utile quando, ad esempio, si cerca di scoprire qual è l’opinione pubblica generale (attraverso recensioni online, tweet, post sui social network, ecc.) su un argomento, prodotto o azienda.

Nell’analisi del sentiment, i sentimenti nei testi sono generalmente rappresentati come un valore compreso tra -1 (sentiment negativo) e 1 (sentiment positivo) indicato come polarità.

La Sentiment Analysis può essere considerata una tecnica di apprendimento senza supervisione poiché di solito non ci vengono fornite etichette artigianali per i nostri dati. Per superare questo ostacolo, ci avvaliamo di lessici pre-etichettati (un libro di parole) che erano stati creati per quantificare il sentimento di un gran numero di parole in diversi contesti. 

Alcuni esempi di lessici ampiamente utilizzato nelle analisi sentiment sono TextBlob e VADER .

5. Transformers

I trasformatori rappresentano gli attuali modelli di Natural Language Processing allo stato dell’arte per analizzare i dati di testo. Alcuni esempi di modelli Transformers ampiamente conosciuti sono BERT e GTP2 .

Prima della creazione dei Transformers, le Recurrent Neural Networks (RNN) rappresentavano il modo più efficiente per analizzare in modo sequenziale i dati di testo per la previsione, ma con questo approccio è piuttosto difficile utilizzare in modo affidabile le dipendenze a lungo termine (es. la nostra rete potrebbe trovare difficile da capire se un la parola alimentata in diverse iterazioni fa potrebbe risultare utile per l’iterazione corrente).

Transformers è riuscito a superare questo limite con successo grazie a un meccanismo chiamato Attention (che viene utilizzato per determinare su quali parti del testo concentrarsi e dare più peso). 

Inoltre, Transformers ha reso più facile elaborare i dati di testo in parallelo anziché in sequenza (migliorando quindi la velocità di esecuzione).

I trasformatori oggi possono essere facilmente implementati in Python grazie a Libreria Hugging Face.

Dimostrazione di previsione del testo

La previsione del testo è una delle attività che possono essere facilmente implementate utilizzando Transformers come GPT2. 

In questo esempio, daremo come input una citazione da “The Shadow of the Wind” di Carlos Ruiz Zafón e il nostro trasformatore genererà quindi altri 50 caratteri che dovrebbero seguire logicamente i nostri dati di input.

Previsione del teso - Tecniche di modellazione per l’elaborazione del linguaggio naturale
Previsione del teso – Tecniche di modellazione per l’elaborazione del linguaggio naturale

Un libro è uno specchio che ci offre solo ciò che già portiamo dentro di noi. È un modo per conoscere noi stessi e ci vuole un’intera vita di autoconsapevolezza man mano che diventiamo consapevoli di noi stessi. Questa è una vera lezione dal libro La mia vita.

Come si può vedere dal nostro output di esempio mostrato sopra, il nostro modello GPT2 ha funzionato abbastanza bene nel creare una continuazione richiudibile per la nostra stringa di input.

questo link è disponibile un esempio di taccuino che potrete eseguire per generare il vostro testo.

***

Contatti

Se vuoi tenerti aggiornato con gli ultimi articoli ed i progetti di Pier Paolo,  seguilo su Medium e iscriviti alla sua mailing list

Scritto da: