y-matsui::weblog

電子楽器、音楽、コンピュータ、プログラミング、雑感。面倒くさいオヤジの独り言

レコメンドエンジンCicindela

レコメンドエンジンについて調べるにつれ、ライブドアが公開しているオープンソースレコメンドエンジン”Cicindela”が良さげな感じ。
既存のRDBMSでアイテム-アイテムの関連(コレとアレは関係している)を評価したり、ユーザ-アイテム(あなたはコレが好き)の関連を評価したり、ユーザ-ユーザ(アナタはダレソレと似ている)の関連を評価したり。
全文検索のクエリー文字列と、最終的に参照したURLをの関連を取ってみるとか、色々と面白そうなネタが思い浮かぶ。
レコメンドエンジン『Cicindela』を試す
ライブドアのレコメンデーションエンジン「Cicindela」を試す
レコメンデーションエンジンCicindelaをインストールしてみた
Rails + Cicindelaでレコメンデーション付ウェブサイトの構築(1)
Rails + Cicindelaでレコメンデーション付ウェブサイトの構築(2)
Rails + Cicindelaでレコメンデーション付ウェブサイトの構築(3)

WebAPIの解説ページを見ると、出来ることが鮮明に

■データ取得

・「あるユーザがあるアイテムを選択した」
http://[base_url]/record?set=[セット名]&op=insert_pick&user_id=[ユーザid]&item_id=[アイテムid]

・「あるユーザがあるアイテムをに○点の評価をつけた」
http://[base_url]/record?set=[セット名]&op=insert_rating&user_id=[ユーザid]&item_id=[アイテムid]&rating=[評価]

・「あるユーザがあるアイテムにあるタグをつけた」
http://[base_url]/record?set=[セット名]&op=insert_tag&user_id=[ユーザid]&item_id=[アイテムid]&tag_id=[タグid]

・「あるアイテムをあるカテゴリに所属させる」
http://[base_url]/record?set=[セット名]&op=set_category&item_id=[アイテムid]&category_id=[カテゴリid]

※タグとの違いは、タグ←ユーザとの関連を保持、カテゴリ←ユーザとの関連は無し

・「あるユーザがあるアイテムに[興味ありません]マークをつけた」
http://[base_url]/record?set=[セット名]&op=insert_uninterested&user_id=[ユーザid]&item_id=[アイテムid]


■データ削除

・セットしたデータを取り消す
http://[base_url]/record?set=[セット名]&op=delete_pick&user_id=[ユーザid]&item_id=[アイテムid]
http://[base_url]/record?set=[セット名]&op=delete_rating&user_id=[ユーザid]&item_id=[アイテムid]
http://[base_url]/record?set=[セット名]&op=delete_tag&user_id=[ユーザid]&item_id=[アイテムid]&tag_id=[タグid]
http://[base_url]/record?set=[セット名]&op=delete_uninterested&user_id=[ユーザid]&item_id=[アイテムid]
http://[base_url]/record?set=[セット名]&op=remove_category&item_id=[アイテムid]&category_id=[カテゴリid]


■表示

・特定アイテムに対するレコメンデーション(関連アイテム)取得 (=item to item)
http://[base_url]/recommend?set=[セット名]&op=for_item&item_id=[アイテムid]

・特定ユーザに対するレコメンデーション取得 (=user to item)
http://[base_url]/recommend?set=[セット名]&op=for_user&user_id=[ユーザid]

・お隣ユーザ取得 (user to user)
http://[base_url]/recommend?set=[セット名]&op=similar_users&user_id=[ユーザid]


・表示時のオプション
&limit=件数 : 結果の最大件数を指定できます
&category=カテゴリid : 使用しているレコメンダによっては、これを指定することでレコメンデーションの範囲を特定のカテゴリに絞ることができます。