テキストの翻訳(v3beta1)

Cloud Translation v3beta1 では、カスタム AutoML Translation モデルを使用したテキストの翻訳や、Cloud Translation API でお客様の分野に特有の用語を正しく翻訳できるようにする用語集の作成に対するサポートが導入されました。

プロジェクトで AutoML カスタムモデルを使用する場合は、Cloud Translation v3 を使用する前に、AutoML API(automl.googleapis.com)を有効にします。すでに Cloud Translation API を使用している場合は、移行ガイドをご覧ください。Cloud SDK のインストール、サービス アカウントでのプロジェクトの設定、アクセス トークンの取得を行う手順については、クイックスタートをご覧ください。用語集や一括機能を使用する予定がある場合は、Google Cloud Storage バケットを作成して、サービス アカウントにそのバケットへのアクセス権を付与する必要もあります。

モデルの比較

Cloud Translation API v3 から翻訳をリクエストする際には、使用する翻訳モデルを指定できます。モデルが指定されていない場合に、言語ペアがサポートされていれば nmt モデルが使用されます。それ以外の場合には PBMT モデルが使用されます。

モデル 適した事例
ニューラル機械翻訳(NMT)モデル

一般的なテキストを扱うケース。ニュース記事など、分野を特化しない一般的なウェブサイト コンテンツ。

ニュース記事、ソーシャル メディア、チャット アプリケーション、レビュー

フレーズベース機械翻訳(PBMT)モデル NMT の場合、一般的には翻訳の質は高くなります。言語ペアに対応した NMT モデルがない場合、PBMT がデフォルトで使用される場合があります。 言語(NMT と PBMT の差分から抽出)
AutoML Translation モデル 分野固有のテキスト。顧客から個別のユースケースに沿ったトレーニング データの提供を受け、Google のベースモデルを特定の言語ペアで分野に対応したものにカスタマイズします。 金融ニュース、技術文書、その分野に固有の用語および専門用語を使用するテキスト

翻訳モデルの指定にはモデル ID を使用します。Google の標準モデルの場合、NMT モデルの ID は general/nmt、PBMT モデルの ID は general/base になります(AutoML Translation モデルの ID については、次のセクションで説明します)。

テキストの翻訳

入力テキストには書式なしテキストまたは HTML を使用できます。Cloud Translation API は入力テキスト内の HTML タグは翻訳せず、タグ間にあるテキストのみを翻訳します。出力では、(未翻訳の)HTML タグは保持されます。タグは翻訳されたテキストに合わせて挿入されますが、ソース言語とターゲット言語には差異があるため、その位置調整は可能な範囲に留まります。出力内の HTML タグの順序は、翻訳による語順変化のため入力テキスト内の順序と異なる場合があります。

入力文字列の翻訳

REST とコマンドライン

テキストの言語を検出するには POST リクエストを実行し、リクエスト本文に次の JSON を指定します。ソース言語を識別させる場合は source_language_code、ターゲット言語を識別させる場合は target_language_code、翻訳するテキストを識別させる場合は contents を指定します。JSON 内で指定することで、翻訳するテキストに複数の文字列を指定できます(例を参照)。ソース言語とターゲット言語は iso-639-1 コードで指定できます。

以下では、curl または PowerShell を使用した POST リクエストの例を示しています。この例では、Google Cloud Platform Cloud SDK を使用するプロジェクト用に設定されたサービス アカウントのアクセス トークンを使用しています。Cloud SDK のインストール、サービス アカウントを使用したプロジェクトの設定、アクセス トークンの取得については、クイックスタートをご覧ください。

後述のリクエストのデータを使用する前に、次のように置き換えます。

  • project-id: GCP プロジェクト ID

HTTP メソッドと URL:

POST https://translation.googleapis.com/v3beta1/projects/project-id:translateText

JSON 本文をリクエストします。

{
  "sourceLanguageCode": "en",
  "targetLanguageCode": "ru",
  "contents": ["Dr. Watson, come here!", "Bring me some coffee!"]
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

request.json ファイルにリクエスト本文を保存し、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
https://translation.googleapis.com/v3beta1/projects/project-id:translateText

PowerShell

request.json ファイルにリクエスト本文を保存し、次のコマンドを実行します。

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://translation.googleapis.com/v3beta1/projects/project-id:translateText " | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "translations": [
    {
      "translatedText": "Доктор Ватсон, иди сюда!",
    },
    {
      "translatedText": "Принеси мне кофе!",
    }
  ]
}

translations 配列には、リクエストされた target 言語(ru: ロシア語)に翻訳された translatedText フィールドが 2 つ含まれています。翻訳は、リクエスト内の対応するソースの配列と同じ順序で表示されます。

Java

このサンプルを試す前に、Translation クイックスタート: クライアント ライブラリの使用にある Java の設定手順を行ってください。詳細については、Translation Java API のリファレンス ドキュメントをご覧ください。


/**
 * Translates a given text to a target language.
 *
 * @param projectId - Id of the project.
 * @param location - location name.
 * @param text - Text for translation.
 * @param sourceLanguageCode - Language code of text. e.g. "en"
 * @param targetLanguageCode - Language code for translation. e.g. "sr"
 */
static TranslateTextResponse translateText(
    String projectId,
    String location,
    String text,
    String sourceLanguageCode,
    String targetLanguageCode) {
  try (TranslationServiceClient translationServiceClient = TranslationServiceClient.create()) {

    LocationName locationName =
        LocationName.newBuilder().setProject(projectId).setLocation(location).build();

    TranslateTextRequest translateTextRequest =
        TranslateTextRequest.newBuilder()
            .setParent(locationName.toString())
            .setMimeType("text/plain")
            .setSourceLanguageCode(sourceLanguageCode)
            .setTargetLanguageCode(targetLanguageCode)
            .addContents(text)
            .build();

    // Call the API
    TranslateTextResponse response = translationServiceClient.translateText(translateTextRequest);
    System.out.format(
        "Translated Text: %s", response.getTranslationsList().get(0).getTranslatedText());
    return response;

  } catch (Exception e) {
    throw new RuntimeException("Couldn't create client.", e);
  }
}

Node.js

このサンプルを試す前に、Translation クイックスタート: クライアント ライブラリの使用の Node.js の設定手順を行ってください。詳細については、Translation Node.js API のリファレンス ドキュメントをご覧ください。

/**
 * TODO(developer): Uncomment these variables before running the sample.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const location = 'global';
// const text = 'text to translate';

// Imports the Google Cloud Translation library
const {TranslationServiceClient} = require('@google-cloud/translate').v3beta1;

// Instantiates a client
const translationClient = new TranslationServiceClient();
async function translateText() {
  // Construct request
  const request = {
    parent: translationClient.locationPath(projectId, location),
    contents: [text],
    mimeType: 'text/plain', // mime types: text/plain, text/html
    sourceLanguageCode: 'en-US',
    targetLanguageCode: 'sr-Latn',
  };

  // Run request
  const [response] = await translationClient.translateText(request);

  for (const translation of response.translations) {
    console.log(`Translation: ${translation.translatedText}`);
  }
}

translateText();

Python

このサンプルを試す前に、Translation クイックスタート: クライアント ライブラリの使用にある Python の設定手順を行ってください。詳細については、Translation Python API のリファレンス ドキュメントをご覧ください。

from google.cloud import translate_v3beta1 as translate
client = translate.TranslationServiceClient()

# project_id = YOUR_PROJECT_ID
# text = 'Text you wish to translate'
location = 'global'

parent = client.location_path(project_id, location)

response = client.translate_text(
    parent=parent,
    contents=[text],
    mime_type='text/plain',  # mime types: text/plain, text/html
    source_language_code='en-US',
    target_language_code='sr-Latn')

for translation in response.translations:
    print('Translated Text: {}'.format(translation))

AutoML Translation カスタムモデルを使用したテキストの翻訳

REST とコマンドライン

この例では、モデル ID が TRL1395675701985363739 の AutoML Translation モデルを使用してテキストを翻訳します。AutoML Translation モデルの ID は、AutoML Translation UI のモデルリストから取得できます。また、モデルのトレーニング時に API レスポンスから取得することもできます。

プロジェクトで Cloud AutoML API が有効になっていることを確認します。これは、Cloud Translation API で AutoML モデルを使用する場合に必要な作業です。この [スタートガイド](/apis/docs/getting-started#enabling_apis)ドキュメントを参照して、API を有効にしてください。

後述のリクエストのデータを使用する前に、次のように置き換えます。

  • project-id: GCP プロジェクト ID

HTTP メソッドと URL:

POST https://translation.googleapis.com/v3beta1/projects/project-id/locations/us-central1:translateText

JSON 本文をリクエストします。

{
  "model": "projects/project-id/locations/us-central1/models/TRL1395675701985363739",
  "sourceLanguageCode": "en",
  "targetLanguageCode": "ru",
  "contents": ["Dr. Watson, please discard your trash. You've shared unsolicited email with me.
  Let's talk about spam and importance ranking in a confidential mode."]
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

request.json ファイルにリクエスト本文を保存し、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
https://translation.googleapis.com/v3beta1/projects/project-id/locations/us-central1:translateText

PowerShell

request.json ファイルにリクエスト本文を保存し、次のコマンドを実行します。

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://translation.googleapis.com/v3beta1/projects/project-id/locations/us-central1:translateText " | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "translation": {
    "translatedText": "Доктор Ватсон, пожалуйста, откажитесь от своего мусора.
    Вы поделились нежелательной электронной почтой со мной. Давайте поговорим о
    спаме и важности рейтинга в конфиденциальном режиме.",
    "model": "projects/project-id/locations/us-central1/models/TRL1395675701985363739"
  }
}

model パラメータの使用

REST とコマンドライン

翻訳に使用するモデルを指定するには、model クエリ パラメータを使用します。PBMT モデルを使用する場合には base を指定し、NMT モデルの場合には nmt を指定します。リクエストで NMT モデルを指定しても、翻訳する言語の組み合わせが NMT モデルでサポートされていないと、PBMT モデルが使用されます。

次のサンプルは、翻訳リクエストで model パラメータを使用する方法について示しています。この例では base を選択しています。

後述のリクエストのデータを使用する前に、次のように置き換えます。

  • project-id: GCP プロジェクト ID

HTTP メソッドと URL:

POST https://translation.googleapis.com/v3beta1/projects/project-id/locations/global:translateText

JSON 本文をリクエストします。

{
  "model": "projects/project-id/locations/global/models/general/base",
  "sourceLanguageCode": "en",
  "targetLanguageCode": "de",
  "contents": ["Come here!"]
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

request.json ファイルにリクエスト本文を保存し、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
https://translation.googleapis.com/v3beta1/projects/project-id/locations/global:translateText

PowerShell

request.json ファイルにリクエスト本文を保存し、次のコマンドを実行します。

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://translation.googleapis.com/v3beta1/projects/project-id/locations/global:translateText " | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "translations": [
    {
      "translatedText": "Komm her!",
      "model": "projects/project-id/locations/global/models/general/base"
    }
  ]
}