如何为文字游戏模拟有限的AI词汇?


14

我正在进行一些竞争性的文字游戏,尽管偏爱与其他人类对手进行游戏(大多数是异步的),但我想为玩家提供对抗AI的选择。我有我的字典,可以在播放过程中轻松地向AI提供完整的字典知识,但是我担心的是,让AI定期播放他们不熟悉的单词会给玩家带来沮丧的体验:“我会赢得这场比赛如果只是用我知道的话!-即使AI的整体技能水平被调低了。

我宁愿通过(未)调整的游戏参数和较弱的词汇组合来创建较弱的AI,但我不确定如何将词汇限制为“常用”单词。我看过几个单词出现频率列表(例如,出现在古腾堡计划书中的所有单词的列表,按出现的次数排序),但它们都有很多假否定词:每个人都知道的单词根本不会t以任何实际频率显示(例如,CHEETAH在PG文本中的显示频率低于VOCATIVE或SUTTEE)。我尝试使用搜索结果来估算单词的受欢迎程度,但它们也往往容易出现虚假的错误估算,当然,

是否有人对确定单词使用频率粗略的其他好方法或限制玩家觉得自然的其他限制文字游戏AI的方法提出建议?


6
你可以让它学习!玩家每次使用不认识的单词时,都有6/10的机会学习它,否则它将学习一个新的随机单词!(因此,通常是学习玩家知道的单词,而慢慢地带出玩家可能不认识的单词(教育!)。)当然,这意味着您需要为每个玩家提供“ AI词典”。
乔尔2012年

Answers:


6

我认为您的解决方案仍然是使用一些单词频率列表。古腾堡计划可能不适合您,因为它主要包含版权已过期的较旧的文本,这给现代英语使用者带来了奇怪的频率。我想曾经有一段时间,“呼唤”实际上是比“猎豹”更常用的词...

因此,我认为解决方案是找到正确的频率列表。搜寻一下让我在所有Simpsons情节中迷失了5000个最常用的单词,这可能是最新的。您可能想要对照真实的词典交叉引用此列表,尽管例如可以对“ krabappel”之类的单词进行分类:)

希望能对您有所帮助,我很高兴听到您使用的解决方案!


1
我的强烈印象是,“任何人都知道但没有人使用的单词”的问题仍然会在任何词典中继续存在,但这可能是我所能做的最好的事情-当然,玩家很有可能不会甚至注意到AI不知道的简单单词,只是它知道的简单单词。
史蒂文·斯塔德尼基

+1您可能是对的,但是为什么呢?一般来说,在我看来,人们应该学习他们经常听到的单词。如果您是正确的话,那么知道原因是很有意思的.. :)我的假设是,这是因为使用的语料库存在偏差,例如在Gutenberg项目的情况下,所以我坚持使用您只需要正确的频率列表。
MikaelHögström,2012年

5

众包它。使用您的玩家玩过的所有多人游戏来建立词频表。我认为任何分析服务都可以帮助收集和整理这些数据。您甚至可以根据使用该单词的玩家的“好”程度来加权条目。


我喜欢这个,但仍然感觉像是在解决“更新”问题而不是“启动”问题(当然,假设我想同时启动多人游戏和单人游戏,这是一个不同的问题完全)。
史蒂文·斯塔德尼基

2

根据您的AI水平从基本词汇开始。例如,下面是您的AI级别列表。

  • 基本:1000字词汇
  • 平均:2000单词词汇
  • 艰苦:5000个单词的词汇

您可以从以下可通过google搜索看到的网站中选择这些单词。

这些网站将为您提供一个开始的词,但我认为Google n-gram可能是更好的选择。无论如何,您不必太担心您的开始单词,下面将解释更新/添加机制,您的AI词典应根据您的玩家调直自己。

由于您的玩家在玩游戏时会学习,因此您的AI也应该学习。让它学习对手最常用的单词。

例如,有10个人与您的AI基础知识对战,他们使用了100个未知单词,即不在您的AI词典中的单词。选择最常用的单词,并将它们添加到基本的AI词典中,再添加到您的普通词典和硬词典中。您还应该选择使用人们使用的单词来更新词典中未使用的某些单词。这样,您的入门词典将更适合您的玩家知识。您可以从较少的单词开始/换成不同的单词,但是您的AI会在与人类对抗时学习。

您还可以考虑从基本级别开始启动AI,然后仅在学习了足够多的单词时才将其升级到其他级别。


这为更新词汇表提供了一种不错的方式,但仍然存在启动问题-这些初始词汇表是从哪里来的?
史蒂文·斯塔德尼基
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.