Hi Arne, danke für die Antwort und Mühe :-)
[Tastentausch für optimiertes qwertz-Layout] >> Das wundert mich sehr. Denn wenn >> ich z. B. d und ß auf qwertz tauschen würde, würde ich mich doch >> sicher verschlechtern, da ß schon ziemlich selten im Vergleich zu d >> vorkommt und zudem ja schon auf relativ schlechtem Platz (das passt ja >> zu seltener Häufigkeit) liegt. > Du hast gerade einen Bug gefunden… Bin dafür bekannt über solche Sachen zu stolpern ... ;-) > Ich habe nie von Qwertz aus optimiert, so dass mir nicht aufgefallen > ist, dass das ß in Qwertz noch Kosten 0 hatte… > Ich habe ihm jetzt 24 gegeben; Qwertz # hat 18. O.K. Aus Zeitmangel hatte ich die "Kostenstruktur" noch nicht angesehen, sondern erstmal deine defaults genutzt. > Allerdings testet er alles und nimmt dann nur das jeweils beste. Hatte ich vermutet. > Mit der Korrektur ist ein um 5 optimale Schritte verbessertes Layout z.B. > das hier: > qwökt zundpü > aeofg hjrlsä > <yxcvb im,. > # 3.30414704718 billion total penalty compared to notime-noeffort > # 4.73699371493 mean key position cost in file 1gramme.txt > # 4.87093927374 % finger repeats in file 2gramme.txt > # 6.02849984486 million keystrokes disbalance of the fingers > # 0.154320791049 % finger repeats top to bottom or vice versa > # 0.430991545888 billion (rows/dist)² to cross > # 0.0607769119184 hand disbalance. Left: 0.439223088082 %, Right: > 0.560776911918 % > Qwertz zum Vergleich: > qwert zuiopü > asdfg hjklöä > <yxcvb nm,.- > # 8.4814365157 billion total penalty compared to notime-noeffort > # 5.08888308364 mean key position cost in file 1gramme.txt > # 7.40712552483 % finger repeats in file 2gramme.txt > # 8.20816695015 million keystrokes disbalance of the fingers > # 0.264551764607 % finger repeats top to bottom or vice versa > # 2.75890748815 billion (rows/dist)² to cross > # 0.0771517043608 hand disbalance. Left: 0.577151704361 %, Right: > 0.422848295639 % > Aber denk daran: Hier sind schon 5 Tasten getauscht, also sind 10 Tasten > nicht wie in Qwertz, d.h. gut 30% der Grundtasten. Ja, das ist ja Ziel der Übung mit eher wenig Tastentauschen schon relativ viel zu "bewegen". > 1 Schritt: > > qwört zuiopü > asdfg hjkleä > <yxcvb nm,.- > > # 5.49430220849 billion total penalty compared to notime-noeffort > # 4.93842830764 mean key position cost in file 1gramme.txt > # 6.28664448141 % finger repeats in file 2gramme.txt > … > # 1.26991478846 billion (rows/dist)² to cross > > > 2 Schritte: > > qwört zuidpü > asofg hjkleä > <yxcvb nm,.- > > # 4.52732840044 billion total penalty compared to notime-noeffort > # 4.96885562131 mean key position cost in file 1gramme.txt > # 6.24853022228 % finger repeats in file 2gramme.txt > … > # 0.769091951374 billion (rows/dist)² to cross >> Erwartet hätte ich, dass auch auf jeden Fall ein Tausch mit n (z. B. >> mit j, k oder ö) eine deutliche Besserung (laut Berechnungen bringt), >> da ein n sehr häufig vorkommt und nicht sooo super liegt und in der >> Grundzeile auf jeden Fall Vorteile bringen sollte. Ich sehe, dass im obigen Layoutvorschlag der zweitgenutzte Buchstabe immer noch nicht in die Grundzeile gerutscht ist. Mmh, das wundert mich immer noch etwas. >> Vielleicht hab' ich aber auch das Skript und die Ausgabe noch nicht >> verstanden? Den Quelltext hab' ich noch nicht im Detail verdaut, >> sondern nur kurz geschaut, wo ich Anpassungen zur Berechnung von >> qwertz ausgehend machen muss. > Idealerweise kannst du einfach in die Funktion evolve_a_layout schauen. Da > nur an 2 Stellen NEO_LAYOUT durch QWERTZ_LAYOUT ersetzen, schon gehst du von > qwertz aus. So hatte ich das, wie in meinem Posting beschrieben, auch gemacht :-) War dann aber offensichtlich über die falschen Kosten mit ß _und_ die generellen Codepage-Probleme Python / Windows-Shell gestoßen :-( Hab' im Moment nur _sehr_ begrenzt Zeit, aber mir ein paar Gedanken gemacht. Die Optimierung über ein Programm ist sicher eine sehr gute Möglichkeit ein schönes Layout zu finden, _aber_ ich habe hier gemerkt, dass man eine gute Ecke Gehirnschmalz in die Fragestellung werfen muss, damit ich ein Programm entsprechend konditionieren kann, um ein gutes Ergebnis herauszubekommen. Wenn man sieht, dass Dvorak "gefühlt" bei sehr vielen Anwendern so hoch im Kurs steht -- Ulf spricht ja sogar von der Dvorak-Magie, wenn ich mich recht erinnere -- dann wird deutlich, dass die wohlüberlegte Anordnung der Tasten das entscheidende ist und der Computer nur ein sehr nützliches, aber zweitrangiges Hilfsmittel sein wird. Hier meine Gedanken, wie man evtl. ein Stück näher zu guten Gewichtungen für den Optimierer kommen kann: Man überlegt sich logisch, welche Optimierung bei _einfachen_ überschaubaren Fragestellungen herauskommen müssten. Das fängt an mit einem Tausch eines Tastenpaars. Von den Bi- und Trigrammen abgesehen, kann man sich recht leicht überlegen können, welcher Tausch von einem Tastenpaar die größte Änderung in einem Layout bringt. Da e mit Abstand am häufigsten vorkommt, braucht man kein Hellseher sein, dass das in die Grundreihe "muss". Wenn man dann schaut, wer in der Grundreihe der schlechteste 1-Gramm-Buchstabe ist, kommt man sofort auf das ö. Aha, passt. Hat deine Optimierung auch gefunden. So, nun schau' ich wer ist der zweithäufigste Buchstabe? Das n! Also soll das n auch in die Grundreihe. Das sollte doch einen großen Nutzen bringen, wenn es keinen "wichtigen" Buchstaben dafür verdrängen muss. Ein Blick in die 1-Gramme zeigt, dass das j ein guter Kandidat wäre. O.K. Der Tausch wird sicher eine große Änderung bringen. Jetzt schaue ich und sehe, dass mit den derzeitigen Gewichtungen als zweiter Tausch das Optimierungs-Skript d gegen o tauscht. Meinst Du, dass das tatsächlich der zweitwichtigste / effektivste Tausch ist? Aus obiger Überlegung heraus, nehme ich sehr stark an, dass das nicht der Fall ist. Klar, die Überlegung basiert nur auf den 1-Grammen soweit. Trotzdem würde es mich wundern, wenn das häufig genutzte n auf der nicht sooo dollen Position (gut, sooo schlecht ist sie auch nicht) bleiben wird und nicht ziemlich schnell in die Grundreihe rutscht? Vor allem _muss_ auch das j aus der Grundreihe verschwinden. Bei den 5 wichtigsten / effektivsten Tauschpaaren, bin ich mir sehr sicher, dass das dabei sein "muss" und auch recht bald in einer Optimierungsreihenfolge auf der Grundreihe Platz machen muss. Meinst Du das auch? Wenn man dem zustimmt, hat man so also schon mal 'n Mini-Check, ob eine aktuelle Gewichtungsverteilung (du nennst das "Kosten", korrekt?) "ziemlich" sinnvoll sein wird. Ich schließe daraus, dass die derzeitigen Kosten noch nicht ausgewogen verteilt sind, um "Tippkomfort" wiederzuspiegeln. So, bin noch nicht sehr schlau. Die Fragestellungen die sich aufdrängen sind: 1) Wie findet man eine gute Kostenverteilung? Das weiss ich leider nicht! :-( Aber ich denke, dass man aus obigen Überlegungen schon recht gut ausschließen kann, welche Kostenverteilungen noch nicht wirklich gut sein können, wenn die ersten Schritte bei einer Tauschoptimierung noch nicht zu den logischen Schlüssen führen. Aber ich glaube man macht einen Fehler, wenn man die Kostenverteilung als erste Frage stellt. Wenn ich überlege wo wir überhaupt hinwollen, dann ist die Antwort ganz leicht: Ziel ist "Optimierter Tippkomfort". Wer kann "optimalen Tippkomfort" beurteilen? Nur der Mensch. Daraus folgt, dass man zwingend "Tippexperimente" mit Leuten machen muss -- ähnlich wie bei psychophysikalischen Experimenten, wenn es um Sinneswahrnehmungen geht (dazu hatte ich schon einen Link zu einem interessanten Artikel gepostet). Ich habe im Moment noch keine Idee, wie man solche Experimente aufbauen müsste, aber ich denke ein guter Schritt in die richtige Richtung könnte folgender sein. Logisches Überlegen anhand der 1-Gramme, welche Buchstaben in die Grundstellung (8 Stück) sollten. Wenn man zustimmt, dass ein Text am bequemsten zu tippen wäre, wenn man nur die 8 Finger in der Grundstellung bewegen müsste, so sollten die ersten 8 1-Gramme in der Grundstellung landen. Dem Programm könnte ich also schon vorschreiben, dass die Variation dieser Buchstaben nur noch in der Grundreihe zu erfolgen hat! Wenn man sagt, die beiden häufigsten Buchstaben auf die stärksten / "bequemsten" Finger sollen -- für mich wären das die Zeigefinger, so kann man schon festlegen, dass die zwei Buchstaben dort landen müssen. Das macht man weiter und stellt einige Nebenbedingungen auf, die erfüllt werden müssen oder zumindest sollen. Man kann ja z.B. die ersten 10 Buchstaben als "Vorschläge" für die 8 Grundfinger vergeben, damit ein Optimierer noch Spiel hat auf Bi- und Trigramme zu optimieren. Ich meine, dass man so zu einem guten Layout kommen müsste. Sprich' man müsste einen guten Schwung an Nebenbedingungen überlegen. Diese könnte man ggf. auch in kleinen Einzelexperimenten austesten, ob / welche davon sinnvoll sind. Das würde so ein Schritt zu einer "großen" Lösung (komplett neues Layout) sein. Das Testen von Kostenstrukturen kann man so durchführen, dass man ein berechnetes Layout (z. B. deines oben) nimmt und die häufigsten 30 Wörter (damit es überschaubar bleibt, würd' ich mal damit anfangen) jeweils (mit der Übersetzungsmethode) jeweils mehrfach nacheinander im Vergleich zu einem "handoptimierten" oder anderen zweiten berechneten Layout tippt. Dann kann man sehr schön Punkte vergeben, in welchem Layout sich ein Wort besser / gleich / schlechter tippen lässt. Wenn das einige Leute machen, kann man aus den Bewertungen eine "Tippfühl-Note" berechnen (z. B. 3 / 8 Leuten fanden Layout a besser als Layout b für ein bestimmtes Wort. ) Das macht man für alle Wörter und berechnet dann die gemittelte Tippfühl-Note für ein Layout. Wenn man ein Layout fix setzt, hat man so einen Bezugspunkt und kann andere Layouts dagegen prüfen! Dann überlegt man wieder, welche Kostenstruktur man erstellen könnte, um eine möglichst hohe Korrelation dieser im Experiment ermittelten Tippfühl-Werte zu erhalten. Uns "schwupp" hat man nach einer Menge Arbeit und vielen Experimenten ein tolles Layout ... ;-) Soo, hab' schon zu lange getippelt heute ... Nur noch eines: ein stückweise "Paartausch" wird nicht zum besten Layout führen, wenn man nicht extrem viele Iterationen mit Mehrfach-Wiedertauschungen durchführen möchte. Von daher wäre es wichtig die Nebenbedingungen festzulegen, auf welchen Plätzen man schonmal bestimmte Zeichen auf jeden Fall oder auf keinen Fall haben will. Ich kann mir vostellen, dass man "per Hand" (sprich Überlegung) einige Platzierungsmöglichkeiten gemäß der 1-Gramme vergibt (gemäß grundlegender Überlegungen und Experimente) und dann in einem eher kleineren Bereich noch über die Computeroptimierung die besten Plätze bei Berücksichtigung über die Bi- und Trigramme ausrechnet. Ist jetzt noch nicht alles von vorn bis hinten und vielleicht hattet ihr auch die Überlegungen alle schon, aber vielleicht auch nicht? Ich hatte mir schon ein qwertz-Layout mit 5-Tauschpaaren überlegt und meine, dass das schon in die richtige Richtung gehen könnte. Was hältst Du von der Grundidee mehr Bedingungen festzumachen? Für ein neues 5er-Layout könnte man 5 bis 7 mögliche "gute" und 5 bis 7 mögliche "schlechte" Zeichen suchen, die sich "bewegen" müssen und evtl. schon einen Vorschlag in Form von Gewichtungswünschen für eine bestimmte Taste festzulegen. Dann kann man auf die Bi- und Trigramme prüfen und mit relativ wenig Kombinationen ein -- hoffentlich schönes -- Layout bekommen? Das Projekt wäre eigentlich etwas schönes für eine Forschungseinrichtung. Die Experimente könnte man auch wunderbar über's Internet ausführen lassen und so 'ne schöne Menge an Leuten beteiligen und eine gute Statistik machen können. Gibt's denn keine Forschungseinrichtung, die sich aktuell um sowas kümmert oder kümmern könnte? Viele Grüße Peter P.S.: Bin auf multi-criteria decision analysis (MCDA) aufmerksam geworden. Stichwort ist wohl auch http://en.wikipedia.org/wiki/Goal_programming Hat einer von euch schonmal geschaut, was das ist und ob das hier helfen könnte?