Utilisateur:Kikoun/Statistiques
Questions à règler
- « ' » séparateur de mots ?
J'ai fais quelques comptes (en regardant les messages envoyés et reçus par deux personnes à l'œil), j'en conclue que la touche 0 servant de séparateurs de mots et de ponctuations aurait une suite de caractère un peu près de ce style :
espace ; ' ; . ; , ; : ; ( ; )
Bizarrement, la virgule est assez peu utilisée en sms dans mon petit compte statistique à l'arche. Les sms sont en effet fait généralement de phrases courtes.
Statistiques sur l'utilisation des touches sur un portables
Écriture T9
En écriture T9 ( On ne tape qu'une fois une touche pour chaque lettre du mot. Le portable se chargeant d'associer un mot pour la suite donnée. ), on dispose parfois de plusieurs choix pour une suite de touches données.
Tous ces tests ne se basent que sur l'association des lettres sur une touches et les tentatives de clavier ne prennent pas en compte le cas d'une écriture normale.
Je considère « - » comme une lettre à par entière dans la mesure où « peut-être » et autres sont des mots bien distinct de « peut » et « être ». Dans un premier temps, « ' » sera aussi considéré comme tel.
J'ai décidé de placer tous les signes de ponctuation sur la touche 0. Cela libère une touche tout en chargeant la touche 0 qui est ma fois guère utiliser. Il faudra toutefois prévoir les cas où l'écriture T9 devra choisir entre « ' » et espace. ( cas de « à », des « x'xxxx » et des « xxxx'x » )
Un regroupement des résultats obtenus sur ces tests et ceux sur l'écriture normale sera réalisé plus tard.
Clavier Orig
#!/usr/bin/perl while (<>) { tr/AÂÄÃÀBCDEÈÊËFGHIÌÎÏJKLMNÑOÒÔÖÕPQRSTUÙÛÜVWXYZ/aaaaabcdeeeefghiiiijklmnnooooopqrstuuuuvwxyz/; tr/âäãàçêëéèìîïñôöõòùûüÿ/aaaaceeeeiiinoooouuuy/; tr/-abcdefghijklmnopqrstuvwxyz\'/1222333444555666777788899991/; $list{$_}++; } foreach $key ( keys %list ) { $stat{$list{$key}}++; } foreach $key ( sort (keys %stat) ) { print "$key : $stat{$key}\n" }
Le résultats est donné sous la forme [nombre de possibilités de mots : nombre de suite de touche donnant ce nombre de possibilités].
# aspell dump master fr > dump-fr.txt # wc dump-fr.txt 629569 629569 7947278 dump-fr.txt # portable.pl < dump-fr.txt 1 : 467423 10 : 3 2 : 68635 3 : 3578 4 : 2922 5 : 245 6 : 105 7 : 30 8 : 37 9 : 7 # aspell dump master en > dump-en.txt # wc dump-en.txt 138599 138599 1327680 dump-en.txt # portable.pl < dump-en.txt 1 : 112909 10 : 6 11 : 10 12 : 8 13 : 4 14 : 2 15 : 3 16 : 2 17 : 1 18 : 2 19 : 1 2 : 7117 21 : 1 24 : 1 29 : 1 3 : 1591 4 : 661 5 : 282 6 : 144 7 : 76 8 : 56 9 : 24
Sur un clavier de portable, l'on remarque que des lettres comme le r et s sont sur la même touches. Inversons quelques lettres courantes dans ce cas ( s<>z et u sur la touche 1 ).
Clavier 1
tr/-abcdefghijklmnopqrstuvwxyz\'/1222333444555666777981899971/;
bportable.pl < dump-fr.txt 1 : 485517 2 : 65045 3 : 1712 4 : 2025 5 : 63 6 : 41 7 : 3 8 : 18
On obtient ainsi un plus grand nombre de mots n'ayant qu'une suite de touche unique. Mais on réduit surtout le nombre de cas où il y a conflit et le nombre de possibilité dans ces cas allant jusqu'à supprimer les cas où il y avait 9 ou 10 possibilités.
En replaçant les lettres dans l'ordre d'après leur fréquences d'utilisation. On obtiens un premier clavier très simples à retenir. On peux faire mieux mais ce n'est qu'un début.
Clavier 1
╔══════╦══════╦══════╗ ║ 1 ║ 2 ║ 3 ║ ║ u' ║ acb ║ edf ║ ╠══════╬══════╬══════╣ ║ 4 ║ 5 ║ 6 ║ ║ igh ║ ljk ║ nom ║ ╠══════╬══════╬══════╣ ║ 7 ║ 8 ║ 9 ║ ║ rpqz ║ tv ║ sxyw ║ ╠══════╬══════╬══════╣ ║ * ║ 0 ║ # ║ ║ ║ ║ ║ ╚══════╩══════╩══════╝
Maintenant en plaçant les 9 lettres ( ' et - compris ) les plus fréquentes sur des touches différentes puis en plaçant les lettres restantes 2 à 2 selon leur fréquence en partant de la dernière touche. NB: remarquer que la touche 7 ne change pas par rapport au clavier précédant. J'adore. NB: la troisième colonnes représentes le pourcentage de mots concernés.
Clavier 2
╔══════╦══════╦══════╗ ║ 1 ║ 2 ║ 3 ║ ║ ezwk ║ sxy ║ aj- ║ ╠══════╬══════╬══════╣ ║ 4 ║ 5 ║ 6 ║ ║ igh ║ tfb ║ n'q ║ ╠══════╬══════╬══════╣ ║ 7 ║ 8 ║ 9 ║ ║ rmv ║ ucl ║ lod ║ ╠══════╬══════╬══════╣ ║ * ║ 0 ║ # ║ ║ ║ ║ ║ ╚══════╩══════╩══════╝ tr/-abcdefghijklmnopqrstuvwxyz\'/3358915444319769867258712216/; # bportable.pl < dump-fr.txt 1 : 561731 : 89.2 2 : 29297 : 9.6 3 : 2409 : 0.9 4 : 356 : 0 5 : 65 : 0 6 : 27 : 0 7 : 14 : 0
On obtient un résultat très satisfaisant. Peut-être votre futur clavier de portable !
Voici d'autres variantes pour essayer d'alléger la touche 1.
Clavier 3
╔══════╦══════╦══════╗ ║ 1 ║ 2 ║ 3 ║ ║ exy ║ szwk ║ aj- ║ ╠══════╬══════╬══════╣ ║ 4 ║ 5 ║ 6 ║ ║ igh ║ tfb ║ n'q ║ ╠══════╬══════╬══════╣ ║ 7 ║ 8 ║ 9 ║ ║ rmv ║ ucl ║ lod ║ ╠══════╬══════╬══════╣ ║ * ║ 0 ║ # ║ ║ ║ ║ ║ ╚══════╩══════╩══════╝ tr/-abcdefghijklmnopqrstuvwxyz\'/3358915444329769867258721126/; # bportable.pl < dump-fr.txt 1 : 541320 : 85.9 10 : 1 : 0 14 : 1 : 0 2 : 38066 : 12 3 : 2751 : 1.2 4 : 633 : 0.4 5 : 129 : 0 6 : 66 : 0 7 : 31 : 0 8 : 4 : 0 9 : 2 : 0
Clavier 4
╔══════╦══════╦══════╗ ║ 1 ║ 2 ║ 3 ║ ║ e ║ sxy ║ aj- ║ ╠══════╬══════╬══════╣ ║ 4 ║ 5 ║ 6 ║ ║ igh ║ tfb ║ n'q ║ ╠══════╬══════╬══════╣ ║ 7 ║ 8 ║ 9 ║ ║ rmvk ║ uclw ║ lodz ║ ╠══════╬══════╬══════╣ ║ * ║ 0 ║ # ║ ║ ║ ║ ║ ╚══════╩══════╩══════╝ tr/-abcdefghijklmnopqrstuvwxyz\'/3358915444379769867258782996/; # bportable.pl < dump-fr.txt 1 : 558766 : 88.7 2 : 30211 : 9.4 3 : 2630 : 1.2 4 : 435 : 0 5 : 85 : 0 6 : 30 : 0 7 : 14 : 0 8 : 6 : 0
Écriture T9 sans « ' »
On reprend tous sans prendre en compte « ' » et avec statistiques des touches utilisés. Le deuxième tableau représente le nombre de frappes de la touche ainsi que le pourcentage de frappes.
#!/usr/bin/perl while (<>) { if ( m/^[^']*$/ ) { $line++; tr/AÂÄÃÀBCDEÈÊËFGHIÌÎÏJKLMNÑOÒÔÖÕPQRSTUÙÛÜVWXYZ/aaaaabcdeeeefghiiiijklmnnooooopqrstuuuuvwxyz/; tr/âäãàçêëéèìîïñôöõòùûüÿ/aaaaceeeeiiinoooouuuy/; # Expression régulière à modifier selon le clavier #tr/-abcdefghijklmnopqrstuvwxyz\'/1222333444555666777788899991/; # Clavier Orig #tr/-abcdefghijklmnopqrstuvwxyz\'/1222133444555666777983899971/; # Clavier 1 tr/-abcdefghijklmnopqrstuvwxyz\'/3358915444319769867258712216/; # Clavier 2 $list{$_}++; foreach $i ( split(//, $_) ) { if ( $i =~ m/[1-9]/ ) { $touche{$i}++; $nbr_touches++; } } } } foreach $key ( keys %list ) { $stat{$list{$key}}++; } foreach $key ( sort (keys %stat) ) { $prstat = (int ( $stat{$key} / $line * 1000 * $key )) / 10; print "$key : $stat{$key} : $prstat\n"; } foreach $key ( sort (keys %touche) ) { $prstat = (int ( $touche{$key} / $nbr_touches * 1000)) / 10; print "$key : $touche{$key} : $prstat\n"; }
Clavier Orig
bportable.pl < dump-fr.txt 1 : 289062 : 84.5 2 : 20060 : 11.7 3 : 2490 : 2.1 4 : 810 : 0.9 5 : 208 : 0.3 6 : 73 : 0.1 7 : 29 : 0 8 : 16 : 0 9 : 6 : 0 10 : 3 : 0 1 : 5345 : 0.1 2 : 660382 : 18.2 3 : 505256 : 13.9 4 : 419405 : 11.5 5 : 145295 : 4 6 : 664834 : 18.3 7 : 749715 : 20.7 8 : 403233 : 11.1 9 : 63622 : 1.7
Clavier 1
# bportable.pl < dump-fr.txt 1 : 300982 : 88 2 : 17120 : 10 3 : 1463 : 1.2 4 : 423 : 0.4 5 : 57 : 0 6 : 29 : 0 7 : 1 : 0 8 : 2 : 0
Clavier 2
# bportable.pl < dump-fr.txt 1 : 307981 : 90.1 2 : 13149 : 7.6 3 : 1999 : 1.7 4 : 245 : 0.2 5 : 63 : 0 6 : 18 : 0 7 : 14 : 0 8 : 1 : 0 1 : 416126 : 11.5 2 : 379644 : 10.4 3 : 509486 : 14 4 : 419405 : 11.5 5 : 330102 : 9.1 6 : 271851 : 7.5 7 : 418329 : 11.5 8 : 329547 : 9.1 9 : 542597 : 15
Le prochain clavier reprends le principe du clavier 2 sans prendre en compte « ' ».
Clavier 5
╔══════╦══════╦══════╗ ║ 1 ║ 2 ║ 3 ║ ║ ewk ║ syz ║ a-x ║ ╠══════╬══════╬══════╣ ║ 4 ║ 5 ║ 6 ║ ║ ihj ║ tbg ║ nqf ║ ╠══════╬══════╬══════╣ ║ 7 ║ 8 ║ 9 ║ ║ rmv ║ ucp ║ lod ║ ╠══════╬══════╬══════╣ ║ * ║ 0 ║ # ║ ║ ║ ║ ║ ╚══════╩══════╩══════╝ tr/-abcdefghijklmnopqrstuvwxyz/335891654441976986725871322/; # Clavier 5 # bportable.pl < dump-fr.txt 1 : 296697 : 86.8 14 : 1 : 0 2 : 17747 : 10.3 3 : 2099 : 1.8 4 : 539 : 0.6 5 : 115 : 0.1 6 : 45 : 0 7 : 30 : 0 8 : 9 : 0 1 : 379939 : 10.5 2 : 407136 : 11.2 3 : 512165 : 14.1 4 : 370899 : 10.2 5 : 338572 : 9.3 6 : 317903 : 8.7 7 : 418329 : 11.5 8 : 329547 : 9.1 9 : 542597 : 15
Pas terrible, autant garder le clavier 2. Et si on libérait le « s » en chargeant « e ».
Clavier 6
╔══════╦══════╦══════╗ ║ 1 ║ 2 ║ 3 ║ ║ewkyz ║ s ║ a-x ║ ╠══════╬══════╬══════╣ ║ 4 ║ 5 ║ 6 ║ ║ ihj ║ tbg ║ nqf ║ ╠══════╬══════╬══════╣ ║ 7 ║ 8 ║ 9 ║ ║ rmv ║ ucp ║ lod ║ ╠══════╬══════╬══════╣ ║ * ║ 0 ║ # ║ ║ ║ ║ ║ ╚══════╩══════╩══════╝ tr/-abcdefghijklmnopqrstuvwxyz/335891654441976986725871311/; # Clavier 6 # bportable.pl < dump-fr.txt 1 : 308763 : 90.3 2 : 12962 : 7.5 3 : 1803 : 1.5 4 : 308 : 0.3 5 : 61 : 0 6 : 9 : 0 7 : 14 : 0 1 : 434310 : 12 2 : 352765 : 9.7 3 : 512165 : 14.1 4 : 370899 : 10.2 5 : 338572 : 9.3 6 : 317903 : 8.7 7 : 418329 : 11.5 8 : 329547 : 9.1 9 : 542597 : 15
Le meilleur résultat en tatonnant. Je crois qu'il est temps de faire place à la force brute. Le clavier 6 avec les « - » et « x » en 2.
Clavier 7
╔══════╦══════╦══════╗ ║ 1 ║ 2 ║ 3 ║ ║ewkyz ║ s-x ║ a ║ ╠══════╬══════╬══════╣ ║ 4 ║ 5 ║ 6 ║ ║ ihj ║ tbg ║ nqf ║ ╠══════╬══════╬══════╣ ║ 7 ║ 8 ║ 9 ║ ║ rmv ║ ucp ║ lod ║ ╠══════╬══════╬══════╣ ║ * ║ 0 ║ # ║ ║ ║ ║ ║ ╚══════╩══════╩══════╝ tr/-abcdefghijklmnopqrstuvwxyz/235891654441976986725871211/; # Clavier 7 # bportable.pl < dump-fr.txt 1 : 308577 : 90.2 2 : 13062 : 7.6 3 : 1788 : 1.5 4 : 318 : 0.3 5 : 58 : 0 6 : 10 : 0 7 : 14 : 0 1 : 434310 : 12 2 : 366805 : 10.1 3 : 498125 : 13.7 4 : 370899 : 10.2 5 : 338572 : 9.3 6 : 317903 : 8.7 7 : 418329 : 11.5 8 : 329547 : 9.1 9 : 542597 : 15