第15章 Googleデータ

15.1 はじめに

Googleで特定の単語がどれくらい検索されているのかはGoogleトレンドで調べることができます。

  • 正確には、「検索数」ではなく「ピーク時を100としたときの検索割合」になります。
  • 詳しくはこちらを参照。

また、1800年からの書籍において単語がどの程度使用されてきたのかはGoogle Books Ngram Viewerで調べることができます。

library(tidyverse)
library(gtrendsR)
library(rvest)
library(ngramr)

15.2 時系列トレンド

15.2.1 一つの単語

gtrends()という関数で検索スコアを取ってくることができます。 ここでは、「新型 コロナ」と「マスク」の検索トレンドを調べてみます。

trend <- gtrends(keyword = "新型 コロナ", geo = "JP")
plot(trend)

  • “geo”オプションで地域を指定できます。
trend <- gtrends(keyword = "マスク", geo = "JP")
plot(trend)

15.2.2 複数の単語

しかし、このままでは「新型 コロナ」と「マスク」のそれぞれのピークで100となってしまうので、両者の比較をすることはできません。 そこで、両者を同時に調べてみます。

trend <- gtrends(keyword = c("新型 コロナ", "マスク"), geo = "JP")
plot(trend)

マスクのほうが注目されていることがわかります。

  • ただし、同時に検索できるのは5つまでになります。

15.3 地域別のトレンド

gtrendsの出力の中身を見てみましょう。

str(trend, max.level = 1)
## List of 7
##  $ interest_over_time :'data.frame': 520 obs. of  7 variables:
##  $ interest_by_country: NULL
##  $ interest_by_region :'data.frame': 94 obs. of  5 variables:
##  $ interest_by_dma    : NULL
##  $ interest_by_city   :'data.frame': 400 obs. of  5 variables:
##  $ related_topics     : NULL
##  $ related_queries    :'data.frame': 100 obs. of  6 variables:
##   ..- attr(*, "reshapeLong")=List of 4
##  - attr(*, "class")= chr [1:2] "gtrends" "list"

時系列以外にも地域別のスコアがあるのが分かります。

trend$interest_by_region

グラフにすることもできます。

trend$interest_by_region %>% 
  mutate(location = str_remove(location, " Prefecture")) %>% 
  arrange(location) %>% 
  ggplot() + 
  geom_bar(aes(x = keyword, y = hits, fill = keyword), stat = "identity") + 
  facet_wrap(~location) + 
  theme(axis.text.x = element_text(angle = 90, hjust = 1))

15.4 関連単語

関連検索ワードもあることがわかります。

trend$related_queries
  • related_queriesにはtoprisingがあります。

15.5 検索ヒット数*

ある単語でGoogle検索したときにいくつのウェブサイトにヒットするか知りたいかもしれません。 このような場合は、検索パラメータをいじって検索します。

  • 本格的にRヤPythonからブラウザを操作したい場合はSeleniumを使うとよいでしょう。

具体的には、XXXXという単語を検索したい場合はhttps://www.google.co.jp/search?q=XXXXとすればいいことが分かります。 そこで、今回は新海誠秒速5センチメートルで検索してみようと思います。

html <- html_session("https://www.google.co.jp/search?q=新海誠+秒速5センチメートル",
                     httr::user_agent("Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:75.0) Gecko/20100101 Firefox/75.0"))
## Warning: `html_session()` was deprecated in rvest 1.0.0.
## ℹ Please use `session()` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was generated.
  • 複数の単語で検索する場合は+で繋げます。
  • 自分のPCのブラウザのユーザーエージェントを確認してhttr::user_agent()の中に文字列として入力します。

検索ヒット数はidresultStatsのタグの中にあることが分かるので、数字をパースします。

hits <- html %>% 
  html_node("div#result-stats") %>% 
  html_text() %>% 
  parse_number()
hits
## [1] 254000
  • 実際の結果とは少しずれてしまいます。

15.6 Nグラム

Ngram Viewerの結果は次のように取得することができます。

gngram <- ngram(c("world war", "cold war"))
ggplot(gngram) + 
  geom_line(aes(x = Year, y = Frequency, colour = Phrase))