我正在开发一个基于单词的游戏。我的单词数据库包含大约 10,000 个英文单词(按字母顺序排序)。我计划在游戏中设置 5 个难度级别。相对而言,1 级显示最简单的单词,5 级显示最难的单词。
我需要将 10,000 长单词列表分成 5 个级别,从最简单的单词开始到最难的单词。我正在寻找一个程序来为我做这件事。
有人可以告诉我是否有一种算法或方法可以定量测量英语单词的难度?
我有一些想法围绕使用“词长”和“词频”作为因素,并提出一个公式或实现这一点的东西。
获取大量文本语料库(例如来自 Gutenberg 档案),进行直接频率分析,然后观察结果。如果它们看起来不令人满意,请使用其Flesch-Kincaid分数对每个文本进行加权,然后再次运行分析 - 频繁出现但在“困难”文本中的单词会得到分数提升,这就是你想要的。
但是,如果您只有 10000 个单词,那么将频率排序作为第一遍然后手动调整结果可能会更快。
我不明白频率是如何被使用的......如果你要扫描报纸,我相信你会看到“彻底”这个词比“bop”或“moo”这个词更频繁地被提及,但这并没有'这并不意味着它是一个更容易的词; 相反,“彻底”是最令人作呕的荒谬拼写异常之一,让小学生做噩梦……
试着向一个理智的人解释把英语作为第二语言学习屠杀和笑声之间的细微差别。
我同意使用频率是最可能的指标;有研究支持词频和难度之间的高度相关性(测试中的正确反应等)。查看http://elexicon.wustl.edu/上的英语词典项目,了解一些 70k(?) 频率等级的单词。
众包答案。
玩起来甚至可能很有趣,最后你可以获得语言能力分数。
难度是一个非常模糊的概念。如果您不清楚自己想要什么,也许您可以看一下Porter Stemming Algorithm(例如参见原始论文)。通过将单词定义为形式,它包含了更高级的“长度”概念[C](VC){m}[V]
;C 表示辅音块,V 表示元音块,这个定义说一个词是一个可选的 C,后面跟着m个 VC 块,最后是一个可选的 V。m值是这个高级的“长度”。
根据游戏类型,“困难”的定义会发生变化。如果您的游戏涉及快速打字(ztype -style...),“困难”的含义将与您需要定义单词含义的游戏中的含义不同。
也就是说,Scrabble 有一种方法可以衡量一个单词的“难度”程度,这在算法上也很容易。
你也可以考虑根据你的游戏来定义“困难”。您可以对您的游戏进行 beta 测试,并根据“困难”玩家在您自己的游戏环境中如何找到它们来对单词进行分类。
有几个因素与单词难度有关,包括习得年龄、形象性、具体性、抽象性、音节、频率(口语和书面)。还有一些心理语言学数据库将通过至少其中一些因素来搜索单词。(只需搜索“心理语言学数据库”。
词频是一个显而易见的选择(当然不是完美的)。您可以在此处下载 Google n-grams V2 ,它是根据 Creative Commons Attribution 3.0 Unported License 获得的许可。
格式:ngram TAB year TAB match_count TAB page_count TAB volume_count NEWLINE
例子:
使用的语料库(来自 Lin、Yuri 等人。“ Google 图书 ngram 语料库的句法注释。 ”Proceedings of the ACL 2012 system demos. Association for Computational Linguistics, 2012.):
在他关于拼写纠正的文章中,Peter Norvig使用字典来计算每个单词的出现次数(从而确定它们的频率)。
你可以用它作为垫脚石:)
此外,频率对难度的影响可能超过长度……您必须为此对游戏进行 Beta 测试。
词长是一个很好的指标,对于词频,你需要数据,因为算法显然不能自己确定。你也可以像拼字游戏一样使用某种评分:每个字母都有一个值,最终值将是这些值的总和。在您的语言中找到每个字母的频率数据会更容易。
除了Flesch-Kincaid等指标外,您还可以尝试基于Dale-Chall可读性公式的方法,使用特定能力水平的读者熟悉的单词列表。
许多可读性公式的实现包含用于估计单词中音节数量的代码,这也可能很有用。
我猜想这个词被引入普通学生词汇的等级是衡量难度的标准。接下来是它有多少违反标准的规则。意思是您的单词的拼写或发音似乎违反了正常的抵消规则。最后..意思..可能是一个艰难的概念。..例如...尝试向从未听过这个词的人解释摘要。
在不声称对他们的算法一无所知的情况下,有一个返回 1-10 级单词难度的 API:TwinWord API
不过,我自己从未使用过它。