Hi, 

Kurzform: *Unterschiedliche Daten und Berechnungsgrundlagen machen 
Ergebnisse scheinbar selbst bei Punkten völlig unvergleichbar.*


Ich habe lange Zeit gerätselt, wie Ulf auf seinen wahnwitzigen Wert von 0.8% 
Fingerwiederholungen kommt, während ich nur mit massivem Rechenaufwand in 
die Nähe von 1% komme. Gestern habe ich dann, als ich die Nordtast-Seite 
gelesen habe, einfach mal das Nordtast-Layout meinem Testscript hinzugefügt. 

Ergebnis: 

$ ./check_neo.py
Neo
[['^', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '`', ()],
 [(), 'x', 'v', 'l', 'c', 'w', 'k', 'h', 'g', 'f', 'q', 'ß', '´', ()],
 ['⇩', 'u', 'i', 'a', 'e', 'o', 's', 'n', 'r', 't', 'd', 'y', '⇘', '\n'],
 ['⇧', (), 'ü', 'ö', 'ä', 'p', 'z', 'b', 'm', ',', '.', 'j', '⇗'],
 [(), (), (), ' ', (), (), (), ()]]
# 1.425330573 billion total penalty compared to notime-noeffort
# 19.3670078482 million keystrokes disbalance of the fingers
# 4.82198888113 % finger repeats in file 2gramme.txt
# 0.307224610884 % finger repeats top to bottom or vice versa
# 4.70844781487 % of trigrams have no handswitching (uppercase ignored)
# 3.9755737368 mean key position cost in file 1gramme.txt

Qwertz for comparision
[['^', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'ß', '´', ()],
 [(), 'q', 'w', 'e', 'r', 't', 'z', 'u', 'i', 'o', 'p', 'ü', '+', ()],
 [(), 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'ö', 'ä', (), '\n'],
 ['⇧', (), 'y', 'x', 'c', 'v', 'b', 'n', 'm', ',', '.', '-', '⇗'],
 [(), (), (), ' ', (), (), (), ()]]
# 2.079132135 billion total penalty compared to notime-noeffort
# 19.6850637926 million keystrokes disbalance of the fingers
# 6.72632774411 % finger repeats in file 2gramme.txt
# 0.233732243474 % finger repeats top to bottom or vice versa
# 11.5644849023 % of trigrams have no handswitching (uppercase ignored)
# 5.95987411112 mean key position cost in file 1gramme.txt

And the Nordtast Layout
[['^', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'ß', '´', ()],
 [(), 'ä', 'u', 'o', 'b', 'p', 'k', 'g', 'l', 'm', 'f', 'x', '+', ()],
 [(), 'a', 'i', 'e', 't', 'c', 'h', 'd', 'n', 'r', 's', 'ß', (), '\n'],
 ['⇧', (), '.', ',', 'ü', 'ö', 'q', 'y', 'z', 'w', 'v', 'j', '⇗'],
 [(), (), (), ' ', (), (), (), ()]]
# 1.360731284 billion total penalty compared to notime-noeffort
# 7.50010236662 million keystrokes disbalance of the fingers
# 1.83742456166 % finger repeats in file 2gramme.txt
# 0.260071071233 % finger repeats top to bottom or vice versa
# 3.80773505265 % of trigrams have no handswitching (uppercase ignored)
# 4.28745556484 mean key position cost in file 1gramme.txt



Ich verwende zur Berechnung den vollständigen Leipziger Korpus (bzw. die 
daraus extrahierten 1- und 2-gramme). 
→ http://lists.neo-layout.org/pipermail/diskussion/2009-December/015238.html
→  http://bitbucket.org/ArneBab/evolve-keyboard-layout/src/tip/1gramme.txt
→  http://bitbucket.org/ArneBab/evolve-keyboard-layout/src/tip/2gramme.txt
→  http://bitbucket.org/ArneBab/evolve-keyboard-layout/src/tip/3gramme.txt

Sonderzeichen ignoriere ich, und Großbuchstaben werden zu 
0.5*(left_shift+key+right_shift+key), weil in der aktuellen Version beim 
Behandeln der Großbuchstaben noch nicht bekannt ist, wo die Tasten liegen 
werden, also welches Shift genommen werden sollte. 

Das Ergebnis sind bei Nordtast 1,8% Fingerwiederholungen; zumindest nach 
meiner Berechnungsmethode. 
Es mag sein, dass ich einen Fehler drin habe, der meine Daten stark 
verfälscht (ich ihn aber noch nicht kenne, sonst wäre er nicht mehr drin :) 
), aber zumindest sehe ich damit, dass meine Optimierungen nicht völlig 
kaputt sind. Und nach der Methode ist Neo bei weitem nicht so weit 
abgeschlagen (2,7 mal so viele Fingerwiederholungen statt 7,8 mal so viele). 

@Ulf: Hast du eine Idee, woran das liegen kann? Hast du andere Daten 
verwendet als ich? Die unterschiedliche Bewertung der Tastenkosten ist klar, 
aber warum unterscheiden sich die Fingerwiederholungen so stark? Vielleicht 
die Shift-Tasten? 


Fazit: Unterschiedliche Berechnungsmethoden und unterschiedliche 
Bewertungskriterien ergeben stark unterschiedliche Ergebnisse. Daher ist es 
wichtig, dass wir die Kriterien hier besprechen und dann klären, was rein 
soll. 

Der Computer mag das Denken unterstützen, aber er kann es nicht abnehmen. 
Egal wie intelligent er wird, wir müssen ihm immernoch genau sagen, was wir 
eigentlich wollen. 


Wer das selbst testen will, kann das übrigens auf 2 Arten machen (nur unter 
GNU/Linux getestet): 

1. Tarball-Snapshot (braucht Python3 → http://python.org/download )
- wget http://bitbucket.org/ArneBab/evolve-keyboard-
layout/get/55e78a669261.bz2
- tar xf 55e78a669261.bz2
- cd evolve-keyboard-layout/
- ./check_neo.py

2. Versionsverwaltung (braucht Python3 und Mercurial): 
- (falls noch nicht vorhanden: easy_install mercurial )
- hg clone https://arne...@bitbucket.org/ArneBab/evolve-keyboard-layout/
- cd evolve-keyboard-layout/
- ./check_neo.py


Liebe Grüße, 
Arne

PS: Damit klar ist aus welcher Version des Skriptes die Daten stammen: 
$ hg id
b97f85a3d973 tip

Antwort per Email an