Hi Andreas, 

On Wednesday 20 October 2010 22:49:01 wettstein...@solnet.ch wrote:
> Auch wenn die Programmiersprache oder sogar das Programmierprojekt
> feststeht, man müsste noch wissen ob emacs, vi oder Eclipse benutzt
> wird.  Was im Korpus steht ist nicht alles auch getippt worden.  Tools
> nehmen unter Umständen einiges ab.

Stimmt. Für eine extrem einfache max() Funktion sähe mein Korpus in emacs in 
etwa so aus: 

def max(l):
ges = 0
for num in l: 
ges += num
<tab><tab>ret<tab> ges

… tab muss auf eine Daumentaste :)

> Die bevorzugten Symbole sind in unterschiedlichen Disziplinen
> verschieden.  Ich glaube nicht, dass sich ein repräsentativer Korpus für
> mathematische Symbole finden lässt.  Ausserdem, wenn man annimmt, dass
> die lateinischen und griechischen Buchstaben aneinander kleben (a am α
> und so weiter) müsste man normale Texte und Formeln gegeneinander
> abwiegen.

Das stimmt. Würde ich eigentlich dann auch so machen (ist aber in switch_key 
noch nicht drin). 

> Ja, man braucht einen hinreichend korrekten Korpus, weil nur ein
> korrekter Korpus repräsentiert, was man tippen will.  Ich habe mir
> tatsächlich schon überlegt, meinen (3MB) Korpus zu bearbeiten, aber das
> ist viel Arbeit mit sehr begrenztem Nutzen.

Ich würde gerne mal wieder schauen, ob ich nicht einen ein-tag-korpus 
erstellen kann. Mit dem Prog von Klausler kann ich zumindest mein 
Programmieren mit emacs einfangen. 

Vielleicht kann emacs das auch direkt (müsste über einen hook gehen – 
irgendwie :) ). 

Da ich fast alles auf emacs umstellen kann (auch mein Mailprogramm), müsste 
ich so alle Daten sammeln können. 

> Das läuft darauf hinaus, dass derselbe Text bei derselben Belegung mit
> unterschiedlichen Bewegungen getippt werden kann.  Schwierig zu bewerten
> und schwierig zu lernen.  Es könnte aber wirklich die Tippeffizienz
> steigern.  Gerade auf der linken Tastaturhälfte könnte man einiges mit
> den «falschen» Fingern machen.

Jupp. Aber Neora könnte auch recht damit haben, dass ein gutes Layout das 
unnötig machen sollte. 

> > Um das hier zu berücksichtigen, müsste die Handverschiebung von M3L-M4L
> > erhalten bleiben, d.h. wir müssten komplett auf Trigramme wechseln
> > (teuer).
> 
> Da braucht man noch keine Trigramme.  Die Idee mit virtuellen Tasten ist
> ja gerade, das gleichzeitige Drücken von Mod3L und Mod4 wie einen
> einzigen Tastendruck zu behandeln.

Das würde dann den einen Sonderfall abfangen. Wenn es nicht allzu viele davon 
gibt, sollte es gehen, ja. 

> Ich bin von meiner Ansicht abgerückt.  Heute behaupte ich, man müsste
> die u-ShiftL-Kollision normal und die von u-b Kollision schwächer
> werten, weil zwischen u und b ja noch eine Taste (ShiftL) gedrückt wird.
> Das ist ein Spezialfall einer «indirekten Kollision»: Einer Kollision
> zwischen Tasten, zwischen denen eine weitere Taste mit der anderen Hand
> oder mit dem Daumen getippt wird.  Mein aktuelles Lieblingsthema.

Könntest du mir das erklären? Am besten direkt auf der Liste :)
Das ist nämlich effektiv das, an dem ich gerade dransitze und das ich genau 
jetzt korrekt machen kann. 

> Auf die Gefahr hin, dir auf die Nerven zu fallen: Vielleicht solltest du
> die N-gramm-Strafpunkte und -häufigkeiten in simplen Matrizen
> tabellieren.  

Damit fällst du mir definitiv nicht auf die Nerven. Ich habe den Port auf 
python2 (branch: py2) ursprünglich genau dafür gemacht (es gibt scipy noch 
nicht für python3, und das kann effiziente Matrizenrechnung, allerdings nur in 
2D). 

Allerdings kommt scipy zum Glück bald für py3 (numpy ist schon da). 

Ich habe allerdings noch kein effizientes System im Kopf, um das sauber zu 
machen. Wie hast du das implementiert? 

Die Kosten von Tasten (nicht Zeichen) kann ich ja eigentlich zwischencachen 
(die bleiben bei dem Layout ja gleich). Mappst du dann einfach die 
Tastenpositionen und Kosten auf eine Matrix und schreibst die Bigramme in 
Positionen um? 

> Dann ist die Auswertung im wesentlichen ein Skalarprodukt
> zwischen Strafpunkten und Häufigkeiten, und sowas rechnet sich gut und
> schnell, auch wenn in den Matrizen viele Nullen stehen die man unnütz
> abarbeitet.  Ich mache das so ähnlich, und kann auch mit Trigrammen
> einige hundert lokal optimale Tastaturen pro Minute berechnen.  

*selbst testen will* :)

Ich muss nur noch ein geeignetes Schema finden, um alle Kostenfunktionen auf 
Matrizenoperationen umzuschreiben. 

> Es würde
> mich wundern wenn es bei den numerischen Erweiterungen für Python nicht
> etwas gäbe, mit dem man zumindest bis auf eine Grössenordnung daran
> heran kommt.

Gibt es: SciPy. Noch effizienter mit scipy.weave (C++ in Python). Aber halt 
bisher nur in python2 (vermutlich nur noch ein paar Wochen lang :) ). 

Dazu, es im Python2 branch zu testen, bin ich durch pypy erstmal nicht 
gekommen (weil es im Gegensatz zu pypy Umstrukturierungen benötigt). 
Hoffentlich komme ich in 2 Wochen oder so dazu (jetzt wird es erstmal etwas 
turbulent…). 

Liebe Grüße, 
Arne
--
A man in the streets faces a knife.
Two policemen are there it once. They raise a sign:

    “Illegal Scene! Noone may watch this!”

The man gets robbed and stabbed and bleeds to death.
The police had to hold the sign.

…Welcome to Europe, citizen. Censorship is beautiful.

   ( http://draketo.de/stichwort/censorship )


Attachment: signature.asc
Description: This is a digitally signed message part.

Antwort per Email an