昨日は Build 2016 のニコ生に出演していて、今も寝不足で頭がぼーっとしているのですが、キーノートで発表された Cognitive Services が最高に未来感あって興味をひかれました。
Cognitive Services—APIs for AI Solutions | Microsoft Azure
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 が出てきます。
新規作成のブレードが表示されるので、アカウント名や価格帯、リソースグループなどを選択していきます。重要なのが API type で今回は Recommendations を選びます。
アカウントを作成するとアクセスキーを取得出来ます。これは Recommendations API を叩くのに必要です。
Model を作成
まずは Model を作成するわけですが、Cognitive Services は API をブラウザから簡単に叩ける機能が用意されているので、まずはこれを使って一通りの処理を行いたいと思います。
ドキュメントと API の実行環境からして Swagger っぽいですが Swagger ではないみたいです。Model を作成するにはサイドバーから「Create a Model」を選びます。
modelName と description を入力して、Send を押すと作成が開始されます。Model の作成にはそれなりに時間がかかるみたいなので、途中でブラウザを落としたりしないように注意したいです。
レスポンスに含まれているのが 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 の中身をアップロードします。少しサイズが大きいですが、このくらいならブラウザからでもサクッとアップロードできました。
実行すると処理結果が返ってきます。エラーが出ていなければ問題ないです。
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 を使ってアップロードしたいと思います。
ここでは --data-ascii を使っていますが --data-binary を使わないと失敗します。
それなりにエラーの行も存在しますが、大半が無事にアップロードされているようです。
Model をビルド
これでデータの準備が完了したので、Model のビルドを行って使えるようにします。API は「Create/Trigger a build」となりますが、パラメータが多いのでデフォルトでとりあえず実行します。
非同期でビルドが行われるので、Build id を使ってステータスを確認してみます。
status が Succeeded になればビルド完了です。データ量が多いとそこそこ時間がかかるみたいです。
Recommendations を行ってみる
Recommendation API にはアイテムベースとユーザーベースの 2 種類が用意されています。アイテムベースの場合は catalog でアップロードした item id を指定すると、Recommendation Items が返ってきます。
実際に Office の Item Id を指定して実行すると、以下のようなデータが返ってきました。
とりあえず一通りの流れを確認できたので、今日はここまでにしておきます。本当なら生きたデータを入れて確認したいのですが、やっぱりテストデータを集める方が難しいですね。