Apertium est un logiciel de traduction automatique basé sur des dictionnaires et des règles de transfert développé initialement par l'Université d'Alicante. C'est un logiciel libre distribué selon les termes de la licence GNU GPL 2.0.

Origine et évolution du projet

Le projet Apertium a été créé par le groupe de recherche Transducens du département de langages et systèmes informatiques de l'université d'Alicante.

C'est l'une des deux réponses au projet Opentrad (Logiciel libre de traduction automatique pour les langues de l'État espagnol) lancé en 2004–2005.

À l'origine, Apertium a donc été conçu pour permettre la traduction de paires de langues proches comme les langues parlées en Espagne. Les toutes premières paires de langues validées en 2005 permettent les traductions espagnol ⇆ catalan, espagnol ⇆ galicien et espagnol ⇆ portugais.

Au fil des années, le projet Apertium s'est ouvert à d'autres paires de langues : aussi bien des groupes de langues proches entre elles comme les langues scandinaves, que pour la traduction de langues plus éloignées. En 2012 il y a même des ébauches de traducteurs entre certaines langues asiatiques et l'anglais.

Actuellement des étudiants de diverses universités d'Europe et du reste du monde et des enseignants s'investissent sur ce projet, certains dans le cadre de la préparation d'un doctorathttp://wiki.apertium.org/wiki/List_of_Apertium_mentors Quelques-uns des principaux acteurs du projet. Depuis 2008, l'équipe du projet Apertium propose des sujets d'étude dans le cadre du Google Summer of Code qui permet à des étudiants de travailler sur des logiciels libres durant l'étéhttp://wiki.apertium.org/wiki/Google_Summer_of_Code Les pages du wiki relatives au Google Summer of Code.

Fonctionnement d'Apertium

Apertium est un système de traduction à base de dictionnaires et de règles de transfert. Il est composé de 3 parties :

Un moteur de traduction automatique indépendant des langues (même s'il a été perfectionné au fil des années pour pouvoir traiter les particularités de nouvelles langues). Il est écrit en C++. Des outils pour gérer les données linguistiques nécessaires à la traduction d'une paire de langues. Des paires de langues. Elles sont présentées sous la forme de fichiers XML utilisant actuellement le jeu de caractères UTF-8.

Dans la pratique, les fichiers XML constituant la paire de langues sont compilés avant de pouvoir être utilisés par le moteur de traduction. Le moteur de traduction est constitué par un ensemble d'outils, chacun réalisant une partie du traitement :

déformatage (simple pour du texte classique, on met des espaces autour de la ponctuation, c'est cette étape qui permet de marquer comme à ne pas traduire les balises HTML ou d'autres informations liées à la mise en page des documents issus de divers outils de traitement de texte). analyse morphologique (après chaque mot trouvé, on indique sa catégorie grammaticale (nom, adjectif, verbe...) et d'autres caractéristiques (genre, nombre, temps pour les verbes, etc.) transfert superficiel des structures d'une langue à l'autre transfert lexical (c'est ici qu'on passe d'une langue à l'autre) génération morphologique (c'est l'étape inverse de l'analyse, on reconstitue les mots à partir de leur description post génération (pour certaines langues dont le français, permet de faire des traitements spéciaux entre mots voisins, par exemple remplacer "le arbre" (obtenu à l'étape de génération) par "l'arbre")

reformatage (l'inverse de la première étape de déformatage).

Pour fonctionner avec une paire de langues, le moteur de traduction d'Apertium utilise des fichiers dictionnaires et des fichiers de transfert.

Les dictionnaires morphologiques

Tout d'abord, chaque paire de langue comporte un dictionnaire morphologique par langue qui permet, pour chaque mot répertorié de cette langue, de retrouver dans un texte les différentes formes que peut avoir ce mot :

au singulier ou au pluriel pour les noms, également au masculin et au féminin pour les adjectifs, conjugué aux différents temps et aux différentes personnes pour les verbes.

Le dictionnaire morphologique commence par l'alphabet des caractères utilisés.

Dans le cas de l'anglais, on peut se contenter des caractères non accentués :

<alphabet>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz</alphabet>

L'alphabet français suppose que l'on prévoie des caractères supplémentaires. Les chiffres y ont également été ajoutés :

<alphabet>ÀÂÄÇÈÉÊËÎÔàâäçèéêëîïôùûABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789</alphabet>

Ensuite, il faut définir les différents types de mots qu'on va rencontrer et leurs caractéristiques. Par exemple :

<sdefs> <sdef n="nom"/> <sdef n="verbe"/> <sdef n="adjectif"/> .... </sdefs>

Dans la pratique, les balises sont beaucoup plus nombreuses (plusieurs dizaines) et les types énumérés ont des noms abrégés.

Enfin, la plus grosse partie est celle qui permettra de retrouver les différents mots de la langue sous toutes leur forme. Le dictionnaire morphologique comporte également des indications sur la nature du mot et les caractéristiques grammaticales de ses différentes formes.

Par exemple pour le nom bière, on pourra avoir : <e> <p> <l>bière</l> <r>bière<s n="nom"/><s n="feminin"/><s n="singulier"/></r> </p> </e> <e> <p> <l>bières</l> <r>bière<s n="nom"/><s n="feminin"/><s n="pluriel"/></r> </p> </e> Le mot peut être trouvé sous deux formes lexicales :

bière : qui est un nom au féminin singulier, bières : qui est un nom au féminin pluriel.

Comme pour tous les mots de la langue, il faut pouvoir analyser les différentes formes lexicales possibles (ce qui se trouve dans la balise ), l'écriture de dictionnaires morphologiques peut rapidement devenir fastidieuse.

Aussi, le projet Apertium a prévu de définir des paradigmes pour fabriquer automatiquement les différentes formes des mots à partir d'un exemple.

Ainsi, beaucoup de noms en français (et en anglais) passent du singulier au pluriel en rajoutant la lettre s.

Il suffit de définir cette règle pour l'un d'entre eux, par exemple le mot bière. Il suffit d'englober le texte précédent de balises <pardef> : <pardef n="biere__n"> <e> <p> <l/> <r><s n="nom"/><s n="feminin"/><s n="singulier"/></r> </p> </e> <e> <p> <l>s</l> <r><s n="nom"/><s n="feminin"/><s n="pluriel"/></r> </p> </e> </pardef> L'identificateur "bière__n" correspond à une catégorie de mots qui se comportent en français comme le nom féminin bière, c'est-à-dire qui passent du singulier au pluriel en rajoutant un s.

Il faudra de la même manière faire un paradigme similaire pour les noms masculins qui passent du singulier au pluriel en rajoutant un s. Par exemple le nom "accessoire".

D'autres noms existent au masculin et au féminin, par exemple loup pour lequel il existe le paradigme suivant : <pardef n="lou/p__n"> <e><p><l>p</l><r>p<s n="nom"/><s n="masculin"/><s n="singulier"/></r></p></e> <e><p><l>ps</l><r>p<s n="nom"/><s n="masculin"/><s n="pluriel"/></r></p></e> <e><p><l>ve</l><r>p<s n="nom"/><s n="feminin"/><s n="singulier"/></r></p></e> <e><p><l>ves</l><r>p<s n="nom"/><s n="feminin"/><s n="pluriel"/></r></p></e> </pardef>

On pourra ensuite définir plus simplement les mots en utilisant les paradigmes : <section id="main" type="standard"> <e lm="bière"><i>bière</i><par n="bière__n"/></e> <e lm="école"><i>école</i><par n="bière__n"/></e> <e lm="ordinateur"><i>ordinateur</i><par n="accessoire__n"/></e> <e lm="maison"><i>maison</i><par n="bière__n"/></e> <e lm="loup"><i>lou</i><par n="loup__n"/></e> .... </section> Les paradigmes sont encore plus intéressants pour les verbes réguliers. On définit une fois pour toutes comment ces verbes se conjuguent, et ensuite, il suffit d'énumérer les différents verbes d'un type particulier à l'infinitif.

La définition du mot contient une partie invariante à l'intérieur des balises <i>...</i>. Pour certains mots, la partie invariante correspond au lemme. Mais quelquefois elle est plus courte comme pour le mot loup et plus généralement pour les verbes.

Les dictionnaires bilingues

Les dictionnaires bilingues permettent de traduire des mots entre 2 langues. Comme dans le cas des dictionnaires morphologiques, les caractéristiques grammaticales des mots des deux langues sont précisées. Exemple :

<e><p><l>skingomz<s n="n"/><s n="f"/></l><r>radio<s n="n"/><s n="f"/></r></p></e> <e><p><l>skinwel<s n="n"/><s n="m"/></l><r>télévision<s n="n"/><s n="f"/></r></p></e>

peut être interprété ainsi :

Le mot skingomz est un nom au féminin que l'on traduit en français par radio qui est aussi un nom au féminin. Le mot skinwel est un nom au masculin que l'on traduit en français par télévision qui est un nom au féminin.

On peut voir au passage que les termes noms, masculin, féminin sont ici sous forme abrégée. L'emploi de mnémoniques courts et beaucoup plus fréquente dans les fichiers Apertium que les noms complets.

Dans le cas de ces 2 lignes, la traduction peut se faire dans les 2 sens :

soit de la partie gauche (left en anglais) à la partie droite (right en anglais). Dans ce cas, à l'étape de transfert lexical, le texte entre ... et ... sera remplacé par celui entre ... et ... soit de la partie droite à la partie gauche. Dans ce cas, le texte entre ... et ... sera remplacé par celui entre ... et ...

Examinons un exemple un peu plus compliqué :

<e r="LR"><p><l>adeiladour<s n="n"/><s n="m"/></l><r>architecte<s n="n"/><s n="mf"/></r></p></e> <e r="LR"><p><l>adeiladour<s n="n"/><s n="f"/></l><r>architecte<s n="n"/><s n="mf"/></r></p></e> <e r="RL"><p><l>adeiladour<s n="n"/><s n="GD"/></l><r>architecte<s n="n"/><s n="mf"/></r></p></e>

peut être interprété ainsi :

Le mot adeiladour employé comme nom au masculin se traduit en français par architecte qui est un nom au masculin ou au féminin. Le mot adeiladour employé comme nom au féminin se traduit en français par architecte qui est un nom au masculin ou au féminin. Le mot architecte qui est un nom au masculin ou au féminin se traduit par le nom adeiladour.

En réalité, (le dictionnaire bilingue n'en parle pas, mais le problème a été abordé dans le dictionnaire morphologique), le mot adeiladour présente plusieurs écritures selon notamment qu'il soit au masculin ou au féminin. Si l'on tient compte également du singulier et du pluriel, on obtient au total 6 possibilités :

adeiladour:adeiladour<n><m><sg> → architecte:architecte<n><mf><sg> adeiladourien:adeiladour<n><m><pl> → architectes:architecte<n><mf><pl> adeiladourez:adeiladour<n><f><sg> → architecte:architecte<n><mf><sg> adeiladourezed:adeiladour<n><f><pl> → architectes:architecte<n><mf><pl> ?:adeiladour<n><GD><sg> ← architecte:architecte<n><mf><sg> ?:adeiladour<n><GD><pl> ← architecte:architecte<n><mf><pl>

Reprenons les explications précédentes :

Pour traduire vers le français : Le mot adeiladour est un nom au masculin singulier qui se traduit en français par architecte qui est un nom au masculin ou au féminin singulier. Le mot adeiladourien est un nom au masculin pluriel qui se traduit en français par architectes qui est un nom au masculin ou au féminin pluriel. Le mot adeiladourez est un nom au féminin singulier qui se traduit en français par architecte qui est un nom au masculin ou au féminin singulier. Le mot adeiladourezed est un nom au féminin pluriel qui se traduit en français par architectes qui est un nom au masculin ou au féminin pluriel.

Pour traduire du français à la langue de gauche :

Le mot architecte qui est un nom au masculin ou au féminin singulier se traduit par le mot adeiladour employé au singulier. L'écriture précise de ce mot (en l'occurrence adeiladour ou adeiladourez) se décidera en fonction du genre du mot qui est à déterminer.