Re: [Neo] Parameter für den Algorithmus
> Ich würde sowieso sehr gerne einmal die Algorithmen der automatischen > Optimierer genauer betrachten. Weiß jmd. gerade zufälligerweise wo ich > die finde? http://wettstae.home.solnet.ch/opt.c Andreas
Re: [Neo] Parameter für den Algorithmus
Hi Lucky, > Ich würde sowieso sehr gerne einmal die Algorithmen der automatischen > Optimierer genauer betrachten. Weiß jmd. gerade zufälligerweise wo ich > die finde? > Meinen gibt es hier: http://www.bitbucket.org/ArneBab/evolve-keyboard-layout/src/tip/check_neo.py Fang am besten bei total_cost() an, die macht die Hauptarbeit :) http://www.bitbucket.org/ArneBab/evolve-keyboard- layout/src/tip/check_neo.py#cl-1000 Lieben Gruß, Arne
Re: [Neo] Parameter für den Algorithmus
Hi Daniel, Schau doch mal bei Klausler vorbei. Der hat sowas für die shell geschrieben: → http://klausler.com/evolved.html (ganz unten) → http://klausler.com/evolve.tar.bz2 Ich habe auch einen patch dazu, der das Statistikprogramm darin auf amd64 zum Laufen bringt (unten). Das Programm heißt ‚kbwatch‘. Liebe Grüße, Arne # HG changeset patch # User Arne Babenhauserheide # Date 1268264518 -3600 # Node ID 2858db78ca0bdc2e2307e5c2fcd3231d71ceb9ac # Parent b1dc27dd9c2f5488a1f1cccf9d2e9f9fe3ffd0f9 # Parent 14548380e9d1d642a096aa990924b3f67633e43d merge diff --git a/Makefile b/Makefile --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ MY_LAYOUT = DVORAK #MY_LAYOUT = QWERTY -CFLAGS = -O3 -DMY_LAYOUT=$(MY_LAYOUT)_LAYOUT +CFLAGS = -O2 -DMY_LAYOUT=$(MY_LAYOUT)_LAYOUT default: evolve kbwatch @@ -32,7 +32,7 @@ kbwatch_dump: kbwatch_dump.o kbstats.o l kbwatch_to_c: kbwatch_to_c.o kbstats.o letters.o layout.o cc -o $@ kbwatch_to_c.o kbstats.o letters.o layout.o kbstats_data.c: kbwatch_to_c - kbwatch_to_c >$@ + ./kbwatch_to_c >$@ groupanal: groupanal.o kbstats.o letters.o layout.o cc -o $@ groupanal.o kbstats.o letters.o layout.o evolve.tar.bz2: evolve.tar diff --git a/get_wordlist b/get_wordlist --- a/get_wordlist +++ b/get_wordlist @@ -1,7 +1,7 @@ #!/bin/sh -corpus | \ +./corpus | \ tr "A-Z<>:\"" "a-z,.;'" | \ - getwds | \ + ./getwds | \ sort | \ uniq -c | \ sort -nr | \ diff --git a/kbwatch_to_c.c b/kbwatch_to_c.c --- a/kbwatch_to_c.c +++ b/kbwatch_to_c.c @@ -3,6 +3,7 @@ #include #include #include +#include #include "letters.h" #include "layout.h" #include "kbstats.h"
Re: [Neo] Parameter für den Algorithmus
Hallo, wäre es in dem Zusammenhang nicht interessant, wenn wir die zweifach-Tastenfolgen („Tasten-Bigramme”?) z.B. durch einen Test: „tippe ae ae ae und nun iu iu iu. Welches geht besser?“ abtesten und ordnen. Der Aufwand dafür ist natürlich sehr groß, wenn wir von 33 Tasten auf dem Hauptfeld ausgehen macht das 2 aus 33 * 2 = 1056 Kombination, wenn ich mich nicht irre. (Analog dazu für Tasten-Trigramme 3 aus 33 * 3! = 32736 ;)) Aber vllt. sollten wir uns auch erst mal einigen, welche Tasten(-„Monogramme”) überhaupt wie gut zu tippen sind… Ich würde sowieso sehr gerne einmal die Algorithmen der automatischen Optimierer genauer betrachten. Weiß jmd. gerade zufälligerweise wo ich die finde? Gruß, Lucky P.S.: Ich denke auch nicht, dass ein Ansatz mit Zeitmessungen besonders aussagekräftig ist. signature.asc Description: Digital signature
Re: [Neo] Parameter für den Algorithmus
daniel marohn schrieb: > nein, ich hab tatsächlich nur von mir auf andere geschlossen. > Wobei ich es sehr spanend fände deine Resultate zu sehen. Vielleicht > würde der Unterschied bei schwierigen Kombos ja auch bei dir > signifikant schlechter, aber du tippst halt so schnell, das dir das > null auffällt. Ich würd es gerne mal ausprobieren. > Es ist tatsächlich nur ne Idee für nen Projekt, dessen Umsetzung > technisch nicht aufwändig ist. Vielleicht kann man was mit den Daten > anfangen, vielleicht auch nicht. Im Moment tendiere ich aber schon > eher dazu das es was nützliches sein kann. Na, dafür würde sich die Umsetzung doch mal lohnen, um das Konzept zu testen. Gruß, Martin
Re: [Neo] Parameter für den Algorithmus
> Was lässt dich zum Schluss kommen, dass ein längerer Zwischenraum mit > einer schwierigeren Tastenkombination korreliert? Ich meine, ich bin bei > Kollisionen nicht langsamer als bei Fingerfolgen. Hast du deine These nein, ich hab tatsächlich nur von mir auf andere geschlossen. Wobei ich es sehr spanend fände deine Resultate zu sehen. Vielleicht würde der Unterschied bei schwierigen Kombos ja auch bei dir signifikant schlechter, aber du tippst halt so schnell, das dir das null auffällt. Es ist tatsächlich nur ne Idee für nen Projekt, dessen Umsetzung technisch nicht aufwändig ist. Vielleicht kann man was mit den Daten anfangen, vielleicht auch nicht. Im Moment tendiere ich aber schon eher dazu das es was nützliches sein kann.
Re: [Neo] Parameter für den Algorithmus
Hi Daniel, > Wir bauen eine kleine Webseite, auf der der User sein Tastatur > Layout angibt, und dann einen vorgegebenen Text abtippt. Dabei > werden ausnahmslos alle keyUp und keyDown events mit exaktem > Timestamp getrackt und im Backend in einer Datenbank gespeichert. > Wenn wir es schaffen, das viele User, viele Texte tippen bekommen > wir eine große Datenbank auf die wir dann Analyseservices loslassen > können. Dann können wir ganz genau sehen, bei welchen Kombinationen > die User wie viel Zeit verlieren. Prinzipiell sehr gute Idee. Ich denke die Daten könnten sehr nützliche Informationen liefern. _Daneben_ sollte man aber nicht vergessen, dass Zeit allein kein hinreichendes Indiz ist, ob etwas angenehmer / ergonomischer ist. Speziell wenn man mit "Unsinnstexten" die Layouts vergleicht muss man aufpassen, dass nicht solche Effekte, wie ", "-Bigramme und ähnliche gewohnte bzw. nicht gewohnte Kombinationen die Ergebnisse beeinflussen und man das evtl. übersieht und dann falsche Schlüsse zieht. Für sehr wichtig halte ich daher die menschliche Komponente: Man könnte die Auswertung mit einer subjektiven Beurteilung ergänzen. Ein Nutzer tippt verschiedene kurze Sequenzen der einzelnen Layouts (erster Vorschlag, wie bereits beschrieben: 5x die die die die die und dann 5x sok sok sok sok sok oder was auch immer. Dann muss der Nutzer eine Note geben, wie schwer / leicht die Fingerkombinationen für ihn "geflossen" sind. Damit die Ergebnisse vergleichbar werden, gibt man dazu z. B. zwei Beispiele vor. Eines, welches echte Fingerakrobatik erfodert. Das wird z. B. mit der Note 6 bezeichnet. Dann nimmt man ein zweites Beispiel, welches man sich _sehr_ gut überlegt hat und welches nach bisherigem Kenntnissen sehr angenehm zu tippen ist. Dem gibt man die Note 1. Dann soll der Proband eine Note geben. In dem Zusammenhang sehr lesenswert, auch wenn es aus dem Bereich "Image Quality" kommt: Peter G. Engeldrum, Psychometric Scaling:Avoiding the Pitfalls and Hazards, IS&T's 2001 PICS Conference Proceedings, pp. 101-107 http://www.imcotek.com/pdf_temp/PICS-27.pdf > Vielleicht vertrauen uns ein paar sogar soviel das sie sich einen > Keylogger Ja :) Keylogger wollte ich schon immer installiert bekommen ;-) Nein, im Ernst. Ich glaube von der Begeisterung für Keylogger mal abgesehen, dass das eher nicht so interessant wäre, da man nicht weiß, was der Nutzer gerade macht. Tippt er konzentriert etwas ab oder muss er nachdenken und Texte umformulieren oder steuert er irgendein Programm über Tasten und / oder Maus ...? Ganz uninteressant wären die Daten sicher nicht, aber ich befürchte, dass die gewünschten Informationen im Rauschen verschwinden würden. Wichtig ist in allen Fällen auch die Info, ob jemand konsequent mit 10 Fingern blind tippt oder weitestgehend oder ob er ein Eigen-Such-System hat. Die Kategorisierung könnte man an Beispielen kurz erklären und dann die Testperson bitten die entsprechende Rubrik auszuwählen. Viele Grüße Peter
Re: [Neo] Parameter für den Algorithmus
daniel marohn schrieb: > Dabei werden ausnahmslos alle keyUp und keyDown events mit exaktem > Timestamp getrackt und im Backend in einer Datenbank gespeichert. […] > Dann können wir ganz genau sehen, bei welchen Kombinationen die User > wie viel Zeit verlieren. Was lässt dich zum Schluss kommen, dass ein längerer Zwischenraum mit einer schwierigeren Tastenkombination korreliert? Ich meine, ich bin bei Kollisionen nicht langsamer als bei Fingerfolgen. Hast du deine These schon mal praktisch gegengeprüft? Gruß, Martin
[Neo] Parameter für den Algorithmus
huhu nach den Diskussionen hier auf der Liste und besonders nach Ulfs Mail, habe ich mir ein paar Gedanken über die Probleme beim Bauen eines Algorithmus gemacht. Ich glaube die Arbeit besteht, egal welchen Weg man auch geht, niemals in der Programmierung. Das Entscheidende sind die Parameter, die man anfangs festsetzt. Ein Problem, das hier häufig diskutiert wird, sind die Strafpunkte die bestimmte Aktionen haben sollen. Die Schwierigkeit besteht darin, das man unglaublich viele mögliche Ereignisse gegeneinander gewichten muss, ohne die ganzen Implikationen auch nur im Ansatz überblicken zu können. Es ist halt try and error, wobei jede Überprüfung des Ergebnisses sehr aufwendig ist, da es konsequenter Weise die Erlernung eines neunen Layouts erfordert (idealer Weise von mehr als einer Person). Dazu kommt das sich bestimmte Dinge vielleicht einfach komisch anfühlen, ohne das man weiß, warum; oder sie zumindest nicht in Zahlen formulieren kann. Ich schlage daher die Gründung eines Sideprojektes vor, dessen Ziel es ist herauszufinden, welche Fingerbewegungen denn nun genau (und wie stark) störend auf den Schreibfluss wirken. Ich habe dazu eine Idee, die ich euch vorstellen möchte: Wir bauen eine kleine Webseite, auf der der User sein Tastatur Layout angibt, und dann einen vorgegebenen Text abtippt. Dabei werden ausnahmslos alle keyUp und keyDown events mit exaktem Timestamp getrackt und im Backend in einer Datenbank gespeichert. Wenn wir es schaffen, das viele User, viele Texte tippen bekommen wir eine große Datenbank auf die wir dann Analyseservices loslassen können. Dann können wir ganz genau sehen, bei welchen Kombinationen die User wie viel Zeit verlieren. Vielleicht vertrauen uns ein paar sogar soviel das sie sich einen Keylogger (vielleicht ein ahk script) installieren, der einmal täglich eine aggregierte Statistik über die Zeitintervalle zwischen einzelnen Tastenkombinationen sendet. Wenn wir dann eine Idee haben, welches Kriterium wichtig sein könnte, können wir das sehr leicht prüfen, ohne gleich wieder eine langwierige Testreihe zu starten. Die Ergebnisse werden zusammen mit den Rohdaten veröffentlicht und jeder, der ein Layout entwerfen will kann das nutzen. Uns wird es glaube ich helfen den Algorithmus (welchen auch immer) mit Parametern zu füttern. Ich muss dazu noch sagen, das ich den ganzen Tag kaum anderes tue als Datenbanken zu bauen. Daher neige ich dazu alles damit erschlagen; wenn es alles viel einfacher geht… gerne. Gruß Daniel