2010-12-16 2 views
10

Ich suche nach einem relativ einfachen Algorithmus, um zu bestimmen, wie schwierig es ist, ein Wort in das QWERTY-Layout einzugeben.Ermitteln, wie schwierig ein Wort auf einer QWERTY-Tastatur ist

Die Wörter wären nicht notwendigerweise Wörterbuchwörter, daher ist eine Liste häufig falsch geschriebener Wörter oder dergleichen keine Option. Ich bin mir sicher, dass es einen existierenden, gut getesteten Algorithmus geben muss, aber ich kann nichts finden.

Kann jemand Hilfe oder Beratung anbieten? Ich schreibe den Algorithmus in Python, aber jede andere Sprache oder Pseudocode ist willkommen.

+0

Vielleicht, wenn Sie die Logik hinter der Tastatur Dvorak lesen, könnte es Ihnen helfen. – ruslik

+2

Eine grobe Lösung wäre es, Daten über Tippfehler zu erhalten (diskutiert http://StackOverflow.com/Questions/1801647/what-is-the-best-source-for-typo-statistics) und die Fehlerrate für jeden zu ermitteln Schlüssel. Es ist problematisch, weil Tippfehler oft kontextabhängig sind (Umstellungen, Verwechslungen zwischen ähnlichen Wörtern, gemeinsamen Endungen usw.). Um einen Kontext zu berücksichtigen, könnten Sie stattdessen 2 Gramm verwenden (Fehlerraten für jeden Schlüssel, der dem anderen Schlüssel folgt). –

Antwort

5

Zwischen QWERTY-, Colemak- und Dvorak-Layouts gibt es this comparison, die den Abstand zwischen den eingegebenen Schlüsseln, den Prozentsatz der Schlüssel auf derselben Hand usw. mit dem Quellcode in Java berechnet. Diese Metriken in Kombination sollten eine sehr gute Einschätzung der "Typisierbarkeit" eines Wortes geben.

+0

Zombified diesen Thread! Das ist ein toter Link - Was passiert, wenn der Quellcode immer noch irgendwo existiert? –

0

Ich denke, manhatten distances Algorithmus könnte am nächsten sein, was Sie betrachten. Dieser Algorithmus berücksichtigt die Entfernung des Ziels von der Quelle auf viereckige Weise.

Wie für die Implementierung in Python, für Ihre spezifischen Bedürfnisse von Schwierigkeiten bei der QWERTY, werden Sie ein für sich selbst schreiben, sonst wenige Manhatten Entfernungen Implementierung gefunden werden können, wenn Sie für „n Puzzle-Löser in Python“ google

+0

Manhattan Abstand zwischen was 2 Punkte? –

+2

Manhattan Abstände zwischen Tasten könnten nur für die 1-Finger-Typisierung nützlich sein. – ruslik

+0

Summe (Abstand für Zeichen im Wort zu seinem Ziel in QWERTY)? –

1

Nehmen Sie Ihr Scrabble-Set heraus, notieren Sie sich die Noten für jeden Buchstaben, die Summe der Noten für ein Wort, hey, Sie haben Ihren Algorithmus. Nicht sicher, ob es Ihren Anforderungen entspricht, aber es könnte Sie in eine nützliche Richtung weisen. Sie möchten beispielsweise Noten nicht nur einzelnen Buchstaben, sondern auch Di- und Trigrammen zuordnen.

Ich bin mir keiner vorhandenen Quelle der Informationen bewusst, die Sie brauchen, vielleicht könnten Sie Ihre eigenen Buchstaben-Punktzahlen erzielen, indem Sie die Tastatur untersuchen und den schwierigeren Buchstaben höhere Punktzahlen zuweisen: also 1 für 'a', 8 für 'q', 2 für 'm' und so weiter.

EDIT: Ich scheinen Menschen mehr verwirrt als ich normalerweise, wenn ich auf SO antworte. Hier sind die Barebones meines Vorschlags:

a) Liste alle Trigramme und Digramme, die auf Englisch (oder Ihre Sprache) vorkommen. Jedem von ihnen wird ein Tippfehler zugewiesen. Machen Sie dasselbe für einzelne Buchstaben (schließlich könnte ein Wort mit 4 Buchstaben aus einem Trigramm und einem Buchstaben und nicht aus zwei Digrammen bestehen).

b) Ermitteln Sie die Schwierigkeit, ein Wort als Summe der Schwierigkeit der Eingabe seiner Komponenten einzugeben.

Was die Schwierigkeitspunkte betrifft, habe ich keine Ahnung, aber Sie könnten von 1 für einen Buchstaben auf den Home-Tasten auf einer Tastatur starten, 2 für einen Buchstaben, der die Zeigefinger verwendet, aber kein Home-Key ist, 3 für einen Brief, der den 2. oder 3. Finger auf deiner Hand benutzt, und so weiter. Dann für Digrams, punkten niedrig für einfache Buchstaben links und rechts (oder rechts und links) in der Reihenfolge, hoch für schwierige Buchstaben einerseits in der Reihenfolge (zB qz, obwohl das ist vielleicht nicht gültig für Englisch). Und du gehst.

+1

warum/wie ist 'q' 8 mal schwerer zu tippen als' a' ?! – fearofawhackplanet

+1

Also die Kosten für die Eingabe einer q 1,87 mal als die Kosten für die Eingabe einer a. Ich biete schlecht durchdachte, spontane Ratschläge an und versuche nicht, dem OP eine Lösung zu geben. –

+0

ok Punkt genommen, ich mag eigentlich die Grundidee (obwohl ich argumentieren würde, dass Sie Gruppierungen von Buchstaben, nicht einzelne Buchstaben betrachten müssen), aber die Art, wie es mir liest, schlagen Sie eine commanilty zwischen der Frequenz vor, in der ein Buchstabe vorkommen kann natürliche Sprache und wie schwer es ist zu tippen. – fearofawhackplanet

1

Ich habe keine Algorithmen vorzuschlagen, aber ein paar Hinweise:

  • ich beide Hände benutzen zu geben, was bedeutet, dass die Tastatur grob in zwei Hälften geteilt wird, ist es häufig, dass ich Koordinationsprobleme zwischen den beiden Händen, was bedeutet, dass jeder Typ die Buchstaben in der "richtigen" Reihenfolge, aber die Verschachtelung falsch ist.Dies gilt insbesondere dann, wenn eine Hand mehr Buchstaben als die andere hat, typisch: "the", weil die linke Hand t und e und die rechten Typen h.

  • "Rutschen" sind häufig, was bedeutet, dass man oft den Schlüssel versäumt und stattdessen eine andere Taste drückt; "Addition"/"Deletion" sind auch häufig, dh das Eintippen eines Zusatzschlüssels oder das nicht genügend Schieben -> das bedeutet, dass (offensichtlich) je mehr Buchstaben vorhanden sind, desto schwieriger ist es, das Wort richtig zu machen.

  • Mix-Fall macht es schwieriger, es erfordert Synchronisation zwischen Drücken von CAPS und das Treffen der Tasten, so ist es wahrscheinlich, dass die in der Nähe befindlichen Tasten nicht die richtige Groß-/Kleinschreibung haben.

Hope this helps ...