モチベーション
米国ではYelpというアプリが食べログの位置づけで使われています。(1.48億のレビュー投稿。ちなみに食べログは2,400万レビュー, 2018年4月時点)
ただ、たまにレビューがアテにならないことがあります。特にラーメン。たぶん味やサービス、コスパへの評価基準が、日本育ちとローカル育ちで異なるためかな〜と思います。(逆に僕も伝統的すぎる!?インド料理店に自分の舌基準で☆1を付けてしまうことがあります)
この記事はそんな過小評価されて平均スコアは低いけれど、実は日本人にウケている隠れた名店の発掘を目指していました。(が、タイトル通りそこに行きつけなかった…)
データ
Yelp公式でデータが配布されています。
MySQLとPostgreSQL対応とのことですが、PostgreSQLだと読み込めず。。
MySQL推奨です。ちなみにER図はこんな感じ。
アプローチ(当初案)
ステップ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のデータは面白そうなので、何か筋のよい観点が思いついたらまた触ってみたい。