L'Agent Aide-Mémoire comme aide à l'écriture
Par Larry Ayers layers@marktwain.net
En 1930, un écrivain nommé C.E. Montague a dit à propos du travail d'écrivain :
Lorsqu'un écrivain se plonge avec joie et excitation dans son travail, il arrive que ses facultés habituelles s'étendent de curieuse manière ; de petites pièces de connaissance réapparaissent pour flotter dans sa conscience, prêtes à l'emploi, alors qu'il croyait les avoir jeté depuis longtemps dans les oubliettes de son esprit ; des passages de livres qu'il se rappelle à peine avoir lu émergent sous forme de citations et des liens se tissent là où il n'aurait en temps normal pas vu apparaitre de relation. Sa conscience s'est étendue. Certains font l'expérience de ces sensations lors d'une conversation animée, lorsque l'exercice de leur vivacité d'esprit attise leurs capacités d'appréhension. La source à laquelle ils puisent ces absurdités humoristiques qui font la joie des gens d'esprit jaillit alors plus fort, la conscience comique est étendue.
Extrait de A Writer's Notes On His Trade, by C.E. Montague
Du temps de ce Monsieur Montague, un écrivain devait s'en remettre à sa mémoire et à la bonne fortune pour faire une trouvaille. L'avancée des ordinateurs a offert aux écrivains de nouveaux outils pour se souvenir de textes déjà lus et faisant partie d'un travail en cours. Après tout, l'état d'esprit si agréable dans lequel l'écrivain se plonge "avec joie et excitation" est imprévisible et difficile à atteindre sur commande.
Une des fonctions d'un ordinateur est de servir d'extension à la mémoire humaine. La part de chance qui fait ressurgir des pensées et des idées est absente, mais explorer et indexer les documents en s'aidant d'expressions régulières ajoute une nouvelle dimension à la recherche d'information.
Scott Rosenberg, dans un numéro récent du magazine en ligne Salon, a décrit un ensemble de logiciels PIM que lui et ses lecteurs ont utilisé pour organiser des notes et autres textes épars. L'article est disponible ici. Rosenberg y écrit que plusieurs logiciels de ce type, lesquels étaient assez répandus, ont été abandonnés par les entreprises qui les publiaient (ce qui est toujours un risque lorsqu'on utilise des solutions propriétaires), laissant les utilisateurs dans l'inconfortable position de ceux qui utilisent un programme qui n'évolue plus et n'est plus maintenu. À la fin de l'article, après avoir discuté le pour et le contre des différentes méthodes d'organisation, il mentionne que plusieurs utilisateurs de logiciels libres lui ont indiqué par courriel comment configurer Emacs pour faciliter l'accès à une base d'informations textuelles, ce qui m'amène au sujet de ce article, un program écrit par Bradley Rhodes et plusieurs étudiants du MIT.
Imaginez-vous en train de tapper un essai ou une lettre avec un serviteur attentif qui regarde par-dessus votre épaule. Imaginez que ce serviteur dévoué ait à portée de main un classeur bien ordonné contenant divers documents relatifs à vos différents centres d'intérêts. L'unique tâche de ce serviteur est de déterminer le sujet de la phrase que vous êtes en train de tapper et de rapidement retrouver les documents qui s'y rapportent pour les déposer sur un côté de votre bureau ou vous pourrez les parcourir d'un coup d'oeil de temps à autre.
Sans s'attarder à la distraction que causerait l'activité de ce serviteur, il faut reconnaître que cette scène imaginaire est très peu probable ; personne ne serait assez patient ni assez preste pour un tel travail. L'Agent Aide-Mémoire est pourtant un logiciel qui agit comme ce serviteur surhumain. Il est composé des éléments suivants :
Le programme ra-index est le noyau du système. Il est utilisé en suivant la syntaxe que voici :
ra-index [-v] <rep-base> <source1> [<source2>] ... [-e <exclure1> [<exclure2>] ...]
Le "rep-base" ci-dessus est par défaut un sous-répertoire
de ~/RA-indexes
, alors que les autres arguments
peuvent être soit des fichiers soit des répertoires
entiers. Les fichiers indexés peuvent être des
courriers électroniques, des messages de groupes de
discussion, des pages HTML ou tout autre texte au format
ASCII. Les arguments optionnels "exclure" sont les
sous-répertoires que ra-index doit ignorer.
Le paramètre -v
active le mode verbeux, dans lequel le
programme affiche le détail de ses actions. Le résultat est
une base de données binaire de mots-clefs et quelques
fichiers index. À titre d'exemple j'ai fait tourner
ce programme sur un répertoire contenant tous les anciens
numéros de la Gazette. Peu après la liste du contenu de mon
répertoire ~/RA-indexes/linux_gazette
ressemblait à
ceci :
-rw-r--r-- 1 liatris liatris 41796 Mar 27 13:12 doclens -rw-r--r-- 1 liatris liatris 34894 Mar 27 13:12 doclocs -rw-r--r-- 1 liatris liatris 23220 Mar 27 13:12 doclocs_offs -rw-r--r-- 1 liatris liatris 60270 Mar 27 13:12 titles -rw-r--r-- 1 liatris liatris 4644 Mar 27 13:12 titles_offs -rw-r--r-- 1 liatris liatris 2794112 Mar 27 13:12 wordvecs -rw-r--r-- 1 liatris liatris 571152 Mar 27 13:12 wvoffs
Pour vous donner une vague idée de la taille de la base de données ainsi créée, sachez que le répertoire d'origine contenant les anciens numéros de la Gazette représentait quarante méga-octets alors que le répertoire ci-dessus n'en compte que trois et demi, soit un peu moins de neuf pourcents de la source.
RA-index traite intelligement plusieurs formats de fichiers communs. Les en-tecirc;tes de courriers électroniques et de messages de groupes de discussion sont ignorées, ainsi que les balises des fichiers HTML.
Le programme de recherche associé, ra-retrieve, est habituellement lancé par l'interface Emacs de l'Agent Aide-Mémoire. Tapper C-c r r dans Emacs active l'Agent Aide-Mémoire : une fenêtre dédiée apparait et la base de données est parcourue pour trouver la meilleure correspondance possible à l'ensemble de mots qui entoure le curseur, la taille de cet ensemble étant paramétrable.
Voici une copie d'écran montrant l'agent en action. Ce fichier HTML est édité avec XEmacs et l'on peut voir en bas la fene^tre de l'Agent Aide-Mémoire dans laquelle sont affichés des noms de fichiers se trouvant dans le répertoire des anciens numéros de la gazette.
Chaque fichier apparaissant dans cette fenêtre contient un ou plusieurs mots-clefs identiques aux mots se trouvant dans un rayon de trois cent caractères autour du curseur. Le nombre dans le champ gauche peut être sélectionné avec la souris, ce qui charge le fichier dans l'éditeur. Le nombre compris entre zéro et un du champ suivant est le "score" du fichier en question. Un clic droit de souris sur la ligne d'un fichier fait apparaitre une petite fenêtre détaillant les mots-clefs liés à ce fichier. Après quelques secondes la liste est mise à jour pour mieux correspondre à ce qui vient d'être écrit. Cet interval de quelques secondes est configurable en fonction de la vitesse de frappe.
Après avoir compilé les deux exécutables et les avoir installés
dans /usr/local/bin
ou un autre répertoire de
votre choix, il vous faudra copier les deux fichiers
Lisp dans un endroit où Emacs saura les trouver,
probablement le répertoire site-lisp/
. Vous devrez
ensuite modifier remem-custom.el
pour
paramétrer l'endroit où se trouvent les exécutables et
la base de données, ainsi que les couleurs de texte.
La dernière étape se limite à ajouter les deux lignes
suivantes à votre fichier .emacs
:
(load "remem.el") (load "remem-custom.el")
Après avoir installé l'Agent et avant de démarrer Emacs, il est utile
de réfléchir quelques minutes à ce qui doit être
indexé. Avec trop de fichiers la base de données sera
énorme et les recherches lentes. J'ai essayé par exemple
d'indexer une vieille boite aux lettres et me suis rendu
compte que je conservais trop de messages. Tout dépend
du type de document que vous comptez écrire et des
sujets que vous comptez aborder. Lancez ra-index sur
plusieurs répertoire différents et conservez les
résultats dans des sous-répertoires distincts de
~/RA-indexes
, puis essayez-les séparément en
modifiant remem-custom.el
pour indiquer à Emacs quelle
base de données utiliser.
Il faut un peu de pratique avant de pouvoir utiliser l'Agent Aide-Mémoire efficacement. Au début la fenêtre qui se rafraichit régulièrement attire un peu trop l'attention ; je me suis retrouvé plusieurs fois à me demander ce qu'un fichier qui venait d'apparaitre pouvait bien avoir de commun avec ce que je venais d'écrire, perdant dans l'opération le fil de ma pensée. Une astuce consiste à désactiver l'agent lorsqu'on écrit activement (C-c rr active et désactive l'agent), puis à le réactiver lorsqu'on se relit. Choisir avec soin les fichiers qui sont indexés accroit considérablement l'utilité de l'agent, mais cela demande d'expérimenter un peu.
J'ai remarqué quelques problèmes, principalement avec la souris, en utilisant l'agent avec XEmacs. La version actuelle (2.01) est la première à fonctionner avec XEmacs, donc il est probable que ces problèmes seront réglés dans les prochaines versions. Je n'ai pas rencontré de problèmes avec GNU Emacs. La documentation est minimale mais adéquate : elle est suffisante pour installer le logiciel et le configurer, mais n'explique pas son fonctionnement interne ni des techniques plus avancées d'utilisation. Cependant le code source est bien documenté.
Mises à part ces quelques remarques, l'Agent Aide-Mémoire est une espèce rare dans le monde informatique, c'est un logiciel qui ouvre de nouveaux horizons. Le principe est assez novateur pour justifier le fait qu'utiliser cet agent est assez déconcertant de prime abord et demande un peu d'adaptation. Habituellement les programmes répondent à une commande de l'utilisateur et attendent patiemment la commande suivante. Sous certains aspects l'agent est plus proche d'un démon qui vaquerait à ses occupations en tâche de fond, mais un démon n'affiche pas les résultats de son travail dans la fenêtre d'un éditeur de texte !
Si vous désirez essayer l'Agent Aide-Mémoire, téléchargez la dernière version depuis son site web.
Copyright © 1999, Larry Ayers - Publié dans le n°39 de la Linux Gazette d'avril 1999.
Traduction française de Nicolas Chauvat.