Lelaborazione del linguaggio naturale (NLP, da Natural Language Processing) è una sottobranca della linguistica computazionale e intelligenza artificiale che tratta l'interazione tra i computer e il linguaggio umano, in particolare sul come programmare i computer per elaborare e analizzare grandi quantità di dati di linguaggio naturale. Lo scopo è rendere una macchina in grado di "comprendere" il contenuto dei documenti e le loro sfumature contestuali, in modo tale che possa quindi estrarre con precisione informazioni e idee contenute nei documenti, nonché classificare e categorizzare i documenti stessi.

Le sfide dell'elaborazione del linguaggio coinvolgono spesso il riconoscimento vocale, comprensione del linguaggio naturale e la generazione del linguaggio naturale.

Descrizione Questo processo è reso particolarmente difficile e complesso a causa delle caratteristiche intrinseche di ambiguità del linguaggio umano. Per questo motivo il processo di elaborazione viene suddiviso in fasi diverse, tuttavia simili a quelle che si possono incontrare nel processo di elaborazione di un linguaggio di programmazione:

analisi lessicale: scomposizione di un'espressione linguistica in token (in questo caso le parole) analisi grammaticale: associazione delle parti del discorso a ciascuna parola nel testo analisi sintattica: arrangiamento dei token in una struttura sintattica, conosciuta come albero sintattico analisi semantica: assegnazione di un significato (semantica) alla struttura sintattica e, di conseguenza, all'espressione linguistica

Nell'analisi semantica la procedura automatica che attribuisce all'espressione linguistica un significato tra i diversi possibili è detta disambiguazione.

Problemi In teoria, l'elaborazione del linguaggio naturale è un metodo di interazione uomo-macchina. I primi sistemi sviluppati, quali SHRDLU, che lavoravano in "mondi a blocchi" con vocabolari ristretti, ottenevano ottimi risultati. Ciò portò i ricercatori a un eccessivo ottimismo, che scemò non appena i sistemi furono estesi a situazioni più realistiche con problemi reali di ambiguità e complessità.

La comprensione del linguaggio naturale è spesso considerata un problema IA-completo, poiché si pensa che il riconoscimento del linguaggio richieda una conoscenza estesa del mondo e una grande capacità di manipolarlo. Per questa ragione, la definizione di "comprensione" è uno dei maggiori problemi dell'elaborazione del linguaggio naturale.

Primi approcci (Simbolico e Statistico)

Anni '50 e '60: Prime Teorie e Approcci Simbolici

Inizialmente, l'elaborazione del linguaggio naturale si basava principalmente su approcci simbolici e basati su regole. Questi approcci cercavano di analizzare la sintassi e la semantica del linguaggio utilizzando regole grammaticali. Alcuni dei primi sistemi, come quelli di Alan Turing e Noam Chomsky, cercavano di modellare la struttura linguistica attraverso grammatica formale e logica.

Approccio statistico Gli approcci statistici al NLP sono nati in risposta alla difficoltà di trattare il linguaggio naturale in modo rigoroso e deterministico. Il linguaggio umano è complesso, ambiguo e variabile, quindi gli approcci simbolici basati su regole (come quelli usati negli anni '50 e '60) non erano sempre sufficienti. Tra la fine degli anni '80 e la metà degli anni '90 del millenovecento, l'approccio statistico ha posto fine al periodo invernale dell'intelligenza artificiale, causato dall'inefficacia degli approcci basati sulle regole.

Probabilità e Modelli Statistici I primi approcci statistici, capaci di superare i precedentemente diffusi alberi decisionali, che creano sistemi di regole rigide "se-allora", erano basati su modelli probabilistici, come i modelli di Markov e le catene di Markov nascoste (HMM). Questi modelli sono stati utilizzati principalmente per il part-of-speech tagging, l'analisi sintattica e il riconoscimento del parlato. Gli HMM sono modelli probabilistici che descrivono sequenze di eventi (o stati) in cui la probabilità di transizione da uno stato all'altro dipende solo dallo stato attuale.

Altri modelli di probabilità ampiamente utilizzati includevano i modelli n-grammi per la previsione delle parole (un modello di linguaggio che stima la probabilità di una parola basata sulle precedenti n−1 parole).

Probabilità condizionata nei modelli di linguaggio probabilistici

La probabilità condizionata è un concetto fondamentale nella teoria delle probabilità e viene applicato in numerosi ambiti, tra cui i modelli di linguaggio probabilistici. In generale, la probabilità condizionata di un evento 𝑤ᵢ, dato un insieme di eventi precedenti , è definita come:

In altre parole, si cerca di calcolare la probabilità che una determinata parola (𝑤ᵢ) appaia, dato che sono già state osservate le parole precedenti nel contesto (). Questo tipo di probabilità è fondamentale nella comprensione del linguaggio naturale, in quanto i modelli linguistici devono prevedere la probabilità di una parola in un dato contesto.

Modelli di linguaggio probabilistici

Nei modelli di linguaggio probabilistici, la probabilità di una parola dipende dalle parole che l'hanno preceduta. Questo approccio è alla base di molti sistemi di trattamento del linguaggio naturale, come i sistemi di correttore ortografico, i motori di ricerca e le traduzioni automatiche.

Un modello linguistico probabilistico può essere basato su diversi ordini di dipendenza, tra cui il modello n-gramma. In un modello n-gramma, la probabilità condizionata di una parola 𝑤ᵢ viene approssimata considerando solo le parole precedenti in una finestra di dimensione fissa, ovvero le ultime 𝑛-1 parole. La probabilità condizionata di 𝑤ᵢ, data una sequenza di parole precedenti, è quindi approssimata come:

Questa approssimazione riduce il problema complesso di calcolare la probabilità condizionata di una parola data l'intera sequenza di parole precedenti, limitandosi a considerare solo le ultime 𝑛-1 parole, e semplifica il calcolo, rendendo il modello computazionalmente gestibile.

Ulteriori esempi di modello n-gramma

Un esempio di modello n-gramma di ordine 2 (bigramma) considera solo la parola precedente per calcolare la probabilità di una nuova parola. In altre parole, la probabilità condizionata di una parola 𝑤ᵢ data la sequenza precedente di parole 𝑤₁, 𝑤₂, ..., 𝑤ᵢ₋₁ è approssimata come:

Nel caso di un modello trigramma (ordine 3), invece, si considera una finestra di 2 parole precedenti per calcolare la probabilità della parola successiva:

Questa approccio riduce significativamente la complessità rispetto al calcolo di una probabilità condizionata su tutte le parole precedenti, ma richiede comunque una buona quantità di dati per stimare accuratamente le probabilità.

Limitazioni dei modelli n-gramma Nonostante i modelli n-gramma siano semplici e computazionalmente efficienti, presentano alcune limitazioni. La principale è che questi modelli non riescono a catturare dipendenze a lungo termine tra le parole. Ad esempio, in una frase come Il cane corre nel parco e poi si ferma per riposare, un modello di ordine n=2 (bigramma) potrebbe non essere in grado di cogliere correttamente la relazione tra corre e ferma, poiché queste parole sono distanti.

Inoltre, per modelli di ordine più alto (ad esempio, trigramma o quadgramma), il numero di parametri aumenta esponenzialmente, il che porta alla necessità di una grande quantità di dati per stimare accuratamente le probabilità, oltre al rischio di sparsità dei dati (mancanza di alcune combinazioni di parole nei dati di addestramento).

Modelli di Markov

Un processo di Markov è un modello probabilistico che descrive un sistema in cui la probabilità di passare a uno stato futuro dipende esclusivamente dallo stato attuale, e non dalla sequenza di eventi che ha portato a quello stato. Questo principio è noto come proprietà di Markov o memoria corta. In altre parole, un processo di Markov è un tipo di processo stocastico in cui il futuro è indipendente dal passato, dato l'istante presente.

Nel contesto del linguaggio naturale, un modello di Markov può essere utilizzato per prevedere la probabilità di una parola successiva basandosi solo sulla parola precedente. Ad esempio, in un modello di Markov di ordine 1 (noto anche come bigramma), la probabilità di una parola dipende solo dalla parola che la precede, ed è rappresentata come:

Questo approccio semplifica il calcolo delle probabilità, riducendo la dipendenza dalla sequenza completa di parole precedenti a quella di una sola parola, ma può perdere informazioni contestuali importanti che si trovano in sequenze più lunghe.

Catene di Markov Nascoste (HMM)

Un modello di Markov a catene nascoste (Hidden Markov Model, HMM) è un'estensione del modello di Markov che coinvolge due sequenze: una visibile e una nascosta. In un HMM, gli stati nascosti non sono direttamente osservabili (ad esempio, i tag grammaticali), ma influenzano la sequenza osservata (come le parole in un testo).

L'obiettivo principale degli HMM è inferire la sequenza di stati nascosti basandosi sui dati osservati, come le parole. Ad esempio, in un'applicazione di analisi del testo o part-of-speech tagging, un HMM può essere utilizzato per identificare le categorie grammaticali delle parole, dato il loro contesto. La probabilità di una sequenza di parole, quindi, dipende dalla sequenza di stati nascosti associata ad esse.

La formula di base di un modello a catene di Markov nascoste è la seguente:

Dove:

𝑊 è la sequenza di parole osservabili (ad esempio, "il cane corre"), 𝑆 è la sequenza di stati nascosti (ad esempio, i tag grammaticali come "Aggettivo", "Sostantivo", "Verbo"), P(𝑆ᵗ | 𝑆ᵗ₋₁) è la probabilità di transizione tra gli stati nascosti, P(𝑊ᵗ | 𝑆ᵗ) è la probabilità di osservare la parola 𝑊ᵗ dato lo stato nascosto 𝑆ᵗ.

La probabilità di una sequenza di parole osservate e la sequenza di stati nascosti è calcolata come il prodotto della probabilità iniziale del primo stato nascosto, la probabilità di transizione tra gli stati e la probabilità di osservare la parola in base allo stato nascosto. Gli HMM sono ampiamente utilizzati per compiti di riconoscimento vocale, traduzione automatica, e analisi del linguaggio naturale.

Applicazioni delle catene di Markov nascoste Gli HMM sono utilizzati in vari ambiti dell'intelligenza artificiale e del trattamento del linguaggio naturale, tra cui:

Part-of-Speech Tagging: assegnare un tag grammaticale a ciascuna parola in una frase. Riconoscimento vocale: convertire la voce in testo, utilizzando modelli che prevedono la sequenza di fonemi nascosti. Analisi del sentimento: determinare il tono o il sentimento di un testo a partire da un modello di stati emotivi nascosti. Bioinformatica: per esempio, nella predizione della struttura secondaria delle proteine.

Nonostante la loro utilità, gli HMM sono limitati dalla loro dipendenza da sequenze di stati nascosti e dal fatto che non catturano efficacemente dipendenze a lungo termine, un problema che è stato affrontato con l'introduzione di modelli più avanzati come le reti neurali ricorrenti (RNN) e i modelli basati su Transformer.

Anni 2000 e 2010 - L'avvento dell'IA

Il passaggio dai modelli statistici tradizionali ai modelli di intelligenza artificiale (IA) nel campo dell'elaborazione del linguaggio naturale (NLP) è stato un cambiamento fondamentale nella tecnologia del linguaggio. Questo cambiamento è stato guidato da ricercatori e sviluppatori come Geoffrey Hinton, Yann LeCun e Yoshua Bengio, che hanno contribuito allo sviluppo delle reti neurali profonde (deep learning). Negli anni 2000 e 2010, le tecniche basate su modelli statistici, come i modelli di Markov o gli n-grammi, dimostravano di essere limitate nelle loro capacità di gestire dipendenze a lungo termine e dalla necessità di grandi quantità di dati etichettati per funzionare correttamente.