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