Questo sito utilizza cookie per raccogliere dati statistici.
Privacy Policy
# Embeddings: Come Insegnare alle Macchine a Capire le Parole
## Perché servono gli Embeddings?
Gli esseri umani sono bravissimi a capire il significato delle parole.
Se ti dico:
* **“Pallone”**
* **“Calcio”**
* **“Tifoso”**
tu capisci subito che c'entra lo sport.
Se dico:
* **“Forno”**
* **“Farina”**
* **“Impasto”**
capisci che si parla di cucina.
💡 *Le macchine però vedono solo numeri.*
Serve quindi un modo per trasformare le parole in qualcosa di **numerico**, ma che **mantenga il loro significato**.
Gli **embedding** sono proprio questo:
*coordinate nello spazio* che rappresentano il significato delle parole.
Immagina un **Google Maps del linguaggio**: ogni parola ha una posizione, e parole simili stanno vicine.
## Bag of Words: la prima idea (carina ma ingenua)
### Cos’è Bag of Words? 🧺
È il modo più semplice per trasformare un testo in numeri:
* si prendono tutte le parole presenti nei testi,
* si crea un gigantesco “vocabolario”,
* ogni frase viene convertita in un vettore di lunghezza **numero parole totali**,
* in ogni posizione si mette **quante volte quella parola compare**.
### Esempio
Supponiamo tre frasi:
1. Il gatto mangia il pesce
2. Il cane mangia la carne
3. Il gatto e il cane giocano
Vocabolario (ordine inventato):
| Parola | 1 | 2 | 3 |
| ----- | ----- | ----- | ----- |
| il | 2 | 2 | 1 |
| gatto | 1 | 0 | 1 |
| cane | 0 | 1 | 1 |
| mangia | 1 | 1 | 0 |
| pesce | 1 | 0 | 0 |
| carne | 0 | 1 | 0 |
| giocano | 0 | 0 | 1 |
| e | 0 | 0 | 1 |

### Vantaggi di Bag of Words
* Semplice da capire.
* Facile da implementare (anche in prima liceo).
### Limiti di Bag of Words
* Vettori **enormi** (migliaia di parole \= migliaia di numeri).
* Non cattura il significato:
*per Bag of Words “gatto” e “leopardo” sono totalmente diversi.*
* Parole molto frequenti (il, di, e) dominano tutto.
* Non capisce il contesto:
“pesca” (verbo) e “pesca” (frutto) vengono confuse.
È come prendere una frase, scrivere ogni parola su dei foglietti, appallottolarli e buttarli in un sacchetto. Poi scuotete il sacchetto. Cosa è rimasto? Il conteggio.
Nel metodo Bag of Words (BoW), al computer non importa l'ordine delle parole o la grammatica. Gli importa solo quante volte compare una parola
Di conseguenza, frasi come `Il gatto mangia il pesce` o `il pesce mangia il gatto` risultano semanticamente identiche per questo sistema ‼️
---
## TF-IDF: Bag of Words diventa più intelligente
Dopo un po', ci si è accorti che contare e basta non funziona. Perché?
Perché parole come "il", "è", "di", "a" compaiono ovunque ma non significano niente (si chiamano Stopwords). Mentre parole come "Rinoceronte" o "Ferrari" sono rare ma molto importanti per capire l'argomento.
Ecco **TF-IDF** (Term Frequency \- Inverse Document Frequency). Sembra uno scioglilingua, ma è semplice:
**La logica:** "Se una parola appare spesso in QUESTA frase, ma raramente nelle ALTRE frasi, allora è una parola VIP ⭐".
* **TF (Frequenza):** Conta quanto la parola è presente qui.
* **IDF (Rarità):** Penalizza le parole che usano tutti (come "il").
`TF-IDF = TF × IDF`
### Effetto pratico
* Parole come **"il", "la", "di"** ottengono punteggi bassissimi perché sono generalmente molto presenti.
* Parole come **"pesce", "carne", "giocano"** diventano molto informative se presenti in una frase.

### Vantaggi di TF-IDF
* Riduce l'importanza delle parole inutili.
* Buono per motori di ricerca “classici” perchè capisce quali sono le **parole chiave** ("Keyword extraction")
### Limiti di TF-IDF
* Ancora vettori enormi (dimensione \= vocabolario).
* Nessun vero “significato”:
*“gatto” e “tigre” restano completamente slegati.*
* Non cattura sinonimi.
*"Auto" e "Macchina" sono due parole diverse.*
* Non capisce il contesto.
---
## Word2Vec: rivoluzione\! Le parole diventano coordinate piene di significato
Nel 2013 Google introduce **Word2Vec**: una delle svolte epocali del NLP.
Idea:
*Invece di contare parole, cerchiamo di capire dove compaiono.*
### Come funziona 🧠
Il modello guarda frasi reali e impara che:
* “gatto” appare vicino a “mangiare”, “miagolare”, “felino”.
* “cane” appare vicino a “abbaiare”, “giocare”, “collare”.
Risultato:
le parole vengono rappresentate come **vettori di 50–300 numeri**, non più lunghissimi come accadeva in TF-IDF.
Immagina un **GPS semantico**:
| Parola | Coord1 | Coord2 | Coord3 | ... |
| ----- | ----- | ----- | ----- | ----- |
| gatto | 0.12 | \-0.44 | 0.88 | ... |
| cane | 0.10 | \-0.47 | 0.90 | ... |
| pesce | \-0.33 | 0.05 | 0.11 | ... |
### Proprietà magiche 🚀
Word2Vec cattura **relazioni semantiche** sorprendenti:
Re \- Uomo \+ Donna \= Regina
Parigi \- Francia \+ Italia \= Roma
Camminare \- Piede \+ Ruota \= Guidare (a volte)
### Vantaggi di Word2Vec
* I vettori sono **compatti** (100–300 dimensioni invece che 10.000).
* Cattura **somiglianze** e **relazioni semantiche**.
* Enorme salto rispetto a TF-IDF.
### Limiti di Word2Vec
1. **Non capisce il contesto.**
“pesca” \= stessa parola → stesso vettore
che parli di frutto o dell'attività...
2. **Un vettore per parola per sempre.**
Nessuna personalizzazione per la frase.
3. **Dipendenza dal dataset di origine.**
Se Word2Vec è addestrato su Wikipedia, non capirà bene slang tipo “bro”, “cringe”, “sus”.
(Il modello diventa boomer.)
---
## La similarità tra parole: come si misura?
Come facciamo a sapere se due parole sono simili?
Per confrontare due vettori di embedding si usa la **cosine similarity**.
Non guarda la distanza assoluta tra le due parole, ma l’angolo che le divide.
### **Intuizione geometrica**
* Due parole simili puntano nella **stessa direzione** → angolo piccolo → similarità alta.
* Parole diverse puntano in direzioni molto diverse → angolo grande → similarità bassa.
Valori:
* **1.0** → identici
* **0.6** → abbastanza simili
* **0.0** → neutri
* **\-1.0** → opposti (rarissimo per il linguaggio)

**Il trucco del "Re - Uomo + Donna" 🎩**
Word2Vec permette di fare Algebra con le parole.
Se prendi il vettore del RE, sottrai il *concetto* di UOMO e aggiungi il *concetto* di DONNA... atterri esattamente sulle coordinate della REGINA.
---
## BERT e oltre: gli embedding “contestuali”
Word2Vec è geniale, ma ha un difetto enorme:
*Ogni parola ha un solo significato numerico.*
Ma noi esseri umani non funzioniamo così.
Esempio:
* “Ho un **piano** per rapinare la banca” → programma
* “Raggiungimi al terzo **piano”** → livello
* “Vali più **piano**, mi viene da vomitare” → intensità
Serve un modello che **capisca il contesto**.
Ed ecco che arrivano i Transformer.
## BERT (2018): il game changer
BERT (**B**idirectional **E**ncoder **R**epresentations from **T**ransformers) non crea un vettore solo per la parola, ma un vettore **diverso per ogni frase**.
Esempio:
* embedding("piano", frase1) ≠ embedding("piano", frase2) ≠ embedding("piano", frase3)
**🔎Ancora:**
* Frase A: "Mi siedo sulla **panchina** del parco."
* Frase B: "La **panchina** dell'Inter è molto lunga."
Perché il sistema guarda tutta la frase contemporaneamente usando *self-attention*.
### Vantaggi di BERT
* Coglie il **contesto**.
* Capisce polisemia (parole con più significati).
* Embedding molto più ricchi e precisi.
* Ottimi per ricerca semantica, chatbot, classificazione, RAG.
### Limiti di BERT
* Più lento e pesante rispetto a Word2Vec.
* Richiede GPU per essere addestrato.
* Non sempre “lineare” da interpretare.
---
## Oggi: Embedding moderni (anche per LLM)
Modelli come:
* **Sentence-BERT**
* **E5**
* **BGE**
* **Gemma Embeddings**
* **OpenAI Embeddings**
producono vettori per **intere frasi**, non solo parole.
### **Cosa cambia?**
* Mantengono il contesto.
* Capiscono sinonimi, parafrasi, frasi equivalenti.
* Sono ottimi per RAG (Retrieval Augmented Generation).
Esempio:
Frase cercata:
“strumento per tagliare l'erba!"
Documenti:
* "manuale del robottino da giardino"
* "guida al giardinaggio"
* "storia della musica classica"
Gli embedding:
* avvicinano la frase al "robottino" o al "giardinaggio"
* mettono lontanissimo “musica classica”