Inhaltsübersetzung/Maschinenübersetzung/MT Clients

From mediawiki.org
This page is a translated version of the page Content translation/Machine Translation/MT Clients and the translation is 100% complete.

Maschinelle Übersetzungsdienste werden über Client-Module in Content Translation aufgerufen. Wir haben Apertium- und Yandex-Clients bereits in den Code geschrieben. Es ist möglich, eine beliebige Anzahl solcher MT-Dienst-Clients hinzuzufügen und auf Sprachpaare abzubilden. Diese Dokumentation erklärt die Architektur der maschinellen Clients.

Technische Anforderungen

Kommunikationsdiagramm des MT-Clients

Ein neuer MT-Client kann ein lokal gehostetes maschinelles Übersetzungssystem oder ein entferntes maschinelles Übersetzungssystem sein, auf das über eine API zugegriffen wird. API-basierte Dienste werden empfohlen, da sie sich so als Dienst isolieren lassen. Wenn der Client frei lizenziert und besser für Linux-Distributionen verpackt ist, können wir ihn im Wikimedia-Cluster hosten. Zum Beispiel wird Apertium in wmflabs gehostet. Andererseits wird Yandex nicht von Wikimedia gehostet. Sowohl auf Apertium als auch auf Yandex wird über die Web-APIs zugegriffen.

Übersetzungs-API

Eine API für maschinelle Übersetzung nimmt die Ausgangssprache, die Zielsprache und den Inhalt auf und gibt den übersetzten Inhalt aus.

  • Wenn die API nicht öffentlich ist, kann sie ein Authentifizierungs-Token akzeptieren, meist einen Schlüssel.
  • Das Ausgabeformat kann der Einfachheit halber JSON sein.
  • Die API sollte POST akzeptieren.
  • Die API sollte keine personenbezogenen Daten, wie z.B. den Benutzernamen, abfragen. Der CXServer stellt sie dem MT-Client nicht zur Verfügung.
  • Die API sollte in der Lage sein, eine angemessene Anzahl von Anfragen pro Minute anzunehmen.
  • Die API sollte eine angemessene Menge an Inhalten pro Anfrage akzeptieren.
  • Es wird empfohlen, ein Dashboard einzurichten, um die Nutzung der API zu analysieren, einschließlich der Anfragen pro Tag/Woche/Monat und der Anzahl der übersetzten Zeichen pro Tag/Woche/Monat.

Die API muss öffentlich dokumentiert sein und die Fehlercodes enthalten.

Leitlinien der Leistung

Content Translation ist noch ein Beta-Feature, das nur für angemeldete Benutzer/innen verfügbar ist. Das aktuelle Nutzungsverhalten ist also möglicherweise nicht die richtige Einschätzung für die Zukunft. Wenn wir die maschinelle Übersetzung auf weitere Sprachen ausweiten, wird es auch mehr Benutzer/innen und Anfragen geben. Abhängig von unserem „aktuellen“ Nutzungsverhalten sind im Folgenden einige Basiswerte angegeben. Beachte, dass dies nie die endgültige Bewertung sein wird. Die APIs müssen so konzipiert sein, dass sie mehr als das zulassen.

  • Mindestens 10.000 Anfragen pro Tag
  • Mindestens 10 Millionen Zeichen pro Tag
  • Mindestens 5000 Zeichen pro Anfrage

Eingabeformat

Der zu übersetzende Inhalt von CX ist HTML-formatiert. HTML zu übersetzen und dabei das Markup zu erhalten, ist eine Herausforderung, aber einige MT-Engines sind dazu in der Lage (Beispiel: Yandex). Apertium kann kein HTML-Markup verarbeiten. Je nach Fähigkeit kann CX eine reine Textversion oder eine HTML-Version des Inhalts senden.

Qualität der Übersetzung

Wir evaluieren die Qualität der MT, indem wir Anfragen an Wikipedia-Beitragende stellen, die die Sprache im Kontext verwenden. CX verwendet die MT als Vorlage für die Übersetzung und ermutigt die Übersetzenden, sie zu verbessern. Deshalb können wir die MT verwenden, solange die Qualität nicht so schlecht ist, wie es das Feedback vermuten lässt.

Entwicklung eines neuen MT-Client-Moduls

Der beste Weg, dies zu lernen, ist, ein bestehendes Client-Modul wie Yandex oder Apertium zu verwenden. Die Client-Module befinden sich im Ordner cxserver's lib/mt. Nennen wir unseren Client BabelFish MT Client. Erstelle eine Datei namens BabelFish.js im Ordner lib/mt.

const MTClient  = require( './MTClient.js' );

<!--T:33-->
// Class constructor
class BabelFish extends MTClient {
    /**
     * Übersetze Inhalte mit BabelFish
     *
     * @param {string} sourceLang Code der Ausgangssprache
     * @param {string} targetLang Code der Zielsprache
     * @param {string} content Inhalt der Ausgangssprache
     * @return {Promise} Übersetzter Text
     */
    translate( sourceLang, targetLang, content ) {
        // Füge deine API-Anfrage zum Dienst hinzu und gib ein Promise-Objekt zurück.
    }
}
module.exports = BabelFish;

Wenn dein BabelFish-Dienst nicht in der Lage ist, HTML zu übersetzen, indem er das gesamte Markup an der entsprechenden Stelle in der Übersetzung beibehält, musst du anstelle von translate die Methode translateText in den obigen Code schreiben. Quelle: Apertium.js für ein solches Beispiel. Yandex.js ist ein Beispiel für einen MT-Client, der sowohl HTML- als auch Textinhalte verarbeiten kann.

Du musst einen Eintrag in lib/mt/index.js für deinen neuen Client hinzufügen.

Um ein Sprachpaar für die Verwendung dieses Clients zuzuordnen, erstelle eine Konfigurationsdatei im Ordner config. Für Beispiele kannst du auf bestehende Konfigurationsdateien zurückgreifen. Dann aktiviere diese MT-Engine in cxserver config.yaml. Orientiere dich auch hier an den vorhandenen Einträgen für Beispiele.

Starte den cxserver neu und teste deinen Client. Vielleicht möchtest du einige Unit-Tests lesen, die für Apertium existieren, um deine eigenen Tests zu schreiben.

Clients für maschinelle Übersetzung

Im Folgenden findest du Clients für die maschinelle Übersetzung, die die Übersetzung von Inhalten in verschiedenen Sprachen unterstützen: