LINQ で遊ぶ,はてブエントリ数と Zipf 分布

はてブのエントリ数とブックマークカウントの関係

先日の『ソートと統計』でロングテールな話が出てきたので,ふと思い付いて,はてブのエントリ数とブックマークカウントの関係を調べてみました.例えば「100 人からブックマークされているエントリは何個あるか?」を人数を変えながらプロットしてみよう,という感じの話です.
ぴったりの Web Service API が見つからなかったので,以下のようにブラウザ向けのページから直接データを頂いてきてしまいました.例えば,

「コンピュータ」カテゴリのはてなブックマーク,人気順ソート,先頭 10000 スキップ
http://b.hatena.ne.jp/entrylist?cname=elec&sort=count&of=10000

こんな感じで,of のパラメータをずらしていけば被ブックマーク数でソートされたエントリリストを 50 件ずつ得ることができます.

材料目録

今回は Web 系のプログラミングの練習も兼ねて,使ってみたかったツールやライブラリを組み合わせて作ってみました*1

結果

以下,『「コンピュータ」カテゴリで X 人からブックマークされている記事は全部で Y 件なグラフ (2008年2月27日版)』です.横軸被ブクマ数.縦軸それだけブクマされている記事の数.

いい感じに直線ぽいですね.まあ log-log plot にすると,そこそこずれていてもそれっぽく見えるというのはありますが.
たった 1 人だけがブックマークしているエントリが「コンピュータ」カテゴリの全ブックマーク中の 64.5% もあるとか,人気順に 50 件表示したときに,一画面の中で違う順位のエントリが並ぶにはだいたい被ブクマ数 100 users を超えなきゃいけないとか,分かっても役には立たないけどなんか分かった気になる数字がたくさんです.
あとまあ,普段見慣れた「被ブクマ数でソートして表示」が,いかに偏った分布を扱っているか実感していただけるのではないかと.

Northwind にさよならを

2 年ぐらい色々な技術セミナーで LINQ のセッションを聞いてきて思うのですが「皆さんいい加減 Northwind 社の顧客リストとかうんざりですよね!」 なんかもっと眠気が覚めるデータ使えば良いのになぁと常々思ってます.
ドキドキするようなネタで,「○○を××した数字,どれぐらいになるでしょー?」「では計算してみますねー」を延々 1 時間ぐらいプレゼンしていれば,内容はよく分からなくてもとりあえず手を出してみようかという気にもなるでしょう.
逆に技術の話を延々聞かされたとしても,家に帰ってさて LINQ を試してみようと思ったときに,「はて何のデータにクエリをかければいいんじゃろ」と悩むわけです.
今の世の中,企業が公開している情報や,官公庁が公開している情報,Web Service が公開している情報,色々面白いソースはたくさんあるのですが,どれも「さあ LINQ でクエリをかけよう」の一歩手前にある感じです.今後数年の課題はその辺でしょうなぁ.
せめてもの協力ということで,今回使ったデータを XML 形式で以下に置いておきます.LINQ はだいぶ慣れてきたけど手頃なデータが無くて困る,という方はどうぞです.

最後になりましたが,ごりごりクロールしちゃって,はてなさんごめんなさい.

*1:C#でスクレイピング - DENKEN』を参考にさせていただいています