Support des majuscules et minuscules

From Apertium
Revision as of 20:16, 1 September 2012 by Bech (talk | contribs) (Création page)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Le même mot entré dans un module de traitement lexical peut être écrit différemment au niveau de la casse des lettres. Les cas les plus fréquents sont :

  1. Tout le mot en minuscules.
    ex : beer
  2. Tout le mot en majuscules.
    ex : IBM
  3. La première lettre est en majuscules et le reste en minuscules (cas typique pour les noms propres)
    ex : Peter
  4. Le mot contient un mélange de majuscules et de minuscules,
    ex : LaTeX

Les transductions dans le dictionnaire peuvent aussi être trouvées dans ces trois (quatre ?) états. La manière dont un mot est écrit dans le dictionnaire est utilisée pour rejeter de possibles analyses du mot, en fonction des règles qui suivent :

  1. Si la lettre en entrée est en majuscules et dans l'état courant d'analyse il y a des transitions concordantes en minuscules, ces transductions sont faites.
  2. Si la lettre en entrée est en minuscules et dans l'état courant il n'y a pas des transitions concordantes en minuscules, les transductions ne sont pas faites.

Compte tenu de cette politique, une forme de surface sans majuscule ne peut pas être analysée comme un nom propre.

La case d'un mot en entrée sera maintenue en sortie du traducteur sauf s'il est décidé de ne pas le faire. La case peut être changée dans le module de transfert de structure; cette option est utile, par exemple, quand il y a un changement de l'ordre des mots ou quand un mot est rajouté avant un mot commençant par une majuscule au début d'une phrase, comme dans la traduction de la phrase Catalan Vindran en anglais : They will come.

Exemples

Soient les exemples ci-dessous, et le dictionnaire qui donne la sortie lt-expand qui suit,

beer:beer<n><sg>
IBM:IBM<np><org><sg>
Peter:Peter<np><ant><m><sg>
LaTeX:LaTeX<np><al><sg>

La table qui suit donne les analyses qu'on obtiendra en sortie dans me mode régulier de support de la casse.

Entrée Dictionnaire Sortie
beer beer ^beer/beer<n><sg>$
BEER beer ^BEER/BEER<n><sg>$
Beer beer ^Beer/Beer<n><sg>$
beeR beer ^beeR/beer<n><sg>$
BeeR beer ^BeeR/BEER<n><sg>$
BeEr beer ^BeEr/Beer<n><sg>$
IBM IBM ^IBM/IBM<np><org><sg>$
ibm IBM ^ibm/*ibm$
Ibm IBM ^Ibm/*Ibm$
IBm IBM ^IBm/*IBm$
Peter Peter ^Peter/Peter<np><ant><m><sg>$
peter Peter ^peter/*peter$
PEter Peter ^PEter/PEter<np><ant><m><sg>$
PETER Peter ^PETER/PETER<np><ant><m><sg>$
LaTeX LaTeX ^LaTeX/LaTeX<np><al><sg>$
LateX LaTeX ^LateX/*LateX$
Latex LaTeX ^Latex/*Latex$
latex LaTeX ^latex/*latex$
LATEX LaTeX ^LATEX/LATEX<np><al><sg>$

Conserver la casse du dictionnaire

En donnant l'option -w (ou --dictionary-case) à lt-proc, la normalisation de la casse des lettres n'est pas effectuée, donc par exemple "BeeR" donnera l'analyse ^BeeR/beer<n><sg>$. C'est utile en relation avec l'outil Contraintes grammaticales. Si la casse des lettres est normalisée par lt-proc, les règles qui se réfèrent au lemme "beer" devront aussi se référer à "BeeR" (et "BeEr" et "bEEr" etc, typiquement en utilisant l'option d'insensibilité à la casse, qui slows down (??) l'analyse). En utilisant -w, le lemme garde la casse du dictionnaire après analyse.

Toutefois, on veut la normalisation de la casse des lettres avant le transfert; heureusement cg-proc peut le faire pour nous, passez juste l'option -w (ou --wordform-case) à cg-proc. Le résultat final sera le même qu"en lançant lt-proc seul.

Comment les acronymes sont traités

L'option -w de cg-proc envoie toujours ceci en sortie :

entrée : JEG/jeg<prn>, sortie : JEG/JEG<prn>
entrée : JeG/jeg<prn>, sortie : JeG/JEG<prn> 
entrée : jeG/jeg<prn>, sortie : jeG/jeg<prn> 
entrée : Jeg/jeg<prn>, sortie : Jeg/Jeg<prn> 
entrée : jeg/jeg<prn>, sortie : jeg/jeg<prn>

Mais on ne peut pas juste regarder le premier et le dernier caractère si le lemme est par exemple un acronyme, on doit regarder le premier caractère minuscule dans le lemme (forme de base):

  1. entrée : bcg-vaksine/BCG-vaksine<n><m><sg><ind> sortie : bcg-vaksine/BCG-vaksine
  2. entrée : BCG-vaksine/BCG-vaksine<n><m><sg><ind> sortie : bcg-vaksine/BCG-vaksine
  3. entrée : BCG-VAKSINE/BCG-vaksine<n><m><sg><ind> sortie : bcg-vaksine/BCG-VAKSINE
  4. entrée : Bcg-vaksine/BCG-vaksine<n><m><sg><ind> sortie : bcg-vaksine/BCG-vaksine
  5. entrée : Bcg-Vaksine/BCG-vaksine<n><m><sg><ind> sortie : bcg-vaksine/BCG-Vaksine

Donc en 3. ci-dessus, le premier caractère minuscule est le 'v', si _celui là_ est en majuscule et le dernier aussi, on met en majuscules. Si celui là est en majuscule alors que le dernier est en minuscule, comme en 5 ci-dessus, on met juste la première lettre en majuscule.