1 Evaluation des Tipptests
2 ========================
6 Ich habe erstmal der Ergebnisse der Tipptests zusammengefasst, sie dann ausgewertet (⇒ problematische ngramme) und dann Vermutungen angestellt, warum bestimmte Wörter, bzw. ngramme, Probleme machen.
8 Danach habe ich Vorschläge geschrieben, wie wir die config anpassen können, um bessere Ergebnisse zu erhalten.
10 Abschließend habe ich dann nochmal eine Idee für die nächsten Schritte geschrieben, inklusive dem nächsten Schritt: Diskutieren, wie wir die Parameter anpassen, um die bei den Tipptests sichtbar gewordenen Probleme der bisherigen Ergebnisse zu vermeiden.
12 Jetzt aber zur Auswertung, erstmal mit Bestandsaufnahme:
21 daravggneffnet (erst komisch, später ok, dann hmhm)
22 Jro!neyno!ret (zu verteilt; Fingerbewegung)
24 be(gn)pni(mn)etc (zerhackt)
32 D[iuue]f (kein Wechsel)
34 qo (hoffentlich kommt das dann nicht insgesamt zu häufig vor)
38 .er .arit (In Kombination, hat lange gedauert, bis ich das flüssig tippen konnte)
39 [uira]o(gg↑n)iff↑nit (zwei mal Diphtong oben, ui(r)a schwierig)
44 Schwer tu ich mich immer mit
45 Buchstabenreihen auf einer Hand:
51 äv (afg ist kein Problem)
53 ### Michael Ostermeier
62 ### Arne Babenhauserheide
64 Nesjef - sj ist unschön
65 äv - fast so schlimm wie öx :)
66 gldfissgnet - zwiespältig. Einerseits etwas kompliziert zu tippen,
67 andererseits fühlt es sich seltsam schön an.
68 Beuörldnvtmet - euörl: urgh! Das liest sich schon so, wie es sich anfühlt :)
69 Diuuef - Diu: L-Shift-iu autsch.
71 hauin ueite - nur ein bisschen.
72 Sebwrldnvtmet - ebwr, könnte aber auch einfach Koordination sein (eine Hand
73 unten, die andere oben)
77 Biywrmunotdit bignänednitc - die sind etwas seltsam, Nicht wirklich
78 schlecht, aber auch nicht gut.
81 Unschöne Ngramme (Neo)
82 ----------------------
84 (jeweils mit vermuteten Kostenfaktoren, die zu schwach wirken)
94 aui - u und Richtungswechsel: aiu auch?
95 uei - s.o.: uie / eiu auch?
96 oue - s.o. + aus dem Gleichgewicht gezogen (o)
98 iuue - s.o. + doppel-u
100 uira - klein auf Ringfinger (ui)?
108 nfmd - Richtungswechsel + Zeilenwechsel. Poteniell noch schlimmer: nfmd oder sogar nmdf
110 ieöo - richtungswechsel, Zeilenwechsel und ö
111 sjsk - doppelt aus dem Gleichgewicht + Fingerwiederholung
112 äv (afg ist kein Problem) - Zeilenwechsel + ä
116 äv - Zeilenwechsel + ä
117 euö - Zeilenwechsel, Richtungswechsel, ö
118 mn - Fingerwiederholung
119 iv - Fingerwiederholung
123 sj - aus dem Gleichgewicht
124 äv - Zeilenwechsel + ä
126 Di - Aus dem Gleichgewicht (shift)
127 iuue - Richtungswechsel + u
129 Yi - Aus dem Gleichgewicht (shift)
130 oue - Aus dem Gleichgewicht + Richtungswechsel
131 tny - Richtungswechsel
132 rtn - Richtungswechsel
135 Wörtervergleiche von Martin
136 ---------------------------
138 (Nur die starken Unterschiede)
140 Yifosener > Yif(oue)ner >> Vef↑l↑sinir
141 Nesjef > Nisjif >> Neujef
142 hasen > hasin >> hauin
143 seite leicht> sieti >> (uei)te
144 gl(df)i(ssgn)et > (gm⇊)ufe(ssgn)it >> g↑l↑(df)(iuu)gnet
145 Beuörl(dn)v(tm)et >> Sebw↑→rl(dn)v(tm)et >>? Biyw(rm)uno(td)it
147 Mir fällt hier vor allem auf, dass u unschön zu sein scheint, genau wie nicht auf der Grundlinie liegende Tasten, v.a. wenn sie gehäuft kommen.
148 ⇒ Idee zur Auswertung: Kosten nicht nur pro Buchstabe, sondern pro Bigramm: (Kosten Taste 1 + Kosten Taste 2)². Dann ist es deutlich teurer, wenn zwei unschöne Tasten hintereinander kömmen (z.B. äv). Außerdem sollte das Tippen so noch etwas regelmäßiger werden (keine langen unschönen Sequenzen, die einen komplett aus dem Fluss werfen). Was haltet ihr davon?
153 → http://lists.neo-layout.org/pipermail/diskussion/2010-September/017713.html
155 Wir hatten einige positive Korrelationen. Die sind für uns erstmal nicht das wichtigste, denn die Parameter unterstützen sich gegenseitig.
157 Die negativen Korrelationen sind erstmal wichtiger, weil sie uns zeigen, welche Parameter wirklich gegeneinander stehen:
159 -0,456 rows/dist – movement pattern
160 -0,378 Handwechsel in Trigrammen – movement pattern
161 -0,344 Handwechsel in Trigrammen – Handwechsel nach unbalancing
163 Hier ist 2x movement patterns. Und da das bisher noch sehr wenig geprüft ist, würde ich vorschlagen, die Bewegungsmuster erstmal völlig irrelevant zu machen und *nach* der nächsten Optimierungsrunde (oder während ihr) hier zu diskutieren, welche Übergänge zwischen Fingern wir *nicht* wollen, oder welche wir bevorzugen wollen (z.B. Einwärtsbewegungen).
165 Was mich überrascht hat war Handwechsel bei Richtungswechsel vs. Handwechsel bei aus dem Gleichgewicht gezogener Hand. Das ist zwar eigentlich logisch, aber ich hatte nicht daran gedacht (zu viele Handwechsel bedeuten, dass die meisten Übergänge zwischen Buchstaben von einer Hand auf die andere gehen müssen, so dass die Hälfte der Möglichkeiten ausgeschlossen werden und Tasten schlechtere Positionen brauchen).
167 Da zusätzlich noch 0,828 Handwechsel bei Richtungswechsel stark positiv korrelliert war, Handwechsel bei disbalance aber stark negativ, und nur bei mir Handwechsel bei disbalance alleine gestört hat, bei anderen aber nicht, würde ich Handwechsel bei Richtungswechsel noch stärker gewichten, Handwechsel bei disbalance aber eher halbieren.
169 Um das Gegenzuprüfen: Alle Korrelationen von Handswitching after unbalancing:
171 total.penalty -0.26371811
172 key.position.cost -0.16173207
173 finger.repeats -0.08171285
174 disbalance.of.fingers -0.18331477
175 top.to.bottom.or.vice.versa -0.09086633
176 handswitching.in.trigram -0.34470521
177 X.rows..dist.. -0.15114369
178 shortcut.keys -0.08625981
179 handswitching.after.unbalancing 1.00000000
180 movement.pattern 0.28422839
182 Handswitching after unbalancing beißt sich mit jedem anderen Wert außer movement pattern, und den haben wir gerade als irrelevant gesehen. Movement patterns sind allerdings mit allem anderen negativ korrelliert, so dass die negative Korrellation von unbalancing mit den total cost auch daher kommen könnte.
184 Allerdings ist es halt auch stark negativ mit handswitching.in.trigram korrelliert, dass mit allem anderen positiv korrelliert ist, v.a. mit total penalty. Das könnte ein Grund sein: Es gibt eine Höchstmenge an Handwechseln, die sinnvoll sind, und die beiden Gründe für Handwechsel teilen sie unter sich auf ⇒ Kampf :)
186 handswitching.in.trigram
187 total.penalty 0.8282882
188 key.position.cost 0.1855194
189 finger.repeats 0.1553341
190 disbalance.of.fingers 0.1022377
191 top.to.bottom.or.vice.versa 0.1806698
192 handswitching.in.trigram 1.0000000
193 X.rows..dist.. 0.2747901
194 shortcut.keys 0.1292014
195 handswitching.after.unbalancing -0.3447052
196 movement.pattern -0.3793584
198 Fazit: Ich würde es erstmal weniger wichtig machen.
201 Erstellung aller Korrelationen:
203 $ ./csv-ftw.sh > layouts.csv
205 > a = read.csv("layouts.csv", sep=";")
208 (csv und R sind cool!)
213 Schlechte Handbalance ist in einem Satz meiner Erfahrung nach ab 4% Abweichung spürbar. Deswegen würde ich vorschlagen, den Parameter nochmal zu verdoppeln¹.
215 Dann wird der Ringfinger bisher zu oft verwendet, der Mittelfinger aber recht wenig. Wir können testen, was passiert, wenn wir Mittel- und Zeigefinger gleich oft benutzen lassen, den Ringfinger aber seltener. Ein mögliches Problem bei dem Ansatz könnte sein, dass der Zeigefinger deutlich mehr Tasten hat (die einzelnen Tasten also seltener benutzt werden) und der Mittelfinger weniger beweglich ist (gerade nach unten).
217 Für die Auswertungsidee von Miche gibt es jetzt grep_cascade.sh, das ähnliche Layouts auswählt und jeweils einen Parameter variieren lässt. Praktischerweise sollten war allerdings die Layouts dann mit recheck_all_result_layouts.py für den Referenztext neu berechnen, so dass wir die Werte für den Text haben, den wir wirklich tippen. Sonst verzerrt der ausgewählte Text die Auswertung.
219 Außerdem haben in den Tests Fingerwiederholungen gestört ⇒ verdoppeln¹.
221 Was zusätzlich sehr gestört hat sind unschöne Buchstabenpositionen. Statt hier einfach die allgemeinen Kosten zu erhöhen, können wir die Lenkungswirkung steigern, indem wir die einzelnen Positionen relativ gesehen teurer machen: Bei xqßzöä,. die Kosten verdoppeln (außerdem ä an ö anpassen).
223 Gegen äv können wir die Kosten für Zeilenwechsel erhöhen (3x, weil es wirklich oft war?).
225 ¹: Ich würde einfach verdoppeln, weil wir die genauen Auswirkungen der Parameter noch kennen. Der Test von Miche (grep_cascade.sh) sollte dabei helfen. Bis dahin können wir uns erstmal nur iterativ an die besten Werte herantasten.
227 Vorschläge, Zusammenfassung
228 ---------------------------
230 * finger load: small to index: 1, 1.6, 2.6, 2.6
231 * doubled cost for finger disbalance
232 * doubled position cost for xqßzöä,.
233 * tripled cost for row-changes
234 * doubled cost for too little handswitching on direction change
235 * halved cost for no handswitching after unbalancing key
236 * double the cost for finger repeats, too.
237 * reduced cost for movement patterns by factor 20 (shouldn’t be relevant anymore, now; maybe remove completely).
243 Was mir am Sinnvollsten erscheint (bitte sagt es, wenn ihr es anders seht!):
245 Sobald wir auf eine config geeinigt haben, kommen wir in die nächste Runde der Optimierungen. Ein kurzer Test (ein paar Stunden grep_cascade.sh testen) hat gezeigt, dass die Unterschiede pro Parameter recht groß sind, wenn wir viele Parameter festhalten wollen. Das heißt, wenn wir den Test wirklich sauber machen wollen, brauchen wir deutlich über 1000 Layouts.
247 Bei den 8 Referenzlayouts, bei denen alle Parameter festgehalten sind¹, variieren die Fingerwiederholung trotzdem noch von 1.8% bis fast 2.1%. Wenn ich sie noch stärker festhalte, gibt es keine passenden Layouts mehr (infos in grep_cascade.sh). Das heißt, für den wirklich sauberen Tipptest (wie beeinflusst eine Änderung des Parameters um einen gegebenen Wert das Tippgefühl) brauchen wir nicht 1000 sondern eher 10.000 Layouts – oder mehr. Allerdings dürfte bereits die etwas grobere Version, die wir bisher haben, einiges an Aufschluss bringen (und helfen, den Test zu verfeinern, bevor wir ihn dann mit 10.000+ Layouts machen; falls wir so viele schaffen).
249 ¹: https://bitbucket.org/ArneBab/evolve-keyboard-layout/src/tip/empirie/2010-08-17-layouts-varying-only-one-parameter.txt
251 Die 1000 Layouts sind übrigens schon jetzt eine geniale Arbeitsbasis! Damit lassen sich Tests machen, die nur mit dem Optimierer aus Geschwindigkeitsgründen nicht möglich sind. Und das macht einfach Spaß :)
253 Jetzt aber nochmal strukturiert: Nächste Schritte zu einem optimalen Layout:
256 1. Wir diskutieren die Vorschläge für config-Änderungen in der Liste (und in IRC + irgendjemand fasst es für die Liste zusammen ⇒ Wer macht es?).
258 2. Wir einigen uns auf eine config.
260 3. Wir versuchen das Stromnetz zum Zusammenbruch zu bringen, indem wir so viel Rechenleistung wie möglich auf die Generierung neuer Layouts werfen :)
262 4. Wenn wir 1000 bis 100 000 Layouts zusammen haben, wählen wir wieder die besten aus.
264 5. Für die besten machen wir den regularity_check.py: Wie stark sind ihre Abweichungen für kurze Textabschnitte? Wir brauchen ein regelmäßiges Tippen (ist zumindest meine Ansicht dazu. Was denkt ihr? Lieber ein für 99% der Wörter geniales Layout, das bei 1% einbricht, oder ein nicht ganz so gutes, das ein über verschiedene Texte konsistentes Tippgefühl liefert?).
266 6. Die regelmäßigsten der besten Layouts kommen wieder in Tipptests: Was stört noch ⇒ zurück zu 1. ;)
268 7. Wenn die Endlosschleife abbricht, weil wir der Meinung sind, dass wir fertig sind, ergänzen wir den Korpus um andere Sprachen (⇒ wir müssen noch diskutieren, wie er aussehen soll) und machen eine letzte großangelegte Optimierung.
271 Gleichzeitig können wir die Tipptests von Miche machen (ist das dann Multithreading oder Multiprocessing?). @Miche: Kannst du das organisieren? Bei mir drängt sich die Diplomarbeit inzwischen doch etwas stärker auf…
273 Außerdem können wir diskutieren, wie der endgültige Korpus aufgebaut sein soll.
275 Und ob andere Handhaltungen und Tastenbelegungen besser wären ⇒ Anpassungen der config für diese Handhaltungen.
277 Und wir können an Hardware arbeiten.
279 Keiner dieser anderen Schritte beißt sich grundlegend mit der Optimierung der Belegung. Wir sollten sie aber wohl fertig haben, bevor wir zu 7. kommen :)
281 Zwischendrin können wir logischerweise immer wieder Layouts als Testversionen auskoppeln und reale, langfristig angelegte Tipptests mit umgestellter Tastaturbelegung machen. Nur mit denen sehen wir die komplexeren Effekte der Optimierung.
286 Nach dem ganzen „so kann es weitergehen“, kommen wir doch gleich zu Schritt 1:
288 Was haltet ihr von den Vorschlägen („Vorschläge, Zusammenfassung“)?
289 Seht ihr anderes, das wir anpassen sollten?
290 Oder würdet ihr anders anpassen?
292 Die aktuelle config ist hier: http://bitbucket.org/ArneBab/evolve-keyboard-layout/src/tip/config.py
294 Ich freu mich schon auf die nächste Optimierungsrunde!
304 * Martineo: eiu und uie sollten seltener sein. ⇒ Aktuell: Handwechsel bei Richtungswechsel und Kleinen- und Ringfinger seltener machen. – <martineo> arne: nach meiner unmaßgebenen bescheidenen meinung: ich finde die vorschläge gut
306 * Miche: Handdisbalance zusätzlich zu Fingerdisbalance bestrafen? Die Fingerdisbalance eher etwas lockern und dafür handdis einbauen? <ArneBab> Handdisbalance ermöglicht es, dass auf verschiedenen Händen andere Finger stärker belastet werden, aber trotzdem gefühlsmäßige Gleichbelastung existiert. ⇒ klingt gut.