Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Melhoria no corretor (processamento e acurácia)

Ao terminar o curso fiquei com a impressão de que podíamos juntar os corretores e obter resultados ainda melhores.

Com isso, utilizei os recursos usados para diminuir o tempo de processamento do "corretor_turbinado" no corretor simples e então agrupei os dois na mesma função. Um ponto de atenção é que ao localizar a palavra no vocabulário usando o simples, eu optei por não fazer uma varredura desta palavra usando o turbinado, desta forma os resultados finais foram para:

83.87% de 186 palavras, desconhecida é 6.99% Wall time: 8.13 s

Antes dos ajustes estes eram:

52.15% de 186 palavras, desconhecida é 6.99% Wall time: 31 s

Segue abaixo as funções criadas:

def corretor_final(palavra):
    palavras_geradas = gerador_palavras(palavra)
    palavra_correta_s = max(palavras_geradas, key=probabilidade)
    if palavra_correta_s in vocabulario:
        palavra_correta = palavra_correta_s
    else:
        palavras_turbinado = gerador_turbinado(palavras_geradas)
        todas_palavras = set(palavra_geradas + palavras_turbinado)
        candidatos = [palavra]
        for palavra in todas_palavras:
            if palavra in vocabulario:
                candidatos.append(palavra)
        palavra_correta = max(candidatos, key=probabilidade)
    return palavra_correta

def avaliador_final(testes, vocabulario):
    n_palavras = len(testes)
    acertou = 0
    desconhecida = 0
    for correta, errada in testes:
        palavra_corrigida = corretor_final(errada)
        desconhecida += (correta not in vocabulario)
        if palavra_corrigida == correta:
            acertou += 1
        else:
            print(correta + "-" + errada + "-" + corretor(errada) + "-" + palavra_corrigida)
    taxa_acerto = round(acertou*100/n_palavras, 2)
    taxa_desconhecida = round(desconhecida*100/n_palavras, 2)
    print(f"{taxa_acerto}% de {n_palavras} palavras, desconhecida é {taxa_desconhecida}%")
1 resposta
solução!

Ficou bem legal Rodger, se vc comificar a forma que fazer a inferência da palavra correta você pode melhorar ainda mais seu resultado!

Dentre das palavras geradas selecionamos a de maior frequência, mas você pode melhorar isso considerando o contexto das palavras (palavras que vem antes e até palavras que vem depois da digitada errada), uma representação de palavras que pode te ajudar a pensar neste problema é o Word2Vec.

Fica aí um desafio para vc pensar!

Abraços e bons estudos!