コンテンツ翻訳/機械翻訳/機械翻訳クライアント類

This page is a translated version of the page Content translation/Machine Translation/MT Clients and the translation is 57% complete.

機械翻訳サービスの利用には、コンテンツ翻訳拡張機能でクライアント・モジュールを経由しアクセスしています。既存のクライアントとしてApertiumならびにYandexほか、コード化が済んでいます。MTサービスの同類のクライアント追加、言語ペアへのマッピングは任意の件数で可能です。この解説文書で機械翻訳のクライアント構造を説明します。

技術要件

MTクライアントのコミュニケーション図

新しいMTクライアントは機械翻訳システムをローカルにホストしても、API経由でアクセスするリモートにホストしても成立します。サービスとして隔離できる点から、後者が推奨されます。クライアントがライセンスフリーで、Linux ディストロ対応でパッケージ可能なら、ウィキメディアのクラスタ上にホストすることを検討できます。一例としてApertiumのホスト先はwmflabs内部であり、ウィキメディアはYandexをホストしません。両者ともそれぞれに対応するウェブAPI経由でアクセスします。

翻訳 API

A machine translation API takes source language, target language, source content and outputs translated content.

  • If API is not public, it can accept an authentication token, mostly a key.
  • The output format can be JSON for convenience.
  • API shoud accept POST.
  • API should not demand any user identifiable information such as user name. CXServer does not provide it to MT Client.
  • API should be capable of accepting a reasonable number of requests per minute.
  • API should accept a reasonable amount of content per request.
  • It is recommended to have a dashboard to analyse the usage of API including requests per day/week/month and Number of characters translated per day/week/month

APIはエラーコードを含めて文書化して公開する必要がある点。

性能のガイドライン

コンテンツ翻訳はまだベータ段階にあることから、ログイン利用者であり個人設定で利用を選択した人にしか使えません。そこで現状の利用パターンは必ずしも将来像を正しく評価できない可能性があります。さらに加えるなら、機械翻訳の言語対を拡張すると、利用者も利用のリクエストも増えます。現状の 利用に基づくなら、ベースラインは以下のように把握しています。ご留意点として、これは最終的な評価とはなり得ません。API類はこれ以上の域値に設定する必要があります。

  • 1万件超の要求/日
  • 1000万文字超/日
  • 5000文字超/日

入力形式

CXにおける翻訳原文はHTML形式で処理にかけます。HTML形式の翻訳とウィキ・マークアップの保持の両立は課題であり、それでもMTエンジンによっては両立できています(例:Yandex)。ApertiumはHTMLのマークアップを対象としません。それぞれの能力に応じ、CXはコンテンツをHTML形式もしくは平文形式(マークアップのない文章)で出力します。

翻訳の品質

機械翻訳の品質に関しては、該当する言語版ウィキペディアの投稿者から寄せられるフィードバックを参照しています。CXはMTを第一次の翻訳テンプレートに採用しており、その改善を翻訳者にお願いしています。そのため、フィードバックにおいて品質が目立って悪いと指摘される場合を除き、使用を継続できると判断します。

MT クライアントモジュールの新規開発

The best way to learn this is to refer an existing client module like Yandex or Apertium. The client modules are present in cxserver's lib/mt folder. Let us call our client as BabelFish MT Client. Create a file named BabelFish.js in lib/mt folder.

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

<!--T:33-->
// Class constructor
class BabelFish extends MTClient {
    /**
     * Translate content with BabelFish
     *
     * @param {string} sourceLang Source language code
     * @param {string} targetLang Target language code
     * @param {string} content Source language content
     * @return {Promise} Translated text
     */
    translate( sourceLang, targetLang, content ) {
        // Add your API request to the service. return a Promise object.
    }
}
module.exports = BabelFish;

If your BabelFish service is not capable of translating HTML by retaining all markup in appropriate position in translation, instead of translate, you will have to write translateText method in the above code. Refer Apertium.js for such an example. Yandex.js is an example for MT client that is capable of handling both html and text content.

You need to add an entry in lib/mt/index.js for your new client.

To map a language pair to use this client, create a config file in config folder. You may refer exiting configuration files for examples. Then enable this MT engine in the cxserver config.yaml. Here also follow the existing entries for examples.

Restart the cxserver and test your client. You may want to read some unit tests existing for Apertium to write your own tests.

機械翻訳クライアント

コンテンツ翻訳拡張機能に対応する機械翻訳クライアントを、言語対ごとに一覧にします。