Il ponte distribuzionale-embeddings: dalla compagnia di Firth alle matrici di word2vec
Una tesi linguistica del 1954 e un artefatto computazionale del 2013 sono lo stesso oggetto visto da due lati. Il transito è documentato, è formalmente parziale, e si rompe in punti precisi. Capire dove regge e dove no è prerequisito per ingegnerizzare embedding senza usarli come oracoli.
Perché questo capitolo
Sezione intitolata “Perché questo capitolo”L’ipotesi distribuzionale di Zellig Harris (1954) e John Rupert Firth (1957) e gli embedding densi di Tomáš Mikolov (2013) sono separati da quasi sessant’anni e da due culture di ricerca diverse. La prima è una tesi linguistica, qualitativa, formulata da empiristi che rifiutavano di postulare entità mentali. I secondi sono un artefatto computazionale, quantitativo, prodotto da ingegneri che lavoravano su corpora da miliardi di parole. La distanza fra i due lati è enorme, e tuttavia il ponte regge: Mikolov, Bengio, Manning, Pennington citano esplicitamente Harris e Firth come fonte. Word2vec non è ispirato dalla distributional hypothesis, ne è un’implementazione.
I capitoli semantica-distribuzionale e word2vec-2013 raccontano i due lati separatamente: il primo l’idea linguistica e la sua storia, il secondo l’evento computazionale del 2013. Questo capitolo è il ponte vero e proprio. Si concentra sui passaggi di traduzione che rendono possibile il transito, sulle proprietà che nascono o si rompono nel passaggio, sulle equivalenze formali dimostrate (Levy-Goldberg 2014) e su quelle che vanno bloccate (Bender-Koller 2020). L’obiettivo non è sovrapporsi ai due capitoli, è spiegare perché funziona e dove no.
C’è una ragione operativa per cui un developer dovrebbe leggere il ponte e non solo i due lati. Ogni sistema RAG, ogni motore di ricerca semantica, ogni classificatore di intent, ogni knowledge graph che usa embedding sta lavorando dentro la cornice distribuzionale. Sapere che è la stima di una sostituibilità contestuale appresa da co-occorrenze cambia il modo in cui si interpretano i risultati. Cambia anche cosa ci si aspetta di trovare e cosa si sa di non trovare. Antonimi vicini, polysemy collassata, bias amplificati, composizionalità persa: non sono bug, sono caratteristiche prevedibili del ponte.
Contesto: la linea che porta dall’ipotesi all’artefatto
Sezione intitolata “Contesto: la linea che porta dall’ipotesi all’artefatto”La storia lunga sta in semantica-distribuzionale. Qui ne fissiamo solo i nodi che servono al ponte, con un decoder essenziale alla prima menzione.
flowchart LR
subgraph DH["Distributional Hypothesis"]
H["Harris 1954"]
F["Firth 1957"]
C["Contestualismo"]
end
subgraph EM["Embeddings"]
L["LSA 1990"]
W["word2vec 2013"]
B["BERT 2018"]
end
DH -->|matrice di co-occorrenza| EM
DH -->|riduzione dimensionale| EM
DH -->|similarità geometrica| EM
Figura 1 — ponte di filiazione dalla distributional hypothesis (Harris 1954, Firth 1957, contestualismo) agli embeddings (LSA 1990, word2vec 2013, BERT 2018), con i tre meccanismi traduttori — matrice di co-occorrenza, riduzione dimensionale, similarità geometrica
1954 — Zellig Harris (1909-1992, linguista alla University of Pennsylvania, allievo di Edward Sapir, maestro di Noam Chomsky) pubblica Distributional structure su Word. Tesi metodologica: due elementi linguistici con distribuzione simile hanno significato simile. Harris formula tecnicamente quello che Firth dirà tre anni dopo come slogan.
1957 — John Rupert Firth (1890-1960, prima cattedra britannica di linguistica generale, School of Oriental and African Studies, Londra) pubblica A synopsis of linguistic theory, 1930-1955. A pagina 11 compare “You shall know a word by the company it keeps”. Direttiva metodologica per linguisti pratici, non slogan filosofico.
1990 — Scott Deerwester, Susan Dumais, George Furnas, Thomas Landauer, Richard Harshman, gruppo Bellcore, JASIS 41(6). Latent Semantic Analysis: matrice termine-documento, Singular Value Decomposition (decomposizione ai valori singolari, fattorizzazione algebrica standard), troncamento ai primi k valori singolari. Prima implementazione computazionale matura della distributional hypothesis.
1990 — Kenneth Church, Patrick Hanks, Word association norms, mutual information, and lexicography, Computational Linguistics 16(1). Introducono in NLP la pointwise mutual information (PMI), misura della forza di associazione fra due parole normalizzata per le frequenze marginali. PMI diventerà il pesatore standard delle matrici di co-occorrenza.
2003 — Yoshua Bengio, Réjean Ducharme, Pascal Vincent, Christian Jauvin, Université de Montréal, A Neural Probabilistic Language Model, JMLR 3. Primo modello di linguaggio neurale moderno: ogni parola riceve un embedding, un vettore denso a poche centinaia di dimensioni, appreso end-to-end. Idea concettualmente vincente, computazionalmente proibitiva al tempo.
2008 — Ronan Collobert, Jason Weston, NEC Labs Princeton, A Unified Architecture for Natural Language Processing, ICML 2008. Mostrano che word embeddings utili emergono da un task ausiliario molto più economico del language modeling pieno: distinguere finestre di testo reali da finestre con la parola centrale sostituita a caso. Antenato diretto del negative sampling di word2vec.
2013 — Tomáš Mikolov, Kai Chen, Greg Corrado, Jeffrey Dean, Google Brain, Efficient Estimation of Word Representations in Vector Space, arXiv:1301.3781. Word2vec. Due architetture, CBOW e Skip-gram. Addestramento su 6 miliardi di parole in poche ore di CPU. Il momento in cui gli embedding diventano infrastruttura riusabile.
2013 — Mikolov, Sutskever, Chen, Corrado, Dean, NeurIPS 2013, Distributed Representations of Words and Phrases and their Compositionality. Negative sampling, hierarchical softmax. Documenta l’aritmetica analogica: vec(king) - vec(man) + vec(woman) ~ vec(queen).
2014 — Jeffrey Pennington, Richard Socher, Christopher Manning, Stanford, GloVe: Global Vectors for Word Representation, EMNLP 2014. Fattorizzazione esplicita di una matrice di co-occorrenza log-pesata. Posiziona word2vec sul continuum count-vs-predict.
2014 — Omer Levy, Yoav Goldberg, Bar-Ilan University, Neural Word Embedding as Implicit Matrix Factorization, NeurIPS 2014. Risultato chiave del ponte: Skip-gram con Negative Sampling (SGNS) ottimizza implicitamente la fattorizzazione di una matrice shifted-PMI. Equivalenza formale fra word2vec e fattorizzazione count-based.
2018 — Matthew Peters et al. (Allen Institute for AI, Seattle), Deep contextualized word representations (ELMo), NAACL 2018. Vettori contestuali da bidirectional language model. Una stessa parola riceve vettori diversi a seconda della frase.
2019 — Jacob Devlin, Ming-Wei Chang, Kenton Lee, Kristina Toutanova, Google, BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding, NAACL 2019. Masked language modeling sopra il transformer. Embedding contestuali a scala. Sotto il cofano, distributional hypothesis preservata: i contesti continuano a essere il segnale di addestramento.
2020-2026 — foundation model. GPT-3, PaLM, Llama, Claude, Gemini. Embedding di input come tabella iniziale (un vettore per token-type, statico) seguiti da rappresentazioni interne contestuali a ogni layer del transformer. Ogni RAG di produzione usa, sotto, un embedding model derivato da questo lineage.
flowchart LR
subgraph DH["Distributional Hypothesis"]
H["Harris 1954"]
F["Firth 1957"]
C["Contestualismo"]
end
subgraph EM["Embeddings"]
L["LSA 1990"]
W["word2vec 2013"]
B["BERT 2018"]
end
DH -->|matrice di co-occorrenza| EM
DH -->|riduzione dimensionale| EM
DH -->|similarità geometrica| EM
Figura 1 — Bridge diagram: left side “Distributional Hypothesis” with three boxes (Harris 1954, Firth 1957, contextualism); right side “Embeddings” with three boxes (LSA 1990, word2vec 2013, BERT 2018); three labeled arrows in the middle: “co-occurrence matrix”, “dimensionality reduction”, “geometric similarity”. type=mermaid
L’intuizione: tre angoli per lo stesso ponte
Sezione intitolata “L’intuizione: tre angoli per lo stesso ponte”Prima del formalismo, tre modi distinti di guardare cosa succede quando l’ipotesi distribuzionale diventa embedding.
Angolo 1: la mappa delle vicinanze
Sezione intitolata “Angolo 1: la mappa delle vicinanze”Lo spazio degli embedding è una mappa. Ogni parola occupa un punto. Parole che frequentano contesti simili stanno vicine, parole che frequentano contesti diversi stanno lontane. La mappa non ha latitudine e longitudine: ha 300 dimensioni nel caso di word2vec originale, 768 in BERT base, 4096 in Llama 3 da 8 miliardi di parametri. Le distanze si misurano con cosine similarity, non con un righello, ma il principio resta.
In questa mappa, “Roma” finisce vicino a “Milano”, “Parigi”, “Madrid”. “Gatto” finisce vicino a “cane”, “felino”, “miagolare”. “Felice” finisce vicino a “contento”, “soddisfatto”, “allegro”. Nessuno ha annotato a mano queste vicinanze. Sono emerse perché il training ha richiesto al modello di prevedere il contesto, e per produrre la stessa predizione su contesti simili il modello ha dovuto piazzare le parole vicine.
L’angolo della mappa rende ovvio perché cluster semantici emergono spontaneamente: tutte le città italiane in una nuvola, tutte le emozioni positive in un’altra, tutti i verbi di moto in una terza. La struttura semantica del lessico, almeno quella distribuzionalmente catturabile, si auto-organizza nello spazio.
Angolo 2: la regressione mascherata
Sezione intitolata “Angolo 2: la regressione mascherata”Un secondo angolo, statistico. Il training di word2vec è un esercizio di previsione mascherata. Data una parola, prevedi il suo contesto (Skip-gram). Dato un contesto, prevedi la parola al centro (CBOW). I parametri liberi del modello sono i vettori delle parole. Il training muove i vettori per minimizzare l’errore di previsione.
Conseguenza diretta: parole intercambiabili nei contesti finiscono ad avere vettori simili, perché producono le stesse predizioni. Non è necessario postulare “significato”: basta richiedere che il modello predica il contesto e i vettori si auto-organizzano in modo che la similarità geometrica codifichi la sostituibilità contestuale.
Questo angolo collega gli embedding al language modeling, e quindi a tutta la catena evolutiva che porta a GPT. Un foundation model autoregressivo, sotto, fa la stessa cosa di word2vec, ma su scala enorme e con dipendenze a lungo raggio. Quando ChatGPT predice il prossimo token, sta facendo, in spirito, quello che word2vec fa nel piccolo: ottimizzare rappresentazioni che permettano una buona previsione contestuale.
Angolo 3: la fattorizzazione implicita
Sezione intitolata “Angolo 3: la fattorizzazione implicita”Un terzo angolo, algebrico. Esiste una matrice M di taglia |V| x |V| che conta le co-occorrenze fra parole nel corpus. M è ad alto rango, sparsa, rumorosa. Esiste però una fattorizzazione approssimata M ~ W H, dove W è |V| x d e H è d x |V|, con d molto minore di |V|. Le righe di W sono i vettori delle parole, le colonne di H sono i vettori dei contesti.
Trovare W e H sotto qualche metrica è quello che fanno tutti i metodi distribuzionali: SVD su LSA, gradient descent su GloVe, stochastic gradient descent con negative sampling su word2vec. Levy e Goldberg (2014) dimostrano che SGNS è formalmente equivalente alla fattorizzazione di una matrice shifted-PMI. Risultato: il dibattito count-based vs predict-based, che ha occupato la comunità NLP per due anni, si rivela essere un dibattito su quale matrice fattorizzare e con quale loss, non un dibattito fra due paradigmi diversi.
L’angolo algebrico è il più tecnico ma anche il più chiarificatore. Spiega perché GloVe e word2vec danno risultati simili. Spiega perché PMI è onnipresente. Spiega perché LSA del 1990 sta nello stesso albero genealogico di word2vec del 2013. È la prova formale che il ponte non è metaforico.
La meccanica: i tre passaggi di traduzione
Sezione intitolata “La meccanica: i tre passaggi di traduzione”Il ponte si articola in tre passaggi, ciascuno con scelte iperparametriche che cambiano il risultato. Li percorriamo nell’ordine.
Passaggio 1: dalla “compagnia” alla matrice di co-occorrenza
Sezione intitolata “Passaggio 1: dalla “compagnia” alla matrice di co-occorrenza”L’ipotesi distribuzionale, in forma operativa, dice: per ogni parola w, raccogli i contesti in cui w appare. Cosa è un “contesto”?
- Documento intero: il contesto di w è il documento in cui appare. Scelta di LSA. Cattura associazioni topiche (medico, paziente, ospedale stanno nello stesso documento).
- Finestra di N parole: il contesto di w sono le N parole prima e dopo. Scelta di HAL (Lund-Burgess 1996), word2vec, GloVe. Con N piccolo (2-5) cattura relazioni paradigmatiche stretette (sinonimi, sostituibilità). Con N grande (10+) cattura relazioni topiche.
- Posizione sintattica: il contesto di w è la sua relazione di dipendenza sintattica (soggetto-di, oggetto-di, modificatore-di). Scelta di Levy-Goldberg 2014b (syntactic embeddings). Cattura categorie funzionali strette.
- Frase mascherata: il contesto di w è la frase intera con w mascherato. Scelta di BERT. Permette dipendenze a lungo raggio e bidirezionali.
La scelta del contesto è il primo iperparametro, e non è neutra. Word2vec con finestra 5 e word2vec con finestra 2 producono embedding diversi: il primo cattura più “topic”, il secondo più “function”.
Concretamente, con vocabolario V di taglia |V| e insieme dei contesti C, costruisci una matrice M di taglia |V| x |C|. M[i,j] è una statistica di co-occorrenza:
- count grezzo: numero di volte che w_i appare nel contesto c_j.
- frequenza relativa: count / totale.
- log-count: log(1 + count). Compressione logaritmica.
- PMI: pointwise mutual information.
- PPMI: positive PMI.
PMI è centrale. La definizione:
Numeratore: probabilità congiunta osservata di w e c (frazione del corpus in cui co-occorrono). Denominatore: prodotto delle marginali, cioè la probabilità congiunta che ci si aspetterebbe se w e c fossero indipendenti. Il rapporto vale 1 (e PMI vale 0) se non c’è associazione. Vale più di 1 (PMI positivo) se c’è attrazione. Vale meno di 1 (PMI negativo) se c’è repulsione.
PMI normalizza per le frequenze marginali. Senza PMI, la parola “the” co-occorre con tutto e domina ogni misura di similarità. Con PMI, “the” è penalizzato perché è frequente ovunque: il numeratore P(the, c) cresce ma il denominatore P(the) * P(c) cresce più velocemente.
PPMI tronca i valori negativi a zero: PPMI(w,c) = max(PMI(w,c), 0). I PMI negativi sono spesso rumore (eventi rari di non-co-occorrenza non significano repulsione semantica), e troncarli stabilizza le rappresentazioni.
Passaggio 2: dalla matrice sparsa al vettore denso
Sezione intitolata “Passaggio 2: dalla matrice sparsa al vettore denso”La matrice di co-occorrenza è sparsa, alta-dimensionale, rumorosa. Per ottenere vettori densi a poche centinaia di dimensioni, serve una riduzione. I metodi storici:
LSA (1990): SVD troncata. Si calcola la decomposizione M = U Σ V^T, dove U è ortogonale |V| x |V|, Σ è diagonale con valori singolari decrescenti, V è ortogonale |C| x |C|. Si tronca a k valori singolari, prendendo le prime k colonne di U e i primi k valori di Σ. La matrice U_k Σ_k^{1/2} è |V| x k: le righe sono i vettori densi. Il troncamento ha effetto di denoising.
GloVe (2014): minimizza una loss pesata sulla log-co-occorrenza:
L = sum_{i,j} f(X_ij) * (w_i^T * w'_j + b_i + b'_j - log(X_ij))^2Linea per linea: X_ij è il count di co-occorrenza fra parola i e contesto j. f(X_ij) è una funzione di pesatura che riduce l’influenza dei count molto alti (saturazione) e annulla i count zero. w_i e w’_j sono i vettori della parola e del contesto. b_i, b’_j sono bias. La loss richiede che il prodotto scalare w_i^T w’_j approssimi log(X_ij). L’embedding finale è la somma w_i + w’_i.
word2vec Skip-gram con Negative Sampling (SGNS, 2013): per ogni coppia (w, c) reale nel corpus, si addestra un classificatore neurale a darle alta probabilità, e per k coppie negative (w, c_neg) campionate da una distribuzione unigramma (con esponente 0.75) a darle bassa probabilità. La loss per coppia:
σ è la sigmoide. Il primo termine spinge il prodotto scalare di parola e contesto vero verso valori alti. Il secondo termine spinge il prodotto scalare di parola e contesti falsi verso valori bassi. SGD aggiorna i vettori. Niente softmax sull’intero vocabolario: il calcolo diventa proporzionale a k, non a |V|.
Il risultato di Levy-Goldberg (2014). SGNS, con k negative samples e in assenza di regolarizzazione, ottimizza implicitamente la fattorizzazione di una matrice M^* tale che:
Dimostrazione (idea): si scrive il gradiente della loss attesa di SGNS rispetto al prodotto v_w · v_c, si pone uguale a zero, si risolve. Il punto stazionario è esattamente shifted-PMI.
Conseguenza: word2vec e fattorizzazione shifted-PMI di una matrice di co-occorrenza sono equivalenti sotto le ipotesi del teorema. Equivalenza formale, dimostrata, non analogia. La dicotomia “predict vs count” che dominava il dibattito 2013-2014 si dissolve.
Passaggio 3: dalla similarità di profilo alla similarità geometrica
Sezione intitolata “Passaggio 3: dalla similarità di profilo alla similarità geometrica”Una volta che ogni parola w ha un vettore v_w in R^d, la similarità si misura geometricamente. La metrica standard è cosine similarity:
Numeratore: prodotto scalare. Denominatore: prodotto delle norme L2. Il risultato è in [-1, 1]: 1 se i vettori sono allineati, 0 se ortogonali, -1 se opposti.
Cosine ignora le magnitudini. Negli embedding, le magnitudini correlano spesso con la frequenza della parola: parole rare hanno vettori più piccoli. Cosine elimina questa nuisance. Per dimostrazione che cosine è la scelta giusta non c’è teorema generale: è un’euristica empiricamente solida.
Proprietà che emergono e meritano scrutinio:
Vicinato semantico. I k-nearest-neighbors di “Roma” includono “Milano”, “Parigi”, “città”, “Italia”. Empiricamente forte per parole frequenti, rumoroso per parole rare. Antoniak-Mimno 2018 mostrano che il vicinato locale è instabile: due training runs producono nearest-neighbors che differiscono fino al 20%.
Aritmetica analogica. vec(Paris) - vec(France) + vec(Italy) cade vicino a vec(Rome). Funziona per relazioni con sostituibilità contestuale alta (capitali, plurali, tempi verbali). Linzen (2016), Drozd (2016) e Nissim (2020) mostrano che l’aritmetica analogica è meno robusta di quanto Mikolov-Yih-Zweig (2013) suggerivano: dipende dal pre-processing, dall’esclusione delle parole input dalla ricerca del nearest-neighbor, dalla scelta del corpus.
Direzioni semantiche. La direzione vec(king) - vec(queen) approssima una “direzione di genere” che si applica con qualche successo ad altre coppie. Bolukbasi (2016) la usa per de-biasing. Non è un teorema: è una proprietà empirica che si rompe spesso.
Esempio metodologico: scegliere il contesto cambia tutto
Sezione intitolata “Esempio metodologico: scegliere il contesto cambia tutto”Prima dei tre esempi richiesti, vale la pena fissare un punto metodologico con un caso operativo. Si addestrino due word2vec sul medesimo corpus (per esempio Wikipedia inglese) con due sole differenze: finestra di contesto 2 in un caso, finestra di contesto 10 nell’altro. I 10 nearest-neighbors di “scientist” cambiano in modo sistematico.
Con finestra 2, i nearest-neighbors sono parole paradigmaticamente sostituibili: “researcher”, “scholar”, “academic”, “physicist”. Stessa categoria sintattico-semantica, stessa funzione nella frase.
Con finestra 10, i nearest-neighbors si allargano a parole topicamente associate: “laboratory”, “discovery”, “experiment”, “research”. Stessa scena tematica, ma non sostituibili nella frase.
Lezione operativa: la scelta del contesto è la scelta della relazione semantica che l’embedding catturerà. Per un sistema di sinonimia, finestra piccola. Per un sistema di topic detection, finestra grande. Levy-Goldberg (2014b) mostrano che usare contesti sintattici (relazioni di dipendenza, non finestre) produce una terza variante: vettori sensibili a categorie funzionali strette. Tre cugini di Harris-Firth, prodotti dalla stessa ricetta con tre setting diversi.
Esempio numerico: PMI a mano su mini-corpus
Sezione intitolata “Esempio numerico: PMI a mano su mini-corpus”Mini-corpus di 5 frasi, vocabolario di 6 parole (gatto, cane, miagola, abbaia, animale, casa):
- “Il gatto miagola in casa.”
- “Il cane abbaia in casa.”
- “Il gatto è un animale.”
- “Il cane è un animale.”
- “L’animale è in casa.”
Elimino stop words (il, in, è, un, l’) per chiarezza. Token rimasti: 11 (gatto, miagola, casa, cane, abbaia, casa, gatto, animale, cane, animale, animale, casa).
Conto le co-occorrenze in finestra di 2 parole.
P(gatto) = 2/11 ≈ 0.18. P(animale) = 3/11 ≈ 0.27. P(miagola) = 1/11 ≈ 0.09. P(casa) = 3/11 ≈ 0.27.
Co-occorrenze in finestra:
- (gatto, miagola): 1.
- (gatto, animale): 1.
- (gatto, casa): 1.
- (cane, abbaia): 1.
- (cane, animale): 1.
P(gatto, miagola) = 1/N_pairs. Per N_pairs piccolo questo è impreciso, ma serve l’ordine. PMI(gatto, miagola) coinvolge un evento raro ma legato: il numeratore P(gatto, miagola) è basso in valore assoluto, ma il rapporto al prodotto P(gatto) * P(miagola) è alto perché P(miagola) da sola è bassissima. PMI(gatto, animale) ha numeratore comparabile ma denominatore molto più grande, perché P(animale) da solo è alto.
Risultato qualitativo: PMI(gatto, miagola) > PMI(gatto, animale), anche se “animale” co-occorre più spesso con “gatto” in molti corpora. PMI penalizza “animale” perché è frequente in assoluto. Conseguenza: nello spazio di embedding costruito su PMI, “miagola” sarà geometricamente più vicino a “gatto” che “animale”, anche se il count grezzo direbbe il contrario. Il PMI cattura associazione specifica, non frequenza congiunta. Questa è la ragione per cui PPMI domina LSA, GloVe, e (implicitamente) word2vec.
Esempio codice: similarità con embedding pre-addestrati
Sezione intitolata “Esempio codice: similarità con embedding pre-addestrati”from sentence_transformers import SentenceTransformerimport numpy as np
model = SentenceTransformer("all-MiniLM-L6-v2")
frasi = [ "the cat sleeps on the couch", "a kitten is napping on the sofa", "the dog is happy", "the dog is not happy", "stock prices fell sharply",]
vec = model.encode(frasi)
def cos_sim(a, b): return float(np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b)))
print(cos_sim(vec[0], vec[1])) # gatto/kitten: alta, ~0.75print(cos_sim(vec[2], vec[3])) # happy/not happy: alta, ~0.92print(cos_sim(vec[0], vec[4])) # gatto/azioni: bassa, ~0.05Riga per riga: si carica un modello compatto di sentence embeddings; si codificano cinque frasi in vettori densi; si definisce la cosine similarity; si stampano tre confronti.
Risultati attesi (qualitativi):
- “the cat sleeps” e “a kitten is napping” hanno similarità alta (~0.75) nonostante zero parole in comune. L’ipotesi distribuzionale fa il suo lavoro: i contesti di addestramento li hanno collocati in zone vicine.
- “the dog is happy” e “the dog is not happy” hanno similarità altissima (~0.92), perché differiscono per una negazione che lo spazio di embedding non risolve bene. Esempio operativo del problema della composizionalità.
- “the cat sleeps” e “stock prices fell sharply” hanno similarità bassa (~0.05), come ci si aspetta da contesti tematici distanti.
Lezione operativa: in un sistema RAG basato su embedding, la query “non funziona” potrebbe recuperare documenti su “funziona” perfettamente, perché la negazione non sposta il vettore abbastanza. Per gestire negazione, antonimia, composizione fine, l’embedding model da solo non basta: serve un reranker o una catena di prompting che interpreti la query.
Variante diagnostica utile in produzione: confrontare le similarità di una query con tre tipi di documenti — paraphrase (alta), antonim/negation (alta in modo problematico), random (bassa). Se la differenza fra paraphrase e negation è meno di 0.05, l’embedding model è insufficiente per task sensibili a polarità su quel dominio. È una calibrazione minimale che si fa una volta e protegge da molti errori operativi.
Esempio aggiuntivo: visualizzare lo spazio con t-SNE o UMAP
Sezione intitolata “Esempio aggiuntivo: visualizzare lo spazio con t-SNE o UMAP”Si prendano gli embedding di 200 sostantivi italiani comuni. Si applichi una proiezione 2D con UMAP (McInnes-Healy 2018) a partire dai vettori densi. Si colora ogni punto per categoria semantica annotata a mano: animali, mestieri, oggetti domestici, sentimenti, edifici, strumenti.
Risultato visualizzato: i punti si raggruppano in nuvole abbastanza nette per categoria, anche se nessuno ha mai detto al modello cosa è un “animale” o un “mestiere”. Le categorie semantiche emergono dalla struttura distribuzionale del corpus. La proiezione UMAP è una lente: distorce, ma rende visibile a occhio quello che l’algoritmo ha appreso.
Limite della proiezione: 300 dimensioni schiacciate in 2 perdono moltissimo. Vicinanze in 2D non sono vicinanze nello spazio originale, e viceversa. Per validare ipotesi sulla struttura semantica, sempre verificare con metriche calcolate nello spazio pieno (cosine similarity, k-NN).
Esempio scenario reale: retrieval semantico in una codebase
Sezione intitolata “Esempio scenario reale: retrieval semantico in una codebase”Si indicizza una codebase Python con un embedding model (per esempio voyage-code-3 o bge-large). Ogni funzione, classe o snippet diventa un vettore. Una query naturale come “how do I authenticate with the API?” viene codificata anch’essa, e il retriever restituisce i top-k snippet per cosine similarity.
Risultato osservato: i top-3 snippet possono essere funzioni che non menzionano mai la parola “authenticate”, ma menzionano “login”, “token”, “credentials”, “Bearer”, “session”. L’ipotesi distribuzionale sta facendo retrieval semantico, non lessicale. Le co-occorrenze nei dati di training (codice + documentazione open source) hanno appreso che “authenticate” e “login” frequentano contesti simili.
Limite osservato: lo stesso retriever fallisce quando la query include una negazione precisa (“how do I disable authentication temporarily?”), perché embedding statici e contestuali tendono a dare similarità alta a “enable authentication”. Polarità invertita non sposta il vettore quanto il developer si aspetterebbe. La correzione operativa è hybrid search: combinare l’embedding retrieval con un retrieval sparse tipo BM25 che è sensibile a parole specifiche, e usare un reranker contestuale al top.
Embedding contestuali: rottura del binding parola-vettore
Sezione intitolata “Embedding contestuali: rottura del binding parola-vettore”Word2vec, GloVe e fastText producono vettori statici. Una parola, un vettore. Il problema, ricordato sopra, è la polysemy: “bank” significa banca o riva, “apple” è frutto o azienda, “python” è serpente o linguaggio. Un vettore statico fa una media pesata dei sensi e perde la distinzione.
ELMo (Peters et al. 2018) e BERT (Devlin et al. 2019) introducono vettori contestuali. La rappresentazione di un token è funzione dell’intera frase in cui appare. Stessa parola, due frasi diverse, due vettori diversi. La polysemy si scioglie automaticamente: in “I deposited money in the bank” il vettore di “bank” è diverso da quello in “I sat by the river bank”.
L’ipotesi distribuzionale è preservata e rafforzata: i contesti continuano a essere il segnale di addestramento (masked language modeling in BERT, language modeling autoregressivo in GPT). Ciò che cambia è il binding. Non più “una parola, un vettore” ma “una occorrenza, un vettore”. Il vocabolario di tipi cede al vocabolario di token.
I foundation model moderni (GPT-4, Claude, Gemini, Llama) usano una doppia rappresentazione. L’embedding di input è una tabella iniziale: un vettore per token-type, statico, addestrato durante il pretraining. Le hidden states a ogni layer del transformer sono invece contestuali: variano in base all’intera sequenza tramite attention. La distinzione “embedding statico vs contestuale” sopravvive all’interno dello stesso modello. Ogni RAG di produzione che codifica una frase o un documento usa, sotto, un pooling sopra le hidden states di un encoder transformer: embedding contestuali a livello di sequenza.
[DATATO 2026-04] I sentence/document embedding model più usati al momento di scrittura — voyage-3, text-embedding-3-large di OpenAI, cohere embed-v3, BGE M3, Jina v3 — sono tutti encoder transformer fine-tuned con contrastive learning su coppie query-documento. Pipeline tipica: pretraining masked language model, instruction tuning con coppie query-doc, hard negative mining. Il lineage diretto da word2vec è chiaro nella loss (negative sampling rivisitato), nell’idea di base (vettori densi che codificano sostituibilità di significato), e nei fallimenti caratteristici (negazione, polarità, composizionalità).
Applicazioni pratiche
Sezione intitolata “Applicazioni pratiche”Il ponte distribuzione-embedding è alla base di una gerarchia di sistemi che ogni developer di agent coding incontra:
Retrieval Augmented Generation. Un sistema RAG indicizza documenti come embedding, codifica la query come embedding, recupera per cosine similarity i top-k documenti, li inietta nel prompt. Sotto: Harris-Firth scalato a miliardi di documenti.
Ricerca semantica. Motori come Vespa, Weaviate, Pinecone, Qdrant servono nearest-neighbor search su miliardi di vettori. La latenza del retrieval è dominata dall’algoritmo ANN (HNSW, IVF-PQ), ma la qualità del retrieval è dominata dalla qualità degli embedding.
Classificazione zero-shot. Si codificano una query e una serie di label come embedding e si assegna la query alla label più vicina. Funziona sorprendentemente bene per intent classification e topic detection, fallisce per task in cui la similarità distribuzionale non corrisponde alla relazione di interesse (per esempio, sentiment polarity).
Deduplicazione e clustering. Documenti con embedding simili sono quasi-duplicati. Pipeline di pretraining (per esempio C4, RedPajama) usano embedding per de-duplicare a scala. La distributional hypothesis applicata su scala documento, non parola.
Knowledge graph linking. Si linkano entità in testo a nodi di un grafo confrontando l’embedding del mention con l’embedding del nodo. Errori frequenti per polysemy, mitigati con embedding contestuali e reranker.
Memoria di agente. Long-term memory di un agente (per esempio in Letta, MemGPT, Zep) memorizza embedding di interazioni passate, recupera quelle rilevanti per la prossima query. Il pattern è retrieval, ma il dominio è interazioni invece che documenti.
Embedding di codice. Voyage code-3, Cohere embed-v3 code, Jina, BGE. Specializzazione del modello base su corpora di codice per migliorare retrieval su codebase. La distribution hypothesis vale per token di codice come per token di linguaggio naturale.
Hybrid search. Pattern di produzione che combina dense retrieval (embedding) con sparse retrieval (BM25 o varianti). I due componenti sono complementari: dense cattura sostituibilità semantica, sparse cattura match lessicale esatto su parole rare e identificatori. La fusione è tipicamente Reciprocal Rank Fusion o un reranker contestuale (per esempio cross-encoder tipo bge-reranker o cohere-rerank-v3). Il fatto che hybrid superi consistentemente il puro dense retrieval è una conferma operativa che la distribution hypothesis non risolve tutto: alcune query richiedono il match della parola esatta, non del suo vicinato distribuzionale.
Multi-vector retrieval e late interaction. ColBERT (Khattab-Zaharia 2020) e successori producono un vettore per token della query e del documento, calcolando la similarità come somma dei massimi di similarità token-per-token. Più costoso, più preciso. Sotto, sempre distributional hypothesis, ma applicata a un livello di granularità più fine.
Cross-lingual e zero-shot translation. Embedding addestrati su corpora multilingua (LaBSE, multilingual E5) collocano traduzioni nello stesso punto dello spazio. La ragione: training contrastivo su coppie parallele forza l’allineamento. È il ponte distribuzionale esteso a coppie di lingue: parole con distribuzioni cross-lingual simili (mediante segnale supervisionato) finiscono vicine.
Dove si rompe
Sezione intitolata “Dove si rompe”Il ponte ha punti di rottura precisi. Alcuni sono limiti dei vettori statici, risolti parzialmente dagli embedding contestuali. Altri sono limiti più profondi della distributional hypothesis stessa.
Antonimi distribuzionalmente vicini
Sezione intitolata “Antonimi distribuzionalmente vicini”“Caldo” e “freddo” co-occorrono entrambi in contesti di temperatura: termometro, gradi, sentire, fa. I loro profili distribuzionali sono quasi identici. Risultato: i loro vettori finiscono geometricamente vicini, anche se sono semanticamente opposti. Lo stesso vale per “giorno/notte”, “alto/basso”, “amico/nemico”.
Questa non è un’anomalia, è una conseguenza diretta dell’ipotesi distribuzionale: la sostituibilità contestuale è alta per antonimi (ti puoi sostituire “caldo” con “freddo” nella stessa frase mantenendo struttura grammaticale e plausibilità), e l’embedding cattura sostituibilità. La similarità distribuzionale non è la stessa cosa della similarità semantica intuitiva.
Implicazione operativa: in un sistema di matching basato su embedding, “stop the server” e “start the server” possono uscire come quasi-duplicati. Per task sensibili alla polarità, l’embedding da solo non basta.
Aritmetica analogica fragile
Sezione intitolata “Aritmetica analogica fragile”L’esempio king-man+woman=queen è celebre. Ma molte analogie falliscono: vec(walked)-vec(walking)+vec(swimming) può non cadere su “swam”. Linzen (2016) e Drozd (2016) mostrano che il successo dipende dal pre-processing, dall’esclusione delle parole di input dalla ricerca, dalla normalizzazione. Nissim (2020) mostra che spesso il “vincitore” di un’analogia è una delle parole input ripetuta — escluderla è un trucco metodologico che gonfia l’apparente successo del metodo.
Lezione: l’aritmetica vettoriale è una proprietà emergente, non garantita. Funziona meglio per relazioni paradigmatiche con sostituibilità contestuale alta (genere, plurale, capitali). Si rompe per relazioni asimmetriche, causali, o che richiedono conoscenza di mondo.
Polysemy collassata nei vettori statici
Sezione intitolata “Polysemy collassata nei vettori statici”Word2vec e GloVe producono vettori statici: una parola, un vettore. Per parole monosemantiche è una buona approssimazione. Per parole polysemiche è una media pesata dei sensi che perde la distinzione. Il vettore di “bank” è una via di mezzo fra “bank-istituzione” e “bank-riva”, e i k-nearest-neighbors mescolano i due sensi.
ELMo (2018) e BERT (2019) risolvono questo passando a embedding contestuali: una occorrenza, un vettore. In “I deposited money in the bank”, “bank” ha un vettore diverso da “I sat by the river bank”. Il binding parola-vettore si rompe: il vocabolario di tipi cede al vocabolario di token.
Costo del passaggio: si perde la possibilità di manipolare il vettore della parola come oggetto stabile. Tutta l’aritmetica analogica funziona per costruzione su vettori statici; ridiventa ambigua per vettori contestuali.
Bias amplificati
Sezione intitolata “Bias amplificati”Bolukbasi et al. (2016) mostrano che word2vec addestrato su Google News codifica bias di genere: vec(programmer) - vec(man) + vec(woman) cade vicino a vec(homemaker). Caliskan et al. (2017) estendono a bias razziali, etnici, religiosi.
Non è un bug del metodo, è una proprietà dei dati. Se i corpora di training co-occorrono “doctor” più con “he” che con “she”, l’embedding lo riflette. La distributional hypothesis è onesta: cattura quello che sta nei dati. Ma in deployment, “onesta” non è abbastanza: serve de-biasing post-hoc, attenzione alla composizione del corpus, e, in alcuni casi, evitare embedding statici per task sensibili.
Out-of-vocabulary
Sezione intitolata “Out-of-vocabulary”Word2vec/GloVe non hanno vettori per parole mai viste in training. Una nuova entità (per esempio un nome di prodotto, un termine emergente) non ha rappresentazione. fastText (Bojanowski et al. 2017) compone embedding da n-grammi di caratteri, mitigando. Foundation model risolvono spostando il problema al livello di sottoword tramite BPE o SentencePiece: “ChatGPT” diventa “Chat” + “G” + “PT”, e ogni sottoword ha un embedding.
Composizionalità ingenua
Sezione intitolata “Composizionalità ingenua”v(red) + v(apple) non è il vettore di “red apple”. La somma di embedding ignora ordine, ruoli sintattici, scope di modificazione. Mitchell-Lapata (2008) propongono operazioni più sofisticate (moltiplicazione componente per componente, prodotti tensoriali), ma il problema vero della composizionalità in senso fregeano-montagoviano non è risolto da operazioni vettoriali ingenue.
Embedding contestuali e transformer non risolvono la composizionalità in senso teorico: la riformulano. Una rappresentazione contestuale di “red apple” è influenzata da “red” e “apple” via attention, ma il prodotto non è la somma dei pezzi. Per task pratici questo basta; per ragionamenti composizionali stretti (per esempio negazione embedded, scope di quantificatori), gli LLM su embedding contestuali continuano a sbagliare in modi diagnostici.
Symbol grounding
Sezione intitolata “Symbol grounding”Stevan Harnad (1990, The Symbol Grounding Problem, Physica D 42) e Bender-Koller (2020, Climbing towards NLU, ACL) mettono il paletto più radicale. La distributional hypothesis cattura forma, non riferimento. Un sistema che ha letto solo testo non sa cosa sia una mela, in qualunque senso non testuale di “sapere”.
L’esperimento mentale di Bender-Koller: due parlanti scambiano testo via cavo sottomarino, un polipo intercetta. Dopo molto traffico, il polipo impara pattern statistici a sufficienza per ingannare uno dei parlanti in conversazioni casuali. Ma quando il parlante chiede “come costruisco un X usando questi materiali?”, il polipo fallisce: non ha mai toccato un X, non ha mai visto il mondo dei materiali. Gli embedding sono il lato polipo della comunicazione.
L’argomento non si applica solo a foundation model multimodali (che ricevono pixel oltre che testo): anche con immagini, audio, video, il sistema non ha mai agito nel mondo, non ha mai manipolato oggetti. Embedding multimodali estendono il segnale ma non risolvono il problema in senso filosofico forte. Vedi symbol-grounding per la discussione completa.
Sostituibilità non è significato
Sezione intitolata “Sostituibilità non è significato”L’ipotesi distribuzionale, in forma stretta, è una tesi di sostituibilità: parole sostituibili hanno significato simile. Ma molte coppie sono sostituibili senza essere sinonime. “Medico” e “dottore” sono sostituibili e sinonimi. “Medico” e “infermiere” sono parzialmente sostituibili (in molti contesti grammaticali sì, in molti riferimenti specifici no). “Medico” e “stetoscopio” hanno alta co-occorrenza topica ma non sono sostituibili.
PMI aiuta a distinguere co-occorrenza paradigmatica da sintagmatica, ma non perfettamente. Per task che richiedono distinzioni fini (per esempio entity typing, ontology population), embedding standard sono un punto di partenza insufficiente: serve specializzazione, supervised fine-tuning, o reranker dedicati.
Frequenza, hubness e parole rare
Sezione intitolata “Frequenza, hubness e parole rare”Nei vettori statici, parole rare hanno embedding di qualità peggiore: poche occorrenze, gradienti rumorosi, vettori sotto-allenati. Inoltre, gli spazi di embedding ad alta dimensionalità soffrono di hubness: alcuni vettori finiscono a essere “nearest neighbor” di troppe parole, distorcendo il vicinato. Radovanović et al. (2010) studiano il fenomeno; Dinu-Lazaridou-Baroni (2015) propongono mitigation con normalizzazione globale dei vicini.
Conseguenza operativa: il top-1 nearest-neighbor per una query in uno spazio embedding può essere un hub (una parola comune che funge da “passe-partout”), invece che il vicino semanticamente più rilevante. Reranker e calibrazione dei punteggi sono prerequisito per retrieval di qualità.
Stabilità del training
Sezione intitolata “Stabilità del training”Antoniak-Mimno (2018) addestrano word2vec due volte sullo stesso corpus con stesso seed e diverso ordine di shuffling. I k-nearest-neighbors di una parola data possono differire fino al 20%. Le proprietà locali sono rumorose; le proprietà globali (cluster macroscopici, direzioni principali) sono robuste.
Implicazione operativa: per task che si appoggiano su nearest-neighbors (per esempio “trova le 10 parole più simili a X”), il rumore del training conta. Per task globali (clustering, topic modeling) conta meno. In production, fissare seed, ordine di training, vocabolario, e versioning è prerequisito per riproducibilità.
Drift di dominio e age dei corpora
Sezione intitolata “Drift di dominio e age dei corpora”Un embedding addestrato su Wikipedia 2014 non sa cosa siano “ChatGPT”, “Claude”, “MCP”, “vibe coding”. Più in generale, il vocabolario e le associazioni evolvono nel tempo. Il termine “transformer” pre-2017 evocava forte componente elettromagnetica; post-2017, è ambiguo fra elettromagnetismo e architettura neurale. Embedding addestrati nei due regimi codificano significati diversi.
Per applicazioni stabili, occorre un piano di refresh: re-training periodico, monitoring del drift via metriche di distribuzione (per esempio JS divergence fra embedding di campioni di query in finestre temporali successive), versioning esplicito dei modelli embedding deployati. Il ponte distribuzione-embedding è un ponte vivente: lo stato dell’arte dei vettori dipende dallo stato dei dati, e i dati cambiano.
Equivalenza Levy-Goldberg: limiti del teorema
Sezione intitolata “Equivalenza Levy-Goldberg: limiti del teorema”Il teorema di Levy-Goldberg (2014) sull’equivalenza fra SGNS e fattorizzazione shifted-PMI ha ipotesi tecniche che vanno notate. Vale all’ottimo della loss attesa, non per ogni esecuzione finita. Vale per dimensione d sufficientemente grande. Vale per matrice contesti senza sub-sampling delle parole frequenti (che word2vec invece applica per default). Vale ignorando l’ordine di context-window pesato (word2vec pesa context più vicini di più, GloVe esplicitamente).
In pratica, l’equivalenza è approssimata. Word2vec con sub-sampling, finestra dinamica, e d=300 non è esattamente fattorizzazione shifted-PMI, ma è abbastanza vicino che l’intuizione del teorema regge. Levy-Goldberg-Dagan (2015) producono Improving Distributional Similarity with Lessons Learned from Word Embeddings, che documenta come scelte iperparametriche tradizionalmente attribuite al “deep learning” (sub-sampling, eyebrow pesatura, normalizzazione) siano la fonte vera del miglioramento di word2vec sopra LSA, più che la rete neurale in sé.
Lezione: il ponte è formale a meno di iperparametri di pre-processing. La filiazione regge, l’equivalenza esatta no.
Collegamenti
Sezione intitolata “Collegamenti”- semantica-distribuzionale — l’idea linguistica che il ponte traduce. Storia, varianti, dibattito Chomsky vs Piantadosi.
- word2vec-2013 — l’evento computazionale specifico. Architettura CBOW/Skip-gram, training, paper Mikolov.
- linguaggio-pensiero — il linguaggio come strumento del pensiero, premessa cognitiva di tutto il filone distribuzionale.
- grammatica-universale-chomsky — l’antagonista innatista; Chomsky era allievo di Harris e ha rotto con il programma distribuzionale.
- sapir-whorf — relativismo linguistico, complementare all’idea che la distribuzione codifica struttura semantica.
- symbol-grounding — il paletto filosofico che limita il ponte. Harnad e Bender-Koller.
embedding-concetto(Parte IV, in preparazione) — formalizzazione matematica di spazi di embedding e direzioni semantiche.bert-gpt-2018-2019(cap 26 esistente) — embedding contestuali come paradigm shift.- transformer-2017 — l’architettura che usa embedding come input e produce hidden states contestuali.
rag-base(Parte XIV, in preparazione) — l’applicazione operativa moderna del ponte.embeddings-retrieval(Parte XIV, in preparazione) — dense, sparse, ColBERT, late interaction.
Sintesi del ponte (in una pagina mentale)
Sezione intitolata “Sintesi del ponte (in una pagina mentale)”Tre tesi si traducono in tre proprietà, attraverso tre passaggi, con tre angoli di intuizione e una pila di rotture documentate. Il triplete di Harris-Firth diventa una funzione ottimizzata su co-occorrenze. La similarità geometrica approssima la sostituibilità contestuale. L’equivalenza formale Levy-Goldberg blinda la traduzione contro l’accusa di analogia opportunistica. I limiti — antonimi, polarità, polysemy statica, bias, composizionalità, grounding — sono prevedibili e documentati, e ciascuno corrisponde a un’estensione tecnica (contextual embeddings, hybrid retrieval, debiasing, multimodal grounding) che lo affronta parzialmente senza chiuderlo del tutto.
Per il developer di agent coding, la conseguenza pratica è netta. Quando un sistema usa embedding — RAG, ricerca semantica, memoria di agente, classificazione di intent — sta operando dentro una cornice teorica chiara. Le proprietà che ci si può aspettare di catturare sono quelle distribuzionali: vicinanza topica, sostituibilità contestuale, similarità funzionale. Le proprietà che non si possono catturare sono quelle che escono dalla cornice: polarità di negazione, riferimento extra-testuale, ragionamento composizionale stretto. Conoscere il confine è il prerequisito per ingegnerizzare bene attorno al confine.
Per andare oltre
Sezione intitolata “Per andare oltre”- Levy, O., Goldberg, Y. (2014). “Neural Word Embedding as Implicit Matrix Factorization”. NeurIPS 2014. Il teorema di equivalenza fra SGNS e fattorizzazione shifted-PMI. Lettura obbligata per capire perché il ponte è formale, non metaforico.
- Bender, E. M., Koller, A. (2020). “Climbing towards NLU: On Meaning, Form, and the Limits of Data”. ACL 2020. L’argomento del polipo e i limiti di un sistema che ha visto solo forma.
- Manning, C. D. (2022). “Human Language Understanding & Reasoning”. Daedalus 151(2): 127-138. Inquadramento del lineage distribuzionale-embedding-foundation model dal punto di vista di uno dei principali responsabili di GloVe.
- Mikolov, T., Chen, K., Corrado, G., Dean, J. (2013). “Efficient Estimation of Word Representations in Vector Space”. arXiv:1301.3781. Il paper originale di word2vec. Tre pagine essenziali, molte intuizioni.
- Antoniak, M., Mimno, D. (2018). “Evaluating the Stability of Embedding-based Word Similarities”. TACL 6. L’analisi della rumorosità del training di word2vec. Lettura sobria per chi mette embedding in produzione.
- Pennington, J., Socher, R., Manning, C. D. (2014). “GloVe: Global Vectors for Word Representation”. EMNLP 2014. L’altra strada al ponte. Esplicitamente count-based, formalmente vicino a word2vec sotto la lente di Levy-Goldberg, fornisce un’intuizione complementare a quella neurale.
- Bolukbasi, T. et al. (2016). “Man is to Computer Programmer as Woman is to Homemaker? Debiasing Word Embeddings”. NeurIPS 2016. Caso di studio sul fatto che il ponte è onesto: cattura quello che sta nei dati, bias inclusi. Importante per chi mette embedding in deployment con vincoli equity.
- Khattab, O., Zaharia, M. (2020). “ColBERT: Efficient and Effective Passage Search via Contextualized Late Interaction over BERT”. SIGIR 2020. Il salto dal vettore-per-frase al vettore-per-token con late interaction. Stato dell’arte di retrieval ad alta precisione, e una lente diversa per leggere il ponte distribuzionale in modalità multi-vector.