NEXTSCAPE blog

株式会社ネクストスケープの社員による会社公式ブログです。ネスケラボでは、社員が日頃どのようなことに興味をもっているのか、仕事を通してどのような面白いことに取り組んでいるのかなど、会社や技術に関する情報をマイペースに紹介しています。

MENU

Bot × Recommendations APIを試してみたい。~ Recommendations API編~

こんにちは。
最近は園芸にはまっている松永です。誰かおすすめの園芸店をレコメンドしてください。
 
さて、前回はBot × Recommendations APIのBot編を書きました。
今回はRecommendations API編です。
 
Recommendations APIはCognitive ServicesのAPI群の一つで、API経由で簡単にレコメンド機能を実装できるようになっています。今回はサンプルアプリを使って、APIを動かしてみましょう。
 
※尚、2018年2月15日に Recommendations API プレビューは終了します。ご注意ください。
 

f:id:nextscape_blog:20210910201542p:plain

 

 

Recommendations APIの作成



Azure上から作成します。 新規から検索窓に「Recommend」と入力します。 

すると、Recommendations APIが一番上に表示されますので、選択して作成ボタンを押します。 

f:id:nextscape_blog:20210910201612p:plain

名前、サブスクリプション、場所(米国西部のみ)、価格レベル、リソースグループを設定します。 

最後にサービス改善の為にMSが情報を利用する事に同意するチェックを入れた後で、作成を押します。 

これでRecommendations APIが作成されます。 

f:id:nextscape_blog:20210910201630p:plain

 

Recommendations APIを実行してみる

 

Recommendations APIを作ったところで、早速APIを動かしてみましょう。 

Recommendations APIを使ったサンプルがGitHubに用意されています。 

こちらをダウンロードしましょう。

https://github.com/microsoft/Cognitive-Recommendations-Windows

このサンプルでは、レコメンドに使用される学習データのファイルの取得、 ビルド、そしてRecommendationまでが一連の処理の中で行われるようになっています。 

ダウンロードしたら、\Cognitive-Recommendations-Windows\Sample\RecommendationsSample.slnをクリックして、 ソリューションを開きます。 

開きましたら、SampleApp.csを開き、37行目のアカウントキーに先程作成したRecommendations APIのキーを入れましょう。 

尚、Recommendations APIのキーは、Azure上からRecommendations APIを選択し、Keyメニューを開くと記載されています。 

f:id:nextscape_blog:20210910201656p:plain

 

 

キーを入れたら、早速実行をしましょう。 ダイアログが表れて、処理が始まります。 

このデモでは、実行すると、モデルを作成し、/Sample/Resources/配下のファイルを取得してビルドを実行します。 

実行時間は大体30分程度で、ここでモデルID、ビルドIDが生成されます。 

また、モデルとビルドの生成が完了したら、今度はそのままレコメンド処理が走ります。

f:id:nextscape_blog:20210910201719p:plain

 

APIで簡単にレコメンド

 

このサンプルについてもう少し詳しくお話ししましょう。 

このサンプルでは、2種類のレコメンデーションを実施します。 

・Item to Item (I2I)のレコメンデーション 

・User to Item(U2I)のレコメンデーション 

では、このレコメンドをどの処理を行っているかというと、SampleApp.csの206行目のGetRecommendationsSingleRequestメソッドで行われています。 

ここでは、RecommendationsApiWrapperクラスと、モデルID、ビルドIDを引数として渡します。 

尚、RecommendationsApiWrapperクラスは、RecommendationsApiWrapper.csに記載されています。 

肝心のAPIの呼び出しはどこで行っているかというと、212行目と、232行目です。 

212行目のGetRecommendationメソッドではアイテムIDを渡し、 232行目のGetUserRecommendationsメソッドではユーザーIDを渡しています。

f:id:nextscape_blog:20210910201740p:plain

 

この両方ともRecommendationsApiWrapperクラスのメソッドです。 

ではでは、RecommendationsApiWrapper.csを覗いてみましょう。 

342行目からが、I2Iのレコメンドを行うGetRecommendationの定義です。 

uriの生成で、RecommendationsAPIのURLに、モデルIDとアイテムIDを渡しています。 

f:id:nextscape_blog:20210910201757p:plain

 

一方、377行目からのU2Iのレコメンドを行うGetUserRecommendationsでは、アイテムIDの代わりに、ユーザーIDを渡しています。 

f:id:nextscape_blog:20210910201828p:plain

 

渡すパラメータの違いで、I2I、U2Iかを制御しているのです。 後の処理はどちらも同じです。


最後に



いかがでしたでしょうか。 

レコメンドもAPIで手軽にできるようになっています。 

サンプルはすぐに試せるので、興味がある方は試してみてください。