Utilisateur:Yvain

De Disposition de clavier bépo
Révision datée du 13 août 2013 à 01:24 par Yvain (discussion | contributions) (→‎Exploitation des statistiques de frappe : : analyse de la distribution statistique des vitesses)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

Bonjour,

Je me suis mis au bépo par hasard début juin 2013 parce que j’enrageais de ne pas trouver comment saisir l’« œ » sur mon clavier AZERTY…

J'ai commencé l'apprentissage sous Ktouch et Klavaro, puis je suis devenu friand du Dactylotest. Merci à Tazzon, son concepteur !

J’en suis maintenant aux alentours de 40 mots par minute, et compte bien progresser encore un peu.


Exercices pour KTouch

sous KDE 4.10

Pour ajouter la disposition bépo de clavier 105 touches et les exercices « classiques » d’apprentissage de la dactylographie à Ktouch sous KDE 4.10, vous pouvez utiliser l'archive tar suivante : [1].

Son contenu doit être placé à l’un des endroits suivants :

  • ~/.kde/share/apps/ktouch/ ;
  • /usr/share/kde4/apps/ktouch/.

Elle contient les deux fichiers suivants :

  • keyboardlayouts/fr.bepo.xml (la disposition bépo pour clavier 105 touches) ;
  • courses/fr.bepo.xml (les exercices).

On peut aussi importer ces deux fichiers dans KTouch sans les installer depuis l’« Éditeur de cours et de disposition du clavier » intégré.

sous KDE 4.11

La version de KTouch livrée avec KDE 4.11, dont la sortie officielle est prévue le 14 août 2013, devrait intégrer d'origine la disposition bépo.

Petit outil d'étude de frappe

J'ai beau être vraiment content du Dactylotest, on ne se refait pas (enfin, si, on peut passer de l'azerty au bépo). En bon geek, il a fallu que je m'amuse à recoder un bout d'analyseur de frappe en Perl. Je n'ose pas dire clone du dactylotest, mais je m'en suis fortement inspiré. Et puis parce que j'avais (j'ai ?) encore du mal avec un certain nombre de caractères spéciaux notamment pour la programmation, j'ai rajouté un générateur de séquences de caractères aléatoires à taper.

Si d'aventure d'autres ont envie de voir ça, le tout est disponible ici : [2].

C'est un peu brut de fonderie, mais voici quelques explications :

type_analyst

  type_analyst.pl[3]
Le programme principal, à utiliser avec un fichier texte à reproduire, qui génère une trace de la frappe et la concatène à un fichier de statistiques

  Syntaxe : ./type_analyst.pl fichier_texte fichier_stat

N'importe quel fichier encodé en ASCII ou utf-8 peut être utilisé comme « fichier_texte » à reproduire, que ce soit un bout de texte littéraire ou un extrait de programme informatique. En utilisant « - » comme nom de fichier texte, le texte à taper est lu depuis l'entrée standard (ou depuis un « pipe » UNIX).
On peut arrêter la frappe en cours de texte en tapant clavier bépoCtrl-clavier bépoD.
À la fin de la frappe, le programme affiche les statistiques courantes de vitesse et de précision, puis une distribution des délais de frappe de chaque touche correcte (minimum, premier quartile, médiane, troisième quartile, maximum), et enfin le détail des frappes erronées.
Un historique complet de la frappe (similaire au fantôme du dactylotest), est enregistré à la fin du fichier indiqué par « fichier_stat », pour permettre une exploitation ultérieure des résultats et faire des statistiques à long terme (ce que je n'ai pas encore fait…).
Chaque ligne du fichier d'historique contient, sur quatre colonnes, le caractère attendu, le caractère frappé, l'intervalle de temps depuis la frappe précédente, et un indicateur pour distinguer les frappes correctes (0), et les frappes erronées (1).
  type_analyst[4]
  recueil_amic.txt[5]
Une petite surcouche qui utilise le recueil de textes d'Amic (On y retrouve l'essentiel des textes du dactylotest) pour tirer au hasard un texte de 500 à 1000 caractères.

  Syntaxe : ./type_analyst

Cette surcouche génère un unique extrait de texte aléatoire tiré du fichier « recueil_amic.txt », et l'utilise pour appeler le programme principal en stockant systématiquement les résultats à la fin d'un fichier « amic.dat ».
Note : tous les tirets longs sont sur cadratin (clavier bépoAltGr-clavier bépo1), les polices à chasse fixe ne permettant pas de distinguer les différents tirets, et les apostrophes sont droites, parce que je suis quand-même un peu du côté programmeur…

type_random

  type_random.pl[6]
Le programme principal, qui affiche une séquence aléatoire de caractères à reproduire. Il génère aussi une trace de la frappe et la concatène à un fichier de statistiques

  Syntaxe : ./type_random.pl fichier_stat

Les caractères sont pris au hasard dans l'ensemble des caractères ASCII et les différents signes de ponctuation et lettres accentuées possibles en français courant.
On arrête la frappe en cours de texte en tapant clavier bépoCtrl-clavier bépoD.
Pour l'instant en dur dans le programme, on peut changer la fréquence d'apparition des différents caractères. J'ai distingué les catégories suivantes : l'espace, les 26 lettres minuscules non ornées les lettres minuscules ornées (cédille, accents, ligatures), les majuscules non ornées et ornées, les chiffres, la ponctuation générale, et les caractères spéciaux.
Le fichier d'historique indiqué par « fichier_stat » est complété à la fin de la frappe suivant le même format que pour « type_analyst ».
  type_random[7]
Une petite surcouche qui ne sert qu'à réutiliser toujours le même fichier de statistiques.

  Syntaxe : ./type_random

Le fichier de statistiques utilisé est alors « random.dat ».

Exploitation des statistiques de frappe

Première constatation sur la distribution brute des temps entre touches

En utilisant le programme type_analyst présenté ci dessus pendant quelques jours, j'ai ainsi généré pour l'instant une base de données de frappe de 8707 caractères.

Alors, naïvement, que je m'attendais à trouver une répartition aléatoire standard (une courbe en cloche, à raffiner un peu), je tombe sur un histogramme très propre, nais de forme assez surprenante avec une longue traîne peu bruitée…

Et en avant pour la chasse à la distribution !

En calculant les trois premiers moments (moyenne, espérance des carrés puis des cubes des écarts à la moyenne), on confirme bien cette grosse asymétrie sur le troisième moment, mais en même temps pas besoin d'être Jérémie, comme disait l'autre, pour s'en rendre compte…

m1 0.3009890 soit une moyenne à 0.301 s
m2 0.0395808 soit un écart-type à 0.199 s
m3 0.0203323 soit une asymétrie de +2.58

Bon, aussi, ici, on pourra voir que j'ai beau prétendre faire du quarante à la minute, l'ordinateur me renvoie brutalement un 39,86 mots par minute (=12/m1)

En revanche, en connaissant ces trois premiers moments, et en utilisant d'autre part les formes closes (les équations simples) des moments de différentes distributions connues, on peut facilement trouver une distribution approchant la statistique observée. [8]

Pour l'éventuel lecteur curieux, voici le résumé de ma chasse à la distribution :

Distribution Erlang[9]
Cette distribution correspond au temps d'attente entre k événements aléatoires d'un processus de Poisson, c'est-à-dire en fait de k changements (identiques, en l'occurence) dans un système « sans mémoire », qui à tout instant peut effectuer un changement dans un temps moyen de 1/lambda. C'était mon premier pari, en imaginant qu'en gros il y avait un certain nombre (discret) de trucs à débloquer dans la tête, le corps, pour que la frappe se déclenche.
Bon, pas terrible comme approximation, on passe à côté du démarrage lent, de la forme du pic, et surtout de la traîne
Yvain stats erlang.png
Distribution Gamma[10]
Deuxième essai : on généralise la loi d'Erlang aux nombres réels, pour avoir un espace de solutions continu (comme la fonction Gamma est la généralisation de la factorielle). Après tout, l'hypothèse d'Erlang, c'était un peu gros, on n'est pas des machines, tout de même, et la pensée et le mouvant sont continus.
Au final, c'est visuellement pire que la distribution d'Erlang. Pourtant, avec la méthode des moments, on a la même moyenne et le même écart-type que la statistique. Le gros problème, là, c'est que la distribution Gamma ne permet pas de capturer à la fois la longue traîne et le pincement autour des points d'inflexion (C'est le moment d'ordre 4 qui est trop faible, mais je n'ai pas creusé plus loin avec celle-ci…).
Dans l'ordre, en fait, j'ai ensuite essayé la distribution inverse-Gamma dont plus de détail viendra ci-dessous.
Yvain stats gamma.png
Yvain stats inv-gauss.png
Yvain stats inv-gauss-retard.png

Yvain stats normal-inv-gauss.png

Yvain stats inv-gamma.png

Et maintenant il est trop tard, j'arrête maintenant pour cette fois. Les analyses « pratiques », voire « physiologiques » sur la bonne approximation par les deux dernières attendront une autre fois !