我正在寻找一种相当简单的算法来确定在QWERTY布局上输入单词的难度。
单词不一定是字典单词,因此通常输入错误单词等的列表不是一种选择。我敢肯定必须有一个现有的,经过良好测试的算法,但我找不到任何东西。
有人可以提供任何帮助或建议吗?我在python中编写算法,但欢迎任何其他语言或伪代码。
答案 0 :(得分:5)
QWERTY,Colemak和Dvorak布局之间存在this comparison,它使用Java中的源代码计算键入的键之间的距离,同一只手上的键的百分比等。这些指标的组合应该可以很好地估计单词的“可键入性”。
答案 1 :(得分:1)
取出你的Scrabble套装,记下每个字母的分数,一个单词的分数总和,嘿你有算法。不确定它是否完全满足您的要求,但它可能会指向您有用的方向。例如,您可能不仅要将分数分配给单个字母,还要分配给二分和三分。
我不知道您需要的任何现有信息来源,也许您可以通过检查键盘并为更难的字母分配更高的分数来得出您自己的字母分数:因此1代表'a',8 'q',2代表'm',等等。
编辑:当我回复SO时,我似乎比平常更困惑别人。以下是我提案的准系统:a)列出所有以英语(或您的语言)出现的三元组和双字母组。为他们每个人分配一个难以打字的分数。对单个字母执行相同的操作(毕竟一个4个字母的单词可能由一个三字母和一个字母而不是两个字母组成)。
b)将键入单词的难度评为键入其组件的难度之和。
至于难度分数,我没有线索,但你可以从1开始,键盘上的主页键上的字母,2表示使用食指但不是主键的字母,3用于手上使用第2或第3根手指的字母,依此类推。然后对于digrams,按顺序在左右(或右和左)的简单字母得分低,一方面按顺序高难度字母(例如qz,尽管这可能对英语无效)。你去吧。
答案 2 :(得分:1)
我没有提出任何算法,但有一些提示:
我用双手打字,这意味着键盘大致分成两半,我经常在两只手之间有协调问题,这意味着每个人都按照“正确”的顺序输入字母但是交错是错误的。如果一只手的字母数量多于另一只手,则尤其如此:“the”因为左手类型t
和e
以及右手类型h
。
“滑倒”是经常发生的,这意味着通常会有时间错过钥匙而打到另一个钥匙; “添加”/“删除”也很频繁,即输入一个补充密钥或者没有足够的推动 - >这意味着(显然)那里的字母越多,说出的话就越难。
混合箱使其变得更难,它需要在按下CAPS和按键之间进行同步,因此附近的钥匙很可能没有正确的大写/小写。
希望这会有所帮助......
答案 3 :(得分:0)
我认为,manhatten distances算法可能与您所看到的最接近。该算法以四边形方式考虑目标与源的距离。
至于python中的实现,对于你在QWERTY中的特殊需求,你必须自己编写一个,否则如果你谷歌搜索“python中的n拼图解决方案”,可以找到很少的manhatten距离实现