はてなブックマークの関連エントリー機能

nokuno さんのページのコメント欄協調フィルタリングについて議論になっている。というか傍目で見ていて勉強になる。(しましまさんが詳しいコメントをつけている)

先日 PFI とはてなが協力して(3日間の合宿で)ブックマーク推薦エンジンを作ったという話を聞いて、仕事速いなと思っていたのだが、oxy くんが「うまく行かないケース」について書いていたりして、どういうのかと思っていたのだが、今回の O 野原くんのコメント見て「やっぱり」と納得したのであった。

というのも、

ちなみにはてぶの関連エントリは現状、タグベースの協調フィルタリングという形になっているみたいです。コンピュータ記事系とかだと結構うまくいくのですが、上手くいかない場合(特にタグの付け方が比較的自由な記事)では更に他の手法(ユーザーのフィードバックやコンテンツベースの関連も含め)を組み合わせて精度向上しようとしてるところです。

ということだそうだが、たぶんユーザの興味(= ブックマーク集)というのはけっこう色んなトピックが混ざっているものであって、こういう状態からあるトピックのブックマークを推薦したりするのは中々難しいようなのだ。たぶんグラフ理論に詳しい人だとグラフの数学的な性質からなぜ難しいのか分かったりするんじゃないかと思うのだが、自分はそんなに詳しくないので、経験的にはそうである、と言うに止めておく。

で、それを解決するための方法としては2パターンあって、1つは推薦対象のブックマークをきれいなものにすることと、もう1つは被推薦者のブックマークをきれいなものにする、の2パターンである。ここで言う「きれい」というのはブックマークがトピックごとに整然と(階層的になっていてもよいが、1つのページが階層の中で離れた複数の位置に出てくると都合が悪い)分かれていたりすることである。

oxy くんが今回使ったと書いている前者の方法で、「タグがたくさんついた少し古めの専門性の高い記事」というのがそれに当たる。専門性が高いとだいたい同じようなトピックのタグをみんなつけるのと、色んな人がタグをつければつけるほど同じトピック内での他のエントリーとの関係を知ることができるので、精度が上がるのであろう。

後者の方法の一つとしては、oxy くんが考察で書いているように、たとえば被推薦者が最近ブックマークをつけた記事のみを対象に関連エントリを計算する、という方針がある。直近 n 個のエントリに限ることによってトピックの数を減らす、というアイデアである。他の方法としてはトピックをクラスタリングなどして適当に分類し、それぞれのクラスタごとに関連エントリを計算する、という方法も考えられる。うまくやらないと全部最終的には「これはひどい」とか「あとで読む」とかのタグ(とあと複数のトピックに分類できてしまう記事)が足を引っ張ってしまうのではないかと予想。

自分が少し使ってみたかぎりでは言われるほどひどくないような気がするのだが、どういう事例がひどい推薦になっているのだろう……