Les premiers pas
Hunspell est une bibliothèque de vérification orthographique et d'analyse morphologique gratuite et un outil de ligne de commande, sous licence tri-licence LGPL/GPL/MPL.
Hunspell est utilisé par la suite bureautique LibreOffice, les navigateurs gratuits, comme Mozilla Firefox et Google Chrome, et d'autres outils et systèmes d'exploitation, comme les distributions Linux et macOS. C'est également un outil de ligne de commande pour Linux, les systèmes d'exploitation de type Unix et autres.
Il est conçu pour une vérification et une correction orthographique rapides et de haute qualité pour les langues avec un système d'écriture au niveau des mots, y compris les langues avec une morphologie riche, une composition de mots complexe et un codage de caractères.
Interfaces Hunspell : interface de terminal de type Ispell utilisant la bibliothèque Curses, interface de pipe Ispell, API C++/C et bibliothèque partagée, également avec des liaisons de langage existantes pour d'autres langages de programmation.
La base de code de Hunspell provient de la bibliothèque MySpell d'OpenOffice.org, développée par Kevin Hendricks (à l'origine une réimplémentation en C++ de la vérification orthographique et de l'apposition de l'Ispell international de Geoff Kuenning à partir de zéro, plus tard étendue avec des suggestions de n-grammes, par exemple), et ses fichiers README, CONTRIBUTORS et license.readme (ici : license.myspell).
Voici les principales fonctionnalités de la bibliothèque Hunspell, développée par László Németh :
- Prise en charge Unicode
- Suggestions hautement personnalisables : tables de remplacement de parties de mots et transcriptions phonétiques au niveau du radical et autres transcriptions alternatives pour reconnaître et corriger toutes les fautes d'orthographe typiques, ne pas suggérer de mots offensants,...
- Morphologie complexe : dictionnaire et homonymes d'affixes; suppression d'affixes doubles pour gérer les groupes de morphèmes flexionnels et dérivationnels pour les langues agglutinantes, comme l'azéri, le basque, l'estonien, le finnois, le hongrois, le turc; 64 000 classes d'affixes avec un nombre arbitraire d'affixes ; Affixes conditionnels, circonfixes, fogemorphèmes, morphèmes nuls, radicaux de dictionnaire virtuel, mots interdits pour éviter la surgénération,...
- Gestion des composés complexes (par exemple, pour les langues finno-ougriennes, allemandes et indo-aryennes) : reconnaissance des composés constitués d'un nombre arbitraire de mots, gestion de l'affixation au sein des composés,...
- Dictionnaires personnalisés avec affixation
- Détermination de la racine
- Analyse morphologique (dans un style d'élément et d'arrangement personnalisé)
- Génération morphologique
- API XML SPELLML sur la fonction API spell() simple pour une intégration plus facile de la détermination de la racine, de la génération morphologique et des dictionnaires personnalisés avec affixation
- Algorithmes spécifiques à la langue, comme la casse spéciale du i pointé azéri ou turc et du s dièse allemand, et les règles spéciales de composition du hongrois.
Voici les principales caractéristiques de l'outil de ligne de commande Hunspell, développé par László Németh :
- Réimplémentation de l'interface interactive rapide d'Ispell de Geoff Kuenning
- Formats d'analyse : texte, OpenDocument, TeX/LaTeX, HTML/SGML/XML, nroff/troff
- Dictionnaires personnalisés avec affixation facultative, spécifiée par un mot modèle
- Utilisation de plusieurs dictionnaires (par exemple hunspell -d en_US,de_DE,de_medical)
- Diverses options de filtrage (mots/lignes mauvais ou bons)
- Analyse morphologique (option -m)
- Racine (option -s)
Traductions : Hunspell a déjà été traduit en plusieurs langues. Si votre langue est manquante ou incomplète, veuillez utiliser Weblate pour vous aider à traduire Hunspell.
Dépendances
Créer uniquement des dépendances :
g++ make autoconf automake autopoint libtool |
Dépendances d'exécution :
Obligatoire | Facultatif | |
---|---|---|
libhunspell | ||
hunspell tool | libiconv gettext | ncurses readline |
Compilation sur GNU/Linux et Unix
Nous devons d'abord télécharger les dépendances. Sous Linux, gettext et libiconv font partie de la bibliothèque standard. Sur d'autres Unix, nous devons les installer manuellement.
Pour Ubuntu :
sudo apt install autoconf automake autopoint libtool |
Exécutez ensuite les commandes suivantes :
autoreconf -vfi ./configure make sudo make install sudo ldconfig |
Pour le développement du dictionnaire, utilisez l'option --with-warnings de configure.
Pour l'interface utilisateur interactive de l'exécutable Hunspell, utilisez l'option --with-ui.
Paquets de développement facultatifs :
- ncurses (nécessite --with-ui), par exemple libncursesw5 pour UTF-8
- readline (pour une édition de ligne de saisie sophistiquée, paramètre de configuration : --with-readline)
Dans Ubuntu, les paquets sont :
libncurses5-dev libreadline-dev |
Compilation sur OSX et macOS
Sur macOS, utilisez toujours clang pour le compilateur et non g++ car les dépendances Homebrew sont construites avec cela :
brew install autoconf automake libtool gettext brew link gettext --force |
Ensuite, exécutez :
autoreconf -vfi ./configure make |
Compilation sous Windows
Compilation avec Mingw64 et MSYS2
Téléchargez Msys2, mettez à jour le tout et installez les paquets suivants :
pacman -S base-devel mingw-w64-x86_64-toolchain mingw-w64-x86_64-libtool |
Ouvrez le prompt Mingw-w64 Win64 et compilez de la même manière que sous Linux, voir ci-dessus.
Compilation dans l'environnement Cygwin
Téléchargez et installez l'environnement Cygwin pour Windows avec les paquets supplémentaires suivants :
- make
- automake
- autoconf
- libtool
- gcc-g++ development package
- ncurses, readline (pour l'interface utilisateur)
- iconv (conversion de caractères)
Compilez ensuite de la même manière que sous Linux. Les builds Cygwin dépendent de Cygwin1.dll.
Déboguage
Il est recommandé d'installer une version de débogage de la bibliothèque standard :
libstdc++6-6-dbg |
Pour le débogage, nous devons créer une version de débogage, puis nous devons démarrer gdb :
./configure CXXFLAGS='-g -O0 -Wall -Wextra' make ./libtool --mode=execute gdb src/tools/hunspell |
Vous pouvez également transmettre les CXXFLAGS directement à make sans appeler ./configure, mais nous ne recommandons pas cette méthode lors de longues sessions de développement.
Tests
Tests de Hunspell (voir les tests dans le sous-répertoire tests/) :
make check |
ou avec le débogueur Valgrind :
m ake check VALGRIND=[Valgrind_tool] make check |
Par exemple :
make check VALGRIND=memcheck make check |
Documentation
Caractéristiques et format du dictionnaire :
man 5 hunspell man hunspell hunspell -h |
Utilisation
Après la compilation et l'installation, vous pouvez exécuter le correcteur orthographique Hunspell (compilé avec l'interface utilisateur) avec un dictionnaire Hunspell ou Myspell :
hunspell -d en_US text.txt |
ou sans interface :
hunspell hunspell -d en_GB -l <text.txt |
Les dictionnaires se composent d'un fichier d'affixe (.aff) et d'un fichier de dictionnaire (.dic), par exemple, téléchargez les fichiers de dictionnaire d'anglais américain de LibreOffice (ancienne version, mais avec génération de radicalisation et de morphologie) avec les commandes suivantes :
wget -O en_US.aff https://cgit.freedesktop.org/libreoffice/dictionaries/plain/en/en_US.aff?id=a4473e06b56bfe35187e302754f6baaa8d75e54f wget -O en_US.dic https://cgit.freedesktop.org/libreoffice/dictionaries/plain/en/en_US.dic?id=a4473e06b56bfe35187e302754f6baaa8d75e54f |
et avec l'entrée et la sortie en ligne de commande, il est possible de vérifier son travail rapidement, par exemple avec les mots d'entrée "example", "examples", "teached" et "verybaaaaaaaaaaaaaaaaaaaaaad" :
$ hunspell -d en_US Hunspell 1.7.0 example * examples + example teached & teached 9 0: taught, teased, reached, teaches, teacher, leached, beached verybaaaaaaaaaaaaaaaaaaaaaad # verybaaaaaaaaaaaaaaaaaaaaaad 0 |
Où dans la sortie, * et + signifient les mots corrects (acceptés) (* = radical du dictionnaire, + = formes affixées du radical du dictionnaire suivant), et & et # signifient les mauvais mots (rejetés) (& = avec suggestions, # = sans suggestions) (voir man hunspell).
Exemple de radicalisation :
$ hunspell -d en_US -s mice mice mouse |
Exemple d'analyse morphologique (très limité avec ce dictionnaire anglais) :
$ hunspell -d en_US -m mice mice st:mouse ts:Ns cats cats st:cat ts:0 is:Ns cats st:cat ts:0 is:Vs |
Autres exécutables
Le répertoire src/tools contient les exécutables suivants après compilation.
L'exécutable principal :
- hunspell : programme principal de vérification orthographique et autres.
Exemples d'outils :
- analyze : exemple de vérification orthographique, de recherche de radicaux et d'analyse morphologique.
- chmorph : exemple de génération et de conversion morphologiques automatiques.
- example : exemple de vérification orthographique et de suggestion.
Outils de développement de dictionnaire :
- affixcompress : génération de dictionnaire à partir de vocabulaires volumineux (millions de mots)
- makealias : compression d'alias (Hunspell uniquement, non rétrocompatible avec MySpell)
- wordforms : génération de mots (version Hunspell de unmunch)
- hunzip : décompresseur de format hzip
- hzip : compresseur de format hzip
- munch (OBSOLÈTE, utilisez affixcompress) : génération de dictionnaire à partir de vocabulaires (il faut également un fichier d'affixe).
- unmunch (OBSOLÈTE, utilisez des formes de mots) : répertorie tous les mots reconnus d'un dictionnaire MySpell.
Exemple de génération morphologique :
$ ~/hunspell/src/tools/analyze en_US.aff en_US.dic /dev/stdin cat mice generate(cat, mice) = cats mouse cats generate(mouse, cats) = mice generate(mouse, cats) = mouses |
Utilisation de la bibliothèque Hunspell avec GCC
Inclure dans votre programme :
- #include <hunspell.hxx>
Liaison avec la bibliothèque statique Hunspell :
g++ -lhunspell-1.7 example.cxx # ou mieux, utilisez pkg-config g++ $(pkg-config --cflags --libs hunspell) example.cxx |
Installation de Hunspell (vcpkg)
Vous pouvez également créer et installer hunspell à l'aide du gestionnaire de dépendances vcpkg :
git clone https://github.com/Microsoft/vcpkg.git cd vcpkg ./bootstrap-vcpkg.sh ./vcpkg integrate install ./vcpkg install hunspell |
Le portage hunspell dans vcpkg est maintenu à jour par les membres de l'équipe Microsoft et les contributeurs de la communauté. Si la version est obsolète, veuillez créer un problème ou une demande d'extraction sur le référentiel vcpkg.
Dictionnaires
Dictionnaires Hunspell (MySpell) :
- https://wiki.documentfoundation.org/Language_support_of_LibreOffice
- http://cgit.freedesktop.org/libreoffice/dictionaries
- http://extensions.libreoffice.org
- https://extensions.openoffice.org
- https://wiki.openoffice.org/wiki/Dictionaries
Dictionnaires Aspell (conversion : man 5 hunspell) :
- ftp://ftp.gnu.org/gnu/aspell/dict