Skip to content
はてなブックマークの共起タグを分析します。
Python
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
img
README.md
get_cooccurrence.py

README.md

AnalyseHatenaBookmarkTagCooccurrence

はてなブックマークの共起タグを取得し、ネットワーク表示します。
下図は、「機械学習」タグが付いているWebページをほぼ全ページを取得し、Gephiでタグの共起ネットワーク描画しています。 「機械学習」タグの共起タグすべて 「deeplearning」タグまわり 「協調フィルタリング」タグまわり 「openCV」タグまわり

はてなブックマークからの情報取得

  1. はてなブックマーク情報取得スクリプトの実行

    python get_cooccurrence.py
    

    [注]

    • 細かい設定はコマンドライン引数で渡すことができます。

      python get_cooccurrence.py --help
      
      usage: get_cooccurrence.py [-h] [-d [DEST_URL_LIST]] [-D [DEST_COOCCURRENCE]]
                                 [-s [{entrylist,tag}]] [-q [FEED_QUERY]]
                                 [-f [FEED_MAX]] [-b [BOOKMARK_THRESHOLD]]
                                 [-c [COOCCURENCE_THRESHOLD]]
      
      This script create the CSV describing cooccurrence of tags at Hatena bookmark.
      
      optional arguments:
        -h, --help            show this help message and exit
        -d [DEST_URL_LIST], --dest-url-list [DEST_URL_LIST]
                              directory path where you want to create output CSV for
                              URL list (default: "./url_list.csv")
        -D [DEST_COOCCURRENCE], --dest-cooccurrence [DEST_COOCCURRENCE]
                              directory path where you want to create output CSV for
                              cooccurrence list of tags (default:
                              "./cooccurrence.csv")
        -s [{entrylist,tag}], --feed-target [{entrylist,tag}]
                              feed target for feeding webpages. "entrylist" means
                              getting all entries, and "tag" means getting only
                              entries of tagged query by "--feed-query" (default:
                              "entrylist")
        -q [FEED_QUERY], --feed-query [FEED_QUERY]
                              query for feeding webpages. this parameter make sense
                              only at "--feed-target" is "tag" (default: "")
        -f [FEED_MAX], --feed-max [FEED_MAX]
                              max page for feeding web pages (default: 10000)
        -b [BOOKMARK_THRESHOLD], --bookmark-threshold [BOOKMARK_THRESHOLD]
                              minimum bookmarks for feeding web pages (default: 100)
        -c [COOCCURENCE_THRESHOLD], --cooccurence-threshold [COOCCURENCE_THRESHOLD]
                              minimum cooccurence of tags (default: 10)
      
    • 例1:「機械学習」タグが付いているWebページを対象に5000ページ取得し、共起タグとする共起回数の下限値を3回とする場合は次の通りです。また、出力ファイル名をデフォルト_機械学習としています。

      python get_cooccurrence.py -s tag -q 機械学習 -c3 -f 5000 -d url_list_機械学習.csv -D cooccurrence_機械 学習.csv
      
    • 例2:はてなブックマークがついている新着のWebページを対象に1000ページ取得し、共起タグとする共起回数の下限値を10回とする場合は次の通りです。

      python get_cooccurrence.py -s entrylist -q 機械学習 -c10 -f 1000
      
  2. 共起ネットワークの描画
    以下ではRのigraphライブラリを用いて共起ネットワークを描画します。
    ノード数が1000を超えるくらい大きなネットワークの場合、適切に描画できません。
    この場合、Gephi等のアプリケーションを用いることを推薦します。

    1. Rの実行

      R
      
    2. 共起ネットワークの描画

      library(igraph)
      csvdata <- read.csv("./cooccurrence.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)
You can’t perform that action at this time.