Comment puis-je simuler un vocabulaire AI limité pour un jeu de mots?

14

J'ai une petite poignée de jeux de mots compétitifs en cours, et bien que la préférence soit pour le jeu (principalement asynchrone) contre d'autres adversaires humains, j'aimerais offrir aux joueurs la possibilité de jouer contre une IA. J'ai mon dictionnaire et je peux facilement donner à l'IA une connaissance complète du dictionnaire pendant qu'il joue, mais ma préoccupation est que le fait que l'IA joue régulièrement des mots qu'ils ne connaissent pas sera une expérience frustrante pour les joueurs: `` J'aurais gagné ce jeu si elle venait d'utiliser des mots que je connais! - même si le niveau de compétence global de l'IA est diminué.

Je préfère créer une IA plus faible grâce à une combinaison de paramètres de jeu (non) réglés et d'un vocabulaire plus faible - mais je ne sais pas comment limiter ce vocabulaire aux mots `` courants ''. J'ai regardé plusieurs listes de fréquence de mots (par exemple, la liste de tous les mots qui apparaissent dans les livres du Projet Gutenberg, triés par nombre d'occurrences) mais ils ont tous un certain nombre de faux négatifs: des mots que tout le monde sait et qui ne font tout simplement pas '' t apparaître avec une fréquence réelle (par exemple, CHEETAH apparaît moins fréquemment dans les textes PG que VOCATIVE ou SUTTEE). J'ai essayé d'utiliser les résultats de recherche pour obtenir des estimations de la popularité d'un mot, mais ils ont également tendance à être sujets à de fausses estimations erronées, et bien sûr, il '

Quelqu'un a-t-il des suggestions sur d'autres bons moyens de déterminer une fréquence approximative d'utilisation des mots, ou d'autres moyens de limiter l'IA des jeux de mots qui sembleront naturels aux joueurs?

Steven Stadnicki
la source
6
vous pourriez le laisser apprendre! Chaque fois que le joueur utilise un mot qu'il ne "connaît pas", il pourrait avoir 6/10 chances de l'apprendre, sinon il apprend un nouveau mot au hasard! (Ainsi, il s'agit généralement d'apprendre des mots que le joueur connaît, tout en faisant lentement ressortir des mots que le joueur pourrait ne pas (éducation !!)) Bien sûr, cela signifierait que vous auriez besoin d'un "dictionnaire AI" pour chaque joueur.
Joel

Réponses:

6

Je pense que votre solution serait toujours d'aller avec une liste de fréquence de mots. Le projet Gutenberg n'est peut-être pas celui qu'il vous faut, car il contient principalement des textes plus anciens où le droit d'auteur a expiré, donnant des fréquences étranges pour les anglophones modernes. Je suppose qu'il fut un temps où "vocatif" était en fait un mot plus couramment utilisé que "guépard" ...

Je pense donc que la solution est de trouver la bonne liste de fréquences. En cherchant un peu, je suis tombé sur les 5000 mots les plus utilisés dans tous les épisodes des Simpsons, ce qui pourrait être un peu plus à jour. Vous voudrez peut-être croiser cette liste avec un vrai dictionnaire pour trier des mots comme "krabappel" par exemple :)

J'espère que cela vous aide, je suis ravi d'entendre la solution avec laquelle vous allez!

Mikael Högström
la source
1
Ma forte impression est que les problèmes avec les «mots que tout le monde connaît mais que personne n'utilise» vont persister avec n'importe quel dictionnaire, mais c'est peut-être le mieux que je puisse faire - et bien sûr, il y a de fortes chances que les joueurs ne le fassent pas remarquez même les mots faciles que l'IA ne connaît pas, juste les mots durs qu'elle fait.
Steven Stadnicki
+1 Vous avez peut-être raison, mais pourquoi? En général, il me semble que les gens devraient apprendre les mots qu'ils entendent souvent. Si vous avez raison, il serait intéressant de connaître la raison ... :) Mon hypothèse serait que c'est à cause d'un biais dans le corpus utilisé, comme dans le cas du projet Gutenberg, donc je m'en tiens à la solution vous avez juste besoin de la bonne liste de fréquences.
Mikael Högström
5

La foule l'approvisionne. Utilisez tous les jeux multi-joueurs auxquels vos joueurs jouent pour créer une table de fréquence de mots. Je pense que n'importe quel service d'analyse pourrait aider à collecter et à organiser ces données. Vous pouvez même pondérer les entrées en fonction de la «qualité» du joueur utilisant le mot.

PT
la source
J'aime ça, mais j'ai toujours l'impression que cela résout le problème de la mise à jour plutôt que le problème du démarrage (en supposant, bien sûr, que je veux lancer les jeux multijoueur et solo côte à côte, ce qui est une question différente entièrement).
Steven Stadnicki
2

Commencez avec un vocabulaire de base en fonction de votre niveau d'IA. Par exemple, laissez ci-dessous est votre liste de niveau AI.

  • de base: 1000 mots de vocabulaire
  • moyenne: 2000 mots de vocabulaire
  • dur: 5000 mots de vocabulaire

Vous pouvez choisir ces mots parmi les sites Web suivants que vous pouvez voir avec la recherche Google .

Ces sites vous donneront vos premiers mots mais je pense que google n-grammes peut être un meilleur choix. Quoi qu'il en soit, ne vous inquiétez pas trop de vos mots de départ, avec le mécanisme de mise à jour / ajout expliqué ci-dessous, votre dictionnaire d'IA devrait se redresser en fonction de vos joueurs.

puisque vos joueurs apprennent en jouant à ce jeu, votre intelligence artificielle devrait aussi apprendre. Permettez-lui d'apprendre les mots les plus utilisés par leurs adversaires.

Par exemple, 10 personnes ont joué contre votre base AI, elles ont utilisé 100 mots inconnus, c'est-à-dire des mots qui ne sont pas dans votre dictionnaire AI. Choisissez les mots les plus utilisés et ajoutez-les à votre dictionnaire d'IA de base, également à votre dictionnaire moyen et difficile. Vous devez également choisir de mettre à jour certains mots qui ne sont pas utilisés dans votre dictionnaire avec des mots que les gens utilisent. De cette façon, votre dictionnaire de départ sera plus adapté aux connaissances de vos joueurs. Vous pouvez commencer avec moins de mots / tas de mots différents, mais votre IA apprendra pendant qu'elle joue contre les humains.

Vous pouvez également envisager de démarrer votre IA avec un niveau de base et de la mettre à niveau vers d'autres niveaux uniquement lorsqu'elle a appris suffisamment de mots.

Atilla Ozgur
la source
Cela donne un moyen décent de mettre à jour le vocabulaire, mais cela laisse toujours la question de démarrage - d'où viennent ces vocabulaires initiaux?
Steven Stadnicki