1
resposta

Melhoria no corretor

Apos finalizar o curso fiquei pensando em como poderia melhorar o corretor e juntar os dois em um só, então fiz o seguinte:

def gerador_palavras(palavra):
    fatias = [(palavra[:i], palavra[i:]) for i in range(len(palavra) +1)]
    letras = 'abcdefghijklmnopqrstuvwxyzáâàãéêèẽíîìĩóôõòúûùũç'

    palavras_geradas =  [E + letra + D for E, D in fatias for letra in letras]
    palavras_geradas += [E  + D[1:] for E, D in fatias]
    palavras_geradas += [E + letra + D[1:] for E, D in fatias for letra in letras]
    palavras_geradas += [E + (D[1] + D[0] + D[2:] if len(D) > 1 else '') for E, D in fatias]

    return palavras_geradas

total_palavras = len(palavras)
frequencia = nltk.FreqDist(palavras)

def probabilidade(palavra_gerada):
    return frequencia[palavra_gerada] / total_palavras

def gerador_turbinado(palavras_geradas):
    novas_palavras = []

    for palavra in palavras_geradas:
        novas_palavras += gerador_palavras(palavra)

    return novas_palavras

vocabulario = set(palavras)
def lista_candidatos(palavras_geradas):
    candidatos = []

    palavras_geradas = set(palavras_geradas)
    for palavra in palavras_geradas:
        if palavra in vocabulario:
            candidatos.append(palavra)

    return candidatos

def corretor_turbinado(palavras_geradas):
    palavra_correta = ''

    palavras_geradas += gerador_turbinado(set(palavras_geradas))
    candidatos = lista_candidatos(palavras_geradas)
    if (len(candidatos) > 0):
        palavra_correta = max(candidatos, key=probabilidade)

    return palavra_correta

def corretor(palavra):
    palavra_correta = ''

    palavras_geradas = gerador_palavras(palavra)

    candidatos = lista_candidatos(palavras_geradas)
    if (len(candidatos) > 0):
        palavra_correta = max(candidatos, key=probabilidade)
        if (probabilidade(palavra_correta) < 0.0001):
            palavra_correta = corretor_turbinado(palavras_geradas)
    else:
        palavra_correta = corretor_turbinado(palavras_geradas)

    return palavra_correta

Consegui uma taxa de acerto de 85%, oque vocês acham desse novo código ?

1 resposta

Olá Érick, legal que vc foi além fazendo mais coisas!

É sempre legal ver vocês indo além do curos, parabéns.

Resultados interessantes!

Abraços.