[Boto3 Adv-Cal DAY9]Translateで、元フレーズの言語を自動推測させた上で日本語へ翻訳してみた
boto3 で楽しむ AWS PythonLife 一人AdventCalendarです。
boto3のドキュメントを通して、サービス別にどういった事が出来るのかを理解したり、管理コンソールを通さずにTerminalだけで完結できるように検証していくことが目的になります。
9日目はTranslateで英和翻訳してみました。
目次
boto3を通してTranslateで出来ること
ドキュメントは下記リンク先です。
ざっくりと以下のことができます。
- カスタム辞書の操作(取り込み・削除)
- 翻訳の実行
今回の操作
指定したフレーズの言語自動推測での翻訳です。
% python main.py Input Profile name [default]>> Input translate text >> test {'ResponseMetadata': {'HTTPHeaders': {'connection': 'keep-alive', 'content-length': '100', 'content-type': 'application/x-amz-json-1.1', 'date': 'Wed, 05 Dec 2018 09:34:52 GMT', 'x-amzn-requestid': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'}, 'HTTPStatusCode': 200, 'RequestId': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX', 'RetryAttempts': 0}, 'SourceLanguageCode': 'en', 'TargetLanguageCode': 'ja', 'TranslatedText': 'テストを実行します'}
main.py
import boto3 from pprint import pprint class TranslateWizard: _client_name = 'translate' _session = None def __init__(self, profile_name): self._session = boto3.Session(profile_name=profile_name, region_name='us-east-1') @property def session(self): return self._session def get_client(self, client_name=None): if not client_name: client_name = self._client_name return self.session.client(client_name) @property def client_name(self): return self._client_name def translate(self, text): params = { 'Text': text, 'SourceLanguageCode': 'auto', 'TargetLanguageCode': 'ja' } return self.get_client().translate_text(**params) def prompt_translate_text(self): value = None while True: value = input("\n Input translate text >> ") if value and len(value) != 0: break return value @staticmethod def prompt(): default_profile_name = 'default' profile_name = input('Input Profile name [{}]>> '.format(default_profile_name)) if len(profile_name) == 0: profile_name = default_profile_name wizard = TranslateWizard(profile_name) text = wizard.prompt_translate_text() result = wizard.translate(text) pprint(result) if __name__ == '__main__': TranslateWizard.prompt()
対象リージョン
ea-northeast-1で行うとEndpointでエラーが発生したため、region_nameをus-east-1にて上書き指定しました。
翻訳言語
翻訳元言語についてはauto
を指定することで自動解析されます。指定する翻訳コードについては、boto3のドキュメントに掲載されています。
翻訳サポートされている組み合わせについては、以下のドキュメントを参照してください。
まとめ
複数の言語間での自然な翻訳が可能なため、訳に困った時にコストが問題なければ試してみるのもありだと思いました。
また、個人的に丁寧な翻訳を行ってくれた感じもあったため、言い回しに困った際にも有効かもしれません。