Rでtwitter解析 1、twitteRの設定編

2014.10.01 Author: さー

半期が終わり、人事異動など盛んな時期となりましたが、みなさんは、どうお過ごしでしょうか?

さーです。

異動といえば、香川真司選手がイングランドのマンチェスター・ユナイテッドから古巣のボルシア・ドルトムントに移籍しましたね!
同じく若手でマンUに残ったヤヌザイ選手の処遇をみても移籍して正解だったと考えております。

さて、これから何回かに渡ってRでtwitter解析をしてみようと思います。
Rを採用した理由としては
Rはオープンソースであり、twitter用のAPIであるtwitteRがあります。
また、形態素分析のオープンソースであるmecabとの連携も可能です。


まず今回はインフラを構築します。
具体的には
RにtwitteRをインストールし、twitterに認証連携してTweetを抜き出せるところの確認までを行います。

1、twitteRパッケージをR-3.0.2にインストールしてOauth認証を設定しTweetを取得できるか確認します。

1-1、前提

→認証方式について
twitterやFacebookはOauthという認証方式を採用しています。
OpenID認証は、WebAPI経由でプログラム同士が認証するようなケースには適さないので、
これを解決するために考案されました。

具体的には、WebAPIを利用するWebサービスごとに、WebAPIの認証時にユーザーの認可情報を第三者に渡すサービス(OAuth Service Provider)が発行する「トークン」の認証を取得します。
認証を取得したトークンは、ユーザーが明示的に無効にする、若しくはトークンに設定された有効期限を過ぎない限りは、OAuth Service Providerから認可情報を受け取り、利用者に代っていろいろな情報にアクセスし、変更/追加を行うサービスが何度でも情報にアクセスできるようになっています。

→基盤
OS:windows7 64bit + R-3.0.2
*OS及びRのインストールについては割愛します。

> sessionInfo()

R version 3.0.2 (2013-09-25)

Platform: x86_64-w64-mingw32/x64 (64-bit)

locale:

[1] LC_COLLATE=Japanese_Japan.932 LC_CTYPE=Japanese_Japan.932

[3] LC_MONETARY=Japanese_Japan.932 LC_NUMERIC=C

[5] LC_TIME=Japanese_Japan.932

attached base packages:

[1] stats graphics grDevices utils datasets methods base


1-2、twitteRパッケージをダウンロードする。


> install.packages("twitteR")

今回はtsukubaからダウンロードしました。


1-3、ライブラリを読み込む。


> library(twitteR)

> sessionInfo()

R version 3.0.2 (2013-09-25)

Platform: x86_64-w64-mingw32/x64 (64-bit)

locale:

[1] LC_COLLATE=Japanese_Japan.932 LC_CTYPE=Japanese_Japan.932

[3] LC_MONETARY=Japanese_Japan.932 LC_NUMERIC=C

[5] LC_TIME=Japanese_Japan.932

attached base packages:

[1] stats graphics grDevices utils datasets methods base

other attached packages:

[1] twitteR_1.1.7 rjson_0.2.13 ROAuth_0.9.3 digest_0.6.4 RCurl_1.95-4.1

[6] bitops_1.0-6

色々付随してパッケージが増えます。


1-4、SSLの認証をするため(HTTPSのプロトコル経由で操作)pemファイルをダウンロードしておきます。


> download.file(url="http://curl.haxx.se/ca/cacert.pem", destfile="cacert.pem")


1-5、twitterのOauth認証キーを取得する方法。


Twitterにアプリケーションを登録し、consumerKeyとconsumerSecretを取得しておきます。

手順についてはWEB系ですが下記が見やすいと思いました。

http://techbooster.org/android/mashup/4525/


1-6、Oauth認証開始。


> reqURL <- data-blogger-escaped-api.twitter.com="" data-blogger-escaped-br="" data-blogger-escaped-https:="" data-blogger-escaped-oauth="" data-blogger-escaped-request_token="">accessURL <- data-blogger-escaped-access_token="" data-blogger-escaped-api.twitter.com="" data-blogger-escaped-br="" data-blogger-escaped-https:="" data-blogger-escaped-oauth="">authURL <- data-blogger-escaped-api.twitter.com="" data-blogger-escaped-authorize="" data-blogger-escaped-br="" data-blogger-escaped-https:="" data-blogger-escaped-oauth="">consumerKey <- data-blogger-escaped-br="">consumerSecret <- data-blogger-escaped-br="">twitCred <- data-blogger-escaped-consumerkey="consumerKey,consumerSecret=consumerSecret,
requestURL=reqURL,
accessURL=accessURL,
authURL=authURL)


1-7、セッション開始


> twitCred$handshake(cainfo="cacert.pem")

下記のような画面がでます。

R1_1.jpg

→ oauth_verifierの値の入力待ちの状態のため、このURLをブラウザでたたくと、トークンが取得できます。

R2_1.jpg


→ こうなります。 塗りつぶし箇所に数字の認証番号が表示されます。

R3_1.jpg


→ Rのコンソール上では「連携アプリを認証」を押した時点で下記のように出ます。


R4_2.jpg


→ 枠の中にPINコードを入力することでOauth認証が完了します。


1-8、認証情報をTwitterに登録する。


> registerTwitterOAuth(twitCred)
> [1] TRUE

と返ってくればOKです。

→ただし、認証情報を保存しておかないと都度都度認証が必要になります。


1-9、(そこで)認証情報の保存


> save(twitCred, file="new authentication.Rdata")

→ Rdataファイル名は任意


1-10、次回twitteRを使用する時にはまずTwitterと認証連携します。


> load("new authentication.Rdata")
> registerTwitterOAuth(twitCred)
> [1] TRUE


では、最後にTweetを取得してみましょう。


> searchTwitter( iconv("ウィンドウズ10","CP932","UTF-8"),cainfo="cacert.pem")


これでTweetの中から日本語の「ウィンドウズ10」というキーワードを検索し25個(デフォルト)を取得できます。


以下が獲れたてです!

___________________________________

[[1]]
[1] "nkunijp: RT @engadgetjp: 業務連絡:「そりゃナインじゃない?」および「目がテン」は禁則事項とします。\n(速報:次のウィンドウズはWindows 10\nhttp://t.co/yTeSXYqbWB http://t.co/3PU3E7mEKb"

[[2]]
[1] "FileQBot: マイクロソフト、ウィンドウズ10の試験版発表 - サンケイスポーツ http://t.co/XYk7aNbgEb"

[[3]]
[1] "minipoti: Windowsを使う理由がもはや思いつかない、PCゲームとOfficeのためにWindowsを使う、的な?www RT @jijicom 「ウィンドウズ10」発表=法人利用重視、来年発売−米MS http://t.co/UHss5AhdJ4"

[[4]]
[1] "d_maeno1: 2014-10-01 13:30:01 - 円相場 堂上剛 コーヒーの日 テトリス 天下一品 tdn 日本酒の日 ウィンドウズ10 新十両 digitalian"

[[5]]
[1] "questiontime_bm: ウィンドウズ2000が全く忘れられている? / 他4コメント http://t.co/doDJibUBNX “次は「ウィンドウズ10」、数字飛ばして跳躍表現 | Reuters” http://t.co/TxteKSZdV6"

[[6]]
[1] "HyperUnkoCannon: ウィンドウズ10なのか 9は"

[[7]]
[1] "frontiere0830: マイクロソフト:次期OS「ウィンドウズ10」発表 http://t.co/9DyYzhNgo8 #スマートニュース"

[[8]]
[1] "n2as7um8on5: RT @bp1110: マイクロソフト:次期OS「ウィンドウズ10」発表 - 毎日新聞 http://t.co/WghQuezAAH あえて奇数を飛ばす愚策 ウインドウズのヒットバージョンは皆奇数なのに てか偶数は皆失敗作でしょ"

[[9]]
[1] "toho_innocent: RT @engadgetjp: 業務連絡:「そりゃナインじゃない?」および「目がテン」は禁則事項とします。\n(速報:次のウィンドウズはWindows 10\nhttp://t.co/yTeSXYqbWB http://t.co/3PU3E7mEKb"

[[10]]
[1] "440g: RT @engadgetjp: 業務連絡:「そりゃナインじゃない?」および「目がテン」は禁則事項とします。\n(速報:次のウィンドウズはWindows 10\nhttp://t.co/yTeSXYqbWB http://t.co/3PU3E7mEKb"

[[11]]
[1] "gachinko2: ウィンドウズ10、来年後半発売へ http://t.co/4LwMAqhOPK 最強のアンテナサイトができました!http://t.co/jsORj8R0On"

[[12]]
[1] "ringo_uduyu: RT @engadgetjp: 業務連絡:「そりゃナインじゃない?」および「目がテン」は禁則事項とします。\n(速報:次のウィンドウズはWindows 10\nhttp://t.co/yTeSXYqbWB http://t.co/3PU3E7mEKb"

[[13]]
[1] "tararirarin1: \"@nhk_news: 「ウィンドウズ10」来年発売へ http://t.co/bkzshZNV2E #nhk_news\"\n毎度おんなじこと言ってんな"

[[14]]
[1] "yucha_hottea: 時事ドットコム:「ウィンドウズ10」来年発売=「7」の操作法復活-米MS http://t.co/w7vr7zB6YG @jijicomさんから"

[[15]]
[1] "n2as7um8on5: RT @IdiotsBoy: ウィンドウズ10とか冗談!とか思ってたらほんまやった((((;゚Д゚)))))))\n\nえ、希望の9はすっ飛ばして絶望の偶数ですか・・・・"

[[16]]
[1] "masakichi2001: マイクロソフト:次期OS「ウィンドウズ10」発表 http://t.co/xLhe1lRwzX 9がないん"

[[17]]
[1] "Azusa_Applepai: RT @engadgetjp: 速報:次のウィンドウズはWindows 10、マイクロソフトがプレビュー公開。9をすっとばしていきなり10になりました。イベントからの速報を更新中\nhttp://t.co/HF9NJzEpgM http://t.co/1h0boGb9e9"

[[18]]
[1] "you_suke2003: RT @nhk_news: 「ウィンドウズ10」来年発売へ http://t.co/yxhydOSAN5 #nhk_news"

[[19]]
[1] "tararirarin1: RT @nhk_news: 「ウィンドウズ10」来年発売へ http://t.co/yxhydOSAN5 #nhk_news"

[[20]]
[1] "DISCOVERY2008: あれ9は飛ばすの?w “@nhk_news: 「ウィンドウズ10」来年発売へ http://t.co/KWY4ZAzxe6 #nhk_news”"

[[21]]
[1] "yuu9999kuu: マイクロソフト:次期OS「ウィンドウズ10」発表 http://t.co/cGvpQyIYsi"

[[22]]
[1] "karasumako: マイクロソフト:次期OS「ウィンドウズ10」発表 http://t.co/hQaEC7cynH #SmartNews"

[[23]]
[1] "ali11color: RT @engadgetjp: 速報:次のウィンドウズはWindows 10、マイクロソフトがプレビュー公開。9をすっとばしていきなり10になりました。イベントからの速報を更新中\nhttp://t.co/HF9NJzEpgM http://t.co/1h0boGb9e9"

[[24]]
[1] "kajikohu205: RT @engadgetjp: 速報:次のウィンドウズはWindows 10、マイクロソフトがプレビュー公開。9をすっとばしていきなり10になりました。イベントからの速報を更新中\nhttp://t.co/HF9NJzEpgM http://t.co/1h0boGb9e9"

[[25]]
[1] "_sdk: RT @engadgetjp: 速報:次のウィンドウズはWindows 10、マイクロソフトがプレビュー公開。9をすっとばしていきなり10になりました。イベントからの速報を更新中\nhttp://t.co/HF9NJzEpgM http://t.co/1h0boGb9e9"

___________________

次回は解析に入ります。

ではでは。

名古屋のWebシステム開発・ネットワーク構築会社 コネクティボへ