Amazon Translate によるテキスト翻訳
ずいぶん昔、2000年前に、音声合成装置に対して、読み上げるための音片コードの組み合わせを送信する制御系プログラム(Pollyに該当する機能)を構築した経験があるが、その頃の技術では、漢字の発声内容の選択は対応表をテーブルとして持たなくては対応できず、さらにコンフィグから音片コードを正確に読み上げ内容通りに組み立てるロジックも難しくって、大変苦労したのを覚えている。私のキャリアの中でも品質的に満足できるものではなく、ある意味挫折感があったのを覚えている。
それに比べると、正確な読み上げをプログラマが気にしなくてもコーディングできてしまうとは何て良い時代でしょう。
たぶん、工数的にもかかる時間を10分の1ぐらい圧縮できる気がする。
という前置きはさておき・・
Amazon Translate は、高速で高品質かつカスタマイズ可能な言語翻訳を手ごろな料金で提供するニューラル機械翻訳サービスです。ニューラル機械翻訳は、深層学習モデルを使用して、従来の統計ベースやルールベースの翻訳アルゴリズムよりも正確で自然な翻訳を提供する言語翻訳自動化の一形態です。
Amazon Translate で、さまざまなユーザー向けにウェブサイトやアプリケーションなどのコンテンツをローカライズしたり、分析用に大量のテキストを簡単に翻訳したり、ユーザー間の言語間のコミュニケーションを効率的に行ったりすることができます。
Amazon Translate の料金
標準翻訳 100 万文字あたり 15.00USD
無料利用枠 1 か月 200 万文字を 12 か月間
Active Custom Translation(並列データを使用して機械翻訳出力をカスタマイズ) 100 万文字あたり 60.00USD
Active Custom Translation の無料利用枠 1 か月 50 万文字を 2 か月間
会社のウェブサイト: | 標準翻訳コスト | Active Custom Translation コスト | |
– ウェブページの平均的な長さ: 20,000 文字 | ウェブサイトあたり 200 万文字 | 30.00 USD | 120.00 USD |
– ウェブサイトあたりのページ数: 100 | 3300円 | 13200円 |
APIリファレンス
boto3 boto3.client関数
機能 デフォルトのセッションを使用して、低レベルのサービスクライアントを作成する
構文 boto3.client(クライアント名)
戻り値 サービスクライアントのオブジェクト
Translate translate_textメソッド
機能 入力テキストをソース言語からターゲット言語に変換します
構文
translate_text{
"SourceLanguageCode": "string",
"TargetLanguageCode": "string",
"TerminologyNames": [ "string" ],
"Text": "string"
}
戻り値
{
"AppliedTerminologies": [
{
"Name": "string",
"Terms": [
{
"SourceText": "string",
"TargetText": "string"
}
]
}
],
"SourceLanguageCode": "string",
"TargetLanguageCode": "string",
"TranslatedText": "string"
}
構文説明
[SourceLanguageCode]
ソーステキストの言語コード。AmazonTranslateでサポートされている言語である必要があります。
「auto」を指定すると、Amazon Translateがテキストのソース言語を自動的に判断します。
タイプ:文字列
長さの制約:最小長=2 最大長=5
指定は必須
[TargetLanguageCode]
ターゲットテキストの言語コード。言語は、AmazonTranslateでサポートされている言語である必要があります。
タイプ:文字列
長さの制約:最小長=2 最大長=5
指定は必須
[TerminologyNames]
TranslateTextリクエストで使用される用語リストファイルの名前。
TranslateTextリクエストでは、最大1つの用語リストを使用できます。
用語リストには、最大256の用語を含めることができます。
タイプ:文字列の配列
長さの制約:最小長=1 最大長=256
パターン: ^([A-Za-z0-9-]_?)+$
指定は必須ではない
[Text]
翻訳するテキスト。テキスト文字列の長さは最大5,000バイトです。
タイプ:文字列
長さの制約:最小長=1 最大長=5000
パターン: [\P{M}\p{M}]{1,5000}
指定は必須
戻り値説明
アクションが成功すると、サービスはHTTP200応答を送り返します。
次のデータが、サービスによってJSON形式で返されます。
[AppliedTerminologies]
テキスト応答のための用語の名前。
タイプ:AppliedTerminologyオブジェクトの 配列
[SourceLanguageCode]
ソーステキストの言語コード。
タイプ:文字列
長さの制約:最小長=2 最大長=5
[TargetLanguageCode]
ターゲットテキストの言語コード。
タイプ:文字列
長さの制約:最小長=2 最大長=5
[TranslatedText]
翻訳されたテキスト。
タイプ:文字列
長さの制約:最大長=10000
パターン: [\P{M}\p{M}]{0,10000}
①テキストを日本語から英語に翻訳するプログラム translate_text_ja.py
import boto3
translate = boto3.client('translate')
text = 'きょう東京都が確認した新型コロナウイルスの新たな感染者は714人だった。直近7日間の平均は500人を超えて、508人となった。'
result = translate.translate_text(
Text=text, SourceLanguageCode='ja', TargetLanguageCode='en')
print(result['TranslatedText'])
PS C:\Users\mikol\translate> python translate_text_ja.py
Today the Tokyo Metropolitan Government confirmed 714 new coronavirus infections. The average in the last seven days exceeded 500 people, and it was 508.
②テキストを英語から日本語に翻訳するプログラム translate_text_en.py
import boto3
translate = boto3.client('translate')
text = "Today the Tokyo Metropolitan Government confirmed 714 new coronavirus infections. The average in the last seven days exceeded 500 people, and it was 508."
result = translate.translate_text(
Text=text, SourceLanguageCode='en', TargetLanguageCode='ja')
print(result['TranslatedText'])
PS C:\Users\mikol\translate> python translate_text_en.py
今日、東京都は714の新しいコロナウイルス感染を確認しました。過去7日間の平均は500人を超え、508人でした。
③テキストを日本語から英語に翻訳して、戻りの辞書型オブジェクトを表示するプログラム translate_response.py
import boto3
import pprint
translate = boto3.client('translate')
text = 'きょう東京都が確認した新型コロナウイルスの新たな感染者は714人だった。直近7日間の平均は500人を超えて、508人となった。'
result = translate.translate_text(
Text=text, SourceLanguageCode='ja', TargetLanguageCode='en')
pprint.pprint(result)
PS C:\Users\mikol\translate> python translate_response.py
{'ResponseMetadata': {'HTTPHeaders': {'cache-control': 'no-cache',
'content-length': '226',
'content-type': 'application/x-amz-json-1.1',
'date': 'Wed, 30 Jun 2021 09:41:35 GMT',
'x-amzn-requestid': '1439ceff-5c88-4f2d-972b-999999999999'},
'HTTPStatusCode': 200,
'RequestId': '1439ceff-5c88-4f2d-972b-999999999999',
'RetryAttempts': 0},
'SourceLanguageCode': 'ja',
'TargetLanguageCode': 'en',
'TranslatedText': 'Today the Tokyo Metropolitan Government confirmed 714 new '
'coronavirus infections. The average in the last seven days '
'exceeded 500 people, and it was 508.'}
SourceLanguageCode:ソーステキストの言語コードの言語対応表
言語 | 言語コード |
アフリカーンス語 | af |
アルバニア語 | sq |
アムハラ語 | am |
アラビア語 | ar |
アルメニア語 | hy |
アゼルバイジャン | az |
ベンガル語 | bn |
ボスニア | bs |
ブルガリア語 | bg |
カタロニア語 | ca |
中国語(簡体字) | zh |
中国(伝統的な) | zh-TW |
クロアチア語 | hr |
チェコ語 | cs |
デンマーク語 | da |
ダリー語 | fa-AF |
オランダ | nl |
英語 | en |
エストニア語 | et |
ペルシア語(ペルシア語) | fa |
フィリピンのタガログ語 | tl |
フィンランド語 | fi |
フランス語 | fr |
フランス語(カナダ) | fr-CA |
ジョージア語 | ka |
ドイツ語 | de |
ギリシャ語 | el |
グジャラート語 | gu |
ハイチ語 | ht |
ハウサ語 | ha |
ヘブライ語 | he |
ヒンディー語 | hi |
ハンガリー語 | hu |
アイスランド語 | is |
インドネシア語 | id |
イタリア | it |
日本語 | ja |
カンナダ語 | kn |
カザフ | kk |
韓国語 | ko |
ラトビア語 | lv |
リトアニア語 | lt |
マケドニア | mk |
マレー語 | ms |
マラヤーラム語 | ml |
マルタ語 | mt |
モンゴル | mn |
ノルウェー語 | no |
ペルシア語 | fa |
パシュトゥー語 | ps |
ポーランド語 | pl |
ポルトガル語 | pt |
ルーマニア語 | ro |
ロシア | ru |
セルビア語 | sr |
シンハラ語 | si |
スロバキア | sk |
スロベニア | sl |
ソマリア | so |
スペイン | es |
スペイン語(メキシコ) | es-MX |
スワヒリ語 | sw |
スウェーデン | sv |
タガログ語 | tl |
タミル語 | ta |
テルグ語 | te |
タイ語 | th |
トルコ語 | tr |
ウクライナ語 | uk |
ウルドゥー語 | ur |
ウズベク語 | uz |
ベトナム語 | vi |
ウェールズ | cy |