Amazon TranslateとAWS Lambdaで簡単自動翻訳:AWS公式ハンズオン紹介

AWS

2024.1.25

Topics

はじめに

こんにちは、フクナガです。
前回執筆した記事の中で、初めてAmazon Translateを使いました。

関連記事
Amazon BedrockのいくつかのモデルでSNS投稿向けにTechBlog(技術記事)の要約を試してみた

上記の記事では、AWSマネジメントコンソールで提供されているAmazon Translateの「リアルタイムでの翻訳」を使用して翻訳を実行しました。
翻訳した結果がこちらです。

翻訳前(英語)

Learn how to enable log output from Amazon Bedrock to CloudWatch Logs and aggregate the number of tokens with CloudWatch Logs Insights. #AmazonBedrock #CloudWatch #TokenCount

翻訳後(日本語)

Amazon Bedrock から CloudWatch Logs へのログ出力を有効にし、CloudWatch ログインサイトを使用してトークンの数を集計する方法を学びましょう。#AmazonBedrock #CloudWatch #TokenCount

非常に素晴らしい精度でしたので、Amazon TranslateをAWS Lambdaから利用することでファイルを翻訳する機能を開発し、何かしらのアプリケーションに組み込みたいなと考えました。
しかし、Amazon S3にアップロードされたファイルの内容を翻訳する方法がわからず、調査していたところ、素晴らしい記事を見つけました!

Amazon Translate、AWS Lambda、および、新しいバッチ翻訳 API を使ってのドキュメント翻訳

とても手軽に翻訳機能の構築ができたので、中身の簡単な解説をしてみたいと思います。
「自分たち用に翻訳機能をカスタマイズしたい!」という方向けになります。

アーキテクチャ図

今回構築するアーキテクチャは下記となります。
Amazon S3日本語ファイルをAWS Lambdaで英語に変換するアーキテクチャ

上記アーキテクチャのAWS LambdaからAmazon Translateを利用することで、日本語から英語の翻訳を実施します。

翻訳用Lambda関数の解説

本アーキテクチャ構築用のCloudFormationは下記から取得可能です。
https://s3.amazonaws.com/aws-ml-blog/artifacts/serverless-document-translation/translate-lambda-cfn-stack.yml

Lambda関数の中で、Amazon Translate実行に関する部分を抽出してご紹介します。

1. 文章の翻訳


result = translate.translate_text(Text=content_array[i],SourceLanguageCode = os.environ['SourceLanguageCode'],TargetLanguageCode = os.environ['TargetLanguageCode'])

translate_text関数を使って、入力された文字列の翻訳を実行しています。

[入力されたパラメータ解説]
・Text:翻訳する文章を入力します。
・SourceLanguageCode:入力している言語コードを指定します。今回はja(日本語)を指定しました。
・TargetLanguageCode:出力(翻訳後)の言語コードを指定します。今回はen(英語)を指定しています。

translate_text関数については、下記に詳細な情報が載っているので参考にしていただければと思います。
https://docs.aws.amazon.com/ja_jp/translate/latest/APIReference/API_TranslateText.html

2. 翻訳後の文章の取得


new_file.write(result["TranslatedText"])

translate_text関数を用いると、下記の情報が返ってきます。


{
   "AppliedSettings": { 
      "Brevity": "string",
      "Formality": "string",
      "Profanity": "string"
   },
   "AppliedTerminologies": [ 
      { 
         "Name": "string",
         "Terms": [ 
            { 
               "SourceText": "string",
               "TargetText": "string"
            }
         ]
      }
   ],
   "SourceLanguageCode": "string",
   "TargetLanguageCode": "string",
   "TranslatedText": "string"
}

上記の「TranslatedText」(翻訳後の文章)を取得し、ファイルに書き込む関数となっています。

AWSが提供するCloudFormationスタックをデプロイしてみた

(1) 構築手順に沿って構築したS3バケットにテキストファイルを投入

構築手順はこちらの「AWS Lambda と リアルタイム翻訳を使用する進んだアプローチ」を参照

翻訳前ファイル格納S3バケットのキャプチャ
ファイルの中身はこちらです。
翻訳前ファイルのキャプチャ

(2) 出力結果を確認

Amazon Translateによって翻訳されたファイルが格納されているか確認します。

翻訳後ファイル格納S3バケットのキャプチャ

中身を見てみると、日本語から英語に翻訳された文章が入力されていました!
翻訳後ファイルのキャプチャ

まとめ

今回は、AWSが提供する「Amazon Translate、AWS Lambda、および、新しいバッチ翻訳 API を使ってのドキュメント翻訳」の後半部分「AWS Lambda と リアルタイム翻訳を使用する進んだアプローチ」のアーキテクチャ概要とAmazon Translate部分を抜粋して解説しました。

記事で提供されているCloudFormationを実行するだけで、簡単な翻訳アプリケーションが構築できるので、非常に素晴らしいなと感じました。
また、中身についても理解しやすいので、一度利用してみてはいかがでしょうか?

参考記事

Amazon Translate
Amazon Translate、AWS Lambda、および、新しいバッチ翻訳 API を使ってのドキュメント翻訳
TranslateText

フクナガ

インフラエンジニア歴5年のフクナガです。AWS(特にBedrockとCodePipeline)が得意分野。休日はベースを弾いてます。技術力と発信力を高め、Top Engineerを目指しています。

Recommends

こちらもおすすめ

Special Topics

注目記事はこちら