Michaelです。
今回は、バージョンアップしてv3になったTranslator Text APIを試してみます。
Translator Text API v3の変更点
Translator Text API v3では、リクエストがJSONに変更されており、XMLだったv2に比べ格段に使いやすくなりました。
1リクエストで複数言語に同時翻訳が可能になったほか、言語検出、翻字、辞書による代替翻訳の検索といった言語分析機能も強化されており、翻訳に限らず様々な用途に利用できるようになっています。
Translator Text API v3で利用できる機能は、以下の通りです
機能 | 内容 |
Translate | テキストの翻訳 |
Transliterate | テキストの翻字 |
Detect | テキストの言語情報を取得 |
BreakSentence | 文章の境界の位置を特定 |
Dictionary Lookup | テキストの意味と類似する単語や慣用句を取得 |
Dictionary Examples | 単語の例文を取得 |
Translator Text API v3の使用
Translator Text API v3の翻訳機能をPythonで試してみます。
Web APIなのでリファレンス通りにデータを整形してリクエストすれば結果が返ってきますが、これまでのようにXMLに整形してリクエストし、返ってきたXMLを再度整形して辞書に戻すといった煩わしい処理が必要なくなったため、非常にシンプルなスクリプトで利用できます。
APIキーもv2のキーがそのまま使えるため、キーの再取得も必要ありません。
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 |
# coding: utf-8 import requests import json def main(): url = "https://api.cognitive.microsofttranslator.com/translate" api_key = "{APIキー}" params = { "api-version": 3.0, "to": ["ja-JP", "es"] } headers = { "Content-Type": "application/json", "Ocp-Apim-Subscription-Key": api_key } body = [ {"Text": "hello"}, {"Text": "world"} ] res = requests.request("POST", url, headers=headers, params=params, json=body) print(json.dumps(res.json(), indent=4, ensure_ascii=False)) if __name__ == "__main__": main() |
スクリプトでは翻訳先言語に「ja-JP」(日本語)と「es」(スペイン語)の2言語を設定し、「hello」と「world」を翻訳していますが、それぞれ同時に指定言語に翻訳できていました。
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 |
[ { "detectedLanguage": { "language": "en", "score": 1.0 }, "translations": [ { "text": "こんにちは", "to": "ja" }, { "text": "Hola", "to": "es" } ] }, { "detectedLanguage": { "language": "en", "score": 1.0 }, "translations": [ { "text": "世界", "to": "ja" }, { "text": "Mundo", "to": "es" } ] } ] |
まとめ
JSONでのリクエストが主なCognitive Servicesの中で、XMLでのリクエストが求められるAPIだったこともあり、Translator Text APIは少し取り付きにくい存在でしたが、JSONでリクエストができるようになったので非常に扱いが容易になりました。
言語分析も大幅にアップデートされているようなので、これを機会に利用してみてはいかがでしょうか。