LoginSignup
4
7

More than 3 years have passed since last update.

Amazon Translateによる機械翻訳

Posted at

前回前々回は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)

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)

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

画面

image.png

参考(google翻訳)

image.png

google翻訳とほぼ同じような結果になったと思います。

まとめ

TranslateはRekognitionと同様に、APIから機械学習を利用できる便利なサービスです。今回は翻訳元を日本語、翻訳先を英語に固定しましたが、当然、言語自体もAPIの引数になっていて、対応言語は50を超えるようです。また、ユーザー事例としてはHotels.comなどがあるようです。

4
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
7