Rからtwitterを操作できる「twitterR」パッケージは他パッケージとの連携がシビアで、気がつくと使えなくなっていることがあります。バージョン1.1.8では公開後に「httr」パッケージが更新されたため、「httr」パッケージのバージョンに注意する必要がありました。
そんな問題を解決した「twitterR」パッケージのバージョン1.1.9が公開されました。本パッケージではツイートの取得、Rからツイートの実行・削除、トレンドワードの取得などが可能です。
パッケージのバージョンは1.1.9、コマンドはR version 3.3.2で確認しています。
Twitter APIの取得
Twitterのアカウントを取得していない方は、まずはアカウントを取得してください。
https://twitter.com/
Twitter Developersにアクセスし、赤枠の「Manage Your Apps」をクリックします。
https://dev.twitter.com/
Twitter Appsが表示されます。赤枠の「Create New App」をクリックします。
Create an applicationが表示されます。赤枠の項目を入力します。Websiteはhttp://karada-good.netで構いません。入力後、画面最下部青枠「Create your Twitter application」をクリックします。注意:applicationを作成するアカウントに電話番号が登録されていない場合はapplicationを作成するアカウントに電話番号を紐つけするようにしてください。
問題がなければRdeTwitterの画面が表示されます。必要な情報を入手するために、赤枠「Keys and Access Tokens」をクリックします。
表示される画面、赤枠のConsumer Key (API Key)、Consumer Secret (API Secret)、Access Token、Access Token Secretが解析に必要です。Access Token、Access Token Secretは画面下部にある「Create my access token」をクリックし作成してください。必要な情報はテキストなどで保存してください。
パッケージのインストール
コマンドを実行することで必要なパッケージがインストールできます。過去に「twitteR」パッケージをインストールしたことがある方は念のため関連パッケージを含め削除することをお勧めします。
#関連パッケージの削除 remove.packages(c("twitteR", "bit64", "rjson", "DBI", "httr")) #パッケージのインストール install.packages("base64enc") install.packages("twitteR")
また、twitteRパッケージに必要な関連パッケージは以下の通りです。
・”twitteR”, 1.19; “bit64”,0.9-5; “rjson”, 0.2.15; “DBI”, 0.3.1; “httr” 1.0.0; “base64enc” 0.1-3
上記パッケージのバージョンが異なる場合は、パッケージのインストール「関連パッケージの削除」を実行し、再度、twitteRをインストールしてください。
なお、パッケージのバージョンは下記コマンドを実行して確認してください。
packageVersion("パッケージ名")
Twitterとの連携
コマンドを実行すると連携が完了します。twitter APIはデータ取得に制限があります。詳細は下記のリンクを参照ください。
公式:Twitterリミット (API、ツイート投稿、およびフォロー)
https://support.twitter.com/articles/249071-twitter-apidm
#ライブラリの読み込み library("twitteR") #情報の入力 consumerKey <- "Consumer Key (API Key)を入力" consumerSecret <- "Consumer Secret (API Secret)を入力" accessToken <- "Access Tokenを入力" accessSecret <- "Access Token Secretを入力" #処理の準備 #httr_oauth_chcheを保存 options(httr_oauth_cache = TRUE) #認証情報の取得 setup_twitter_oauth(consumerKey, consumerSecret, accessToken, accessSecret)
setup_twitter_oauthコマンド実行後に
check_twitter_oauth() でエラー: OAuth authentication error: This most likely means that you have incorrectly called setup_twitter_oauth()'
と表示された場合は、consumerKey, consumerSecret, accessToken, accessSecretの入力ミスの可能性がありますので、確認してください。
windows環境でエラーが表示されて使用できない場合
会社などのネットワークにproxyが設定されている場合、環境変数にproxyサーバーを指定すると問題なく利用できたとお問合せ経由で連絡がありました。
環境変数は盲点かと思います。Rインストール時にカスタマイズでinternet2を指定すれば良いと思っていました。
なお、proxyサーバーに設定するアドレスが不明な場合、社内ネットワークシステムを管理する部署に問い合わせるなどしてください。
追加する環境変数
・HTTP_PROXY
・HTTPS_PROXY
実行コマンドの紹介
実行コマンドは「Twitterとの連携」作業を実施してから実行してください。詳細はコメント、パッケージヘルプを確認してください。
#ユーザーのタイムラインを取得 #例ではからだにいいものを取得 userTimeline(user = "KaradaGood", n = 100) #Rから投稿:updateStatusコマンド #画像も同時にツイートできます #画像ファイルの読み込み #ファイル名に日本語が含まれているとエラーになります library("tcltk") Media <- paste(as.character(tkgetOpenFile(title = "画像ファイルを選択", filetypes = '{"画像ファイル" {".png" ".jpg" ".jpag" ".gif"}}', initialfile = c("*.*"))), sep = "", collapse ="") #twitterへ投稿 NewTw <- updateStatus("2015/07/30 公開\nRでTwitter操作:「twitterR」パッケージ!バージョン1.1.9の紹介\nhttps://www.karada-good.net/analyticsr/r-170/", mediaPath = Media) #Rから投稿の削除:deleteStatusコマンド #updateStatusコマンドと合わせて使用します deleteStatus(NewTw) #キーワードでツイートを検索:searchTwitterコマンド #検索キーワードの設定 SearchWords <- c("シャーロット") #検索 TwGetDF <- twListToDF(searchTwitter(SearchWords, n = 100)) #データを表示 #View(TwGetDF) #TwGetDF #トレンドワードの取得:getTrendsコマンド TrendWords <- data.frame(TrendWord = getTrends(woeid = 23424856)$name) TrendWords TrendWord 1 #tdm1179 2 #akb48ann 3 #木村良平生誕祭2015 4 熊井ちゃん 5 #anime_ore 6 #鶫誠士郎生誕祭2015 7 CUTiE 8 木の進化 9 小瀧望 10 辺野古承認取り消し示唆
日本のwoeid一覧
woeid <- availableTrendLocations() subset(woeid, country == "Japan") name country woeid 192 Kitakyushu Japan 1110809 193 Saitama Japan 1116753 194 Chiba Japan 1117034 195 Fukuoka Japan 1117099 196 Hamamatsu Japan 1117155 197 Hiroshima Japan 1117227 198 Kawasaki Japan 1117502 199 Kobe Japan 1117545 200 Kumamoto Japan 1117605 201 Nagoya Japan 1117817 202 Niigata Japan 1117881 203 Sagamihara Japan 1118072 204 Sapporo Japan 1118108 205 Sendai Japan 1118129 206 Takamatsu Japan 1118285 207 Tokyo Japan 1118370 208 Yokohama Japan 1118550 333 Okinawa Japan 2345896 399 Osaka Japan 15015370 400 Kyoto Japan 15015372 428 Japan Japan 23424856 467 Okayama Japan 90036018
参考:キーワードで検索したツイートの結果をワードクラウドで出力する。
最近はまっている、アニメ「シャーロット」のツイートのタグクラウドです。
なお、データのクリーニングはしていません。
RMeCabのインストール方法はこちらから。
・テキストマイニングとタグクラウド
https://www.karada-good.net/analyticsr/r-10/
library("RMeCab") library("wordcloud") SearchWords <- c("シャーロット") TwGetDF <- twListToDF(searchTwitter(searchString = SearchWords, #検索キーワード n = 1000 #取得するツイート数 #since = YYYY-MM-DD #取得する期間 )) ###単語の出現数設定。20以上での抽出結果となります。出現数は適時調整してください。##### WordFreq <- 30 ######## ###単語解析###### res <- docMatrixDF(TwGetDF[, 1], pos = c("名詞", "形容詞", "動詞")) #windowsは下記コマンドで結果の文字化けを防ぐことができます。 res <- docMatrixDF(iconv(TwGetDF[, 1], from = "utf-8", to = "cp932"), pos = c("名詞", "形容詞", "動詞")) res <- res[row.names(res) != "[[LESS-THAN-1]]", ] #[[LESS-THAN-1]]の削除 resc <- res[row.names(res) != "[[TOTAL-TOKENS]]", ] #[[TOTAL-TOKENS]]の削除 ######## ###単語解析結果をデータフレーム化##### AnalyticsFileDoc <- as.data.frame(apply(resc, 1, sum)) #単語の出現数を集計 AnalyticsFileDoc <- subset(AnalyticsFileDoc, AnalyticsFileDoc[, 1] >= WordFreq) #出現数で抽出 colnames(AnalyticsFileDoc) <- "出現数" #行名の設定 ######## ###タグクラウドのテキストの色を設定##### Col <;- c("#deb7a0", "#505457", "#4b61ba") #文字色の指定 ######## ###タグクラウドのプロット##### #par(family = "HiraKakuProN-W3") #実行でMACの文字化け防止 wordcloud(row.names(AnalyticsFileDoc), AnalyticsFileDoc[, 1], scale = c(6, .2), random.order = T, rot.per = .15, colors = Col) ########
出力結果
少しでも、あなたのウェブや実験の解析が楽になりますように!!