Paire Occitan-Français
Cette page documente l'architecture de la paire bidirectionnelle occitan-français.
L'occitan est analysé et produit dans deux variétés : languedocien et gascon. La première est appelée improprement "occitan" parce qu'elle a été la variété de référence pour Apertium initialement. Le gascon aranais, présent dans les paires catalan-occitan et espagnol-occitan n'est pas actuellement supporté par le traducteur occitan-français.
Contents
- 1 Histoire
- 2 Dictionnaire bilingue
- 3 Tube
- 3.1 Français-Occitan
- 3.2 Occitan-Français
Histoire
Les premiers traducteurs occitan-catalan et espagnol-catalan sont des premiers développés sur Apertium. Par conséquent, ils étaient (et continuent au printemps 2022) structurés dans un seul répertoire, sans partager le dictionnaire morphologique occitan. Deux variétés occitanes peuvent être produites : le languedocien et l'aranais. Beaucoup plus tard, sur cette base, un répertoire apertium-oci a été créé et, grâce à une bourse Google Summer of Code, en 2018 Claudi Balaguer a développé un traducteur du français à l'occitan languedocien. En 2019 Lo Congrès Permanent de la Lenga Occitana a commencé le développement d'un traducteur bidirectionnel avec le languedocien et le gascon comme variétés source et cible. La première version de ce document-ci est écrit à la veille de la publication de la première version du Congrès pour documenter l'architecture du traducteur.
Dictionnaire bilingue
Les balises
Il est important à retenir que les différences entre les variétés de l'occitan sont considérables. Chaque variété occitane pose de gros problèmes d'homographie, mais si encore on les combine ensemble sous un fourre-tout "occitan" les problèmes deviennent insolubles. Cela fait que le dictionnaire bilingue n'utilise pas la balise v pour différencier les variétés, bien qu'elle soit utilisée pour d'autres langues où Apertium accepte une multiplicité de variétés, comme le catalan ou le portugais. On utilise ici la balise alt. La balise v="var" fait que la traduction ne puisse être produite que pour la variété "var", mais soit reconnue pour les autres variétés. Par contre, la balise alt="var" fait que la traduction ne soit valable que pour la variété "var". Si on le veut, il faut explicitement, dans d'autres lignes, déclarer que la traduction est valable pour d'autres variétés. Par exemple, on a :
<e alt="oci"><p><l>genièr<s n="n"/><s n="m"/></l><r>janvier<s n="n"/><s n="m"/></r></p></e> <e alt="oci@gascon"><p><l>genèr<s n="n"/><s n="m"/></l><r>janvier<s n="n"/><s n="m"/></r></p></e>
Ceci fait que "genièr" ne soit pas traduit dans un texte gascon, ni "genèr" dans un texte languedocien. C'est ce qui arriverait avec la balise v. Pour ce faire, il faudrait ajouter deux lignes :
<e alt="oci@gascon" r="LR"><p><l>genièr<s n="n"/><s n="m"/></l><r>janvier<s n="n"/><s n="m"/></r></p></e> <e alt="oci" r="LR"><p><l>genèr<s n="n"/><s n="m"/></l><r>janvier<s n="n"/><s n="m"/></r></p></e>
L'utilisation de la balise alt cause, contrairement aux traductions du catalan ou du portugais, que, quand on traduit de l'occitan, il faut choisir si l'on traduit du languedocien ou du gascon : on ne traduit pas génériquement de "l'occitan".
La balise alt est traitée par le programme xsltproc, qui est invoqué dans le fichier Makefile.am :
.deps/$(PREFIX2).dix: $(BASENAME).$(PREFIX1).dix .deps/.d xsltproc --stringparam alt $(LANG1) alt.xsl $(BASENAME).$(PREFIX1).dix >$@
Le contenu du dictionnaire bilingue
Le contenu du dico bilingue vient de plusieurs couches :
- Initialement, les traductions à l'occitan existantes dans le Wiktionnaire (presque toujours des formes languedociennes)
- Des milliers de mots languedociens introduits par Claudi Balaguer lors du GSoC 2018
- Des noms propres ajoutés automatiquement de la paire catalan-français (ceux qui sont égaux en catalan et français, ce qui porte à penser qu'ils le seront aussi en occitan et français) : surtout des prénoms, des noms de famille, mais aussi des noms d'entreprises et organisations et des toponymes.
- Les mots du Basic du Congrès Permanent de la Lenga Occitana
- Des toponymes de top'Òc du Congrès Permanent de la Lenga Occitana
- Quelques milliers d'autres mots introduits manuellement
Chiffres
Le traducteur français-occitan a près de 25 000 mots non propres et de 37 000 noms propres, desquels 8200 toponymes (fins mars 2022). Du côté occitan-français, le nombre est un peu plus grand à cause de la reconnaissance de lemmes occitans très semblables (par exemple, cinq formes gasconnes pour février : heurèr, hrevèr, hrevèr, herbèr et hiurèr).
La couverture (dite naïve) du traducteur français-occitan est de 93,7% pour un corpus de 100 000 phrases (3 millions de mots) choisi aléatoirement de Wikipédia et de 94,8% pour le corpus de 125 millions de mots de l'Est Républicain (fins mars 2022).
Tube
Pour une info plus générale, voir Apertium_system_architecture.
Comme toujours chez Apertium, le tube de processus est défini dans le fichier modes.xml.
Français-Occitan
Tagueur
Comme d'habitude chez Apertium, le procès de tagage (analyse morphologique) se décompose en trois phases.
Analyseur
En partant du dictionnaire français (apertium-fra.fra.metadix) dans le répertoire apertium-fra on obtient toutes les analyses morphologiques des mots, par exemple le mot occitan peut être un nom masculin singulier ou un adjectif masculin singulier :
$ echo "occitan" | apertium -d . fra-disam "<occitan>" "occitan" adj m sg "occitan" n m sg
Désambiguïsateur par règles
Dans les premiers temps d'Apertium, le choix entre les différentes analyses possibles d'un mot se faisait avec un système mixte de règles et statistique. Actuellement, on utilise une couche intermédiaire avec de règles écrites en utilisant Constraint Grammar (CG). Ces contraintes grammaticales sont définies dans le fichier apertium-fra.fra.rlx du répertoire apertium-fra. Par exemple, dans "livre occitan" les contraintes choisissent "livre" comme un nom (au lieu d'un forme verbale) et "occitan" comme un adjectif :
$ echo "livre occitan" | apertium -d . fra-oci-disam "<livre>" "livre" n m sg ; "livrer" vblex pri p3 sg REMOVE:791 ; "livrer" vblex pri p1 sg REMOVE:791 ; "livrer" vblex prs p3 sg REMOVE:791 ; "livrer" vblex prs p1 sg REMOVE:791 ; "livrer" vblex imp p2 sg REMOVE:795 "<occitan>" "occitan" adj m sg ; "occitan" n m sg REMOVE:2760
Désambiguïsateur statistique
Comme désambiguïsateur statistique, on utilise le fichier fra.prob du répertoire apertium-fra. Il est copié sur apertium-oci-fra et renommé fra-oci.prob par Makefile.am.
Assemblage de mots discontinus
(apertium-oci-fra.fra-oci.l1x)
Transfert lexical
apertium-oci-fra.oci-fra.dix
Sélection lexicale
apertium-oci-fra.fra-oci.metalrx
Transfert
Chunker
apertium-oci-fra.fra-oci.t1x
Interchunck
Interchunk initial
interchunk_bis
interchunk_pas
interchunk_pro
interchunk_supersn
gascon
interchunk_enon
gascon
Postchunk
apertium-oci-fra.fra-oci.t3x
Chunker final
apertium-oci-fra.fra-oci.t4x
Découpage de mots discontinus
(apertium-oci-fra.fra-oci.l2x)
Génération
Générateur morphologique
Pré-post-générateur
(gascon)
Post-générateur
Occitan-Français
Nous ne répétons pas ici les explications générales de la section "français-occitan" précédente.
Tagueur
Analyseur
On part du dictionnaire occitan (apertium-oci.oci.metadix) dans le répertoire apertium-oci. Le rôle de la balise alt (voir ci-dessus) est essentiel ici.
Désambiguïsateur par règles
Les contraintes grammaticales sont définies dans le fichier apertium-oci.oci.rlx du répertoire apertium-oci.
À présent, les règles CG sont, en principe, indépendantes de la variété d'occitan, c'est-à-dire qu'il n'y a pas de valise par ou v dans ces règles (ce qui, en fait, n'est pas encore prévu dans Apertium, mais qu'on pourrait demander). Ce qui arrive, c'est que les règles s'appliquent sur le dictionnaire défini pour la variété qu'en est en train de traiter. Par exemple, "que" ne reçoit pas comme possible analyse "énonciatif" pour le languedocien, par conséquent, les règles de désambiguïsation de l'énonciatif "que" ne s'appliquent pas pour le languedocien. La désambiguïsation est, en fait, déjà faite au niveau du dictionnaire. On peut voir cette différence dans ces deux analyses de la même phrase pour le languedocien et le gascon :
$ echo "vòli que cantes" | apertium -d . oci-fra-disam "<vòli>" "voler" vblex pri p1 sg SELECT:742 ; "volar" vblex pri p1 sg SELECT:742 ; "volar" vblex prs p1 sg SELECT:742 "<que>" "que" cnjsub SELECT:554 ; "que" rel mf sp SELECT:554 ; "qué" prn itg mf sg SELECT:554 "<cantes>" "cantar" vblex prs p2 sg $ echo "vòli que cantes" | apertium -d . oci_gascon-fra-disam "<vòli>" "voler" vblex pri p1 sg SELECT:742 ; "volar" vblex pri p1 sg SELECT:742 ; "volar" vblex prs p1 sg SELECT:742 ; "volar" vblex prs p3 sg SELECT:742 "<que>" "que" cnjsub SELECT:554 ; "que" adv enon SELECT:554 ; "que" rel mf sp SELECT:554 ; "qué" prn itg mf sg SELECT:554 "<cantes>" "cantar" vblex prs p2 sg
Désambiguïsateur statistique
oci-fra.prob
Assemblage de mots discontinus
apertium-oci-fra.oci-fra.l1x
Transfert lexical
apertium-oci-fra.oci-fra.t1x
Sélection lexicale
apertium-oci-fra.oci-fra.metalrx
Transfert
Chunker
apertium-oci-fra.fra-oci.t1x
Interchunck
Interchunk initial
oci-fra.t2ax.bin
Second interchunk initial
oci-fra.t2ax.bin
t2bx
oci-fra.t2bx.bin
t2cx
t2dx
t2ex
Postchunk
apertium-oci-fra.oci-fra.t3x
Chunker final
apertium-oci-fra.oci-fra.t4x
Découpage de mots discontinus
apertium-oci-fra.oci-fra.l2x