La route a été plus longue que prévu, mais
voici enfin Grammalecte pour Firefox.
http://1n5o.mj.am/link/1n5o/y3ynt2r/a3/vxZYy34KKud7Au48LUD4Tg/aHR0cHM6Ly9hZGRvbnMubW96aWxsYS5vcmcvZnIvZmlyZWZveC9hZGRvbi9ncmFtbWFsZWN0ZS1mci8
Pour la mise à jour la plus récente, allez ici :
http://1n5o.mj.am/link/1n5o/y3ynt2r/a4/_ilFUrThmTKIxhJla93jSg/aHR0cHM6Ly9hZGRvbnMubW96aWxsYS5vcmcvZnIvZmlyZWZveC9hZGRvbi9ncmFtbWFsZWN0ZS1mci92ZXJzaW9ucy8
(Je voulais attendre que Mozilla ait vérifié
l’extension avant de publier l’annonce, mais
comme certains m’ont devancé, je suis le
mouvement.)
Pour l’instant, attendu que Mozilla n’a
toujours pas implémenté l’interface de
programmation qui permettra de souligner en bleu
les erreurs directement dans les zones de texte,
la correction se fait dans un panneau annexe.
Mais dès que cette interface sera disponible,
c’est bien sûr ainsi que les corrections se
feront.
A priori, Grammalecte pour Firefox peut et doit
signaler les mêmes erreurs que la version pour
LibreOffice. Les tests de qualité confirment ce
point, mais ces tests ne sont pas encore
complets. Il est donc possible qu’il y ait
encore quelques divergences de comportement
entre les deux correcteurs.
Implémenter la version en _javascript_ du
correcteur n’a pas toujours été facile, d’où mon
retard, ça a même été parfois assez
cauchemardesque, mais l’hydre semble à peu près
sous contrôle à présent.
Il reste sans doute encore pas mal de rugosités
à polir. Mais ici la question est plus
culturelle que technique. Avant l’existence de
l’extension pour Firefox, avec le correcteur, je
faisais surtout des tests avec des documents
plutôt littéraires et pas trop mal écrits. Mais
le Web est vaste et chaotique: le type de textes
qu’on y trouve est extrêmement variable et
ceux-ci présentent de nombreux cas de figure
différents. Ces derniers jours, j’ai fait passer
au correcteur des centaines de textes tirés de
blogs et de journaux. J’ai corrigé des tas de
faux positifs et j’ai ajouté des centaines de
mots dans le dictionnaire. Le Web fourmille de
sigles, de néologismes, d’anglicismes, de termes
et d’écritures techniques plus ou moins
cohérents. Pour éviter que le correcteur ne voit
trop rouge, je vais devoir assouplir
l’éligibilité de certains mots dans le
dictionnaire. J’ai aussi désactivé le
signalement des sigles non reconnus, revu la
tokenisatio n pour éviter le signalement des
hashtags et des hyperliens. La version 0.5.4,
résultat de ces nombreux tests, diffère donc
déjà pas mal de la version 0.5.1. (Je vous
conseille donc la version 0.5.4, même si Mozilla
n’a pas encore vérifié le code.)
Bien sûr, le correcteur a aussi été amélioré.
De nouvelles règles de contrôle ont été
implémentées, le moteur de suggestion est plus
efficace, le désambiguïsateur aide à s’y
retrouver et il y a moins de faux positifs.
Propos techniques (les non-geeks
peuvent passer les paragraphes en italique)
Pour ceux que la mécanique intéresse, je
suis passé d’un moteur multi-passes avec des
règles mono-action à un moteur bi-passes avec
des règles multi-actions. Mais c’est un point
dont je parlerai quand j’aurai le temps
d’écrire un billet récapitulatif du
développement fait.
Le correcteur grammatical en _javascript_ est
environ 12 fois plus lent que celui en Python
si on l’exécute dans le thread principal de
Firefox (ce qui m’a donné des sueurs froides),
mais environ 33 % plus rapide que celui en
Python si on l’exécute dans un thread séparé
(ce qui fut un soulagement). Donc, tout est
exécuté dans un thread séparé de manière
asynchrone (environ 20 fois plus rapide que
dans le thread principal… ne me demandez pas
pourquoi…).
Le moteur d’expressions régulières de
_javascript_ est très déficient (restons poli),
nettement en retrait par rapport à celui de
Python. Il manque les assertions “lookbehind”,
un support commode de l’Unicode (lamentable)
et surtout il n’y a rien pour récupérer les
index de position des groupes (ça m’avait
échappé quand j’ai lancé la campagne de
financement), ce qui a été problématique. Il a
donc fallu suppléer ces déficiences (et disons
même pas mal magouiller). Ce qui m’a fait
perdre pas mal de temps et rendu le processus
de build assez délicat (disons même
bordélique), mais ça ne concerne que le dév
après tout.
J’ai décidé d’utiliser autant que possible
toutes les nouveautés syntaxiques d’ES6 : let,
const, les classes, les générateurs, Map, Set,
les fonctions fléchées, for … of, la
déstructuration, les paramètres par défaut,
les paramètres du reste, les gabarits de
chaînes de caractères, les array
comprehensions (ES7), les promesses, à peu
près tout ce qui se fait en ES6. Sauf les
tableaux typés, qui se sont révélés plus lents
qu’un simple Array, et import/export, pas
encore implémentés dans Firefox.
Le serveur
J’en ai un peu marre de _javascript_ en ce moment.
Alors d’ici quelques jours, je sors une version
du serveur. Comme je l’ai déjà dit, désimbriquer
Grammalecte de LibreOffice, c’est avoir accompli
la plus grande partie du boulot pour le serveur.
Donc, il n’y a donc a priori plus grand-chose à
faire.
Je vais le baser sur Bottle (http://1n5o.mj.am/link/1n5o/y3ynt2r/a5/FN4LfBmT3lxMxb5nJpX6vg/aHR0cDovL2JvdHRsZXB5Lm9yZy9kb2NzLzAuMTIvaW5kZXguaHRtbA)
qui présente l’avantage de tenir dans un seul
fichier, qu’il suffit d’inclure dans
Grammalecte. Le correcteur n’aura ainsi besoin
d’aucune dépendance.
Thunderbird
Je n’ai pas encore commencé le travail sur ce
point. En théorie, puisque Thunderbird intègre
le moteur de _javascript_ de Firefox, le cœur du
correcteur n’a pas à être modifié. En revanche,
tout ce qui concerne l’interface est
probablement à revoir. Comme Thunderbird est
abandonné par Mozilla et survit entre deux eaux
(il est probable que Thunderbird passe sous une
autre bannière: celle de TDF peut-être), sa
documentation est en pleine décrépitude, le
désordre règne, je ne sais pas encore ce qui est
faisable, et j’ignore combien de temps ça va me
prendre.
Les contreparties
La liste de ces mots inclus dans les
dictionnaires est consultable par ce lien.
Merci de me signaler les éventuelles erreurs et
les oublis.
Bon nombre de ces mots (beaucoup des noms
communs et quelques-uns des noms propres) sont
éligibles pour être intégrés dans le
dictionnaire commun. Ils y seront donc
transférés dans quelque temps, au fur et à
mesure, quand j’aurai le temps de faire les
vérifications nécessaires. Voici par exemple
certains des noms propres qui sont éligibles :
Clothilde, Andrei, Joakim, Léopoldine,
Euphrasie, Mouhammad, Fantine, Florestan,
Florie, Terence, Hypnos, etc.
À noter que certains mots proposés étaient déjà
présents dans le dictionnaire. En voici la liste
: fada, Arthur, Marilou, jardin, vélo,
grammatologie, Léopold, Héloïse, héraldique,
Terry, Marcia, Narcisse, Lionel, Théo, Florence,
plussoyer, Freud, schmilblick, Richard, Val
d'Isère, Fernando, Grenoble, Buenos Aires, bépo,
nuoc mam (sous la forme nuoc-mâm), yiddish,
apostolicité, adamantin, Occitanie, occitant
(mais il n’y a pas de “t” final), Gascogne,
gascon-ne-s, OK, gouterreau (mais ça s’écrit
avec deux “t”), email (sous la forme e-mail),
escagasser, esquicher, esclaffer, emboucaner,
µmole (sous la forme µmol), Min (le symbole des
minutes s’écrit min, sans majuscule).
Certains des mots proposés n’ont pas été
ajoutés au dictionnaire et certains ne le seront
probablement pas (la décision est en suspens).
En voici la liste : Southern blot, Northern
blot, Zea Invent, Apex Agri, Agro Bio, The
Document Foundation, Apache Software Foundation,
Free Software Foundation, Golden Show, Lovely
Rita, Mix Bizarre, Scred TV, Las Gastios, Hero
Corp, Texas Instruments, Standard de Liège,
Creative Commons, Madame&Services.
La raison, c’est que le dictionnaire ne peut
accepter que des mots entiers (pas d’espace et
pas de caractères spéciaux comme “&”). Il
faudrait donc ajouter ces mots séparément. Mais
certains d’entre eux sont susceptibles de créer
des confusions (Creative, The, etc.). Parfois,
ces mots existent déjà dans le dictionnaire
(Rita, apache, software, document, bizarre, mix,
golden, show, etc.). Bon, ça reste encore à
voir. N’hésitez pas à m’écrire si je tarde…
|