テキストの翻訳

このドキュメントでは、Cloud Translation API を使用して、テキストを翻訳する方法について説明します。

テキストの翻訳

このセクションでは、https://translation.googleapis.com/language/translate/v2 エンドポイントから翻訳をリクエストするいくつかの方法を説明します。

入力文字列の翻訳

プロトコル

テキストの言語を検出するには、POST リクエストを作成して、翻訳元の言語(source)、翻訳先の言語(target)、翻訳対象のテキスト(q)を指定した JSON をリクエスト本文に含めます。JSON に複数の q パラメータを含めることで、翻訳する複数の文字列を提供できます。ソースの言語とターゲットの言語は、iso-639-1 コードを使用して指定します。

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

curl -X POST \
     -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
     -H "Content-Type: application/json; charset=utf-8" \
     --data "{
  'q': 'Hello world',
  'q': 'My name is Jeff',
  'target': 'de'
}" "https://translation.googleapis.com/language/translate/v2"

リクエストが成功すると、サーバーは 200 OK HTTP ステータス コードと JSON 形式のレスポンスを返します。

{
  "data": {
    "translations": [
      {
        "translatedText": "Hallo Welt",
        "detectedSourceLanguage": "en"
      },
      {
        "translatedText": "Mein Name ist Jeff",
        "detectedSourceLanguage": "en"
      }
    ]
  }
}

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

C#

Translation API クライアントのインストールと作成について詳しくは、Translation API クライアント ライブラリをご覧ください。

static void Translate(string text, string targetLanguageCode,
    string sourceLanguageCode)
{
    TranslationClient client = TranslationClient.Create();
    var response = client.TranslateText(text, targetLanguageCode,
        sourceLanguageCode);
    Console.WriteLine(response.TranslatedText);
}

Go

Translation API クライアントのインストールと作成について詳しくは、Translation API クライアント ライブラリをご覧ください。

func translateText(targetLanguage, text string) (string, error) {
	ctx := context.Background()

	lang, err := language.Parse(targetLanguage)
	if err != nil {
		return "", err
	}

	client, err := translate.NewClient(ctx)
	if err != nil {
		return "", err
	}
	defer client.Close()

	resp, err := client.Translate(ctx, []string{text}, lang, nil)
	if err != nil {
		return "", err
	}
	return resp[0].Text, nil
}

Java

Translation API クライアントのインストールと作成について詳しくは、Translation API クライアント ライブラリをご覧ください。

public static void translateText(String sourceText, PrintStream out) {
  Translate translate = createTranslateService();
  Translation translation = translate.translate(sourceText);
  out.printf("Source Text:\n\t%s\n", sourceText);
  out.printf("Translated Text:\n\t%s\n", translation.getTranslatedText());
}

Node.js

Translation API クライアントのインストールと作成について詳しくは、Translation API クライアント ライブラリをご覧ください。

// Imports the Google Cloud client library
const Translate = require('@google-cloud/translate');

// Creates a client
const translate = new Translate();

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const text = 'The text to translate, e.g. Hello, world!';
// const target = 'The target language, e.g. ru';

// Translates the text into the target language. "text" can be a string for
// translating a single piece of text, or an array of strings for translating
// multiple texts.
translate
  .translate(text, target)
  .then(results => {
    let translations = results[0];
    translations = Array.isArray(translations)
      ? translations
      : [translations];

    console.log('Translations:');
    translations.forEach((translation, i) => {
      console.log(`${text[i]} => (${target}) ${translation}`);
    });
  })
  .catch(err => {
    console.error('ERROR:', err);
  });

PHP

Translation API クライアントのインストールと作成について詳しくは、Translation API クライアント ライブラリをご覧ください。

use Google\Cloud\Translate\TranslateClient;

// $text = 'The text to translate."
// $targetLanguage = 'ja';  // Which language to translate to?

$translate = new TranslateClient();
$result = $translate->translate($text, [
    'target' => $targetLanguage,
]);
print("Source language: $result[source]\n");
print("Translation: $result[text]\n");

Python

Translation API クライアントのインストールと作成について詳しくは、Translation API クライアント ライブラリをご覧ください。

"""Translates text into the target language.

Target must be an ISO 639-1 language code.
See https://g.co/cloud/translate/v2/translate-reference#supported_languages
"""
translate_client = translate.Client()

if isinstance(text, six.binary_type):
    text = text.decode('utf-8')

# Text can also be a sequence of strings, in which case this method
# will return a sequence of results for each text.
result = translate_client.translate(
    text, target_language=target)

print(u'Text: {}'.format(result['input']))
print(u'Translation: {}'.format(result['translatedText']))
print(u'Detected source language: {}'.format(
    result['detectedSourceLanguage']))

Ruby

Translation API クライアントのインストールと作成について詳しくは、Translation API クライアント ライブラリをご覧ください。

# project_id    = "Your Google Cloud project ID"
# text          = "The text you would like to translate"
# language_code = "The ISO 639-1 code of language to translate to, eg. 'en'"

require "google/cloud/translate"

translate   = Google::Cloud::Translate.new project: project_id
translation = translate.translate text, to: language_code

puts "Translated '#{text}' to '#{translation.text.inspect}'"
puts "Original language: #{translation.from} translated to: #{translation.to}"

モデルの指定

Cloud Translation API に翻訳リクエストを送信すると、デフォルトでは、ニューラル機械翻訳(NMT)モデルでテキストが翻訳されます。リクエストした言語の組み合わせが NMT モデルでサポートされていない場合、フレーズベース機械翻訳(PBMT)モデルが使用されます。

モデルの比較

NMT モデルは、長い複雑な文章でも品質の高い翻訳結果を提供します。たとえば、次のリクエストについて考えてみます。

{
  'q': 'So let us begin anew--remembering on both sides that civility is not a
        sign of weakness, and sincerity is always subject to proof. Let us never
        negotiate out of fear. But let us never fear to negotiate.',
  'target': 'de',
}

このリクエストには model が指定されていません。また、NMT モデルで英語とドイツ語の組み合わせがサポートされているため、このリクエストは nmt モデルで翻訳されます。レスポンスの translations フィールドに次の翻訳結果が返されます。

"translatedText": "Fangen wir also von neuem an - auf beiden Seiten erinnern wir
                   uns, daß die Höflichkeit kein Zeichen der Schwäche ist und
                   die Aufrichtigkeit immer unter Beweis gestellt wird. Lasst
                   uns nie aus Furcht verhandeln. Aber lassen Sie uns niemals
                   Angst haben, zu verhandeln.",
"detectedSourceLanguage": "en",
"model": "nmt"

テキストを base(PBMT)モデルで翻訳するように指定することもできます。

{
  'q': 'So let us begin anew--remembering on both sides that civility is not a
        sign of weakness, and sincerity is always subject to proof. Let us never
        negotiate out of fear. But let us never fear to negotiate.',
  'target': 'de',
  'model': 'base',
}

base モデルを使用すると、レスポンスの translations フィールドに次の翻訳結果が返されます。nmt モデルで翻訳された場合と結果が異なります。

"translatedText": "Lassen Sie uns also neu beginnen - auf beiden Seiten nicht
                   vergessen, dass Zivilität ist kein Zeichen von Schwäche, und
                   Aufrichtigkeit ist immer unter Beweis. Lassen Sie uns nie aus
                   Angst verhandeln. Aber lassen Sie uns nie zu verhandeln
                   fürchten.",
"detectedSourceLanguage": "en",
"model": "base"

model パラメータの使用

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

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

プロトコル

nmt モデルを使用してテキストを翻訳するには、POST リクエストに model パラメータを含めます。

curl -X POST \
     -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
     -H "Content-Type: application/json; charset=utf-8" \
     --data "{
  'q': 'So let us begin anew--remembering on both sides that civility is not a
        sign of weakness, and sincerity is always subject to proof. Let us never
        negotiate out of fear. But let us never fear to negotiate.',
  'target': 'de',
  'model': 'nmt',
}" "https://translation.googleapis.com/language/translate/v2"

リクエストが成功すると、サーバーは 200 OK HTTP ステータス コードと JSON 形式のレスポンスを返します。

{
  "data": {
    "translations": [
      {
        "translatedText": "Lasst uns also von neuem beginnen - erinnert euch
           auf beiden Seiten, dass Höflichkeit kein Zeichen von Schwäche ist,
           und Aufrichtigkeit immer dem Beweis unterliegt. Lasst uns niemals
           aus Angst verhandeln. Aber lassen Sie uns niemals Angst haben zu
           verhandeln.",
        "detectedSourceLanguage": "en",
        "model": "nmt"
      }
    ]
  }
}

C#

Translation API クライアントのインストールと作成について詳しくは、Translation API クライアント ライブラリをご覧ください。

static void TranslateWithModel(string text,
    string targetLanguageCode, string sourceLanguageCode,
    TranslationModel model)
{
    TranslationClient client = TranslationClient.Create();
    var response = client.TranslateText(text,
        targetLanguageCode, sourceLanguageCode, model);
    Console.WriteLine("Model: {0}", response.Model);
    Console.WriteLine(response.TranslatedText);
}

Node.js

Translation API クライアントのインストールと作成について詳しくは、Translation API クライアント ライブラリをご覧ください。

// Imports the Google Cloud client library
const Translate = require('@google-cloud/translate');

// Creates a client
const translate = new Translate();

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const text = 'The text to translate, e.g. Hello, world!';
// const target = 'The target language, e.g. ru';
// const model = 'The model to use, e.g. nmt';

const options = {
  // The target language, e.g. "ru"
  to: target,
  // Make sure your project is whitelisted.
  // Possible values are "base" and "nmt"
  model: model,
};

// Translates the text into the target language. "text" can be a string for
// translating a single piece of text, or an array of strings for translating
// multiple texts.
translate
  .translate(text, options)
  .then(results => {
    let translations = results[0];
    translations = Array.isArray(translations)
      ? translations
      : [translations];

    console.log('Translations:');
    translations.forEach((translation, i) => {
      console.log(`${text[i]} => (${target}) ${translation}`);
    });
  })
  .catch(err => {
    console.error('ERROR:', err);
  });

Python

Translation API クライアントのインストールと作成について詳しくは、Translation API クライアント ライブラリをご覧ください。

"""Translates text into the target language.

Make sure your project is whitelisted.

Target must be an ISO 639-1 language code.
See https://g.co/cloud/translate/v2/translate-reference#supported_languages
"""
translate_client = translate.Client()

if isinstance(text, six.binary_type):
    text = text.decode('utf-8')

# Text can also be a sequence of strings, in which case this method
# will return a sequence of results for each text.
result = translate_client.translate(
    text, target_language=target, model=model)

print(u'Text: {}'.format(result['input']))
print(u'Translation: {}'.format(result['translatedText']))
print(u'Detected source language: {}'.format(
    result['detectedSourceLanguage']))

PHP

Translation API クライアントのインストールと作成について詳しくは、Translation API クライアント ライブラリをご覧ください。

use Google\Cloud\Translate\TranslateClient;

// $text = 'The text to translate.';
// $targetLanguage = 'ja';  // Which language to translate to?
// $model = 'nmt';  // "base" for standard edition, "nmt" for premium

$translate = new TranslateClient();
$result = $translate->translate($text, [
    'target' => $targetLanguage,
    'model'  => $model,
]);
print("Source language: $result[source]\n");
print("Translation: $result[text]\n");
print("Model: $result[model]\n");

Java

Translation API クライアントのインストールと作成について詳しくは、Translation API クライアント ライブラリをご覧ください。

public static void translateTextWithOptionsAndModel(
    String sourceText,
    String sourceLang,
    String targetLang,
    PrintStream out) {

  Translate translate = createTranslateService();
  TranslateOption srcLang = TranslateOption.sourceLanguage(sourceLang);
  TranslateOption tgtLang = TranslateOption.targetLanguage(targetLang);

  // Use translate `model` parameter with `base` and `nmt` options.
  TranslateOption model = TranslateOption.model("nmt");

  Translation translation = translate.translate(sourceText, srcLang, tgtLang, model);
  out.printf("Source Text:\n\tLang: %s, Text: %s\n", sourceLang, sourceText);
  out.printf("TranslatedText:\n\tLang: %s, Text: %s\n", targetLang,
      translation.getTranslatedText());
}

Ruby

Translation API クライアントのインストールと作成について詳しくは、Translation API クライアント ライブラリをご覧ください。

# project_id    = "Your Google Cloud project ID"
# text          = "The text you would like to translate"
# language_code = "The ISO 639-1 code of language to translate to, eg. 'en'"

require "google/cloud/translate"

translate   = Google::Cloud::Translate.new project: project_id
translation = translate.translate text, to: language_code, model: "nmt"

puts "Translated '#{text}' to '#{translation.text.inspect}'"
puts "Original language: #{translation.from} translated to: #{translation.to}"

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Cloud Translation API ドキュメント