Correction orthographique/grammaticale (aspell, hunspell, LanguageTool)
Il existe un certain nombre de logiciels libres pour la correction orthographique et/ou grammaticale, notamment ispell
, aspell, myspell, hunspell, LanguageTool, ... .
L'historique des différentes versions xxxspell n'est pas très clair. ispell semble être le plus ancien, sur lequel est basé myspell; aspell semble avoir été développé pour prendre le relais d'ispell. hunspell quant à lui est le correcteur orthographique qui semble prendre la main1; il est utilisé dans un grand nombre d'applications comme Firefox, Thunderbird, Chrome, Eclipse…,
LanguageTool semble avoir été développé plus récemment et indépendamment. Contrairement aux xxx-spell, LanguageTool corrige les formes de style évitant ainsi, par exemple, l'utilisation de pléonasmes (au jour d'aujourd'hui), l'utilisation de deux virgules consécutives, etc.
Pour installer ces logiciels (on préférera aspell, hunspell ou LanguageTool) sous Fedora :
# Aspell
yum install aspell aspell-fr aspell-en
# Hunspell
yum install hunspell hunspell-fr hunspell-en
# LanguageTool
# Aller voir sur la page du projet
Tous ces outils sont utilisables en ligne de commande (i.e. dans un terminal, depuis un Makefile, ...). Pour tester les possibilités des différents correcteurs, on partira du texte ci-dessous, les fautes étant indiquées en rouge :
Maître Corbeau, sur un arbre perchai,
Tenais en son beck un fromage.
Maître Renard, par l'odeur alléché,
Lui tint à peu près ce langage :
"Hé ! bonjour, Monsieur du Corbeau.
Que vous êtes joli ! que vous me semblez beau !
Sans mentir, si votre ramage
Se rapporte à votre plumage,
Vous êtes le Phénix des hôtes de ces bois. "
A ces mots le Corbeau ne se sent pas de joie ;
Et pour montrer sa belle voix,
Il ouvre un large bec, laisse tomber sa proie.
Le Renard s'en saisie, et dis : "Mon bon Monsieur,
Apprené que tout flatteur
Vit aux dépens de celui qui l'écoute :
Cette leçon vaut bien un fromage, sans doute. "
Le Corbeau, honteux et confus,
Jura, mais un peu tard, qu'on ne l'y prendrait plus.
Aspell
aspell s'appelle avec une commande de la forme :
Plusieurs options sont disponibles, on ne liste que les plus utiles, mais d'autres sont documentées sur la documentation
--lang=name
avec name \(\in\) (fr, en, ..) spécifie le langage,--mode=mode
avec mode \(\in\) (none, url, email, sgml, tex, texinfo, nroff, ...) permet de filtrer des mots spécifiques de langage (par exemple le mode tex permet de ne pas considérer les mots clefs LaTeX)
Pour plus d"informations sur les options :
Par exemple, pour corriger les fautes d'orthographes d'un fichier texte, on utilisera:
Pur corriger les fautes d'orthographes d'un fichier LaTeX, on utilisera:
Ces deux commandes lancent aspell en mode interactif, permettant de corriger les fautes à la volée (le fichier original est modifié). On peut aussi lister les fautes, sans les corriger. Sur le texte de Jean de la Fontaine, aspell retourne :
Hunspell
hunspell fonctionne de manière similaire à aspell, les options étant spécifiées de manière un peu différente. Pour avoir plus d'informations sur les options à passer au programme, on utilisera
Pour vérifier l'orthographe d'un texte en français, on utilisera la commande :
Pour vérifier un document \LaTeX, on précisera l'option -t
:
On peut aussi lister les fautes, sans les corriger. Sur le texte de Jean de la Fontaine, hunspell retourne:
LanguageTool
Il y a plusieurs façons d'utiliser language tool. Parfois, il est directement disponible dans votre outil, par exemple, il existe une extension pour LibreOffice. Vous pouvez également solliciter l'API http :
Vous pouvez également faire tourner localement un serveur de correction. Voir https://dev.languagetool.org/http-server à ce sujet.
En lançant LanguageTool en ligne de commande sur notre texte d'exemple :
$ java -jar languagetool-commandline.jar -l fr original.txt
Expected text language: French
Working on original.txt...
1.) Line 1, column 30, Rule ID: ACCORD_R_PERS_VERBE[32] premium: false prio=10
Message: Vérifiez l’accord entre le sujet et le verbe « perchai ».
Suggestion: perchait
Maître Corbeau, sur un arbre perchai, Tenais en son beck un fromage. Maître Renar...
^^^^^^^
2.) Line 1, column 30, Rule ID: ACCORD_SUJET_VERBE[39] premium: false
Message: Un verbe conjugué à la troisième personne du singulier semble plus approprié.
Suggestion: perchait
Maître Corbeau, sur un arbre perchai, Tenais en son beck un fromage. Maître Renar...
^^^^^^^
3.) Line 2, column 15, Rule ID: FR_SPELLING_RULE premium: false prio=-100
Message: Faute de frappe possible trouvée.
Suggestion: bec; becs; Besse; teck; Becky
...Corbeau, sur un arbre perchai, Tenais en son beck un fromage. Maître Renard, par l'odeur alléc...
^^^^
4.) Line 8, column 28, Rule ID: PRONOMS_PERSONNELS_MINUSCULE[2] premium: false
Message: La majuscule n’est employée qu’au début d’une phrase ou pour les noms propres (noms, toponymes, etc.).
Suggestion: . Vous; , vous
..., si votre ramage Se rapporte à votre plumage, Vous êtes le Phénix des hôtes de ces bois. " A ce...
^^^^^^
5.) Line 10, column 1, Rule ID: A_A_ACCENT[1] premium: false prio=10
Message: La préposition « À » placée en début de phrase possède un accent grave.
Suggestion: À
...Vous êtes le Phénix des hôtes de ces bois. " A ces mots le Corbeau ne se sent pas de joie ;...
^
6.) Line 11, column 30, Rule ID: PRONOMS_PERSONNELS_MINUSCULE[2] premium: false
Message: La majuscule n’est employée qu’au début d’une phrase ou pour les noms propres (noms, toponymes, etc.).
Suggestion: . Il; , il
...t pas de joie ; Et pour montrer sa belle voix, Il ouvre un large bec, laisse tomber sa proie. ...
^^^^
7.) Line 13, column 27, Rule ID: ACCORD_SUJET_VERBE[35] premium: false
Message: Un verbe conjugué à la troisième personne semble plus approprié.
Suggestion: dit; disent
...e tomber sa proie. Le Renard s'en saisie, et dis : "Mon bon Monsieur, Apprené que tout flatte...
^^^
More info: https://languagetool.org/insights/fr/poste/je-me-permet-ou-je-me-permets/
8.) Line 14, column 1, Rule ID: FR_SPELLING_RULE premium: false prio=-100
Message: Faute de frappe possible trouvée.
Suggestion: Apprenne; Apprend; Apprenait; Apprêté; Âpreté
...ard s'en saisie, et dis : "Mon bon Monsieur, Apprené que tout flatteur Vit aux dépens de celui qu...
^^^^^^^
Time: 1551ms for 7 sentences (4.5 sentences/sec)
Intégrer un correcteur dans son IDE emacs, vim, vscode
aspell et hunspell peuvent être intégrés à emacs pour avoir une correction orthographique à la volée. On peut personnaliser emacs en ajoutant des commandes Lisp au fichier ~/.emacs
. Pour indiquer qu'on souhaite utiliser aspell pour vérifier l'orthographe, on ajoutera la commande:
On utilisera alors la correction orthographique avec les commandes ci-dessous, à exécuter dans le mini-buffer (Meta-X
, Alt - X)
- ispell-change-dictionnary , suivi de fr ou en par exemple
- flyspell-buffer : vérifie l'orthographe du fichier en cours d'édition
- flyspell-mode : active/désactive la correction à la volée
On fera bien attention que lorsque le dictionnaire est changé, il faut relancer la commande flyspell-buffer
pour le prendre en compte.
Dans VIM, pour pouvoir facilement activer la correction orthographique, on peut
se définir quelques raccourcis dans son ~/.vimrc
:
function! ToggleSpellLang()
" toggle between en and fr
if &spelllang =~# 'en'
:set spelllang=fr
else
:set spelllang=en
endif
endfunction
" Note: with Byobu, press Shift-F12 to disable byobu function keys capture
nnoremap <F7> :setlocal spell!<CR> " toggle spell on or off
nnoremap <F8> :call ToggleSpellLang()<CR> " toggle language
ce qui permettra d'activer/désactiver la vérification orthographique avec F7, de changer la langue avec F8. Ensuite, on passe d'une erreur à l'autre avec les touches "[s", on obtient des suggestions de modification avec "z=". On peut aussi intégrer LanguageTool en utilisant le plugin ALE ou vim-LanguageTool.
Sous VSCode, il semble aussi exister des extensions, par exemple LTex+ pour utiliser LanguageTool.
-
Plus d'informations sont disponibles sur la page http://en.wikipedia.org/wiki/Hunspell ↩