Analisador de frequência de palavras
Mira Olá. Fui encarregada de extrair insights dos registros da missão e existem centenas deles. Preciso de algo que pegue um arquivo de texto, conte quantas vezes cada palavra aparece e me mostre os principais resultados. Quero descobrir quais tópicos continuam aparecendo sem ter que ler tudo manualmente.
O que você vai construir
Digite um texto, ou um nome de arquivo para ler: sample.txt
Top 10 palavras:
the 42
and 31
python 18
is 16
you 14
...O que você vai precisar
- Strings — dividir o texto em palavras, remover pontuação, converter para minúsculas
- Dicionários — contar quantas vezes cada palavra aparece
- Listas — ordenar e fatiar os principais resultados
- Arquivos e exceções — ler de um arquivo de texto
- Lambda, compreensões e zip — compreensões de lista e
sorted()com uma chave funcionam bem aqui
Dicas
Normalize antes de contar. Converta tudo para minúsculas e remova a pontuação antes de fazer a contagem. Caso contrário, "Python", "python" e "Python," serão contados como palavras diferentes.
Um dicionário faz a contagem. Percorra as palavras. Se a palavra já for uma chave, incremente sua contagem. Se não for, adicione-a com uma contagem de 1. .get() com um valor padrão deixa isso elegante.
Ordenando um dicionário por valor. sorted() aceita um argumento key=. Passe uma lambda que retorne o valor de cada chave para ordenar por frequência.
Indo além
Quando a análise principal estiver funcionando:
- Stop words. Ignore palavras comuns como "the", "and", "is". Defina um conjunto de stop words e pule qualquer palavra que apareça nele.
- Top N configurável. Permita que o usuário especifique quantos resultados mostrar em vez de sempre mostrar 10.
- Saída visual. Imprima cada palavra com uma barra feita de caracteres repetidos proporcional à sua contagem. Mesmo uma versão simples deixa a saída muito mais legível.

