Foi ao som dessas músicas que meu feto de programa que faz mais ou menos o que quero nasceu... Depois de um curso intensivo de Python durante os últimos dias, estou começando a pegar o jeito. Falta dar umas melhoradinhas, mas o grosso tá aí...
Não é nada de mais. Por enquanto é só um programinha que pega qualquer texto, conta todas as palavras, faz uma lista ordenada pelas palavras mais freqüentes e lista ao lado de cada palavra sua ocorrência no texto e a freqüência relativa.
- #! /usr/bin/python
import sys
words = open(sys.argv[1]).read().lower().split()
dic = {}
for i in words: dic[i] = 0
for i in words: dic[i] += 1
count = reversed(sorted([(dic[i], i) for i in dic]))
freq = lambda x: float(x) / len(words)
count = [(j, i, freq(i)) for i, j in count]
for i in count: print "%s\t\t%d\t%F" % i
de | 6 | 0.044776 |
que | 5 | 0.037313 |
o | 4 | 0.029851 |
e | 4 | 0.029851 |
para | 3 | 0.022388 |
da | 3 | 0.022388 |
a | 3 | 0.022388 |
é | 2 | 0.014925 |
vou | 2 | 0.014925 |
uma | 2 | 0.014925 |
um | 2 | 0.014925 |
mas | 2 | 0.014925 |
mais | 2 | 0.014925 |
lista | 2 | 0.014925 |
faz | 2 | 0.014925 |
falta | 2 | 0.014925 |
dar | 2 | 0.014925 |
ao | 2 | 0.014925 |
últimos | 1 | 0.007463 |
universidade | 1 | 0.007463 |
umas | 1 | 0.007463 |
tá | 1 | 0.007463 |
todas | 1 | 0.007463 |
texto, | 1 | 0.007463 |
texto | 1 | 0.007463 |
tenho | 1 | 0.007463 |
só | 1 | 0.007463 |
são | 1 | 0.007463 |
sua | 1 | 0.007463 |
som | 1 | 0.007463 |
semana | 1 | 0.007463 |
sair | 1 | 0.007463 |
relativa. | 1 | 0.007463 |
quero | 1 | 0.007463 |
qualquer | 1 | 0.007463 |
python | 1 | 0.007463 |
próxima. | 1 | 0.007463 |
promete. | 1 | 0.007463 |
programinha | 1 | 0.007463 |
programa | 1 | 0.007463 |
por | 1 | 0.007463 |
pontuação, | 1 | 0.007463 |
pelas | 1 | 0.007463 |
pegar | 1 | 0.007463 |
pega | 1 | 0.007463 |
palavras, | 1 | 0.007463 |
palavras | 1 | 0.007463 |
palavra | 1 | 0.007463 |
ou | 1 | 0.007463 |
os | 1 | 0.007463 |
ordenada | 1 | 0.007463 |
ocorrência | 1 | 0.007463 |
não | 1 | 0.007463 |
no | 1 | 0.007463 |
nasceu... | 1 | 0.007463 |
nada | 1 | 0.007463 |
na | 1 | 0.007463 |
músicas | 1 | 0.007463 |
mudar | 1 | 0.007463 |
minha | 1 | 0.007463 |
meu | 1 | 0.007463 |
menos | 1 | 0.007463 |
melhoradinhas, | 1 | 0.007463 |
me | 1 | 0.007463 |
manhã | 1 | 0.007463 |
mais. | 1 | 0.007463 |
limpada | 1 | 0.007463 |
lado | 1 | 0.007463 |
já | 1 | 0.007463 |
jeito. | 1 | 0.007463 |
isso | 1 | 0.007463 |
intensivo | 1 | 0.007463 |
grosso | 1 | 0.007463 |
freqüência | 1 | 0.007463 |
freqüentes | 1 | 0.007463 |
foi | 1 | 0.007463 |
fim | 1 | 0.007463 |
fica | 1 | 0.007463 |
feto | 1 | 0.007463 |
eu | 1 | 0.007463 |
estou | 1 | 0.007463 |
este | 1 | 0.007463 |
enquanto | 1 | 0.007463 |
durante | 1 | 0.007463 |
dormitório | 1 | 0.007463 |
dormir | 1 | 0.007463 |
do | 1 | 0.007463 |
dias, | 1 | 0.007463 |
dessas | 1 | 0.007463 |
depois | 1 | 0.007463 |
curso | 1 | 0.007463 |
conta | 1 | 0.007463 |
começando | 1 | 0.007463 |
cidade! | 1 | 0.007463 |
centro | 1 | 0.007463 |
cada | 1 | 0.007463 |
aí... | 1 | 0.007463 |
as | 1 | 0.007463 |
amanhã. | 1 | 0.007463 |
aliás | 1 | 0.007463 |
agora | 1 | 0.007463 |
4 | 1 | 0.007463 |
Falta dar uma limpada na pontuação, mas isso fica para a próxima. Agora já são 4 da manhã e eu tenho que dormir para amanhã. Aliás este fim de semana promete. Vou me mudar para o dormitório da minha universidade e vou sair do centro da cidade!
3 comentários:
espero que esse daí seja só o "grosso" da parada, mesmo...
porque já fiz um negócio PARECIDO com esse em C e deu um trabalho danado! o.O
(mas é nem conheço Python direito... então as vezes ele tem uma funçãozinha que implementa essa bagaça quase que automaticamente)
continue postando ae pra nóis! :D
abraços!
É exatamente o que eu preciso mas como não entendi nada nao tenho como usar.
Vou procurar um codigo documentado.
Para quem nao entendeu, eis outra forma de fazer a mesma coisa:
http://antoniocangiano.com/2008/03/18/use-python-to-detect-the-most-frequent-words-in-a-file/
Postar um comentário