del.icio.usのリコメンデーション生成
del.icio.us ブックマークから、訪問者に対して適切なリストを抽出してリコメンデーションを行うスクリプト。
http://www.geocities.jp/stormriders999/delview_ja.html
じつは、もうすでに半年くらい前に作って公開してたのだけど、あまりパーソナライズされたリストが生成されなかったり、異様に動作が重かったりしてあまり使い物にならなかった。その頃はポストのリストを取得する方法しか知らなかったため、del.icio.usにJSONリクエストを頻繁に投げさせてポストを大量にダウンロードして、クライアントサイドでごりごりとタグの関連を計算なんて、ちょっとしたマルウェアくさいことをやっていた。
で、その後直接タグクラウドリストのデータがJSONで取ってこれるようになったのを知ったので、やっと改良してみた。かなり精度も上がったはず。
とりあえず del.icio.us へのアクセスは一表示あたり最大4リクエストに抑えており、体感的にも軽くなったかと思うけど、やはりあまり頻繁にリロードを繰り返すと del.icio.us 側にIPではじかれる。まあリクエスト自体はクライアント(ブラウザ)が投げてるので、同時アクセスしている他の人がいたとしてもまったく影響ないはず。
リコメンデーションの仕方にもいろいろモードを設けてみた
- Major tagged entries
- 訪問者およびオーナー共に頻繁にタグしているタグからエントリを抽出
- Major tagged entries, for visitor
- 訪問者が頻繁にタグしているタグからエントリを抽出
- Major tagged entries, for owner
- オーナーが頻繁にタグしているタグからエントリを抽出
- Minor tagged entries
- 訪問者およびオーナー共にあまりタグしていないタグからエントリを抽出
- Minor tagged entries, for visitor
- 訪問者はあまりタグしていないタグの中からエントリを抽出
- Minor tagged entries, for owner
- オーナーはあまりタグしていないタグの中からエントリを抽出
- Random
- ランダムに選ばれたタグの中からエントリを抽出
- Random(weighted major)
- 頻繁にタグされているタグに重みをつけて、ランダムに選ばれたタグの中からエントリを抽出
- Random(weighted minor)
- あまりタグされていないタグに重みをつけて、ランダムに選ばれたタグの中からエントリを抽出