質問

QWERTY レイアウトで単語を入力するのがどれほど難しいかを判断する、かなり単純なアルゴリズムを探しています。

単語は必ずしも辞書の単語であるとは限らないため、よくタイプミスされる単語などのリストはオプションではありません。十分にテストされた既存のアルゴリズムが存在するはずですが、何も見つかりません。

誰か助けやアドバイスをいただけますか?私は Python でアルゴリズムをコーディングしていますが、他の言語や疑似コードも歓迎します。

役に立ちましたか?

解決

がある この比較 Qwerty、Colemak、およびDvorakレイアウトの間で、タイプしたキー間の距離、同じ手のキーの割合などを計算します。組み合わせたこれらのメトリックは、単語の「型方向性」の非常に良い推定値を与えるはずです。

他のヒント

スクラブル セットを取り出し、各文字のスコアをメモし、単語のスコアを合計すれば、アルゴリズムは完成です。それがあなたの要件を完全に満たしているかどうかはわかりませんが、有益な方向性を示してくれるかもしれません。たとえば、個々の文字だけでなく、ジグラムやトリグラムにもスコアを割り当てたい場合があります。

あなたが必要とする既存の情報源を私は知りません。キーボードを調べて、より難しい文字に高いスコアを割り当てることで、独自の文字スコアを見つけ出すことができるかもしれません。したがって、「a」の場合は 1、「q」の場合は 8、「m」の場合は 2 などとなります。

編集:SO で返信するとき、私が通常よりも人々を混乱させているようです。私の提案の骨子は次のとおりです。

a) 英語 (またはあなたの言語) で出現するすべてのトリグラムとディグラムをリストします。それぞれに、タイピングの難易度のスコアを割り当てます。個々の文字についても同じことを行います (結局のところ、4 文字の単語は 2 つのディグラムではなく、1 つのトリグラムと 1 つの文字で構成される可能性があります)。

b) 単語の入力の難しさを、その構成要素の入力の難しさの合計としてスコア付けします。

難易度については、まったくわかりませんが、キーボードのホームキー上の文字を 1、ホームキーではなく人差し指を使う文字を 2、文字を 3 から始めるとよいでしょう。手の 2 番目または 3 番目の指を使用するなどです。次に、ディグラムの場合、左右 (または右と左) に連続した簡単な文字にはスコアを低くし、一方に連続して難しい文字にはスコアを高くします (たとえば、qz ですが、これはおそらく英語には当てはまりません)。そして出発です。

提案するアルゴリズムはありませんが、いくつかのヒントがあります。

  • 私は両手を使用して入力します。つまり、キーボードは2つの半分で大まかに分割されていることを意味します。両手の間に調整の問題があることが頻繁にあります。つまり、各タイプの文字は「正しい」順序でありますが、インテリアは間違っています。これは、片方の手が他の手で典型的なタイプよりも多くの文字がある場合に特に当てはまります。 te そして右手タイプ h.

  • 「スリップ」は頻繁に発生します。つまり、多くの場合、キーを見逃し、代わりに別のキーをヒットすることがよくあります。 「追加」 /「削除」も頻繁に発生します。つまり、補足キーを入力するか、十分に強くプッシュしません。

  • ミックスケースは難しくなり、キャップを押すこととキーを押すこととの間の同期が必要であるため、近くのキーには右上/小文字がない可能性があります。

お役に立てれば...

おもう、 マンハッテン距離 アルゴリズムは、あなたが見ているものの中で最も近い可能性があります。そのアルゴリズムは、四角形の方法でソースからターゲットの距離を考慮します。

Pythonでの実装に関しては、Qwertyでの困難の特定の必要性については、自分で1つを書く必要があります。そうしないと、「PythonのNパズルソルバー」をGoogleで検索すると、Manhatten距離の実装がほとんど見つかりません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top