Como simular um vocabulário limitado de IA para um jogo de palavras?

14

Tenho vários jogos de palavras competitivos em andamento e, embora a preferência seja por (principalmente assíncrona) jogar contra outros oponentes humanos, eu gostaria de oferecer aos jogadores a opção de jogar contra uma IA. Eu tenho meu dicionário e posso fornecer facilmente o conhecimento completo do dicionário da IA ​​enquanto ele está jogando, mas minha preocupação é que ter a IA tocando regularmente palavras com as quais não estão familiarizados será uma experiência frustrante para os jogadores: 'Eu teria vencido esse jogo se tivesse usado palavras que eu conheço! - mesmo se o nível de habilidade geral da IA ​​estiver diminuído.

Prefiro criar uma IA mais fraca por meio de uma combinação de parâmetros de reprodução (des) ajustados e um vocabulário mais fraco - mas não sei como limitar esse vocabulário a palavras 'comuns'. Examinei várias listas de frequência de palavras (por exemplo, a lista de todas as palavras que aparecem nos livros do Project Gutenberg, classificadas por número de ocorrências), mas todas elas têm vários negativos negativos: palavras que todos sabem que simplesmente não sabem ' t aparece com qualquer frequência real (por exemplo, CHEETAH aparece com menos frequência nos textos do PG do que VOCATIVE ou SUTTEE). Tentei usar os resultados da pesquisa para obter estimativas da popularidade de uma palavra, mas elas também tendem a ter estimativas errôneas falsas e, é claro, isso '

Alguém tem sugestões sobre outros bons meios de determinar uma frequência aproximada do uso de palavras ou outras formas de limitar a IA de jogos de palavras que parecerão naturais para os jogadores?

Steven Stadnicki
fonte
6
você poderia deixar aprender! Toda vez que o jogador usa uma palavra que não "conhece", ele pode ter uma chance de 6/10 de aprender, caso contrário, ele aprende uma nova palavra aleatória! (Assim, geralmente ele aprenderá as palavras que o jogador conhece, mas, lentamente, as palavras que o jogador talvez não saiba (educação !!)). É claro que isso significaria que você precisaria de um "dicionário de IA" para cada jogador.
Joel

Respostas:

6

Acho que sua solução ainda seria usar uma lista de frequência de palavras. O Projeto Gutenberg pode não ser o ideal para você, pois contém principalmente textos mais antigos onde os direitos autorais expiraram, dando frequências estranhas para os falantes de inglês modernos. Eu acho que houve um tempo em que "vocativo" era na verdade uma palavra mais comum do que "chita" ...

Então, acho que a solução é encontrar a lista de frequências correta . Pesquisando um pouco, eu me deparei com as 5000 palavras mais usadas em todos os episódios de Simpsons, que podem ser um pouco mais atualizadas. Convém cruzar essa lista com um dicionário real, para ordenar palavras como "krabappel", por exemplo :)

Espero que ajude, estou empolgado em saber qual é a sua solução!

Mikael Högström
fonte
1
Minha forte impressão é que os problemas com 'palavras que todos sabem, mas ninguém usa' ainda persistem em qualquer dicionário, mas pode ser o melhor que posso fazer - e, é claro, há uma boa chance de os jogadores não até note as palavras fáceis que a IA não conhece, apenas as difíceis que ele conhece.
9119 Steven Stadnicki
+1 Você pode estar certo, mas por que isso? Geralmente me parece que as pessoas devem aprender as palavras que ouvem com frequência. Se você estiver correto, seria interessante saber o motivo ... :) Minha hipótese é que é por causa de um viés no corpus usado, como no caso do projeto Gutenberg, por isso estou seguindo a solução que você só precisa da lista de frequências correta.
Mikael Högström
5

Multidão fonte dele. Use todos os jogos multijogador que seus jogadores jogam para criar uma tabela de frequência de palavras. Acho que qualquer serviço de análise poderia ajudar a coletar e organizar esses dados. Você pode até ponderar as entradas pelo quão "bom" o jogador usando a palavra é.

PT
fonte
Eu gosto disso, mas ainda parece que está resolvendo o problema de 'atualização' em vez do problema de 'inicialização' (supondo, é claro, que eu queira iniciar os jogos multiplayer e solo lado a lado, o que é uma pergunta diferente inteiramente).
Steven Stadnicki 19/07/12
2

Comece com o vocabulário básico de acordo com o seu nível de IA. Por exemplo, deixe abaixo a sua lista de níveis de IA.

  • básico: vocabulário de 1000 palavras
  • média: vocabulário de 2000 palavras
  • difícil: vocabulário de 5000 palavras

Você pode escolher essas palavras nos seguintes sites que você pode ver na pesquisa do Google .

Esses sites darão suas palavras iniciais, mas acho que o google n-gramas pode ser a melhor escolha. De qualquer forma, não se preocupe muito com as suas palavras iniciais, com o mecanismo de atualização / adição explicado abaixo do seu dicionário de IA, que deve se endireitar de acordo com seus jogadores.

já que seus jogadores aprendem enquanto jogam, sua IA também deve aprender. Permita que ele aprenda as palavras mais usadas pelos seus oponentes.

Por exemplo, 10 pessoas que jogaram contra sua IA básica, elas usaram 100 palavras desconhecidas, ou seja, palavras que não estão no seu dicionário de IA. Escolha as palavras mais usadas e adicione-as ao seu dicionário básico de IA, também ao seu dicionário médio e rígido. Você também deve optar por atualizar algumas palavras que não são usadas no seu dicionário com as que as pessoas usam. Desta forma, o seu dicionário inicial será mais adequado ao conhecimento dos seus jogadores. Você pode começar com menos palavras / várias palavras diferentes, mas sua IA aprenderá enquanto joga contra humanos.

Você também pode considerar iniciar sua IA com o nível básico e atualizá-la para outros níveis somente quando aprender palavras suficientes.

Atilla Ozgur
fonte
Isso fornece uma maneira decente de atualizar o vocabulário, mas ainda deixa a questão da inicialização - de onde vêm esses vocabulários iniciais?
9608 Steven Stadnicki