Pessoal,
Pensei numa solução diferente para tratar o erro da palavra "lóiigica". Em vez criar a função gerador_turbinado(), fiz o seguinte:
- Criei a função
delete_duplo()
, o qual segue a mesma lógica dodelete_caracter()
, porém filtra o lado direito da fatia a partir do terceiro caracter D[2:]; - Depois refatorei a função
gerador_palavras()
, onde inserimos a linhapalavras_geradas += delete_duplo(fatias)
; - Por fim, criamos a função
novo_corretor()
, porém sem necessidade de criar duas variáveis dentro dela, que seriam:palavras_turbinado
etodas_palavras
.
Vejam abaixo como ficou o código dessas funções e se faz sentido:
def delete_duplo(fatias):
novas_palavras = []
for E, D in fatias:
novas_palavras.append(E + D[2:]) #eliminando as duas primeiras letras
return novas_palavras
def gerador_palavras(palavra):
fatias = []
for i in range(len(palavra)+1):
fatias.append((palavra[:i], palavra[i:]))
palavras_geradas = insere_letras(fatias)
palavras_geradas += delete_caracteres(fatias)
palavras_geradas += troca_letras(fatias)
palavras_geradas += inverte_letras(fatias)
palavras_geradas += delete_duplo(fatias)
return palavras_geradas
def novo_corretor(palavra):
palavras_geradas = set(gerador_palavras(palavra))
candidatos = [palavra]
for palavra in palavras_geradas:
if palavra in vocabulario:
candidatos.append(palavra)
palavra_correta = max(candidatos, key=probabilidade )
return palavra_correta