RでツイッターAPIを使いたい!
MeCabで遊んでみたい!
ということはありませんか?
この記事では、Rを使って人のツイートを可視化する方法を書いています。
こんなものができます。
もしエラーがおきたらteratailで質問してみてください。エンジニアさんやプログラマーさんが教えてくれますよ。
目次!
人のツイートを可視化するまでの目的・環境
今回の目的
どんな単語をよく使っているのかを調べ、頻度が高い単語を大きな文字で表す。
成果物はさっき通り。
実行環境
- Windows10
- RStudio
- MeCabインストール済み
MeCabをインストールしていない方は、【MeCab】を【R】で使えるようにするための【RMeCab】を導入する方法・流れ【Windows編】の記事をみてください。
RでMeCabを使う方法を書いています。
ツイートを可視化する流れ
超具体的に書いているので、長く感じると思います。
実際は簡単なんで心配しないでください。
- TwitterのAPIに登録
- パッケージの導入
- RからTwitterAPIにアクセス
- ツイートの取得
- テキスト部分を取得
- いらない部分の削除
- 文字コード変換
- ファイルの結合と保存
- 名詞・動詞などの残す部分を決める
- 列名の変更
- 一度表にしてみる
- ツイートの可視化
コードを実行していく際、下のようなコードが出るかもしれないけど、気にしないで進んでね。
Warning message:
In strsplit(code, “\n”, fixed = TRUE) :
input string 1 is invalid in this locale
①TwitterのAPIに登録
この記事をごらんください。
②パッケージの導入
必要なパッケージがあります。
一気にインストールしてしまいます。
今回必要なパッケージは、これです。
- “wordcoloud”
- “RColorBrewer”
- “RMeCab”
- “dplyr”
- “stringer”
- “magrittr”
- “twitteR”
- “base64enc”
- “bit64”
- “rjson”
- “DBI”
- “httr”
twitteRのパッケージがエラーを起こす可能性があるため、多くのパッケージを入れています。
まだ入れていないパッケージは、インストールしておいてください。
パッケージの導入方法は、【R】RStudioでパッケージをインストールする方法と読み込みまでの流れ
③RからTwitterAPIにアクセス
TwitterAPIを使うには、次のものが必要となります。
- Consumer Key
- Consumer Secret
- Access Token
- Access Token Secret
わからない方は、【2018年】TwitterのAPIに登録し、アクセスキー・トークンを取得する具体的な方法をご覧ください。
#パッケージの読み込む
library(twitteR)
下に自分のアクセスキー・トークンを入力してね。””は残してね。
consumerKey <- “自分のConsumer Key (API Key)”
consumerSecret <- “自分のConsumer Secret (API Secret)”
accessToken <- “自分のAccess Token”
accessSecret <- “自分のAccess Token Secret”
#認証
options(httr_oauth_cache = TRUE) setup_twitter_oauth(consumerKey, consumerSecret, accessToken, accessSecret)
#”Using direct authentication”が表示されたら成功
【#】がついているところは、コメントだから実行しないで大丈夫。
④ツイートの取得
誰かのツイートを取得していきます。今回はうちのアカウント(@gumimomoko)のツイートを取得します。
(だれのアカウントでも良いけど、やってくれたら嬉しいな)
tweets <- userTimeline(“gumimomoko”, 250)
userTimelineでツイートを取得することができます。
【250】は取得するツイート数です。1000ぐらいまでは、さくさく取得できます。
しかし、ここで得られたツイートには、アカウント名や投稿日時などのいらない情報が含まれているの。
⑤テキスト部分を取得
texts <- sapply(tweets, statusText)
statusTextで、tweetsからテキスト部分を取ろうってことね。
⑥いらない部分の削除
でもまだ、いらない部分があるの。
library(dplyr)
texts %>% head()
2018/02/17時点ではこんな感じになっています。あなたの結果とは違うからね。
なんかいらないものが多いでしょ?そこを削除していきます。
#パッケージの読み込み
library(magrittr)
library(stringr)
#いらない記号(ID・URL・記号)を取り除くことができるASCLL
texts %<>% str_replace_all(“\\p{ASCII}”, “”)
# 欠損値を省く
texts <- texts[!is.na(texts)]
正確に説明するとstr_replace_all(“\\p{ASCII}”, “”)は、(ID・URL・記号)を無に変換しています。
str_replace_all(“A”, “B”)はAをBに変えるというような、印象をもつとわかりやすいでしょう。
⑦文字コード変換
Windowsを使っている方のみ見てね。
TwitterAPI(UTF-8)とWindows(CP932)の文字コードが違うのね。そこを返還していくよ。
texts <- iconv(texts , from = “UTF-8”, to = “CP932”)
iconvは簡単に説明するとこんな感じ。
iconv(文字列, from= “変換前の文字コード”, to = “変換後の文字コード”)
UTF-8 → CP932 にしてるね。
⑧ファイルの結合と保存
取得したツイートは、バラバラになっています。一つのファイルにしてしまいましょう。
# 取得したツイートを一つのファイルにして保存
texts2 <- paste(texts, collapse =””)
# 一時的なファイルを作る
xfile <- tempfile()
#先ほどのファイルに結合したツイートを書きだす
write(texts2, xfile)
paste(texts, collapse =””)でツイートを一つに結語しています。
例えば、paste(“ab”, “cd”)を実行すると”ab cd”ができます。
tempfile()で一時的なファイルを作っています。
write(texts2, xfile) で先ほど作った一時的なファイルに、結合したファイルを書き出しています。
⑨名詞・動詞などの残す部分を決める
とりあえずツイートを一つのファイルにしました。今度は、どこを取り出すかを決めます。
#パッケージの読み込み
library(RMeCab)
cloud <- docDF(xfile, type = 1, pos = “名詞”)
cloud %<>% filter(!POS2 %in% c(“サ変接続”,”非自立”))
docDFは名詞とか動詞とか、単語頻度、Ngram頻度などを表してくれる関数だわ。
今回は名詞を取り除くため、pos = “名詞”にしているよ。
filter(!POS2 %in% c(“サ変接続”,”非自立”))で、サ変接続か非自立を取り除いています。
⑩列名の変更
なんか列名が長いです。View(cloud)を実行で、見ることができるよ。
この黄色の部分の名前を変えていきます。
#列名をFREQにする
cloud %<>% select(everything(), FREQ = starts_with(“file”))
#さっき作った一時的ファイルを消す unlink(xfile)
select(everything()ですべての列を取り出しています。
FREQ = starts_with(“file”))でfileから始める名前の列を指定して、FREQという文字に置き換えています。
unlink(xfile)でさきほど作ったファイルを消しています。
⑪一度表にしてみる
最後に使うので、やってくださいね。
cloud %>% arrange(FREQ) %>% tail(40)
これを実行すると、FREQ(頻度が高い単語)順にした、表を表示することができます。
⑫ツイートの可視化
最後です。
library (wordcloud) wordcloud (cloud$TERM, cloud$FREQ, min.freq = 8,colors = brewer.pal(6,”Set3″))
とりあえず表示がこんな感じになります。(人によって違うよん)
min.freq = 〇はどのぐらいの頻度以上のものを表示するかを表しています。
colors = brewer.pal(6,”Set3″)ではbrewer.pal(使用色数, パレット名)を表しています。
パレット名はこんなに種類があるよ。好きに変えてみてね。
全体的なコード
部分的なコードで見にくい人はこちらを使ってください。パッケージはインストールしたことは前提です。
#③
#パッケージの読み込む
library(twitteR)
下に自分のアクセスキー・トークンを入力してね。””は残してね。
consumerKey <- “自分のConsumer Key (API Key)”
consumerSecret <- “自分のConsumer Secret (API Secret)”
accessToken <- “自分のAccess Token”
accessSecret <- “自分のAccess Token Secret”
#認証
options(httr_oauth_cache = TRUE) setup_twitter_oauth(consumerKey, consumerSecret, accessToken, accessSecret)
#”Using direct authentication”が表示されたら成功
#④ #ツイートの取得
tweets <- userTimeline(“gumimomoko”, 250)
#⑤ #テキストの部分を取得
texts <- sapply(tweets, statusText)
#⑥ #いらない部分の削除
library(dplyr)
library(magrittr)
library(stringr)
#いらない記号(ID・URL・記号)を取り除くことができるASCLL
texts %<>% str_replace_all(“\\p{ASCII}”, “”)
# 欠損値を省く
texts <- texts[!is.na(texts)]
#⑦
#windowsのみ文字コード変換
texts <- iconv(texts , from = “UTF-8”, to = “CP932”)
#⑧
#ファイルの結合と保存
#取得したツイートを一つのファイルにして保存
texts2 <- paste(texts, collapse =””)
# 一時的なファイルを作る
xfile <- tempfile()
#先ほどのファイルに結合したツイートを書きだす
write(texts2, xfile)
#⑨
#名詞・動詞などの残す部分を決める
library(RMeCab)
cloud <- docDF(xfile, type = 1, pos = “名詞”)
cloud %<>% filter(!POS2 %in% c(“サ変接続”,”非自立”))
#⑩
#列名の変更
#列名をFREQにする
cloud %<>% select(everything(), FREQ = starts_with(“file”))
#さっき作った一時的ファイルを消す
unlink(xfile)
#⑪
#表を表示してみる
cloud %>% arrange(FREQ) %>% tail(40)
#⑫
#ツイートの可視化
library (wordcloud)
wordcloud (cloud$TERM, cloud$FREQ, min.freq = 8,colors = brewer.pal(6,”Set3″))
まとめ
- TwitterのAPIに登録
- パッケージの導入
- RからTwitterAPIにアクセス
- ツイートの取得
- テキスト部分を取得
- いらない部分の削除
- 文字コード変換
- ファイルの結合と保存[alert title=”注意”]ここに文章[/alert]
- 名詞・動詞などの残す部分を決める
- 列名の変更
- 一度表にしてみる
- ツイートの可視化
●ゼロから始めるR言語に戻る
参考にした本
RMeCabのパッケージをインストールするところと大まかなTwitterAPIの利用方法は、【Rによるテキストマイニング入門】を参考にさせていただいております。
とてもテキストマイニングをする際に、勉強になる本なので、是非読んでみてください。
データサイエンティストになりたいなら
- データサイエンティストになりたいけど、漠然とRの勉強をしている
もしそうならば、戦略的に勉強しましょう。戦略的に勉強しなければデータサイエンティストになるのは夢のままになってしまう可能性があります。
データサイエンティストになるためのおすすめの勉強方法・講座を3つご紹介します。
①通勤講座でデータサイエンティストの講座を受ける
- ビジネスにデータを活用したいが方法が分からない。
- ビックデータをどう扱えばよいか分からない。
- データサイエンティストになりたいが、どうすればいいのか分からない。
このような場合、データサイエンティスト基礎講座 を受けてるのはどうでしょうか。動画によって、上のような悩みを解決してくれます。
まずデータサイエンティスト
いまなら10%クーポンもありますし、無料の動画もあります。今行動しないと一生やりませんので、もう少し下を見てからで良いのでご覧ください。
▼まずデータサイエンティストの基礎を学ぶ▼
②Udemyのデータサイエンティスト講座を受ける 





「Udemy」も動画で学ぶタイプの講座です。データサイエンティストになるための講座がそこそこあります。
通勤講座とちがうのが安さです。どちらも内容の質が良いことは間違えないのですが、Udenyは安めです。
「自分この部分の知識がないな」と思ったときの補強でも使えますね。一度講座をとって気に入らなかったら、全額返金できます。
▼データサイエンティストの基礎を学んだり、知識の補強をする▼
③データサイエンティスト育成スクールにいく





本気でデータサイエンティストになりたいなら、このスクールに行くのがおすすめです。
データサイエンティストに必要な知識は膨大です。統計学、機械学習、人工知能、データベース、プログラミング、ビジネススキルなどなど。
その知識をデータサイエンティストとしての経験がある先生たちが、オフラインで教えてくれます。
動画です。ご覧ください。
どうですか、めっちゃ良いですよね。ここは他の講座と違うなと思った部分があるのですが、転職支援もしてくれます。
さらに
データサイエンティスト全コースを一括で申し込んでいただいた方のみ、
ブートキャンプ終了時にご満足いただけない場合は受講料を全額返金します。
返金保障もあります。
もしまだ心配な方は説明会もありますので、いって見てください。
- 未経験からデータサイエンティスト目指せる(Rを触っているあなたならもっと安心)
- 返金保障あり
- データサイエンティストに必要な知識を学べる
- オフライン
- データサイエンティスト経験がある先生に質問ができる
- 転職支援あり
もう一度言います。本気でデータサイエンティストを目指すならおすすめです。
▼データサイエンティストになる▼
どれにしますか
①と②の場合はまず基礎を学んで、足りないところを補充して転職という感じです。③は転職支援もあるので安心です。
思いたったときに行動しなければ意味がありません。将来的にデータサイエンティストになりたいなら今すぐ行動しましょう。
データサイエンティストの基礎を学ぶ
→通勤講座のデータサイエンティストの講座を受ける
データサイエンティストの基礎を学んだり、知識の補強をする
→Udemyのデータサイエンティスト講座を受ける
本気でデータサイエンティストを目指す
→データサイエンティスト育成スクールにいく
- Unityを勉強したい
- とりあえずUnityを使ってゲームを作りたい
このような悩みを解決してくれる、アクセス急上昇中のUnityメディア「Unishar-ユニシャー」
Unityでのゲーム開発に役立つことばかりです。