「蜜蜂と遠雷」というキーワードと一緒にツイートされる作曲家をRで集計
「蜜蜂と遠雷」に関するネタ分析を行ってみた。
「蜜蜂と遠雷」について
「蜜蜂と遠雷」は恩田陸による長編小説です. ピアノコンクールの出場者を題材とした作品で、 10/4から映画が公開されています. 大まかな内容はというと、ピアノコンクールの出場者を題材(Wikipedia)に、 クラシック音楽(特にピアノ曲)が登場する作品となっているようです。
そのため、「蜜蜂と遠雷」というキーワードを含むツイートの中には、クラシック音楽の作曲家の名前が含まれると推測できます。 今回の記事では、この推測について簡単に検証してみることにします。
分析結果
「蜜蜂と遠雷」を含む直近1万ツイートを取得し(Twitter APIのRラッパー{rtweet}
を利用)、
そのツイート本文中に含まれる固有名詞を抽出してみたところ出現回数Top20は以下のようになった.
キーワードを見てみると、次のようなことがわかる.
- トップは「https」で、Webページリンクが頻繁にツイートされていると思われる.
- 映画版の出演者の苗字である「松岡」(松岡茉優)と「松坂」(松坂桃李)がそれぞれ2番目と5番目にランク入り.
- 原作者名に関連した「恩田」と「陸」がそれぞれ3番目と4番目にランク入り.
また、作曲者の名前としてはロシアの作曲家「プロコフィエフ」が16番目にランクインしていた。
その他「蜜蜂と遠雷」というキーワードと一緒にツイートされる作曲家
トップ20には入らなかった作曲家も追加で調べてみた. 作曲家名一覧のデータが欲しかったが、あいにく手持ちの良いデータがなかったため Wikipedia)から拝借した.
抽出結果は次のようになった。 抽出方法があまり良くないため解釈が困難なワードが散見されるが、最も出現回数の多い「プロコフィエフ」の他に、 「ドビュッシー」や「ショパン」などのピアノ曲で有名な作曲家の名前が一緒にツイートされているようだ.
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)