テキストマイニング

【R】TwitterAPIとMeCabとwordcloud使い、人のツイートの単語出現頻度を可視化する

wordcloud

RでツイッターAPIを使いたい!

MeCabで遊んでみたい!

ということはありませんか?

この記事では、Rを使って人のツイートを可視化する方法を書いています。

みやてん
みやてん
ツイートの可視化?

さぎのみや
さぎのみや
 意味わかんないでしょー 

こんなものができます。

R

人のツイートを可視化するまでの目的・環境

今回の目的

どんな単語をよく使っているのかを調べ、頻度が高い単語を大きな文字で表す。

成果物はさっき通り。

実行環境

  • Windows10
  • RStudio
  • MeCabインストール済み

MeCabをインストールしていない方は、【MeCab】を【R】で使えるようにするための【RMeCab】を導入する方法・流れ【Windows編】の記事をみてください。

RでMeCabを使う方法を書いています。

ツイートを可視化する流れ

超具体的に書いているので、長く感じると思います。

実際は簡単なんで心配しないでください。

  1. TwitterのAPIに登録
  2. パッケージの導入
  3. RからTwitterAPIにアクセス
  4. ツイートの取得
  5. テキスト部分を取得
  6. いらない部分の削除
  7. 文字コード変換
  8. ファイルの結合と保存
  9. 名詞・動詞などの残す部分を決める
  10. 列名の変更
  11. 一度表にしてみる
  12. ツイートの可視化

コードを実行していく際、下のようなコードが出るかもしれないけど、気にしないで進んでね。

Warning message:
In strsplit(code, “\n”, fixed = TRUE) :
input string 1 is invalid in this locale

①TwitterのAPIに登録

この記事をごらんください。

あわせて読みたい
twitter-api
【2018年】TwitterのAPIに登録し、アクセスキー・トークンを取得する具体的な方法【2018/7/25日更新】apiツイッターの投稿を取得したい ツイートを所得したい ということを叶えてくれる、TwitterAPIの登録方法とアクセスキー・トークンを取得する方法を書いています。 TwitterAPIを使えば、様々なことができるようになります。是非、やってみてください。...

②パッケージの導入

必要なパッケージがあります。

一気にインストールしてしまいます。

今回必要なパッケージは、これです。

  1. “wordcoloud”
  2. “RColorBrewer”
  3. “RMeCab”
  4. “dplyr”
  5. “stringer”
  6. “magrittr”
  7. “twitteR”
  8. “base64enc”
  9. “bit64”
  10. “rjson”
  11. “DBI”
  12. “httr”

twitteRのパッケージがエラーを起こす可能性があるため、多くのパッケージを入れています。

まだ入れていないパッケージは、インストールしておいてください。

パッケージの導入方法は、【R】RStudioでパッケージをインストールする方法と読み込みまでの流れ

③RからTwitterAPIにアクセス

TwitterAPIを使うには、次のものが必要となります。

  • Consumer Key
  • Consumer Secret
  • Access Token
  • Access Token Secret

わからない方は、【2018年】TwitterのAPIに登録し、アクセスキー・トークンを取得する具体的な方法をご覧ください。

TwitterAPIにアクセスする

#パッケージの読み込む
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時点ではこんな感じになっています。あなたの結果とは違うからね。

twitterAPI

なんかいらないものが多いでしょ?そこを削除していきます。

いらない記号削除

#パッケージの読み込み
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)の文字コードが違うのね。そこを返還していくよ。

Windowsのみ、文字コード変換

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)を実行で、見ることができるよ。

この黄色の部分の名前を変えていきます。

TwitterAPI
列名変更・ファイル削除

#列名を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(頻度が高い単語)順にした、表を表示することができます。

TwitterAPI

⑫ツイートの可視化

最後です。

wordcloud

library (wordcloud) wordcloud (cloud$TERM, cloud$FREQ, min.freq = 8,colors = brewer.pal(6,”Set3″))

 

とりあえず表示がこんな感じになります。(人によって違うよん)

wprdcloud

min.freq = 〇はどのぐらいの頻度以上のものを表示するかを表しています。

colors = brewer.pal(6,”Set3″)ではbrewer.pal(使用色数, パレット名)を表しています。

パレット名はこんなに種類があるよ。好きに変えてみてね。

wordcloud

全体的なコード

部分的なコードで見にくい人はこちらを使ってください。パッケージはインストールしたことは前提です。

全体コード

#③
#パッケージの読み込む
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″))

まとめ

まとめ

  1. TwitterのAPIに登録
  2. パッケージの導入
  3. RからTwitterAPIにアクセス
  4. ツイートの取得
  5. テキスト部分を取得
  6. いらない部分の削除
  7. 文字コード変換
  8. ファイルの結合と保存[alert title=”注意”]ここに文章[/alert]
  9. 名詞・動詞などの残す部分を決める
  10. 列名の変更
  11. 一度表にしてみる
  12. ツイートの可視化

ゼロから始めるR言語に戻る

あわせて読みたい
R言語
【随時更新】ゼロから始めるR言語【2018/3/30日更新】RとRStudioのインストールからグラフ・図・分析、テキストマイニング、スクレイピングなどをやっていきます。ネットでRを勉強したい人は是非ご覧ください。...

以上さぎのみや(@gumimomoko)でした。今日もあなたの毒を抜きました。少しは体が軽くなりましたか?

Rやデータ関連のこともツイートしているので、是非フォローしてください。

参考にした本

RMeCabのパッケージをインストールするところと大まかなTwitterAPIの利用方法は、【Rによるテキストマイニング入門】を参考にさせていただいております。

とてもテキストマイニングをする際に、勉強になる本なので、是非読んでみてください。

¥2,808
(2018/08/16 18:28:15時点 Amazon調べ-詳細)

ABOUT ME
さぎのみや
さぎのみや
Unity専門メディアである【ユニシャー】→「https://unity-code.com」を運営している人です。大森靖子さんが大好きなので《超書手》と名乗っています。 →Polcaで応援Amazonほしいものリスト
ゲーム開発を手助けるメディア「Unishar-ユニシャー」
  • Unityを勉強したい
  • とりあえずUnityを使ってゲームを作りたい

このような悩みを解決してくれる、アクセス急上昇中のUnityメディア「Unishar-ユニシャー」

Unityでのゲーム開発に役立つことばかりです。

Unity専門メディア「Unishar-ユニシャー」→