RStudio & NEologdでワードクラウド【W杯】

Twitterのツイートを利用

「RStudio」を「2022.07.2+576」にアップデートしたので、動作確認がてら操作してみました。
twitteR」パッケージを使います。
ただ、GitHubのサイトを見てみると、

This is the start of a relatively leisurely deprecation period for twitteR

geoffjentry/twitteR から

twitteR の比較的緩やかな非推奨期間の始まりです。」と、2016年頃から「rtweet」パッケージを薦めているようです。
(元々グラフ作成に興味があり「R」を使い始めたので、随所に知見不足を実感しています)

##パッケージ呼び出し
library(tidyverse)
library(twitteR)
library(RMeCab) 
library(wordcloud2)

##TwitterAPI認証情報を設定
##事前にTwitterに申請しAPIのアカウントを取得しておく
consumerKey <- "wwwww"
consumerSecret <- "xxxxxx"
accessToken <- "yyyyyy"
accessSecret <- "zzzzzzz"

##TwitterAPIにログイン
options(httr_oauth_cache = TRUE)
setup_twitter_oauth(consumerKey, consumerSecret, accessToken, accessSecret)

つぶやきをデータフレームに

今回、検索キーワードを指定し、ツイートを10000万件取得します。
「RStudio」をアップデートしたのが2022年11月22日と「カタールW杯」開催中だったので、キーワードに「ワールドカップ」を指定しました。

##日本語ツイートを取得。ロケールも指定(日本なら"ja")
tweets1 <- searchTwitter('ワールドカップ', n = 10000, 
  since = "2022-11-22" , lang="ja" , locale="ja")

##データフレームに変換
tweets2 <- twListToDF(tweets2)
#確認
tweets2  %>% head() 
nrow(tweets2)

twListToDF」を使い(上記)データフレームに変換し、ツイートのテキストを取り出します(下記)。

##データフレームのテキスト列だけ抽出
texts1 <- tweets2$text

##テキストとテキストの間にはブランクを入れて結合
texts2 <- paste(texts1, collapse = "") 

解体素解析にRMeCabを使用

RMeCab」で形態素解析をかけました。

##一時ファイルを作り、twfileという名前で保存
twfile <- tempfile()
write(texts2, twfile)

##形態素解析。頻度を集計
##辞書にneologdを使用
tweets3 <- RMeCabFreq(twfile, dic = "/usr/local/lib/mecab/dic/ipadic/mecab-user-dict-seed.20200910.csv.dic")

##固有名詞をピックアップ
tweets4 <- tweets3 %>% filter(Info2 %in% "固有名詞")

「固有名詞」を使うことにしました。
もう少し絞り込みます。

##アルファベットと数字の単語を外したかったのですが、
##アルファベットまたは数字だけで構成する単語の正規表現が
##わからなかったので、今回は「先頭と末尾がアルファベットまたは数字」の単語を外すことにしました

tweets5 <- tweets4 %>% mutate(
    teat1 = str_detect(frq3_Tw2$Term, "^[a-zA-Z_0-9]+[a-zA-Z_0-9]$")
    ) %>% #tibble() %>% 
      filter(!teat1)  #「!」で「FALSE」をピックアップ

ggplot2でトピックワードのグラフ

単語の出現回数を棒グラフで描画します。
回数(Freq)の下限を調整し、「geom_bar」を使って作成します。

##「Freq」が100以上
tw_gg1 <- tweets5$Freq >= 100  #TRUE、FALSEで返す
tw_gg2 <- tweets5[tw_gg1,]
#確認
tw_gg2 %>% arrange(-Freq) %>% head()

##ggplot2描画
par(family = "HiraKakuProN-W3") 
ggplot(tw_gg2 , aes(x=reorder(Term, Freq), y=Freq))+
    geom_bar(aes(y=Freq,fill=-Freq),stat="identity") +
    xlab("")+
    theme_gray (base_family = "HiraKakuPro-W3") +
    geom_text(aes(x=reorder(Term, Freq), y=Freq, label = Freq), hjust=1.3,colour = " white", size = 3) +
    theme(axis.text.x = element_text(size=8), axis.text.y = element_text(size=8)) +
    coord_flip()
2022年11月22日に取得したツイートから作成
2022年11月22日以降のツイートから作成

wordcloud2でワードクラウド

wordcloud2」パッケージを使い、ワードクラウドも作成します。

##ワードクラウド作成

tw_gg2[,c(1,4)] %>% 
    wordcloud2(size=1.5,minSize=1,gridSize=10, shape = 'circle', 
    backgroundColor = 'black', color='random-light') 
ワードクラウド。出現回数が突出している「ワールドカップ」という単語を外しています
ワードクラウド。出現回数が突出している単語の「ワールドカップ」を外しています

W杯日本代表戦のツイートも

今回、ワードクラウドの準備をしている間に、ワールドカップ日本代表戦の日(2022年11月23日)を迎えたので、その日のツイートも取得しました。
同様に作成した棒グラフとワードクラウドです↓。

2022年11月23日以降のツイートから作成
2022年11月23日以降のツイートから作成
同様に出現回数が突出している「ワールドカップ」という単語を外しています
同様に出現回数が突出している「ワールドカップ」を外しています
タイトルとURLをコピーしました