Amazon Translate、AWS Lambda を使った自動翻訳(前編)

はじめに

今回も AWS 公式ブログから、気になる記事を見つけてきたのでご紹介します。

ビジネスや個人向けに、デジタルなテキストドキュメントをコピー&ペーストして、希望の言語に翻訳できるツールが複数存在します。(分量に限度があり)
しかし頻繁に行うとなれば、退屈で時間だけがかかる作業になります。

そこで、2 つのソリューションについて解説していきます。

1. 収集したドキュメントに、非同期のバッチ翻訳を行うシンプルな翻訳
2. AWS Lambda と Amazon のリアルタイム翻訳を使い、ドキュメントを入手する度に同期的に翻訳を行う、より進んだ手法

Amazon Translateとは

  • 現実的な価格で、迅速かつ高品質な翻訳を実現する、ニューラル機械翻訳サービス
  • ニューラル機械翻訳、深層学習モデルを応用した、自動翻訳の一形態
  • 従来の統計学や規則をベースにした翻訳アルゴリズムと比べて、正確かつ自然
  • 多様なコンテンツに適格に対応。異なるユースケースやドメイン間での、多様な文章を使ってトレーニングされている
  • 大量に集積したテキストや HTML ドキュメントの翻訳に使える、非同期のバッチ翻訳機能
  • 1 回の API 呼び出しのみで、ドキュメント一式を言語翻訳できる

非同期バッチ翻訳を使うことで、ドキュメントやチュートリアル素材、あるいはブログなどを、日ごとに希望の言語に翻訳することが可能です。
バッチ翻訳ジョブの進行状況をモニタリングしたり、指定した出力フォルダーから翻訳結果を取得することもできます。

同期バッチ翻訳を使うシンプルなアプローチ

Amazon Translate のバッチ翻訳を試すために、 3 つのテキストファイルを使用します。

ステップ1 S3バケットを作成

us-east-1 に S3 バケットを作成し、一意の名前を付けます。
このバケット内に、「raw」という名前のフォルダーを作成します。
2020-04-10_14h59_04.png
フォルダー 「s3://作ったバケット名/raw/」 に、翻訳対象のテキストファイルをアップロードします。
このバケットが、バッチ翻訳の入力を保持することになります。

一意の名前で、保存先として、もう 1 つの S3 バケットを us-east-1 に作成します。
このバケット内に、「output」という名前のフォルダーを作成します。
バッチ翻訳からの出力は、「s3://2つ目のバケット名/output/」 の中に保存されます。

ステップ2 Amazon Translateでバッチ翻訳

Amazon Translate コンソールで、[Batch Translation] をクリックします。(バージニア北部を選択)
[Create job] をクリックします。
2020-04-10_15h27_44.png
[Name] に、「 MyTranslationJob 」と入力します。
[Source language] で、[English] を選択します。
[Target language] では、日本語を選択します。
[Input S3 location] に、s3://ファイルを入れたバケットの名前/raw/ と入力します。
[File Format] で、[txt] を選択します。
2020-04-10_15h54_21.png
[Output S3 location] に、s3://保存先のバケット名/output/ と入力します。
[Access permissions] では、[Create an IAM role] を選択します。
[IAM role] では、[Input and output S3 buckets] を選択します。
[Role name] に、translate-batch-role と入力します。
[Create job] をクリックします。
2020-04-10_16h52_21.png
ジョブの作成が完了すると、 Amazon Translate コンソール上で、その進行状況が確認できるようになります。
2020-04-10_16h52_42.png

ジョブが完了すると、上記の status が Completed に変わり、翻訳済みのドキュメントが出力用の S3 バケットに保存されます。
image.png

翻訳した結果

保存されたファイルをチェックしてみました。違和感の無い綺麗な日本語になりました!
2020-04-10_17h56_24.png

後編に続きます!

公式サイトリンク

AWS サービスブログ
Amazon Translate