Traduction de contenu/Traduction automatique/clients MT
Les services de traduction automatique sont accessibles à l'aide de modules clients dans la traduction de contenu. Nous avons des clients Apertium et Yandex déjà en dur dans le code. Il est possible d'ajouter n'importe quel nombre de ces clients de service MT et de les mapper sur des paires de langues. Cette documentation explique l'architecture du client Machine.
Contraintes techniques
Un nouveau client MT peut être un système de traduction automatique hébergé localement ou un système de traduction automatique à distance accessible via une API. Les services basés sur l'API sont recommandés car cela permet de l'isoler en tant que service. Si le client est sous licence gratuite et mieux conçu pour les distributions Linux, nous pouvons envisager de l'héberger dans le cluster Wikimedia. Par exemple, Apertium est hébergé dans wmflabs. D'autre part, Yandex n'est pas hébergé par Wikimedia. Apertium et Yandex sont tous deux accessibles à l'aide des API Web.
API de traduction
Une API de traduction automatique prend la langue source, la langue cible, le contenu source et produit le contenu traduit.
- Si l'API n'est pas publique, elle peut accepter un jeton d'authentification, la plupart du temps une clé.
- Le format de sortie peut être JSON par commodité.
- L'API doit accepter POST.
- L'API ne doit exiger aucune information permettant d'identifier l'utilisateur, telle que le nom d'utilisateur. CXServer ne le fournit pas au client MT.
- L'API doit être capable d'accepter un nombre raisonnable de requêtes par minute.
- L'API doit accepter une quantité raisonnable de contenu par demande.
- Il est recommandé d'avoir un tableau de bord pour analyser l'utilisation de l'API, y compris les demandes par jour/semaine/mois et le nombre de caractères traduits par jour/semaine/mois
L'API doit être publiquement documentée ainsi que les codes d'erreur.
Règles de performance
La traduction de contenu est toujours une fonctionnalité bêta, disponible uniquement pour les utilisateurs connectés abonnés. Ainsi, le modèle d'utilisation actuel peut ne pas être la bonne évaluation pour l'avenir. De plus, lorsque nous étendrons la traduction automatique à plus de langues, il y aura plus d'utilisateurs et de demandes. En fonction de notre utilisation actuelle, quelques lignes de base sont données ci-dessous. Notez que ce ne sera jamais l'évaluation finale. Les API doivent être conçues pour accepter plus que cela.
- Au moins 10 000 requêtes par jour
- Au moins 10 millions de caractères par jour
- Au moins 5 000 caractères par requête
Format d'entrée
Le contenu à traduire depuis CX est au format HTML. Traduire du HTML tout en préservant le balisage est un défi, mais certains moteurs de traduction automatique en sont capables (exemple : Yandex). Apertium ne gère pas le balisage HTML. Selon la capacité, CX peut envoyer une version texte brut ou le HTML du contenu.
Qualité de la traduction
Nous évaluons la qualité de la traduction automatique en demandant aux contributeurs de Wikipédia des commentaires sur la langue dans le contexte. CX utilise MT comme modèle de traduction initial et encourage les traducteurs à l'améliorer. Pour cette raison, à moins que la qualité ne soit assez mauvaise selon les commentaires que nous recevons, nous pouvons l'utiliser.
Développer un nouveau module de client MT
La meilleure façon d'apprendre cela est de se référer à un module client existant comme Yandex ou Apertium. Les modules client sont présents dans le dossier lib/mt de cxserver. Appelons notre client Client TA BabelFish. Créez un fichier nommé BabelFish.js dans le dossier lib/mt.
const MTClient = require( './MTClient.js' );
<!--T:33-->
// constructeur de la classe
class BabelFish extends MTClient {
/**
* traduire le contenu avec BabelFish
*
* @param {string} sourceLang code de langue source
* @param {string} targetLang code de langue cible
* @param {string} content contenu en langue source
* @return {Promise} texte traduit
*/
translate( sourceLang, targetLang, content ) {
// Ajoute votre requête d'API au service. Renvoie un objet Promise.
}
}
module.exports = BabelFish;
Si votre service BabelFish n'est pas capable de traduire le HTML en conservant tout le balisage dans la position appropriée dans la traduction, au lieu de translate
, vous devrez écrire la méthode translateText
dans le code ci-dessus. Reportez-vous à Apertium.js pour un tel exemple. Yandex.js est un exemple de client MT capable de gérer à la fois le contenu HTML et le texte.
Vous devez ajouter une entrée dans lib/mt/index.js pour votre nouveau client.
Pour mapper une paire de langues pour utiliser ce client, créez un fichier de configuration dans le dossier de configuration. Vous pouvez vous référer aux fichiers de configuration existants des exemples. Activez ensuite ce moteur MT dans le config.yaml de cxserver. Ici, suivez également les entrées existantes des exemples.
Redémarrez le cxserver et testez votre client. Vous voudrez peut-être lire certains tests unitaires existants pour Apertium afin d'écrire vos propres tests.
Clients de traduction automatique
Voici les clients de traduction automatique qui prennent en charge la traduction de contenu dans les différentes langues :
- Apertium (langues prises en charge)
- OpusMT (langues supportées)
- LingoCloud (langues prises en charge)
- Google Translate (langues prises en charge)
- Yandex (langues prises en charge)
- Youdao (langues prises en charge)
- Elia (initialement connu comme Matxin) (langues prises en charge)
- MinT (langues prises en charge)