【準備編】推しのTwitterをテキストマイニングしてみた
外出自粛期間に推しのTwitterをテキストマイニングしてみましたので、【結果編】と【準備編】にわけて、紹介します。こちらは【準備編】です。
目次
- ゴールをどうするか?
- 参考にしたHP
- 手順とコード①~Twitterアカウント作成からTwitterApps登録まで~
- 手順とコード②~テスト抽出~
- 手順とコード③~タイムライン抽出&WordCloudで可視化~
- 手順とコード④~ggplotで品詞ごとにグラフ化~
- 手順とコード④~バイグラム、トライグラムの結果も見てみる~
- 最後に〜実施環境とわーすたの紹介〜
ゴールをどうするか?
推しのTwitterをテキストマイニングすると言っても、ゴールをざっくりでも決めないと前に進みにくかったので、ネットサーフィンしながら以下と決めてみました。
①推しのTwitterを可視化する
②推しの特徴を見つける
③楽しめるレベルで適当にやる
参考にしたHP
テキストマイニングについては完全な素人だったので、以下のサイトを参考にしながらすすめました。特に、明治大学大学院植田麦ゼミさん、Np-Urさんのまとめが参考になりました!ありがとうございました:D
手順とコード①~Twitterアカウント作成からTwitterApps登録まで~
①Twitterアカウント作成
②RとRStudioをインストール
RStudio:rstudio.com/products/rstud…
③RStudioをたちあげて、コンソールから関連パッケージをインストール
install.packages("rtweet")
と入力するとインストールできます。
※インストールしないといけない関連パッケージは分析手法によりますので、必要に応じて、後々追加でインストールすることもできます。
結構面倒なので、以下を参考にして頑張ってください。
ちなみに、登録時にAPIを使う理由とかを記入しないといけないのですが、私は以下のような適当な英語 で適当なことを書いたら、すぐに審査OKのメールが返信されてきました。読み返すとかなり適当すぎて恥ずかしいですね。。。
I want to use twitter AIP for Study for Social research. I'm specialty about Japanese idol culture. First I'll analyze idol Tweet itself. Second I'll analyze idol's relationship each other. Finally I'll analyze idols and Fans relationship.
⑤Twitter Apps登録
以下のHPを参考にして、Twitter Appsを登録してください。なお、Appの名称は半角英数が無難です。日本語、スペース、制御文字は入れない方がいいかと思います。
⑥APPから各種情報API Key、API Secret Key、access_token、access_secretを取得
以下を参考にして、各種情報を取得して、メモ帳とかにコピペしておいてください。後で使います。
messyer813.com/entry/2018/07/…
手順とコード②~テスト抽出~
①抽出してみよう
RStudioのコンソールから以下のコマンドを叩いてみましょう。
library(rtweet)
APPNAME = "XXXXXX"
CONSUMERKEY = "XXXXXX"
CONSUMERSECRET = "XXXXXX"
twitter_token = create_token(
app = APPNAME,
consumer_key = CONSUMERKEY,
consumer_secret = CONSUMERSECRET)
tweet_npur = get_timeline("tws_ririka", n = 10, token = twitter_token)
tweet_npur$text
上手くいくと、こんな感じでわーすたの小玉梨々華さんのツイートが10件抽出されます!今回はわーすたの松田美里さんとの微笑ましいやり取りが3, 4行目に抽出されてますね:D
上手くいかない人は、以下のHPの追記部分が参考になります。
https://www.randpy.tokyo/entry/twitter_api_r
②RMeCabをインストール
以下を参考にしてRMeCabをインストールしてみましょう。ちなみに、自分の場合は、(B) Hombrewでインストールが上手くいかなかったので、(A)のターミナルからのインストールを実施しました。
https://sites.google.com/site/rmecab/home/install
ここまで出来れば準備はおしまいです!!(ヤッター!!長かった!!頑張りましたね!!)
手順とコード③~タイムライン抽出&WordCloudで可視化~
あとは抽出して可視化するだけですが、その前にライブラリのインストールと、有効化をしておきましょう。
①ライブラリのインストール、有効化
install.packages("tm",depenndencies=TRUE)
install.packages("dplyr", dependencies = TURE)
install.packages("purrr", dependencies = TURE)
install.packages("stringr", dependencies = TURE)
install.packages("wordcloud", dependencies = TURE)library(rtweet)
library(tm)
library(RMeCab)
library(dplyr)
library(purrr)
library(stringr)
library(wordcloud)
library(ggplot2)
※rtweetだけは事前にインストールするコードを「手順とコード①の③」で実施しているのでここでは除外してます。また、コマンドが上手く通らないときは、mi(テキストエディタ)等に一度貼り付けてからコピペすると上手くいくときがあります。それでもだめなら手打ちすると通るときがあります。
②タイムライン抽出
以下のコードを実行してみてください。なお、タイムライン取得のところで、n=5000としていますが、これだと過去5000件のつぶやきを抽出してしまうので、はじめは100くらいで実行した方が時間がかからなくて良いかと思います。
# 文字化け防止
par(family = "HiraKakuProN-W3")
tws_ririka_timeline = get_timeline("tws_ririka", n = 5000, token = twitter_token)
# テキスト情報を取得
tws_ririka_timeline_texts = tws_ririka_timeline$text
# 日本語のみ抽出
tws_ririka_timeline_texts_onlyJa = str_replace_all(tws_ririka_timeline_texts, "\\p{ASCII}", "")
tws_ririka_timeline_texts_onlyJa_shiftJis = tws_ririka_timeline_texts_onlyJa %>% iconv(from = "UTF-8", to = "CP932") %>% na.omit()
# 200件のツイートを1つのテキストとしてまとめる
for (i in 1:length(
(tws_ririka_timeline_texts_onlyJa_shiftJis))){
tws_ririka_timeline_all = paste(tws_ririka_timeline_all, tws_ririka_timeline_texts_onlyJa_shiftJis[i], seq = "")}
# あとで使えるように保存
write.table(tws_ririka_timeline_all, "tws_ririka_timeline_texts.txt")
※「tws_ririka_timeline_texts.txt」ファイルをmi(テキストエディタ)でひらいてUTF-8、CRLFで保存すると、この後の手順で エラーが出なくなりました。
③WordCloudで可視化
# 先ほど保存したテキストファイルから形態素解析実行
docDF_mehara = docDF("tws_ririka_timeline_texts.txt", type = 1)
# 名詞情報かつ非自立でないものを抽出
docDF_mehara2 = docDF_mehara %>% filter(POS1 %in% c(“名詞"),POS2 != "非自立")
# Word CLoud実行
wordcloud(docDF_mehara2$TERM
,freq=docDF_mehara2[,4],min.freq=10,scale=c(6,1),family ="HiraKakuProN-W3",colors=brewer.pal(8,"Dark2"))
成功すると以下のような図が表示されます!やったね!!WordCloudでは、頻出ワードが大きく表示されます。結果編に書きましたが、小玉梨々華さんはわーすたというアイドルグループ所属なので、伸ばし棒の「ー」が頻出してますね。
手順とコード④~ggplotで品詞ごとにグラフ化~
WordCloudでは名詞のみ可視化したので、それ以外の品詞も頻度順にグラフ化してみたいと思います。今回は感嘆詞を抽出します。
# 解析対象となるデータの読み込み
res <- RMeCabFreq("tws_ririka_timeline_texts.txt")
# 感動詞だけを取り出してデータフレームres_nounへ
res_noun <- res[res[,2]=="感動詞",]
# 2回以上登場する名詞の数。res[,4]で"Freq"列を参照
nrow(res_noun <- res[res[,2]=="感動詞" & res[,4] > 1,])
# res_nounをFreqで降順ソート
res_noun[rev(order(res_noun$Freq)),]
# 1列目と4列目を抜き出してデータフレームを作成する
res_noun2 <- data.frame(word=as.character(res_noun[,1]),
freq=res_noun[,4])
# 上位25位に絞り込む
res_noun2 <- subset(res_noun2, rank(-freq)<25)
# ggplotでグラフを描画する
ggplot(res_noun2, aes(x=reorder(word,freq), y=freq)) +
geom_bar(stat = "identity", fill="grey") +
theme_bw(base_size = 10, base_family = "HiraKakuProN-W3") +
coord_flip()
成功すると以下のようなグラフが表示されます。結果を見ると、小玉梨々華さんは「ありがとう」って沢山言ってくれる人なんだと分かります。
ここでは感動詞を抽出してみましたが、名詞、動詞、形容詞などを抽出することもできます。また、以下のコマンドを実行すると、どの様な品詞が抽出されたテキストファイルに含まれているのかが分かります。
unique(res$Info1)
こんな感じで、含まれる品詞が分かります。
手順とコード④~バイグラム、トライグラムの結果も見てみる~
結果編には記載しなかったのですが、バイグラム、トライグラムによる分析も実施してみてます。まずはバイグラムから。
# データフレームtextgramへ格納
textgram <- Ngram("tws_ririka_timeline_texts.txt", N = 2, type = 1, pos = c("名詞", "動詞"))
# Freq降順(多い順)でソート、データフレームtextgram_orderへ格納
textgram_order <- textgram[rev(order(textgram$Freq)),]
# 先頭30個を表示
head(textgram_order,30)
結果、以下です。これを見ると「アイス-食べる」がここでも出てきてて、さすが小玉さんって感じですね。
続いて、トライグラムを実施。
# データフレームtextgramへ格納
textgram <- Ngram("tws_ririka_timeline_texts.txt", N = 3, type = 1, pos = c("名詞", "動詞"))
# Freq降順(多い順)でソート、データフレームtextgram_orderへ格納
textgram_order <- textgram[rev(order(textgram$Freq)),]
# 先頭30個を表示
head(textgram_order,30)
以下、結果です。「食べる-焼肉-食べる」と「焼肉-食べる-焼肉」がさすが小玉さんって感じですね!
ちなみに、わーすたには「大志を抱け!カルビアンビシャス! 」という焼肉曲がありますので、紹介させてください。この曲を聴くと焼肉たべたくなります!!
最後に〜実施環境とわーすたの紹介〜
- 実施環境
iMac (27-inch, Late 2012)10.15.5・・・ちょっと古い、そろそろ買い替えたいです
macOS Catalina 10.15.5
R 4.0.1・・・pythonの方が流行りだと思いますが、過去にRっぽいものをつかってたのでこちらにしました
RStudio 1.3.959
MeCab 0.996
- わーすたの紹介
今回、テキストマイニングの対象とさせて頂いた小玉梨々華さんの所属するわーすたの紹介をさせてください。以下、公式HPからの引用です。
アーティスト名:「わーすた」(ざ・わーるど・すたんだーど)
英語表記:「The World Standard」
2015年に結成のデジタルネイティブ世代アイドル。
グループ名は「The World Standard」の略でメンバーは英語、スペイン語、中国語などの語学を勉強している。
現在まで、11か国の国でライブ出演するなど世界に照準を合わせ活動している。
わーすたはavex所属のアイドルで、特徴としては、海外でのお仕事だったり、海外のファンが多いってことが挙げられます。また、ライブがスマホでの動画・写真撮影OKで、ファンによるライブ動画がたくさんアップロードされているのも特徴です。私もわーすたのファンになるまでは、アイドルを応援したことがなかったのですが、ライブ動画を沢山見ているうちに、ライブに行きたくなって、実際ライブに行ったら外国人の友だちができたりして、今ではオタクとして楽しい日々をすごしています。
最後に、推しの小玉梨々華さんの紹介を少しさせてください。
【名前】
小玉梨々華(こだまりりか)
【カラー】
パステルブルー
【誕生日】
2000年10月1日
【血液型】
A
【出身】
北海道
【身長】
161cm
【趣味】
アイスを食べる
【特技】
おえかき
【好きなアーティスト】
back number
2020年6月末日現在の写真とプロフィールですが、写真の衣装に「ありがとう」って書いてありまして、これが今回の感動詞の分析結果の最頻出ワードと一致していたので、嬉しかったですね!小玉さんには隠された特技がありまして、画伯と呼ばれているのですが、とっても素敵な絵をお描きになられるので、ぜひ検索してみてください!