Lei de Zipf: análise de texto e calculadora online
Lei de Zipf é um padrão empírico: em textos naturais, a frequência de uma palavra é inversamente proporcional à sua posição (rank) na tabela de frequências. A palavra mais comum aparece aproximadamente o dobro de vezes que a segunda, três vezes mais que a terceira, e assim por diante. Analisar um texto com a lei de Zipf mostra o quanto a distribuição das palavras se aproxima da de um texto natural. Você pode verificar seu texto online, de graça, com a calculadora da lei de Zipf, que gera o gráfico log-log e calcula a inclinação, o R² e um índice de ajuste; o Detector de IA do PromoPilot também traz a métrica "Lei de Zipf" entre os resultados. A seguir: a fórmula, como interpretar os resultados e como verificar um texto manualmente.
A fórmula da lei de Zipf
Em sua forma geral, a lei é escrita como f(r) = C / rα, onde f é a frequência da palavra, r é seu rank (sua posição na lista ordenada por frequência decrescente), C é uma constante aproximadamente igual à frequência da palavra mais comum, e o expoente α é próximo de um na linguagem natural. Uma consequência simples: rank vezes frequência, r × f, permanece aproximadamente constante.
| Rank da palavra | Frequência esperada com α = 1 | Rank × frequência |
|---|---|---|
| 1 | 120 | 120 |
| 2 | 60 | 120 |
| 3 | 40 | 120 |
| 4 | 30 | 120 |
| 10 | 12 | 120 |
Plote em eixos logarítmicos: log do rank no eixo horizontal e log da frequência no vertical. Os pontos de um texto natural ficam quase sobre uma linha reta, com inclinação de cerca de −1.
Como verificar um texto com a lei de Zipf online
Opção 1: a calculadora da lei de Zipf
- Abra o analisador de texto pela lei de Zipf. Ele é gratuito, e todo o cálculo é feito no seu navegador.
- Cole seu texto. O mínimo é de 50 palavras, mas, para conclusões confiáveis, use 300 palavras ou mais, idealmente 1.000+: em textos curtos, algumas repetições alteram bastante a inclinação.
- Se quiser, ative a remoção de stop words (listas em inglês, polonês, ucraniano e russo) para ver apenas as palavras de conteúdo.
- Você recebe um gráfico de rank e frequência em eixos log-log com a linha ideal de Zipf (inclinação −1), a inclinação do seu texto, o R² (o quanto os pontos se ajustam a uma reta) e um índice de ajuste de Zipf de 0 a 100: 80+ é um ajuste próximo, 60–79 moderado, abaixo de 60 fraco.
- Abaixo do gráfico, uma tabela com as 30 palavras principais compara a contagem real com a prevista pela lei de Zipf e sinaliza as palavras que aparecem bem mais do que o esperado: as primeiras candidatas a keyword stuffing.
Opção 2: a métrica da lei de Zipf no Detector de IA
- Abra o Detector de IA. Sem necessidade de cadastro.
- Cole o texto ou informe a URL de uma página: a ferramenta extrai o texto sozinha. Use pelo menos 100 palavras, de preferência 200 ou mais: em um trecho curto, a métrica diz pouco.
- Escolha o idioma ou deixe a detecção automática ativada e clique em "Verificar".
- No bloco "Métricas do detector", encontre a linha "Lei de Zipf" com a dica "Distribuição de frequência de palavras". Se o desvio for perceptível, o bloco "Explicações" incluirá uma linha informando que as frequências das palavras se desviam da distribuição natural.
A mesma métrica está disponível na versão avançada do detector, onde aparece em um gráfico de radar ao lado de outros indicadores e de uma análise do texto frase por frase.
Como o Detector de IA calcula a métrica
- O texto é dividido em palavras pelos espaços, as palavras são convertidas para minúsculas e a pontuação é removida. Não há lematização: "link", "links" e "linking" contam como palavras diferentes.
- As frequências são ordenadas em ordem decrescente e, para os 50 primeiros ranks, a frequência real é comparada com a teórica
f(1) / r. Em seguida, calcula-se o desvio relativo médio. - A "cauda" (as palavras raras no terço final da lista) é pontuada separadamente: uma cauda uniforme demais também conta como desvio.
- As duas pontuações têm o mesmo peso. Se o texto tiver menos de 50 palavras, a métrica retorna um valor neutro de 50%; ela atinge força total a partir de 200 palavras e, em tamanhos intermediários, o resultado é puxado em direção a 50%.
Como interpretar o resultado
| Valor | Cor da barra | O que significa |
|---|---|---|
| até 40% | verde | A distribuição de frequências está próxima do natural |
| 40–70% | amarelo | Desvio perceptível; em textos com menos de 200 palavras, muitas vezes ocorre apenas por causa do tamanho |
| acima de 70% | vermelho | Desvio forte: keyword stuffing, texto escrito com base em modelos ou vocabulário monótono |
Quanto maior a porcentagem, mais o texto se afasta da curva de Zipf. Dito isso, a métrica tem pouco peso na probabilidade final de geração por IA, cerca de 3%: ela não é confiável em textos curtos, e o detector se baseia principalmente em outros sinais. Como ler o relatório completo está explicado no artigo sobre a verificação de texto para IA.
Verificação manual: lista de frequência de palavras e gráfico log-log
Se você quer ver a própria curva, e não apenas um número, é fácil montá-la por conta própria.
- Limpe o texto: tudo em minúsculas, sem pontuação nem dígitos. Os resultados ficam mais precisos se você reduzir as palavras à forma base (lematizar): isso importa mais para idiomas com muita flexão, mas até em inglês "link" e "links" seriam contados separadamente.
- Conte quantas vezes cada palavra aparece e ordene a lista em ordem decrescente. O número da linha é o rank.
- Adicione duas colunas:
=LOG10(rank)e=LOG10(frequency). - Crie um gráfico de dispersão com essas colunas e calcule a inclinação: no Excel e no Google Sheets, use a função
SLOPE.
A mesma coisa em Python:
import re, math
from collections import Counter
text = open("text.txt", encoding="utf-8").read().lower()
words = re.findall(r"[а-яёa-z]+", text)
freqs = sorted(Counter(words).values(), reverse=True)
xs = [math.log10(r) for r in range(1, len(freqs) + 1)]
ys = [math.log10(f) for f in freqs]
n = len(xs); mx = sum(xs) / n; my = sum(ys) / n
slope = sum((x - mx) * (y - my) for x, y in zip(xs, ys)) / sum((x - mx) ** 2 for x in xs)
print("slope:", round(slope, 2)) # about -1 for natural text
Exemplo: um texto normal vs um texto com keyword stuffing
Um exemplo ilustrativo baseado em um artigo de cerca de 600 palavras sobre conserto de notebooks. Na versão normal, o topo da lista de frequência é assim: "the", "and", "to", "of", "laptop": palavras funcionais no topo, a palavra do tema em quinto lugar e frequências que caem de forma suave. Na versão com excesso de palavras-chave, em que o autor enfiou "laptop repair" em todas as frases, o quadro é diferente:
| Rank | Texto normal | Texto com keyword stuffing |
|---|---|---|
| 1 | the: 31 | laptop: 34 |
| 2 | and: 17 | repair: 33 |
| 3 | to: 11 | the: 29 |
| 4 | of: 8 | and: 15 |
| 5 | laptop: 6 | to: 10 |
Na primeira coluna, as frequências se comportam como 31 / r; na segunda, os dois primeiros ranks são quase iguais: esse é o desvio da lei de Zipf, visível sem nenhuma ferramenta. O detector o identifica automaticamente, e em um gráfico log-log essas palavras aparecem como uma "plataforma" no início da curva.
Como interpretar os desvios
| O que você vê no gráfico | Possível causa |
|---|---|
| Uma palavra do tema aparece entre as três primeiras, ao lado de artigos e preposições | Keyword stuffing: verifique a densidade de palavras-chave |
| A inclinação é bem mais acentuada que −1 | Vocabulário restrito, com muita repetição das mesmas palavras |
| A inclinação é bem mais suave que −1 | Listas de termos, tabelas, listas de nomes |
| Uma cauda longa e plana de palavras que aparecem uma única vez | Texto curto: é normal, não é sinal de problema |
Por que a lei de Zipf importa para SEO
- Identificar keyword stuffing: se uma palavra-chave foge da distribuição, ela está sendo repetida demais.
- Avaliar a riqueza de vocabulário: uma distribuição plana ou íngreme demais indica uma linguagem empobrecida.
- Comparar com os concorrentes: é mais útil do que normas abstratas: veja como são os textos mais bem ranqueados para a sua consulta.
- Um dos sinais de texto gerado por máquina: um desvio é um sinal indireto de que o texto foi montado a partir de modelos ou gerado.
Segunda lei de Zipf
A análise de textos às vezes também menciona a segunda lei de Zipf. Ela descreve o outro lado da distribuição: quantas palavras diferentes têm a mesma frequência. Quanto menor a frequência, maior o número dessas palavras: as que aparecem uma única vez são as mais numerosas, e em um texto típico elas representam grande parte do vocabulário. Essa é exatamente a "cauda" que o detector avalia separadamente: em textos naturais ela é irregular, em textos feitos a partir de modelos ela é suspeitamente uniforme.
De onde vem a lei
O padrão foi descrito pelo linguista americano George Zipf entre as décadas de 1930 e 1940, embora observações semelhantes sobre a frequência das palavras já tivessem sido feitas antes dele. Mais tarde, ele foi encontrado muito além da linguagem: no tamanho das cidades, na renda e no tráfego de sites. Para textos, ele se mantém de forma notável: em qualquer texto natural suficientemente grande, as frequências das palavras se encaixam na mesma curva. As primeiras posições são quase sempre ocupadas por palavras funcionais (artigos, preposições, conjunções, pronomes), enquanto as palavras temáticas, com significado próprio, ficam mais abaixo, e é a participação delas que mostra sobre o que o texto trata.