terça-feira, 18 de novembro de 2008

Como funciona o Akinator, o Gênio!

Sei que já é um pouco velho (quase 1 mês já é velho na Web), mas quem não conhece, por favor conheça: Akinator

É um jogo que a partir de perguntas objetivas respondidas pelo usuário consegue "adivinhar" com uma precisão considerável em quem você estava pensando.

Uma pequena lista de quem o Gênio já adivinhou por aqui: biscoito falante do Shrek, bruxa do 71 (chaves), chupa-cabra, maísa (do SBT), wally (onde está wally?),  Bob (moleque do Caverna do Dragão), o um anel (Senhor dos Anéis) entre muitos outros (não sou tão vagabundo assim).

Aqui na faculdade ficamos discutindo que técnica/algoritmo eles usam pra fazer isso (nerd é dose).

A primeira intuição é a Árvore de Decisão, uma técnica que classifica um determinado objeto de entrada baseando-se nas respostas a perguntas objetivas.

Entretanto, mesmo que o usuário erre uma pergunta ainda é possível que o Gênio advinhe seu personagem escolhido. Um comportamento estranho a árvores de decisão.

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. Este é conceito é similar para problemas de classificação usando Support Vector Machine (ou só SVM).

Um detalhe é que no final ele mostra outras possíveis pessoas que ele poderia ter respondido. Ou seja, durante o jogo ele provavelmente guarda uma espécie de ranking das possíveis respostas.

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á-se pontos e depois ordena-se as pessoas. A resposta final é quem possui mais pontos.

Por último, vale relembrar que o banco de dados (gigantesco, aliás) é constantemente realimentando pelos próprios usuários, adicionando pessoas, perguntas e fotos. Então, a tendência é o jogo ficar cada vez mais completo e talvez mais preciso.

Não preciso dizer, também, que uma hora esse jogo vai ficar sem graça. Enquanto não fica, ficamos aqui brincando. Alguém arrisca um palpite de como ele é feito?

Leia também:

24 comentários:

Júlio disse...

todo mundo sabe que é um if pra cada combinação de respostas :P

faltou tu falar daquela outra idéia de que pode ser usando o modelo vetorial com as listas invertidas pras perguntas... achei essa suposição sensacional...

na minha opinião eh quase certo que use alguma técnica de Recuperação de Informação relacionada a classificação mesmo, mas eu digo isso pq não conheço praticamente nada de Inteligência Artificial aí não sei se pode usar alguma técnica nisso...

O que eu acho impressionante em RI é que existem muitas aplicações que a gente nem imagina, que podem ser feitas trazendo resultados muito bons como o desse jogo.

Uma outra pergunta muito pertinente pra esse jogo também seria que heurística ele usa pra escolher as perguntas, ou melhor, qual seria a melhor heurística?

Mau disse...

No começo achei legal o jogo, ele acertou Senna, Lula, Obama, mas aí eu procurei escolher personagens famosos e dúbios ao mesmo tempo, ele começou a errar sem parar, Marcello Mastroiane, Woody Allen, entre outros.

Felipe Hummel disse...

A idéia do vetorial e listas invertidas, é onde eu falo dos pontos, tentei falar de uma forma mais simples.

Eu acho q são coisas meio que separadas, a escolha de perguntas e o ranking de pessoas.

Mau, atores com poucas coisas distintas ou q vc nao sabe mt coisa sobre eles é dificil de acertar. Olhe os details depois de jogar pra saber oq vc respondeu errado pra nao aparecer oq vc pensou.

Caciano Kuffel disse...

Poxa ninguem vê que não se trata de programação?

Ele é um magico. do computador capz de ler a sua mente!

nanana...

shauhsuahsua

Felipe Hummel disse...

É Caciano, eu que to sendo mt bobo!
iueahuihaeae

Esse gênio é do capeta mesmo.

WiLL disse...

Humm, posso estar dando balão mas talvez use bando de dados e use instruções select pra isso, a cada pergunta uma cláusula "where" eh adicionada, acho q eh um método que daria mto trabalho de programação, mas acho q do ponto de vista lógico seria o mais simples de se implementar

Felipe Hummel disse...

Opa Will.

A sua solução é simples, mas ela é só uma forma de implementar uma árvore de decisão.

Abraço!

Guilherme Serrano disse...

Eu sou limitado com programação e pensei a mesma coisa que o Will... haha

Esse gênio é do capeta mesmo, eu chutaria em alguma tecnologia de leitura de mentes.

A idéia de pontuação é boa, talvez (só para complicar) uma mescla dos "wheres" da lista de decisão com essa coisa de pontos... poderia?

Os papos por aqui estão ficando cada vez mais complexos para quem não é desenvolvedor! hahaha

[]´s

Felipe Hummel disse...

Hehehe, tranquilo cara.

Na verdade a idéia da pontuação já subentende uns "wheres" hehehe. Os com pontuação baixa ou igual a 0 ficam de fora do ranking (que seria a mesma coisa do que tirar algumas possibilidades através do where)


Valeu pelos comentários.

Abraço

Francisco Amado disse...

Legal só no começo, mas, depois fica meio sem graça para passatempo é bom.

Vinicius disse...

Gente, é uma árvore de decisão usando um pouco de redes neurais. Percebe-se tambem que ele vai ampliando seu banco de conhecimentos.

Rafero disse...

Mas gente, tudo isso dá muito trabalho, sim, pra programar, mas é tudo "possível"... o mais sinistro dele é que ele já aplica os "conceitos" de pontuação (se for esse o método utilizado) nas sugestões inseridas.
não é um email que ele manda pro dono do site e esse dono insere na linguagem xD
a opção mais lógica seria mesmo o lance dos rankings, pra poder diferenciar um de outro, mas ainda assim tem alguma coisa a mais...

Anônimo disse...

A idéia de como o Akinator funciona me despertou muito interesse. Mas, não sou fã de programação. Eu andei pesquisando sobre o Akinator por outro motivo, que no fundo está relacionado com o seu funcionamento - a gerência do conhecimento, segundo o ITIL. Mas, não achei nenhum comentário a respeito. Talvez se tivéssemos a idéia de como funciona, ficaria mais fácil associar à gerência do conhecimento. Se alguém tiver alguma idéia, por favor se manifeste...

Valeu!!!

www.sempremaisestetica.com.br disse...

HUDSUHHUD muito legal!

post interessante.

olhem meu site: http://www.sempremaisestetica.com.br Ele tem várias promoções. Tudo sobre estetica... Desenvolvido pela Namp galera. Vlw.

Ana disse...

Hahahaha... o meu deu errado... XD
Não tem uma versão em português não!?!?!

Visita meu site:
Solviver PiscinasTrabalhamos com piscina de vinil, piscina de alvenaria,piscina de fibra e todos os produtos e acessórios para sua piscina (filtros,bomba,produtos químicos,spas,escadas,cascatas, iluminação, capas para piscinas,aquecedores...).
Sugestão: Sempre Mais Estética

Tiago Frossard disse...

Bom, eu sei que o artigo é velho e talz, mas não pude me conter com o convite final dele ;)

Pois então, o Akinator é o exemplo do que chamamos em Inteligência Artificial de Sistema Especialista. Ele sim é alimentado pelos usuários e seu funcionamento é muito parecido com o adestramento de um cão: quando o sistema não acerta, você passa mais informações para que ele consiga chegar à resposta correta. Quando ela não está no BD, você simplesmente alimenta-o com a resposta.

Eu escrevi um artigo sobre esse funcionamento, espero que seja útil para quem ainda tiver dúvidas quanto a ele. O link é http://nusseagora.blog.br/sobre-jogos-inteligencia-artificial-e-sistemas-especialistas-akinator-o-genio-da-internet/ Espero que gostem.

Anônimo disse...

Caraca eu as vezes acerto o personagem que a minha irmã está pensando a partir dessas perguntas bobas dele

Anônimo disse...

Caraca eu as vezes acerto o personagem que a minha irmã está pensando a partir dessas perguntas bobas dele

Henrique_GJ disse...

olha: faça o teste:

pense em mário, a segunda, ou a terceira pergunta que ele fará é: o seu personagem aparece nos jogos de mário?

pense no seu irmão, a segunda ou a terceira pergunta é: o seu personagem é filho da sua mãe?

isso não é tão simples assim não

Ponto Azul disse...

dãããã, ele usa o google neh, mto facil, nem sei como vcs nao pensaram nisso...

Samihra Chaves disse...

Interassante...penso nisso também em relação de como ele funciona...ele pode ir atraves de eliminações tipo de alternativas, pois o programa, pode se dizer o "arquivo" de alternativas e gigantesco como mesmo entao cada etapa vai eliminando...

Samihra Chaves
http://teatroemkt.blogspot.com/

joel disse...

me parece que a forma mais fácil é concatenar um seletor xpath de acordo com as respostas e buscar em um xml, não? :)

Felipe Hummel disse...

@joel

acredito que seria difícil. O número de combinações seria absurdamente gigante.
Para uma determinada pessoa a ser descoberta temos 20 questões e 5 possíveis respostas pra cada questão.
Isso gera 5 elevado a 20 caminhos diferentes de respostas.

Djefferson W. Silva disse...

"todo mundo sabe que é um if pra cada combinação de respostas :P" se era piada foi mt boa ! mas se não ...