#本記事に関して
本記事は以下、4つの記事を短く1つにまとめたものとなります。
お時間があります際に、以下の記事もお読み頂けると幸いです!!!
コードなどの情報もこちらの記事には記載しておりません。
はじめに
Python初学者のまさやです!
皆様は、カフェやレストランの情報をどうやって取得していますか?
食べログなどのサイトはもちろん、最近はSNSで確認される方もいるのではないでしょうか?
私は前職、中小企業のPRのお手伝いを行っていました。
お客様にはSNSでの情報発信の必要性も訴えてきましたが、それは本当に必要だったのでしょうか!?
今回はPythonの練習としてTwitterAPIにてツイートの取得。
食べログのスクレイピングを行い、評価の比較を行ってみました!!!
##簡単なあらすじ(元記事リンク!)
-
(その1)ツイートの取得(SNSの調査)/カフェの選定
TwitterAPIを活用し、東京23区内の人気カフェ/スイーツ店のツイートを取得
取得した店舗のうち、総ツイート数が200件を超えている店舗10店舗を選定。 -
(その2)ツイートの前処理
ツイートには取得したい感想(評価)の他に、公式アカウントや引用ツイート、
お土産ランキングなど不要なツイートを削除。 -
(その3)感情分析にてツイートを得点化
「日本語評価極性辞書」と「単語感情極性値対応表」2つの辞書を活用し、得点の比較。
食べログの評価幅が[0~5]のため、正規化にて幅を[0~5]合わせる。 -
(その4)食べログ評価を取得/比較
食べログの評価を取得し、評価の分布をグラフ化。
先ほど取得したツイートの点数との比較を行う。
(その1)ツイートの取得(SNSの調査)/カフェの選定
###ツイート取得
TwitterAPIを利用し、各店舗の1週間分(2021年09月20日~27日)を取得。
様々な情報を取得できるが、今回は以下の7情報を取得。
表1_取得情報一覧
取得情報 | 用途 |
---|---|
ツイート文書(text) | 感情分析のため |
ユーザーID(id) | 重複ツイート検出のため |
ユーザー名(name) | 重複ツイート検出のため |
ツイート日(created_at) | 正しく1週間分取得できているか確認するため |
いいね数(favorite_count) | 今後の展望 |
リツイート数(retweet_count) | 今後の展望 |
フォロワー数(followers_count) | 今後の展望 |
####取得した感想
- textにはSNSならではの顔文字や文脈が多く、正しく感情分析が可能か不安。
- 「-RT」でリツイートを除外することはできたが、引用ツイートが意外と多かった。
- 今後、ツイートした人だけではなく、「フォロワー」と「いいね数」、「リツイート」などインフルエンサーポイントを追加し、ツイートに反応した人の点数も加点してオリジナルランキングも作成してみたい。
###カフェ選定
カフェの選定は、以下のサイト内にあるカフェから
お店ごとにツイートを取得し、ツイート数が多かった10店舗を採用する。
#####ノミネート10店舗
上記にてツイート数が多かった10店舗は以下になります!
表2_ノミネート店舗と取得ツイート数
店名 | 検索名 | 取得ツイート数 |
---|---|---|
キル フェ ボン | キルフェボン | 2385 |
ピエール・エルメ | ピエールエルメ | 996 |
ブルーボトルコーヒー | ブルーボトル | 731 |
ケンズカフェ東京 | ケンズカフェ | 647 |
マリアージュフレール | マリアージュフレール | 527 |
ひみつ堂 | ひみつ堂 | 419 |
資生堂パーラー | 資生堂パーラー | 395 |
和栗や | 和栗や | 326 |
アンリ・シャルパンティエ | アンリ・シャルパンティエ | 292 |
銀座ウエスト | 銀座ウエスト | 268 |
- ツイート数が予想より少なく、200件を超える店舗がほぼなかった。やはり、カフェなどの情報をSNSにアップする際、Twitterではなく、Instagramが選ばれる傾向があると推測。
- 店舗名を決める際、「パティスリー」などの文言は、他店舗と混合するためSNSには不向き。また、英語表記の店舗名は外国人の名前やツイートと混合してしまい、こちらも不向きだと思った。
~季節に関して~
- 「ひみつ堂」は人気かき氷屋。夏には3時間以上並ぶことも。まだまだ、残暑が厳しく10月を前にしてもツイートは多かった。
- 和栗やは栗の季節を目前に「食べたい」など期待に対するツイート多数。栗が収穫できない季節には店を閉めるほど徹底された品質管理にも"限定感"が相まってツイート数が多かったと推測。
詳細は以下に記載あり!!!
食べログとSNSの評価を比較してみた [その1]~ツイート取得・店舗選別~
#(その2)ツイートの前処理
ツイート日を確認しやすいよう、日にちのみに変更。
感情分析にて不要なメンション(@)、URL(http)から始まる文字列の消去。
同様に絵文字も消去を行った。
表3_text処理
変更前 | 変更後 |
---|---|
Sun Sep 26 12:53:51 +0000 2021 | 26 |
🐄🐄🐄 🌀ブルーボトルコーヒー🌀 #ブルーボトルコーヒー 食べた物→ @0117ushi 🐄 その他→ @ushi0117 🐄 カフェ活→ #🐄カフェ 🐄 https://t.co/cw4LE8PRIt https://t.co/2BK0Uwi1vb |
ブルーボトルコーヒー #ブルーボトルコーヒー 食べた物→ その他→ カフェ活→ #カフェ |
####重複ツイート/アカウントの消去
公式アカウントのツイートや引用ツイートを削除するため
['text']['name']それぞれの重複があるものを消去。
△懸念点
「○○行きたい」や「美味しい」などシンプルなツイートを消去してしまう可能性あり。
また、複数回コメントしているアカウントも消去してしまう。
表4_処理後のツイート数
店名 | 処理前 | 処理後 |
---|---|---|
キル フェ ボン | 2385 | 1914 |
ピエール・エルメ | 996 | 786 |
ブルーボトルコーヒー | 731 | 565 |
ケンズカフェ東京 | 647 | 567 |
マリアージュフレール | 527 | 429 |
ひみつ堂 | 419 | 303 |
資生堂パーラー | 395 | 308 |
和栗や | 326 | 265 |
アンリ・シャルパンティエ | 292 | 226 |
銀座ウエスト | 268 | 216 |
- 消去されたツイートには「公式アカウント」や「スイーツランキング」の引用ツイートなどが見られた
- SNSでの情報発信には「いいね」が一定数見られた、SNSの活用はマストか…
~今後の展望として~
- ツイート数の多い店舗のツイート内容を確認し、どんな内容に関してはツイート数が増加するのか確認してみたい!
- 例えば、テイクアウト、お土産、フェア、新商品など
詳細は以下に記載あり!!!
食べログとSNSの評価を比較してみた [その2]~ツイート前処理~
#(その3)ツイートデータの感情分析
「単語感情極性値対応表」「日本語評価極性辞書」それぞれの辞書を使用しツイートを感情分析を行った。
加工せず、最初に得ることができたPN値を["pn"]
"pn"を標準化しデータの平均を限りなく0に近づけたものを["pn_st"]
"pn_st"を正規化し評価の幅を[0~5]に変更したものを["pn_sc"]と記載。
結果は以下の通りになった。
写真2_「銀座ウエスト」単語感情極性値対応表
単語感情極性値対応表はポジ:ネガ=1:9でネガティブに著しい偏りがあるとのこと。
全体的に低い値をとり、店舗ごとの差が生まれなかった。
「'秋'を'PN': -0.9467959999999999」とするように、今回は正常に判別できないと判断。
先ほどよりは幅広く値が取れている。
調査したところ、グラフ中央の「pn_sc = 2.5」の部分は「notfound」=認識できないものが集まっていた。
平均値に影響が大きいと考え、消去した結果が以下に。
表5_評価の比較
店名 | ツイート数 | 処理前_SC | 処理後_SC | 単語感情極性値 | 処理後の変化 |
---|---|---|---|---|---|
キル フェ ボン | 1914 | 2.95 | 3.60 | 1.59 | 0.65 |
ピエール・エルメ | 786 | 2.97 | 3.60 | 1.52 | 0.63 |
ブルーボトルコーヒー | 565 | 3.10 | 3.78 | 1.53 | 0.68 |
ケンズカフェ東京 | 567 | 2.99 | 3.41 | 1.53 | 0.42 |
マリアージュフレール | 429 | 3.16 | 3.71 | 1.55 | 0.55 |
ひみつ堂 | 303 | 2.86 | 3.65 | 1.62 | 0.79 |
資生堂パーラー | 308 | 3.00 | 3.60 | 1.62 | 0.60 |
和栗や | 265 | 3.16 | 3.61 | 1.68 | 0.45 |
アンリ・シャルパンティエ | 226 | 3.14 | 3.90 | 1.62 | 0.76 |
銀座ウエスト | 216 | 3.10 | 3.73 | 2.28 | 0.63 |
※処理後/前は「日本語評価極性辞書」の値
- 全数値「notfound処理後」数値上昇したことにより「notfound」によって低い評価に影響されていた
- ツイート数と「notfound」の関係はなし
- 単語感情極性値対応表より店舗ごとの評価に差ができた
- グラフから分かるように「日本語評価極性辞書」の方が明らかに「notfound」が多い。これは適当に評価を下していないこととともに、認識できる名詞が少ないことが言える。
詳しくはこちら
食べログとSNSの評価を比較してみた [その3]~感情分析~
#(その4)食べログ評価を取得/比較
食べログから取得する情報は以下
- id(名前のようなもの)
- rate(評価)
- frequency(来店回数)
####それぞれをグラフにし分布を可視化
__(グラフ左)__が「訪問回数と評価」を可視化。
x軸にrate(評価)
y軸にfrequency(訪問回数)
丸が大きいほど同じ評価が多いことを表し、来店回数における評価の変化を可視化。
x軸が上昇するほど、再来店(リピーター)の評価となる。
__(グラフ右)__が「評価の分布」を可視化
x軸にrate(評価)
y軸にcount(同じ評価を付けた人の数)
棒グラフにより、どのあたりの評価が多いのかを可視化。
それぞれ、棒グラフの数(ビン数)を30に設定。
「青棒」 = 食べログでの評価
「オレンジ棒」= Twitterでの評価
#####ひみつ堂
「食べログ」= 3.76 / 940件
「Twitter」= 3.65 / 864件 (9)
※()内はツイートを複製し棒グラフを伸ばした回数 = 数を合わせるため
その他の店舗はこちらをチェック
食べログとSNSの評価を比較してみた [その4]~食べログ取得・比較~
###考察
左)散布図(食べログ)に関して
- 来店回数が増えれば増えるほど、5ではなく4または4.5の評価が集まる(常連は5をつけない)
- 初来店(1回目)の評価は3 ~ 4.5の間が多い
- 0点の評価はなし
- 両端(1と5)では1 < 5の評価が多く見られる
右)ヒストグラムに関して
- 食べログは4周辺の評価が多いが、Twitterでは0または5の両極端も目立つ
- Twitterでは喜びや期待または、怒りのどちらかでしか感想をツイートしないと予測
- 結果として似た総合評価を得ているが、分布は全く異なる
##比較
食べログの評価とTwitterの分析を比較してみました。
写真6_ツイートと食べログ比較
店名 | 食べログ | ツイート | 食べログ - ツイート |
---|---|---|---|
キル フェ ボン | 3.66 | 3.60 | 0.06 |
ピエール・エルメ | 3.89 | 3.60 | 0.29 |
ブルーボトルコーヒー | 3.32 | 3.78 | -0.46 |
ケンズカフェ東京 | 3.92 | 3.41 | 0.51 |
マリアージュフレール | 3.62 | 3.71 | -0.09 |
ひみつ堂 | 3.76 | 3.65 | 0.11 |
資生堂パーラー | 3.81 | 3.60 | 0.21 |
和栗や | 3.73 | 3.61 | 0.12 |
アンリ・シャルパンティエ | 3.71 | 3.90 | -0.19 |
銀座ウエスト | 3.68 | 3.73 | -0.05 |
- 食べログ平均点 = 3.71
- ツイート平均点 = 3.66
- どちらにもそれほど大きな差はなく、面白い結果となった
- 分布が全く異なるのにも関わらず、総合評価はあまり変わらないのは面白い結果となった
###終わりに
今回の結果より、SNSの情報は良い意見、厳しい意見ともに多かった。
SNSは自分の意見をつぶやくため、指定(店の人)が見てない想定で本音を記入するからだろうか?
ともかく、最終評価はあまり変わらなかったが、それぞれの評価の分布が可視化でき、
SNSの一面を可視化することができたのではないかと思いました。
そのため、利用方法としては、食べログで自分が行きたいお店を探し、
来店して後悔がないよう、SNSで本音を確認してお店を決めると失敗は少ないかもしれません。
今回は好きなカフェを調べてみました。
しかし、カフェの情報はInstagramに写真付きで発信する人が多いのかなと思いました。
私自身もカフェ情報はInstagramから調べます。
Instagramはスクレイピングが禁止されているため難しいですが、できたら面白いのではないでしょうか?
Pythonにて、さまざまな情報を取得し可視化を行い一番思ったのは
前職では広告の効果分析のためExcelに視聴率や離脱率、クリック数など手入力を行っていました。
その時できなかったことを短時間で可能とできるPythonは便利でもっと学んでみたいと感じました。
誤っていることも多々あるかと思いますが、ここまでお読みいただきありがとうございました。