Amazon Translate のバッチ処理で入力ファイル毎の自動言語検出がサポートされ、言語が混在したインプットファイルを一括処理出来るようになりました

2022.12.14

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

いわさです。

Amazon Translate では S3 バケットに翻訳対象のファイルを格納し、バッチ処理モードで大量のファイルを翻訳処理することが出来ます。
従来は入力ファイルの言語を指定する必要がありましたが、今回のアップデートでファイル毎に言語を自動検出出来るようになりました。

今までは入力言語ごとにプレフィックスやバケットを分けて言語ごとにバッチジョブを発行する必要がありましたが、これからは言語の異なるファイルが混在していても一括で処理出来るようになりました。
実際に試してみましたので紹介します。

バッチ処理

前提として、Amazon Translate のバッチ処理は本日時点で東京リージョンでは利用出来ません。

サポートされているのは以下のリージョンです。

  • US East (N. Virginia)
  • US East (Ohio)
  • US West (Oregon)
  • Asia Pacific (Seoul)
  • Europe (Frankfurt)
  • Europe (Ireland)
  • Europe (London)

なので、本日はバージニア北部で試してみます。

ジョブ設定のソース言語に Auto が指定出来るようになった

自動言語検出を使う方法ですが、Translate のバッチ実行時にはソース言語を指定します。
ここで Auto というのが選択出来るようになりました。
こちらを設定すると各ファイルの先頭 1,000 文字を Amazon Comprehend の言語検出 API で言語判定してくれるという仕組みのようです。

使ってみる

以下のような複数言語のテキストファイルを用意し、S3 バケットへアップロードしておきます。
S3 バケットもバージニア北部で作成しています。

% cat hoge-de.txt 
Sie können einen Batch-Übersetzungsauftrag ausführen, indem Sie die Amazon Translate Translate-Konsole verwendenAWS CLIoder die Amazon Translate API.%                                                                                                   
% cat hoge-en.txt 
You can run a batch translation job by using the Amazon Translate console, the AWS CLI, or the Amazon Translate API.%                                                                                                                                    
% cat hoge-ko.txt 
Amazon Translate 콘솔인AWS CLI또는 Amazon Translate API를 사용할 수 있습니다.%    

% aws s3 mb s3://hoge1214transl --region us-east-1 --profile hoge             
make_bucket: hoge1214transl
% aws s3 sync . s3://hoge1214transl/input/ --region us-east-1 --profile hoge 
upload: ./hoge-de.txt to s3://hoge1214transl/input/hoge-de.txt      
upload: ./hoge-en.txt to s3://hoge1214transl/input/hoge-en.txt      
upload: ./hoge-ko.txt to s3://hoge1214transl/input/hoge-ko.txt

バッチ設定では先程のようにソース言語に Auto を指定しています。
ターゲット言語は日本語を指定します。

バッチを実行しました。
ちなみに、S3 バケットのルートにファイルを配置した場合は以下のようなエラーになってしまったのでプレフィックス内に配置することで回避出来ました。

INPUT_S3_URI_INVALID: The provided input S3 URI does not have a specific input prefix folder

なお、ファイルは 3 つだったのですがバッチ処理の完了まで 30~40 分かかりました。
思ってたよりも長かったですが公式ドキュメントにも以下のように記載がありますので即終わるものではないという前提で取り扱いましょう。

Batch translation jobs are long-running operations and can take significant time to complete. For example, batch translation on a small dataset might take a few minutes, while very large datasets may take up to 2 days or more. Completion time is also dependent on the availability of resources.

Running a batch translation job - Amazon Translate より

バッチ処理が完了したのでファイルをダウンロードし、コンテンツを確認してみます。

% cat ja.hoge-en.txt 
バッチ翻訳ジョブは、Amazon 翻訳コンソール、AWS CLI、または Amazon Translate API を使用して実行できます。%     
% cat ja.hoge-de.txt 
バッチ翻訳ジョブは、Amazon 翻訳翻訳コンソール AWS CLI または Amazon Translate API を使用して実行できます。%   
% cat ja.hoge-ko.txt 
AWS CLI (アマゾン翻訳コンソール) またはアマゾン翻訳 API を使用できます。%

良いですね。
うまく日本語判定出来ています。

1 ファイル 20 MB までや 一度のバッチ処理で処理出来るファイル数が最大 1,000,000 件などの制限については Auto で変わるということは記述がなかったのでこのあたりの制限は従来どおりだと思います。

さいごに

本日は Amazon Translate のバッチ処理で入力ファイル毎の自動言語検出がサポートされ、言語が混在したインプットファイルを一括処理出来るようになったので簡単ではありますがいくつかのサンプルファイルを用意して試してみました。

東京リージョンではサポートされていませんが日本語は対応しているので利用出来るシーンありそうですね。
なお、実行後に CloudTrail を見た感じだと Comprehend の API 呼び出しは記録されていなかったので Comprehend の料金が追加で発生する形ではなさそうです。