Rでネットワーク分析。指定Twitterユーザーのフォロー関係を可視化する。

  • 51
    Like
  • 1
    Comment
More than 1 year has passed since last update.

出力結果

RPlot.png

概要

RでTwitterユーザー間のフォロー/フォロワー関係を調べる。
手始めに、指定ユーザーのフォローリストを取得しグラフ化する。

作業

下記ページの作業を行った。
-> Mining Twitter with R - Tutorial 1: Building a corpus from Twitter data - YouTube
 ※英語注意。台詞は聞き取れなくてもOK。映像だけ見れば、何をやればいいかは分かる。

コード

twitnet.R
library(ROAuth)
library(twitteR)
library(igraph)


#【認証処理】

# 設定情報を取得
twit.consumerKey <- "<あなたのTwitter-API key>"
twit.consumerSecret <- "<あなたのTwitter-API secret>"

# 証明書を取得
setwd(tempdir())
cacert.name <- "cacert.pem"
download.file(url = "http://curl.haxx.se/ca/cacert.pem", destfile = cacert.name)
# OAuth認証
twit.cred<-OAuthFactory$new(consumerKey = twit.consumerKey,
                            consumerSecret = twit.consumerSecret,
                            requestURL = "https://api.twitter.com/oauth/request_token",
                            accessURL = "https://api.twitter.com/oauth/access_token",
                            authURL = "https://api.twitter.com/oauth/authorize")
# ※コマンド実行後、Web画面での認証を求められる。
#   Web画面に表示されるPIN番号をコンソールで入力する。
twit.cred$handshake(cainfo = cacert.name)

# Twitter認証
registerTwitterOAuth(twit.cred)


#【本処理】

# 対象ユーザーの情報を取得
user <- getUser("nezuq", cainfo = cacert.name)
# 対象ユーザーのフォロー対象者の情報を取得
friends <- user$getFriends(cainfo = cacert.name)
friends.df <- twListToDF(friends)
friends.n <- nrow(friends)
users <- c(user, friends)
users.df <- twListToDF(users)
users.n <- nrow(users.df)
# グラフデータを作成
g.data <- cbind(1,2:users.n)
g <- graph.edgelist(g.data)
# グラフを表示
V(g)$name <- users.df$screenName
plot(g, vertex.label = V(g)$name, vertex.size = 10, vertex.label.cex = 0.6, margin = -0.4)

感想

申し訳ないが、TwitterのAPI key/API secretをWebでコピーする時に付いてくる半角スペースはNG。
そのせいで3時間くらい不要な調査を強いられたんだよなぁ。

参考ページ

-> Mining Twitter with R - Tutorial 1: Building a corpus from Twitter data - YouTube
-> R言語でTwitterを操作する : 実験ぶろぐ(仮)試供品
-> Package ‘twitteR’
-> ネットワーク分析をもうちょっと勉強 - でたぁっ 感動と失敗の備忘録