Frequência de palavras e lei de Zipf: contámos seis livros em seis línguas e ajustámos o declive
Publicado a 26/06/2025 · 14 min de leitura · Ferramentas de texto e idioma
Daniel Okonkwo — Programador front-end e redator de Tecnologia na OneKitly
Desempenho web · Formatos de ficheiro
Verificado a partir de 4 fontes
A lei de Zipf diz que num texto longo em língua natural a palavra de posição n aparece cerca de 1/n vezes em relação à mais frequente. Testámo-la em vez de a citar. A contagem de Quincas Borba dá 78 361 palavras de texto corrido formadas por 10 329 palavras distintas; «a» surge 2 919 vezes, 3,73 % do livro. A posição 20 é «em» com 605 ocorrências e a posição 1 000 é «tratou» com 9, pelo que posição × frequência vale 12 100 na posição 20, 9 200 na 100, 9 000 na 500 e 9 000 na 1 000 — praticamente constante ao longo de duas ordens de grandeza, que é o que a lei prevê. O ajuste de log frequência contra log posição sobre as posições 10 a 1 000 dá um declive de -1,021 com R² 0,998. O mesmo ajuste sobre outros cinco romances noutras cinco línguas dá -1,083 em inglês, -1,068 em francês, -1,054 em espanhol, -1,079 em alemão e -1,031 em italiano, todos com R² de pelo menos 0,996. A consequência prática: 97 palavras cobrem metade do romance português, portanto a frequência bruta diz muito pouco sobre o assunto de um documento. A lei ajusta o meio da distribuição, não as pontas, e em textos curtos não aparece de todo.
A palavra de posição n aparece cerca de 1/n vezes em relação à primeira. Contámos seis livros de domínio público, imprimimos posição × frequência, ajustámos log frequência contra log posição e obtivemos declives entre -1,02 e -1,08 nas seis línguas — e os dois pontos onde a lei falha.
A afirmação, e como a testámos
A afirmação é fácil de enunciar: ordene todas as palavras distintas de um texto longo por frequência e a palavra na posição n aparecerá cerca de 1/n vezes em relação à da posição 1. A segunda palavra mais frequente aparece metade das vezes da primeira, a décima um décimo, a centésima um centésimo. Costuma ser afirmada; nós contámos. Seis romances vieram do Projeto Gutenberg, um por língua do site, com o cabeçalho e o rodapé de licença retirados. Cada texto passou pelo mesmo tokenizador — minúsculas e depois séries de letras e marcas Unicode mais o apóstrofo — para que nenhuma língua tivesse tratamento melhor do que outra.
Tokenizar já é uma decisão, não um ato neutro. Cortar por letras Unicode só junta «Don't» e «dont» se deixar o apóstrofo de fora, trata «co-operar» como duas palavras e conta à parte as formas flexionadas: o alemão e o italiano, que espalham a gramática por muitas formas, acabam com mais palavras distintas para a mesma quantidade de texto. Buddenbrooks tem 25 071 palavras distintas em 230 086 corridas; Quincas Borba tem 10 329 em 78 361. Isso é tanto uma propriedade do nosso tokenizador como das línguas, e o aviso vale para qualquer contador de frequências, incluindo o nosso. O que importa aqui é que a escolha foi a mesma nas seis.
Posição × frequência mantém-se quase constante
Se a frequência segue mesmo 1/posição, então posição vezes frequência deveria dar o mesmo número em todo o lado. Em Quincas Borba quase dá. A posição 20 é «em» com 605 ocorrências: 20 × 605 = 12 100. A posição 50 é «nada» com 172: 8 600. A posição 100 é «fernanda» com 92: 9 200. A posição 500 é «finalmente» com 18: 9 000. A posição 1 000 é «tratou» com 9: 9 000. A posição 2 000 é «guardou» com 4: 8 000. Em posições que diferem por um fator de 100, o produto varia cerca de um terço — é assim que «quase constante» se parece em dados reais, e é um resultado forte para uma afirmação de um só parâmetro sobre um romance que ninguém escreveu para ser contado.
A forma mais limpa de o ver é em eixos log-log. Tomar logaritmos decimais da posição e da frequência transforma f = C / posição^s numa reta de declive -s, e um ajuste por mínimos quadrados recupera s. Sobre as posições 10 a 1 000 de Quincas Borba o ajuste dá um declive de -1,021 e um R² de 0,998 em 991 pontos — uma reta muito boa. Os outros cinco livros dão -1,083, -1,068, -1,054, -1,079 e -1,031, todos com R² entre 0,996 e 0,999. A lei de Zipf na forma nua prevê exatamente -1; cada um dos nossos seis textos fica um pouco mais inclinado, entre 2 % e 8 % abaixo. Esse excesso sistemático está bem documentado e é uma das razões por que a forma generalizada escreve o expoente como parâmetro livre em vez de o fixar em um.
A mesma forma em seis línguas e ao longo de dois séculos
Os seis livros vão de 1605 a 1901 e cobrem seis línguas de gramáticas muito diferentes, e os seus declives cabem numa faixa de 0,06 de largura. É essa a parte interessante: a forma não vem do inglês, nem do romance, nem do século XIX. Para verificar que sobrevive na prosa contemporânea aplicámos a mesma contagem aos artigos ingleses deste site — 533 artigos, 513 756 palavras corridas escritas em 2026 sobre taxas de IVA, conversões de unidades e formatos de ficheiro. O declive sobre as posições 10 a 1 000 é -0,915 com R² 0,997. Mais plano do que o dos romances, mas a mesma reta sobre os mesmos eixos, 175 anos e um género depois.
As listas de topo diferem de forma evidente e coincidem no essencial. O inglês dá the, of, and, a, to; o francês de, la, et, il, le; o espanhol que, de, y, la, a; o português a, que, o, de, e; o alemão und, die, der, er, in; o italiano e, che, di, a, il. Nem um substantivo. Todas são artigos, preposições, conjunções ou pronomes — cola gramatical, não conteúdo. É sobre esta observação que assenta o resto do artigo.
Onde a lei falha: as duas pontas e qualquer texto curto
Ajuste só as dez primeiras palavras de Quincas Borba e o declive sai -0,595 em vez de -1,021; a cabeça da distribuição é mais plana do que a lei prevê. Também o é nas outras: -0,793 em inglês, -0,541 em francês, -0,693 em espanhol, -0,545 em alemão, -0,485 em italiano. A palavra mais frequente nunca domina tanto quanto uma regra estrita em 1/n exigiria, e é por isso que a forma de Zipf–Mandelbrot soma uma constante à posição antes de a elevar a uma potência. Na outra ponta o ajuste degrada-se de outra maneira: sobre as posições 1 000 até ao fim, o R² cai de 0,998 para 0,895 em português e para 0,921 em francês, porque a cauda é uma escada de palavras que ocorrem quatro, três, duas e por fim uma vez, e uma reta através de uma escada é uma reta má.
A falha mais útil é a do comprimento. Pegue nas primeiras 200 palavras de Moby-Dick e conte-as: 100 palavras distintas, das quais 86 ocorrem uma só vez, e o token mais frequente é «chapter» com 56 ocorrências porque a passagem é sobretudo um índice. O ajuste dá um declive de -0,614 com R² 0,685 — nenhuma lei visível. Com 1 000 palavras o ajuste é -0,751 e R² 0,920; com 5 000 palavras -0,897 e 0,969; com 20 000 palavras -0,991 e 0,991. A distribuição só se torna reconhecível na casa das dezenas de milhares de palavras. Um artigo de blogue, uma ficha de produto ou um email estão muito abaixo. Contar frequências sobre 300 palavras diz-lhe o que aquele texto repete; não lhe diz nada sobre a língua.
Porque existem as palavras vazias e porque a compressão funciona
Se cem palavras são metade do seu texto, então cem entradas numa lista retirarão metade dos tokens de um índice. É tudo o que uma lista de palavras vazias alguma vez foi: uma medida de poupança que a lei de Zipf torna enorme. Em Quincas Borba as dez palavras mais frequentes são 23,5 % do texto corrido e as cem primeiras 50,4 %; 97 palavras distintas cobrem metade do livro. As outras línguas concordam na forma e diferem na contagem: 96 formas para metade do romance inglês, 90 para o francês, 59 para o espanhol, 132 para o alemão, 141 para o italiano. Note-se que é exatamente por isso que a abordagem por palavras vazias está hoje em desuso na pesquisa: essas palavras transportam alguma informação, e «ser ou não ser» é feito só delas.
A ligação com a compressão é mensurável. Moby-Dick usa 17 422 palavras distintas; se todas fossem igualmente prováveis, nomear uma custaria log2(17 422) = 14,09 bits. A distribuição unigrama real tem uma entropia de 10,00 bits por palavra, menos 29,1 %, e essa poupança é a assimetria — o facto de «the» surgir a cada quinze palavras enquanto «gunwale» surge vinte e uma vezes em todo o romance. Os compressores generalistas exploram a mesma assimetria ao nível dos bytes: o gzip -9 reduz o livro de 1 206 KiB para 486 KiB. Baralhar as 216 603 palavras por ordem aleatória e comprimir de novo dá 459 KiB de 1 152 KiB, essencialmente a mesma proporção, o que mostra quanto do ganho do gzip vem aqui da distribuição de frequências e não da ordem das palavras.
A frequência bruta é um mau sinal de relevância — um exemplo resolvido
Divida Moby-Dick nos seus capítulos, trate cada um como um documento e pergunte ao contador de frequências de que trata um capítulo. Usámos os 134 capítulos suficientemente longos para contar e escolhemos o intitulado «Queen Mab», com 863 palavras. Ordenados por frequência bruta, os seus termos de topo são a (39), i (36), the (26), he (22), of (20) — uma descrição perfeita do inglês e uma descrição inútil do capítulo. Pondere as mesmas contagens pela frequência inversa de documento e os termos de topo passam a kicked (8), kick (7), wise (9), pyramid (5), says (10), flask (10), o que resume com justiça um capítulo em que Stubb levou um pontapé e fala disso com Flask.
A aritmética por trás da troca cabe num logaritmo. «The» aparece em 134 dos 134 capítulos, portanto a sua frequência inversa de documento é ln(134/134) = 0,000 e o seu peso cai a zero por mais vezes que ocorra. «Cetology» aparece em 3 capítulos, portanto o seu idf é ln(134/3) = 3,799 e três ocorrências vencem vinte e seis de «the». É o mesmo raciocínio do tf-idf e do BM25, a função de ordenação de que a maioria dos motores parte, e é a razão pela qual a densidade de palavras-chave que as ferramentas de marketing reportam não tem equivalente dentro de um sistema de pesquisa moderno. A densidade mede o eixo errado: o que conta é quão invulgar um termo é na coleção, não quantas vezes se repete na página.
Para que serve realmente uma contagem de frequências
Assim que se deixa de ler o topo da lista, a contagem torna-se realmente útil. Compare um documento com uma lista de frequências de referência e as palavras anormalmente frequentes nele são o seu assunto — é o cálculo tf-idf acima com um corpus que já tem. Procure repetições não intencionais: um tique de autor, um termo repetido onze vezes numa ficha de produto de 400 palavras, um nome escrito de duas maneiras. Conte os hápax, as palavras que ocorrem uma só vez, que são 55,9 % das palavras distintas de Quincas Borba e 44,2 % de Moby-Dick; uma queda brusca dessa proporção entre versões é um bom indício de empobrecimento lexical. E verifique a cobertura: se 97 palavras carregam metade do seu texto, a outra metade é onde está o significado.
Um hábito vale a pena guardar de tudo isto: indique o denominador. «Aparece 12 vezes» não quer dizer nada sem «em 400 palavras», e 12 em 400 são 3 %, altíssimo para uma palavra lexical e baixíssimo para «o». O nosso contador de frequências mostra por isso a contagem, a proporção e a posição em conjunto, e a ferramenta de legibilidade ao lado trabalha sobre o mesmo fluxo de tokens.
| Corpus | Palavras corridas / distintas | Palavra mais frequente | Declive (posições 10–1000) | R² | As 100 primeiras palavras cobrem |
|---|---|---|---|---|---|
| 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 % |
| Os artigos deste site (en, 2026) | 513 756 / 14 375 | the — 6,55 % | -0,915 | 0,997 | 47,6 % |
Perguntas frequentes
- Que comprimento é preciso para a lei de Zipf aparecer?
- Dezenas de milhares de palavras. Truncando Moby-Dick e reajustando obtém-se R² 0,685 com 200 palavras, 0,920 com 1 000, 0,969 com 5 000 e 0,991 com 20 000, com o declive a subir de -0,614 para -1,0 à medida que o texto cresce. Abaixo de alguns milhares de palavras a maioria das palavras distintas ocorre uma só vez — 86 das 100 de uma amostra de 200 palavras — e uma lista de posições feita quase só de empates não tem declive para medir.
- Devo remover as palavras vazias antes de contar?
- Depende da pergunta. Para saber de que trata um documento, sim — ou melhor, pondere pela frequência inversa de documento, que as elimina sozinha: «the» aparece nos 134 capítulos de Moby-Dick, portanto o seu idf é exatamente zero. Para verificar se um texto é atípico, não: uma taxa anormalmente baixa de palavras funcionais é ela própria um sinal, e as listas de palavras vazias apagam conteúdo real, porque «ser ou não ser» é feito só delas.
- Porque é que o declive ajustado é mais inclinado do que -1?
- Porque a lei nua em 1/n é uma idealização. Cada um dos nossos seis romances ajusta entre -1,021 e -1,083 sobre as posições 10 a 1 000: o excesso é sistemático, não ruído, e é por isso que a forma generalizada de Zipf–Mandelbrot trata o expoente como parâmetro livre e soma uma constante à posição para dobrar a cabeça plana. O intervalo ajustado também muda a resposta: ajustar a lista completa em vez das posições 10 a 1 000 leva o declive inglês de -1,083 para -1,154, porque a cauda ruidosa é a maioria dos pontos.
- O tokenizador muda o resultado?
- Muda as contagens, não a forma. Manter o apóstrofo, separar palavras com hífen ou lematizar formas flexionadas move muito o número de palavras distintas — 25 071 no romance alemão contra 10 329 no português, sobre textos de comprimentos muito diferentes — enquanto o declive log-log fica na mesma faixa estreita. Compare listas de frequências só se vierem do mesmo tokenizador, e diga qual usou.
- A densidade de palavras-chave é um número útil?
- Só como autocontrolo da repetição. A densidade é um número intradocumento e a relevância é interdocumentos: no nosso teste sobre um capítulo, ponderar pela frequência inversa de documento transformou um top cinco de a, i, the, he, of em kicked, kick, wise, pyramid, flask. Uma palavra presente em todos os documentos de uma coleção tem idf exatamente zero por mais densa que seja na sua página. Use a contagem para apanhar repetições acidentais; não a use como meta.
Artigos que podem interessar-lhe
Todos os guias →Ferramentas relacionadas
Fontes
- 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
Detetaste um erro neste artigo?