はてブの共起タグをネットワーク表示するには(個人版)
はじめに
はてブのタグについて,共起タグを取得し,ネットワーク表示する方法を簡単に記します.
環境はMacOSX,Firefox, はてブ拡張アドオンインストール済とします.
共起頻度が3回以上のタグ組み合わせをネットワーク表示
共起タグの取得
$ echo "tagA,tagB,freq" > cooccur.csv $ sqlite3 -cmd \ "select T.name, CT.name, count(CT.name) from tags T left join tags CT on T.bookmark_id = CT.bookmark_id and T.id != CT.id where T.name > CT.name group by T.name, CT.name having count(CT.name) >= 3 order by T.name, CT.name;" \ /Users/[username]/Library/Application\ Support/Firefox/Profiles/[hash].default/hatenabookmark/[hatenabookmark_id]/bookmark.sqlite </dev/null \ | tr '|' ',' \ >> cooccur.csv
共起ネットワークの作成
$ R
library(igraph) csvdata <- read.csv("./cooccur.csv", head = T) graphdata <- graph.data.frame(csvdata, directed = F) tkplot( graphdata, vertex.label=V(graphdata)$name, canvas.width = 1200, canvas.height = 700, vertex.size = 0, edge.width=E(graphdata)$freq/4)
結果のグラフは,上図の通り.
おまけ:タグ"Javascript"の共起タグを上位10件取得
$ sqlite3 -cmd \ "select CT.name, count(CT.name) from tags T left join tags CT on T.bookmark_id = CT.bookmark_id and T.id != CT.id where T.name = \"Javascript\" group by CT.name order by count(CT.name) desc limit 10;" \ /Users/[username]/Library/Application\ Support/Firefox/Profiles/[hash].default/hatenabookmark/[hatenabookmark_id]/bookmark.sqlite </dev/null # 例) # node.js|28 # html5|17 # firefox|15 # jQuery|15 # tips|14 # 開発|13 # programming|12 # まとめ|12 # ajax|11 # dom|11