Cognitive Services: Translator Text API v3を試す

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のキーがそのまま使えるため、キーの再取得も必要ありません。

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」を翻訳していますが、それぞれ同時に指定言語に翻訳できていました。

[
{
"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でリクエストができるようになったので非常に扱いが容易になりました。

言語分析も大幅にアップデートされているようなので、これを機会に利用してみてはいかがでしょうか。

この記事を書いた人

azure-recipe-user