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%)