Cloud Translation コネクタを使用して一括翻訳を実行する


このチュートリアルでは、Cloud Translation API コネクタを使用して、非同期バッチモードでファイルを他の言語に翻訳するワークフローを作成する方法について説明します。これにより、入力の処理中にリアルタイムの出力が得られます。

目標

このチュートリアルの内容は次のとおりです。

  1. 入力用の Cloud Storage バケットを作成します。
  2. 英語のファイルを 2 つ作成し、入力バケットにアップロードします。
  3. Cloud Translation API コネクタを使用して 2 つのファイルをフランス語とスペイン語に翻訳し、結果を出力バケットに保存するワークフローを作成します。
  4. ワークフローをデプロイして実行し、プロセス全体をオーケストレートします。

費用

このドキュメントでは、Google Cloud の次の課金対象のコンポーネントを使用します。

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。 新しい Google Cloud ユーザーは無料トライアルをご利用いただける場合があります。

始める前に

組織で定義されているセキュリティの制約により、次の手順を完了できない場合があります。トラブルシューティング情報については、制約のある Google Cloud 環境でアプリケーションを開発するをご覧ください。

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.
  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Enable the Cloud Storage, Translation, and Workflows APIs:

    gcloud services enable storage.googleapis.com translate.googleapis.com workflows.googleapis.com
  7. Install the Google Cloud CLI.
  8. To initialize the gcloud CLI, run the following command:

    gcloud init
  9. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  10. Make sure that billing is enabled for your Google Cloud project.

  11. Enable the Cloud Storage, Translation, and Workflows APIs:

    gcloud services enable storage.googleapis.com translate.googleapis.com workflows.googleapis.com
  12. gcloud コンポーネントを更新します。
    gcloud components update
  13. 自分のアカウントでログインします。
    gcloud auth login
  14. このチュートリアルで使用するデフォルトのロケーションを設定します。
    gcloud config set workflows/location us-central1

    このチュートリアルでは、us-central1 にあるデフォルトの AutoML Translation モデルを使用するため、ロケーションを us-central1 に設定する必要があります。

    デフォルト以外の AutoML Translation モデルまたは用語集を使用する場合は、コネクタの呼び出しと同じ場所に存在することを確認してください。それ以外の場合は、INVALID_ARGUMENT (400) エラーが返されます。詳細については、batchTranslateText メソッドをご覧ください。

入力用の Cloud Storage バケットとファイルを作成する

Cloud Storage を使用してオブジェクトを保存できます。オブジェクトは、任意の形式のファイルで構成される不変のデータであり、バケットと呼ばれるコンテナに保存されます。

  1. 翻訳するファイルを格納する Cloud Storage バケットを作成します。

    BUCKET_INPUT=${GOOGLE_CLOUD_PROJECT}-input-files
    gcloud storage buckets create gs://${BUCKET_INPUT}
  2. 英語のファイルを 2 つ作成して、入力バケットにアップロードします。

    echo "Hello World!" > file1.txt
    gcloud storage cp file1.txt gs://${BUCKET_INPUT}
    echo "Workflows connectors simplify calling services." > file2.txt
    gcloud storage cp file2.txt gs://${BUCKET_INPUT}

ワークフローをデプロイして実行する

ワークフローは、ワークフロー構文で記述された一連のステップで構成され、YAML 形式または JSON 形式のいずれでも記述できます。これがワークフローの定義です。ワークフローを作成したら、デプロイして実行できるようにします。

  1. 次の内容のテキスト ファイルを workflow.yaml という名前で作成します。

    main:
      steps:
      - init:
          assign:
          - projectId: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
          - location: ${sys.get_env("GOOGLE_CLOUD_LOCATION")}
          - inputBucketName: ${projectId + "-input-files"}
          - outputBucketName: ${projectId + "-output-files-" + string(int(sys.now()))}
      - createOutputBucket:
            call: googleapis.storage.v1.buckets.insert
            args:
              project: ${projectId}
              body:
                name: ${outputBucketName}
      - batchTranslateText:
          call: googleapis.translate.v3beta1.projects.locations.batchTranslateText
          args:
              parent: ${"projects/" + projectId + "/locations/" + location}
              body:
                  inputConfigs:
                    gcsSource:
                      inputUri: ${"gs://" + inputBucketName + "/*"}
                  outputConfig:
                      gcsDestination:
                        outputUriPrefix: ${"gs://" + outputBucketName + "/"}
                  sourceLanguageCode: "en"
                  targetLanguageCodes: ["es", "fr"]
          result: batchTranslateTextResult

    このワークフローは、変数を割り当て、出力バケットを作成してファイルの翻訳を開始し、結果を出力バケットに保存します。

  2. ワークフローを作成したら、デプロイします。

    gcloud workflows deploy batch-translation --source=workflow.yaml
  3. ワークフローを実行します。

    gcloud workflows execute batch-translation
  4. ワークフローのステータスを表示するには、返されたコマンドを実行します。次に例を示します。

    gcloud workflows executions describe eb4a6239-cffa-4672-81d8-d4caef7d8424 /
      --workflow batch-translation /
      --location us-central1

    ワークフローは ACTIVE である必要があります。数分後、翻訳されたファイル(フランス語とスペイン語)が出力バケットにアップロードされます。

出力バケット内のオブジェクトを一覧表示する

出力バケット内のオブジェクトを一覧表示することで、ワークフローが想定どおりに動作していることを確認できます。

  1. 出力バケット名を取得します。

    gcloud storage ls

    出力は次のようになります。

    gs://PROJECT_ID-input-files/
    gs://PROJECT_ID-output-files-TIMESTAMP/

  2. バケット内のオブジェクトを一覧表示する。

    gcloud storage ls gs://PROJECT_ID-output-files-TIMESTAMP/** --recursive

    数分後、翻訳されたファイル(フランス語とスペイン語の 2 つのファイル)が一覧表示されます。

クリーンアップ

このチュートリアル用に新規プロジェクトを作成した場合は、そのプロジェクトを削除します。既存のプロジェクトを使用し、このチュートリアルで変更を加えずに残す場合は、チュートリアル用に作成したリソースを削除します。

プロジェクトを削除する

課金をなくす最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。

プロジェクトを削除するには:

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

チュートリアル リソースの削除

  1. チュートリアルを設定したときに追加した gcloud のデフォルト構成を削除します。

    gcloud config unset workflows/location
  2. このチュートリアルで作成したワークフローを削除します。

    gcloud workflows delete WORKFLOW_NAME
  3. このチュートリアルで作成したバケットを削除します。

    gcloud storage rm gs://BUCKET_NAME --recursive

    ここで、BUCKET_NAME は削除するバケットの名前です。たとえば、my-bucket です。

    レスポンスは次の例のようになります。

    Removing gs://my-bucket/...

次のステップ