Amazon Translate、AWS Lambda を使った自動翻訳（前編）

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

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

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

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

#Amazon Translateとは

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

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

#同期バッチ翻訳を使うシンプルなアプローチ
Amazon Translate のバッチ翻訳を試すために、 [3 つのテキストファイル](https://github.com/aws-samples/amazon-translate-text-extract-sample/tree/master/sample-files/en)を使用します。

```
#テキストファイル１
Amazon Translate is a neural machine translation service that delivers fast, high-quality, and affordable language translation.

#テキストファイル２
Neural machine translation is a form of language translation automation that uses deep learning models to deliver more accurate and more natural sounding translation than traditional statistical and rule-based translation algorithms.

#テキストファイル３
`Amazon Translate allows you to localize content - such as websites and applications - for international users, and to easily translate large volumes of text efficiently.
```
##ステップ１　S3バケットを作成
us-east-1 に S3 バケットを作成し、一意の名前を付けます。
このバケット内に、「raw」という名前のフォルダーを作成します。
![2020-04-10_14h59_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543340/07a5ae18-0283-ca98-a483-f621100eef9c.png)
フォルダー 「s3://作ったバケット名/raw/」 に、翻訳対象のテキストファイルをアップロードします。
このバケットが、バッチ翻訳の入力を保持することになります。

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

##ステップ２　Amazon Translateでバッチ翻訳
Amazon Translate コンソールで、[Batch Translation] をクリックします。（バージニア北部を選択）
[Create job] をクリックします。
![2020-04-10_15h27_44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543340/ec324074-2aac-0543-6460-1e2ccad408c5.png)
[Name] に、「 MyTranslationJob 」と入力します。
[Source language] で、[English] を選択します。
[Target language] では、日本語を選択します。
[Input S3 location] に、s3://ファイルを入れたバケットの名前/raw/ と入力します。
[File Format] で、[txt] を選択します。
![2020-04-10_15h54_21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543340/d155b9ef-7c49-0c7a-0488-b0ac91027b63.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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543340/c438fb33-06f9-9019-d905-92c5d5389294.png)
ジョブの作成が完了すると、 Amazon Translate コンソール上で、その進行状況が確認できるようになります。
![2020-04-10_16h52_42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543340/3c57abad-11b4-7a72-20a1-e59fb95850a9.png)

ジョブが完了すると、上記の status が Completed に変わり、翻訳済みのドキュメントが出力用の S3 バケットに保存されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543340/01b45067-ff19-ca7f-9011-4b4f16d8b35c.png)

##翻訳した結果
保存されたファイルをチェックしてみました。違和感の無い綺麗な日本語になりました！
![2020-04-10_17h56_24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543340/8842c056-b8fa-6881-a626-43ca25e98d44.png)

後編に続きます！

#公式サイトリンク
[AWS サービスブログ](https://aws.amazon.com/jp/blogs/news/translating-documents-with-amazon-translate-aws-lambda-and-the-new-batch-translate-api/)
[Amazon Translate](https://aws.amazon.com/jp/translate/)