Faites en sorte que hunspell ignore les caractères de guillemets simples (apostrophes)

2

Hunspell traite toujours les caractères entre guillemets (apostrophes) dans le mot. Cela signifie que lorsque le texte utilise des guillemets simples pour la citation, hunspell les marque comme des erreurs. Même une citation seule est considérée comme un mot (mal orthographié).

% echo "He asked, 'Why can't I quote?'" | hunspell
Hunspell 1.3.2
*
*
& 'Why 3 10: why, whey, whiny
*
*
*
& ' 15 29: 's, e, s, i, a, n, r, t, o, l, c, d, u, g, m

Aspell obtient ce droit:

% echo "He asked, 'Why can't I quote?'" | aspell -a
@(#) International Ispell Version 3.1.20 (but really Aspell 0.60.7-20110707)
*
*
*
*
*
*

Je préférerais utiliser hunspell, mais lui demander d'ignorer les guillemets simples et suivants, tout en conservant les guillemets incorporés tels que celui-ci dans "ne peut pas".

Comment puis-je faire ceci?

Mernst
la source
Vers 2018, ce bogue (ou cette lacune) semble avoir été corrigé. lorsque je lance votre test, il ne renvoie aucune erreur. Ma hunspellversion est 1.6.2 sur MacOS.
Scott C Wilson

Réponses:

1

Supprimez tous les éléments 'suivis d'un non alphanumérique ou précédés d'un non alphanumérique, ou au début ou à la fin d'une ligne:

echo "He asked, 'Why can't I quote?'" | perl -pe 's/'"'"'(\W)/$1/g;s/(\W)'"'"'/$1/g;s/^'"'"'//;s/'"'"'$//;' | hunspell
Uwe
la source
Merci pour la suggestion, mais cela ne m'aide pas. Je cherche un moyen de changer hunspell, pas de changer l'entrée en hunspell. Changer la chaîne supprime les numéros de colonne dans la sortie hunspell. Cela signifie que la sortie de hunspell ne correspond plus à la chaîne d'origine et ne peut donc pas être utilisée par programme sans beaucoup de comptabilité supplémentaire.
Mernst
OK, je vois le problème. Je suppose que vous pouvez y parvenir en corrigeant les fichiers de dictionnaires Hunspell. Il y a une option "IGNORE characters" documentée dans hunspell4.pdf, mais je n'ai jamais essayé. Vous pouvez également utiliser une conversion d'entrée qui remplace les guillemets par des espaces, plutôt que de les supprimer, afin que les numéros de colonne restent inchangés:perl -pe 's/'"'"'(\W)/ $1/g;s/(\W)'"'"'/$1 /g;s/^'"'"'/ /;s/'"'"'$/ /;'
Uwe
1

Vous devez ajouter la ligne suivante à votre fichier d'affixe de dictionnaire (c.-à-d. /usr/share/hunspell/en_US.aff)

IGNORE '

Malheureusement, je n'ai pas trouvé de moyen de spécifier un fichier d'affix personnel, comme vous pouvez le faire avec un fichier de dictionnaire personnel.

schettino72
la source
J'ai essayé cela et cela n'a pas changé le comportement.
Mernst