AWS SDK for Python (Boto3) で Amazon Translateを使ってみた

2018.09.02

AWSの翻訳サービス Amazon Translateが日本語に対応しましたのでPython (Boto3)を使用して使ってみました。サンプルコードをご紹介しますのでpythonを使用している方は試してみてください。

環境

$ pip install -U boto3
$ pip list | grep boto3
boto3 1.7.82

サンプルコード

import boto3

# constant
REGION = 'us-west-2'
SRC_LANG = 'en'
TRG_LANG = 'ja'


def get_translate_text(text):

    translate = boto3.client('translate', region_name=REGION)

    response = translate.translate_text(
        Text=text,
        SourceLanguageCode=SRC_LANG,
        TargetLanguageCode=TRG_LANG
    )

    return response


def main():
    # Text to translate
    text = """Natural and accurate language translation"""

    # From Japanese to English
    # while len(text.encode('utf-8')) > 5000:
    #   text = text[:-1]

    # From English to Japanese
    # while len(text) > 5000:
    #  text = text[:-1]

    result = get_translate_text(text)
    print(result.get('TranslatedText'))


if __name__ == '__main__':
    main()

ドキュメントに記載されていますが、テキスト文字列は5,000バイトです。その為、5,000バイトを超えるとエラーが発生します。今回は長文を翻訳する想定ではないので、エラー回避のためにwhileでバイト数を削ることにしました。

Amazon Translate | TranslateText より

The text to translate. The text string can be a maximum of 5,000 bytes long. Depending on your character set, this may be fewer than 5,000 characters.

英語から日本語の場合

while len(text) > 5000:
text = text[:-1]

日本語から英語の場合

while len(text.encode('utf-8')) > 5000:
text = text[:-1]

実行

日本語から英語

text = """自然で正確な言語翻訳"""

実行結果

$ python amazon-translate.py
Natural and accurate language translation

英語から日本語

text = """Natural and accurate language translation"""

実行結果

$ python amazon-translate.py
自然で正確な言語翻訳

まとめ

英語から日本語、日本語から英語と翻訳が可能になったのでAmazon Translateを使用してみました。APIを使用して簡単に翻訳することが可能ですので是非試してみてください。

参考URL