概要
Rを使用してツイートを取得し、ツイート内にある特定の単語の出現回数をカウントしました。
今回行ったこと
「#グルメ」が入っているツイートを取得し、"ラーメン", "パン", "うどん" のどれが出現回数が多いかを調べました(表記ゆれ対応はなし)
準備
まずは、Twitter Application Management (https://apps.twitter.com/) にログインし、
使用するappを選択。
「Keys and Access Tokens」のタブから
・Consumer Key (API Key)
・Consumer Secret (API Secret)
があるか確認してください。
こちらを使って、ツイートを取得していきます。
ツイートの取得
.R
# ライブラリの読み込み
library(rtweet)
library(devtools)
# tokenの設定
twitter_token <- create_token(app = "XXXX", # 自分で設定したappの名前
consumer_key = "YYYY", #Consumer Keyを入力
consumer_secret = "ZZZZ") #Consumer Secretを入力
# search_tweets("検索したいワード", n=取得したい件数, include_rts=リツイートを取得するかどうか)
rt <- search_tweets("#グルメ", n = 1000, include_rts = FALSE)
# ツイート部分の抽出
target_text <- rt$text
ツイート内の特定の単語の出現回数を集計
"ラーメン", "パン", "うどん"の出現回数を集計する
.R
library(foreach)
library(dplyr)
library(RMeCab)
# 特定の単語の抽出
tweet <- foreach(i=1:nrow(rt), .combine="rbind")%do%{
target_text <- rt$text[i] #i番目のツイート内容を抽出
word <- unlist(RMeCabC(target_text)) #単語ごとに分解
target_word <- word[names(word)=="名詞"] %>% #名詞のみ抽出
as.data.frame()
colnames(target_word) <- "word"
target_word <- target_word %>%
filter(word %in% c("ラーメン", "パン", "うどん")) %>% #特定の単語のみ抽出
mutate(id=i) #ツイート番号を付与
return(target_word)
}
# 1ツイート中のある1単語の発言の上限を1回に揃えて集計
tweet %>%
unique() %>%
group_by(word) %>%
summarise(cnt = n()) %>%
arrange(desc(cnt))
###結果
ラーメンが多かったです。
ラーメン美味しいよね
# A tibble: 3 x 2
word cnt
<fct> <int>
1 ラーメン 41
2 パン 11
3 うどん 6
###その他
rtweetライブラリでは、ユーザ情報やお気に入りの情報など取得できます
.R
# ユーザ情報(ユーザid,自己紹介文など)の取得
users <- users_data(rt)
# usersの6番目の人のfavoを取得してみる
get_favorites(users$user_id[6], n = 30, since_id = NULL, max_id = NULL,
parse = TRUE, token = NULL)