确定一个英文单词的难度

25

我正在开发一个单词游戏。我的单词数据库包含大约10,000个英文单词(按字母顺序排序)。我计划在游戏中有5个难度级别。第1级显示最简单的单词,第5级则相对较难。

我需要将这个长达10,000个单词的列表分成5个级别,从最简单的单词到最困难的单词。我正在寻找一个程序来帮助我完成此任务。

有人能告诉我是否有一种算法或方法可以定量衡量英语单词的难度吗?

我考虑使用“单词长度”和“单词频率”作为因素,并想出一个公式或类似的东西来完成此任务。


4
你需要更详细地解释一下什么是“词汇难度”,对于你来说它意味着什么。 - CharlesB
这实际上取决于你所说的“难度”是什么意思。玩家需要与单词做什么?猜拼写,猜含义,从字谜中找出答案? - Flynn1179
12
"承诺" 对许多男性来说是一个困难的词,这是否是一个好标准? - Lasse V. Karlsen
嗯,我知道没有一种通用的方法来宣布一个单词是容易还是困难的,这在很大程度上是主观的。但平均而言,你会认为单词“ABEYANCE”比“ABNORMAL”更难。也许我们可以以常见使用频率为基础? - Techtwaddle
@Flynn1179 这个游戏叫做混乱字母。玩家需要将所有字母按正确的顺序排列,组成单词。 - Techtwaddle
2
@Techtwaddle 在你的情况下,使用频率是一个很好的度量标准,前提是你能够获得所有单词的这个度量标准(例如,你可以使用谷歌返回的结果数量作为代理)。否则,你可以大致使用单词长度,并让你的游戏从玩家的错误中学习(即,如果玩家猜一个单词需要最长/最多的尝试次数,则你将增加该单词“难度”的权重)。 - Paolo Falabella
13个回答

13

获取大量文本语料(例如从古腾堡档案馆),进行直接频率分析并检查结果。如果结果不令人满意,则使用其Flesch-Kincaid得分对每个文本进行加权处理,然后再次运行分析 - 在“困难”的文本中频繁出现的单词将获得得分提升,这正是所需的。

但是,如果您只有10000个词,那么只进行频率排序作为第一步通常会更快,并且可以手动调整结果。


7

我不理解频率是如何被使用的...如果你浏览一份报纸,我确定你会看到单词"thoroughly"比单词"bop"或者"moo"出现的频率要高得多,但这并不意味着它更容易;相反,“thoroughly”是最令小学生感到噩梦的拼写异常之一...

试着向一个学习英语作为第二语言的正常人解释slaughter和laughter之间微妙的区别。


2
哦耶!然后(在发音方面)为什么“sheath/sheathe wreath/wreathe”可以这样拼写,但是“breath/breathe”却不行呢? - bugmagnet
谢谢您提醒我们!严格来说,这应该是一条评论,而不是回答问题。祝好! - Nicolas Raoul
一些有意义语料库的子集中某些词语出现不频繁或不存在并不重要。关键是要有足够的样本材料进行全面的提取。 - chemturion

3

众包答案。

  • 创建一个在线的“游戏”,随机列出10个单词。
  • 让玩家将它们拖放到最容易-最困难的位置,并在复选框中打勾表示玩家是否听说过这个单词。
  • 对每个实验结果应用排名算法(例如ELO)。
  • 重复进行。

甚至可能很有趣,您可以在最后得到一份语言熟练度评分。


3

我认为使用频率是最可能的度量标准;有研究支持单词频率和难度(测试的正确回答等)之间存在高度相关性。请查看英语词汇项目,其中包含约70k个频率评级的单词:http://elexicon.wustl.edu/


3
有研究吗?←链接? :-) - Nicolas Raoul

1

有几个因素与单词难度相关,包括习得年龄、形象性、具体性、抽象性、音节、频率(口语和书面语)。还有一些心理语言学数据库可以根据这些因素中的至少一些搜索单词。(只需搜索“心理语言学数据库”即可。)


OP特别要求算法,而不是数据库。 - RHA

1

词频是一个明显的选择(当然不是完美的)。您可以在这里下载谷歌n-grams V2 链接, 这是根据创作共用署名3.0未本地化许可证授权。

格式: ngram TAB 年份 TAB 匹配次数 TAB 页面数量 TAB 体积数量 NEWLINE

示例:

enter image description here

使用的语料库(来自Lin, Yuri等人。 "谷歌图书ngram语料库的句法注释。" ACL 2012系统演示会议论文集。计算语言学协会,2012年。):

enter image description here


1

难度是一个相当模糊的概念。如果你不清楚自己想要什么,也许可以看一下Porter Stemming Algorithm(例如参考原始论文)。该算法通过将单词定义为形式为[C](VC){m}[V]的形式来包含更高级别的“长度”概念;其中C表示辅音块,V表示元音块,该定义表明一个单词是可选的C后跟m个VC块,最后是可选的V。这里的m值就是这种高级“长度”。


这篇论文是关于“后缀剥离算法”的。如果您认为“CONNECTIONS”的复杂度应该与“CONNECT”的复杂度相同,那么它可能作为第一步非常有用。但是,它不会计算未加后缀的单词本身的复杂度,因此它只能作为第一步。 - Nicolas Raoul
我的建议是使用m值作为复杂度的粗略衡量标准,而不是采用词干。 CONNECTIONS和CONNECT的m值并不相同。 - borrible

1

根据游戏类型,“难度”的定义会有所不同。如果你的游戏需要快速打字(类似ztype),那么“难度”将与需要定义单词含义的游戏中的意思不同。

话虽如此,Scrabble有一种衡量单词“难度”的方法,这也很容易进行算法处理。

此外,您可以考虑根据您的游戏来定义“难度”。您可以对游戏进行测试,并根据玩家在您自己的游戏环境中发现的单词“难度”分类。


我正在开发的游戏是乱序单词。玩家需要按照正确顺序排列字母以形成单词。是的,我认为类似于Scrabble的得分系统会很适合这个游戏。 - Techtwaddle

0
我猜单词被引入普通学生词汇的年级是难度的一种衡量方式。其次是它有多少标准规则违例。这意味着你的单词拼写或发音似乎违反了正常的规则集。最后...意思...可能是一个棘手的概念。例如...试着向从未听过这个词的人解释抽象概念。

1
哈哈,这个可能已经有编译好的评级列表了...只需要找到它。 - DiscipleMichael

0

不过我对他们的算法一无所知,但有一个API可以返回1-10级别的单词难度:TwinWord API

不过我自己从未使用过这个API。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接