はてなブックマークはロングテールになっているか

前エントリでソートしたホットエントリーを眺めてみると,上位と下位のブックマーク数に大きな差があるようです.
グラフにしてみると,いわゆるロングテールの形状になっていて,
しかもテール部分のブックマーク総数の方が,1割弱大きいことが分かりました.

ホットエントリーでも100倍近い差がある

ブックマーク数順でソートした2010年分のホットエントリーを見てみます.
最小で50users,最大で5151usersのブックマーク数となっており,100倍近い差があります.
まあ,50もブクマしてもらえれば充分という気もしますが...

$ head -5 output/part-r-00000
50	Xbox360「アイドルマスター2」2011年春発売を発表--5年越しのナンバリング新作ついに登場! - GameSpot Japan	http://japan.gamespot.com/news/story/0,3800076565,20416188,00.htm
54	【速報】ドイツ優勝決定 クローゼ神:アルファルファモザイク	http://alfalfalfa.com/archives/399156.html
59	白待ちユーザー涙目! 7月末発売予定のiPhone 4ホワイトモデルは、数量限定に : ギズモード・ジャパン	http://www.gizmodo.jp/2010/07/_7iphone_4.html
60	海上保安庁のビデオ流出について|田母神俊雄オフィシャルブログ「志は高く、熱く燃える」Powered by Ameba	http://ameblo.jp/toshio-tamogami/entry-10706376846.html
61	痛いニュース(ノ∀`):【邦楽】 オリコンデイリー、アニメ「けいおん!!」OPEDがワンツーフィニッシュ	http://blog.livedoor.jp/dqnplus/archives/1468629.html

$ tail -5 output/part-r-00000
4250	買ってよかったものまとめサイト	http://mono-mono.com/
4390	20歳を過ぎてから英語を学ぼうと決めた人たちへ | The Wisdom of Crowds – JP	http://wisdomofcrowdsjp.wordpress.com/sitemap/english/
4429	Windows XP(Vista)の起動時の長いディスクアクセスは、Windows Updateの履歴が溜まりすぎていたせいだった?! - 全力HP	http://zenryokuhp.com/blog/archives/2010/11/windows_xpwindo.php
4432	やる気に関する驚きの科学	http://www.aoky.net/articles/daniel_pink/dan_pink_on_motivation.htm
5151	世界史講義録	http://www.geocities.jp/timeway/

ロングテール,そういえば実データで見たことない

さて,このデータを見るとグラフにしてみたらどうなるか?と思いますよね.それがこちらです.

※データが多すぎると見づらいので,100位ごとに間引いてプロットしています.


何となくロングテールっぽくなるのではと思っていましたが,その通りと言ってもよいのではないでしょうか.
これまではイメージ図でしか見たことがなく,実データで確認したことはなかったので,新鮮な感じがします.
それにしても,上位数百位までのブックマーク数の伸びは半端ない.

ヘッドとテールはどちらが大きいか

wikipedia:ロングテールによると,ロングテールの上位部分をヘッド,下位部分をテールと呼ぶらしいです.
このヘッドとテールどちらが大きいのか,というのも気になります.
厳密な定義はないのですが,ヘッドを上位20%,テールを下位80%として総ブックマーク数を算出してみました.

class Bookmarks
  def initialize(filename)
    @filename = filename
    @bookmarks = file_to_array
    @users = sort_users
    @boundary = (@users.size * 0.2).round
  end

  def head_users
    @users[0..@boundary].inject(0) { |sum, i| sum + i }
  end

  def tail_users
    @users[@boundary + 1..-1].inject(0) { |sum, i| sum + i }
  end

  private

  def file_to_array
    bookmarks = []
    File.open(@filename) do |file|
      file.each do |line|
        bookmarks << line
      end
    end
    bookmarks
  end

  def sort_users
    @bookmarks.reverse.map { |bookmark| users_at(bookmark) }
  end

  def users_at(bookmark)
    users, *other = bookmark.split("\t")
    users.to_i
  end
end

bookmarks = Bookmarks.new('output/part-r-00000')
puts bookmarks.head_users
puts bookmarks.tail_users


実行すると,

2089666 => ヘッドの総ブックマーク数
2279181 => テールの総ブックマーク数

となり,テールの総ブックマーク数が上回っています.
これはヘッドの109%に相当し,1割弱テールの方が多いことが分かりました.
インターネットのひろがりを感じさせるデータではないでしょうか.