NLP: Processamento del Linguaggio Naturale
Come l'AI capisce il linguaggio umano
📌Da Testo a Numeri
I computer non capiscono le parole come gli esseri umani: devono trasformarle in numeri.
Il processo base ha due step: (spezza il testo in unità) e (trasforma ogni token in un vettore numerico). Parole e frasi con significato vicino tendono ad avere vettori vicini nello spazio semantico.
Nota pratica: se la è sbagliata, anche il miglior modello produrrà risposte incoerenti. In produzione , testa sempre gli linguistici oltre ai casi standard.
Takeaway: parte dalla qualità della rappresentazione numerica del testo.
📌Transformer e Attention
I sono l'architettura alla base dei moderni . Il meccanismo chiave è l'attention: il modello pesa dinamicamente quali parti del testo sono più rilevanti nel contesto attuale.
Esempio: in una frase lunga, attention permette di collegare parole distanti ma semanticamente legate, migliorando coerenza e comprensione.
Nota pratica: l'attention migliora il focus, ma non elimina errori fattuali: serve sempre validazione output. <<Takeaway: attenzione al contesto > semplice sequenza di parole>>.
🎬 Video
In arrivoCome i Transformer usano il meccanismo attention per pesare dinamicamente le parole rilevanti nel contesto. Esempio visivo su frasi lunghe: come due parole distanti ma correlate vengono collegate, e perché questo è superiore alle reti ricorrenti precedenti.
media/ch06-nlp/sec-02/video.mp4
🚀Startup Lens
In un prodotto reale non significa solo "prompt": significa pipeline completa con fallback, moderazione, monitoraggio qualità e controllo costi token.
Se non tracci latenza, tasso fallback e qualità percepita, il sistema sembra funzionare in demo ma degrada in produzione.
⚠️Errore comune + Check rapido
Errore comune: valutare il sistema solo su 2-3 prompt "fortunati".
Check rapido (2 min): scegli un caso d'uso (chat supporto, FAQ, classificazione) e indica 2 prompt edge-case che potrebbero rompere il comportamento atteso.
🎙️ Podcast
In arrivoUn episodio breve ma denso sull'errore più comune nei sistemi NLP: valutare solo su prompt 'fortunati'. Il podcast guida lo studente nella costruzione di un mini test set con edge-case reali (ambiguità, negazioni, frasi miste, tono ironico) per un caso d'uso specifico (chat supporto, FAQ o classificazione). Collega la robustezza NLP con la pipeline di produzione vista nella Startup Lens e con le metriche operative del capitolo precedente. Takeaway: un sistema NLP affidabile si misura sui casi difficili, non su quelli facili.
media/ch06-nlp/sec-04/podcast.mp3
NLP Workflow Pratico — 6 Step
📋 Setup
Cosa imparerai in questo lab:
- Costruire un dataset testuale inline e pre-processarlo
- Trasformare il testo in numeri con TF-IDF
- Confrontare Logistic Regression vs Naive Bayes su testo
- Visualizzare la confusion matrix e le parole più discriminanti
🛠️ Scelte Tecniche
- Questo lab NON usa reti neurali: è NLP classico per consolidare i fondamentali prima dei modelli deep.
TF-IDFinvece di embedding deep: visibile, interpretabile e perfetto per capire i fondamentali NLP.LogisticRegression+MultinomialNB: confronto lineare vs probabilistico sullo stesso dataset.random_state=42per risultati riproducibili durante la lezione.seaborn+ confusion matrix per mostrare errori reali (falsi positivi/negativi), non solo accuracy.
🧪 Scelte di Laboratorio
- Dataset inline da 30 frasi italiane: nessun download e setup immediato in aula.
- Niente API esterne: il lab funziona completamente offline.
- Pipeline in 6 step volutamente didattica: caricamento → preprocessing → vettorizzazione → training → visualizzazione → esperimento su
mia_recensione. - Focus sull'analisi degli errori e top parole, non sul “modello più complesso”.
Prerequisiti:
- ✅ Python 3.7+
- ✅ pip installato
Comandi di avvio:
# 1. Estrai lo ZIP e accedi
$ cd ml-lab-03-nlp/
# 2. Installa le dipendenze
$ pip install -r requirements.txt
# 3. Esegui il lab
$ python main.py
Carica i Dati
Dataset inline di 30 recensioni in italiano (15 positive + 15 negative) — nessun download, nessuna API. Il modello impara direttamente da queste frasi.
Carica i Dati — Codice
python
🎯 Prova: Prova: aggiungi 5 tue frasi al dataset — il modello le include nel training. Una frase ironica viene classificata correttamente?
Preprocessing
Preprocessing in 2 righe: lowercase + rimozione punteggiatura con regex. Nessuna libreria esterna — mostra che il pre-processing è matematica elementare.
Preprocessing — Codice
python
🎯 Prova: Sperimenta: aggiungi re.sub(r'\d+', '', text) per rimuovere i numeri — migliora o peggiora l'accuracy?
TF-IDF Vectorization
TF-IDF trasforma il testo in numeri: parole rare ma frequenti in un documento hanno peso alto. È la base di quasi tutti i sistemi NLP classici.
TF-IDF Vectorization — Codice
python
🎯 Prova: Prova: cambia max_features=500 — l'accuracy cambia? Con meno feature il modello è più veloce ma meno preciso.
Training — LR vs Naive Bayes
Allena e confronta due approcci: Logistic Regression (lineare, interpretabile) vs Multinomial Naive Bayes (probabilistico, velocissimo su testo).
Training — LR vs Naive Bayes — Codice
python
🎯 Prova: Rifletti: quale modello ha accuracy più alta? Perché Naive Bayes funziona spesso bene con il testo nonostante le sue assunzioni semplificate?
Visualizzazione
Confusion matrix con seaborn per visualizzare falsi positivi/negativi + le top 10 parole più discriminanti dai coefficienti del modello.
Visualizzazione — Codice
python
🎯 Prova: Sperimenta: aggiungi la tua frase nella sezione ESPERIMENTO in fondo al main.py — il modello la classifica correttamente?
Esperimento — cambia mia_recensione
Modifica la variabile mia_recensione nel file main.py: il modello rifà il preprocessing, la vettorizzazione e restituisce una nuova predizione (Positivo/Negativo) con relativa confidenza.
Esperimento — cambia mia_recensione — Codice
python
🎯 Prova: Prova: cambia tono e parole chiave in mia_recensione (es. “ottimo” vs “pessimo”) e osserva come cambia la predizione. Con frasi ambigue, verifica se il modello sbaglia: è un ottimo test di robustezza.
🎯 Punti Chiave
- •Il linguaggio deve essere convertito in numeri
- •Attention mechanism = "cosa è importante"
- •Transformer = base di ChatGPT e moderni LLM
- •Context window = quante parole ricorda il modello
- •Learning outcome: spiegare token/embedding/attention su un esempio pratico
💬 Discussione in Aula
- •Come cambierebbe ChatGPT se non avesse Attention mechanism?
- •Qual è il limite della context window e come potrebbe impattare la comprensione?
- •Se due parole hanno embedding molto simili, cosa significa?
Media del Capitolo
1/3 prontiGli slot con media reale non sono più placeholder; gli altri restano placeholder finché non carichiamo i file.
🎬 Video
In arrivoVideo completo Capitolo 6: tokenizzazione, embedding, Transformer e attention, con esempi pratici NLP e guardrail di valutazione.
Durata target: 9 min
Path previsto: media/ch06-nlp/video.mp4
🎙️ Podcast
In arrivoPodcast di ripasso NLP: pipeline testo->numeri, errori comuni e best practice per test su edge-case.
Durata target: 20 min
Path previsto: media/ch06-nlp/podcast.mp3
🧠 Quiz del Capitolo
1. Cos'è la tokenizzazione nel NLP?