【Azure】Azure Translator Text API使ってみた!

スポンサーリンク

ひょうんなことからAzure Translator Text APIに興味を持ったので、どのようなサービスか、実際の使い方など調べてみました。
同じようにAzure Translator Text APIを使いたい方の参考になれば幸いです。

<目次>

概要

Azure TranslatorはREST APIで呼べるAzureの翻訳サービスです。

docs.microsoft.com

マイクロソフトのTranslator APIは今までは統計的なマシンラーニングを使っていたようですが、最近ニューラルネットワークに置き換えられたそうです。

それだけでも随分精度が上がったそうですが、 Collaborative Translations Framework (CTF)という仕組みでユーザーが翻訳エンジンに翻訳結果をレーティングでできるような仕組みとなっています。

Azure Translatorを使うには

以下の手順で作成していきます。

  1. Azureにサインイン

  2. Microsoft TranslatorをSubscribeする。

  3. Authentication Keyを発行する。

  4. 実際にAzure Translatorを使う。

Azureにサインインする部分は省きます。

Azure TranslatorはCognitive Serviceの一部なのでCognitive Servicesから作成します。

f:id:hayato320:20170421155905p:plain

f:id:hayato320:20170421160317p:plain

f:id:hayato320:20170421160528p:plain

Translatorを作成するとキーを取得できるようになります。
このキーは使用してREST APIを発行するので、このキーは重要です。

f:id:hayato320:20170421161350p:plain

さて、3まで完了したので、実際にTranslatorを呼び出してみましょう。 githubにマイクロソフトのサンプルコードがあるので、今回はその中からpythonを使います。

https://github.com/MicrosoftTranslator

"""                                                                                                                                                                                                                                          
Example application showing the use of the Translate method in the Text Translation API.                                                                                                                                                      
"""

from xml.etree import ElementTree
from auth import AzureAuthClient
import requests

doItAgain = "yes"

def GetTextAndTranslate(finalToken):

    fromLangCode = " "
    toLangCode = " "
    textToTranslate = " "

    print " "
    print "   Language List"
    print "     English"
    print "     German"
    print "     Italian"
    print "     Spanish"
    print "     French"
    print "     Japanese"

    # Get the source language                                                                                                                                                                                                                 
    while (fromLangCode == " "):
        sourceLang = raw_input("Type the name of a language from the list that you want to translate from: ")

        if (sourceLang == "english") or (sourceLang == "English"):
            fromLangCode = "en"
        elif (sourceLang == "German") or (sourceLang == "german"):
            fromLangCode = "de"
        elif (sourceLang == "Italian") or (sourceLang == "italian"):
            fromLangCode = "it"
        elif (sourceLang == "Spanish") or (sourceLang == "spanish"):
            fromLangCode = "es"
        elif (sourceLang == "French") or (sourceLang == "french"):
            fromLangCode = "fr"
        elif (sourceLang == "Japanese") or (sourceLang == "japanse"):
            fromLangCode = "ja"
        else:
            print " "
            print "You need to pick a language from the List"

            raw_input("Press any key to continue")

    print " "

    # Get the destination language                                                                                                                                                                                                            
    while (toLangCode == " "):
        destLang = raw_input("Type the name of a language from the list that you want to translate to: ")

        if (destLang == "english") or (destLang == "English"):
            toLangCode = "en"
        elif (destLang == "German") or (destLang == "german"):
            toLangCode = "de"
        elif (destLang == "Italian") or (destLang == "italian"):
            toLangCode = "it"
        elif (destLang == "Spanish") or (destLang == "spanish"):
            toLangCode = "es"
        elif (destLang == "French") or (destLang == "french"):
            toLangCode = "fr"
        else:
            print " "
            print "You need to pick a language from the List"

            raw_input("Press any key to continue")

    print " "

    textToTranslate = raw_input("Type the text that you want to translate:  ")

    print " "

    # Call to Microsoft Translator Service                                                                                                                                                                                                    
    headers = {"Authorization ": finalToken}
    translateUrl = "http://api.microsofttranslator.com/v2/Http.svc/Translate?text={}&to={}".format(textToTranslate, toLangCode)

    translationData = requests.get(translateUrl, headers = headers)
    # parse xml return values                                                                                                                                                                                                                 
    translation = ElementTree.fromstring(translationData.text.encode('utf-8'))
    # display translation                                                                                                                                                                                                                     
    print "The translation is---> ", translation.text

    print " "


if __name__ == "__main__":

    client_secret = 'YOUR SECRET KEY'
    auth_client = AzureAuthClient(client_secret)
    bearer_token = 'Bearer ' + auth_client.get_access_token()

    while (doItAgain == 'yes') or (doItAgain == 'Yes'):
        GetTextAndTranslate(bearer_token)
        print ' '
        doItAgain = raw_input('Type yes to translate more, any other key to end: ')

    goodBye = raw_input('Thank you for using Microsoft Translator, we appreciate it. Good Bye')

githubにあるauth.pyも同フォルダに置く必要がありますが、かなりシンプルなコードですね。

実際に実行してみるとこんな感じです。
日本語から英語に翻訳できているのがわかります。

$python MTPythonSampleCode.py
 
   Language List
     English
     German
     Italian
     Spanish
     French
     Japanese
Type the name of a language from the list that you want to translate from: Japanese
 
Type the name of a language from the list that you want to translate to: english
 
Type the text that you want to translate:  こんにちは
 
The translation is--->  Hello

もちろん単語ではなく文章も翻訳できます。

python MTPythonSampleCode.py
 
   Language List
     English
     German
     Italian
     Spanish
     French
     Japanese
Type the name of a language from the list that you want to translate from: Japanese
 
Type the name of a language from the list that you want to translate to: English
 
Type the text that you want to translate:  私はAzureが好きです。
 
The translation is--->  I like Azure.
 

料金

200万字までは無料のプランで使用することができます。
使用する量に応じて料金が発生しますが、翻訳ロジックを簡単に使用できるのはとてもうれしいですね。

https://azure.microsoft.com/ja-jp/pricing/details/cognitive-services/translator-text-api/

まとめ

今回はCognitive Servicesの中からTranslator Text APIを使ってみました。
Translatorには他にもTranslator HUBというものがあり、こちらだと学習させながら精度を上げることが可能になります。
Translator HUBについてはまたどこかで。