RでTwitter操作:「twitterR」パッケージ!バージョン1.1.9の紹介


投稿日: Rの解析に役に立つ記事

Rからtwitterを操作できる「twitterR」パッケージは他パッケージとの連携がシビアで、気がつくと使えなくなっていることがあります。バージョン1.1.8では公開後に「httr」パッケージが更新されたため、「httr」パッケージのバージョンに注意する必要がありました。

そんな問題を解決した「twitterR」パッケージのバージョン1.1.9が公開されました。本パッケージではツイートの取得、Rからツイートの実行・削除、トレンドワードの取得などが可能です。

パッケージのバージョンは1.1.9、コマンドはR version 3.2.3で確認しています。

Twitter APIの取得

Twitterのアカウントを取得していない方は、まずはアカウントを取得してください。
https://twitter.com/

Twitter Developersにアクセスし、赤枠の「Manage Your Apps」をクリックします。
https://dev.twitter.com/
no1

Twitter Appsが表示されます。赤枠の「Create New App」をクリックします。
no2

Create an applicationが表示されます。赤枠の項目を入力します。Websiteはhttp://karada-good.netで構いません。入力後、画面最下部青枠「Create your Twitter application」をクリックします。注意:applicationを作成するアカウントに電話番号が登録されていない場合はapplicationを作成するアカウントに電話番号を紐つけするようにしてください。
no3

問題がなければRdeTwitterの画面が表示されます。必要な情報を入手するために、赤枠「Keys and Access Tokens」をクリックします。
no4

表示される画面、赤枠のConsumer Key (API Key)、Consumer Secret (API Secret)、Access Token、Access Token Secretが解析に必要です。Access Token、Access Token Secretは画面下部にある「Create my access token」をクリックし作成してください。必要な情報はテキストなどで保存してください。
setting


パッケージのインストール

コマンドを実行することで必要なパッケージがインストールできます。過去に「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サーバーを指定すると問題なく利用できたとsagatさんからお問合せ経由で連絡がありました。

環境変数は盲点かと思います。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("名詞", "形容詞", "動詞"))
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)
########

出力結果
newcloud


少しでも、あなたのウェブや実験の解析が楽になりますように!!

スポンサードリンク

おすすめコンテンツ


スポンサードリンク