Como escrever um corretor ortográfico em GAWK com apenas 15 linhas
“Ano passado, o Peter Norvig publicou em seu website um artigo que explica como escrever um corretor ortográfico, noticiado inclusive no Br-Linux.org.
Norvig utilizou um script em Python com 21 linhas para demonstrar o algoritmo. Agora o Tiago Peczenyj publicou (após algumas noites em claro) uma versão utilizando o bom e velho gawk com apenas 15 linhas.”
Enviado por Tiago Peczenyj (tiago·peczenyjΘgmail·com) – referência (peczenyj.blogspot.com).
• Publicado por Augusto Campos em
2008-04-16
Vou esperar sair a versão de 14 linhas para usar :)
É, sempre dá pra ir reduzindo. Mas eu reparei que ele colocou o fechamento dos escopos (as chaves } ) na mesma linha. Isso não vale :P (embora não tire o mérito dele, óbvio).
Minha versão final em Java (http://www.raelcunha.com/spell-correct.php) ficou com 37 linhas, e a versão em Groovy com 23 linhas (embora essa seja não utilizável na prática, de tão lerda que ficou).
Embora, otimizando a versão em Java, ganhe-se umas 10 linhas, mas 50% mais em desempenho (ainda não coloquei essa versão no site, o Felipe Farinon participou dessa otimização, mas também não publicou essa versão final).
Uma pena que o mawk não tenha a função asorti, seria interessante ver a performance nele — via gawk demora quase o dobro do tempo do que a versão em python. O provavel motivo deve ser I/O + operações com Expressões Regulares, estou investigando. No fim das contas foi um bom exercicio :)
Rael, publica a versão optimizada!!
Tiago, eu vou publicar sim, só estou esperando uma “sincronização” com o Felipe, para que publiquemos juntos sem sermos injustos quanto aos créditos. Se você quiser, eu te mando por email (quem sabe você também não dá sugestões?)
Mas o ponto é bem o que você falou: I/O e expressões regulares.
Pode enviar sim :)
Muito bom. Independente de ter 17 ou 30 linhas, o código ficou bem limpo e funcional. Eu conheço pouco de GAWK, mas entendi perfeitamente. Aliás, de nada adianta fazer um código esmagado e confuso.
Parabéns e abraços :)