読者です 読者をやめる 読者になる 読者になる

しばやん雑記

ASP.NET とメイドさんが大好きなフリーランスのプログラマーのブログ

Microsoft Cognitive Services に含まれる Recommendations API を試してみた

昨日は Build 2016 のニコ生に出演していて、今も寝不足で頭がぼーっとしているのですが、キーノートで発表された Cognitive Services が最高に未来感あって興味をひかれました。

f:id:shiba-yan:20160331231256p:plain

Microsoft Cognitive Services

Cognitive Services には様々な API が用意されていますが、今回は Recommendations API が現実的な需要が多い気がしたので、サンプルコードとドキュメントを見ながら試してみます。

ちなみに Cognitive Service は Azure Portal から作る必要があります。

Recommendations API を使うための手順は以下のようになります。

  • Azure Portal からアカウントを作成
  • Model を作成
  • Catalog をアップロード
  • Usage data をアップロード
  • Model をビルド

こういう API を試すうえで困るのがテストデータですが、公式でサンプルデータが用意されているので、まずはそれを使って試してみます。

Cognitive Services アカウントを作成

Azure Portal の新規作成から Intelligence を選ぶと Cognitive Services APIs が出てきます。

f:id:shiba-yan:20160331231501p:plain

新規作成のブレードが表示されるので、アカウント名や価格帯、リソースグループなどを選択していきます。重要なのが API type で今回は Recommendations を選びます。

f:id:shiba-yan:20160401000158p:plain

アカウントを作成するとアクセスキーを取得出来ます。これは Recommendations API を叩くのに必要です。

Model を作成

まずは Model を作成するわけですが、Cognitive Services は API をブラウザから簡単に叩ける機能が用意されているので、まずはこれを使って一通りの処理を行いたいと思います。

f:id:shiba-yan:20160331231055p:plain

ドキュメントと API の実行環境からして Swagger っぽいですが Swagger ではないみたいです。Model を作成するにはサイドバーから「Create a Model」を選びます。

f:id:shiba-yan:20160331235938p:plain

modelName と description を入力して、Send を押すと作成が開始されます。Model の作成にはそれなりに時間がかかるみたいなので、途中でブラウザを落としたりしないように注意したいです。

f:id:shiba-yan:20160401000948p:plain

レスポンスに含まれているのが Model の Id で、今後の処理に必要となります。メモしておきましょう。

Catalog をアップロード

Model を作成後は Item の情報が含まれた Catalog をアップロードする必要があります。フォーマットは以下の通りで、最初の 3 つは必須の項目となります。

Item Id, Item Name, Item Category, Description, Features list.

注意点としては Item Id はフォーマットが [A-za-z0-9_\-] となっているので、特殊な場合はこのフォーマットに合うように変換する必要がありそうです。

ダウンロードした MsStoreData に含まれている catalog.csv の中身をアップロードします。少しサイズが大きいですが、このくらいならブラウザからでもサクッとアップロードできました。

f:id:shiba-yan:20160401001430p:plain

実行すると処理結果が返ってきます。エラーが出ていなければ問題ないです。

Usage data をアップロード

Usage data も Catalog のように CSV をアップロードしますが、フォーマットは以下のようになっています。User Id と Item Id に使える文字は決まっています。

User Id, Item Id, Time, Event type.

Event type には Click / RecommendationClick / AddShopCart / RemoveShopCart / Purchase が用意されているので、適切なものを選択します。完全に EC 向けの設計ですね。

MsStoreData に含まれている usage ファイルは 2 つありますが、どちらも MB 単位で大きいファイルになるので、ここだけは curl を使ってアップロードしたいと思います。

f:id:shiba-yan:20160401002023p:plain

ここでは --data-ascii を使っていますが --data-binary を使わないと失敗します。

f:id:shiba-yan:20160401002807p:plain

それなりにエラーの行も存在しますが、大半が無事にアップロードされているようです。

Model をビルド

これでデータの準備が完了したので、Model のビルドを行って使えるようにします。API は「Create/Trigger a build」となりますが、パラメータが多いのでデフォルトでとりあえず実行します。

f:id:shiba-yan:20160401003346p:plain

非同期でビルドが行われるので、Build id を使ってステータスを確認してみます。

f:id:shiba-yan:20160401003535p:plain

status が Succeeded になればビルド完了です。データ量が多いとそこそこ時間がかかるみたいです。

Recommendations を行ってみる

Recommendation API にはアイテムベースとユーザーベースの 2 種類が用意されています。アイテムベースの場合は catalog でアップロードした item id を指定すると、Recommendation Items が返ってきます。

f:id:shiba-yan:20160401004351p:plain

実際に Office の Item Id を指定して実行すると、以下のようなデータが返ってきました。

f:id:shiba-yan:20160401004933p:plain

とりあえず一通りの流れを確認できたので、今日はここまでにしておきます。本当なら生きたデータを入れて確認したいのですが、やっぱりテストデータを集める方が難しいですね。