一日一膳(当社比)

RとJavaと時々数学

「蜜蜂と遠雷」というキーワードと一緒にツイートされる作曲家をRで集計

蜜蜂と遠雷」に関するネタ分析を行ってみた。

蜜蜂と遠雷」について

蜜蜂と遠雷恩田陸による長編小説です. ピアノコンクールの出場者を題材とした作品で、 10/4から映画が公開されています. 大まかな内容はというと、ピアノコンクールの出場者を題材(Wikipedia)に、 クラシック音楽(特にピアノ曲)が登場する作品となっているようです。

そのため、「蜜蜂と遠雷」というキーワードを含むツイートの中には、クラシック音楽の作曲家の名前が含まれると推測できます。 今回の記事では、この推測について簡単に検証してみることにします。

分析結果

蜜蜂と遠雷」を含む直近1万ツイートを取得し(Twitter APIのRラッパー{rtweet}を利用)、 そのツイート本文中に含まれる固有名詞を抽出してみたところ出現回数Top20は以下のようになった.

f:id:kimigayoseishou:20191013191622p:plain
蜜蜂と遠雷」を含むツイート(直近1万ツイート)」内に含まれる固有名詞トップ20

キーワードを見てみると、次のようなことがわかる.

  • トップは「https」で、Webページリンクが頻繁にツイートされていると思われる.
  • 映画版の出演者の苗字である「松岡」(松岡茉優)と「松坂」(松坂桃李)がそれぞれ2番目と5番目にランク入り.
  • 原作者名に関連した「恩田」と「陸」がそれぞれ3番目と4番目にランク入り.

また、作曲者の名前としてはロシアの作曲家「プロコフィエフ」が16番目にランクインしていた。

その他「蜜蜂と遠雷」というキーワードと一緒にツイートされる作曲家

トップ20には入らなかった作曲家も追加で調べてみた. 作曲家名一覧のデータが欲しかったが、あいにく手持ちの良いデータがなかったため Wikipedia)から拝借した.

抽出結果は次のようになった。 抽出方法があまり良くないため解釈が困難なワードが散見されるが、最も出現回数の多い「プロコフィエフ」の他に、 「ドビュッシー」や「ショパン」などのピアノ曲で有名な作曲家の名前が一緒にツイートされているようだ.

f:id:kimigayoseishou:20191013191839p:plain
蜜蜂と遠雷」というキーワードと一緒にツイートされた作曲家

Rコード

分析に使ったRコードを貼っておきます. もっと手際の良い方法などありましたら、教えてくださると管理人は泣いて喜びます.


#'R+Twitter
#'rtweet R documentation
#'https://cran.r-project.org/web/packages/rtweet/rtweet.pdf
library(rtweet)
library(tidyverse)
library(RMeCab)
library(rvest)

#tweet取得(日本標準時の列created_at.JST(1時間刻み)を追加している)
data <- search_tweets("蜜蜂と遠雷", n = 10000, include_rts = FALSE) %>%
    dplyr::mutate(
        created_at.JST = as.POSIXct(stringr::str_sub(created_at, 1, -1), 
                                 format="%Y-%m-%d %H", tz = "Japan"))

#ファイル保存
data$text %>% write(file = '蜜蜂と遠雷_tweets_text.txt')

#「蜜蜂と遠雷」を含んだツイートに現れる固有名詞
freq <- data.frame(as.matrix(RMeCabFreq('蜜蜂と遠雷_tweets_text.txt')))
top_words <- freq %>% 
    dplyr::filter(Info1 == '名詞', Info2 == '固有名詞') %>%
    dplyr::arrange(desc(Freq))

bar_plot.Top20 <- top_words[1:20,] %>% 
    ggplot(mapping = aes(x = reorder(Term, as.numeric(Freq)), y = as.numeric(Freq))) + 
    geom_bar(stat = "identity") + 
    xlab('キーワード') + ylab('出現回数') + 
    ggtitle('「蜜蜂と遠雷」を含む直近1万ツイート内に含まれる\n固有名詞(上位20)') + 
    theme_bw(base_family = 'HiraKakuProN-W3') + 
    coord_flip()
print(bar_plot.Top20)

#作曲家一覧をWikipediaのWebページから取得
#https://ja.wikipedia.org/wiki/クラシック音楽の作曲家一覧_(五十音順)
#{ミドルネーム}・{ラストネーム}が抽出できる
composers <- read_html('https://ja.wikipedia.org/wiki/クラシック音楽の作曲家一覧_(五十音順)') %>%
    html_nodes(css = '#mw-content-text > div > ul > li > a') %>%
    html_attr('title')

#作曲家のラストネームを取得
composers_lastName <- composers %>%
    sapply(function(name) unlist(str_split(name, pattern = "・"))[2]) %>%
    as.character()

#「蜜蜂と遠雷」を含んだツイートに現れる作曲家
top_words_composers <- top_words %>% 
    dplyr::filter(Term %in% composers_lastName)

bar_plot.TopComposers <- top_words_composers %>% 
    ggplot(mapping = aes(x = reorder(Term, as.numeric(Freq)), y = as.numeric(Freq))) + 
    geom_bar(stat = "identity") + 
    xlab('キーワード') + ylab('出現回数') + 
    ggtitle('「蜜蜂と遠雷」を含む直近1万ツイート内に含まれる作曲家') + 
    theme_bw(base_family = 'HiraKakuProN-W3') + 
    coord_flip()
print(bar_plot.TopComposers)