【问题标题】:Determining how difficult a word is to type on a QWERTY keyboard确定在 QWERTY 键盘上键入单词的难度
【发布时间】:2011-05-26 10:51:43
【问题描述】:

我正在寻找一种相当简单的算法来确定在 QWERTY 布局上键入单词的难度。

这些词不一定是字典词,因此不能选择常见错误输入词或类似词的列表。我确信一定有一个现有的、经过充分测试的算法,但我找不到任何东西。

谁能提供任何帮助或建议?我正在用 python 编写算法,但欢迎使用任何其他语言或伪代码。

【问题讨论】:

  • 如果您了解 Dvorak 键盘背后的逻辑,也许会对您有所帮助。
  • 一个粗略的解决方案是获取有关输入错误的数据(讨论stackoverflow.com/questions/1801647/…)并计算出每个键的错误率。这是有问题的,因为拼写错误通常是上下文相关的(换位、相似词之间的混淆、共同结尾等)。考虑到一些上下文,您可以改为使用 2-grams(每个键的错误率跟随其他键)。

标签: python algorithm qwerty


【解决方案1】:

QWERTY、Colemak 和 Dvorak 布局之间有this comparison,它用Java 源代码计算键入的键之间的距离、同一只手上的键的百分比等。这些指标结合起来应该可以很好地估计单词的“可打字性”。

【讨论】:

  • 僵尸化了这个线程!那是一个死链接-碰巧知道源代码是否仍然存在于任何地方?
  • @AlexanderLucas 我知道这已经晚了,但是回路机存档了链接的工作版本here
【解决方案2】:

我没有任何算法要提出,但有一些提示:

  • 我用双手打字,这意味着键盘大致分成两半,我经常出现两只手之间的协调问题,这意味着每个人都按“正确”的顺序键入字母,但交错是错误的。如果一只手要输入的字母比另一只手要多,则尤其如此,典型的是:“the”,因为左手输入 te,右手输入 h

  • “slips”很频繁,这意味着一个人经常会错过一个键而去敲另一个键; “添加”/“删除”也很常见,即键入补充键或按不够用力 --> 这意味着(显然)字母越多,单词越难正确。

  • 混合大小写更难,它需要在按下 CAPS 和敲击键之间进行同步,因此附近的键很可能没有正确的大写/小写。

希望这会有所帮助...

【讨论】:

    【解决方案3】:

    拿出你的拼字游戏,记下每个字母的分数,把一个单词的分数加起来,嘿,你马上就有了你的算法。不确定它是否完全满足您的要求,但它可能会为您指明一个有用的方向。例如,您可能不仅要为单个字母分配分数,还要为二元组和三元组分配分数。

    我不知道您需要的任何现有信息来源,也许您可​​以通过检查键盘并为更难的字母分配更高的分数来得出自己的字母分数:所以 1 代表“a”,8代表“q”,2 代表“m”,依此类推。

    编辑:当我回复 SO 时,我似乎比平时更让人们感到困惑。以下是我的建议的基本内容:

    a) 列出以英语(或您的语言)出现的所有三元组和二元组。给他们每个人分配一个打字难度分数。对单个字母执行相同操作(毕竟 4 个字母的单词可能由一个三元组和一个字母组成,而不是两个二元组)。

    b) 将输入一个单词的难度评分为输入其组成部分的难度之和。

    至于难度分数,我不知道,但你可以从 1 开始表示键盘上 home 键上的字母,2 表示使用食指但不是 home 键的字母,3对于使用您手上的第二或第三根手指的字母,依此类推。然后对于二字图,按顺序排列左右(或左右)的简单字母得分低,顺序排列困难的字母得分高(例如qz,尽管这可能对英语无效)。继续前进。

    【讨论】:

    • 为什么q 的输入难度是a 的8 倍?!
    • 所以输入 a 的成本是输入 a 的成本的 1.87 倍。我提供的是经过深思熟虑的自发建议,而不是试图用勺子喂给 OP 一个解决方案。
    • 好的点,我实际上喜欢基本的想法(虽然我认为你需要查看字母的分组,而不是单个字母)但是它对我的阅读方式你建议在一个字母在自然语言中出现的频率以及输入的难度。
    • -1 拼字游戏分数代表游戏地区字母出现的频率。它与 QWERTY 键盘上的打字难度无关。
    【解决方案4】:

    我认为,manhatten distances 算法可能最接近您正在查看的内容。该算法以四边形方式考虑了目标与源的距离。

    至于在python中的实现,对于QWERTY难度的具体需求,你必须自己写一个,否则如果你google for "nuzzle solver in python",几乎找不到曼哈顿距离的实现

    【讨论】:

    • 键之间的曼哈顿距离可能仅对单指打字有用。
    • sum(单词中的字符到 QWERTY 中的目标的距离)?
    • 您为手指的初始位置指定 10 个起点,然后使用曼哈顿距离计算键入单词时需要走的路径长度。只是猜测。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-13
    • 2010-10-29
    • 2015-08-11
    • 2015-02-08
    • 1970-01-01
    • 2015-07-17
    • 1970-01-01
    相关资源
    最近更新 更多