Peter Norvig, Diretor de Pesquisas da Google, escreveu um artigo explicando, de forma básica, como funciona o corretor ortográfico usado no Google (quando você digita errado e aparece a frase “Você quis dizer X?”).

Norvig também mostrou uma implementação do que ele chamou de um “corretor ortográfico de brinquedo”, pois como podemos imaginar, as ferramentas usadas por Google, Yahoo e Microsoft provavelmente usam técnicas avançadas. Porém, o artigo e o código que o Norvig mostrou já são um bom exemplo de como tudo funciona.

Bem, após ler o artigo, fiquei com uma coceira enorme atrás da orelha para tentar fazer uma versão em Java do algoritmo, com 2 intuitos: entender o algoritmo melhor e também melhorar meus conhecimentos sobre Python (a linguagem que Norvig usou para sua versão).

Fiz, e está no link que vocês podem ver no topo inferior do menu: Java Spelling Corrector.

Depois de reler meu código umas 500 vezes, percebi que eu podia ir enxugando o mesmo, e a versão final ficou com 45 linhas. Nada mal para uma linguagem declarativa e estaticamente tipada como Java… mas o que ficou legal foi o desempenho: no meu notebook, cerca de 2 segundos para dar a resposta (para chegar a resposta, um arquivo com mais de 6 megas de texto é lido e classificado, palavra por palavra).

Mandei um email para o Peter Norvig mostrando o que fiz, mas ele estava de férias. Ontem ele me respondeu, e além de receber um “Good Job!”, ele fez a gentileza de criar um link para minha implementação no artigo original (veja o final do artigo, com o link para outras linguagens).