だいぶ前になるが、ライブドアのオープンソースレコメンデーションエンジン「Cicindela」の概要とインストールをしたが、今回はもう少し内容について、深くつっこんでみた。
インストールについては、以前の記事、
ライブドアのレコメンデーションエンジン「Cicindela」を試す - ueblog
を参考にしよう。
まずは箱となる、テーブルを用意する。Cicindelaをインストールしたディレクトリ以下の「misc」ディレクトリにあるperlプログラムをたたく。
$ cd misc
$ perl create_init_sql.pl --db_name=sampledb | mysql -u root
これで「sampledb」というインスタンスがmysql上に作成され、雛形となるテーブルが空の状態で作成される。
なお、異なる複数のデータをひとつのCicindelaで処理させることもできる。その場合は別インスタンスを作成し、後述するConfigの設定ファイルで「datasource」を変更することで可能だ。
仕組みをかなり簡単におさらいすると、
というわけだが、2番の集計の仕方がもちろん肝となる。仕組みについては以前のセミナー資料がわかりやすい。
8ページ目あたりが詳しい。
まずやるべきことは、設定ファイルを理解するところからはじまる。
設定ファイルはインストールディレクトリの「lib/Cicindela/Config/_common.pm」にある。
この1ブロックが1集計セットとなる。
「filters」や「recommender」の部分を変更させることによって、同じ元データから違った集計のさせかたができる。
違う元データを扱いたいときは、準備で書いたように別インスタンスを作成して「datasource」を変更させたほうが対応しやすい。
設定については、Cicindelaのマニュアルを参照すること。(まだ未完成のようだが)
あらかじめ何種類かのFiltersとRecommenderが用意されている。もちろん自作も可能。
Filters::
CommonTags
CopyPicks
CropPicks
InverseUserFrequency
ItemSimilarities
PicksExtractor
Ranking
RatingsConverter
RawSQL.pm
SlopeOneDiffs.pm
UserSimilarities
Recommender::
Cascaded
Hybrid
ItemSimilarities
Ranking
SlopeOneDiffs
UserSimilarities
サブクラスも含めると、かなりたくさん用意されている。
ソース中には説明があるものはあるが、マニュアルはまだないので完成に期待。
集計させる元データは、サイトの特性によって違うと思うが、主には、
などが利用できそう。
アイテムとユーザが結びつくデータなら何でも使えそう。
アイテムのカテゴライズとタグ付けもできるので、絞込みも可能。
Cicindelaではカテゴリーとタグの違いは、カテゴリーはアイテムを分類するだけだが、タグはアイテムとユーザを分類する違いがあるようだ。
結局は何のデータをどう集計させて、どうみせるかというところは、自分なりにシナリオを考えないといけないので、そこが一番難しいところであり、面白い部分でもある。
先に紹介してPDFで、実際にライブドアのサービスで利用されている部分の紹介は、かなり参考になるでしょう。
この分野だけでも、会社が存在するくらいなので奥が深い・・・
(5)
(0)
(0)
(0)
Total: 5