協調フィルタリングを行うライブラリVogoo PHP LIBを使ってみた
· パーマリンク
本家は、Vogoo PHP LIB
以下のページを参考に
・BUKURO-JIN | レコメンド機能を実装する ~Vogoo! PHP Lib~
・ウノウラボ by Zynga Japan: オススメ機能には Vogoo がオススメ
・PHPから使えるレコメンデーションエンジン「Vogoo」 – Sometime PHP
Vogoo自体はライブラリとしてだけではなく一つのシステムとして準備されている
インストール
初期設定
1. ライブラリをダウンロードしWebの公開領域に展開する
2. config.phpに書き込み権限を出す
3. 以下のようなURLにアクセスしインストーラーを起動する
http://domain.jp/path/to/vogoo/install/install.php
※ この際、データを書き込むためにDB接続の情報が必要となる
※ インストーラ的にはMysqlとPostgresqlのみ対応。
※ ただし、インストーラはテーブル作成とconfig.phpへのDB接続情報の書き込みを行っているだけなので、別のものへの展開も可能?
使う
評価を追加する
直接vogooを展開したディレクトリにパスを通すとファイル名的に混乱しそうなので敢えてvogooを展開したディレクトリの一階層上のディレクトリでパスを通しておく。
また、requreしたタイミングでvogoo_classのインスタンスである$vogooがグローバル変数として準備されててしまい、クラス内などで呼ぶとスコープが面倒くさくなってしまうので、requireする直前にglobal $vogooを呼び出して大域スコープに切り替えている。
[経済日記:PHPの変数スコープとクラス - livedoor Blog(ブログ)](http://blog.livedoor.jp/george_george_g/archives/50924096.html)
global $vogoo;
require_once("vogoo/vogoo.php");
// $user_id はint
// $item_id はint
// $rate はfloatで0~1の間を取る
$vogoo->set_rating($user_id, $item_id, $rate);
?>
評価値を再構築する
パスの通し方の問題で、予めcronlinks.phpとcronsloph.phpの中の以下の部分を修正しておく
修正前
: include (“./vogoo.php”);
修正後
: include (“vogoo.php”);
また、本来以下はバッチとして実行する部分となる。以下はあくまでサンプル
global $vogoo;
require_once("vogoo/vogoo.php");
// ここで以下のいずれかを実行
require_once("vogoo/cronlinks.php");
// require_once("vogoo/cronsloph.php");
?>
手動で実行する場合は、設置したディレクトリに移動して
$ php cronlinks.php
レコメンドされている結果を取得する
>|php|
member_get_recommended_items($user_id);
print_r($ret);
?>
||<