Amazon Translate로 기계 번역

지난번 · 전회은 Amazon Rekognition(이미지 인식 서비스)을 시도했지만 이번에는 Amazon Translate라는 기계 번역 서비스를 시도해 보았습니다.

또, Rekognition에서는 인식하고 싶은 화상 파일을 프로그램 실행시의 인수로서 시험해 보았습니다만, Translate에 있어서는, 번역하고 싶은 문장을 프로그램 실행시의 인수로 하는 것은 다소 무리가 있으므로, 이번은 Flask 를 사용하여 간단한 UI를 만들었습니다.

Amazon Translate란?



Amazon Translate는 심층 학습 모델을 사용하는 기존의 통계 기반 및 규칙 기반 번역 알고리즘보다 정확하고 자연스러운 번역을 제공하는 언어 번역 서비스입니다. Amazon Translate를 사용하면 머신러닝의 깊은 기술 없이 머신러닝을 애플리케이션에 통합할 수 있으며, 데이터를 준비하는 것만으로 API에서 머신러닝을 이용할 수 있다는 특징이 있습니다.

실행 환경



OS: 우분투 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

화면





참고 (google 번역)





Google 번역과 거의 비슷한 결과가 되었다고 생각합니다.

요약



Translate는 Rekognition과 마찬가지로 API에서 기계 학습을 이용할 수 있는 편리한 서비스입니다. 이번은 번역원을 일본어, 번역처를 영어로 고정했습니다만, 당연히, 언어 자체도 API의 인수가 되어 있어, 대응 언어는 50을 넘는 것 같습니다. 또, 유저 사례로서는 Hotels.com등이 있는 것 같습니다.

좋은 웹페이지 즐겨찾기