Yelpから日本人好みのラーメン屋を見つけたかった…

モチベーション

米国ではYelpというアプリが食べログの位置づけで使われています。(1.48億のレビュー投稿。ちなみに食べログは2,400万レビュー, 2018年4月時点)
ただ、たまにレビューがアテにならないことがあります。特にラーメン。たぶん味やサービス、コスパへの評価基準が、日本育ちとローカル育ちで異なるためかな〜と思います。(逆に僕も伝統的すぎる!?インド料理店に自分の舌基準で☆1を付けてしまうことがあります)
この記事はそんな過小評価されて平均スコアは低いけれど、実は日本人にウケている隠れた名店の発掘を目指していました。(が、タイトル通りそこに行きつけなかった…)

データ

Yelp公式でデータが配布されています。
MySQLとPostgreSQL対応とのことですが、PostgreSQLだと読み込めず。。
MySQL推奨です。ちなみにER図はこんな感じ。
yelp_dataset_schema.png

アプローチ(当初案)

ステップ1.レビュー投稿者のデモグラは非公開なので、ファーストネームから日本人ユーザを推測する。
ステップ2.営業中かつレビュー数が100を超えているラーメン屋について、日本人とそれ以外でレビューの分布に差があるか確認する。

コード

1. データの読み込み

Yelp公式からSQLデータをダウンロード。上述のとおりPostgreSQLでハマったのでMySQLをセットアップ。
YelpチュートリアルからとべるGUIベースのMySQL設定よりも、MacならHomebrewを使った方がわかりやすいかも。

2. 人気ラーメン屋の確認

ある程度レビュー数がないと分布の差を確認できないのでレビューの多いラーメン屋をリストアップ。

SELECT name, city, review_count
FROM business
WHERE name like '%ramen%'
ORDER BY review_count DESC
LIMIT 10;
name city review_count
Monta Ramen Las Vegas 2291
JINYA Ramen Bar Las Vegas 1171
Ramen Sora Las Vegas 1169
Fukumimi Ramen Las Vegas 745
Sansotei Ramen Toronto 701
Hokkaido Ramen Santouka Toronto 651
Republic Ramen + Noodles Tempe 571
Tampopo Ramen Tempe 458
KINTON RAMEN Toronto 414
Ramen Tatsu Las Vegas 395

Vegasの次がToronto!?という印象だが、この配布データはYelpの部分的データが切り出されているようだ。(サンノゼやサンフランシスコ、シアトルなどはデータ中に無し)

3. レビュー投稿者名のJOIN

試しに、レビュー数トップのラーメン屋"Monta Ramen"のスコアとレビュー投稿者を眺める。
最後の3行 (INTO~以降) はCSV出力用。

SELECT biz_rev.name, biz_rev.stars, user.name AS user_name
FROM user
INNER JOIN (
  SELECT name, review.stars, review.user_id
  FROM business
  INNER JOIN review
  ON business.id = review.business_id
  WHERE name = 'Monta Ramen'
) AS biz_rev ON user.id = biz_rev.user_id
ORDER BY biz_rev.stars DESC
INTO OUTFILE '~/yelp/output/monta.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"';
name stars user_name
Monta Ramen 3 Jessica
Monta Ramen 5 Rei
Monta Ramen 4 Chels
Monta Ramen 3 Tiff
Monta Ramen 4 Tu Anh
Monta Ramen 4 Vicky
Monta Ramen 3 Kevin
Monta Ramen 3 Lynn
Monta Ramen 5 Chuck
Monta Ramen 4 Lica

ここで気づいた。もしかして日本人少ない?
たかだか2,290レコードなので、人力で日本ぽい人名 (KenとかYujiとかLisaとか) を数えることに。(全データやるとなればWikiのデータでマッチングしたい)で数えると19人 (0.8%) しかいない。CSVファイルをここに。最もレビューの多いラスベガスのこの店でこの数では、他店では日系の平均値計算も期待できないし、もはや日系レビューが無いのでは、とあきらめ。

結果と反省

いちおうMonta Ramenについては、全体平均4.16に対して日系平均4.28とやや日系の評価が高いが、このサンプル数だと意味のある差とは言えなそう。
反省点としてMonta Ramenのあるネバダ州の人口は280万人、在留邦人+日系人は2.3万人で人口構成比は0.8%、分布の差を評価するために少なくとも100件くらい日系レビューが欲しいと思うとレビュー数10,000超は必要ということを、手を動かす前に思いつきたかった。ちなみに全データセット通してレビュー数最大のお店で7,361。ただYelpのデータは面白そうなので、何か筋のよい観点が思いついたらまた触ってみたい。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.