在这种情况下可以采取什么方法?
一种简单的方法:
根据手指位置给每个字母打分。对于 shift 键可以添加修改器或乘数。也许还可以减少重复字母的分数?
将单词的分数相加,就可以得到一种方法。
测试并根据需要修改分数,反复进行直到获得有意义的分布。
你可以尝试一种非常基本的方法,即为可能键入的每个键分配一个值,并简单地将要评估的单词的所有键的值相加...
纯粹基于按键间的距离,使用按键表计算距离,并累加距离。
作为基础,您可以为每个键分配一个难度评级,然后将这些评级相加。
接下来,您可能想要识别出难以打字的手指模式。例如,“sle”组合比“sfe”更难,因为前者是左-右-左的组合。对于大脑来说,协调左右手之间的动作比协调同一只手上的手指更困难,因为左右手分别连接到大脑的两个半球。在这种组合中,常常会按错键。
单词的常见程度也会影响难度。常见的单词被打得更频繁,因此大脑学习了它们的模式。当一个单词包含一个常见单词时,它更容易打字,比如“hand”,因为它包含“and”。另一方面,仅包含更常见单词的一部分的单词变得更难打,因为大脑想要遵循更常见的模式。
打字难度非常主观 - 这就像学习演奏乐器一样,对于一个人来说很难打的单词对于另一个人来说可能轻而易举。例如,让一个从未坐在键盘前的人打出“Microsoft”这个单词,他们会猎字式地敲击键盘,可能需要几秒钟才能打出来。而对于每天打几十次这个单词的普通程序员来说,他们会在不到一秒钟的时间内迅速打出来。
另一方面,让第一个人打出“Microscope”这个单词,他们可能需要和打“Microsoft”一样长的时间,但程序员会在打到“s”的时候要么把整个单词打成“Microsoft”,然后再删除并替换正确的字符,要么在按下“s”键时明显变慢,因为他们的手指不知道“Microscope”的模式 - 实际上,我刚刚不得不打了3遍,因为我的手指自动完成了模式,而我没有意识到。
因此,就单词复杂性而言,它并不像计算距离那么简单,它取决于打字者的背景环境、他们通常的打字速度、他们对键盘的熟练程度以及其他一系列因素。
不要猜测,量化它。
列出100个单词清单,请少数人将其打入计算机。测量每次按键之间的时间。对于每对字母,累计用户从第一个字母移动到第二个字母所需的总时间,并除以该字母对出现的次数,得到平均值,这是两个键之间实际难度的直接估计。
当然,有些字母对在你的单词中根本不存在(例如ZQ)。但是,这些字母对可能与您的工作无关,除非您需要评分随机字母序列。
您还需要某种方式来解决打错字母的问题。您可以将这些字母舍弃,或者使用打错的字母来为该字母对添加某种惩罚(反映打错一个字母表示该字母对可能难以输入)。