Itens compartilhados de Juliano

quinta-feira, 22 de maio de 2008

Música do dia: Francesa







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
Resultado do programinha acima rodando com as palavras deste post):


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
1 0.007463
todas 1 0.007463
texto, 1 0.007463
texto 1 0.007463
tenho 1 0.007463
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
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:

Gustavo Teles disse...

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!

Anônimo disse...

É exatamente o que eu preciso mas como não entendi nada nao tenho como usar.

Vou procurar um codigo documentado.

Anônimo disse...

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/

Pesquisar em blogues de brasileiros na Coreia

Resultado da pesquisa