La coupure dans NAT
Les systèmes de coupure dans NAT
NAT utilise deux systèmes deux coupures en parallèle:
- le système de coupure des mathématiques, qui n'est pas paramètrable;
- le système de coupure littéraire, qui se base sur un dictionnaire de règles de coupures.
Seul le système littéraire est re-configurable, en modifiant les règles de coupures du dictionnaire.
Les règles de coupure littéraire
L'algorithme utilisé pour la coupure littéraire est celui de Liang; c'est aussi celui qui est utilisé en LaTeX par exemple, et dans de nombreux autres logiciels de traitement de texte.
Il a besoin pour fonctionner d'une liste de motifs (pattern), qui sont stockés dans un fichier dictionnaire. Par défaut, dans NAT, le dictionnaire utilisé est dans le répertoire xsl/dicts et se nomme hyph_fr_nat.dic.
Il est possible d'utiliser tout autre dictionnaire compatible avec l'algorithme de Liang, ou de créer son propre dictionnaire, soit en utilisant l'interface graphique d'édition des règles de coupure de NAT, soit en crèant un nouveau fichier dictionnaire avec un éditeur texte par exemple
Structure du dictionnaire de règle
- Première ligne(optionnelle): l'encodage utilisé pour le dictionnaire, EN MAJUSCULE impérativement. Si rien n'est précisé, l'encodage utilisé sera UTF-8.
- Lignes suivantes: les motifs de coupure, un seul par ligne.
- Dernière ligne: le dernier motif, pas une ligne vide, qui équivaut à un motif nul (inutile).
Structure d'une règle
- Les points entre crochets sont facultatifs; ils indiquent si le pattern se situe en début et/ou en fin de mot;
- Le pattern doit être écrit exclusivement en minuscule;
- Les chiffres insérés indiquent les coupures possibles ou interdites. Ils sont compris entre 0 et 4;
- Le chiffre 0 n'a aucune incidence;
- Les chiffres impairs, 1 et 3, indiquent une coupure possible;
- Les chiffres pairs, 2 et 4, indiquent une coupure impossible;
- Plus le chiffre est élevé, plus son importance est grande en cas de conflit.
Exemple de conflit possible:
Mot: braille Patterns correspondants: 1le qui donne b0r0a0i0l1l0e0 4le. qui donne b0r0a0i0l4l0e0 il2l qui donne b0r0a0i0l2l0e0
Il y a un conflit pour déterminer si la coupure est possible ou non entre les deux "l" de "braille".
On utilise donc le chiffre le plus élevé: 4. La coupure est donc impossible.
Notons au passage le . du pattern "4le." indiquant que la règle ne s'applique que si le mot finit par "le").
Réaliser ou mettre à jour un dictionnaire
Il est probable qu'occasionnellement, certains mots ne soient pas coupés comme on le souhaiterait. Certains seront tentés de modifier le dictionnaire en conséquence.
Il convient avant tout d'être prudent
Les modifications peuvent sembler fonctionner, mais il y a très souvent des effets de bord non prévus ensuite. En effet, les dictionnaires proposés ont été réalisés et éprouvés pendant de nombreuses ANNEES, une règle a donc dans l'immense majorité des cas une raison d'être.
Voici quelques conseils si vous souhaitez apporter des modifications:
- Ne modifiez jamais un dictionnaire de référence, travaillez sur une copie;
- Si vos modifications vous semblent pertinentes, contactez-nous, nous les testerons sur notre base de mots (à titre indicatif, le temps de traitement sur une machine récente est de 8 à 10h);
- Rappellez-vous que plus les règles sont nombreuses, plus le temps de traitement augmente (sur notre base de mots: 8h pour 1000 règles, 15h pour 1700 règles, etc.);
- Plus la règle est courte, plus elle a de chance d'entrer en conflit avec d'autres: brail2le est moins risquée que 2l par exemple;
- Certaines contraintes liées au Braille ont été directement implémentée hors dictionnaire (préfixes majuscule par exemple), ça ne sert à rien d'écrire des règles dessus dans le dictionnaire.
Enfin, vous pouvez utilisez l'interface graphique d'édition des règles de coupure, qui permet de comprendre quels patterns sont utilisés lors de la coupure d'un mot.