Content translation/Developers/Markup/fr

Dans la les traducteurs traduisent le contenu Html. Le Html contient toutes les balises possibles qu'un article typique Wikipedia peut contenir. Cela signifie que la traduction automatique se fait sur le contenu Html. Mais tous les moteurs de traduction automatique ne supportent pas le contenu Html.

Certains moteurs de traduction automatique tels que Moses, génèrent directement l'information d'alignement des sous-phrases montrant les mots source et les mots cible qui leur correspondent.

$ echo 'das ist ein kleines haus' | moses -f phrase-model/moses.ini -t this is |0-1| a |2-2| small |3-3| house |4-4|

Le moteur de traduction automatique Apertium ne traduit pas fidèlement le texte formaté. Le balisage tel que celui du Html est traité sous la forme d'un espace vide. Ce qui peut produire des modifications dans la sémantique (si les mots sont réorganisés), ou des erreurs de sémentique (si la correspondance un à un n'est pas respectée).

$ echo 'legal persons ' | apertium en-es -f html Personas legales 

$ echo 'I am David' | apertium en-es -f html Soy  David

Les autres moteurs de traduction automatique montrent des problèmes similaires. C'est ce qui rend difficile de fournir la traduction automatique d'un texte formaté. Ce document explique la manière dont ce conflit est géré dans la Traduction de contenu.

Comme montré dans les exemples ci-dessus, un moteur de traduction automatique peut provoquer les erreurs suivantes dans le Html traduit. Les erreurs sont listées par ordre de sévérité décroissante.
 * 1) Corrupt markup - (balisage corrompu). Si le moteur de traduction automatique ne sait pas gérer le Html, il peut éventuellement déplacer les balises Html, et provoquer ainsi un marquage incohérent dans le résultat traduit automatiquement
 * 2) Wrongly placed annotations - (annotations mal placées). Les deux exemples ci-dessus illustrent la situation. C'est plus grave si le contenu comprend des liens et que leurs cibles sont interverties ou distribuées aléatoirement dans la sortie traduite automatiquement.
 * 3) Missing annotations - (annotations absentes). Quelques fois le moteur de traduction automatique peut manger certaines balises dans le processus de traduction.
 * 4) Split annotations - (annotations fragmentées). Pendant la traduction, un mot peut être traduit en un ou plusieurs mots. Si le mot source est balisé par exemple avec, le moteur de traduction automatique doit-il baliser l'ensemble des mots avec  ou baliser chaque mot séparément ?

Tous ces problèmes peuvent conduire à ce que les traducteurs en tirent une mauvaise expérience.

A part les problèmes potentiels liés au transfert du balisage, il existe un autre aspect de l'envoi d'un contenu Html aux moteurs de traduction automatique. En comparaison avec la version texte simple d'un paragraphe, la version Html est plus grande au niveau de la taille en octets. Ces ajouts sont en partie dûs aux balises et aux attributs qui doivent rester transparents lors de la traduction. Ceci est une utilisation inutile de la largeur de bande. Si le moteur de traduction automatique est bridé (par exemple non gratuit, avec un accès contrôlé et limité à l'API), nous n'avons pas gagné grand chose.

Aperçu

 * The input HTML content is translated into a LinearDoc, with inline markup (such as bold and links) stored as attributes on a linear array of text chunks. This linearized format is convenient for important text manipulation operations, such as reordering and slicing, which are challenging to perform on an HTML string or a DOM tree.
 * Plain text sentences (with all inline markup stripped away) are sent to the MT engine for translation.
 * The MT engine returns a plain text translation, together with subsentence alignment information (saying which parts of the source text correspond to which parts of the translated text).
 * L'information d'alignement est utilisée pour réappliquer le balisage au texte traduit.

This make sure that MT engines are translating only plain text and mark up is applied as a post-MT processing.

Pour transférer le balisage, nous avons initialement essayé un algorithme basé sur l'observation du changement de casse. Pour deviner la place de la traduction d'un mot qui va être potentiellement à un autre endroit dans le texte traduit, une phrase est traduite telle quelle mais le mot est mis en majuscules. En comparant la sortie des deux, le diff indiquera l'endroit où le mot traduit apparaît dans la traduction. Cette approche et ses limites sont listées ci-dessous. Plus tard nous verrons un algorithme plus avancé.



Correspondance des annotations utilisant l'approximation de subséquence de la traduction
C'est l'algorithme actuellement utilisé dans la traduction de contenu. Cet algorithme essaie de supplanter les limitations de mise en majuscules de l'algorithme précédent. L'algorithme réalise principalement une correspondance sauvage pour trouver les emplacements cible dans le texte traduit et y appliquer les annotations. Ici aussi le contenu passé aux moteurs de traduction automatique est du texte simple uniquement.

Les étapes sont données ci-dessous.


 * 1) Dans le texte à traduire, rechercher le texte correspondant aux annotations en ligne tel que gras, italique, les liens, etc. Appelons cela des sous-séquences.
 * 2) Passez le texte complet et les sous-séquences au moteur de traduction automatique du texte à plat. Utilisez un délimiteur pour pouvoir faire le tableau de correspondance entre les éléments source (texte complet et sous-séquences) et les éléments traduits.
 * 3) Le texte traduit complètement aura les sous-séquences quelque part dans le texte. Pour localiser la traduction des sous-séquences dans la traduction complète utilisons un algorithme de recherche approximative.
 * 4) La recherche approximative renvoie la position du début de chaîne ainsi que la longueur de couverture. Jusques là nous appliquons le balisage Html de la source.
 * 5) La correspondance approximative implique de calculer la distance d'édition entre les mots dans le texte traduit complètement et la sous-séquence traduite. On ne cherche pas des sous-chaînes, mais des ngrams où 'n' est le nombre de mots dans la sous-séquence. Chaque mot du ngram sera atteint indépendamment.

Pour comprendre cela faisons tourner l'algorithme sur quelques phrases d'exemple.


 * 1) Translating the Spanish sentence   to Catalan: The plain text version is  . And the subsequence with annotation is    . We give both the full text and subsequence to MT. The full text translation is  . and the word     is translated as  . We do a search for   in the full text translation. The search will be successfull and the  tag will be applied, resulting  .The seach performed in this example is plain text exact search. But the following example illustrate why it cannot be an exact search.
 * 2) Translating an English sentence   to Spanish. The full text translation of this is    One of the subsequence   will get translated as  . The case of   differs and search should be smart enough to identify  as a match for The word order in source text and translation is already handled by the algorithm. The following example will illustrate that is not just case change that happens.
 * 3) Translating   to Spanish. The plain text version get translated as  .  and the word with annotation modern get translated as   . We need a match for   and  . We get  . This is a case of word inflection. A single letter at the end of the word changes.
 * 4) Now let us see an example where the subsequence is more than one word and the case of nested subsequences. Translating English sentence   to Spanish. Here, the subsequnce   is in bold, and inside that, the red is in italics. In this case we need to translate the full text, sub sequence   and  . So we have,   El perro rojo grande as full translation, Rojo grande and Rojo as translations of sub sequences.   need to be first located and bold tag should be applied. Then search for   and apply Italic. Then we get.
 * 5) How does it work with heavily inflected languages like Malayalam? Suppose we translate  I am from Kerala  to Malayalam. The plain text translation is ഞാന്‍ കേരളത്തില്‍ നിന്നാണു്. And the sub sequence Kerala get translated to കേരളം. So we need to match കേരളം and കേരളത്തില്‍. They differ by an edit distance of 7 and changes are at the end of the word. This shows that we will require language specific tailoring to satisfy a reasonable output.

The algorithm to do an approximate string match can be a simple levenshtein distance, but what would be the acceptable edit distance? That must be configurable per language modules. And the following example illustrate that just doing an edit distance based matching wont work.

En traduisant en anglais. La traduction du texte simple est    est traduit en. En utilisant l'approche de la distance d'édition,  sera plus près de   que de. To address this kind of cases, we mix a second criteria that the words should start with same letter. So this also illustrate that the algorithm should have language specific modules.

Il existe encore des cas qui ne peuvent pas être résolus par l'algorithme mentionné ci-dessus. Voyons l'exemple suivant

Traduire. La traduction du texte simple en espagnol est  et la phrase ne peut pas être traduite en. Ici nous devons faire correspondre  à   ce qui n'est bien sûr pas cohérent avec l'approche que nous avons décrite jusqu'à présent.

Pour répondre à ce cas, nous ne considérons pas les sous-séquences comme une chaîne mais comme un n-gram où 'n' est le nombre de mots dans la séquence. La correspondance directe doit se faire avec chaque mot du n-gram et non pas sur la chaîne entière c'est à dire que  doit être directement associé à   et , et   directement associé à   et  - de gauche à droite, jusqu'à ce qu'une correspondance soit trouvée. Ceci respecte la modification de l'ordre des mots ainsi que les inflexions.

En corrigeant les quatre types d'erreurs apparaissant avec le transfert des annotations, pour l'algorithme expliqué ici nous voyons que, dans le pire des cas, nous allons rater des annotations. Il n'y a pas de cas où les balises sont corrompues.

Quand et où la traduction de contenu ajoute la prise en charge de langues supplémentaires, l'adaptation de l'approche décrite ci-dessus et particulière à la langue sera nécessaire.