前回・前々回はAmazon Rekognition(画像認識サービス)を試しましたが、今回はAmazon Translateという機械翻訳サービスを試してみました。
また、Rekognitionにおいては、認識したい画像ファイルをプログラム実行時の引数として試してみたのですが、Translateにおいては、翻訳したい文章をプログラム実行時の引数とするのはやや無理があるので、今回はFlaskを用いて簡単なUIを作成しました。
Amazon Translateとは
Amazon Translateは、深層学習モデルを使用した、従来の統計ベースやルールベースの翻訳アルゴリズムよりも正確で自然な翻訳を提供する言語翻訳サービスです。Amazon Translate を使用すると、機械学習の深いスキルなしに機械学習をアプリケーションに組み込める、データを用意するだけでAPIから機械学習を利用できる、といった特徴があります。
実行環境
OS:Ubuntu 16.04.2
言語:Python3.6.2
root/
|__translate.py
|__templates/
|__translate.html
事前準備
AWS CLI(aws configure)にて、以下の認証情報をセットしておきます。
AWS Access Key ID
AWS Secret Access Key
Default region name
Default output format
ソースコード(translate.py)
from flask import *
import boto3
app = Flask(__name__)
@app.route('/',methods=['GET','POST'])
def index():
return render_template('translate.html')
@app.route('/translate',methods=['POST'])
def translate():
# 翻訳元の日本語を取得
txt1 = request.form['txt1']
if txt1 == '':
return render_template('translate.html')
# Translateのクライアントを作成
translate = boto3.client('translate')
# translate_textを実行(翻訳元:日本語、翻訳先:英語)
result = translate.translate_text(Text=txt1, SourceLanguageCode='ja', TargetLanguageCode='en')
# 翻訳元の日本語と翻訳先の英語をhtmlに引き渡す
return render_template('translate.html',txt1=txt1,txt2=result['TranslatedText'])
if __name__ == "__main__":
app.run(host='0.0.0.0',port=8888,debug=True)
ソースコード(translate.html)
<!DOCTYPE html>
<html>
<head>
<title>translate</title>
<meta charset="UTF-8">
</head>
<body>
日本語→英語に翻訳します。
<br>
<form action="/translate" method="post">
<!-- pythonからtxt1・txt2が連携されている場合はTextAreaにそれを表示-->
<textarea name="txt1" rows="10" cols="50">{% if txt1 %}{{txt1}}{% endif %}</textarea>
<textarea name="txt2" rows="10" cols="50">{% if txt2 %}{{txt2}}{% endif %}</textarea>
<br>
<input type="submit" value="実行">
</form>
</body>
</html>
簡単な解説
概略としては以下のような処理を行っています。
①画面から入力された翻訳元の日本語を取得する。
②上記①の日本語を引数としてTranslateのtranslate_textを実行する。(翻訳元:日本語、翻訳先:英語とする。)
③翻訳元の日本語と翻訳先の英語をhtmlに引き渡す。
④上記③を画面に再表示する。
実行結果
コマンド
python translate.py
画面
参考(google翻訳)
google翻訳とほぼ同じような結果になったと思います。
まとめ
TranslateはRekognitionと同様に、APIから機械学習を利用できる便利なサービスです。今回は翻訳元を日本語、翻訳先を英語に固定しましたが、当然、言語自体もAPIの引数になっていて、対応言語は50を超えるようです。また、ユーザー事例としてはHotels.comなどがあるようです。