Desenvolva a função frequency(), que toma uma string como entrada, calcula a frequência de cada palavra na string e retorna um dicionário que mapeia palavras na string à sua frequência. Você deverá usar uma expressão regular (regex) para obter a lista de todas as palavras na string.
O que eu fiz:
from re import findall
def frequency(string):
padrao = "[a-zA-Z]+"
palavras = findall(padrao,string)
dicionario = {}
for w in palavras:
if w in dicionario:
dicionario[w] += 1
else:
dicionario[w] = 1
return dicionario
string = "Eu desconfio que houve uma sabotagem, exatamente para manchar a gestão eficiente que está sendo feita na Cedae, preparando ela para o leilão"
print(frequency(string))
Saída:
{'Eu': 1, 'desconfio': 1, 'que': 2, 'houve': 1, 'uma': 1, 'sabotagem': 1, 'exatamente': 1, 'para': 2, 'manchar': 1, 'a': 1, 'gest': 1, 'o': 3, 'eficiente': 1, 'est': 1, 'sendo': 1, 'feita': 1, 'na': 1, 'Cedae': 1, 'preparando': 1, 'ela': 1, 'leil': 1}
Pode-se observar na saída que a expressão regular [a-zA-Z]+ não reconhece a acentuação das palavras na língua portuguesa. Como melhorar a regex de forma a capturar as palavras acentuadas corretamente?