Compress - J’ai automatisé la moitié de ma frappe
(github.com/eschluntz)- Un outil qui crée automatiquement des raccourcis de frappe à partir de son propre corpus de textes et génère des raccourcis de saisie utilisés dans les e-mails et sur Slack
- Il analyse un corpus textuel pour proposer les raccourcis qui permettent d’économiser le plus de caractères lors de la frappe, et génère un fichier de configuration pour Autokey, un programme Linux de raccourcis clavier
- Il repère les n-grammes fréquents dans le corpus et crée des candidats pour les remplacer par des expressions plus courtes, avec un classement des suggestions calculé comme
[nombre de caractères économisés] * [fréquence de l’expression] - Le choix des raccourcis vise des abréviations faciles à mémoriser ; les abréviations que l’on souhaite pouvoir taper comme des mots sont exclues via une blacklist, et les abréviations les plus faciles à retenir sont attribuées en priorité aux expressions les plus fréquentes
- Un outil d’analyse de Slack Data Export est également fourni pour utiliser des messages Slack comme corpus
- seul l’administrateur de l’espace de travail Slack peut effectuer l’export
- seuls les canaux publics sont exportés
- il faut remplacer
USERNAME_TO_EXPORTpar le nom d’utilisateur Slack, puis exécuterparse_slack.py - la procédure inclut la suppression de l’export Slack avec
srm
- Le flux d’utilisation de base consiste à placer le corpus dans
data/corpus/*.txt, à générer les 200 meilleurs candidats dansoutput/suggested_shortcuts.yamlavecfind_suggested_phrases.py, puis à déplacer les éléments souhaités dansshortcuts.yamlet à créer le fichier de configuration Autokey avecgenerate_autokeys.py - Les dépendances s’installent avec
install.sh, et l’outil est actuellement testé avec Python3.10.12 - Autokey ne prend actuellement en charge que X11 sur Linux, pas Wayland
- La configuration Autokey générée est conçue pour ne s’appliquer que lorsque Chrome a le focus ; l’auteur indique aussi avoir rencontré davantage de problèmes dans le terminal et dans vscode, où les abréviations entraient plus souvent en conflit avec de courtes commandes Linux ou des noms de variables
1 commentaires
Avis sur Hacker News
J’ai aussi écrit un billet de blog avec une vidéo du projet : https://erikschluntz.com/software/2023/08/26/compressing-my-...
Pour une fois, c’était un side project qui m’a réellement fait gagner plus de temps que je n’en ai investi :)
L’idée est très astucieuse, mais si elle évolue avec le temps, je ne pense pas que j’aurais envie de l’utiliser.
Par exemple, si on le relance tous les six mois et que l’an dernier
dbvoulait diredebug, mais que cette année cela devientdatabase, cela peut ruiner la mémoire musculaire et les habitudes.Du coup, je serais plus intéressé par une version universelle qui aide de façon stable tout le monde, lorsqu’on la lance sur des livres, e-mails et SMS écrits par des milliers de personnes aux profils et contextes variés.
Développer
tentheetstensomethingsemble évident ; je me demande s’il serait possible de constituer un ensemble minimal d’environ 200 à 500 éléments, que tout le monde pourrait apprendre, pour en faire une sorte de « clavier standard ».https://archive.org/details/evansbasicenglis00evan
Mieux vaut utiliser le PDF ; le fichier TXT est quasiment inutilisable à cause de la mauvaise qualité de l’OCR.
Ceci est également utile : https://en.m.wikipedia.org/wiki/Most_common_words_in_English
suggested_shortcuts.yaml, puis on copie ce qu’on veut dansshortcuts.yaml, ce qui permet de contrôler manuellement les raccourcis réellement activés :)Et, comme on pouvait s’y attendre,
the -> test tout en haut de la liste : https://jonaquino.blogspot.com/2007/06/yublin-shorthand-for-...Un chimiste tape peut-être souvent
dropperet voudradp, tandis qu’un fonctionnaire préférera sans doutedepartment.Si vous n’êtes pas locuteur natif du chinois, vous ne le savez peut-être pas, mais le chinois intègre déjà ce type de fonctionnalité.
Officiellement, cela s’appelle Shuangpin et consiste à saisir deux lettres latines par mot pour entrer le mot entier : https://zh.wikipedia.org/zh-sg/%E5%8F%8C%E6%8B%BC
Même sans utiliser Shuangpin à proprement parler, la plupart des méthodes de saisie chinoises prennent en charge une fonction similaire, appelée Jianpin, pour les expressions populaires : on peut saisir seulement la première lettre latine de chaque mot afin d’entrer une expression de plusieurs mots.
Par exemple, pour saisir
xiexie, qui signifie « thank you » en chinois, il suffit généralement de taperxxpour que la plupart des méthodes de saisie chinoises proposent automatiquement les caractères chinois correspondants.Par exemple, « what do you want to eat », c’est-à-dire 「你想吃什麼」, se saisit avec
n x c s m.Xiao long baoavecXLBrelève aussi de ce cas. Je ne savais pas qu’il existait un système plus large, c’est chouette.J’aime vraiment voir ce genre de projets.
Ce week-end, j’ai travaillé sur un problème similaire, mais portant sur des mots entiers plutôt que sur des abréviations issues d’un dictionnaire créé à la main, et, dans le cas général, avec une adaptation à un corpus de texte donné.
Ce qui m’intéressait, c’était : « peut-on construire un correcteur automatique adapté à un corpus de texte donné ? » Par exemple, si l’on utilise souvent dans un document une longue expression comme
data augmentation, je voulais voir si l’on pouvait automatiser cela.L’approche consistait à calculer la surprise de mots isolés et de bigrammes dans un dataset général, le corpus du NYT, à ajouter un poids aux mots présents dans l’index à adapter, puis à construire une structure de données trie pondérée par la surprise, pour l’utiliser comme autocomplétion avancée.
Une solution fonctionnelle se trouve ici : https://github.com/capjamesg/autowrite/blob/main/autocomplet...
Il n’y a pas encore de documentation ; je prévois de l’ajouter dans les prochains jours. Si vous voulez en discuter, vous pouvez ouvrir une issue GitHub.
À moins que j’aie mal compris et que l’objectif soit de trouver des façons plus créatives de dire la même chose.
Comme idée d’extension, on pourrait ajouter un keylogger qui surveille la saisie. Bien sûr, c’est aussi un inconvénient en soi
Le principe serait d’apprendre les formulations que l’utilisateur emploie souvent, de repérer les phrases courantes, de proposer des raccourcis, puis de suggérer discrètement le raccourci chaque fois que l’utilisateur saisit la phrase complète
Ainsi, n’importe qui pourrait l’installer, la barrière à l’entrée serait faible, et la productivité pourrait augmenter progressivement avec le temps
L’idée était de conserver les données dans un stockage sécurisé sur l’appareil, afin que cela ne devienne pas un risque de sécurité
Une méthode de saisie qui fournirait sur desktop de l’autocomplétion en anglais comme sur mobile, ou des raccourcis via un framework de méthode de saisie comme
fcitx5, serait un concept intéressantEst-ce que ce serait du genre : exporter automatiquement chaque semaine l’historique Slack, calculer la fréquence des mots, puis définir manuellement plusieurs expansions à partir des résultats visibles ?
La structure utilisait
Bluetooth Keyboard -> ESP32comme hôte clavier, puis envoyait les frappes vers l’USB et vers un fichierSi l’on a le budget, il existe aussi des loggers de clavier USB/PS2 qui stockent les données sur disque
Faire converger les usages dans cette direction aiderait aussi à garder de la cohérence entre plusieurs ordinateurs, et serait utile quand on utilise plusieurs machines
Pour ma part, j’ai l’impression que la saisie n’est presque jamais le goulot d’étranglement, sauf dans quelques situations de chat
Il y a plutôt des interactions où la bande passante supplémentaire de la vidéo ou de la voix aurait aidé. Je me demande si ce type de raccourcis se traduit vraiment par un gain de temps de travail
Par exemple des échanges du type « Pouvez-vous envoyer une capture d’écran ? » ou des réponses consistant à envoyer un lien Calendly
Même quand j’écris de longs textes, il m’arrive souvent d’être frustré parce que mes pensées vont plus vite que ma frappe, donc cela aide aussi sur ce point
La frappe est une tâche manuelle qui interrompt la réflexion ; plus on réduit le temps passé à entrer et sortir de la saisie, plus on peut revenir rapidement à la pensée
J’ai passé pas mal de temps à essayer de créer ma propre extension de texte
C’était beaucoup plus difficile que prévu, et il est compliqué de trouver des alias qui apportent suffisamment de valeur sans se déclencher trop souvent par erreur
Comme je communique tous les jours dans plusieurs langues, c’est devenu encore plus complexe, si bien que j’ai maintenant séparé les alias par application
Malgré tout, les déclenchements intempestifs restent présents, et j’en arrive plutôt à la conclusion qu’un délimiteur est généralement nécessaire
kk,zz,qqPar exemple,
qqmecorrespond à ma signature d’e-mailJ’aimerais que l’outil de l’article propose aussi des alias pour des phrases plus longues que ce que j’ai vu dans le README. J’ai entendu dire que TextExpander pour macOS faisait cela, mais je ne suis pas utilisateur de Mac
L’une des tâches TODO consiste aussi à générer une liste de blocage des alias à éviter à partir du corpus de textes réels analysé
À titre personnel, je l’avoue, je n’ai jamais aimé les abréviations façon SMS utilisées sur les téléphones d’avant l’iPhone
C’est l’une des raisons pour lesquelles j’utilisais très peu les SMS ou messages texte, sauf quand c’était vraiment nécessaire
J’utilise l’extension de texte depuis les débuts de TextExpander sur iOS et macOS, et même si le clavier de l’iPhone est très bon, ressaisir sans cesse des informations comme mon adresse personnelle, des plans domicile/bureau, ou des informations professionnelles et personnelles restait pénible. TextExpander m’a beaucoup aidé
Plus tard, quand TextExpander est passé à un modèle par abonnement, j’ai commencé à chercher des alternatives, car personnellement je ne pense pas que ce modèle convienne à ce type d’outil. Les Snippets inclus dans le Powerpack d’Alfred étaient une meilleure alternative
macOS/iOS disposent aussi de « Text Replacements » intégrés, mais ils échouent souvent hors des apps Apple. Ce qui est présenté ici ressemble à Text Replacement d’Apple ; pour ma part, je garde cette fonctionnalité, mais je gère le reste avec Alfred. Honnêtement, si je pouvais me passer complètement d’Alfred, je pourrais migrer vers cette solution
Cela dit, je veux utiliser un délimiteur pour les expansions afin de ne pas perturber la frappe normale. Pour l’instant, j’utilise
,comme délimiteur, parce qu’en anglais une virgule est toujours suivie d’une espace, et mes expansions ne se produisent que lorsque je tape une virgule suivie d’un court texte sans espace. La position de la touche virgule est aussi pratique quand on tape sans regarderMême si je décidais de rester avec Text Replacement de l’OS, j’introduirais probablement un délimiteur pour éviter qu’un mot ne soit automatiquement étendu dans une situation non voulue
https://textexpander.com
https://www.alfredapp.com
Le cas d’exception le plus fin est
.py. En général,.est un délimiteur, mais j’ai ajouté une exception devantpypour que cela ne gêne pas la saisie de noms de fichiers PythonDes années d’autocomplétion ont déjà détérioré mon niveau d’anglais, qui est ma deuxième langue
Il m’arrive souvent de connaître un mot mais de ne plus me souvenir de son orthographe, au point d’en oublier la prononciation, et ce genre d’outil risque d’achever complètement ce qu’il me reste de compétence
Et si, au lieu de mémoriser des mots-clés, on pouvait écrire les premières lettres ?
J’ai fait un essai avec ChatGPT il y a quelques semaines, mais il ne semble pas exister de logiciel proposant ce genre de fonctionnalité
Je ne suis pas très bon en programmation, mais j’aimerais que quelqu’un le crée : https://imgur.com/a/0o4zLwT
La précision est plutôt correcte, mais quand il se trompe, c’est très agaçant
Même lorsque ça fonctionne parfaitement, à l’usage, la charge cognitive était bien plus élevée que de taper normalement
En me concentrant beaucoup, j’arrivais à peu près à atteindre ma vitesse de frappe confortable habituelle en utilisant des abréviations, mais pas à la dépasser, et je finissais naturellement par revenir à la frappe classique
Cela dit, je tape vite et j’écris beaucoup, donc ce prototype essaie en quelque sorte de battre un processus mental fortement optimisé depuis environ 30 ans. Il pourrait mieux convenir à quelqu’un qui n’est pas déjà rapide au clavier