azure ai

Web APIでAIを簡単に使う方法 (翻訳機能の実装)【Microsoft Azure Cognitive Services】

先日作ったアプリで英文を日本語訳するときに、Microsoftの提供するAPIを使ったところ簡単に実装できたので紹介します。

React+Webスクレイピング+Azureでアプリを作ってみた話

 

Cognitive Servicesとは

Cognitive Servicesとは多様なクラウドサービスをもつMicrosoft Azureのサービスの1つであり、AIの機能をWeb APIを通して簡単に利用することができるサービスです。

視覚/音声/知識/検索/言語と言った多様なサービスを手軽に利用できます。

視覚

イメージ処理アルゴリズムで、写真をスマートに識別したり、キャプションを追加したり、 モデレートしたりできます。

音声

音声をテキストに変換したり、確認に音声を使用したり、 アプリに話者の認識機能を追加したりできます。

知識

インテリジェントなお勧め機能やセマンティック サーチといったタスクを解決するために、 複雑な情報やデータをマッピングします。

検索

Bing Search APIs をアプリに追加して、1 つの API 呼び出しで 何十億という Web ページやイメージ、ビデオ、ニュースをくまなく調べる機能を実装しましょう。

言語

アプリが、事前に構築済みのスクリプトで自然言語を処理したり、 センチメントを評価したり、ユーザーが望んでいることの認識方法を学習したりできます。

面倒なアルゴリズムの作成や学習データの収集をすることなく手軽にAPIで利用できるのが魅力的です。

UBERやFUJIFILMなどの企業も多数利用しているようです。

各種デモが用意されており、どんなことができるのか確認できます。

EMOTION:感情認識

Computer Vision:画像分析

Language Understanding Service:自然言語理解

Speaker Recognition:話者認識

 

翻訳機能の実装

アプリで利用したのは、「言語」の Translator Text です。

自動的に言語を理解したり、発音を表示したりなど様々な機能があります、今回は翻訳機能を使います。

まずはここからアカウントを登録してください。無料枠があります。

 

ログインするとポータルが表示されると思うので、検索バーに「Translator Text」と検索

出てきた「Translator Text」をクリックするとこんな感じの画面になると思います。

azure search

各項目を記入していきます。

  • Name: 任意の名前
  • サブスクリプション:無料試用版
  • 価格レベル:F0
  • Resource group:新規作成、任意の名前
  • Resource group location:任意

記入できたら「作成」をクリックします。

「全てのリソース」から先ほど作成したものを選択するとこんな画面になると思います。

azure2

真ん中あたりの「Keys」をクリックしてキーを確認しておきます(KEY1, KEY2とありますがどちらでも大丈夫です)

 

pythonのファイルを作成して、以下のコードを入れます。

# -*- coding: utf-8 -*-

import http.client, urllib.parse, uuid, json

# **********************************************
# *** Update or verify the following values. ***
# **********************************************

# Replace the subscriptionKey string value with your valid subscription key.
subscriptionKey = 'ENTER KEY HERE'

host = 'api.cognitive.microsofttranslator.com'
path = '/translate?api-version=3.0'

# Translate to German and Italian.
params = "&to=ja";

text = 'Hello, world!'

def translate (content):

    headers = {
        'Ocp-Apim-Subscription-Key': subscriptionKey,
        'Content-type': 'application/json',
        'X-ClientTraceId': str(uuid.uuid4())
    }

    conn = http.client.HTTPSConnection(host)
    conn.request ("POST", path + params, content, headers)
    response = conn.getresponse ()
    return response.read ()

requestBody = [{
    'Text' : text,
}]
content = json.dumps(requestBody, ensure_ascii=False).encode('utf-8')
result = translate (content)

# Note: We convert result, which is JSON, to and from an object so we can pretty-print it.
# We want to avoid escaping any Unicode characters that result contains. See:
# https://stackoverflow.com/questions/18337407/saving-utf-8-texts-in-json-dumps-as-utf8-not-as-u-escape-sequence
output = json.dumps(json.loads(result), indent=4, ensure_ascii=False)

print (output)

ENTER KEY HEREの部分に先ほどのキーを入れ、text = 'Hello, world!'の所に訳したい英文を入れます。

あとはこのファイルを実行するだけで、以下のように翻訳結果が返ってきます。

[
  {
    "detectedLanguage": {
      "language": "en",
      "score": 1.0
    },
    "translations": [
      {
        "text": "ハローワールド!",
        "to": "ja"
      }
    ]
  }
]

※キーを取得してすぐだとうまく動作しない可能性があります、その場合は15分ほど待ってください

Python以外もあります。→ドキュメント

 

アプリ実装時は、これをFlaskでAPI化して、textに任意の文字列を渡して実行するようにしていました。

このように簡単に実装できるので、もし利用したいAPIが見つかった時はぜひ使ってみてください。

ちなみに通常利用だとそこそこお金がかかると思うのでそこだけ注意して使っていただきたいです。

 

クラウドサービスの活用で快適なアプリ開発を!

 

プログラミング学習で重要なのは「何を作りたいか」を考えること