メインコンテンツへスキップ
見出し画像

Twitterの注目されている話題を{wordcloud2}でワードクラウド図にする

    Twitterで今何が人気なのか?何が話題になっているのか?を視覚的に理解したい時、また相手に伝える資料の図が必要な時、ワードクラウド図は美しく有用です。

    今回はrtweetで「レシピ」ツイートを検索・収集し、RT上位のツイートに使われている言葉のワードクラウド図を作成します。これによって今どのようなレシピが流行しているのかを視覚的に理解できる図が得られるはずです。

    こちらのURLを参考にさせていただきました。
    https://miyastyle.net/twitterapi-wordcloud
    本記事ではツイート収集にrtweetを用い、ワード整理周りをちょっと変えています。

    # install.packages("tidyverse")
    require("tidyverse")
    # install.packages("rtweet")
    require("rtweet")
    # install.packages("devtools")
    require("devtools") # wordcloud2をインストールする時のみ必要
    # install_github("lchiffon/wordcloud2")
    require("wordcloud2") # githubからインストールしないとなぜか表示されなかったため
    # あらかじめMeCabをインストールしておきます。http://taku910.github.io/mecab/
    # install.packages("RMeCab", repos = "https://rmecab.jp/R") 
    require("RMeCab")
    
    # tokenの設定
    twitter_token <- create_token(
        app = "****", # 自分で設定したappの名前
        consumer_key = "****", # Consumer Keyを入力
        consumer_secret = "****", # Consumer Secretを入力
        access_token = "****",
        access_secret = "****"
        )
    
    # search_wordの設定 今回は流行レシピを調べます
    x = "レシピ"
    # ツイートの収集 type = "mixed" と include_rts = TRUE でよくリツイートされるツイートを収集します。
    rt <- search_tweets(
        q=x,
        n = 18000, 
        retryonratelimit = FALSE, 
        type = "mixed", 
        include_rts = TRUE
        )
    
    # データの整理
    rt2 <- rt %>%
        distinct(text, retweet_text, .keep_all = TRUE) %>% # 重複リツイートを消す。
        arrange(desc(retweet_count)) %>%
        filter(retweet_count > 100) # リツイート上位100位を抽出
    # テキストデータの準備
    rt2$text <- rt2$text %>%
        str_replace_all(pattern = '\\p{ASCII}',replacement = "") # 記号を消します。
    rt_text <- rt2$text %>% 
        na.omit() %>% 
        iconv(from = "UTF-8", to = "CP932") %>%  # windowsのみEncodeの変更が必要です。
        paste(collapse = "")    # テキストを結合
    textfile <- tempfile()    # 一時ファイルの入れ物を作成
    write(rt_text, textfile) # docDFで読むために一時ファイルを作成
    cloud <- docDF(textfile, type = 1)
    unlink(textfile) # 一時ファイル消去
    cloud <- cloud %>% 
        select(everything(), FREQ = starts_with("file")) %>% # 4列目のfile****....という名前が長いためFREQへ変更
        arrange(desc(FREQ))
    
    # 消したい不要なワードを設定
    exclude_word = c("する","なる","やる","ある","いる","①","②","③","-","♪","NA","NANA","NANANA",x)
    # 動詞と名詞で良い感じのやつを残す
    cloud2 <- cloud %>%
       filter(grepl(pattern = "動詞|名詞", x = POS1) &
              !grepl(pattern = "助動詞|代名詞", x = POS1) &
              !grepl(pattern = "非自立|接尾|数|代名詞", x = POS2)
       ) %>%
       filter(!TERM %in% exclude_word)
    
    # ワードクラウド図を書く
    # Takaoフォント様 https://launchpad.net/takao-fonts
    cloud2 %>%
       select(TERM,FREQ) %>%
       slice(1:100) %>% # 描画する範囲を設定
       wordcloud2(fontFamily = 'Takao Pゴシック', color = "steelblue", minRotation = 0, maxRotation = 0, size = 0.5)

    こんな感じの図が出来ます。

    画像1

    出現頻度の高いワードが大きく表示されています。
    ワードクラウド図にすることで、おうちでも「混ぜる」「入れる」などの調理で「簡単」に「出来る」「作れる」レシピがTwitterで人気だということがすぐに分かります。
    「キャベツ」や「鶏」、「にんにく」などの人気の食材も分かります。
    今現在のTwitterの流行を表せる図が作れるのでベンリで楽しいです。
    レシピ以外の検索ワードでも有用でしょう。
    プレゼンの図としても最適です。


     
     
    趣味でRによる分析をしています。

    あなたへのおすすめ