テキストマイニング

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

wordcloud

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

MeCabで遊んでみたい!

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

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

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

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

こんなものができます。

R

もしエラーがおきたらteratailで質問してみてください。エンジニアさんやプログラマーさんが教えてくれますよ。

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

今回の目的

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

成果物はさっき通り。

実行環境

  • 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/8/17日更新】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を勉強したい人は是非ご覧ください。...

参考にした本

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

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

¥2,808
(2018/10/17 16:22:54時点 Amazon調べ-詳細)

データサイエンティストになりたいなら

  • データサイエンティストになりたいけど、漠然とRの勉強をしている

もしそうならば、戦略的に勉強しましょう。戦略的に勉強しなければデータサイエンティストになるのは夢のままになってしまう可能性があります。

データサイエンティストになるためのおすすめの勉強方法・講座を3つご紹介します。

①通勤講座でデータサイエンティストの講座を受ける

  • ビジネスにデータを活用したいが方法が分からない。
  • ビックデータをどう扱えばよいか分からない。
  • データサイエンティストになりたいが、どうすればいいのか分からない。

このような場合、データサイエンティスト基礎講座 を受けてるのはどうでしょうか。動画によって、上のような悩みを解決してくれます。

まずデータサイエンティスト の基礎を学んでみて、ビジネススキルが足りなかったらUdemy で勉強するのが良いです。

いまなら10%クーポンもありますし、無料の動画もあります。今行動しないと一生やりませんので、もう少し下を見てからで良いのでご覧ください。

▼まずデータサイエンティストの基礎を学ぶ▼

データサイエンティストの基礎を学ぶ>>

②Udemyのデータサイエンティスト講座を受ける  

「Udemy」も動画で学ぶタイプの講座です。データサイエンティストになるための講座がそこそこあります。

通勤講座とちがうのが安さです。どちらも内容の質が良いことは間違えないのですが、Udenyは安めです。

「自分この部分の知識がないな」と思ったときの補強でも使えますね。一度講座をとって気に入らなかったら、全額返金できます。

▼データサイエンティストの基礎を学んだり、知識の補強をする▼

 Udemyのデータサイエンティスト講座を受ける>>

③データサイエンティスト育成スクールにいく

本気でデータサイエンティストになりたいなら、このスクールに行くのがおすすめです。

データサイエンティストに必要な知識は膨大です。統計学、機械学習、人工知能、データベース、プログラミング、ビジネススキルなどなど。

その知識をデータサイエンティストとしての経験がある先生たちが、オフラインで教えてくれます。

動画です。ご覧ください。

どうですか、めっちゃ良いですよね。ここは他の講座と違うなと思った部分があるのですが、転職支援もしてくれます。

さらに

データサイエンティスト全コースを一括で申し込んでいただいた方のみ、
ブートキャンプ終了時にご満足いただけない場合は受講料を全額返金します。

返金保障もあります。

もしまだ心配な方は説明会もありますので、いって見てください。

  • 未経験からデータサイエンティスト目指せる(Rを触っているあなたならもっと安心)
  • 返金保障あり
  • データサイエンティストに必要な知識を学べる
  • オフライン
  • データサイエンティスト経験がある先生に質問ができる
  • 転職支援あり

もう一度言います。本気でデータサイエンティストを目指すならおすすめです。

▼データサイエンティストになる▼

未経験からデータサイエンティストになる>> 

どれにしますか

①と②の場合はまず基礎を学んで、足りないところを補充して転職という感じです。③は転職支援もあるので安心です。

思いたったときに行動しなければ意味がありません。将来的にデータサイエンティストになりたいなら今すぐ行動しましょう。

データサイエンティストの基礎を学ぶ
通勤講座のデータサイエンティストの講座を受ける  

データサイエンティストの基礎を学んだり、知識の補強をする
Udemyのデータサイエンティスト講座を受ける  

本気でデータサイエンティストを目指す
データサイエンティスト育成スクールにいく

 

ABOUT ME
さぎのみや
さぎのみや
ゲーム開発を手助けるメディア【ユニシャー】を運営しているさぎのみやの個人ブログです。自分の考えや役にたったことを書いております。自分の芯がある人が好きです。→Amazonほしいものリスト
ゲーム開発を手助けるメディア「Unishar-ユニシャー」
  • Unityを勉強したい
  • とりあえずUnityを使ってゲームを作りたい

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

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

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