Difference between revisions of "Paire Occitan-Français"
Hectoralos (talk | contribs) |
Hectoralos (talk | contribs) (Transfert intra-segmental fra-oci : meilleure rédaction pour les verbes pron <> non-pron) |
||
(108 intermediate revisions by the same user not shown) | |||
Line 7: | Line 7: | ||
=Dictionnaire bilingue= |
=Dictionnaire bilingue= |
||
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. Il faut explicitement, dans d'autres lignes, déclarer que la traduction est valable pour d'autres variétés. Par exemple, on a : |
|||
==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 : |
|||
<pre> |
<pre> |
||
<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"><p><l>genièr<s n="n"/><s n="m"/></l><r>janvier<s n="n"/><s n="m"/></r></p></e> |
||
Line 13: | Line 17: | ||
</pre> |
</pre> |
||
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 |
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 : |
||
<pre> |
<pre> |
||
Line 20: | Line 24: | ||
</pre> |
</pre> |
||
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''' : |
|||
<pre> |
|||
.deps/$(PREFIX2).dix: $(BASENAME).$(PREFIX1).dix .deps/.d |
|||
xsltproc --stringparam alt $(LANG1) alt.xsl $(BASENAME).$(PREFIX1).dix >$@ |
|||
</pre> |
|||
==Le contenu du dictionnaire bilingue== |
|||
Le contenu du dico bilingue vient de plusieurs couches : |
|||
* Initialement, les traductions à l'occitan existantes dans le [https://fr.wiktionary.org/ 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 [https://locongres.org/oc/aplicacions/dicodoc-oc/dicodoc-recerca dictionnaire Basic] du Congrès Permanent de la Lenga Occitana |
|||
* Des toponymes de [https://locongres.org/oc/aplicacions/top-oc/topoc-recerca top'Òc] du Congrès Permanent de la Lenga Occitana |
|||
* Quelques milliers d'autres mots introduits manuellement |
|||
===Les étiquettes ajoutées dans le dictionnaire bilingue=== |
|||
En général, les étiquettes dans le dictionnaire bilingue sont des informations morphologiques présentes dans les dictionnaires monolingues. Il s'agit surtout de spécifier si la traduction de, par exemple, le mot ''pas'' est celle du nom masculin ou de l'adverbe : |
|||
<pre> |
|||
<e> <p><l>pas<s n="adv"/></l> <r>pas<s n="adv"/></r></p></e> |
|||
<e> <p><l>pas<s n="n"/><s n="m"/></l> <r>pas<s n="n"/><s n="m"/></r></p><par n="ND_sp"/></e> |
|||
</pre> |
|||
Un certain nombre d'étiquettes sont ajoutées pour leur traitement dans le transfert. Le cas le plus typique est celui de ''GD'' et ''ND'', qui presque toujours sont ajoutées dans le bidixe moyennant des paradigmes comme ''ND_sp'' (voir ci-dessus). Ainsi, la deuxième ligne de l'exemple ci-dessus est une forme plus compacte et lisible d'écrire ceci : |
|||
<pre> |
|||
<e r="LR"><p><l>pas<s n="n"/><s n="m"/><s n="sg"/></l><r>pas<s n="n"/><s n="m"/><s n="sp"/></r></p></e> |
|||
<e r="LR"><p><l>pas<s n="n"/><s n="m"/><s n="pl"/></l><r>pas<s n="n"/><s n="m"/><s n="sp"/></r></p></e> |
|||
<e r="RL"><p><l>pas<s n="n"/><s n="m"/><s n="ND"/></l><r>pas<s n="n"/><s n="m"/><s n="sp"/></r></p></e> |
|||
</pre> |
|||
Dans la traduction de l'occitan au français, ''pas'' au singulier et ''pas'' au pluriel (''passes'' en languedocien) sont traduits par la forme invariable en nombre (''sp'') ''pas''. Par contre, dans la traduction à l'occitan, on doit choisir s'il faut le singulier ou le pluriel. L'étiquette ''ND'' indique aux règles de transfert que le nombre doit être défini. |
|||
Si les étiquettes ''GD'' et ''ND'' sont largement utilisées dans les traducteurs concernant des langues romanes (et pas que), d'autres étiquettes sont plus spécifiques à ce traducteur. |
|||
* '''tv''' indique que le verbe est transitif. Elle est introduite par le paradigme '''v-v_tv''' et utilisée pour reconnaître des articles partitifs après les verbes. |
|||
* '''pas_neg''' indique que l'adverbe ou le pronom concerné a besoin de l'adverbe ''pas'' en occitan, mais pas en français. Elle est introduite par le paradigme homonyme. |
|||
*'''pron''' indique qu'il faut générer un verbe pronominal si le verbe d'origine ne l'est pas (par exemple, ''décole > s'enlaira''). |
|||
*'''non-pron''' indique qu'il faut générer un verbe non-pronominal si le verbe d'origine est pronominal (par exemple, ''s'enlaira > décole''). Ces verbes doivent être aussi introduits dans '''apertium-oci-fra.oci-fra.t1x''' dans les catégories '''verb_pron-nopron_*''', et dans '''apertium-oci-fra.oci-fra.lrx''' dans les listes '''verbs_intrans''' (comme tous les autres verbes intransitifs). Cette transformation n'est pas encore implémentée du côté français-occitan. |
|||
*'''dat2nom''' indique que les verbes doivent subir une transformation du type ''me hè dòu > je regrette''. Ces verbes doivent être aussi introduits dans '''apertium-oci-fra.oci-fra.t1x''' dans les catégories '''verb_dat2nom_*''' (cette transformation n'est pas encore implémentée du côté français-occitan). |
|||
*'''nopron''' est une étiquette différente à toutes les autres parce qu'elle a surtout pour but la sélection lexicale au lieu du transfert. Il s'agit dans certain cas d'être capables de choisir entre deux traductions du même verbe, une pronominale et l'autre non. Par exemple, le verbe ''couler'', si transitif, doit être traduit comme ''enfonzar'' mais sinon, comme ''s'enfonzar''. Pour choisir la seconde, on peut utiliser l'étiquette '''pron''', mais, pour le premier cas, il faut un indicatif spécifique, qui est '''nopron'''. |
|||
Il faut souligner que ces étiquettes ne peuvent être utilisées du côté de la langue source puisqu'ils empêcheraient de faire "match" avec les formes décrites dans les dictionnaires unilingues. Ainsi, par exemple, |
|||
<pre> |
|||
<e alt="oci"> <p><l>gaire<s n="adv"/></l> <r>guère<s n="adv"/></r></p><par n="pas_neg"/></e> |
|||
</pre> |
|||
devient |
|||
<pre> |
|||
<e alt="oci" r="LR"><p><l>gaire<s n="adv"/></l> <r>guère<s n="adv"/><s n="pas_neg"/></r></p></e> |
|||
<e alt="oci" r="RL"><p><l>gaire<s n="adv"/><s n="pas_neg"/></l> <r>guère<s n="adv"/></r></p></e> |
|||
</pre> |
|||
==Chiffres== |
|||
À la publication de la version 1.0 sur le site d'Apertium, le 2 novembre 2022, on a : |
|||
===Règles de désambiguïsation=== |
|||
{|class="wikitable" |
|||
! style="width: 50%" colspan="2"|Occitan |
|||
! style="width: 50%" colspan="2"|Français |
|||
|- |
|||
! style="width: 25%; text-align:center"|Select |
|||
! style="width: 25%; text-align:center"|Remove |
|||
! style="width: 25%; text-align:center"|Select |
|||
! style="width: 25%; text-align:center"|Remove |
|||
|- |
|||
| style="text-align:center"|1 668 |
|||
| style="text-align:center"|908 |
|||
| style="text-align:center"|1 457 |
|||
| style="text-align:center"|808 |
|||
|- |
|||
|- |
|||
|} |
|||
===Dictionnaire bilingue (entrées)=== |
|||
{|class="wikitable" |
|||
! style="width: 20%; text-align:center"| |
|||
! style="width: 20%; text-align:center"|Languedocien > français |
|||
! style="width: 20%; text-align:center"|Gascon > français |
|||
! style="width: 20%; text-align:center"|Français > languedocien |
|||
! style="width: 20%; text-align:center"|Français > gascon |
|||
|- |
|||
! style="text-align:left"|Total |
|||
| style="text-align:center"|80 147 |
|||
| style="text-align:center"|81 818 |
|||
| style="text-align:center"|69 181 |
|||
| style="text-align:center"|69 112 |
|||
|- |
|||
! style="text-align:left"|Sans noms propres |
|||
| style="text-align:center"|40 083 |
|||
| style="text-align:center"|41 725 |
|||
| style="text-align:center"|29 634 |
|||
| style="text-align:center"|39 534 |
|||
|- |
|||
! style="text-align:left"|Toponymes |
|||
| style="text-align:center"|9 374 |
|||
| style="text-align:center"|9 397 |
|||
| style="text-align:center"|8 908 |
|||
| style="text-align:center"|8 900 |
|||
|- |
|||
|} |
|||
===Règles de sélection lexicale=== |
|||
{|class="wikitable" |
|||
! style="width: 20%; text-align:center"| |
|||
! style="width: 20%; text-align:center"|Languedocien > français |
|||
! style="width: 20%; text-align:center"|Gascon > français |
|||
! style="width: 20%; text-align:center"|Français > languedocien |
|||
! style="width: 20%; text-align:center"|Français > gascon |
|||
|- |
|||
! style="text-align:left"|Total |
|||
| style="text-align:center"|1 122 |
|||
| style="text-align:center"|1 193 |
|||
| style="text-align:center"|749 |
|||
| style="text-align:center"|731 |
|||
|- |
|||
|} |
|||
===Règles de mots discontinus=== |
|||
{|class="wikitable" |
|||
! style="width: 20%; text-align:center"| |
|||
! style="width: 20%; text-align:center"|Languedocien > français |
|||
! style="width: 20%; text-align:center"|Gascon > français |
|||
! style="width: 20%; text-align:center"|Français > languedocien |
|||
! style="width: 20%; text-align:center"|Français > gascon |
|||
|- |
|||
! style="text-align:left"|Assemblage |
|||
| style="text-align:center"|346 |
|||
| style="text-align:center"|396 |
|||
| style="text-align:center"|177 |
|||
| style="text-align:center"|731 |
|||
|- |
|||
! style="text-align:left"|Découpage |
|||
| style="text-align:center"|66 |
|||
| style="text-align:center"|66 |
|||
| style="text-align:center"|159 |
|||
| style="text-align:center"|163 |
|||
|- |
|||
|} |
|||
===Règles de transfert=== |
|||
{|class="wikitable" |
|||
! style="width: 20%; text-align:center"| |
|||
! style="width: 20%; text-align:center"|Languedocien > français |
|||
! style="width: 20%; text-align:center"|Gascon > français |
|||
! style="width: 20%; text-align:center"|Français > languedocien |
|||
! style="width: 20%; text-align:center"|Français > gascon |
|||
|- |
|||
! style="text-align:left" rowspan="2"|Transfert intra-segmental |
|||
! style="text-align:center" colspan="2"|oci-fra.t1x |
|||
! style="text-align:center" colspan="2"|fra-oci.t1x |
|||
|- |
|||
| style="text-align:center"|210 |
|||
| style="text-align:center"|210 |
|||
| style="text-align:center"|240 |
|||
| style="text-align:center"|240 |
|||
|- |
|||
! style="text-align:left" rowspan="14"|Transfert inter-segmental |
|||
! style="text-align:center" colspan="2"|oci-fra.t2x_temps |
|||
! style="text-align:center" colspan="2"|fra-oci.t2x_ini |
|||
|- |
|||
| style="text-align:center" colspan="2"|30 |
|||
| style="text-align:center" colspan="2"|36 |
|||
|- |
|||
! style="text-align:center" colspan="2"|oci-fra.t2ax |
|||
! style="text-align:center" colspan="2"|fra-oci.t2x |
|||
|- |
|||
| style="text-align:center"|232 |
|||
| style="text-align:center"|232 |
|||
| style="text-align:center"|40 |
|||
| style="text-align:center"|40 |
|||
|- |
|||
! style="text-align:center" colspan="2"|oci-fra.t2bx |
|||
! style="text-align:center" colspan="2"|fra-oci.t2x_bis |
|||
|- |
|||
| style="text-align:center"|88 |
|||
| style="text-align:center"|88 |
|||
| style="text-align:center"|23 |
|||
| style="text-align:center"|23 |
|||
|- |
|||
! style="text-align:center" colspan="2"|oci-fra.t2cx |
|||
! style="text-align:center" colspan="2"|fra-oci.t2x_pas |
|||
|- |
|||
| style="text-align:center"|43 |
|||
| style="text-align:center"|43 |
|||
| style="text-align:center" colspan="2"|13 |
|||
|- |
|||
! style="text-align:center" colspan="2"|oci-fra.t2dx |
|||
! style="text-align:center" colspan="2"|fra-oci.t2x_pro |
|||
|- |
|||
| style="text-align:center" colspan="2"|23 |
|||
| style="text-align:center" colspan="2"|13 |
|||
|- |
|||
! style="text-align:center" colspan="2"|oci-fra.t2ex |
|||
| style="text-align:center" rowspan="4"| |
|||
! style="text-align:center"|fra-oci.t2x_supersn |
|||
|- style="vertical-align:top" |
|||
| style="text-align:center"; colspan="2"; rowspan="3"|4 |
|||
| style="text-align:center"|28 |
|||
|- |
|||
! style="text-align:center"|fra-oci.t2x_enon |
|||
|- |
|||
| style="text-align:center"|47 |
|||
|- |
|||
! style="text-align:left" rowspan="2"|Transfert post-segmental |
|||
! style="text-align:center" colspan="2"|oci-fra.t3x |
|||
! style="text-align:center" colspan="2"|fra-oci.t3x |
|||
|- |
|||
| style="text-align:center" colspan="2"|2 |
|||
| style="text-align:center" colspan="2"|3 |
|||
|- |
|||
! style="text-align:left" rowspan="2"|Étape finale |
|||
! style="text-align:center" colspan="2"|oci-fra.t4x |
|||
! style="text-align:center" colspan="2"|fra-oci.t4x |
|||
|- |
|||
| style="text-align:center" colspan="2"|4 |
|||
| style="text-align:center" colspan="2"|3 |
|||
|- |
|||
|} |
|||
===Couverture=== |
|||
La '''couverture''' (dite naïve) du traducteur du français à l'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'<i>Est Républicain</i> (fins mars 2022). |
|||
=Tube= |
=Tube= |
||
Pour une info plus générale, voir [[ |
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''. |
Comme toujours chez Apertium, le tube de processus est défini dans le fichier ''modes.xml''. |
||
Line 31: | Line 267: | ||
===Tagueur=== |
===Tagueur=== |
||
Comme d'habitude chez Apertium, le procès de tagage (analyse morphologique) se décompose en trois phases. |
|||
====Analyseur==== |
====Analyseur==== |
||
apertium-fra.fra.metadix |
|||
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 : |
|||
<pre> |
|||
$ echo "occitan" | apertium -d . fra-disam |
|||
"<occitan>" |
|||
"occitan" adj m sg |
|||
"occitan" n m sg |
|||
</pre> |
|||
====Désambiguïsateur par règles==== |
====Désambiguïsateur par règles==== |
||
(apertium-fra.fra.rlx) |
|||
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 [[Contraintes_grammaticales|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 : |
|||
<pre> |
|||
$ 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 |
|||
</pre> |
|||
====Désambiguïsateur statistique==== |
====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'''. |
|||
(fra-oci.prob) |
|||
===Assemblage de mots discontinus=== |
===Assemblage de mots discontinus=== |
||
(apertium-oci-fra.fra-oci.l1x) |
|||
On utilise le module [[apertium separable]] pour traiter les mots discontinus. |
|||
Le problème se pose quand on a des locutions dans les dictionnaires, mais elles sont "coupées" par des mots à l'intérieur. L'exemple typique pour l'occitan et le français sont les locutions verbales au négatif. Prenons, par exemple : |
|||
<pre> |
|||
<e a="Congrès" alt="oci"><p><l>far<g><b/>pena</g><s n="vblex"/></l> <r>faire<g><b/>de<b/>la<b/>peine</g><s n="vblex"/></r></p></e> |
|||
</pre> |
|||
Si on trouve "faire de la peine" (avec une forme conjuguée du verbe ''avoir'') on traduit au languedocien par "far pena". Mais quand on trouve "il ne fait pas de la peine", l'expression n'est plus reconnue puisque "pas" en rompt la continuité. C'est dans ces cas que le module vient en aide. |
|||
L'assemblage de mots discontinus, moyennant des règles pour chaque expression, les traque dans les textes tout en réordonnant les mots. Ainsi "il + ne + <u>fait + pas + de + la + peine</u>" devient "il + ne + <u>fait de la peine</u> + pas" : |
|||
<pre> |
|||
$echo "il ne fait pas de la peine" | apertium -d . fra-oci-lsx1 |
|||
^il<prn><tn><p3><m><sg>$ ^ne<adv>$ ^faire# de la peine<vblex><pri><p3><sg>$ ^pas<adv>$^.<sent>$ |
|||
</pre> |
|||
Ces règles se trouvent dans le fichier '''apertium-oci-fra.fra-oci.l1x'''. |
|||
Certaines locutions se trouvent dans le bidixe pour une des variétés occitanes, mais pas pour l'autre. Dans ce cas, il faut activer la règle d'assemblage seulement dans le traducteur à la variété concernée. |
|||
===Transfert lexical=== |
===Transfert lexical=== |
||
apertium-oci-fra.oci-fra.dix |
|||
Le transfert lexical est simplement le "collage" des possibles traductions de chaque mot, d'après le bidixe ('''apertium-oci-fra.oci-fra.dix'''). Par exemple, dans le cas du nom (masculin singulier) "fruit", il peut être traduit comme "fruch" ou "frucha" en languedocien : |
|||
<pre> |
|||
$ echo "fruit" | apertium -d . fra-oci-biltrans |
|||
^fruit<n><m><sg>/fruch<n><m><sg>/frucha<n><f><sg>$^.<sent>/.<sent>$ |
|||
</pre> |
|||
===Sélection lexicale=== |
===Sélection lexicale=== |
||
apertium-oci-fra.fra-oci.metalrx |
|||
La sélection des différentes traductions possibles d'un mot se fait moyennant le module '''apertium-lex-tools''' et le fichier de règles '''apertium-oci-fra.fra-oci.lrx''' (voir [[How to get started with lexical selection rules]] pour plus de détail sur la syntaxe, bien que c'est assez intuitif). Plusieurs ''macros'' d'autres paires de langues ont été réutilisées ou adaptées. Ainsi, par exemple, en languedocien, "fruit" devint "fruch" dans "un fruit", mais "frucha" (au singulier) dans "des fruits" : |
|||
===Transfert=== |
|||
<pre> |
|||
====Chunker==== |
|||
apertium- |
$ echo "un fruit" | apertium -d . fra-oci-lextor |
||
1:SELECT:0.8:fruit<n><m><sg>:2:fruch<n><m><sg> |
|||
^un<det><ind><m><sg>/un<det><ind><m><sg>$ ^fruit<n><m><sg>/fruch<n><m><sg>$^.<sent>/.<sent>$ |
|||
$ echo "des fruits" | apertium -d . fra-oci-lextor |
|||
====Interchunck==== |
|||
1:SELECT:1:fruit<n><m><pl>:3:frucha<n><f><sg> |
|||
^de<pr>/de<pr>$ ^le<det><def><mf><pl>/lo<det><def><GD><pl>$ ^fruit<n><m><pl>/frucha<n><f><sg>$^.<sent>/.<sent>$ |
|||
</pre> |
|||
S'il y a plusieurs possibles traductions pour un mot mais pas de règles dans la sélection lexicale, tout se passe comme si la sélection serait aléatoire. Il ne faut pas penser que l'ordre des mots dans le bidixe est décisif, d'autant plus que les dictionnaires peuvent être reformatés et réordonnés. |
|||
=====Interchunk initial===== |
|||
Les règles de sélection lexicale dépendent souvent de la variété occitane. Par exemple, pour "fruit", ce sont "fruch" et "frucha" qui entrent en concurrence pour le languedocien, mais "hrut" et "hruta" pour le gascon. La balise ''v'' est utilisée pour exprimer la variété concernée. Presque toujours, quand les lemmes sont différents, les règles restent exactement les mêmes. Pour faciliter la lisibilité et la maintenance, on tâche de ne pas recopier les règles, mais de ne changer que les lemmes à l'aide de la balise. Comme toujours, le travail sur les balises est faite par le module '''apertium-filter-rules''', qui est invoqué dans '''Makefile.am'''. |
|||
=====interchunk_bis===== |
|||
=== |
===Transfert structurel=== |
||
Jusqu'ici, la traduction se réalise, en fait, mot à mot. Le transfert structurel s'occupe des transformations requises quand la traduction mot à mot est insuffisante. |
|||
=====interchunk_pro===== |
|||
Actuellement, Apertium a [[fragmentation|un modèle de traduction en trois étapes]] appelées en anglais ''chunker'' (transfert intra-segmental), ''interchunker'' (transfert inter-segmental) et ''postchunker'' (transfert post-segmental). Cependant, déjà plusieurs traducteurs utilisent une généralisation de ce modèle en [[Transfert_en_N_étapes|n étapes]]. Dans la traduction au languedocien, le transfert post-segmental est divisé en cinq étapes et pour le gascon, en sept (voir ci-dessus). En plus, une dernière étape est ajoutée après de transfert post-segmental. Au total, le transfert structurel français-languedocien a huit étapes et le français-gascon en a dix. |
|||
=====interchunk_supersn===== |
|||
gascon |
|||
Les dizaines, parfois centaines, de règles dans les fichiers pour chaque étape sont regroupées dans des blocs avec un commentaire en tête commençant par |
|||
=====interchunk_enon===== |
|||
<pre><!-- RÈGLAS (description) --></pre> |
|||
gascon |
|||
et finissant par |
|||
<pre><!-- FIN RÈGLAS (description) --></pre> |
|||
Cela aide à s'orienter là-dedans. Ce sont ces blocs qui vont être présentés ci-dessous. |
|||
En tout cas, en plus de cette documentation, on peut tout simplement utiliser [[apertium-viewer]] pour traquer à quel point du tube une transformation a lieu. |
|||
====Postchunk==== |
|||
apertium-oci-fra.fra-oci.t3x |
|||
==== |
====Transfert intra-segmental==== |
||
Le transfert intra-segmental est l'étape qui crée les segments (''chunks'') dans lesquels des mots se regroupent. Ces segments sont les unités qui vont être traités dans le transfert inter-segmental. Chaque segment reçoit un en-tête, qui peut être accédé par le transfert inter-segmental, et un contenu qui, lui, est inaccessible. En même temps, le transfert résout déjà un bon nombre de questions. |
|||
apertium-oci-fra.fra-oci.t4x |
|||
Les blocs du transfert intra-segmental sont les suivants : |
|||
* '''règles d'accord''' : s'occupent de la concordance à l'intérieur des syntagmes nominaux, en particulier dans les nombreux cas où en français un nom ou un adjectif a la même forme en masculin et féminin (cf. ''académique'') ou en singulier et pluriel (cf. ''français''), mais en occitan ces formes sont différentes. C'est ici aussi où ''plusieurs'' (au pluriel) est traduit par ''mantun'' (au singulier) et tout le groupe nominal passe au singulier. |
|||
* '''règles -ci/-là''' : transforment des structures comme ''cette fois-ci'' et ''cette fois-là'' en ''aqueste còp'' et ''aquèl cop'', respectivement. |
|||
* '''règles de toponymes''' : éliminent l'article défini devant des noms de pays, régions, rivières, etc. |
|||
* '''règles d'heures''' : changent des structures comme ''il <u>est</u> deux heures'' par ''<u>son</u> doas oras''. |
|||
* '''règles de dates''' : changent des structures comme ''20 novembre 1998'' par ''20 <u>de</u> novembre <u>de</u> 1998''. |
|||
* '''règles de changement de verbe auxiliaire''' : pour le verbe ''être'' l'auxiliaire dans les temps composés devient ''èsser'' (languedocien) ou ''estar'' (gascon). |
|||
* '''règles pour les verbes pronominaux qui deviennent non-pronominaux''' : par exemple, ''Jean <u>se rend</u> chez lui'' devient ''Jean <u>va</u> a casa''. Les verbes devant subir cette transformation, comme ''rendre'', sont marqués à l'aide du paradigme ''non-pron'' dans le bidixe dans des lignes ''r="RL"'' (voire la section [[#Les_.C3.A9tiquettes_ajout.C3.A9es_dans_le_dictionnaire_bilingue|Les étiquettes ajoutées dans le dictionnaire bilingue]]) et, en plus, ils doivent être introduits dans les catégories '''verb_pron-nopron*''' du fichier de règles du transfert intra-segmental. |
|||
* '''règles d'élision de ''ne'' dans les négations''' : par exemple, ''Jean <u>n'est</u> pas'' devient ''Jean <u>es</u> pas'' (Il faut signaler que cela se fait aussi pour le gascon, bien qu'ensuite ''ne'' soit ajouté à nouveau lorsqu'on inclut les énonciatifs). |
|||
* '''règles d'élision du pronom personnel sujet''' : par exemple, ''<u>il</u> arrive'' devient ''arriba''. |
|||
* '''règles de transformation de ''on''''' : par exemple, ''<u>on</u> peut'' devient ''<u>se</u> pòt''. |
|||
* '''règles de transformation de ''on + devoir + infinitif''''' : par exemple, ''<u>on doit</u> manger'' devient ''<u>cal</u> manjar''. |
|||
* '''règles de réarrangement des pronoms avec des verbes modaux''' : par exemple, ''auraient pu <u>l'</u>imaginer'' devient ''<u>l'</u>aurián pogut imaginar''. |
|||
* '''règles de transformation de ''être en train de''''' : par exemple, ''Jean <u>est en train de</u> dormir'' devient ''Jean <u>dòrm</u>''. |
|||
* '''règles de transformation de ''ne... que''''' : par exemple, ''<u>ne</u> veut <u>que</u> manger'' devient ''vòl <u>pas que</u> manjar''. |
|||
* '''règles d'élision de ''ce'' devant ''être''''' : par exemple, ''<u>ce</u> fut'' devient ''foguèt''. |
|||
* autres règles. |
|||
C'est aussi dans cette étape qu'on fait les transformations suivantes : |
|||
* '''changer les majuscules pour les gentilés par des minuscules''' (''les <u>F</u>rançais'' devient ''los <u>f</u>ranceses''). Les gentilés qui sont susceptibles de cette transformation se trovent sur la liste '''gentilici'''. Il faut noter que cette liste contient des noms qui non nécessairement vont en majuscule en français (comme ''français'', quand il s'agit de la langue). Les mots qui vont toujours en majuscule (comme ''Toulousain'') sont simplement écrits en majuscule dans les dictionnaires. |
|||
* '''changer l'ordre de certains adjectifs''' (''le <u>nouveau livre</u>'' devient ''lo <u>libre novèl</u>'' ou ''lo <u>libe navèth</u>''). Les adjectifs susceptibles de changer d'ordre se trouvent sur la liste '''adj_pre'''. |
|||
* '''changer l'impératif par le subjonctif présent dans les phrases négatives''' (''no <u>chante</u> pas'' devient ''<u>cantes</u> pas''. |
|||
*'''changer certains verbes non-pronominaux, qui deviennent pronominaux''' : par exemple, ''l'avion <u>décolle</u>'' devient ''l'avion <u>s'enlaira</u>'' (ces changements se produisent au sein de plusieurs règles de traitement de structures verbales, sans qu'il y ait un bloc de règles spécifique pour cela). Ces verbes sont signalés avec l'étiquette '''pron''' dans le dico bilingue (voire la section [[#Les_.C3.A9tiquettes_ajout.C3.A9es_dans_le_dictionnaire_bilingue|Les étiquettes ajoutées dans le dictionnaire bilingue]]). |
|||
Le fichier de règles est '''apertium-oci-fra.fra-oci.t1x'''. Il y a de multiples règles différentes pour le languedocien et le gascon, ce qui cause l'utilisation de la valise ''v''. Fin mars 2022, il y avait 199 règles pour le languedocien et 194 pour le gascon, 219 au total. |
|||
====Transfert inter-segmental==== |
|||
Le transfert inter-segmental permet de faire des transformations à plus longue distance que celles de l'étape précédente qui ne pouvait tenir en compte que quelques mots adjacents. |
|||
De nombreuses transformations doivent être faites. Le problème, c'est que la plupart tournent autour des verbes. Si on mettait toutes les règles dans un seul fichier, elles entreraient en concurrence les unes avec autres. Cela causerait que des règles pertinentes ne seraient pas exécutées. La solution est de placer ces transformations en plusieurs étapes. |
|||
=====Première étape===== |
|||
Les blocs de la première étape du transfert inter-segmental sont les suivants : |
|||
*'''accord en nombre entre sujet et verbe''', particulièrement quand ''nombreux'' devient ''plusieurs'' : par exemple, ''plusieurs problèmes <u>attendent</u>'' devient ''mantun problèma <u>espera</u>'' (l'accord dans le groupe nominal est déjà fait dans le transfert intra-segmental). Si on a une phrase comme ''plusieurs maisons sont belles'', à ce stade elle devient quelque chose comme ''mantun ostal <u>es</u> polides'' : l'accord avec l'attribut en genre et nombre se fait par la suite. |
|||
Le fichier de règles est '''apertium-oci-fra.fra-oci.t2x_ini'''. |
|||
=====Deuxième étape===== |
|||
Les blocs de la deuxième étape du transfert inter-segmental sont les suivants : |
|||
*'''changement de l'article partitif''' : par exemple, ''je veux <u>de l'</u>eau'' devient ''vòli <u>d'</u>aiga'' en languedocien et ''vòli aiga'' en gascon. |
|||
*'''accord en genre entre ''mantun'' et le groupe nominal qui dépend de lui''' : par exemple, ''plusieurs de ses <u>amies</u>'' devient ''<u>mantuna</u> de sas amigas'' (ceci est, en partie, déjà fait lors de l'étape précédente). |
|||
*'''accord en genre et nombre entre sujet et attribut''' : par exemple, ''la maison est <u>grande</u>'' devient ''l'ostal es <u>grand</u>''. |
|||
*'''règles pour le superlatif''' : par exemple, ''la montagne <u>la plus</u> haute'' devient ''la montanha <u>mai</u> nauta''. |
|||
Le fichier de règles est '''apertium-oci-fra.fra-oci.t2x'''. |
|||
=====Troisième étape===== |
|||
Les blocs de la troisième étape du transfert inter-segmental sont les suivants : |
|||
*'''réarrangement de l'adverbe ''mieux''''' : par exemple, ''<u>mieux</u> parler'' devient ''parlar <u>melhor</u>. |
|||
*'''règles de transformation du présent du subjonctif à l'imparfait du subjonctif''' : par exemple, ''je désirais que tu <u>chantes</u>'' devient ''desiravi que <u>cantèsses</u>''. |
|||
*<s>'''règles de transformation de l'imparfait de l'indicatif à l'imparfait du subjonctif''' (seulement pour le gascon) : par exemple, ''si vous <u>aviez</u>'' devient ''si <u>avóssetz</u>''</s>. (Ces règles ont été commentées 19.06.2022 parce qu'il faut ajouter des restrictions) |
|||
*'''règles de transformation du futur de l'indicatif au présent du subjonctif''' (seulement pour le gascon) : par exemple, ''quand vous <u>aurez</u>'' devient ''quan <u>ajatz</u>'' ; ''dès que vous <u>aurez</u>'' devient ''antaulèu <u>ajatz</u>''. |
|||
*'''règles de transformation du présent de l'indicatif au futur simple''' (seulement pour le gascon) : par exemple, ''même si vous <u>avez</u>'' devient ''quan <u>auratz</u>''. |
|||
*'''règles de transformation de l'imparfait de l'indicatif au conditionnel''' (seulement pour le gascon) : par exemple, ''même si vous <u>aviez</u>'' devient ''quan <u>auretz</u>''. |
|||
Le fichier de règles est '''apertium-oci-fra.fra-oci.t2x_bis'''. |
|||
=====Quatrième étape : ajout de l'adverbe ''pas''===== |
|||
La quatrième étape du transfert inter-segmental s'occupe de l''''ajout de l'adverbe ''pas'' dans les négations qui ne l'ont pas''' : par exemple, ''je n'en ai eu aucune'' devient ''n'ai <u>pas</u> agut cap'' ; ''personne ne vient'' devient ''degun ven <u>pas</u>''. |
|||
Le fichier de règles est '''apertium-oci-fra.fra-oci.t2x_pas'''. |
|||
=====Cinquième étape : réarrangement des pronoms===== |
|||
La cinquième étape du transfert inter-segmental s'occupe du '''réarrangement des pronoms avec des verbes modaux''' pour des cas qui n'ont pas été traités dans le transfert intra-segmental : par exemple, ''pouvaient <u>l'aider</u>'' devient ''<u>la</u> podián ajudar''. |
|||
Le fichier de règles est '''apertium-oci-fra.fra-oci.t2x_pro'''. |
|||
=====Sixième étape : groupement de segments===== |
|||
La sixième étape du transfert inter-segmental est exclusive du gascon et prépare la sixième étape. Elle a pour but de regrouper, dans certains cas, quelques segments en un seul plus large pour faciliter les analyses syntactiques à plus longe distance. |
|||
Le fichier de règles est '''apertium-oci-fra.fra-oci.t2x_supersn'''. |
|||
=====Septième étape : génération des énonciatifs===== |
|||
La septième étape du transfert inter-segmental est exclusive au gascon et s'occupe de la '''génération des énonciatifs'''. |
|||
Il s'agit d'une cinquantaine de règles (fin mars 2022) regroupées en deux ensembles : |
|||
* règles de "courte portée", qui analysent tout juste le verbe et ces alentours |
|||
* règles de "longue portée", qui analysent du verbe jusqu'à la fin de la phrase |
|||
Un certain nombre de règles existent pour reconnaître des constructions syntactiques dans lesquelles il ne faut pas générer d'énonciatif et qui bloquent leur génération par d'autres règles. |
|||
Les règles de longue portée sont utilisées pour voir si on a affaire à une phrase exclamative ou interrogative et générer l'énonciatif spécifique à ces cas. Étant donné qu'Apertium utilise une stratégie de transfert superficiel (c'est-à-dire qu'il n'y a pas d'arbre d'analyse complet de la phrase), la "longue portée" est difficile. C'est pourquoi on a regroupé les segments dans l'étape précédente. Si les règles de longue portée ne reconnaissent pas la phrase (ce qui arrive souvent si elle a des subordonnées), alors les règles de courte portée entrent en action et ne choisissent qu'entre les énonciatifs "que" et "ne" (ou pas d'énonciatif). |
|||
Le fichier de règles est '''apertium-oci-fra.fra-oci.t2x_enon'''. |
|||
Il faut noter un [https://github.com/apertium/apertium/issues/138 bogue] avec les espaces. La solution provisoire est d'écrire deux espaces au lieu d'un après un énonciatif. Apparemment, '''apertium-posttransfer''' (un des programmes du tube d'Apertium qui n'est pas configurable) élimine ces espaces en trop et ce truc ne dérange pas beaucoup le résultat final. |
|||
====Transfert post-segmental==== |
|||
Le transfert post-segmental est un très petit nombre de règles, bornées à pas plus d'un seul segment, qui font des dernières retouches, si besoin. |
|||
Ici quelques règles ajustent des majuscules ou minuscules. |
|||
Le fichier de règles est '''apertium-oci-fra.fra-oci.t3x'''. |
|||
====Étape finale==== |
|||
Dans quelques traducteurs une étape finale de transfert (de type "intra-segmental") est ajoutée pour encore des dernières retouches. |
|||
Dans la première version du traducteur français-occitan, ici des règles éliminaient les blancs ajoutés habituellement dans le français hexagonal devant les deux-points, points-virgules, etc. Lo Congrès préconise calquer le français hexagonal, donc ces règles ont été commentées (mais peuvent être ajoutées à nouveau facilement). |
|||
Actuellement, cette étape "nettoie" quelques étiquettes morphologiques superflues générées dans le transfert. |
|||
Le fichier de règles est '''apertium-oci-fra.fra-oci.t4x'''. |
|||
===Découpage de mots discontinus=== |
===Découpage de mots discontinus=== |
||
(apertium-oci-fra.fra-oci.l2x) |
|||
À ce stade du processus, la traduction consiste en une description morphologique des mots en occitan pour lesquels on doit générer leur "forme superficielle". Mais on a un problème préalable avec les expressions qui est l'opposé à celui que nous avions auparavant. |
|||
Reprenons l'exemple précédent : |
|||
<pre> |
|||
<e a="Congrès" alt="oci"><p><l>far<g><b/>pena</g><s n="vblex"/></l> <r>faire<g><b/>de<b/>la<b/>peine</g><s n="vblex"/></r></p></e> |
|||
</pre> |
|||
Comme on a vu, si on trouve "il ne fait pas de la peine", l'expression est réarrangée et devient : |
|||
<pre> |
|||
$ echo "il ne fait pas de la peine" | apertium -d . fra-oci-lsx1 |
|||
^il<prn><tn><p3><m><sg>$ ^ne<adv>$ ^faire# de la peine<vblex><pri><p3><sg>$ ^pas<adv>$^.<sent>$ |
|||
</pre> |
|||
Cela permet retrouver la traduction de l'expression dans le dictionnaire : "far pena". |
|||
Après toutes les étapes du transfert, la situation est la suivante : |
|||
<pre> |
|||
$ echo "il ne fait pas de la peine" | apertium -d . fra-oci-t4x |
|||
^far<vblex><pri><p3><sg># pena$ ^pas<adv>$^.<sent>$ |
|||
</pre> |
|||
Le problème est qu'on va produire "fa pena pas" puisque "far pena" est considéré comme un seul mot. Il fait donc le "découper" et introduire "pas" au milieu, ce qui se fait en utilisant à nouveau [[apertium-separable]] : |
|||
<pre> |
|||
$ echo "il ne fait pas de la peine" | apertium -d . fra-oci-lsx2 |
|||
^far<vblex><pri><p3><sg>$ ^pas<adv>$ ^pena<n><f><sg>$^.<sent>$ |
|||
</pre> |
|||
Les règles de découpage et réarrangement se trouvent dans le fichier '''apertium-oci-fra.fra-oci.l2x'''. |
|||
===Génération=== |
===Génération=== |
||
Pour les langues romanes, la génération finale des mots de fait en deux phases. |
|||
====Générateur morphologique==== |
====Générateur morphologique==== |
||
Le générateur morphologique est la lecture de droite à gauche du dictionnaire morphologique de la langue cible, dans ce cas, l'occitan ('''apertium-oci.oci.metadix''' dans le répertoire '''apertium-oci'''). |
|||
====Pré-post-générateur==== |
|||
(gascon) |
|||
Ainsi, juste avant cette étape, par exemple, "ces maisons" est devenu la séquence "^aquel<det><dem><m><pl>$ ^ostal<n><m><pl>$" : |
|||
<pre> |
|||
$ echo "ces maisons" | apertium -d . fra-oci-posttransfer |
|||
^aquel<det><dem><m><pl>$ ^ostal<n><m><pl>$^.<sent>$ |
|||
</pre> |
|||
Le dictionnaire morphologique donne la forme masculine plurielle du déterminant démonstratif <i>aquel</i> et la plurielle du nom masculin <i>ostal</i> : |
|||
<pre> |
|||
$ echo "ces maisons" | apertium -d . fra-oci-dgen |
|||
aqueles ostals |
|||
</pre> |
|||
Mais dans certains cas, le processus ne s'arrête pas ici. Par exemple, pour "la maison" on obtient : |
|||
<pre> |
|||
$ echo "la maison" | apertium -d . fra-oci-dgen |
|||
~detlo ostal |
|||
</pre> |
|||
La génération directe aurait donné "lo ostal", or c'est "l'ostal" qui doit être créé. C'est pourquoi on a un lemme avec la balise ''~'' (notée ''</a>'' dans le dictionnaire). C'est le post-générateur qui va s'occuper de mettre l'apostrophe. |
|||
====Post-générateur==== |
====Post-générateur==== |
||
Le post-générateur est un ensemble de règles qui mettent les apostrophes et les articles contractés dans le texte. Le fichier de règles est '''apertium-oci.post-oci.dix''' dans le répertoire '''apertium-oci'''. |
|||
Le post-générateur est, en fait, pensé de gauche à droite : les règles sont déclenchées par un mot ayant la balise ''~'' et permettent de décrire ce qu'il faut faire avec ce mot et ceux qui le suivent. Elles ne permettent pas, par contre, de décrire un changement du mot en question en fonction du mot qui le précède. Cela cause qu'on produise, par exemple : |
|||
<pre> |
|||
$ echo "il veut que maintenant tu en manges" | apertium -d . fra-oci_gascon |
|||
que vòu qu'adara ne minges |
|||
</pre> |
|||
au lieu de : |
|||
<pre> |
|||
$ echo "il veut que maintenant tu en manges" | apertium -d . fra-oci_gascon |
|||
que vòu qu'adara'n minges |
|||
</pre> |
|||
Le post-générateur est la dernière étape du tube d'Apertium (du moins, des étapes qui se gèrent avec '''modes.xml'''). |
|||
==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 : |
|||
<pre> |
|||
$ 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 |
|||
</pre> |
|||
====Désambiguïsateur statistique==== |
|||
Comme désambiguïsateur statistique, on utilise le fichier '''oci.prob''' du répertoire '''apertium-oci'''. Il est copié sur '''apertium-oci-fra''' et renommé '''oci-fra.prob''' par '''Makefile.am'''. |
|||
'''oci.prob''' est le très ancien désambiguïsateur statistique utilisé pour les paires occitan-catalan et occitan-espagnol. |
|||
Sur le répertoire '''apertium-oci/texts''' on a désambiguïsé des textes languedociens et gascons (14 000 mots pour le languedocien, 13 000 pour le gascon - fin mars 2022), mais on n'est pas (encore) arrivé à produire un désambiguïsateur statistique nettement meilleur. L'aménagement de ce désambiguïsateur est '''essentielle''' pour l'amélioration du traducteur occitan-français. On peut tester les fichiers ''prob'' générés dans ce répertoire (un pour le languedocien et un autre pour le gascon) en utilisant les modes '''oci-fra-unigram''' et '''oci_gascon-fra-unigram''' : |
|||
<pre> |
|||
$ echo "lo can es verd" | apertium -d . oci-fra-unigram |
|||
Le chien est vert |
|||
$ echo "lo can qu'ei verd" | apertium -d . oci_gascon-fra-unigram |
|||
Le chien est vert |
|||
</pre> |
|||
===Assemblage de mots discontinus=== |
|||
Les règles d'assemblage de mots discontinus se trouvent dans le fichier '''apertium-oci-fra.oci-fra.l1x'''. |
|||
===Transfert lexical=== |
|||
Le transfert lexical se fait en lisant le dictionnaire bilingue ('''apertium-oci-fra.oci-fra.dix''') de gauche à droite. |
|||
===Sélection lexicale=== |
|||
Les règles de sélection lexicale de l'occitan au français se trouvent dans le fichier '''apertium-oci-fra.oci-fra.lrx'''. |
|||
===Transfert structurel=== |
|||
Comme du côté français-occitan, on utilise [[fragmentation|le modèle de traduction en trois étapes]], mais généralisé en [[Transfert_en_N_étapes|n étapes]]. Ainsi, le transfert inter-segmental a été décomposé en sept étapes et une étape finale a été ajoutée après le transfert post-segmental. Au total, le transfert structurel a dix étapes, tant pour les traductions du languedocien comme du gascon. |
|||
====Transfert intra-segmental==== |
|||
Les blocs du transfert intra-segmental occitan-français sont les suivants : |
|||
* '''règles d'accord''' : s'occupent de la concordance à l'intérieur des syntagmes nominaux. |
|||
* '''règles de toponymes''' : dans certains contextes, ajoutent l'article défini devant les noms de pays, régions, rivières, etc. |
|||
* '''règles d'heures''' : changent des structures comme ''<u>son</u> doas oras'' par ''il <u>est</u> deux heures''. |
|||
* '''règles de dates''' : changent des structures comme 20 de novembre de 1998 par 20 novembre 1998. |
|||
* '''règles de changement de verbe auxiliaire''' : pour le verbe ''être'', l'auxiliaire dans les temps composés devient ''avoir''. |
|||
* '''règles de changement d'ordre quand il y a deux pronoms successifs''' : par exemple, ''n'i'' devient ''y en'' et ''li o'' devient ''le lui''. |
|||
* '''règles de changement des constructions ''de... estant'' et ''de... enlà''''' : par exemple, ''<u>de</u> casa <u>estant</u>'' devient ''<u>depuis la</u> maison'' et ''<u>de</u> casa <u>enlà</u>'' devient ''<u>à partir de la</u> maison''. |
|||
* '''règles de changement de la construction ''ser a + infinitif''''' : par exemple, ''<u>soi a</u> parlar'' devient ''<u>suis en train de</u> parler''. |
|||
* '''règles de changement de la construction ''tornar + infinitif''''' : par exemple, ''<u>tornar</u> dormir'' devient ''dormir <u>à nouveau</u>'' (mais on a aussi beaucoup de verbes du type ''tornar + infinitif'' dans les dictionnaires qui sont traduits directement, en général par de verbes français en ''re-'' ou ''ré-''). |
|||
* '''règles de transformation de certains verbes non pronominaux en verbes pronominaux''' : par exemple, ''copar palhas'' devient ''se brouiller''. Les verbes devant subir cette transformation, comme ''copar# palhas'', sont marqués à l'aide du paradigme ''pron'' dans le bidixe dans des lignes ''r="LR"'' (voire la section [[#Les_.C3.A9tiquettes_ajout.C3.A9es_dans_le_dictionnaire_bilingue|Les étiquettes ajoutées dans le dictionnaire bilingue]]). |
|||
* '''règles de transformation de certains verbes pronominaux en verbes non pronominaux''' : par exemple, ''s'enlaira'' devient ''décole''. Les verbes devant subir cette transformation, comme ''enlairar'', sont marqués à l'aide du paradigme ''non-pron'' dans le bidixe dans des lignes ''r="LR"'' (voire la section [[#Les_.C3.A9tiquettes_ajout.C3.A9es_dans_le_dictionnaire_bilingue|Les étiquettes ajoutées dans le dictionnaire bilingue]]) et, en plus, ils doivent être introduits dans les catégories '''verb_pron-nopron*''' du fichier de règles du transfert intra-segmental. |
|||
* '''règles de transformation dans certains verbes du pronom datif par un pronom sujet''' : par exemple, ''me hè dòu'' devient ''je regrette''. Les verbes devant subir cette transformation, comme ''har# dòu'' et ''hèr# dòu'', sont marqués à l'aide du paradigme ''dat2nom'' dans le bidixe dans des lignes ''r="LR"'' (voire la section [[#Les_.C3.A9tiquettes_ajout.C3.A9es_dans_le_dictionnaire_bilingue|Les étiquettes ajoutées dans le dictionnaire bilingue]]) et, en plus, ils doivent être introduits dans les catégories '''verb_dat2nom_*''' du fichier de règles du transfert intra-segmental. |
|||
* autres règles. |
|||
C'est aussi dans cette étape qu'on fait les transformations suivantes : |
|||
* '''changer les minuscules pour les gentilés par des majuscules''' (''los <u>f</u>ranceses'' devient ''les <u>F</u>rançais''). Les gentilés qui sont susceptibles de cette transformation se trouvent sur la liste ''gentilici''. Il faut noter que cette liste contient des noms qui non nécessairement vont en majuscule en français (comme français, quand il s'agit de la langue). Les mots qui vont toujours en majuscule (comme Toulousain) sont simplement écrits en majuscule dans les dictionnaires. |
|||
* '''changer l'imparfait du subjonctif par le présent du subjonctif'''. |
|||
Par contre, à présent, on maintient le passé simple, sans le transformer en passé composé (comme, on fait, par exemple, dans le traducteur catalan-français). |
|||
Sans que l'on sache trop pourquoi, dans cette direction de la traduction, il y a tout un système assez compliqué qui veille à mettre une majuscule initiale dans les phrases ou textes à traduire. Par contre, du côté français-occitan les majuscules et minuscules sont calqués de la langue source, à l'exception des gentilés. Il serait beaucoup plus simple de se débarrasser de tout ceci. |
|||
Le fichier de règles est '''apertium-oci-fra.oci-fra.t1x'''. Il y a quelques règles différentes pour le languedocien et le gascon, ce qui cause l'utilisation de la valise ''v''. Fin mars 2022, il y avait 133 règles pour le languedocien et 136 pour le gascon, 142 au total. |
|||
====Transfert inter-segmental==== |
|||
=====Étape 1===== |
|||
Cette première étape du transfert inter-segmental s'occupe des changements de temps dans certaines constructions. Ses blocs sont les suivants : |
|||
*'''transformation de l'imparfait du subjonctif à l'imparfait de l'indicatif dans des phrases conditionnelles''' : par exemple, ''si <u>avóssetz</u>'' devient ''si <u>aviez</u>'' (le pronom sujet est ajouté par la suite). (Plus exactement, la transformation se fait du présent du subjonctif à l'imparfait de l'indicatif puisque l'imparfait du subjonctif est devenu le présent du subjonctif dans le transfert intra-segmental) |
|||
*'''transformation du subjonctif présent au futur simple dans après certaines conjonctions de subordination''' : par exemple, ''quan <u>ajatz</u> > quand <u>aurez</u>'' ; ''autanlèu que <u>ajatz</u> > dès qu'<u>aurez</u>'' (le pronom sujet est ajouté par la suite). |
|||
Bien que ces deux cas ne se donnent, en principe, que pour le gascon et qu'en languedocien on a les mêmes temps qu'en français, cette étape se fait aussi pour le languedocien. D'un côté, ça ne gêne pas puisque ces formes ne devraient pas se rencontrer, mais de l'autre et surtout, quand même, elles apparaissent parfois dans les textes (peut-être appartenant à des variétés de transition). |
|||
Le fichier de règles est '''apertium-oci-fra.oci-fra.t2x_temps'''. |
|||
=====Étapes 2 et 3===== |
|||
Les blocs de cette étape du transfert inter-segmental sont les suivants : |
|||
*'''accord en genre entre sujet et attribut''' : par exemple, ''l'ostal es <u>grand</u>'' devient ''la maison est <u>grande</u>''. |
|||
*'''inclusion du pronom sujet''' : par exemple, ''manjan'' devient ''<u>ils/elles</u> mangent'' et ''èra un ostal'' devient ''<u>c'</u>était une maison'' (on ne choisit pas entre ''il(s)'' ou ''elle(s)'' ; cela se fait ultérieurement). |
|||
Cette étape s'exécute <u>à deux reprises</u>. Cela est nécessaire quand il faut inclure un pronom sujet dans la phrase principale et dans une subordonnée : les règles sont beaucoup plus simples si on les exécute à deux reprises au lieu de créer des règles (très) complexes qui auraient pour but l'inclusion de plusieurs pronoms à la fois. Exemple : |
|||
* Initialement : |
|||
<pre> |
|||
$ echo "es plan a tòrt que patiguèt lo martiri" | apertium -d . oci-fra-chunker |
|||
^Verbcj<SV><vbser><normal><pri><p3><sg>{^être<vbser><4><p3><sg>$}$ ^preadv_adv<SAdv>{^très<preadv>$ ^à tort<adv>$}$ ^cnjsub<cnjsub>{^que<cnjsub>$}$ ^subir<SV><vblex><normal><ifi><p3><sg>{^subir<vblex><4><p3><sg>$}$ ^det<Det><def><m><sg><sl_m><sl_sg>{^le<det><def><m><sg>$}$ ^n<SN><m><sg><sl_m><sl_sg>{^martyre<n><m><sg>$}$^sent<sent>{^.<sent>$}$ |
|||
</pre> |
|||
* Après le premier tour (ajout de ''ce'' dans la proposition principale) : |
|||
<pre> |
|||
$ echo "es plan a tòrt que patiguèt lo martiri" | apertium -d . oci-fra-interchunka |
|||
^Subj<prn><subj><p3><sg>{^Ce<prn><tn><nt>$}$ ^verbcj<SV><vbser><normal><pri><p3><sg>{^être<vbser><4><p3><sg>$}$ ^preadv_adv<SAdv>{^très<preadv>$ ^à tort<adv>$}$ ^cnjsub<cnjsub>{^que<cnjsub>$}$ ^subir<SV><vblex><normal><ifi><p3><sg>{^subir<vblex><4><p3><sg>$}$ ^det<Det><def><m><sg><sl_m><sl_sg>{^le<det><def><m><sg>$}$ ^n<SN><m><sg><sl_m><sl_sg>{^martyre<n><m><sg>$}$^sent<sent>{^.<sent>$}$ |
|||
</pre> |
|||
* Après le deuxième tour (ajout d'''il/elle'' (''prpers prn.tn.p3.GD.sg'') dans la proposition subordonnée) : |
|||
<pre> |
|||
$ echo "es plan a tòrt que patiguèt lo martiri" | apertium -d . oci-fra-interchunka2 |
|||
^Subj<prn><subj><p3><sg>{^Ce<prn><tn><nt>$}$ ^verbcj<SV><vbser><normal><pri><p3><sg>{^être<vbser><4><p3><sg>$}$ ^preadv_adv<SAdv>{^très<preadv>$ ^à tort<adv>$}$ ^cnjsub<cnjsub>{^que<cnjsub>$}$ ^subj<prn><subj><p3><GD><sg>{^prpers<prn><tn><3><4><5>$}$ ^subir<SV><vblex><normal><ifi><p3><sg>{^subir<vblex><4><p3><sg>$}$ ^det<Det><def><m><sg><sl_m><sl_sg>{^le<det><def><m><sg>$}$ ^n<SN><m><sg><sl_m><sl_sg>{^martyre<n><m><sg>$}$^sent<sent>{^.<sent>$}$ |
|||
</pre> |
|||
* Traduction finale : |
|||
<pre> |
|||
$ echo "es plan a tòrt que patiguèt lo martiri" | apertium -d . oci-fra |
|||
C'est très à tort qu'il subit le martyre |
|||
</pre> |
|||
Le fichier de règles est '''apertium-oci-fra.oci-fra.t2ax'''. |
|||
=====Étape 4===== |
|||
Cette étape du transfert inter-segmental s'occupe des phrases négatives, en particulier de : |
|||
*'''ajout de l'adverbe ''ne'' sans suppression de ''pas''''' : par exemple, ''cantes pas'' devient ''<u>ne</u> chantes pas''. |
|||
*'''ajout de l'adverbe ''ne'' avec suppression de ''pas''''' : par exemple, ''cantes <u>pas jamai</u>'' devient ''<u>ne</u> chantes <u>jamais</u>''. |
|||
*'''suppression de ''pas'' en cas de redondance''' : par exemple, ''non ai <u>pas</u> cap d'idèa'' devient ''n'ai aucune idée''. |
|||
Le fichier de règles est '''apertium-oci-fra.oci-fra.t2bx'''. |
|||
=====Étape 5===== |
|||
Les blocs de cette étape du transfert inter-segmental sont les suivants : |
|||
*'''changement de l'article partitif''' : par exemple, ''vòli <u>d'</u>aiga'' en languedocien et ''vòli aiga'' en gascon deviennent ''je veux <u>de l'</u>eau''. En particulier, dans la macro '''f_expression''', il y a des dizaines d'expressions pour lesquelles on ne doit pas générer de partitif en gascon (comme ''prendre conscience'' ou ''prendre place'', cf. ''Règles de post-traitement Apertium oci, § Exceptions partitif''). |
|||
*'''traitement de l'énonciatif ''çò''''' : |
|||
** ''çò'' dans une structure du type ''çò'' + verbe + groupe nominal est supprimé : par exemple, ''<u>çò</u> ditz Anna'' devient ''dit Anna'' |
|||
** ''çò'' dans une structure du type ''çò'' + verbe non suivit par un groupe nominal est transformé en un pronom sujet en position enclitique : par exemple, ''<u>çò</u> ditz'' devient ''dit-il/elle'' et ''<u>çò</u> disi'' devient ''dis-je''. |
|||
Le fichier de règles est '''apertium-oci-fra.oci-fra.t2cx'''. |
|||
=====Étape 6===== |
|||
Les blocs de cette étape du transfert inter-segmental sont les suivants : |
|||
*'''réarrangement des pronoms avec les verbes modaux''' : par exemple, ''<u>la</u> podián ajudar'' devient ''pouvaient <u>l'</u>aider''. |
|||
*'''accord des pronoms''' : par exemple, ''<u>cap</u> d'elas'' devient ''<u>aucune</u> d'elles''. |
|||
Le fichier de règles est '''apertium-oci-fra.oci-fra.t2dx'''. |
|||
=====Étape 7===== |
|||
Cette étape du transfert inter-segmental n'a pour le moment qu'un seul bloc qui s'occupe de : |
|||
*'''changement de la position de l'adverbe ''mieux''''' : par exemple, ''parlar <u>melhor</u>'' devient ''<u>mieux</u> parler''. |
|||
Le fichier de règles est '''apertium-oci-fra.oci-fra.t2ex'''. |
|||
====Transfert post-segmental==== |
|||
Une règle choisit le masculin si on doute encore entre "il(s)" ou "elle(s)". |
|||
Le fichier de règles est '''apertium-oci-fra.oci-fra.t3x'''. |
|||
====Étape finale==== |
|||
Tout comme dans le sens français-occitan, une étape finale est ajoutée pour encore des dernières retouches. |
|||
Initialement, des règles ajoutaient des blancs devant les deux-points, points-virgules, etc. Ces règles ont été ici aussi commentées (mais peuvent être ajoutées à nouveau facilement). |
|||
Actuellement, cette étape "nettoie" quelques étiquettes morphologiques superflues générées dans le transfert. En plus, une règle nettoie certains blancs répétés qui ont été ajoutés pour résoudre un [https://github.com/apertium/apertium/issues/138 bogue] |
|||
Le fichier de règles est '''apertium-oci-fra.oci-fra.t4x'''. |
|||
===Découpage de mots discontinus=== |
|||
Les règles de découpage de mots discontinus se trouvent dans le fichier '''apertium-oci-fra.oci-fra.l2x'''. |
|||
===Génération=== |
|||
====Générateur morphologique==== |
|||
La génération des formes superficielles à partir de la description morphologique ce fait à partir du dictionnaire unilingue français, c'est-à-dire du fichier '''apertium-fra.fra.metadix''' dans le répertoire '''apertium-fra'''. |
|||
====Post-générateur==== |
|||
Le fichier de règles est '''apertium-fra.post-fra.dix''' dans le répertoire '''apertium-fra'''. |
|||
[[Category:Occitan and French]] |
|||
[[Category:Documentation en français]] |
Latest revision as of 14:20, 3 January 2023
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.1.1 Tagueur
- 3.1.2 Assemblage de mots discontinus
- 3.1.3 Transfert lexical
- 3.1.4 Sélection lexicale
- 3.1.5 Transfert structurel
- 3.1.6 Découpage de mots discontinus
- 3.1.7 Génération
- 3.2 Occitan-Français
- 3.1 Français-Occitan
Histoire[edit]
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[edit]
Les balises[edit]
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[edit]
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 dictionnaire 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
Les étiquettes ajoutées dans le dictionnaire bilingue[edit]
En général, les étiquettes dans le dictionnaire bilingue sont des informations morphologiques présentes dans les dictionnaires monolingues. Il s'agit surtout de spécifier si la traduction de, par exemple, le mot pas est celle du nom masculin ou de l'adverbe :
<e> <p><l>pas<s n="adv"/></l> <r>pas<s n="adv"/></r></p></e> <e> <p><l>pas<s n="n"/><s n="m"/></l> <r>pas<s n="n"/><s n="m"/></r></p><par n="ND_sp"/></e>
Un certain nombre d'étiquettes sont ajoutées pour leur traitement dans le transfert. Le cas le plus typique est celui de GD et ND, qui presque toujours sont ajoutées dans le bidixe moyennant des paradigmes comme ND_sp (voir ci-dessus). Ainsi, la deuxième ligne de l'exemple ci-dessus est une forme plus compacte et lisible d'écrire ceci :
<e r="LR"><p><l>pas<s n="n"/><s n="m"/><s n="sg"/></l><r>pas<s n="n"/><s n="m"/><s n="sp"/></r></p></e> <e r="LR"><p><l>pas<s n="n"/><s n="m"/><s n="pl"/></l><r>pas<s n="n"/><s n="m"/><s n="sp"/></r></p></e> <e r="RL"><p><l>pas<s n="n"/><s n="m"/><s n="ND"/></l><r>pas<s n="n"/><s n="m"/><s n="sp"/></r></p></e>
Dans la traduction de l'occitan au français, pas au singulier et pas au pluriel (passes en languedocien) sont traduits par la forme invariable en nombre (sp) pas. Par contre, dans la traduction à l'occitan, on doit choisir s'il faut le singulier ou le pluriel. L'étiquette ND indique aux règles de transfert que le nombre doit être défini.
Si les étiquettes GD et ND sont largement utilisées dans les traducteurs concernant des langues romanes (et pas que), d'autres étiquettes sont plus spécifiques à ce traducteur.
- tv indique que le verbe est transitif. Elle est introduite par le paradigme v-v_tv et utilisée pour reconnaître des articles partitifs après les verbes.
- pas_neg indique que l'adverbe ou le pronom concerné a besoin de l'adverbe pas en occitan, mais pas en français. Elle est introduite par le paradigme homonyme.
- pron indique qu'il faut générer un verbe pronominal si le verbe d'origine ne l'est pas (par exemple, décole > s'enlaira).
- non-pron indique qu'il faut générer un verbe non-pronominal si le verbe d'origine est pronominal (par exemple, s'enlaira > décole). Ces verbes doivent être aussi introduits dans apertium-oci-fra.oci-fra.t1x dans les catégories verb_pron-nopron_*, et dans apertium-oci-fra.oci-fra.lrx dans les listes verbs_intrans (comme tous les autres verbes intransitifs). Cette transformation n'est pas encore implémentée du côté français-occitan.
- dat2nom indique que les verbes doivent subir une transformation du type me hè dòu > je regrette. Ces verbes doivent être aussi introduits dans apertium-oci-fra.oci-fra.t1x dans les catégories verb_dat2nom_* (cette transformation n'est pas encore implémentée du côté français-occitan).
- nopron est une étiquette différente à toutes les autres parce qu'elle a surtout pour but la sélection lexicale au lieu du transfert. Il s'agit dans certain cas d'être capables de choisir entre deux traductions du même verbe, une pronominale et l'autre non. Par exemple, le verbe couler, si transitif, doit être traduit comme enfonzar mais sinon, comme s'enfonzar. Pour choisir la seconde, on peut utiliser l'étiquette pron, mais, pour le premier cas, il faut un indicatif spécifique, qui est nopron.
Il faut souligner que ces étiquettes ne peuvent être utilisées du côté de la langue source puisqu'ils empêcheraient de faire "match" avec les formes décrites dans les dictionnaires unilingues. Ainsi, par exemple,
<e alt="oci"> <p><l>gaire<s n="adv"/></l> <r>guère<s n="adv"/></r></p><par n="pas_neg"/></e>
devient
<e alt="oci" r="LR"><p><l>gaire<s n="adv"/></l> <r>guère<s n="adv"/><s n="pas_neg"/></r></p></e> <e alt="oci" r="RL"><p><l>gaire<s n="adv"/><s n="pas_neg"/></l> <r>guère<s n="adv"/></r></p></e>
Chiffres[edit]
À la publication de la version 1.0 sur le site d'Apertium, le 2 novembre 2022, on a :
Règles de désambiguïsation[edit]
Occitan | Français | ||
---|---|---|---|
Select | Remove | Select | Remove |
1 668 | 908 | 1 457 | 808 |
Dictionnaire bilingue (entrées)[edit]
Languedocien > français | Gascon > français | Français > languedocien | Français > gascon | |
---|---|---|---|---|
Total | 80 147 | 81 818 | 69 181 | 69 112 |
Sans noms propres | 40 083 | 41 725 | 29 634 | 39 534 |
Toponymes | 9 374 | 9 397 | 8 908 | 8 900 |
Règles de sélection lexicale[edit]
Languedocien > français | Gascon > français | Français > languedocien | Français > gascon | |
---|---|---|---|---|
Total | 1 122 | 1 193 | 749 | 731 |
Règles de mots discontinus[edit]
Languedocien > français | Gascon > français | Français > languedocien | Français > gascon | |
---|---|---|---|---|
Assemblage | 346 | 396 | 177 | 731 |
Découpage | 66 | 66 | 159 | 163 |
Règles de transfert[edit]
Languedocien > français | Gascon > français | Français > languedocien | Français > gascon | |
---|---|---|---|---|
Transfert intra-segmental | oci-fra.t1x | fra-oci.t1x | ||
210 | 210 | 240 | 240 | |
Transfert inter-segmental | oci-fra.t2x_temps | fra-oci.t2x_ini | ||
30 | 36 | |||
oci-fra.t2ax | fra-oci.t2x | |||
232 | 232 | 40 | 40 | |
oci-fra.t2bx | fra-oci.t2x_bis | |||
88 | 88 | 23 | 23 | |
oci-fra.t2cx | fra-oci.t2x_pas | |||
43 | 43 | 13 | ||
oci-fra.t2dx | fra-oci.t2x_pro | |||
23 | 13 | |||
oci-fra.t2ex | fra-oci.t2x_supersn | |||
4 | 28 | |||
fra-oci.t2x_enon | ||||
47 | ||||
Transfert post-segmental | oci-fra.t3x | fra-oci.t3x | ||
2 | 3 | |||
Étape finale | oci-fra.t4x | fra-oci.t4x | ||
4 | 3 |
Couverture[edit]
La couverture (dite naïve) du traducteur du français à l'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[edit]
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[edit]
Tagueur[edit]
Comme d'habitude chez Apertium, le procès de tagage (analyse morphologique) se décompose en trois phases.
Analyseur[edit]
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[edit]
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[edit]
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[edit]
On utilise le module apertium separable pour traiter les mots discontinus.
Le problème se pose quand on a des locutions dans les dictionnaires, mais elles sont "coupées" par des mots à l'intérieur. L'exemple typique pour l'occitan et le français sont les locutions verbales au négatif. Prenons, par exemple :
<e a="Congrès" alt="oci"><p><l>far<g><b/>pena</g><s n="vblex"/></l> <r>faire<g><b/>de<b/>la<b/>peine</g><s n="vblex"/></r></p></e>
Si on trouve "faire de la peine" (avec une forme conjuguée du verbe avoir) on traduit au languedocien par "far pena". Mais quand on trouve "il ne fait pas de la peine", l'expression n'est plus reconnue puisque "pas" en rompt la continuité. C'est dans ces cas que le module vient en aide.
L'assemblage de mots discontinus, moyennant des règles pour chaque expression, les traque dans les textes tout en réordonnant les mots. Ainsi "il + ne + fait + pas + de + la + peine" devient "il + ne + fait de la peine + pas" :
$echo "il ne fait pas de la peine" | apertium -d . fra-oci-lsx1 ^il<prn><tn><p3><m><sg>$ ^ne<adv>$ ^faire# de la peine<vblex><pri><p3><sg>$ ^pas<adv>$^.<sent>$
Ces règles se trouvent dans le fichier apertium-oci-fra.fra-oci.l1x.
Certaines locutions se trouvent dans le bidixe pour une des variétés occitanes, mais pas pour l'autre. Dans ce cas, il faut activer la règle d'assemblage seulement dans le traducteur à la variété concernée.
Transfert lexical[edit]
Le transfert lexical est simplement le "collage" des possibles traductions de chaque mot, d'après le bidixe (apertium-oci-fra.oci-fra.dix). Par exemple, dans le cas du nom (masculin singulier) "fruit", il peut être traduit comme "fruch" ou "frucha" en languedocien :
$ echo "fruit" | apertium -d . fra-oci-biltrans ^fruit<n><m><sg>/fruch<n><m><sg>/frucha<n><f><sg>$^.<sent>/.<sent>$
Sélection lexicale[edit]
La sélection des différentes traductions possibles d'un mot se fait moyennant le module apertium-lex-tools et le fichier de règles apertium-oci-fra.fra-oci.lrx (voir How to get started with lexical selection rules pour plus de détail sur la syntaxe, bien que c'est assez intuitif). Plusieurs macros d'autres paires de langues ont été réutilisées ou adaptées. Ainsi, par exemple, en languedocien, "fruit" devint "fruch" dans "un fruit", mais "frucha" (au singulier) dans "des fruits" :
$ echo "un fruit" | apertium -d . fra-oci-lextor 1:SELECT:0.8:fruit<n><m><sg>:2:fruch<n><m><sg> ^un<det><ind><m><sg>/un<det><ind><m><sg>$ ^fruit<n><m><sg>/fruch<n><m><sg>$^.<sent>/.<sent>$ $ echo "des fruits" | apertium -d . fra-oci-lextor 1:SELECT:1:fruit<n><m><pl>:3:frucha<n><f><sg> ^de<pr>/de<pr>$ ^le<det><def><mf><pl>/lo<det><def><GD><pl>$ ^fruit<n><m><pl>/frucha<n><f><sg>$^.<sent>/.<sent>$
S'il y a plusieurs possibles traductions pour un mot mais pas de règles dans la sélection lexicale, tout se passe comme si la sélection serait aléatoire. Il ne faut pas penser que l'ordre des mots dans le bidixe est décisif, d'autant plus que les dictionnaires peuvent être reformatés et réordonnés.
Les règles de sélection lexicale dépendent souvent de la variété occitane. Par exemple, pour "fruit", ce sont "fruch" et "frucha" qui entrent en concurrence pour le languedocien, mais "hrut" et "hruta" pour le gascon. La balise v est utilisée pour exprimer la variété concernée. Presque toujours, quand les lemmes sont différents, les règles restent exactement les mêmes. Pour faciliter la lisibilité et la maintenance, on tâche de ne pas recopier les règles, mais de ne changer que les lemmes à l'aide de la balise. Comme toujours, le travail sur les balises est faite par le module apertium-filter-rules, qui est invoqué dans Makefile.am.
Transfert structurel[edit]
Jusqu'ici, la traduction se réalise, en fait, mot à mot. Le transfert structurel s'occupe des transformations requises quand la traduction mot à mot est insuffisante.
Actuellement, Apertium a un modèle de traduction en trois étapes appelées en anglais chunker (transfert intra-segmental), interchunker (transfert inter-segmental) et postchunker (transfert post-segmental). Cependant, déjà plusieurs traducteurs utilisent une généralisation de ce modèle en n étapes. Dans la traduction au languedocien, le transfert post-segmental est divisé en cinq étapes et pour le gascon, en sept (voir ci-dessus). En plus, une dernière étape est ajoutée après de transfert post-segmental. Au total, le transfert structurel français-languedocien a huit étapes et le français-gascon en a dix.
Les dizaines, parfois centaines, de règles dans les fichiers pour chaque étape sont regroupées dans des blocs avec un commentaire en tête commençant par
<!-- RÈGLAS (description) -->
et finissant par
<!-- FIN RÈGLAS (description) -->
Cela aide à s'orienter là-dedans. Ce sont ces blocs qui vont être présentés ci-dessous.
En tout cas, en plus de cette documentation, on peut tout simplement utiliser apertium-viewer pour traquer à quel point du tube une transformation a lieu.
Transfert intra-segmental[edit]
Le transfert intra-segmental est l'étape qui crée les segments (chunks) dans lesquels des mots se regroupent. Ces segments sont les unités qui vont être traités dans le transfert inter-segmental. Chaque segment reçoit un en-tête, qui peut être accédé par le transfert inter-segmental, et un contenu qui, lui, est inaccessible. En même temps, le transfert résout déjà un bon nombre de questions.
Les blocs du transfert intra-segmental sont les suivants :
- règles d'accord : s'occupent de la concordance à l'intérieur des syntagmes nominaux, en particulier dans les nombreux cas où en français un nom ou un adjectif a la même forme en masculin et féminin (cf. académique) ou en singulier et pluriel (cf. français), mais en occitan ces formes sont différentes. C'est ici aussi où plusieurs (au pluriel) est traduit par mantun (au singulier) et tout le groupe nominal passe au singulier.
- règles -ci/-là : transforment des structures comme cette fois-ci et cette fois-là en aqueste còp et aquèl cop, respectivement.
- règles de toponymes : éliminent l'article défini devant des noms de pays, régions, rivières, etc.
- règles d'heures : changent des structures comme il est deux heures par son doas oras.
- règles de dates : changent des structures comme 20 novembre 1998 par 20 de novembre de 1998.
- règles de changement de verbe auxiliaire : pour le verbe être l'auxiliaire dans les temps composés devient èsser (languedocien) ou estar (gascon).
- règles pour les verbes pronominaux qui deviennent non-pronominaux : par exemple, Jean se rend chez lui devient Jean va a casa. Les verbes devant subir cette transformation, comme rendre, sont marqués à l'aide du paradigme non-pron dans le bidixe dans des lignes r="RL" (voire la section Les étiquettes ajoutées dans le dictionnaire bilingue) et, en plus, ils doivent être introduits dans les catégories verb_pron-nopron* du fichier de règles du transfert intra-segmental.
- règles d'élision de ne dans les négations : par exemple, Jean n'est pas devient Jean es pas (Il faut signaler que cela se fait aussi pour le gascon, bien qu'ensuite ne soit ajouté à nouveau lorsqu'on inclut les énonciatifs).
- règles d'élision du pronom personnel sujet : par exemple, il arrive devient arriba.
- règles de transformation de on : par exemple, on peut devient se pòt.
- règles de transformation de on + devoir + infinitif : par exemple, on doit manger devient cal manjar.
- règles de réarrangement des pronoms avec des verbes modaux : par exemple, auraient pu l'imaginer devient l'aurián pogut imaginar.
- règles de transformation de être en train de : par exemple, Jean est en train de dormir devient Jean dòrm.
- règles de transformation de ne... que : par exemple, ne veut que manger devient vòl pas que manjar.
- règles d'élision de ce devant être : par exemple, ce fut devient foguèt.
- autres règles.
C'est aussi dans cette étape qu'on fait les transformations suivantes :
- changer les majuscules pour les gentilés par des minuscules (les Français devient los franceses). Les gentilés qui sont susceptibles de cette transformation se trovent sur la liste gentilici. Il faut noter que cette liste contient des noms qui non nécessairement vont en majuscule en français (comme français, quand il s'agit de la langue). Les mots qui vont toujours en majuscule (comme Toulousain) sont simplement écrits en majuscule dans les dictionnaires.
- changer l'ordre de certains adjectifs (le nouveau livre devient lo libre novèl ou lo libe navèth). Les adjectifs susceptibles de changer d'ordre se trouvent sur la liste adj_pre.
- changer l'impératif par le subjonctif présent dans les phrases négatives (no chante pas devient cantes pas.
- changer certains verbes non-pronominaux, qui deviennent pronominaux : par exemple, l'avion décolle devient l'avion s'enlaira (ces changements se produisent au sein de plusieurs règles de traitement de structures verbales, sans qu'il y ait un bloc de règles spécifique pour cela). Ces verbes sont signalés avec l'étiquette pron dans le dico bilingue (voire la section Les étiquettes ajoutées dans le dictionnaire bilingue).
Le fichier de règles est apertium-oci-fra.fra-oci.t1x. Il y a de multiples règles différentes pour le languedocien et le gascon, ce qui cause l'utilisation de la valise v. Fin mars 2022, il y avait 199 règles pour le languedocien et 194 pour le gascon, 219 au total.
Transfert inter-segmental[edit]
Le transfert inter-segmental permet de faire des transformations à plus longue distance que celles de l'étape précédente qui ne pouvait tenir en compte que quelques mots adjacents.
De nombreuses transformations doivent être faites. Le problème, c'est que la plupart tournent autour des verbes. Si on mettait toutes les règles dans un seul fichier, elles entreraient en concurrence les unes avec autres. Cela causerait que des règles pertinentes ne seraient pas exécutées. La solution est de placer ces transformations en plusieurs étapes.
Première étape[edit]
Les blocs de la première étape du transfert inter-segmental sont les suivants :
- accord en nombre entre sujet et verbe, particulièrement quand nombreux devient plusieurs : par exemple, plusieurs problèmes attendent devient mantun problèma espera (l'accord dans le groupe nominal est déjà fait dans le transfert intra-segmental). Si on a une phrase comme plusieurs maisons sont belles, à ce stade elle devient quelque chose comme mantun ostal es polides : l'accord avec l'attribut en genre et nombre se fait par la suite.
Le fichier de règles est apertium-oci-fra.fra-oci.t2x_ini.
Deuxième étape[edit]
Les blocs de la deuxième étape du transfert inter-segmental sont les suivants :
- changement de l'article partitif : par exemple, je veux de l'eau devient vòli d'aiga en languedocien et vòli aiga en gascon.
- accord en genre entre mantun et le groupe nominal qui dépend de lui : par exemple, plusieurs de ses amies devient mantuna de sas amigas (ceci est, en partie, déjà fait lors de l'étape précédente).
- accord en genre et nombre entre sujet et attribut : par exemple, la maison est grande devient l'ostal es grand.
- règles pour le superlatif : par exemple, la montagne la plus haute devient la montanha mai nauta.
Le fichier de règles est apertium-oci-fra.fra-oci.t2x.
Troisième étape[edit]
Les blocs de la troisième étape du transfert inter-segmental sont les suivants :
- réarrangement de l'adverbe mieux : par exemple, mieux parler devient parlar melhor.
- règles de transformation du présent du subjonctif à l'imparfait du subjonctif : par exemple, je désirais que tu chantes devient desiravi que cantèsses.
règles de transformation de l'imparfait de l'indicatif à l'imparfait du subjonctif (seulement pour le gascon) : par exemple, si vous aviez devient si avóssetz. (Ces règles ont été commentées 19.06.2022 parce qu'il faut ajouter des restrictions)- règles de transformation du futur de l'indicatif au présent du subjonctif (seulement pour le gascon) : par exemple, quand vous aurez devient quan ajatz ; dès que vous aurez devient antaulèu ajatz.
- règles de transformation du présent de l'indicatif au futur simple (seulement pour le gascon) : par exemple, même si vous avez devient quan auratz.
- règles de transformation de l'imparfait de l'indicatif au conditionnel (seulement pour le gascon) : par exemple, même si vous aviez devient quan auretz.
Le fichier de règles est apertium-oci-fra.fra-oci.t2x_bis.
Quatrième étape : ajout de l'adverbe pas[edit]
La quatrième étape du transfert inter-segmental s'occupe de l'ajout de l'adverbe pas dans les négations qui ne l'ont pas : par exemple, je n'en ai eu aucune devient n'ai pas agut cap ; personne ne vient devient degun ven pas.
Le fichier de règles est apertium-oci-fra.fra-oci.t2x_pas.
Cinquième étape : réarrangement des pronoms[edit]
La cinquième étape du transfert inter-segmental s'occupe du réarrangement des pronoms avec des verbes modaux pour des cas qui n'ont pas été traités dans le transfert intra-segmental : par exemple, pouvaient l'aider devient la podián ajudar.
Le fichier de règles est apertium-oci-fra.fra-oci.t2x_pro.
Sixième étape : groupement de segments[edit]
La sixième étape du transfert inter-segmental est exclusive du gascon et prépare la sixième étape. Elle a pour but de regrouper, dans certains cas, quelques segments en un seul plus large pour faciliter les analyses syntactiques à plus longe distance.
Le fichier de règles est apertium-oci-fra.fra-oci.t2x_supersn.
Septième étape : génération des énonciatifs[edit]
La septième étape du transfert inter-segmental est exclusive au gascon et s'occupe de la génération des énonciatifs.
Il s'agit d'une cinquantaine de règles (fin mars 2022) regroupées en deux ensembles :
- règles de "courte portée", qui analysent tout juste le verbe et ces alentours
- règles de "longue portée", qui analysent du verbe jusqu'à la fin de la phrase
Un certain nombre de règles existent pour reconnaître des constructions syntactiques dans lesquelles il ne faut pas générer d'énonciatif et qui bloquent leur génération par d'autres règles.
Les règles de longue portée sont utilisées pour voir si on a affaire à une phrase exclamative ou interrogative et générer l'énonciatif spécifique à ces cas. Étant donné qu'Apertium utilise une stratégie de transfert superficiel (c'est-à-dire qu'il n'y a pas d'arbre d'analyse complet de la phrase), la "longue portée" est difficile. C'est pourquoi on a regroupé les segments dans l'étape précédente. Si les règles de longue portée ne reconnaissent pas la phrase (ce qui arrive souvent si elle a des subordonnées), alors les règles de courte portée entrent en action et ne choisissent qu'entre les énonciatifs "que" et "ne" (ou pas d'énonciatif).
Le fichier de règles est apertium-oci-fra.fra-oci.t2x_enon.
Il faut noter un bogue avec les espaces. La solution provisoire est d'écrire deux espaces au lieu d'un après un énonciatif. Apparemment, apertium-posttransfer (un des programmes du tube d'Apertium qui n'est pas configurable) élimine ces espaces en trop et ce truc ne dérange pas beaucoup le résultat final.
Transfert post-segmental[edit]
Le transfert post-segmental est un très petit nombre de règles, bornées à pas plus d'un seul segment, qui font des dernières retouches, si besoin.
Ici quelques règles ajustent des majuscules ou minuscules.
Le fichier de règles est apertium-oci-fra.fra-oci.t3x.
Étape finale[edit]
Dans quelques traducteurs une étape finale de transfert (de type "intra-segmental") est ajoutée pour encore des dernières retouches.
Dans la première version du traducteur français-occitan, ici des règles éliminaient les blancs ajoutés habituellement dans le français hexagonal devant les deux-points, points-virgules, etc. Lo Congrès préconise calquer le français hexagonal, donc ces règles ont été commentées (mais peuvent être ajoutées à nouveau facilement).
Actuellement, cette étape "nettoie" quelques étiquettes morphologiques superflues générées dans le transfert.
Le fichier de règles est apertium-oci-fra.fra-oci.t4x.
Découpage de mots discontinus[edit]
À ce stade du processus, la traduction consiste en une description morphologique des mots en occitan pour lesquels on doit générer leur "forme superficielle". Mais on a un problème préalable avec les expressions qui est l'opposé à celui que nous avions auparavant.
Reprenons l'exemple précédent :
<e a="Congrès" alt="oci"><p><l>far<g><b/>pena</g><s n="vblex"/></l> <r>faire<g><b/>de<b/>la<b/>peine</g><s n="vblex"/></r></p></e>
Comme on a vu, si on trouve "il ne fait pas de la peine", l'expression est réarrangée et devient :
$ echo "il ne fait pas de la peine" | apertium -d . fra-oci-lsx1 ^il<prn><tn><p3><m><sg>$ ^ne<adv>$ ^faire# de la peine<vblex><pri><p3><sg>$ ^pas<adv>$^.<sent>$
Cela permet retrouver la traduction de l'expression dans le dictionnaire : "far pena".
Après toutes les étapes du transfert, la situation est la suivante :
$ echo "il ne fait pas de la peine" | apertium -d . fra-oci-t4x ^far<vblex><pri><p3><sg># pena$ ^pas<adv>$^.<sent>$
Le problème est qu'on va produire "fa pena pas" puisque "far pena" est considéré comme un seul mot. Il fait donc le "découper" et introduire "pas" au milieu, ce qui se fait en utilisant à nouveau apertium-separable :
$ echo "il ne fait pas de la peine" | apertium -d . fra-oci-lsx2 ^far<vblex><pri><p3><sg>$ ^pas<adv>$ ^pena<n><f><sg>$^.<sent>$
Les règles de découpage et réarrangement se trouvent dans le fichier apertium-oci-fra.fra-oci.l2x.
Génération[edit]
Pour les langues romanes, la génération finale des mots de fait en deux phases.
Générateur morphologique[edit]
Le générateur morphologique est la lecture de droite à gauche du dictionnaire morphologique de la langue cible, dans ce cas, l'occitan (apertium-oci.oci.metadix dans le répertoire apertium-oci).
Ainsi, juste avant cette étape, par exemple, "ces maisons" est devenu la séquence "^aquel<det><dem><m><pl>$ ^ostal<n><m><pl>$" :
$ echo "ces maisons" | apertium -d . fra-oci-posttransfer ^aquel<det><dem><m><pl>$ ^ostal<n><m><pl>$^.<sent>$
Le dictionnaire morphologique donne la forme masculine plurielle du déterminant démonstratif aquel et la plurielle du nom masculin ostal :
$ echo "ces maisons" | apertium -d . fra-oci-dgen aqueles ostals
Mais dans certains cas, le processus ne s'arrête pas ici. Par exemple, pour "la maison" on obtient :
$ echo "la maison" | apertium -d . fra-oci-dgen ~detlo ostal
La génération directe aurait donné "lo ostal", or c'est "l'ostal" qui doit être créé. C'est pourquoi on a un lemme avec la balise ~ (notée </a> dans le dictionnaire). C'est le post-générateur qui va s'occuper de mettre l'apostrophe.
Post-générateur[edit]
Le post-générateur est un ensemble de règles qui mettent les apostrophes et les articles contractés dans le texte. Le fichier de règles est apertium-oci.post-oci.dix dans le répertoire apertium-oci.
Le post-générateur est, en fait, pensé de gauche à droite : les règles sont déclenchées par un mot ayant la balise ~ et permettent de décrire ce qu'il faut faire avec ce mot et ceux qui le suivent. Elles ne permettent pas, par contre, de décrire un changement du mot en question en fonction du mot qui le précède. Cela cause qu'on produise, par exemple :
$ echo "il veut que maintenant tu en manges" | apertium -d . fra-oci_gascon que vòu qu'adara ne minges
au lieu de :
$ echo "il veut que maintenant tu en manges" | apertium -d . fra-oci_gascon que vòu qu'adara'n minges
Le post-générateur est la dernière étape du tube d'Apertium (du moins, des étapes qui se gèrent avec modes.xml).
Occitan-Français[edit]
Nous ne répétons pas ici les explications générales de la section "français-occitan" précédente.
Tagueur[edit]
Analyseur[edit]
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[edit]
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[edit]
Comme désambiguïsateur statistique, on utilise le fichier oci.prob du répertoire apertium-oci. Il est copié sur apertium-oci-fra et renommé oci-fra.prob par Makefile.am.
oci.prob est le très ancien désambiguïsateur statistique utilisé pour les paires occitan-catalan et occitan-espagnol.
Sur le répertoire apertium-oci/texts on a désambiguïsé des textes languedociens et gascons (14 000 mots pour le languedocien, 13 000 pour le gascon - fin mars 2022), mais on n'est pas (encore) arrivé à produire un désambiguïsateur statistique nettement meilleur. L'aménagement de ce désambiguïsateur est essentielle pour l'amélioration du traducteur occitan-français. On peut tester les fichiers prob générés dans ce répertoire (un pour le languedocien et un autre pour le gascon) en utilisant les modes oci-fra-unigram et oci_gascon-fra-unigram :
$ echo "lo can es verd" | apertium -d . oci-fra-unigram Le chien est vert $ echo "lo can qu'ei verd" | apertium -d . oci_gascon-fra-unigram Le chien est vert
Assemblage de mots discontinus[edit]
Les règles d'assemblage de mots discontinus se trouvent dans le fichier apertium-oci-fra.oci-fra.l1x.
Transfert lexical[edit]
Le transfert lexical se fait en lisant le dictionnaire bilingue (apertium-oci-fra.oci-fra.dix) de gauche à droite.
Sélection lexicale[edit]
Les règles de sélection lexicale de l'occitan au français se trouvent dans le fichier apertium-oci-fra.oci-fra.lrx.
Transfert structurel[edit]
Comme du côté français-occitan, on utilise le modèle de traduction en trois étapes, mais généralisé en n étapes. Ainsi, le transfert inter-segmental a été décomposé en sept étapes et une étape finale a été ajoutée après le transfert post-segmental. Au total, le transfert structurel a dix étapes, tant pour les traductions du languedocien comme du gascon.
Transfert intra-segmental[edit]
Les blocs du transfert intra-segmental occitan-français sont les suivants :
- règles d'accord : s'occupent de la concordance à l'intérieur des syntagmes nominaux.
- règles de toponymes : dans certains contextes, ajoutent l'article défini devant les noms de pays, régions, rivières, etc.
- règles d'heures : changent des structures comme son doas oras par il est deux heures.
- règles de dates : changent des structures comme 20 de novembre de 1998 par 20 novembre 1998.
- règles de changement de verbe auxiliaire : pour le verbe être, l'auxiliaire dans les temps composés devient avoir.
- règles de changement d'ordre quand il y a deux pronoms successifs : par exemple, n'i devient y en et li o devient le lui.
- règles de changement des constructions de... estant et de... enlà : par exemple, de casa estant devient depuis la maison et de casa enlà devient à partir de la maison.
- règles de changement de la construction ser a + infinitif : par exemple, soi a parlar devient suis en train de parler.
- règles de changement de la construction tornar + infinitif : par exemple, tornar dormir devient dormir à nouveau (mais on a aussi beaucoup de verbes du type tornar + infinitif dans les dictionnaires qui sont traduits directement, en général par de verbes français en re- ou ré-).
- règles de transformation de certains verbes non pronominaux en verbes pronominaux : par exemple, copar palhas devient se brouiller. Les verbes devant subir cette transformation, comme copar# palhas, sont marqués à l'aide du paradigme pron dans le bidixe dans des lignes r="LR" (voire la section Les étiquettes ajoutées dans le dictionnaire bilingue).
- règles de transformation de certains verbes pronominaux en verbes non pronominaux : par exemple, s'enlaira devient décole. Les verbes devant subir cette transformation, comme enlairar, sont marqués à l'aide du paradigme non-pron dans le bidixe dans des lignes r="LR" (voire la section Les étiquettes ajoutées dans le dictionnaire bilingue) et, en plus, ils doivent être introduits dans les catégories verb_pron-nopron* du fichier de règles du transfert intra-segmental.
- règles de transformation dans certains verbes du pronom datif par un pronom sujet : par exemple, me hè dòu devient je regrette. Les verbes devant subir cette transformation, comme har# dòu et hèr# dòu, sont marqués à l'aide du paradigme dat2nom dans le bidixe dans des lignes r="LR" (voire la section Les étiquettes ajoutées dans le dictionnaire bilingue) et, en plus, ils doivent être introduits dans les catégories verb_dat2nom_* du fichier de règles du transfert intra-segmental.
- autres règles.
C'est aussi dans cette étape qu'on fait les transformations suivantes :
- changer les minuscules pour les gentilés par des majuscules (los franceses devient les Français). Les gentilés qui sont susceptibles de cette transformation se trouvent sur la liste gentilici. Il faut noter que cette liste contient des noms qui non nécessairement vont en majuscule en français (comme français, quand il s'agit de la langue). Les mots qui vont toujours en majuscule (comme Toulousain) sont simplement écrits en majuscule dans les dictionnaires.
- changer l'imparfait du subjonctif par le présent du subjonctif.
Par contre, à présent, on maintient le passé simple, sans le transformer en passé composé (comme, on fait, par exemple, dans le traducteur catalan-français).
Sans que l'on sache trop pourquoi, dans cette direction de la traduction, il y a tout un système assez compliqué qui veille à mettre une majuscule initiale dans les phrases ou textes à traduire. Par contre, du côté français-occitan les majuscules et minuscules sont calqués de la langue source, à l'exception des gentilés. Il serait beaucoup plus simple de se débarrasser de tout ceci.
Le fichier de règles est apertium-oci-fra.oci-fra.t1x. Il y a quelques règles différentes pour le languedocien et le gascon, ce qui cause l'utilisation de la valise v. Fin mars 2022, il y avait 133 règles pour le languedocien et 136 pour le gascon, 142 au total.
Transfert inter-segmental[edit]
Étape 1[edit]
Cette première étape du transfert inter-segmental s'occupe des changements de temps dans certaines constructions. Ses blocs sont les suivants :
- transformation de l'imparfait du subjonctif à l'imparfait de l'indicatif dans des phrases conditionnelles : par exemple, si avóssetz devient si aviez (le pronom sujet est ajouté par la suite). (Plus exactement, la transformation se fait du présent du subjonctif à l'imparfait de l'indicatif puisque l'imparfait du subjonctif est devenu le présent du subjonctif dans le transfert intra-segmental)
- transformation du subjonctif présent au futur simple dans après certaines conjonctions de subordination : par exemple, quan ajatz > quand aurez ; autanlèu que ajatz > dès qu'aurez (le pronom sujet est ajouté par la suite).
Bien que ces deux cas ne se donnent, en principe, que pour le gascon et qu'en languedocien on a les mêmes temps qu'en français, cette étape se fait aussi pour le languedocien. D'un côté, ça ne gêne pas puisque ces formes ne devraient pas se rencontrer, mais de l'autre et surtout, quand même, elles apparaissent parfois dans les textes (peut-être appartenant à des variétés de transition).
Le fichier de règles est apertium-oci-fra.oci-fra.t2x_temps.
Étapes 2 et 3[edit]
Les blocs de cette étape du transfert inter-segmental sont les suivants :
- accord en genre entre sujet et attribut : par exemple, l'ostal es grand devient la maison est grande.
- inclusion du pronom sujet : par exemple, manjan devient ils/elles mangent et èra un ostal devient c'était une maison (on ne choisit pas entre il(s) ou elle(s) ; cela se fait ultérieurement).
Cette étape s'exécute à deux reprises. Cela est nécessaire quand il faut inclure un pronom sujet dans la phrase principale et dans une subordonnée : les règles sont beaucoup plus simples si on les exécute à deux reprises au lieu de créer des règles (très) complexes qui auraient pour but l'inclusion de plusieurs pronoms à la fois. Exemple :
- Initialement :
$ echo "es plan a tòrt que patiguèt lo martiri" | apertium -d . oci-fra-chunker ^Verbcj<SV><vbser><normal><pri><p3><sg>{^être<vbser><4><p3><sg>$}$ ^preadv_adv<SAdv>{^très<preadv>$ ^à tort<adv>$}$ ^cnjsub<cnjsub>{^que<cnjsub>$}$ ^subir<SV><vblex><normal><ifi><p3><sg>{^subir<vblex><4><p3><sg>$}$ ^det<Det><def><m><sg><sl_m><sl_sg>{^le<det><def><m><sg>$}$ ^n<SN><m><sg><sl_m><sl_sg>{^martyre<n><m><sg>$}$^sent<sent>{^.<sent>$}$
- Après le premier tour (ajout de ce dans la proposition principale) :
$ echo "es plan a tòrt que patiguèt lo martiri" | apertium -d . oci-fra-interchunka ^Subj<prn><subj><p3><sg>{^Ce<prn><tn><nt>$}$ ^verbcj<SV><vbser><normal><pri><p3><sg>{^être<vbser><4><p3><sg>$}$ ^preadv_adv<SAdv>{^très<preadv>$ ^à tort<adv>$}$ ^cnjsub<cnjsub>{^que<cnjsub>$}$ ^subir<SV><vblex><normal><ifi><p3><sg>{^subir<vblex><4><p3><sg>$}$ ^det<Det><def><m><sg><sl_m><sl_sg>{^le<det><def><m><sg>$}$ ^n<SN><m><sg><sl_m><sl_sg>{^martyre<n><m><sg>$}$^sent<sent>{^.<sent>$}$
- Après le deuxième tour (ajout d'il/elle (prpers prn.tn.p3.GD.sg) dans la proposition subordonnée) :
$ echo "es plan a tòrt que patiguèt lo martiri" | apertium -d . oci-fra-interchunka2 ^Subj<prn><subj><p3><sg>{^Ce<prn><tn><nt>$}$ ^verbcj<SV><vbser><normal><pri><p3><sg>{^être<vbser><4><p3><sg>$}$ ^preadv_adv<SAdv>{^très<preadv>$ ^à tort<adv>$}$ ^cnjsub<cnjsub>{^que<cnjsub>$}$ ^subj<prn><subj><p3><GD><sg>{^prpers<prn><tn><3><4><5>$}$ ^subir<SV><vblex><normal><ifi><p3><sg>{^subir<vblex><4><p3><sg>$}$ ^det<Det><def><m><sg><sl_m><sl_sg>{^le<det><def><m><sg>$}$ ^n<SN><m><sg><sl_m><sl_sg>{^martyre<n><m><sg>$}$^sent<sent>{^.<sent>$}$
- Traduction finale :
$ echo "es plan a tòrt que patiguèt lo martiri" | apertium -d . oci-fra C'est très à tort qu'il subit le martyre
Le fichier de règles est apertium-oci-fra.oci-fra.t2ax.
Étape 4[edit]
Cette étape du transfert inter-segmental s'occupe des phrases négatives, en particulier de :
- ajout de l'adverbe ne sans suppression de pas : par exemple, cantes pas devient ne chantes pas.
- ajout de l'adverbe ne avec suppression de pas : par exemple, cantes pas jamai devient ne chantes jamais.
- suppression de pas en cas de redondance : par exemple, non ai pas cap d'idèa devient n'ai aucune idée.
Le fichier de règles est apertium-oci-fra.oci-fra.t2bx.
Étape 5[edit]
Les blocs de cette étape du transfert inter-segmental sont les suivants :
- changement de l'article partitif : par exemple, vòli d'aiga en languedocien et vòli aiga en gascon deviennent je veux de l'eau. En particulier, dans la macro f_expression, il y a des dizaines d'expressions pour lesquelles on ne doit pas générer de partitif en gascon (comme prendre conscience ou prendre place, cf. Règles de post-traitement Apertium oci, § Exceptions partitif).
- traitement de l'énonciatif çò :
- çò dans une structure du type çò + verbe + groupe nominal est supprimé : par exemple, çò ditz Anna devient dit Anna
- çò dans une structure du type çò + verbe non suivit par un groupe nominal est transformé en un pronom sujet en position enclitique : par exemple, çò ditz devient dit-il/elle et çò disi devient dis-je.
Le fichier de règles est apertium-oci-fra.oci-fra.t2cx.
Étape 6[edit]
Les blocs de cette étape du transfert inter-segmental sont les suivants :
- réarrangement des pronoms avec les verbes modaux : par exemple, la podián ajudar devient pouvaient l'aider.
- accord des pronoms : par exemple, cap d'elas devient aucune d'elles.
Le fichier de règles est apertium-oci-fra.oci-fra.t2dx.
Étape 7[edit]
Cette étape du transfert inter-segmental n'a pour le moment qu'un seul bloc qui s'occupe de :
- changement de la position de l'adverbe mieux : par exemple, parlar melhor devient mieux parler.
Le fichier de règles est apertium-oci-fra.oci-fra.t2ex.
Transfert post-segmental[edit]
Une règle choisit le masculin si on doute encore entre "il(s)" ou "elle(s)".
Le fichier de règles est apertium-oci-fra.oci-fra.t3x.
Étape finale[edit]
Tout comme dans le sens français-occitan, une étape finale est ajoutée pour encore des dernières retouches.
Initialement, des règles ajoutaient des blancs devant les deux-points, points-virgules, etc. Ces règles ont été ici aussi commentées (mais peuvent être ajoutées à nouveau facilement).
Actuellement, cette étape "nettoie" quelques étiquettes morphologiques superflues générées dans le transfert. En plus, une règle nettoie certains blancs répétés qui ont été ajoutés pour résoudre un bogue
Le fichier de règles est apertium-oci-fra.oci-fra.t4x.
Découpage de mots discontinus[edit]
Les règles de découpage de mots discontinus se trouvent dans le fichier apertium-oci-fra.oci-fra.l2x.
Génération[edit]
Générateur morphologique[edit]
La génération des formes superficielles à partir de la description morphologique ce fait à partir du dictionnaire unilingue français, c'est-à-dire du fichier apertium-fra.fra.metadix dans le répertoire apertium-fra.
Post-générateur[edit]
Le fichier de règles est apertium-fra.post-fra.dix dans le répertoire apertium-fra.