昨日の続き

さて、とりあえずfavりfavられやっている人の環が6000人弱で閉じてしまう件の対策としては、そこに含まれないbookmarkerを追加で探しに行くのがいいわけで。

publicなbookmarkerを探すには単純にブックマークページの一覧に書いてあるユーザーを見に行けばいい。ブクマページのソースを眺めつつ、HTML::TagParserでユーザー名を抽出できるようなスクリプトを作った。ここで出てきたユーザを追加ユーザーとして見に行けるようくだんのスクリプトをちょっとだけ改造。

ブックマークページの一覧で人がいっぱいいるところを探すなら、人気度ランキングで上位のページを見に行けばいい。確率的に1ページから取れる人数が多いから効率が高い。ところでサーバの負荷として考えると1ページの大きさが大きいページを取るのと、1ページの大きさが小さいページをいっぱい取るのではどっちが負荷が高いのかね。よく分からないからまあいいや、ということにして。

であれば、あとは人気順にもらってくればいい。最初ここは注目のエントリの閾値を上げることで持ってこようかと思ったが、ランク別に持ってくれば少しずつ持ってくることが可能っぽいことに気が付いて。

(最初作っていた閾値変更部分をオフセット変更に書き換えた)人気エントリ一覧ページのURLをでっち上げるスクリプトを作って、一覧ページからブクマページへのリンクを抽出するスクリプトに投げて、ブクマページからユーザーを抽出する上述のスクリプトにさらに投げることにした。なにパイプでつなぐだけだ。

で、今さっき*1200ユーザーがエントリ付けてるくらいの人気ページ*2を解析してユーザー一覧を追加したところ。いろいろ試しながらで8000人くらいになっていたところにこの作業を追加したら、一気に20000人くらいが調査範囲になった感じ。*3

ちなみに、母集団15000人くらいの時点のデータでお気に入り人数を元に比較すると、自分をお気に入りに入れている人の把握率は70%〜80%くらい。もちろんprivateな人はマトモな方法ではわかるわけはないけど、googleで検索方法をいろいろ工夫して把握する時の把握率が50%〜60%くらいという印象なので、結構高めにわかるんだな、というのが印象。ていうか6万ユーザーの2割強を把握したら全体の8割が分かる、ってなんか例の法則みたいだね。

ついでに言うと、検索にかかる時間は平均して1人1秒ちょっと、1時間あたり3000人強か。これだけidがあると、検索するのに6時間くらいかかっています。データ構造とか工夫していないのでこれからどんどん時間がかかってくるのではないかと思っていたりも。

あと、1万2千人一気に増えたその時に、(人気エントリはブクマしないという)把握し切れていない新しいIDは50人くらいしか増えなかった。ほとんどの人が人気エントリを1度くらいはブクマしていて、人気エントリだからといってブクマを外す人は少数派、という傍証だと思う。

さらに、最初にスキャンで把握出来た6000人弱*4以外の人、つまり後からすくった人に、被fav数25の人はいなかった。つまりはてブのお気に入りはこの「ブックマーカー6000人倶楽部」でぐるぐる回していることになる、というか、うまく選んだ1割(6000人)のお気に入りを監視していれば、新しい人気ブックマーカーは見つかる、なーんて。もしくはやっぱりb:id:nobodyさんがみんなをつなげてるのかねこのへん。

どんどん調べていってユーザー一覧を作る作業は思った以上に不毛なのでたぶん今後はやらないだろうな。誰か核にして引っ張ってくれば十分、ってことがわかっちゃったわけだし。

*1:これを書いてたのが13時くらいだった

*2:1800ページ(of=36)程度

*3:最終的に5000ページくらい見るつもりだけど、30000人までは行かなそうだな。25000人くらいかと。

*4:実際には5200人くらいなんだが