Cognitive Services Containers を利用して ローカルの Docker コンテナで Text Analytics Sentiment を試す


"人工知能パーツ" Web API として提供されている Azure Cognitive Services の一部機能を Docker コンテナにダウンロード、構築して利用できる Azure Cognitive Services Containers が提供開始となりました。(2018年11月現在プレビュー)

ローカル環境の Docker に Cognitive Services の Text Analytics コンテナ―を作成、稼働させて利用する方法を紹介します。

Cognitive Services Container を試すシリーズ

Cognitive Services Containers で利用できるサービス

Computer Vision と Face は 利用リクエストにサインアップ する必要があります。(2018年11月現在)
Text Analytics はすぐに利用できるので、今回はこちらを利用します。

Cognitive Services サービス内容 DockerHub
Computer Vision 活字 OCR - 画像→文字の認識
Face 顔認識
- 顔のパーツの位置 (目, 鼻, 口, ...), 性別/年齢, etc
顔認証(同一人物の判定)
顔識別(DBからの識別)
Text Analytics キーフレーズの抽出 keyphrase
Text Analytics 言語判定 language
Text Analytics センチメント分析 sentiment

Cognitive Services Containers を使ってみる

Docker 環境の準備

今回は Windows 10 上に Dockers for Windows をインストールして使用します。
Windows 版は Windows と Linux コンテナーを利用できますが、Cognitive Services Containers を利用するには Linux コンテナ―環境が必要です。(設定やインストール時のオプションで選択できます)

Cognitive Services Containers を利用できる Docker 環境
Local on Windows*/macOS/Linux (*Windows OS では Linux コンテナ―で利用)
Azure Kubernetes Service
Azure Container Instances
Azure Stack (Kubernetes cluster)

Azure サブスクリプションで Cognitive Services の各サービスを作成する

Azure サブスクリプション

お持ちでない場合は、無料試用版での申し込みを行います。(無料プランを利用するため、従量課金プランでも大丈夫ですが念のため。)

Azure 無料アカウントを今すぐ作成

Text Analytics の作成

Azure Portal を開き、[+新規作成] をクリックして検索欄に Text Analytics と入力して Cognitive Services Text Analytics を検索します。
[作成]をクリックして、Create ブレードを開き、下記のように必要な情報を入力します。

  • Name : (識別しやすいお好みのものを)
  • サブスクリプション(自動入力)
  • 場所 : お好きなAzure Datacenter を選択、ここでは 東日本(Japan East) を選択しています
  • 価格レベル : F0 ※Conntainerで利用する場合は F0 にしておく必要があります(2018年11月現在)
  • Resource Group : (識別しやすいお好みのものを)

入力したら、[作成] をクリックしてサービスを作成します。

Endpoint と Key の取得

サービスを利用するためにアクセスする URL (Endpoint)と Key を取得しておきます。

サービスの作成が完了したら、作成した Text Analytics のサービスを開きます。
メニューの Overview をクリックします。
Endpoint に表示される URL をコピーしてローカルに保存しておきます。


次に Resource Management にある Key をクリックします。
Key1 に表示される文字列をコピーしてローカルに保存しておきます。

Docker 環境にコンテナ―を作成する

Cognitive Services Containers で予め用意されているイメージがあるので、そちらをダウンロードして、稼働させます。

サービス Docker Hub Repository
Keyphrase https://hub.docker.com/r/microsoft/azure-cognitive-services-keyphrase/ mcr.microsoft.com/azure-cognitive-services/keyphrase
Language https://hub.docker.com/r/microsoft/azure-cognitive-services-language/ mcr.microsoft.com/azure-cognitive-services/language
Sentiment https://hub.docker.com/r/microsoft/azure-cognitive-services-sentiment/ mcr.microsoft.com/azure-cognitive-services/sentiment

Cognitive Services Containers のイメージダウンロードと起動

Docker CLI で最新のイメージをダウンロードします。今回は Sentiment をダウンロードして利用してみます。(latest オプションで最新を取得しています)

docker pull mcr.microsoft.com/azure-cognitive-services/sentiment:latest

こちらを以下のオプションで起動します。

  • 1CPU/メモリ 8GB
  • TCP port 5000
  • 終了後にコンテナーを削除

Cognitive Services Containers のパラメーターとして以下を設定します。

  • Billing : Azure Portal で取得した Endpoint (今回は 東日本 を設定)
  • ApiKey : Azure Portal で取得した Key1
docker run --rm -it -p 5000:5000 --memory 8g --cpus 1 mcr.microsoft.com/azure-cognitive-services/sentiment Eula=accept Billing=https://japaneast.api.cognitive.microsoft.com/text/analytics/v2.0 ApiKey=xxxxxxxxxxxxxxxxxxxxxxx

最低限と推奨される CPU とメモリーのスペックは以下になっています

Container 最低        推奨
Keyphrase 1 CPU, メモリー 2GB 1 CPU, メモリー 4GB
Language 1 CPU, メモリー 2GB 1 CPU, メモリー 4GB
Sentiment 1 CPU, メモリー 8GB 1 CPU, メモリー 8GB

無事コンテナーが起動すると、こちらでアクセス可能になります。

http://localhost:5000

Swagger で Web API の定義も確認できます。

Web API としてアクセスする

では、実際に Web API としてアクセスします

POST http://localhost:5000/text/analytics/v2.0/sentiment
ContentType: application/json

Body は下記のようなフォーマットで JSON で記述します。

{
  "documents": [
    {
      "language": "en",
      "id": "1",
      "text": "Hello world. This is some input text that I love."
    },
    {
      "language": "ja",
      "id": "2",
      "text": "おはようございます!今日は良い天気です。"
    }
  ]
}

Postman でアクセスして Status: 200、Sentiment の結果が返ってくれば OK です。

[Ctrl + C] で Docker コンテナーを停止します。