Frequenza delle parole e legge di Zipf: abbiamo contato sei libri in sei lingue e stimato la pendenza
Pubblicato il 26/06/2025 · 14 min di lettura · Strumenti testo e lingua
Daniel Okonkwo — Sviluppatore front-end e redattore Tech presso Allin
Performance web · Formati di file
Verificato su 4 fonti
La legge di Zipf dice che in un testo lungo in lingua naturale la parola di rango n compare circa 1/n volte rispetto alla più frequente. L'abbiamo verificata invece di citarla. Il conteggio dei Promessi sposi dà 230 152 parole di testo corrente formate da 23 932 parole distinte; «e» compare 8 718 volte, il 3,79 % del libro. Il rango 20 è «come» con 1 299 occorrenze e il rango 1 000 è «nemico» con 24, quindi rango × frequenza vale 25 980 al rango 20, 28 300 al 100, 26 000 al 500 e 24 000 al 1 000 — quasi costante su due ordini di grandezza, che è ciò che la legge prevede. La stima di log frequenza contro log rango sui ranghi da 10 a 1 000 dà una pendenza di -1,031 con R² 0,996. La stessa stima su altri cinque romanzi in altre cinque lingue dà -1,083 in inglese, -1,068 in francese, -1,054 in spagnolo, -1,021 in portoghese e -1,079 in tedesco, tutti con R² di almeno 0,996. La conseguenza pratica: 141 parole coprono metà del romanzo italiano, quindi la frequenza grezza dice pochissimo dell'argomento di un documento. La legge descrive il centro della distribuzione, non le code, e nei testi brevi non compare affatto.
La parola di rango n compare circa 1/n volte rispetto alla prima. Abbiamo contato sei libri di pubblico dominio, stampato rango × frequenza, stimato log frequenza contro log rango e ottenuto pendenze fra -1,02 e -1,08 in tutte e sei le lingue — più i due punti in cui la legge si rompe.
L'affermazione, e come l'abbiamo verificata
L'affermazione è facile da enunciare: ordina tutte le parole distinte di un testo lungo per frequenza e la parola in posizione n comparirà circa 1/n volte rispetto a quella in posizione 1. La seconda parola più frequente compare circa la metà delle volte della prima, la decima circa un decimo, la centesima circa un centesimo. Di solito la si afferma; noi abbiamo contato. Sei romanzi vengono dal Progetto Gutenberg, uno per lingua del sito, con intestazione e piè di licenza rimossi. Ogni testo è passato per lo stesso tokenizzatore — minuscole, poi sequenze di lettere e segni Unicode più l'apostrofo — così nessuna lingua ha ricevuto un trattamento migliore di un'altra.
Tokenizzare è già una decisione, non un gesto neutro. Tagliare sulle lettere Unicode unisce «Don't» e «dont» solo se si esclude l'apostrofo, tratta «co-operare» come due parole e conta a parte le forme flesse: tedesco e italiano, che distribuiscono la grammatica su molte forme, finiscono con più parole distinte a parità di testo. Buddenbrooks ha 25 071 parole distinte su 230 086 correnti; Quincas Borba ne ha 10 329 su 78 361. Sono proprietà del nostro tokenizzatore quanto delle lingue, e l'avvertenza vale per qualunque contatore di frequenze, compreso il nostro. Qui conta che la scelta sia stata la stessa per tutti e sei.
Rango × frequenza resta quasi costante
Se la frequenza segue davvero 1/rango, allora rango per frequenza deve dare ovunque lo stesso numero. Nei Promessi sposi quasi ci riesce. Il rango 20 è «come» con 1 299 occorrenze: 20 × 1 299 = 25 980. Il rango 50 è «quando» con 488: 24 400. Il rango 100 è «cose» con 283: 28 300. Il rango 500 è «grazia» con 52: 26 000. Il rango 1 000 è «nemico» con 24: 24 000. Il rango 5 000 è «piaghe» con 4: 20 000. Su ranghi che differiscono di un fattore 250, il prodotto varia di circa un terzo — ecco come si presenta «quasi costante» nei dati reali, ed è un risultato forte per un'affermazione a un parametro su un romanzo che nessuno ha scritto per essere contato.
Il modo più pulito di vederlo è su assi log-log. Prendere il logaritmo decimale di rango e frequenza trasforma f = C / rango^s in una retta di pendenza -s, e una stima ai minimi quadrati recupera s. Sui ranghi da 10 a 1 000 dei Promessi sposi la stima dà una pendenza di -1,031 e un R² di 0,996 su 991 punti — una retta molto buona. Gli altri cinque libri danno -1,083, -1,068, -1,054, -1,021 e -1,079, tutti con R² fra 0,996 e 0,999. La legge di Zipf nella forma nuda prevede esattamente -1; ognuno dei nostri sei testi è un po' più ripido, fra il 2 % e l'8 % sotto. Questo eccesso sistematico è ben documentato ed è una delle ragioni per cui la forma generalizzata scrive l'esponente come parametro libero invece di fissarlo a uno.
La stessa forma in sei lingue e attraverso due secoli
I sei libri coprono dal 1605 al 1901 e sei lingue con grammatiche molto diverse, e le loro pendenze stanno in una fascia larga 0,06. È questa la parte interessante: la forma non viene dall'inglese, né dal romanzo, né dall'Ottocento. Per verificare che sopravviva nella prosa contemporanea abbiamo applicato lo stesso conteggio agli articoli inglesi di questo sito — 533 articoli, 513 756 parole correnti scritte nel 2026 su aliquote IVA, conversioni di unità e formati di file. La pendenza sui ranghi da 10 a 1 000 è -0,915 con R² 0,997. Più piatta di quella dei romanzi, ma la stessa retta sugli stessi assi, 175 anni e un genere dopo.
Le classifiche di testa differiscono nel modo ovvio e concordano nel modo profondo. L'inglese dà the, of, and, a, to; il francese de, la, et, il, le; lo spagnolo que, de, y, la, a; il portoghese a, que, o, de, e; il tedesco und, die, der, er, in; l'italiano e, che, di, a, il. Nemmeno un sostantivo. Sono tutti articoli, preposizioni, congiunzioni o pronomi — colla grammaticale, non contenuto. È su questa osservazione che poggia il resto dell'articolo.
Dove la legge fallisce: entrambe le code e ogni testo breve
Stima solo le prime dieci parole dei Promessi sposi e la pendenza esce -0,485 invece di -1,031; la testa della distribuzione è più piatta di quanto la legge preveda. Lo è anche nelle altre: -0,793 in inglese, -0,541 in francese, -0,693 in spagnolo, -0,595 in portoghese, -0,545 in tedesco. La parola più frequente non domina mai quanto una regola stretta in 1/n richiederebbe, ed è proprio per questo che la forma di Zipf–Mandelbrot aggiunge una costante al rango prima di elevarlo a potenza. All'altro estremo la stima peggiora in altro modo: sui ranghi da 1 000 alla fine, l'R² scende da 0,996 a 0,941 in italiano e a 0,895 in portoghese, perché la coda è una scala di parole che compaiono quattro, tre, due e infine una volta, e una retta attraverso una scala è una retta cattiva.
Il fallimento più utile è quello della lunghezza. Prendi le prime 200 parole di Moby-Dick e contale: 100 parole distinte, di cui 86 compaiono una sola volta, e il token più frequente è «chapter» con 56 occorrenze perché il passo è soprattutto un indice. La stima dà una pendenza di -0,614 con R² 0,685 — nessuna legge visibile. A 1 000 parole la stima è -0,751 con R² 0,920; a 5 000 parole -0,897 e 0,969; a 20 000 parole -0,991 e 0,991. La distribuzione diventa riconoscibile solo verso le decine di migliaia di parole. Un post di blog, una scheda prodotto o un'email sono molto al di sotto. Contare le frequenze su 300 parole dice cosa ripete quel testo; non dice nulla sulla lingua.
Perché esistono le stop word e perché la compressione funziona
Se cento parole sono metà del tuo testo, allora cento voci in un elenco toglieranno metà dei token da un indice. È tutto ciò che una lista di stop word è mai stata: una misura di economia che la legge di Zipf rende enorme. Nei Promessi sposi le dieci parole più frequenti sono il 21,3 % del testo corrente e le prime cento il 45,9 %; 141 parole distinte coprono metà del libro. Le altre lingue concordano sulla forma e differiscono sul conto: 96 forme per metà del romanzo inglese, 90 per il francese, 59 per lo spagnolo, 97 per il portoghese, 132 per il tedesco. Si noti che è proprio per questo che l'approccio a stop word è oggi in disuso nella ricerca: quelle parole portano un po' di informazione, ed «essere o non essere» è fatto solo di loro.
Il legame con la compressione è misurabile. Moby-Dick usa 17 422 parole distinte; se fossero tutte equiprobabili, nominarne una costerebbe log2(17 422) = 14,09 bit. La distribuzione unigramma reale ha un'entropia di 10,00 bit per parola, il 29,1 % in meno, e quel risparmio è l'asimmetria — il fatto che «the» ricorra ogni quindici parole mentre «gunwale» compaia ventuno volte in tutto il romanzo. I compressori generalisti sfruttano la stessa asimmetria a livello di byte: gzip -9 porta il libro da 1 206 KiB a 486 KiB. Mescolare le 216 603 parole in ordine casuale e ricomprimere dà 459 KiB su 1 152 KiB, sostanzialmente lo stesso rapporto, il che indica quanta parte del guadagno di gzip venga qui dalla distribuzione di frequenza e non dall'ordine delle parole.
La frequenza grezza è un cattivo segnale di rilevanza — un esempio svolto
Dividi Moby-Dick nei suoi capitoli, tratta ciascuno come un documento e chiedi al contatore di frequenze di cosa parla un capitolo. Abbiamo usato i 134 capitoli abbastanza lunghi da contare e scelto quello intitolato «Queen Mab», di 863 parole. Ordinati per frequenza grezza, i suoi termini di testa sono a (39), i (36), the (26), he (22), of (20) — una descrizione perfetta dell'inglese e una descrizione inutile del capitolo. Pesa gli stessi conteggi con la frequenza inversa di documento e i termini di testa diventano kicked (8), kick (7), wise (9), pyramid (5), says (10), flask (10), che riassume onestamente un capitolo in cui Stubb ha ricevuto un calcio e ne parla con Flask.
L'aritmetica dietro il passaggio sta in un logaritmo. «The» compare in 134 capitoli su 134, quindi la sua frequenza inversa di documento è ln(134/134) = 0,000 e il suo peso crolla a zero per quante volte compaia. «Cetology» compare in 3 capitoli, quindi il suo idf è ln(134/3) = 3,799 e tre occorrenze battono ventisei di «the». È lo stesso ragionamento del tf-idf e di BM25, la funzione di ranking da cui parte la maggior parte dei motori, ed è la ragione per cui la densità di parole chiave riportata dagli strumenti di marketing non ha corrispettivo dentro un sistema di recupero moderno. La densità misura l'asse sbagliato: conta quanto un termine è insolito nella collezione, non quanto si ripete nella pagina.
A cosa serve davvero un conteggio di frequenze
Appena si smette di leggere la testa dell'elenco, il conteggio diventa davvero utile. Confronta un documento con una lista di frequenze di riferimento e le parole anormalmente frequenti sono il suo argomento — è il calcolo tf-idf di sopra con un corpus che hai già. Cerca ripetizioni non volute: un tic d'autore, un termine ripetuto undici volte in una scheda prodotto di 400 parole, un nome scritto in due modi. Conta gli hapax, le parole che compaiono una sola volta, che sono il 54,6 % delle parole distinte dei Promessi sposi e il 55,9 % di Quincas Borba; un calo brusco di quella quota fra una stesura e l'altra è un indizio onesto di impoverimento lessicale. E controlla la copertura: se 141 parole portano metà del tuo testo, l'altra metà è dove sta il significato.
Un'abitudine merita di restare da tutto questo: dichiara il denominatore. «Compare 12 volte» non significa nulla senza «su 400 parole», e 12 su 400 fanno il 3 %, altissimo per una parola lessicale e bassissimo per «il». Il nostro contatore di frequenze mostra perciò conteggio, quota e rango insieme, e lo strumento di leggibilità accanto lavora sullo stesso flusso di token.
| Corpus | Parole correnti / distinte | Parola più frequente | Pendenza (ranghi 10–1000) | R² | Le prime 100 parole coprono |
|---|---|---|---|---|---|
| Moby-Dick (en, 1851) | 216 603 / 17 422 | the — 6,71 % | -1,083 | 0,998 | 50,6 % |
| Les Misérables I (fr, 1862) | 111 887 / 12 899 | de — 4,00 % | -1,068 | 0,998 | 51,2 % |
| Don Quijote (es, 1605) | 383 633 / 23 058 | que — 5,41 % | -1,054 | 0,999 | 55,5 % |
| Quincas Borba (pt, 1891) | 78 361 / 10 329 | a — 3,73 % | -1,021 | 0,998 | 50,4 % |
| Buddenbrooks (de, 1901) | 230 086 / 25 071 | und — 4,19 % | -1,079 | 0,999 | 46,6 % |
| I promessi sposi (it, 1842) | 230 152 / 23 932 | e — 3,79 % | -1,031 | 0,996 | 45,9 % |
| Gli articoli di questo sito (en, 2026) | 513 756 / 14 375 | the — 6,55 % | -0,915 | 0,997 | 47,6 % |
Domande frequenti
- Quanto deve essere lungo un testo perché la legge di Zipf compaia?
- Decine di migliaia di parole. Troncando Moby-Dick e ristimando si ottiene R² 0,685 a 200 parole, 0,920 a 1 000, 0,969 a 5 000 e 0,991 a 20 000, con la pendenza che sale da -0,614 verso -1,0 man mano che il testo cresce. Sotto qualche migliaio di parole la maggior parte delle parole distinte compare una sola volta — 86 delle 100 di un campione di 200 parole — e una classifica fatta quasi tutta di pari merito non ha pendenza da misurare.
- Devo togliere le stop word prima di contare?
- Dipende dalla domanda. Per capire di cosa parla un documento, sì — o meglio, pesa con la frequenza inversa di documento, che le elimina da sé: «the» compare in tutti i 134 capitoli di Moby-Dick, quindi il suo idf è esattamente zero. Per verificare se un testo è atipico, no: un tasso anormalmente basso di parole funzionali è già un segnale, e le liste di stop word cancellano contenuto reale, perché «essere o non essere» è fatto solo di loro.
- Perché la pendenza stimata è più ripida di -1?
- Perché la legge nuda in 1/n è un'idealizzazione. Ognuno dei nostri sei romanzi si colloca fra -1,021 e -1,083 sui ranghi da 10 a 1 000: l'eccesso è sistematico, non rumore, ed è per questo che la forma generalizzata di Zipf–Mandelbrot tratta l'esponente come parametro libero e aggiunge una costante al rango per raddrizzare la testa piatta. Anche l'intervallo scelto cambia la risposta: stimare l'intera classifica invece dei ranghi 10–1 000 porta la pendenza inglese da -1,083 a -1,154, perché la coda rumorosa è la maggioranza dei punti.
- Il tokenizzatore cambia il risultato?
- Cambia i conteggi, non la forma. Tenere l'apostrofo, spezzare le parole col trattino o lemmatizzare le forme flesse sposta molto il numero di parole distinte — 25 071 per il romanzo tedesco contro 10 329 per quello portoghese, su testi di lunghezze molto diverse — mentre la pendenza log-log resta nella stessa fascia stretta. Confronta liste di frequenze solo se vengono dallo stesso tokenizzatore, e di' quale hai usato.
- La densità di parole chiave è un numero utile?
- Solo come autocontrollo sulla ripetizione. La densità è un numero interno al documento, la rilevanza è fra documenti: nel nostro test su un capitolo, pesare con la frequenza inversa di documento ha trasformato una top cinque di a, i, the, he, of in kicked, kick, wise, pyramid, flask. Una parola presente in tutti i documenti di una collezione ha idf esattamente zero per quanto densa sia nella tua pagina. Usa il conteggio per scoprire ripetizioni accidentali; non usarlo come obiettivo.
Articoli che potrebbero interessarti
Tutte le guide →Strumenti correlati
Fonti
- Project Gutenberg — Public-domain source texts used for the counts: Moby-Dick (#2701), Les Misérables I (#17489), Don Quijote (#2000), Quincas Borba (#55682), Buddenbrooks (#34811), I promessi sposi (#45334)
- Stanford NLP Group — Manning, Raghavan & Schütze, Introduction to Information Retrieval — Zipf's law: modeling the distribution of terms, and the tf-idf weighting chapter
- Psychonomic Bulletin & Review (Piantadosi, 2014) — Zipf's word frequency law in natural language: a critical review and future directions
- Unicode Consortium — Unicode Standard Annex #29: Unicode Text Segmentation — what counts as a word boundary
Hai notato un errore in questo articolo?