【簡単】SNSで観光地の待ち時間を分析【アルゴリズムあり】

★悩み★
・あるカフェに行ったんだけど、待ち時間が長すぎて時間を無駄にしたなぁ。
・SNSから観光地に待ちが発生するか分からないかな。
・SNSから観光地のある程度の待ち時間を判断できないかな。

こういった「悩み」に答えます。

★本記事の内容★
(1) SNSで観光地の待ち時間は分かります!【実体験あり】
(2) SNSで観光地の待ちを分析する方法をご紹介【アルゴリズムあり】
(3) SNSで観光地の待ち時間を分析する方法をご紹介【アルゴリズムあり】

この記事を書いている筆者は、5年間、SNSを用いた分析をしています。
「観光」が趣味ということで、特に「観光」という観点でSNSを分析し続けています。

代表的な実績としては、「観光ルートの分析」結果を提示するAndroidアプリを開発し、複数のコンテストで受賞したことがあります。
例:平成30年度 青森県オープンデータ利活用コンテスト

「観光」観点でのSNS分析に強い筆者が、「SNSで観光地の待ち時間を分析」する方法を解説していきます。

SNSで観光地の待ち時間は分かります!

結論から述べますと、「SNSで観光地の待ち時間は分かる」と考えます。
簡単に実体験を踏まえ、ご紹介します。

SNSを分析しある観光地を訪れた話

SNSの1つであるInstagramを分析し、「2020年8月にかき氷を巡る京都観光」を企画し実施しました。
どのようにしてSNSを分析したのか?」や「観光した結果どうだったのか?」に関しては、以下の記事に詳細に書きましたので興味がある方は見ていただければと思います。

Pass the baton 京都」というかき氷で有名なお店に行ってきました。
「Pass the baton 京都」で待ちが発生することを知らなかったため、6時間待ちを耐え忍びかき氷を食べることになってしまいました。

そういった苦い経験から、「こういった待ち時間を事前に知ることができないのか?」と考えるようになりました。

観光地での待ち時間における行動について

「Pass the baton 京都」の6時間待ちの際にInstagramにこういった投稿をしていました。

筆者が投稿したSNSには、「待ち時間」に関する情報が記載されていました。

ということは、他の人も「観光地に対する待ち時間」に関する情報をSNSに投稿しているのではないか?と考えるようになりました。

ですので、以降から、「SNSの分析から観光地で待ちがあるかを分かるのか?」や「SNSの分析から観光地でどのぐらい待ち時間が発生するのか分かるのか?」に関してご紹介していきます。

利用するソフトウェアについて

「SNSの分析から観光地で待ちがあるか」や「SNSの分析から観光地でどのぐらい待ち時間が発生するのか」の分析をする上で、「Python」/「Mecab」/「CaboCha」というソフトウェアを利用します。

各ソフトウェアのインストールや使い方は、下記の記事に記載しています。

利用するデータについて

SNSの1つであるInstagramのデータを用いて、「SNSの分析から観光地で待ちがあるか」や「SNSの分析から観光地でどのぐらい待ち時間が発生するのか」の分析します。

以下のデータを用いて分析を行いました。

データについてデータ数備考
Instagramに投稿されたデータ(以降、投稿データ)932166例:ボリュームたっぷりなかき氷!
投稿されたデータに紐づいている場所データ12090例:清水寺/河原町などの場所情報

Instagramは、場所ごとに写真を投稿することができます。
今回の分析では、場所ごとに投稿されたデータも用いました。

SNSで観光地の待ちがあるかを分析する方法

SNSの分析から観光地で待ちがあるかを分かるのか?」に関してご紹介します。

結論としては、「SNSの分析から観光地に待ちが発生するか」は分かります。

「SNSの分析から観光地で待ちが発生するか」を分析するアルゴリズムは以下です。

★観光地の待ちを分析するアルゴリズム★
(1) 「待ち」と記載された投稿データを抽出
(2) 投稿データを場所ごとに集約
(3) 「Pass the baton 京都」と「吉祥菓寮 祇園本店」に関する投稿データを抽出
(4) 投稿データに対して係り受け解析を実施
(5) 係り受け解析した文字列に対して、形態素解析を実施
(6) 形態素解析した文字列内に「待ちがある」に関する単語が存在するか確認
(7) 形態素解析した文字列内に「待ちがない」に関する単語が存在するか確認

以降で、「観光地の待ち」を分析するアルゴリズムに関して、少し詳しくご紹介します。

(1) 「待ち」と記載された投稿データを抽出

投稿データとして、以下のようなものがあります。

★投稿データの一例★
(A) ここのかき氷、美味しかったけど、待ち時間が300分でしたorz
(B) 待ち時間なく、かき氷を食べることができました!
(C) ここのかき氷の見た目が美しい。
(D) 待ちがあるかどうか分からなかった。
(E) ディズニーランド並みの待ちがあった。

上記の「投稿データの一例」から、(A)/(B)/(D)/(E)の投稿データを抽出します。

(2) 投稿データを場所ごとに集約

「待ち」が記載された投稿データを以下のように場所(観光地)ごとに集約します。

★観光地ごとに投稿データを集約した例★
1. 「Pass the baton 京都」の投稿データ
 (A) ここのかき氷、美味しかったけど、待ち時間が300分でしたorz
 (D) 待ちがあるかどうか分からなかった。

2. 「吉祥菓寮 祇園本店」の投稿データ
 (B) 待ち時間なく、かき氷を食べることができました!

3. 「清水寺」の投稿データ
 (E) ディズニーランド並みの待ちがあった。

(3) 「Pass the baton 京都」と「京都祇園あのん」に関する投稿データを抽出

今回は、「Pass the baton 京都」と「京都祇園あのん」の2つの観光地に限定した分析をしたいため、「Pass the baton 京都」と「京都祇園あのん」の投稿データのみを抽出します。

★分析対象となる観光地を抽出★
1. 「Pass the baton 京都」の投稿データ
 (A) ここのかき氷、美味しかったけど、待ち時間が300分でしたorz
 (D) 待ちがあるかどうか分からなかった。

2. 「吉祥菓寮 祇園本店」の投稿データ
 (B) 待ち時間なく、かき氷を食べることができました!

(4) 投稿データに対して係り受け解析を実施

投稿データに対して、「CaboCha」を利用し、係り受け解析を行います。

★係り受け解析結果の一例★
1. 「Pass the baton 京都」の投稿データ
 (A) 待ち時間が300分
 (D) 待ちがあるかどうか

2. 「吉祥菓寮 祇園本店」の投稿データ
 (B) 待ち時間なく

(5) 係り受け解析した文字列に対して、形態素解析を実施

係り受け解析を行なった結果に対して、「Mecab」を利用し、形態素解析を行います。

★形態素解析結果の一例★
1. 「Pass the baton 京都」の投稿データ
 (A) 待ち時間 が 300 分
 (D) 待ち が あるか どうか

2. 「吉祥菓寮 祇園本店」の投稿データ
 (B) 待ち時間 なく

(6) 形態素解析した文字列内に「待ちがある」に関する単語が存在するか確認

今回は、「投稿データ」において以下の単語がある場合、「待ちがある」と判定します。

★「待ちがある」と判断できる単語★
「長」/「マックス」/「鬼」/「すんごかった」/「ディズニーランド並み」/「すごい」/「ある」/「●●時間」/「●●分」

「待ち」が修飾の関係性にある文字列、かつ、形態素解析結果に上記単語がある場合、「待ちがある」と判定します。

★判定に関する例★
1. 「Pass the baton 京都」の投稿データ
 (A) ここのかき氷、美味しかったけど、待ち時間が300分でしたorz
 →判定結果:「待ちがある」と判定する
 (D) 待ちがあるかどうか分からなかった。
 →判定結果:「待ちがある」とは判定しない

2. 「吉祥菓寮 祇園本店」の投稿データ
 (B) 待ち時間なく、かき氷を食べることができました!
 →判定結果:「待ちがある」とは判定しない

(7) 形態素解析した文字列内に「待ちがない」に関する単語が存在するか確認

今回は、「投稿データ」において以下の単語がある場合、「待ちがない」と判定します。

★「待ちがない」と判断できる単語★
「ない」/「少」/「ゼロ」/「無」

「待ち」が修飾の関係性にある文字列、かつ、形態素解析結果に上記単語がある場合、「待ちがない」と判定します。

★判定に関する例★
1. 「Pass the baton 京都」の投稿データ
 (A) ここのかき氷、美味しかったけど、待ち時間が300分でしたorz
 →判定結果:「待ちがない」とは判定しない
 (D) 待ちがあるかどうか分からなかった。
 →判定結果:「待ちがない」と判定する

2. 「吉祥菓寮 祇園本店」の投稿データ
 (B) 待ち時間なく、かき氷を食べることができました!
 →判定結果:「待ちがない」と判定する

以上が、「SNSで観光地の待ちがあるかを分析する方法」となります。

分析結果

SNSで観光地の待ちがあるかを分析する方法」の分析結果に関してご紹介します。

分析した結果は、以下になりました。

「Pass the baton 京都」と「吉祥菓寮 祇園本店」でかき氷を食べる場合は、高確率で待つ可能性が高いです。

確かに筆者が6月ごろに「Pass the baton 京都」に行った際は、6時間の待ちを経験しました。

また、「吉祥菓寮 祇園本店」に行った際は、5分ぐらいの待ちを経験しました。

ですので、この分析結果はある程度の信憑性があると考えます。

上記でかき氷を食べる場合は、「待ちがある」ということを意識した上で、訪問してみてください。

SNSで観光地の待ち時間を分析する方法

SNSの分析から観光地でどのぐらい待ち時間が発生するのか?」に関してご紹介します。

結論としては、「SNSの分析から観光地でどのぐらい待ち時間が発生するか」は分かります。

「SNSの分析から観光地でどのぐらい待ち時間が発生するか」を分析するアルゴリズムは以下です。

★観光地の待ち時間を分析するアルゴリズム★
(1) 「待ち」と記載された投稿データを抽出
(2) 投稿データを場所ごとに集約
(3) 「Pass the baton 京都」と「吉祥菓寮 祇園本店」に関する投稿データを抽出
(4) 投稿データに対して係り受け解析を実施
(5) 係り受け解析した文字列内から「待ち時間」に関する情報を抽出

以降で、「観光地の待ち時間」を分析するアルゴリズムに関して、少し詳しくご紹介します。

(1) 「待ち」と記載された投稿データを抽出

【SNSで観光地の待ちがあるかを分析する方法】の【(1) 「待ち」と記載された投稿データを抽出】に記載した方法と同一です。

(2) 投稿データを場所ごとに集約

【SNSで観光地の待ちがあるかを分析する方法】の【(2) 投稿データを場所ごとに集約】に記載した方法と同一です。

(3) 「Pass the baton 京都」と「吉祥菓寮 祇園本店」に関する投稿データを抽出

【SNSで観光地の待ちがあるかを分析する方法】の【(3) 「Pass the baton 京都」と「吉祥菓寮 祇園本店」に関する投稿データを抽出】に記載した方法と同一です。

(4) 投稿データに対して係り受け解析を実施

【SNSで観光地の待ちがあるかを分析する方法】の【(4) 投稿データに対して係り受け解析を実施】に記載した方法と同一です。

(5) 係り受け解析した文字列内から「待ち時間」に関する情報を抽出

「待ち」が修飾の関係性にある文字列から、「●●時間」と「●●分」を正規表現を利用して抜き出します。

★「待ち時間」の抽出例★
1. 「Pass the baton 京都」の投稿データ
 (A) ここのかき氷、美味しかったけど、待ち時間が300分でしたorz
 →抽出結果:300分を抽出
 (D) 待ちがあるかどうか分からなかった。
 →抽出結果:なし

2. 「吉祥菓寮 祇園本店」の投稿データ
 (B) 待ち時間なく、かき氷を食べることができました!
 →抽出結果:なし

以上が、「SNSで観光地の待ち時間を分析する方法」となります。

分析結果

SNSで観光地の待ち時間を分析する方法」の分析結果に関してご紹介します。

分析した結果は、以下になりました。

★分析した観光地の待ち時間に関して★
・Pass the baton 京都の待ち時間:約182分
・吉祥菓寮 祇園本店の待ち時間:約79分

「Pass the baton 京都」と「吉祥菓寮 祇園本店」でかき氷を食べる場合は、上記の待ち時間が発生することは覚悟した方が良さそうです。

確かに筆者が6月ごろに「Pass the baton 京都」に行った際は、6時間の待ちを経験しました。

また、「吉祥菓寮 祇園本店」に行った際は、5分ぐらいの街を経験しました。

ですので、この分析結果はある程度の信憑性があると考えます。

上記でかき氷を食べる場合は、「1時間以上の待ち時間がある」ということを覚悟した上で、訪問してみてください。

「SNSで観光地の待ち時間を分析」のまとめ

今回の記事を通して、「SNSで観光地の待ち時間を分析」をご紹介することで、以下の悩みを解消しました。

★悩み★
・あるカフェに行ったんだけど、待ち時間が長すぎて時間を無駄にしたなぁ。
・SNSから観光地に待ちが発生するか分からないかな。
・SNSから観光地のある程度の待ち時間を判断できないかな。

SNSでどんな分析ができるのだろうか?と悩んでいるあなた」この記事が少しでも役に立てれば幸いです。

コメント