Corso
L’elaborazione del linguaggio naturale (NLP) migliora il modo in cui esseri umani e computer comunicano tra loro, usando il machine learning per individuare la struttura e il significato del testo. Con le applicazioni di NLP, le organizzazioni possono aumentare la produttività e ridurre i costi analizzando il testo ed estraendo informazioni più significative per migliorare l’esperienza dei clienti.
Che cos’è l’elaborazione del linguaggio naturale (NLP)?
Non possiamo dire che spesso riflettiamo sulle sottigliezze della nostra lingua. È un comportamento intuitivo che si affida a segnali semantici come parole, segni o immagini per trasmettere informazioni e significato. Si dice talvolta che imparare una lingua sia più facile nell’adolescenza perché è un comportamento ripetibile che può essere instillato, un po’ come camminare. Inoltre, le lingue non seguono regole rigide e hanno molte eccezioni.
L’acquisizione del linguaggio, sebbene naturale per gli esseri umani, è estremamente complessa per i computer perché comporta molti dati non strutturati, una mancanza di regole rigide e nessuna prospettiva o contesto concreti. Eppure, gli esseri umani fanno sempre più affidamento sui sistemi informatici per comunicare e svolgere compiti. Ecco perché il machine learning (ML) e l’intelligenza artificiale (AI) stanno ricevendo così tanta attenzione e popolarità. L’elaborazione del linguaggio naturale segue lo sviluppo dell’AI. Sebbene questi due termini possano evocare immagini di robot futuristici, esistono già applicazioni semplici dell’NLP nella vita quotidiana.
L’NLP è una componente dell’AI che si concentra sulla comprensione del linguaggio umano così come è scritto e/o parlato. Per farlo, si sviluppano programmi informatici specifici; un computer tipico richiede che le istruzioni siano espresse in un linguaggio di programmazione molto preciso, delimitato, strutturato e non ambiguo. Purtroppo, il linguaggio umano naturale è impreciso, equivoco e confuso. Per consentire a un programma di comprendere il significato delle parole, è necessario usare algoritmi in grado di analizzarne significato e struttura per rendere le parole comprensibili, riconoscere determinati riferimenti e poi generare il linguaggio.
Quali sono le diverse tecniche di elaborazione del linguaggio naturale (NLP)?
Gli algoritmi di NLP eseguono varie analisi sintattiche e semantiche per valutare il significato delle frasi in base alle regole grammaticali. Lo fanno:
- Segmentando parole e gruppi di parole o analizzando la grammatica di intere frasi.
- Confrontando il testo in tempo reale con i database disponibili per determinare significato e contesto.
- Usando tecniche di machine learning e deep learning per identificare correlazioni rilevanti in grandi quantità di dati etichettati.
Le tecniche di NLP più comuni includono:
- Named Entity Recognition (NER): identifica nomi di persone, luoghi, organizzazioni, ecc.
- Analisi del sentiment: determina se un testo esprime un sentiment positivo, negativo o neutro.
- Riassunto di testi: genera riassunti concisi di testi più lunghi.
- Estrazione di aspetti: identifica aspetti chiave o l’intento all’interno di un testo.
- Topic modeling: scopre temi e strutture nascosti in grandi dataset testuali.
Cosa può fare l’elaborazione del linguaggio naturale?
L’NLP è utilizzata in un’ampia varietà di applicazioni. Ecco alcune delle aree più comuni.
Filtri di messaggistica
I filtri di messaggistica sono una delle prime applicazioni basilari di NLP online. La tecnica è stata utilizzata inizialmente per creare filtri antispam in grado di identificare messaggi indesiderati in base a determinate parole o frasi. Con l’evoluzione dell’NLP, anche i filtri sono migliorati.
Una delle applicazioni più comuni e recenti di questa tecnica è la classificazione delle email in Gmail. Questo sistema può classificare un’email in tre categorie (Principale, Social o Promozioni) in base al contenuto. Ciò consente agli utenti Gmail di gestire meglio la posta in arrivo, per visualizzare e rispondere rapidamente alle email importanti.
Assistenti intelligenti
Assistenti intelligenti come Siri (Apple) e Alexa (Amazon) usano il riconoscimento vocale per identificare i modelli di parlato, dedurre il significato e suggerire una risposta utile. Oggi sembra normale fare una domanda a Siri e che lei ci capisca e risponda in modo pertinente. Allo stesso modo, ci stiamo abituando a interagire quotidianamente con Siri o Alexa attraverso il termostato, le luci, l’auto, ecc.
Ci aspettiamo ormai che assistenti come Alexa e Siri colgano indizi contestuali per aiutarci nella vita di tutti i giorni e svolgere determinati compiti (ad es., ordinare prodotti). Ci divertono persino le loro risposte spiritose o quando parlano di sé. Le nostre interazioni diventano più personali man mano che ci conoscono. Secondo l’articolo del New York Times Why We May Soon Be Living in Alexa's World, "È in arrivo un grande cambiamento. Con ogni probabilità, Alexa diventerà la terza grande piattaforma consumer di questo decennio."
Risultati di ricerca
I motori di ricerca usano l’NLP per mostrare risultati pertinenti in base a comportamenti di ricerca simili o all’intento dell’utente. Questo permette a chiunque di trovare ciò di cui ha bisogno senza disporre di competenze particolari.
Per esempio, quando inizi a digitare una query, Google mostra ricerche correlate popolari, ma può anche riconoscere il significato generale della tua richiesta al di là delle parole esatte. Se digiti un numero di volo su Google, ne conoscerai lo stato. Se inserisci un simbolo azionario, otterrai un report sul titolo. Se digiti un’equazione, apparirà una calcolatrice. La tua ricerca può offrire una varietà di risultati perché la tecnica di NLP utilizzata associa una query ambigua a una determinata entità per proporre risultati utili.
Digitazione intuitiva
Funzionalità come correzione automatica, completamento automatico e digitazione predittiva sono così comuni oggi sui nostri smartphone che le diamo per scontate. Il completamento e la digitazione predittiva sono comparabili ai motori di ricerca in quanto si basano su ciò che viene digitato per suggerire la fine di una parola o frase. A volte la correzione automatica cambia persino alcune parole per migliorare il significato complessivo del messaggio.
Inoltre, queste funzioni evolvono insieme a te. Per esempio, la digitazione predittiva si adatta nel tempo ai tuoi modi di dire specifici. Ne derivano talvolta scambi di messaggi divertenti, con frasi basate interamente sull’input predittivo. Il risultato può essere sorprendentemente personale e informativo e, a volte, ha persino attirato l’attenzione dei media.
Traduzione
Se il tuo compito di lingua straniera è pieno di errori grammaticali, è probabile che l’insegnante capisca che hai copiato usando una tecnologia di NLP. Purtroppo, molte lingue non si prestano a traduzioni dirette perché hanno costruzioni frasali diverse, spesso trascurate dai servizi di traduzione. Tuttavia, questi sistemi hanno fatto molta strada.
Grazie all’NLP, gli strumenti di traduzione online offrono traduzioni più accurate e grammaticalmente corrette. Sono quindi estremamente utili se devi comunicare con qualcuno che non parla la tua lingua. Se devi tradurre un testo straniero, questi strumenti possono persino riconoscere la lingua del testo inserito per la traduzione.
Telefonate digitali
Quando si chiama alcune aziende, molti di noi avranno sentito l’annuncio "questa chiamata potrebbe essere registrata per scopi di formazione". Sebbene queste registrazioni possano essere utilizzate per la formazione (ad es., per analizzare uno scambio con un cliente insoddisfatto), di solito vengono archiviate in un database che consente a un sistema di NLP di apprendere e crescere. I sistemi automatizzati indirizzano le chiamate dei clienti a un agente o a un chatbot online, che fornirà informazioni pertinenti per rispondere alle loro richieste. Questa tecnica di NLP è già utilizzata da molte aziende, inclusi i principali operatori telefonici.
La tecnologia delle telefonate digitali consente anche a un computer di imitare la voce umana. È quindi possibile pianificare chiamate automatiche per fissare un appuntamento dal meccanico o dal parrucchiere.
Analisi dei dati
Le capacità di linguaggio naturale sono ora integrate nei flussi di lavoro analitici. Infatti, sempre più fornitori di BI offrono un’interfaccia in linguaggio naturale per le loro visualizzazioni dei dati. Una codifica visiva più intelligente consente, per esempio, di proporre la migliore visualizzazione possibile per un compito specifico, in base alla semantica dei dati. Chiunque può esplorare i dati usando enunciati in linguaggio naturale o frammenti di domande i cui termini chiave vengono interpretati e compresi.
Esplorare i dati usando il linguaggio rende i dati più accessibili e apre l’analisi all’intera azienda, oltre il consueto circolo di analisti e sviluppatori IT.
Text analytics
La text analytics converte dati testuali non strutturati in dati analizzabili usando varie tecniche linguistiche, statistiche e di machine learning.
L’analisi del sentiment può sembrare una sfida scoraggiante per i brand (soprattutto in presenza di una base clienti ampia). Tuttavia, uno strumento basato su NLP può in genere esaminare le interazioni dei clienti (come commenti o recensioni sui social media, o persino citazioni dei nomi dei brand) per capirne la natura. I brand possono quindi analizzare queste interazioni per valutare l’efficacia della loro campagna di marketing o monitorare l’evoluzione dei problemi dei clienti. Possono quindi decidere come rispondere o migliorare il servizio per offrire un’esperienza migliore.
L’NLP contribuisce anche alla text analytics estraendo parole chiave e identificando schemi o tendenze nei dati testuali non strutturati. Quali sono i principali modelli NLP?
Sebbene l’NLP esista da tempo, i progressi recenti sono stati notevoli, in particolare con l’ascesa dei modelli basati su transformer e dei modelli linguistici di grandi dimensioni sviluppati dalle principali aziende tecnologiche. Alcuni dei modelli più avanzati includono:
-
Modelli basati su transformer:
- BERT e ALBERT (Google AI)
- RoBERTa (Meta/Facebook), StructBERT (Alibaba), DeBERTa (Microsoft), DistilBERT (Hugging Face)
- XLNet (Carnegie Mellon University), UniLM (Microsoft), Reformer (Google)
-
Large language models (LLM):
- GPT-3, GPT-4 e GPT-4 Turbo (OpenAI)
- Claude 3 (Anthropic)
- PaLM 2 e Gemini 1.5 (Google DeepMind)
- LLaMA 2 (Meta)
- Mistral e Mixtral (Mistral AI)
In questo tutorial, daremo uno sguardo più da vicino a come viene utilizzato BERT per l’NLP.
Come funziona Google BERT?
BERT, acronimo di "Bidirectional Encoder Representations from Transformers", è un modello rilasciato da Google AI. Questa tecnica innovativa si basa sull’elaborazione del linguaggio naturale (NLP).
L’algoritmo utilizza essenzialmente il machine learning e l’intelligenza artificiale per comprendere le query effettuate dagli utenti di Internet. Cerca così di interpretarne le intenzioni di ricerca, cioè il linguaggio naturale che usano.
In questo senso, BERT è associato ad assistenti vocali personali come Google Home. Lo strumento non si basa più su ogni singola parola inserita dall’utente, ma considera l’intera espressione e il contesto in cui è collocata. Questo per affinare i risultati. È più efficiente nel gestire ricerche complesse, indipendentemente dal mezzo utilizzato.
Più concretamente, BERT consente al motore di ricerca di:
- Risolvere ambiguità nelle espressioni, tenendo conto del significato contestuale delle parole;
- Comprendere a cosa si riferiscono i pronomi, soprattutto in paragrafi lunghi;
- Risolvere problemi di omonimia;
- Comprendere la frase successiva;
- Fornire risposte direttamente nella SERP (Search Engine Result Page)...
Per altre applicazioni, BERT è utilizzato in:
- Domanda e risposta;
- Analisi delle opinioni;
- Abbinamento di frasi e inferenza in linguaggio naturale;
- Rilevamento di tweet offensivi.
L’impatto di Google BERT sarebbe quindi di circa il 10% sulle query più lunghe, digitate in modo naturale.
L’elaborazione del linguaggio naturale si concentra sull’analisi delle parole digitate dall’utente. La parola chiave, i suoi predecessori e i suoi successori vengono tutti esaminati per comprendere meglio la query. Questo è il principio di analisi adottato dai "transformer".
L’algoritmo è particolarmente efficace per le ricerche long-tail, in cui le preposizioni influenzano il significato. D’altra parte, il suo impatto sulle query generiche è meno importante, poiché sono già ben comprese da Google. Gli altri strumenti di comprensione, quindi, restano funzionali.
Che la query sia formulata in modo disordinato o preciso, il motore di ricerca è comunque in grado di elaborarla. Ma per maggiore efficacia, è meglio usare termini più appropriati.
Il contesto gioca un ruolo importante nell’analisi eseguita da BERT. La traduzione automatica e la modellazione linguistica sono ottimizzate. Si notano anche miglioramenti significativi nella generazione di testi di qualità.
Per usare questo modello, importiamo prima le librerie e i pacchetti necessari, come mostrato qui:

Successivamente, scarichiamo ed estraiamo il Large Movie Review Dataset, quindi esploriamo la struttura della directory.

Per creare un tf.data.Dataset etichettato useremo text_dataset_from_directory come mostrato sotto. Poi creeremo un set di validazione usando uno split 80:20 dei dati di training tramite l’argomento validation_split.

È importante specificare un seed casuale quando si usa validation_split, in modo che gli split di validazione e training non si sovrappongano.
Il passo successivo sarà scegliere quale modello BERT caricare e mettere a punto da TensorFlow Hub; puoi usare hub.KerasLayer per comporre il tuo modello messo a punto. Poi proveremo il modello di preprocessing su un po’ di testo e vedremo l’output.

Successivamente, costruirai un modello semplice composto dal modello di preprocessing, dal modello BERT selezionato nei passaggi precedenti, da un livello denso e da un livello di Dropout.

Ora puoi verificare se il tuo modello funziona con l’output del modello di preprocessing.

La funzione di loss è un passaggio necessario qui; opteremo per la losses.BinaryCrossentropy poiché stiamo affrontando un problema di classificazione binaria.

Per il fine-tuning, usiamo lo stesso ottimizzatore con cui BERT è stato originariamente addestrato: gli "Adaptive Moments" (Adam). Questo ottimizzatore minimizza la perdita di previsione ed effettua la regolarizzazione tramite weight decay, nota anche come AdamW.

Usando il classifier_model creato in precedenza, puoi compilare il modello con loss, metrica e ottimizzatore.

Nota che il tuo modello potrebbe richiedere più o meno tempo per l’addestramento a seconda della complessità del modello BERT scelto.

Ora valuteremo come si è comportato il nostro modello controllandone la loss e l’accuratezza.

Puoi usare l’oggetto history se vuoi tracciare loss e accuratezza per i set di training e validazione:

Tutti i passaggi sopra sono dettagliati in questo notebook. Puoi esercitarti con i passaggi e far girare il codice per vedere gli output di ciascun modello BERT nell’elenco.
Conclusione
L’elaborazione del linguaggio naturale è già ben consolidata nel mondo digitale. Le sue applicazioni si moltiplicheranno man mano che aziende e settori ne scopriranno i vantaggi e la adotteranno. Sebbene l’intervento umano continui a essere essenziale per problemi di comunicazione più complessi, l’NLP sarà la nostra alleata quotidiana: in principio gestirà e automatizzerà i compiti minori, per poi affrontare via via quelli più complessi con l’avanzare della tecnologia.
Per saperne di più su come funziona l’NLP e su come usarla, dai un’occhiata al nostro corso Deep Learning for NLP in Python.
Domande frequenti
In cosa BERT è diverso dai modelli GPT?
BERT è progettato per la comprensione bidirezionale del linguaggio, cioè considera l’intero contesto di una parola all’interno di una frase. Al contrario, i modelli GPT (come GPT-4) sono autoregressivi: predicono le parole da sinistra a destra e sono ottimizzati per la generazione di testo.
Quali sono alcuni casi d’uso comuni di BERT?
BERT è ampiamente utilizzato per:
- Analisi del sentiment
- Named Entity Recognition (NER)
- Question answering (ad es., alla base della Ricerca Google)
- Riassunto di testi
- Traduzione automatica
Ho bisogno di una GPU potente per fare fine-tuning di BERT?
Sì, il fine-tuning di BERT richiede in genere una GPU, a causa dell’intensità computazionale dell’addestramento di modelli di deep learning. Tuttavia, le versioni pre-addestrate di BERT possono essere usate per molti compiti di NLP con risorse di calcolo minime.
Quali sono alcune alternative a BERT?
Diversi modelli si basano su BERT o competono con esso, tra cui:
- ALBERT (Google AI): una versione più leggera ed efficiente di BERT
- RoBERTa (Meta): una versione ottimizzata di BERT con più dati di addestramento
- DistilBERT (Hugging Face): una versione più piccola e veloce di BERT
- Modelli GPT (OpenAI): modelli autoregressivi ottimizzati per la generazione di testo
Come posso iniziare a usare BERT nei miei progetti di NLP?
Per iniziare a usare BERT:
- Usa la libreria Transformers di Hugging Face per caricare modelli BERT pre-addestrati.
- Esegui il fine-tuning di BERT sul tuo dataset usando PyTorch o TensorFlow.
- Sperimenta con le API basate su BERT di Google, come i modelli su TensorFlow Hub.

