估算单词复杂度的算法

6
我需要为打字员估算单词的难度。 例如,“suffer”比“people”容易,因为“o”和“p”比“e”和“r”更难打。 小指按下的任何键都比食指更难按。 从基本位置移动手指比不移动更难。 使用Shift键也增加了难度。
在这种情况下可以采取什么方法?

1
你还应该考虑到,左右手交替输入的单词比大部分只用一只手打字的单词更容易输入。 - Instance Hunter
8个回答

15
我建议您查看Carpalx网站。该网站详细介绍了他们如何评估打字员的不同键盘布局,并且已经有一些开源软件可以实现他们的算法来适应任何给定的键盘布局。(请务必查看打字努力, 模型参数键盘评估 部分。)

4

一种简单的方法:

根据手指位置给每个字母打分。对于 shift 键可以添加修改器或乘数。也许还可以减少重复字母的分数?

将单词的分数相加,就可以得到一种方法。

测试并根据需要修改分数,反复进行直到获得有意义的分布。


重复的字母,是的,又来了一个。 - A1exandr Belan

2
你可以将键盘的2D表示形式保存在一个数组中,作为连接图,其中键名和坐标作为节点,并且有两个坐标指示你的手悬停位置(大约在F和J附近)。然后对于每个输入键,计算它在图中到你的2个“悬停键”的距离,取最小值,加上Shift(Caps)惩罚,并输出一个(可能加权的)分数。

不仅F和J键是悬停键,ASD和KL键也是悬停键。但还是谢谢。 - A1exandr Belan

1

你可以尝试一种非常基本的方法,即为可能键入的每个键分配一个值,并简单地将要评估的单词的所有键的值相加...


1

纯粹基于按键间的距离,使用按键表计算距离,并累加距离。


1

作为基础,您可以为每个键分配一个难度评级,然后将这些评级相加。

接下来,您可能想要识别出难以打字的手指模式。例如,“sle”组合比“sfe”更难,因为前者是左-右-左的组合。对于大脑来说,协调左右手之间的动作比协调同一只手上的手指更困难,因为左右手分别连接到大脑的两个半球。在这种组合中,常常会按错键。

单词的常见程度也会影响难度。常见的单词被打得更频繁,因此大脑学习了它们的模式。当一个单词包含一个常见单词时,它更容易打字,比如“hand”,因为它包含“and”。另一方面,仅包含更常见单词的一部分的单词变得更难打,因为大脑想要遵循更常见的模式。


1

打字难度非常主观 - 这就像学习演奏乐器一样,对于一个人来说很难打的单词对于另一个人来说可能轻而易举。例如,让一个从未坐在键盘前的人打出“Microsoft”这个单词,他们会猎字式地敲击键盘,可能需要几秒钟才能打出来。而对于每天打几十次这个单词的普通程序员来说,他们会在不到一秒钟的时间内迅速打出来。

另一方面,让第一个人打出“Microscope”这个单词,他们可能需要和打“Microsoft”一样长的时间,但程序员会在打到“s”的时候要么把整个单词打成“Microsoft”,然后再删除并替换正确的字符,要么在按下“s”键时明显变慢,因为他们的手指不知道“Microscope”的模式 - 实际上,我刚刚不得不打了3遍,因为我的手指自动完成了模式,而我没有意识到。

因此,就单词复杂性而言,它并不像计算距离那么简单,它取决于打字者的背景环境、他们通常的打字速度、他们对键盘的熟练程度以及其他一系列因素。


1
我明白了,谢谢。 但这是为那些擅长触摸打字的人进行测量,而不是新手。 - A1exandr Belan

1

不要猜测,量化它。

列出100个单词清单,请少数人将其打入计算机。测量每次按键之间的时间。对于每对字母,累计用户从第一个字母移动到第二个字母所需的总时间,并除以该字母对出现的次数,得到平均值,这是两个键之间实际难度的直接估计

当然,有些字母对在你的单词中根本不存在(例如ZQ)。但是,这些字母对可能与您的工作无关,除非您需要评分随机字母序列。

您还需要某种方式来解决打错字母的问题。您可以将这些字母舍弃,或者使用打错的字母来为该字母对添加某种惩罚(反映打错一个字母表示该字母对可能难以输入)。


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