紅葉スポットと紅葉状況をツイートから推定する
ひとり開発 Advent Calendar 2019 10日目の記事です。
成果物: ソーシャル紅葉見頃情報
Webサービス「ソーシャル紅葉見頃情報」を作りました。
動機: 紅葉情報サイトの「見頃」表示が信用できない
以下の写真は、複数の紅葉情報サイトで「紅葉状況:見頃」だった時の御岳昇仙峡(山梨県)の様子です。
正直、見頃はまだ先だと感じました。Twitterを調べても同様の感想を持った方が多いようで、甲府市観光課も「全体的に3分〜4分付き」と表現されている状況でした。
🍁紅葉情報🍁
— 甲府市観光課(公式) (@kofu_kanko) 2019年11月11日
本日の昇仙峡の様子です!
少しずつ紅葉が進み、全体的に3分〜4分付きといったところです🍁✨
種類によっては、鮮やかに色付いていました😀
《甲府市観光課ホームページ》https://t.co/rGZotqD6oO pic.twitter.com/3dy2y3qLGO
せっかく紅葉を見に行くなら、見頃のピークに行きたいものです。
しかし、紅葉情報サイトの「見頃」は判定が緩いようで使えません。Twitterで流れているツイートのほうが、はるかに信用できそうです……… ということは、ツイートを活用すれば、より厳しく「見頃」を判断出来る可能性がありそうです。
作ることにしました。
解説: サービス構成
サービスの全体像は以下の通り。ぜんぶ書き慣れている Ruby で楽しく書きました。
それぞれ順を追って説明していきます。
ツイート収集
「紅葉」「見頃」「色づき」などのキーワードで、紅葉状況と思わしきツイートをひたすらに収集します。
紅葉スポットの自動抽出
紅葉スポットは、それこそ ウォーカープラスの紅葉情報やウェザーニュースの紅葉Ch. から集める方法もありそうですが、依存したくないので ツイートから紅葉スポット名も抽出 します。
形態素解析: MeCab + mecab-ipadic-NEologd
ツイートを形態素解析エンジン MeCab に掛けて 固有名詞 を拾います。辞書には、最新の固有表現が多数採録されている mecab-ipadic-NEologd を用います。例えば、福島県会津地方にある景勝地「塔のへつり」も正しく抽出できます。
# 標準の辞書 (mecab-ipadic) $ echo "福島県南会津郡下郷町、塔のへつり。" | mecab -d /usr/local/lib/mecab/dic/ipadic/ 福島 名詞,固有名詞,地域,一般,*,*,福島,フクシマ,フクシマ 県 名詞,接尾,地域,*,*,*,県,ケン,ケン 南会津 名詞,固有名詞,地域,一般,*,*,南会津,ミナミアイヅ,ミナミアイズ 郡 名詞,接尾,地域,*,*,*,郡,グン,グン 下郷 名詞,固有名詞,地域,一般,*,*,下郷,シモゴウ,シモゴー 町 名詞,接尾,地域,*,*,*,町,マチ,マチ 、 記号,読点,*,*,*,*,、,、,、 塔の 名詞,固有名詞,地域,一般,*,*,塔の,トウノ,トーノ へ 助詞,格助詞,一般,*,*,*,へ,ヘ,エ つり 名詞,一般,*,*,*,*,つり,ツリ,ツリ 。 記号,句点,*,*,*,*,。,。,。 EOS
# 今回使用する辞書 (mecab-ipadic-NEologd) $ echo "福島県南会津郡下郷町、塔のへつり。" | mecab -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd/ 福島県 名詞,固有名詞,地域,一般,*,*,福島県,フクシマケン,フクシマケン 南会津 名詞,固有名詞,地域,一般,*,*,南会津,ミナミアイヅ,ミナミアイズ 郡 名詞,接尾,地域,*,*,*,郡,グン,グン 下郷町 名詞,固有名詞,地域,一般,*,*,下郷町,シモゴウマチ,シモゴーマチ 、 記号,読点,*,*,*,*,、,、,、 塔のへつり 名詞,固有名詞,一般,*,*,*,塔のへつり,トウノヘツリ,トーノエツリ 。 記号,句点,*,*,*,*,。,。,。 EOS
ここから固有名詞を拾って、「福島県」「南会津」「下郷町」「塔のへつり」が紅葉スポットの候補となります。
都道府県推定
紅葉スポットの候補に対し、都道府県を推定します。
方法はシンプルで、『京都の南禅寺』のように都道府県名が一緒になっているものを拾い上げ、その最頻値を推定結果としているだけです。ただし、「高尾山口」が「山口」になったり「東京都」が「京都」になったりしないよう、一部正規表現で避けています。
ノイズ除去
紅葉スポットの候補から、ノイズと思われる名称を除外します。
- 都道府県の推定が分散しすぎている場合
- 例えば「植物園」は全国にあり、特定のスポットを指していないので除外したい
- 半角文字を含むか、漢字が1文字も含まれない場合
- 「1日」「エモい」なども固有名詞として候補に挙がっているため除外したい
紅葉状況の推定
ここまでで紅葉スポットの候補が定まったため、紅葉状況を推定します。
スコア算出
ツイートに含まれる「紅葉状況っぽいキーワード」を抽出し、 0(青葉)〜1(見頃)〜2(落葉) の間で数値化します。
正直ここはかなりゴリ押しです。たとえば 「早かった」は0.4、「もう少し」は0.7、「ちょうど」は1、 のように勘で数値を設定しています。複数あれば平均を取ります。
Webサービス
これで紅葉スポット・紅葉状況の情報が揃ったため、Webサービスとして提供します。息を吸うようにフロントエンドを書ける人間ではないので、古き良き非SPAでの実装です。
非紅葉スポットフィルタ(雑)
ノイズ除去をしても紅葉スポット「でない」固有名詞が大量に残るため、ここでフィルタします。ひたすらキーワードでフィルタを掛ける一時しのぎで、改善の余地が残る部分です。
place !~ /^(.+観光客|外国人.+|最盛期|今日この頃|.+気温|何度|四季桜|可能性|寒い朝|世界遺産|誕生日|今シーズン|黄緑|[0-9]+日|皇室献上|.+観光|お久しぶり|開催中|全国的|敷地内|温暖化|五平餅|お勧め|青紅葉|.+に|.+科|.+流星群|.+の|.+旅行|暑さ|.+的|桜の木|桜を見る会|ロケ地|.+公開|女子力|仙山線|お題|お姉ちゃん|外国人|私たち|朝活|好きだ|平野部|数年|異常気象|トロッコ列車|知らんけど|山手線|予防接種|午前中|募集中|.週間|観光.+|冬桜|落葉高木|今月末|.+市内|目的地|質問箱|.+人|.+年前|リア充|.回|分からん|.+希望|オフ会|聖地巡礼|子どもたち|大嘗宮|代表者|落羽松|つけ麺|定点観測|入場料|競馬場|.年|.枚|.?週末|冷たい雨|娘|お客さん|時間帯|涙)$/
検証: 紅葉状況の推定結果
約3週間動かしたので、推定結果を見ておきます。と言っても、Twitterのツイート群からの推定結果とツイートを比べるので出来レースです。
高尾山
東京 高尾山の推定結果ですが、11/27頃から見頃に近く、12/7頃に見頃を過ぎようとしているようです。高尾ビジターセンターのTwitterアカウントと比べてみます。
11/16 見頃間近
天気:晴 気温:12.0℃ 富士山展望:〇
— 高尾ビジターセンター【公式】 (@takaovc) 2019年11月16日
ここ数日の冷え込みで、一気に紅葉が進みました。山頂はもう見頃間近です。
紅葉と言えば、カエデの仲間が有名ですね。3枚目の写真に写る7種類の葉の中で、カエデの仲間は5つ。カエデの葉の形にも、バラエティーがありますね。#高尾山 #紅葉 #カエデ pic.twitter.com/FJQQFZEJW9
11/24 見頃
天気:小雨 気温:14.0℃ 富士山展望:×
— 高尾ビジターセンター【公式】 (@takaovc) 2019年11月24日
昨日からの雨にも耐え、まだ麓、薬王院、山頂で紅葉が見頃となっています。
今年の紅葉は葉の状態がしっかりしていて、見ごたえがあるように思います。#高尾山 #高尾ビジターセンター #紅葉 pic.twitter.com/VBDkQhcy7R
12/1 見頃
天気:晴 気温:5.0℃ 富士山展望:×
— 高尾ビジターセンター【公式】 (@takaovc) 2019年12月1日
薬王院周辺の紅葉や、登山道のあちこちで黄葉がとてもきれいです!
山内は、昨日に引き続き早くも多くの人で賑わっています。
迷子や落とし物には十分ご注意ください!#高尾山 #高尾ビジターセンター #紅葉 pic.twitter.com/QcsYatqI97
12/6 落葉進む
天気:曇 気温:2.5℃ 富士山展望:×
— 高尾ビジターセンター【公式】 (@takaovc) 2019年12月6日
雲の多い冬空が広がっています。
山頂周辺では落葉が加速し、落ち葉が降り積もって絨毯のようになっているところも。
本格的な冬が近づいています。#高尾山 #高尾ビジターセンター #落葉 #師走 pic.twitter.com/gwZaddCMFb
推定結果「11/27頃から見頃に近く、12/7頃に見頃を過ぎ」は実際の様子とかなり近そうです。
東福寺
京都 東福寺は、11/23〜11/30頃で見頃間近〜見頃を行ったり来たりしています。12/1以降は見頃過ぎのようです。公式Twitterアカウントがないため、ユーザのツイートと比べてみます。
11/16 見頃間近
東福寺の紅葉②
— まきこ@写真とピアノの人 (@makiko_photo) 2019年11月16日
京都に来て良かった~😊
本当に見事✨
紅葉の見頃はもう少し先かもです。#東福寺 #京都 #紅葉 pic.twitter.com/FUaXb7cHuC
11/23 見頃
#Bura_Bi_Now #京都 #東福寺 #紅葉
— hikari (@hikari705) 2019年11月23日
早起きして朝9時前には通天橋に着いたらすでに大混雑。駅も人がこぼれそうだった😅
紅葉はほぼピーク。
①谷から通天橋を
②通天橋から向かいの臥雲橋を
大満足😊
入場から物凄い混雑、内部もごった返し。橋の上は既に大混雑で撮影禁止、入場制限あるかも? pic.twitter.com/lxISBa9q81
11/27 見頃
本日の東福寺の様子。
— 京阪電車おでかけ情報【公式】 (@okeihan_net) 2019年11月27日
通天橋からは鮮やかに染まった紅葉が望めます。
京都の紅葉は今が全盛です🍁
紅葉情報はこちら ⇒ https://t.co/CEJKKL73cj#紅葉 #紅葉とる人おけいはん #東福寺
(2019.11/27撮影) pic.twitter.com/l7FARS1eak
12/1 落葉始まり
東福寺の紅葉。
— 遍路J@TFCC (@henrobicycle) 2019年12月1日
ピークが過ぎて散り始めてるけど
それでも圧巻。#京都#紅葉 pic.twitter.com/7sjlKi5fpe
12/7 ほぼ終わり
東福寺の紅葉はほぼ終わってましたが、まだ少し残ってました。
— ハッチ🍄 (@hutchnosuke) 2019年12月7日
見頃を過ぎたお寺は人も少なく、風情があります。
これから寒い寒い冬がやって来るのねー。
四季って素晴らしーーー! pic.twitter.com/2FYAsGtZCe
推定結果「11/23〜11/30頃で見頃間近〜見頃」と期間的には合致しました。スコアがもう少し安定していれば、良い結果と言えそうです。
課題
概ね出来上がりましたが、まだまだ課題は多いです。
- サンプル数の不足。マイナーな紅葉スポットではほとんど推定出来ない
- 紅葉スポットのノイズ。紅葉スポット以外が大量に含まれている
- 紅葉以外への対応。春までに桜の開花状況に対応したい
まとめ
- 紅葉スポットと紅葉状況を推定するWebサービスを開発した
- 有名所の推定精度はそれなりにありそうだった
- 精度向上や桜への対応なんかは今後の課題