Ir para o conteúdo
OneKitly

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

Daniel OkonkwoProgramador front-end e redator de Tecnologia na OneKitly

Desempenho web · Formatos de ficheiro

Verificado a partir de 4 fontes

Ver perfil
Em resumo

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.

Seis romances de domínio público, um por língua do site, contados com o mesmo tokenizador no Node 26.3.0. O declive é um ajuste por mínimos quadrados de log10 frequência sobre log10 posição, posições 10 a 1 000; a lei de Zipf prevê -1. A última linha é o corpus dos 533 artigos ingleses deste site, escritos em 2026, para comparar com um romance de 1851.
CorpusPalavras corridas / distintasPalavra mais frequenteDeclive (posições 10–1000)As 100 primeiras palavras cobrem
Moby-Dick (en, 1851)216 603 / 17 422the — 6,71 %-1,0830,99850,6 %
Les Misérables I (fr, 1862)111 887 / 12 899de — 4,00 %-1,0680,99851,2 %
Don Quijote (es, 1605)383 633 / 23 058que — 5,41 %-1,0540,99955,5 %
Quincas Borba (pt, 1891)78 361 / 10 329a — 3,73 %-1,0210,99850,4 %
Buddenbrooks (de, 1901)230 086 / 25 071und — 4,19 %-1,0790,99946,6 %
I promessi sposi (it, 1842)230 152 / 23 932e — 3,79 %-1,0310,99645,9 %
Os artigos deste site (en, 2026)513 756 / 14 375the — 6,55 %-0,9150,99747,6 %
Contador de frequência de palavrasConte quantas vezes cada palavra aparece no seu texto, da mais à menos frequente.Experimentar a ferramenta

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
ExplicaçãoOnde uma linha pode quebrar: o algoritmo Unicode por trás de cada parágrafo ajustado«Quebrar nos espaços» falha na maioria dos sistemas de escrita. O UAX #14 dá a cada caráter uma classe de quebra de linha; procurámos as nossas no Unicode 17.0.0 e executámos uma implementação conforme sobre espaços inquebráveis, hifenes condicionais, espaços de largura zero, URL, japonês e tailandês.GuiaConverter entre formatos de lista sem perder dados: as regras de aspas que ninguém lêPassar de uma lista com quebras de linha para uma lista com vírgulas é trivial até um item conter uma vírgula. As regras de aspas da RFC 4180, porque um campo CSV pode conter uma quebra de linha, porque as folhas de cálculo europeias usam o ponto e vírgula, e o que um item vazio faz à ida e volta — cada caso executado e impresso.ExplicaçãoO que medem realmente os índices de legibilidade (e as três coisas que não veem)O Flesch Reading Ease e o nível Flesch-Kincaid contam sílabas e comprimento de frase. Mais nada. As duas fórmulas na íntegra, uma passagem pontuada de ponta a ponta e o truque da vírgula que oferece 3,9 anos de escolaridade sem mudar uma palavra.ExplicaçãoContar palavras é ambíguo, e cada ferramenta responde de forma diferenteUma contagem de palavras é uma definição, não uma medição. Contámos o mesmo parágrafo de quatro maneiras e obtivemos 25, 28, 33 e 38; depois contámos 50 000 caracteres de prosa vulgar e obtivemos acordo dentro de 4,5 %. A diferença deve-se inteiramente a compostos, algarismos e URL.ExplicaçãoA densidade de palavras-chave é uma métrica morta, e eis o que a substituiuA densidade contava ocorrências porque a recuperação contava ocorrências. TF-IDF, depois BM25 com a sua curva de saturação, depois os embeddings substituíram-na. Eis a mesma página de 800 palavras pontuada de três formas, e porque é que as três divergem.ExplicaçãoContar carateres contra um limite que outra pessoa definiuUm emoji vale 1 carácter, ou 7, ou 11, ou 25, consoante quem conta. Qual deles o seu formulário, a sua base de dados e o seu gateway de SMS querem dizer — e um teste de uma só colagem para saber com qual está a lidar.

Ferramentas relacionadas

Fontes

Detetaste um erro neste artigo?