1
resposta

[05 - 2] Contando as palavras do maior clássico da literatura brasileira

Olá.

Acompanhando esta aula, ao invés de pegar um texto aleatório, resolvi pegar um texto mais interessante e relevante. O texto completo de dom Casmurro está disponível no site do MEC

Além disso, me pareceu mais importante contar as palavras do que as letras. Por isso copiei o código e fiz algumas alterações pra conseguir as duas contagens. Ficou assim:

from collections import Counter

### Importa o texto e salva numa string
Casmurro = open("domCasmurro.txt", "r", encoding='utf-8')
Casmurro_texto = Casmurro.read()
Casmurro.close()

### Conta as letras
aparicoes = Counter(Casmurro_texto.lower())
total_de_chars = aparicoes.total()
print ('O total de caracteres em "Dom Casmurro" é: ', total_de_chars, '\n')
proporcoes = [(letra, frequencia*100/total_de_chars) for letra, frequencia in aparicoes.items()]
proporcoes = Counter(dict(proporcoes))
top10 = proporcoes.most_common(10)
print("Os caracteres mais comuns são:")
for char, proporcao in top10:
  print("{} => {}  ({:.2f}%)".format(char, aparicoes[char], proporcao))

### Conta as palavras
lista_palavras = Casmurro_texto.lower().split()
palavras_contadas = Counter(lista_palavras)
total_de_palavras = palavras_contadas.total()
print ('\nO total de palavras em "Dom Casmurro" é: ', total_de_palavras, '\nCada palavra tem em média {:.2f} caracteres.\n'.format(total_de_chars/total_de_palavras), '\nAs palavras mais comuns são:')
proporcoes_palavras = [(palavra, frequencia_palavra) for palavra, frequencia_palavra in palavras_contadas.items()]
proporcoes_palavras = Counter(dict(proporcoes_palavras))
top10_palavras = proporcoes_palavras.most_common(20)

for palavra, aparicoes_palavra in top10_palavras:
  print("{} => {} ({:.2f}%)".format(palavra, aparicoes_palavra, aparicoes_palavra*100/total_de_palavras))

O resultado é:

O total de caracteres em "Dom Casmurro" é:  383346 

Os caracteres mais comuns são:
  => 70147  (18.30%)
a => 37958  (9.90%)
e => 35667  (9.30%)
o => 29280  (7.64%)
s => 22711  (5.92%)
i => 17989  (4.69%)
r => 17524  (4.57%)
m => 15083  (3.93%)
n => 13836  (3.61%)
u => 13755  (3.59%)

O total de palavras em "Dom Casmurro" é:  66257 
Cada palavra tem em média 5.79 caracteres.

As palavras mais comuns são:
que => 2607 (3.93%)
a => 2482 (3.75%)
e => 2117 (3.20%)
de => 1972 (2.98%)
o => 1667 (2.52%)
não => 1410 (2.13%)
— => 835 (1.26%)
um => 767 (1.16%)
é => 672 (1.01%)
os => 660 (1.00%)
da => 625 (0.94%)
do => 595 (0.90%)
se => 568 (0.86%)
mas => 551 (0.83%)
para => 542 (0.82%)
as => 537 (0.81%)
com => 536 (0.81%)
era => 532 (0.80%)
me => 509 (0.77%)
eu => 460 (0.69%)
1 resposta

Olá Leonardo,

Muito bom! Que legal que você escolheu um texto tão importante e relevante para praticar! E parabéns por ter feito as alterações no código para contar as palavras em vez das letras.