Cet outil ne dispose pas encore d’un nom. Si vous avez une idée je suis preneur.
Si vous êtes comme moi vous avez du mal avec les terminaisons des verbes en français. Est-ce qu’il y a un s silencieux, où est l’accent circonflexe, est-ce que ça prend un ou deux l ? Puisque je n’ai pas de Bescherelle sous la main (peut-être devrais-je), je cherche “[verbe] conjugaison” dans un moteur de recherche, je clique généralement sur le premier résultat, je refuse les cookies, la newsletter, je cherche le temps et la personne que je veux avec les yeux. C’est assez long et fastidieux, le site le mieux référencé n’est pas toujours le même et je dois soit chercher celui que je préfère dans la liste des résultats ou m’adapter à une interface différente à chaque fois. Bref, c’est compliqué.
Des interfaces alternatives et leurs usages
Quelqu’un du projet Bitreich avait pour projet d’interfacer tout un tas de site web. L’idée est de pouvoir obtenir un service similaire voir équivalent mais à travers des interfaces plus sobres, plus respectueuses de la vie privée, plus performantes, plus accessibles. Un exemple est le site idiotbox qui interface la recherche youtube.
J’ai conscience qu’avec une interface pour alléger et simplifier le cas d’usage décrit précédemment on ne s’attaque ni à un symbole du capitalisme de surveillance ni à un grand émetteur de carbone. Cela dit l’implémentation est relativement simple et m’est personnellement utile. Cela en fait, j’espère, un bon exemple pour écrire un article.
Interface web
Il n’y en a pas.
Interface cli via internet
L’outil est disponible sur le port 2222 du serveur bebou.netlib.re. Si vous
vous y connectez avec netcat en faisant nc bebou.netlib.re 2222
vous
obtiendrez un prompt depuis lequel vous pouvez lancer la commande conjuguer
ou c
:
nc bebou.netlib.re 2222
help ou h pour obtenir de l'aide
c manger
Indicatif Présent je mange
Indicatif Présent tu manges
Indicatif Présent il mange
Indicatif Présent nous mangeons
Plus de détails dans cet article.
En local
Pour ne pas dépendre de la disponibilité du service ou le modifier à votre sauce il pourrait être souhaitable d’avoir le même usage via en local. Pour cela vous pouvez télécharger les sources qui permettent de faire fonctionner l’interface web
git clone git://bebou.netlib.re/conjugaison-light
Les fichiers contentant les terminaisons sont disponibles dans cette archive (2,2Mo)1.
L’usage de l’outil est détaillé dans le README du projet.
Après avoir modifier le script cgi
pour y renseigner l’endroit où se trouvent
les fichiers des terminaisons nous pouvons, dans une interface en ligne de
commande, écrire :
./cgi [verbe] [mode] [temps] [personne]
et ne récupérer que l’information que l’on souhaite. Aucun clique inutile, pas besoin de scanner un trop plein d’information. Par exemple :
cgi prendre subjonctif présent je
Subjonctif Présent que je prenne
Fonctionnement
Le site conjugaisonfrancaise a été utilisé pour récupérer les données. J’ai scrapé la totalité des verbes. Le format qui en résulte est sous la forme :
Prendre
Indicatif
Présent
je pr{ends}
tu pr{ends}
il pr{end}
...
Ce format a le mérite d’être assez peu redondant. Pour pouvoir le filtrer plus
facilement et obtenir un affichage plus lisible le script cgi
inclu une
fonction qui le tabule :
Indicatif Présent je pr{ends}
Indicatif Présent tu pr{ends}
Indicatif Présent il pr{end}
...
Ce peut être facilement filtré si l’on précise les valeur des champs comme vu précédemment avec les interfaces :
Subjonctif Présent que nous pr{enions}
Dans la console il est possible d’ajouter une étape pour colorier la terminaison. Chacune de ces étapes est le résultat de l’ingestion de l’étape précédente par un nouveau script. L’outil est donc assez modulaire si vous avez les sources. Vous pouvez ne pas filtrer, conserver la version non tabulée ou faire votre propre script de mise en page.
Sobriété numérique
La taille des pages et la bande passante
Les pages du site que l’on a choisi sont relativement petites pour les standards du web moderne. Elles vont de 150Ko à 200Ko. Le premier format de donnée que l’on génère avec nos scripts pèse entre 1,6Ko et 2,5Ko. Nous sommes donc sur une diminution de la quantité de donnée d’un facteur 100. Le format tabulé tourne autour du double ou du quadruple entre 3,5Ko et 4Ko. Finalement, le format filtré peut descendre jusqu’à quelques octets selon la finesse de la recherche. Si l’on veut servir les données en HTML cela rajoutera environ 1Ko sur un retour non filtré. Pour la console les séquences d’échappement pour colorier les terminaisons ajouteront 1Ko également.
La totalité de la base de donnée stockées sous forme de texte au format précédemment décrit comprend 7370 fichiers (verbes), 935991 lignes pour un total de 16Mo. Sa forme compressée dans un tarball avec gzip prend 2,2Mo. Compressée la totalité des données de ce site prennent donc la place de 10/15 pages HTML de conjugaisonfrancaise.com. Autrement dit en téléchargeant la totalité de la base en local on amorti notre téléchargement en max 15 requêtes.
A noter qu’il est possible de faire beaucoup mieux en utilisant l’idée de verbes “modèles”. Il suffirait de stockers ces modèles et d’appliquer leurs terminaisons aux radicaux des verbes demandés. Cela dit du développement serait nécessaire. Cette approche pourrait être pertinente dans ces contextes où le stockage est extrêmement contraint et les 16Mo de notre base excessifs.
Soutenabilité et maintenance
Je trouve ce point plus intéressant que les calculs comptables d’octets. Je ne vais pas rentrer dans les détails ici, je liste donc simplement les points qui me semble pertinents pour cette discussion :
- nécessite internet ou pas
- nombre de dépendances
- stabilité de ces dépendances
- nombre de lignes de codes de l’outil et des dépendances
- nombre de personnes dans les projets de ces dépendances
En l’occurence le script cgi requiert :
- un système unix
- les versions gnu de : sed, awk, cat, grep, column, tr
- dash
- netcat-openbsd pour sa version en ligne
Sans me lancer dedans j’imagine aisément que ma solution performe bien mieux sur l’ensemble des critères que les sites de conjugaison habituels. A voir maintenant ce que cela implique pour un exemple aussi trivial.
-
tar xvzf verbes.tar.gz
créera un dossierverbes
avec tous les fichiers dedans. Attention ça fait 50Mo et 7370 fichiers. ↩