「EDGE Datasets」使ってみました(Ruby)

2009/01/26

livedoorラボ「EDGE」の「EDGE Datasets」にてlivedoorクリップのデータセットが公開されているので使ってみました。

提供されているCSVファイルを解析して以下の2種類の集計を取ってみます。

タグ別の出現回数を集計

例)

tag_list["hatena"] = 741
tag_list["livedoor"] = 653
tag_list["google"] = 644
タグ別のクリップURLを集計

例)

url_list["検索"] = ["http://www.google.co.jp",
                    "http://www.yahoo.co.jp",
                    "http://www.goo.ne.jp"]
url_list["apple"] = ["http://www.apple.com/jp/",
                     "http://www.applelinkage.com/",
                     "http://japanese.engadget.com/"]

プログラムは以下のようになります(Ruby)。

file = "ldclip_dataset_200812.csv"

tag_list = {}                           # タグ別カウンタ初期化
url_list = {}                           # タグ別URLリスト初期化

File.open(file) {|f|                    # ファイルオープン
  f.each {|line|                        # 1行ずつ処理
    items = line.split(",")             # 1行をカンマで分割
    url   = items[1].sub(/^\"/, "").sub(/\"$/, "")
                                        # URLを取得
                                        # - 両端の"を除去
    tags  = items[3].downcase.sub(/^\"/, "").sub(/\"$/, "").split(" ")
                                        # タグをスペースで分割
                                        # - 小文字に揃える
                                        # - 両端の"を除去

    tags.each {|tag|                    # タグ毎処理
      if tag_list["#{tag}"] == nil      # タグ別カウンタが未設定なら
        tag_list["#{tag}"] = 0          # 0で初期化
        url_list["#{tag}"] = []         # タグ別URLリスト初期化
      end
      tag_list["#{tag}"] += 1           # タグ別カウンタインクリメント
      url_list["#{tag}"].push(url)      # タグ別URLリストにURLを追加
    }
  }
}

上記プログラムで集計データを作成しておき、例えばタグの多い順に表示するには以下のようにすればよく、

tag_list.sort {|key, num| num[1] <=> key[1]}.each {|key, num|
  out = sprintf("%6d : %s", num.to_i, key)
  puts out
}

結果)

   741 : hatena
   653 : livedoor
   644 : google
   623 : ajax
   597 : javascript
    :

また、タグ別URL一覧を表示するには以下のようにすればOKです(重複URLは除去)。

url_list.each {|key, urls|
  puts "[#{key}]"
  urls.uniq.sort.each {|url|
    puts "#{url}"
  }
  puts "\n"
}

結果)

[hack]
http://alectrope.ddo.jp/mt/archives/2006/02/14/windows_ophcrack_livecd
http://arena.nikkeibp.co.jp/tokushu/gen/20051125/114436/index.shtml
http://blog.bulknews.net/mt/archives/001893.html

[newspaper]
http://www.asahi.com/
http://www.mainichi-msn.co.jp/
http://www.nikkansports.com/
http://www.nikkei.co.jp/
http://www.yomiuri.co.jp/

:

他にも切り口によっていろいろな目的に利用できそうです。

このような貴重なデータを公開してくださっているlivedoorさんに改めて感謝です。