del.icio.usのリコメンデーション生成

del.icio.us ブックマークから、訪問者に対して適切なリストを抽出してリコメンデーションを行うスクリプト

http://www.geocities.jp/stormriders999/delview_ja.html

じつは、もうすでに半年くらい前に作って公開してたのだけど、あまりパーソナライズされたリストが生成されなかったり、異様に動作が重かったりしてあまり使い物にならなかった。その頃はポストのリストを取得する方法しか知らなかったため、del.icio.usJSONリクエストを頻繁に投げさせてポストを大量にダウンロードして、クライアントサイドでごりごりとタグの関連を計算なんて、ちょっとしたマルウェアくさいことをやっていた。

で、その後直接タグクラウドリストのデータが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)
あまりタグされていないタグに重みをつけて、ランダムに選ばれたタグの中からエントリを抽出