2010年3月31日

地図/LatLongLab

開いているお店検索

  • このエントリーをはてなブックマークに追加

こんにちは、R&D統括本部の吉田です。Yahoo!ラボで、開いているお店検索をリリースしたので、ご紹介します。


開いているお店検索とは?

開いているお店検索は、営業時間や、定休日の情報から、 今、営業しているお店を検索できるものです。

過去や未来の日時に開いているお店も検索でき、時間の流れに沿って、開いているお店の移り変わりをアニメーションで見ることができます。


開いているお店検索の狙い

開いているお店検索では、営業時間や定休日の情報を、電話帳データを元にWEBページをクロールして抽出しています。

電話帳データは、多くの店舗情報があり、Yahoo!地図で検索できる店舗の多くは、電話帳データの情報に基づくものです。
しかし、電話帳データは、店舗の名前や電話番号、緯度経度など基本的な情報しか載っておらず、営業時間や定休日といったリッチな情報は載っていません。

そこで、営業時間や定休日といった情報を、電話帳データをシードにWEBページをクロールして抽出することで、 電話帳データのリッチ化 をするというのが、開いているお店検索の狙いです。

Yahoo!地図で検索できる店舗の中には、Yahoo!グルメに載っている店舗など、営業時間や定休日があらかじめわかっているものもあります。
しかし、開いているお店検索では、「電話帳データを元にしたWEBページのクロール」というアプローチをとることで、今まで営業時間や定休日がわかっている店舗の、5倍以上の店舗 に対して、新たに営業時間、定休日の情報を付与することができました。

また、WEBページのクロール、営業時間や定休日の抽出、検索インデックス作成といった、 ほぼすべての処理をHadoopで行っている というのも大きな特徴になっています。
処理の過程で、HBaseも活用しています。
Hadoopについては、TechBlogで、何回か記事を書いているので、そちらを参照して下さい。

では、内部の仕組みについて、もう少し詳しく紹介します。


開いているお店検索の仕組み

開いているお店検索の仕組み

まず、電話帳データの「店舗名、住所、電話番号」をクエリとして、Yahoo!検索で検索を行います。
次に、その検索結果の上位のWEBページをクロールして、保存します。
そしてクロール結果のWEBページから、営業時間、定休日を独自のアルゴリズムで抽出します。
さらに、抽出した営業時間、定休日の信頼性をいくつかの指標に基づき、スコア付けします。

また、抽出した営業時間、定休日を正規化します。
例えば、「毎週日曜日が定休日、ただし月曜日が祝日である週の日曜日は営業」というお店は、内部で「W-7,-HW-1」というように正規化されています。
そして店舗ごとに、最も信頼性のスコアが高い、営業時間、定休日の情報を抽出します。

最後に、開いている店舗を検索できるように、検索インデックスを作成します。


今後の課題

このように、電話帳データをシードにWEBページをクロールすることで、営業時間、定休日の情報を抽出できました。
しかし、完全に信頼性があるデータかというとそうではありません。
今後は、信頼性向上を目指し、Yahoo! 地図の機能として導入を目指していきたいと思います。


(R&D統括本部 吉田一星)

Yahoo! JAPANでは情報技術を駆使して人々や社会の課題を一緒に解決していける方を募集しています。詳しくは採用情報をご覧ください。

  • このエントリーをはてなブックマークに追加