こんにちは、Michaelです。
今回は、Cognitive ServicesのTranslator Text APIを使って、テキスト翻訳を試してみます。
Cognitive Servicesの翻訳APIについて
Cognitive Servicesの翻訳APIは、もともと「Microsoft Translator」というサービスだったものがCognitive Servicesに統合されたもので、「Translator Text API」と「Translator Speech API」の2つのAPIが展開されています。今回使用する「Translator Text API」はテキスト翻訳用のAPIで「任意の言語」のテキストを「指定した言語」に翻訳することができ、Google翻訳のような翻訳機能をサービスに簡単に組み込むことができます。
Translator Text APIは2017年5月現在、61言語の相互翻訳に対応しており、うち下記に示す11言語については「ニューラルネットワークモデル」を使った従来よりも自然な翻訳に対応しています。
・ニューラルネットワークモデル対応言語
Arabic | Chinese (Mandarin) | English |
French | German | Italian |
Japanese | Korean | Portuguese |
Russian | Spanish |
Translator Text APIの価格
Translator Text APIの価格は、翻訳文字数による完全従量課金制のS1と月額課金制のS2 ~ S4の4レベルが設定されています。月額課金制S2 ~ S4については所定の最大文字数を超過した分に対しては従量課金となっており、実質的に料金前払いのディスカウント価格といえます。また、200万文字まで使用できる無料レベルもあり、検証用に使用できます。
APIキーの取得
Translator Text APIの利用を始めるには、他のAPIと同様にAzureポータルで登録し、APIキーを取得します。APIの登録、およびキーの取得に関しては「Cognitive Services: Face APIの顔検出をPythonで試してみた」を参照ください。
Translator Text APIの使用
Translator Text APIは、これまでに紹介したFace APIやComputer Vision API等の「Project Oxford」とは異なるサービスから統合されたAPIのためか、認証の方法やリクエスト本文の形式等のAPI仕様が異なります。
最も基本的なGETメソッドを使った単文のテキスト翻訳を行う場合であっても、以下の操作が必要になります。
1. APIキーで一時アクセス用トークンの発行
2. トークンでAPIの認証を行い、翻訳機能を使用
また、レスポンスもJSONではなくXML形式となるため、レスポンスデータを扱う場合にも注意が必要になります。
以上の内容を考慮して、翻訳された文章を出力するPythonスクリプトを作成すると以下のようになります。
– Python 2.7サンプルスクリプト
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
#!/usr/bin/env python #coding:utf-8 import requests import re # トークン発行 def get_access_token(key): headers = { 'Ocp-Apim-Subscription-Key': key }; response = requests.request('POST', 'https://api.cognitive.microsoft.com/sts/v1.0/issueToken', headers=headers) return response.text # 翻訳実行 def trenslator(text, lang, token): headers = { 'Authorization': 'Bearer ' + token } query = { 'to': lang, 'text': text } response = requests.request('GET', 'https://api.microsofttranslator.com/V2/Http.svc/Translate', headers=headers, params=query) traslated = re.sub("<.*?>", '', response.text) return traslated def main(): # APIキー api_key = '26d*************' #APIキー # 翻訳対象 text = '*********' #翻訳する文章 to_lang = '**' #翻訳先の言語 token = get_access_token(api_key) print(trenslator(text, to_lang, token)) if __name__ == '__main__': main() |
リクエストに関しては、翻訳する文章と翻訳先の言語の設定が必須になります。
翻訳元の言語は自動的に判定されるため、特に必要でない限りは設定しなくてもかまいません。
試しに上記スクリプトで、翻訳する文章に「駅はどこですか?」、翻訳先の言語に「de」(ドイツ語)を設定してリクエストをすると「Wo ist der Bahnhof?」とドイツ語訳された文章が出力できました。
[tta-01.png]
今回は、Translator Text APIを使ってテキスト翻訳を試してみましたが、便利な翻訳機能を簡単に実装できるため、サービスの多言語対応などに効果的ではないかと感じました。
Cognitive ServicesのAPIでありながら他のAPIとはリクエスト、レスポンスが異なるため、使用に際しては少し戸惑うこともあるかと思いますが、興味のある方はぜひ使ってみてください。
次回は、Microsoftの「Bot Framework」とTranslator Text APIを使用して簡単な翻訳ボットを作っていきます。
お楽しみに!