Pesquisar

domingo, 10 de maio de 2009

Akinator, o Gênio da Internet

Para quem ainda não conhece, acesse o site e surpreenda-se:

http://pt.akinator.com/

É um site (ou jogo) que, a partir de perguntas objetivas respondidas pelo usuário, consegue deduzir com uma precisão considerável em quem o usuário está pensando.

Akinator possui uma certa programação de Inteligência Artificial, mas a pergunta é: qual a estrutura, o algoritmo adotado para que ele funcione desta forma?

Acredito que seja uma espécie de árvore organizada de tal forma que as respostas fiquem nas últimas folhas, fazendo com que cada resposta que o usuário dê caminhe um nível abaixo, até filtrar as possibilidades e restar apenas um para servir de resposta, esteja ela correta ou não. Claro que se o banco de dados do site não conter o personagem que o usuário pensou, a resposta será incorreta. É aí que entra a ajuda do internauta: Akinator, ao ser informado que errou, pede para o usuário falar em quem ele pensou; quando o usuário faz isso, o banco de dados é atualizado e na próxima vez que perguntarem sobre aquele personagem recém cadastrado, a resposta será correta!

Por exemplo: você pensou no Homem Aranha; ocasionalmente, Akinator pergunta se seu personagem é uma mulher e você responde "não", fazendo eliminar, digamos, metade das possíveis respostas do banco de dados, afinal nenhuma mulher será a resposta; assim o algoritmo, ao chegar em um nó que leva a uma mulher e a um homem com aquelas características já informadas pelo usuário, ele eliminará o caminho que leva à mulher e seguirá automaticamente para ao homem.

Segundo Felipe Hummel publicou em seu blog, "uma outra forma de enxergar o problema é que cada pessoa/personagem/coisa no jogo seja representado por um ponto num espaço n-dimensional onde cada dimensão representa a presença ou ausência de uma característica, se ele é careca ou se é americano, por exemplo. A cada pergunta respondida este espaço vai sendo restringindo".

Outra forma poderia ser dar "pontos" para as possíveis respostas. Por exemplo, se respondo a pergunta "Ele é negro?" com "sim", pode-se atribuir uma quantidade X de pontos a todos os negros do banco de dados. A cada pergunta dão-se pontos e depois se ordena as pessoas. A resposta final é quem possui mais pontos.

Algo óbvio é que o banco de dados de Akinator é gigantesco para possuir tamanho acervo de respostas relacionadas a tantos personagens que ele já respondeu! Mais complexo que ele, somente os chatterbots, que praticamente conversam com o usuário.