Neste projeto o objetivo consiste em, dado um arquivo com inúmeras citações famosas em inglês, encontrar a distribuição das palavras do texto, ou seja, a frequência com que cada uma ocorre no texto. Não devem ser considerados artigos, verbo to be, preposições, números, símbolos, etc. (a, an, in, on, if, it, is, I, you, we, the, but), (0, 1, 2,..., 9), (!, *, &, ", '). De forma geral, palavras com menos de 3 letras devem ser descartadas.
Deve ser montado um ranking, com as top 10 palavras mais usadas nas citações (de modo a simular os trending topics do Twitter).
Arquivos podem ser encontrados em:
http://www.textfiles.com/humor/TAGLINES/quotes-1.txt
http://www.textfiles.com/humor/TAGLINES/quotes-2.txt
http://www.textfiles.com/humor/TAGLINES/quotes2.txt
http://www.textfiles.com/humor/TAGLINES/quotes.frt
http://www.textfiles.com/humor/TAGLINES/bonehead.txt
http://www.textfiles.com/humor/TAGLINES/quotes.jok
http://www.textfiles.com/humor/TAGLINES/ansafone.txt
Programa e sua execução:
(clique na imagem para ampliá-la)Código para ser copiado:
##### CRIANDO UM RANKING DE PALAVRAS QUE MAIS APARECEM EM UM TEXTO #####
#OBS: o arquivo .txt/.jok/.frt/"etc" que deseja utilizar, deve estar no mesmo diretorio que este .py
import string #importando biblioteca que contém caracteres especiais não desejados
#armazenando o aquivo de texto
arquivo = open(input('Informe o nome do arquivo (com sua extenção): ')) #usuário digita o nome do arquivo
texto = arquivo.read() #deixando o texto 'pronto para leitura' numa string
texto = texto.lower() #deixando todas as letras minúsculas
for c in string.punctuation: #eliminando caracteres indesejáveis (!?:;., etc)
texto = texto.replace(c,'')
texto = texto.split() #quebra a string numa lista de palavras
#criando um dicionário a partir da lista
d={}
for p in texto:
if p not in d:
d[p] = 1
else:
d[p] += 1
arquivo.close() #fechando o arquivo para não ocupar memória do computador
#criando ranking das palavras que mais aparecem
lista_palavras = sorted(d, key=d.get, reverse = True) #ordenar a lista de forma decrescente
i = 0 #contador para mostrar apenas 10 palavras
for palavra in lista_palavras:
if len(palavra)>3 and i<10: #selecionando palavras com mais de 3 letras, mostrar até 10 palavras
print('%s : %d' %(palavra, d[palavra])) #mostrando a palavra e seu respectivo nº de aparições
i += 1 #atualização do contador de palavras mostradas
#fim
Nenhum comentário:
Postar um comentário