住所検索装置及び住所検索方法
【課題】住所の構造を考慮した住所検索を可能とする。
【解決手段】住所検索装置は、住所に含まれうる単語を、住所の階層を示す階層情報と対応付けて記憶する辞書記憶部と、住所の階層間の連続可能性を示すコスト情報を記憶するコスト記憶部と、検索用の住所データを記憶する検索用マスタ記憶部と、住所を検索するための検索文字列を含む検索要求を受け付ける検索要求受付部と、検索文字列を辞書記憶部に記憶されている単語で分割して得られる検索単語の組み合わせのうち、連続可能性の高い検索単語の組み合わせを、コスト情報に基づいて出力する検索文字列分割部と、検索用マスタ記憶部に記憶されている住所データの中から、検索文字列分割部から出力される検索単語が含まれる住所データを検索する検索部と、検索単語との一致度に応じて検索部の検索結果を出力する検索結果出力部と、を備える。
【解決手段】住所検索装置は、住所に含まれうる単語を、住所の階層を示す階層情報と対応付けて記憶する辞書記憶部と、住所の階層間の連続可能性を示すコスト情報を記憶するコスト記憶部と、検索用の住所データを記憶する検索用マスタ記憶部と、住所を検索するための検索文字列を含む検索要求を受け付ける検索要求受付部と、検索文字列を辞書記憶部に記憶されている単語で分割して得られる検索単語の組み合わせのうち、連続可能性の高い検索単語の組み合わせを、コスト情報に基づいて出力する検索文字列分割部と、検索用マスタ記憶部に記憶されている住所データの中から、検索文字列分割部から出力される検索単語が含まれる住所データを検索する検索部と、検索単語との一致度に応じて検索部の検索結果を出力する検索結果出力部と、を備える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、住所検索装置及び住所検索方法に関する。
【背景技術】
【0002】
近年、様々な情報を検索可能な検索サービスが広く利用されている。このような検索サービスでは、ユーザから入力された検索文字列で検索用のデータベースを検索することにより、検索文字列に関連する情報が出力される。例えば、ユーザから入力された検索文字列に関連する住所や、この住所付近の地図を表示する住所検索システムが知られている(特許文献1)。
【0003】
ところで、住所検索システムでは、入力される検索文字列は住所通りに入力されるとは限らないため、一般的に、検索文字列を住所として可能性のある単語に分割したうえで検索が実行される。具体的には、検索文字列から検索単語を生成し、検索単語との一致数が多い住所ほど検索結果の上位として出力することができる。例えば、検索文字列として「東京中野」が入力された場合に、検索単語「東京」、「中野」が生成されたとする。このとき、単語レベルで分割された「東京/都/中野/区/中野/・・・」の住所は、「東京」を1つ、「中野」を2つ含むため、検索単語との一致数は「3」となる。一方、「静岡/県/浜松/市/東/区/中野/・・・」の住所は、「中野」を1つ含むのみであるため、検索単語との一致数は「1」となる。よって、検索単語との一致数のみを考慮すれば、検索文字列「東京中野」に対する検索結果としては、「東京都中野区中野・・・」が「静岡県浜松市東区中野・・・」よりも上位として出力される。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2003−186880号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、検索文字列の分割によっては、検索結果がユーザの意図したものと異なってしまう場合がある。例えば、検索文字列として「東中野」と入力された場合に、検索単語「東」、「中野」が生成されたとする。このとき、「東京/都/中野/区/東中野/・・・」の住所は「中野」を1つ含むため、検索単語との一致数は「1」となる。一方、「静岡/県/浜松/市/東/区/中野/・・・」の住所は、「東」を1つ、「中野」を1つ含むため、検索単語との一致数は「2」となる。よって、検索単語との一致数のみを考慮すれば、検索文字列「東中野」に対する検索結果として、「東京都中野区東中野」よりも「静岡県浜松市東区中野」の方が上位として出力されてしまう。つまり、検索文字列と同じ「東中野」という1つの大字を含む住所よりも、「東」という1つの市区町村と、「中野」という1つの大字とを含む住所の方が上位として出力されてしまう。
【0006】
本発明はこのような事情に鑑みてなされたものであり、住所の構造を考慮した住所検索を可能とすることを目的とする。
【課題を解決するための手段】
【0007】
本発明の一側面に係る住所検索装置は、住所に含まれうる単語を、住所の階層を示す階層情報と対応付けて記憶する辞書記憶部と、住所の階層間の連続可能性を示すコスト情報を記憶するコスト記憶部と、検索用の住所データを記憶する検索用マスタ記憶部と、住所を検索するための検索文字列を含む検索要求を受け付ける検索要求受付部と、検索文字列を辞書記憶部に記憶されている単語で分割して得られる検索単語の組み合わせのうち、連続可能性の高い検索単語の組み合わせを、コスト情報に基づいて出力する検索文字列分割部と、検索用マスタ記憶部に記憶されている住所データの中から、検索文字列分割部から出力される検索単語が含まれる住所データを検索する検索部と、検索単語との一致度に応じて検索部の検索結果を出力する検索結果出力部と、を備える。
【0008】
なお、本発明において、「部」とは、単に物理的手段を意味するものではなく、その「部」が有する機能をソフトウェアによって実現する場合も含む。また、1つの「部」や装置が有する機能が2つ以上の物理的手段や装置により実現されても、2つ以上の「部」や装置の機能が1つの物理的手段や装置により実現されても良い。
【発明の効果】
【0009】
本発明によれば、住所の構造を考慮した住所検索が可能となる。
【図面の簡単な説明】
【0010】
【図1】本実施形態の住所検索装置の構成を示す図である。
【図2】住所データの一例を示す図である。
【図3】辞書データの一例を示す図である。
【図4】検索用マスタの一例を示す図である。
【図5】コスト情報の一例を示す図である。
【図6】コスト算出の一例を示す図である。
【図7】辞書データ生成処理の一例を示すフローチャートである。
【図8】検索用マスタ生成処理の一例を示すフローチャートである。
【図9】検索処理の一例を示すフローチャートである。
【図10】コスト算出の一例を示す図である。
【図11】コスト算出の一例を示す図である。
【発明を実施するための形態】
【0011】
以下、図面を参照して本発明の一実施形態について説明する。
【0012】
==構成==
図1は、本実施形態の住所検索装置の構成を示す図である。住所検索装置10は、ユーザから入力される検索文字列に関連性の高い住所を出力する情報処理装置である。なお、ユーザから入力される検索文字列は、ユーザ端末からネットワーク経由で住所検索装置10に送信されることとしてもよいし、住所検索装置10において入力されることとしてもよい。つまり、住所検索装置10は、ユーザ端末から入力される検索文字列に基づいて検索を行うサーバであってもよいし、カーナビゲーション装置のように単体で動作する装置であってもよい。
【0013】
図1に示すように、住所検索装置10は、住所データ記憶部20、辞書生成部22、辞書記憶部24、マスタ生成部26、検索用マスタ記憶部28、コスト情報記憶部30、検索要求受付部32、検索文字列分割部34、検索部36、検索結果出力部38、及び地域情報記憶部40を含んで構成されている。なお、住所データ記憶部20、辞書記憶部24、検索用マスタ記憶部28、コスト情報記憶部30、及び地域情報記憶部40は、住所検索装置10において、メモリや記憶装置等の記憶領域を用いて実現することができる。また、辞書生成部22、マスタ生成部26、検索要求受付部32、検索文字列分割部34、検索部36、及び検索結果出力部38は、住所検索装置10において、メモリに格納されたプログラムをプロセッサが実行することにより実現することができる。
【0014】
住所データ記憶部20には、階層ごとに区切られた住所データが記憶される。ここで、住所の階層は、例えば、上から順に「都道府県」、「市区町村」、「大字(文字)」、「字丁目」、「数字部分(地番)」により構成される。図2は、住所データ記憶部20に記憶される住所データの一例を示す図である。図2に示すように、例えば、「東京都中野区中野」の住所は、「東京」、「都」、「中野」、「区」、「中野」というように、階層ごとのデータに区切られている。また、住所データ記憶部20には、各階層の接尾辞も記憶されている。ここで、接尾辞とは、「都」、「県」、「市」、「区」等のように、住所の各階層の後に付与される語句である。なお、住所の階層を判別可能であれば、接尾辞そのものが住所データ記憶部20に格納されていなくてもよい。例えば、階層を識別するタグ情報とともに、各階層のデータが住所データ格納部20に格納されていることとしてもよい。あるいは、階層ごとにあらかじめ定められた位置に、各階層のデータが格納されていることとしてもよい。
【0015】
辞書生成部22は、住所データ記憶部20に記憶されている住所データから、住所に含まれうる単語に住所の階層情報を付与した辞書データを生成する。そして、辞書生成部22は、生成した辞書データを辞書記憶部24に格納する。図3は、辞書データ記憶部24に記憶される辞書データの一例を示す図である。図3には、図2に示した住所データから生成された辞書データが示されている。例えば、「東京都中野区中野」の住所データからは、「東京」という単語に階層情報「都道府県」を付与した辞書データが生成されている。同様に、「中野」という単語に階層情報「市区町村」を付与した辞書データが生成されている。さらに、「中野」という単語に階層情報「大字(文字)」を付与した辞書データが生成されている。また、他の住所データからも同様に辞書データが生成されている。さらに、辞書データ記憶部24には、同一住所で表記が異なる単語(バリエーション)を登録することも可能である。例えば、「霞が関」という大字(文字)の単語がある場合に、「霞ヶ関」や「霞関」をバリエーションの単語として登録しておくことができる。なお、バリエーションの単語は、手作業で生成されてもよいし、住所データから切り出された単語に対して所定の正規化を施すことにより生成されてもよい。また、辞書データ記憶部24では、一連のバリエーション、例えば、「霞が関」、「霞ヶ関」、「霞関」を、対応づけて記憶しておくことも可能である。
【0016】
マスタ生成部26は、住所データ記憶部20に記憶されている住所データを、辞書記憶部24に記憶されている単語で分割することにより、単語レベルに分割された住所データを生成して検索用マスタ記憶部28に格納する。ここで、マスタ生成部26は、単語レベルに分割された住所データに、単語のバリエーションを含ませておくこともできる。例えば、前述の例のように、元の住所データの単語が「霞が関」である場合に、「霞ヶ関」、「霞関」を含ませておくことができる。例えば、マスタ生成部26は、辞書記憶部24を参照することにより、辞書記憶部24に登録されているバリエーションの単語を検索用マスタ記憶部28に格納することができる。なお、バリエーションの単語は、手作業で生成されてもよいし、元の住所データの単語に対して所定の正規化を施すことによって生成されてもよい。
【0017】
また、マスタ生成部26は、住所データ記憶部20に記憶されている住所データから、文字レベルに分割された住所データを生成して検索用マスタ記憶部28に格納する。さらに、マスタ生成部26は、表示用の住所データや緯度経度等の付帯情報を検索用マスタ記憶部28に格納することができる。また、マスタ生成部26は、単語レベルで分割された住所データに対する単語単位での検索を高速に実行可能とするためのインデックスを生成し、検索用マスタ記憶部28に格納する。同様に、マスタ生成部26は、文字レベルで分割された住所データに対する文字単位での検索を高速に実行可能とするためのインデックスを生成し、検索用マスタ記憶部28に格納する。図4は、検索用マスタ記憶部28に記憶される検索用マスタの一例を示す図である。図4には、図2に示す住所データと図3に示す辞書データとに基づいて生成された検索用マスタが示されている。
【0018】
コスト情報記憶部30には、住所の階層間の連続可能性を示すコスト情報が記憶されている。ここで、「連続可能性」とは、各階層に分割された単語のつながりやすさを表すものである。なお、階層には接尾辞も含まれる。例えば、「中野」という「市区町村」の単語の直後には、「区」という「市区町村接尾辞」の単語が続く可能性が高い一方、「東京」という「都道府県」の単語が続く可能性は低い。
【0019】
図5は、コスト情報記憶部30に記憶されるコスト情報の一例を示す図である。図5には、縦軸を前の単語、横軸を次の単語とした場合のコスト情報が示されている。なお、本実施形態では、コスト情報は連続可能性が高いほど小さい値となる「コスト」としてコスト情報記憶部30に記憶されている。例えば、前の単語の階層が「市区町村」の場合、次の単語の階層が「都道府県」、「都道府県接尾辞」の場合のコストは「100」である。これは、「市区町村」の直後に「都道府県」、「都道府県接尾辞」が続く可能性が極めて低いことを示している。また、前の単語の階層が「市区町村」の場合、次の単語の階層が「市区町村接尾辞」となる場合のコストは「1」である。これは、「市区町村」の直後には「市区町村接尾辞」が続く可能性が最も高いことを示している。つまり、図5に示すコスト情報を参照すれば、「中野」という「市区町村」の直後に続く単語としては、「区」等の「市区町村接尾辞」が続く可能性が最も高い一方、「東京」や「都」が続く可能性は極めて低いことがわかる。なお、図5に示す例では、当然につながりうる階層間のコストには「1」〜「9」が設定されている。また、正式な住所としてはつながらないが、住所の順序関係が保たれている階層間のコストには「10」〜「70」が設定されている。また、順序関係が破壊されている階層間のコストには「100」が設定されている。そして、当然につながりうる階層間や、順序関係が保たれている階層間では、より近い階層間のコストが低くなっている。ただし、図5に示すコストの値は一例にすぎない。
【0020】
検索要求受付部32は、住所を検索するための検索文字列を含む検索要求をユーザから受け付ける。例えば、検索要求受付部32は、携帯端末やパーソナルコンピュータ等で入力される検索要求をインターネット等のネットワークを介して受信することができる。また、例えば、検索要求受付部32は、住所検索装置10においてユーザから入力される検索要求を受け付けることができる。
【0021】
検索文字列分割部34は、検索要求に含まれる検索文字列を辞書記憶部24に記憶されている単語で分割することにより、検索単語の組み合わせである検索単語リストを生成する。そして、生成された検索単語リストのうち、コスト情報記憶部30に記憶されているコストの合計値が最も小さくなる検索単語リストを出力する。また、検索文字列分割部34は、検索文字列を文字ごとに分割した検索文字の組み合わせである検索文字リストも出力する。なお、連結されない1つの単語のコストは「0」であることとする。
【0022】
例えば、検索文字列が「東京中野」であり、図3に示すように、「東京」、「中野」、「中」、「野」の単語が辞書記憶部24に記憶されている場合、検索文字列分割部34は、検索単語リストとして、「東京/中野」の組み合わせと、「東京/中/野」の組み合わせを生成することができる。ここで、図3の辞書データを参照すると、「東京」は「都道府県」、「中野」は「市区町村」または「大字(文字)」、「中」は「市区町村」、「野」は「大字(文字)」である。つまり、階層の遷移としては、図6に示す3パターンが考えられる。そして、図6に示す各パターンについて、図5に示すコスト情報に基づいてコストを求めると、「東京/中野」の組み合わせは、「都道府県」→「市区町村」の場合に「10」、「都道府県」→「大字(文字)」の場合に「30」となり、「東京/中/野」の組み合わせは、「30」となる。つまり、「東京/中野」の組み合わせのコストが最も小さくなっている。よって、この例の場合、検索文字列分割部34は、検索単語リスト「東京/中野」を出力する。
【0023】
検索部36は、検索文字列分割部34から出力される検索単語リスト及び検索文字リストを用いて検索用マスタ記憶部28に記憶されている検索用マスタを検索する。具体的には、検索部36は、検索単語リスト中の単語を含む住所データを検索する。また、検索部36は、検索文字リスト中の文字を含む住所データを検索する。そして、検索部36は、検索単語リスト及び検索文字リストのそれぞれに対する一致度を示す情報を含む検索結果を出力する。一致度を示す情報には、例えば、検索単語と一致する単語の数や、検索文字と一致する文字の数が含まれる。
【0024】
検索結果出力部38は、検索単語及び検索文字との一致度に応じて検索部36の検索結果を出力する。例えば、検索結果出力部38は、検索用マスタ記憶部28に記憶されている住所データについて、検索単語と一致する単語の数、および、検索文字と一致する文字の数に基づいて検索文字列に対するスコア(関連度)を算出し、スコアの高い順に住所に関連する情報が表示されるように検索結果を出力する。なお、検索結果出力部38は、スコアを算出する際に、文字の一致よりも単語の一致の重みを高くすることができる。具体的には、検索単語と一致する単語数が多い順に高いスコアとし、さらに、検索単語と一致する単語数が同一の住所については、検索文字と一致する文字数が多い順に高いスコアとすることができる。
【0025】
例えば、検索結果出力部38は、スコアの高い順に、検索用マスタに含まれる表示用住所データを出力することができる。また、例えば、検索結果出力部38は、スコアの最も高い住所データに対応する地図情報を出力することができる。また、検索結果出力部38は、スコアが同じ住所データについては、地域情報に応じた順序で検索結果を出力することができる。ここで、地域情報とは、各地域の人口密度やリアルタイムの混雑度等であり、地域情報記憶部40に記憶されている。例えば、検索結果出力部38は、同スコアの住所データについては、人口密度が高い地域の住所データがより上位となるように出力することができる。また、検索結果出力部38は、ユーザ端末あるいは住所検索装置10の現在位置に近い地域の住所データがより上位となるように出力することとしてもよい。また、検索結果出力部38は、同スコアの住所データについては、長さが短い住所データがより上位となるように出力することができる。例えば、「中央区日本橋」という検索文字列に対して、「東京都中央区日本橋」という住所データと、「大阪府大阪市中央区日本橋」という住所データが検索された場合、検索結果出力部38は、単語数が少ない「東京都中央区日本橋」の住所データが上位となるように検索結果を出力することができる。
【0026】
==処理==
住所検索装置10における処理の一例について説明する。
【0027】
図7は、辞書データ生成処理の一例を示すフローチャートである。辞書生成部22は、住所データ記憶部20に記憶されている住所データを参照し、階層ごとの住所文字列から住所の単語を取得する(S701)。そして、辞書生成部22は、取得した住所の単語に階層情報を付与して辞書データを生成し、辞書記憶部24に格納する(S702)。
【0028】
なお、辞書生成部22は、辞書データを生成する際に、住所データ記憶部20に記憶されている住所データに対して所定の正規化を施すこととしてもよい。ここで、正規化とは、例えば、片仮名を平仮名に変換したり、「ヶ」を「が」に変換したり、「2丁目10−5」を「2−10−5」に変換したりすることである。また、辞書生成部22は、一連の数字部分については1つの単語として辞書記憶部24に記憶することができる。例えば、辞書生成部22は、「2−10−5」を1つの単語として辞書記憶部24に記憶することができる。
【0029】
図8は、検索用マスタ生成処理の一例を示すフローチャートである。マスタ生成部26は、住所データ記憶部20及び辞書記憶部24を参照し、辞書データに登録されている単語と同一の区切りで単語レベルに分割された住所データを生成する(S801)。なお、辞書データに格納されている単語が正規化されている場合、マスタ生成部26によって生成される住所データも正規化されたものを用いることができる。また、マスタ生成部26は、住所データ記憶部20及び辞書記憶部24を参照し、文字レベルに分割された住所データを生成する(S802)。そして、マスタ生成部26は、単語レベルに分割された住所データと、文字レベルに分割された住所データに対するインデックスを生成し(S803)、住所データとともに検索用マスタ記憶部28に格納する(S804)。なお、マスタ生成部26は、表示用住所データや付帯情報についても検索用マスタ記憶部28に格納する。
【0030】
図9は、検索処理の一例を示すフローチャートである。まず、検索要求受付部32は、検索文字列を含む検索要求を受け付ける(S901)。検索要求が受け付けられると、検索文字列分割部34は、検索文字列から検索単語リスト及び検索文字リストを生成して出力する。具体的には、検索文字列分割部34は、辞書記憶部24に記憶されている単語を用いて検索文字列を分割することにより、検索単語リストの候補を生成する(S902)。続いて、検索文字列分割部34は、コスト記憶部30に記憶されているコスト情報に基づいて、各候補のコストを算出する(S903)。そして、検索文字列分割部34は、コストが最も低い検索単語リストと、検索文字リストとを出力する(S904)。なお、検索文字列分割部34は、辞書データに格納されている単語と同一の正規化を検索文字列に対して施した上で、検索単語リストを生成することができる。
【0031】
その後、検索部36は、検索単語リスト及び検索文字リストを用いて検索用マスタ記憶部28の検索を行う(S905)。そして、検索結果出力部38は、検索部36での検索結果に基づいて、検索単語リスト及び検索文字リストとの一致度の高い順に住所データを出力する(S906)。
【0032】
ここで、検索文字列の分割処理について、具体例を用いて説明する。なお、住所データ、辞書データ、及び検索用マスタは図2〜図4に示す状態であることとする。
【0033】
図10は、検索文字列に「東中野」が含まれている場合の一例を示している。検索文字列分割部34は、辞書記憶部24を参照し、検索文字列「東中野」から検索単語リストの候補を生成する。ここで、生成される検索単語リストの候補は、図10に示すように、「東中野」、「東/中野」、「東/中/野」の3つとなる。検索文字列分割部34は、各候補についてのコストを算出する。ここで、「東中野」は「大字(文字)」の1単語であるため、コストは「0」である。また、「東/中野」は、「市区町村」→「市区町村」の場合のコストが「10」、「市区町村」→「大字(文字)」の場合のコストが「20」となる。また、「東/中/野」は、「市区町村」→「市区町村」→「大字(文字)」であり、コストは「30」となる。よって、検索文字列分割部34は、コストが最も低い「東中野」を検索単語リストとして出力する。なお、この例に示すように、1単語の検索単語リストは最もコストが低くなる。そのため、検索文字列分割部34は、1単語の検索単語リストが存在する場合には、他の検索単語リストのコストを算出することなく、1単語の検索単語リストを出力することとしてもよい。
【0034】
そして、検索単語リスト「東中野」が出力されると、検索部36は検索単語リスト「東中野」を用いて検索用マスタ記憶部28の検索を行う。ここでは、説明を簡略化するため、検索文字リストについては考慮しないこととする。検索部36は、検索単語リスト「東中野」をキーとして、検索用マスタの単語レベルの住所データを検索する。このとき、「東京/都/中野/区/東中野/・・・」の住所データはマッチするが、「静岡/県/浜松/市/東/区/中野/町/・・・」の住所データはマッチしない。したがって、検索結果出力部38は、スコアが最も高い「東京都中野区東中野・・・」の住所データを出力する。
【0035】
ここで、仮に、検索文字列「東中野」が「東/中野」に分割された場合を検討する。この場合、「東京/都/中野/区/中野/・・・」の住所データは、検索単語「中野」との一致数が「2」となる。また、「東京/都/中野/区/東中野/・・・」の住所データは、検索単語「中野」との一致数が「1」となる。また、「静岡/県/浜松/市/東/区/中野/町/・・・」の住所データは、検索単語「東」との一致数が「1」、検索単語「中野」との一致数が「1」であり、一致数の合計値は「2」となる。よって、単純に検索単語との一致数に従ってスコアが決定されることとすると、「東京都中野区東中野・・・」の住所データよりも、「静岡県浜松市東区中野町・・・」の住所データの方がスコアが高くなってしまう。つまり、ユーザが入力した「東中野」という検索文字列を、住所の階層間の連続可能性を考慮せずに「東/中野」に分割してしまうと、ユーザの意図に反した情報が検索結果として出力されてしまう可能性がある。
【0036】
これに対して、本実施形態では、コスト情報に基づいて住所の階層間の連続可能性を考慮した結果、ユーザが入力した「東中野」という検索文字列から「東中野」という検索単語リストが生成される。したがって、ユーザの意図をより反映したと考えられる検索結果を出力することが可能となる。
【0037】
図11に、別の具体例を示す。図11は、検索文字列に「中野東」が含まれている場合の一例を示している。検索文字列分割部34は、辞書記憶部24を参照し、検索文字列「中野東」から検索単語リストの候補を生成する。ここで、生成される検索単語リストの候補は、図11に示すように、「中野東」、「中野/東」、「中/野/東」の3つとなる。検索文字列分割部34は、各候補についてのコストを算出する。ここで、「中野東」は「大字(文字)」の1単語であるため、コストは「0」である。また、「中野/東」は、「市区町村」→「市区町村」の場合のコストが「10」、「大字(文字)」→「市区町村」の場合のコストが「100」となる。また、「中/野/東」は、「市区町村」→「大字(文字)」→「市区町村」であり、コストは「120」となる。よって、検索文字列分割部34は、コストが最も低い「中野東」を検索単語リストとして出力する。
【0038】
そして、検索単語リスト「中野東」を用いて検索用マスタ記憶部28が検索されることにより、「中野東」を単語として含む、「広島県広島市安芸区中野東町・・・」の住所データが出力される。
【0039】
ここで、仮に、検索文字列「中野東」が「中野/東」に分割された場合を検討する。この場合、検索単語リスト「中野/東」との一致数は、「広島/県/広島/市/安芸/区/中野東/町・・・」の住所データが「0」である一方、「静岡/県/浜松/市/東/区/中野/町/・・・」の住所データは「2」となる。つまり、検索文字列「中野東」とは順序が異なり、「東」、「中野」の順の階層となっている住所データが検索結果の上位として出力されてしまう。
【0040】
これに対して、本実施形態では、コスト情報に基づいて住所の階層間の連続可能性を考慮した結果、ユーザが入力した「中野東」という検索文字列から「中野東」という検索単語リストが生成されることにより、ユーザの意図をより反映したと考えられる検索結果を出力することが可能となる。
【0041】
つまり、本実施形態によれば、住所の構造を考慮したうえで検索文字列から検索単語を生成し、生成された検索単語に基づいて住所データの検索を行うことにより、ユーザの意図を反映した検索結果を出力することが可能となる。
【0042】
また、本実施形態では、辞書生成時と同一の規則で検索文字列を正規化して検索単語を生成することが可能であるため、検索単語を検索用マスタとマッチングする際の精度を向上させることができる。
【0043】
また、本実施形態では、辞書データを生成する際に、住所に含まれる一連の数字部分を1つの単語とすることが可能である。これにより、例えば、検索文字列に「2−10−5」が含まれる場合、「2」、「10」、「5」の各文字によるマッチングではなく、「2−10−5」という単語でのマッチングが可能となり、より精度の高い検索が可能となる。
【0044】
また、本実施形態では、検索用マスタに、同一住所で表記が異なる複数種類の単語を含ませることができる。これにより、検索文字列と検索用マスタとのマッチング率を高めることができる。例えば、元の住所データが「霞が関」である場合に、検索用マスタに「霞ヶ関」、「霞関」のバリエーションが登録されていれば、検索文字列に「霞が関」が含まれる場合に限らず、「霞ヶ関」や「霞関」が含まれる場合においても検索用マスタとのマッチングが可能となる。
【0045】
なお、本実施形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更/改良され得るととともに、本発明にはその等価物も含まれる。
【0046】
例えば、本実施形態では、住所データ記憶部20が住所検索装置10に含まれることとしたが、住所データが住所検索装置10の外部から入力されることとしてもよい。
【0047】
また、例えば、本実施形態では、検索文字列から生成される検索単語を用いて、単語レベルに分割された住所データを含む検索用マスタを検索することとしたが、検索対象はこれに限られない。例えば、検索文字列から生成される検索単語が含まれる平文が検索されることとしてもよい。この場合、検索対象となる平文が検索用の住所データであり、このような平文を記憶する記憶部が検索用マスタ記憶部となる。また、平文に限らず、住所の一部となる文字列を含みうる任意のデータを、検索用の住所データとすることができる。
【符号の説明】
【0048】
10 住所検索装置
20 辞書生成部
22 住所データ記憶部
24 辞書記憶部
26 マスタ生成部
28 検索用マスタ記憶部
30 コスト情報記憶部
32 検索要求受付部
34 検索文字列分割部
36 検索部
38 検索結果出力部
40 地域情報記憶部
【技術分野】
【0001】
本発明は、住所検索装置及び住所検索方法に関する。
【背景技術】
【0002】
近年、様々な情報を検索可能な検索サービスが広く利用されている。このような検索サービスでは、ユーザから入力された検索文字列で検索用のデータベースを検索することにより、検索文字列に関連する情報が出力される。例えば、ユーザから入力された検索文字列に関連する住所や、この住所付近の地図を表示する住所検索システムが知られている(特許文献1)。
【0003】
ところで、住所検索システムでは、入力される検索文字列は住所通りに入力されるとは限らないため、一般的に、検索文字列を住所として可能性のある単語に分割したうえで検索が実行される。具体的には、検索文字列から検索単語を生成し、検索単語との一致数が多い住所ほど検索結果の上位として出力することができる。例えば、検索文字列として「東京中野」が入力された場合に、検索単語「東京」、「中野」が生成されたとする。このとき、単語レベルで分割された「東京/都/中野/区/中野/・・・」の住所は、「東京」を1つ、「中野」を2つ含むため、検索単語との一致数は「3」となる。一方、「静岡/県/浜松/市/東/区/中野/・・・」の住所は、「中野」を1つ含むのみであるため、検索単語との一致数は「1」となる。よって、検索単語との一致数のみを考慮すれば、検索文字列「東京中野」に対する検索結果としては、「東京都中野区中野・・・」が「静岡県浜松市東区中野・・・」よりも上位として出力される。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2003−186880号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、検索文字列の分割によっては、検索結果がユーザの意図したものと異なってしまう場合がある。例えば、検索文字列として「東中野」と入力された場合に、検索単語「東」、「中野」が生成されたとする。このとき、「東京/都/中野/区/東中野/・・・」の住所は「中野」を1つ含むため、検索単語との一致数は「1」となる。一方、「静岡/県/浜松/市/東/区/中野/・・・」の住所は、「東」を1つ、「中野」を1つ含むため、検索単語との一致数は「2」となる。よって、検索単語との一致数のみを考慮すれば、検索文字列「東中野」に対する検索結果として、「東京都中野区東中野」よりも「静岡県浜松市東区中野」の方が上位として出力されてしまう。つまり、検索文字列と同じ「東中野」という1つの大字を含む住所よりも、「東」という1つの市区町村と、「中野」という1つの大字とを含む住所の方が上位として出力されてしまう。
【0006】
本発明はこのような事情に鑑みてなされたものであり、住所の構造を考慮した住所検索を可能とすることを目的とする。
【課題を解決するための手段】
【0007】
本発明の一側面に係る住所検索装置は、住所に含まれうる単語を、住所の階層を示す階層情報と対応付けて記憶する辞書記憶部と、住所の階層間の連続可能性を示すコスト情報を記憶するコスト記憶部と、検索用の住所データを記憶する検索用マスタ記憶部と、住所を検索するための検索文字列を含む検索要求を受け付ける検索要求受付部と、検索文字列を辞書記憶部に記憶されている単語で分割して得られる検索単語の組み合わせのうち、連続可能性の高い検索単語の組み合わせを、コスト情報に基づいて出力する検索文字列分割部と、検索用マスタ記憶部に記憶されている住所データの中から、検索文字列分割部から出力される検索単語が含まれる住所データを検索する検索部と、検索単語との一致度に応じて検索部の検索結果を出力する検索結果出力部と、を備える。
【0008】
なお、本発明において、「部」とは、単に物理的手段を意味するものではなく、その「部」が有する機能をソフトウェアによって実現する場合も含む。また、1つの「部」や装置が有する機能が2つ以上の物理的手段や装置により実現されても、2つ以上の「部」や装置の機能が1つの物理的手段や装置により実現されても良い。
【発明の効果】
【0009】
本発明によれば、住所の構造を考慮した住所検索が可能となる。
【図面の簡単な説明】
【0010】
【図1】本実施形態の住所検索装置の構成を示す図である。
【図2】住所データの一例を示す図である。
【図3】辞書データの一例を示す図である。
【図4】検索用マスタの一例を示す図である。
【図5】コスト情報の一例を示す図である。
【図6】コスト算出の一例を示す図である。
【図7】辞書データ生成処理の一例を示すフローチャートである。
【図8】検索用マスタ生成処理の一例を示すフローチャートである。
【図9】検索処理の一例を示すフローチャートである。
【図10】コスト算出の一例を示す図である。
【図11】コスト算出の一例を示す図である。
【発明を実施するための形態】
【0011】
以下、図面を参照して本発明の一実施形態について説明する。
【0012】
==構成==
図1は、本実施形態の住所検索装置の構成を示す図である。住所検索装置10は、ユーザから入力される検索文字列に関連性の高い住所を出力する情報処理装置である。なお、ユーザから入力される検索文字列は、ユーザ端末からネットワーク経由で住所検索装置10に送信されることとしてもよいし、住所検索装置10において入力されることとしてもよい。つまり、住所検索装置10は、ユーザ端末から入力される検索文字列に基づいて検索を行うサーバであってもよいし、カーナビゲーション装置のように単体で動作する装置であってもよい。
【0013】
図1に示すように、住所検索装置10は、住所データ記憶部20、辞書生成部22、辞書記憶部24、マスタ生成部26、検索用マスタ記憶部28、コスト情報記憶部30、検索要求受付部32、検索文字列分割部34、検索部36、検索結果出力部38、及び地域情報記憶部40を含んで構成されている。なお、住所データ記憶部20、辞書記憶部24、検索用マスタ記憶部28、コスト情報記憶部30、及び地域情報記憶部40は、住所検索装置10において、メモリや記憶装置等の記憶領域を用いて実現することができる。また、辞書生成部22、マスタ生成部26、検索要求受付部32、検索文字列分割部34、検索部36、及び検索結果出力部38は、住所検索装置10において、メモリに格納されたプログラムをプロセッサが実行することにより実現することができる。
【0014】
住所データ記憶部20には、階層ごとに区切られた住所データが記憶される。ここで、住所の階層は、例えば、上から順に「都道府県」、「市区町村」、「大字(文字)」、「字丁目」、「数字部分(地番)」により構成される。図2は、住所データ記憶部20に記憶される住所データの一例を示す図である。図2に示すように、例えば、「東京都中野区中野」の住所は、「東京」、「都」、「中野」、「区」、「中野」というように、階層ごとのデータに区切られている。また、住所データ記憶部20には、各階層の接尾辞も記憶されている。ここで、接尾辞とは、「都」、「県」、「市」、「区」等のように、住所の各階層の後に付与される語句である。なお、住所の階層を判別可能であれば、接尾辞そのものが住所データ記憶部20に格納されていなくてもよい。例えば、階層を識別するタグ情報とともに、各階層のデータが住所データ格納部20に格納されていることとしてもよい。あるいは、階層ごとにあらかじめ定められた位置に、各階層のデータが格納されていることとしてもよい。
【0015】
辞書生成部22は、住所データ記憶部20に記憶されている住所データから、住所に含まれうる単語に住所の階層情報を付与した辞書データを生成する。そして、辞書生成部22は、生成した辞書データを辞書記憶部24に格納する。図3は、辞書データ記憶部24に記憶される辞書データの一例を示す図である。図3には、図2に示した住所データから生成された辞書データが示されている。例えば、「東京都中野区中野」の住所データからは、「東京」という単語に階層情報「都道府県」を付与した辞書データが生成されている。同様に、「中野」という単語に階層情報「市区町村」を付与した辞書データが生成されている。さらに、「中野」という単語に階層情報「大字(文字)」を付与した辞書データが生成されている。また、他の住所データからも同様に辞書データが生成されている。さらに、辞書データ記憶部24には、同一住所で表記が異なる単語(バリエーション)を登録することも可能である。例えば、「霞が関」という大字(文字)の単語がある場合に、「霞ヶ関」や「霞関」をバリエーションの単語として登録しておくことができる。なお、バリエーションの単語は、手作業で生成されてもよいし、住所データから切り出された単語に対して所定の正規化を施すことにより生成されてもよい。また、辞書データ記憶部24では、一連のバリエーション、例えば、「霞が関」、「霞ヶ関」、「霞関」を、対応づけて記憶しておくことも可能である。
【0016】
マスタ生成部26は、住所データ記憶部20に記憶されている住所データを、辞書記憶部24に記憶されている単語で分割することにより、単語レベルに分割された住所データを生成して検索用マスタ記憶部28に格納する。ここで、マスタ生成部26は、単語レベルに分割された住所データに、単語のバリエーションを含ませておくこともできる。例えば、前述の例のように、元の住所データの単語が「霞が関」である場合に、「霞ヶ関」、「霞関」を含ませておくことができる。例えば、マスタ生成部26は、辞書記憶部24を参照することにより、辞書記憶部24に登録されているバリエーションの単語を検索用マスタ記憶部28に格納することができる。なお、バリエーションの単語は、手作業で生成されてもよいし、元の住所データの単語に対して所定の正規化を施すことによって生成されてもよい。
【0017】
また、マスタ生成部26は、住所データ記憶部20に記憶されている住所データから、文字レベルに分割された住所データを生成して検索用マスタ記憶部28に格納する。さらに、マスタ生成部26は、表示用の住所データや緯度経度等の付帯情報を検索用マスタ記憶部28に格納することができる。また、マスタ生成部26は、単語レベルで分割された住所データに対する単語単位での検索を高速に実行可能とするためのインデックスを生成し、検索用マスタ記憶部28に格納する。同様に、マスタ生成部26は、文字レベルで分割された住所データに対する文字単位での検索を高速に実行可能とするためのインデックスを生成し、検索用マスタ記憶部28に格納する。図4は、検索用マスタ記憶部28に記憶される検索用マスタの一例を示す図である。図4には、図2に示す住所データと図3に示す辞書データとに基づいて生成された検索用マスタが示されている。
【0018】
コスト情報記憶部30には、住所の階層間の連続可能性を示すコスト情報が記憶されている。ここで、「連続可能性」とは、各階層に分割された単語のつながりやすさを表すものである。なお、階層には接尾辞も含まれる。例えば、「中野」という「市区町村」の単語の直後には、「区」という「市区町村接尾辞」の単語が続く可能性が高い一方、「東京」という「都道府県」の単語が続く可能性は低い。
【0019】
図5は、コスト情報記憶部30に記憶されるコスト情報の一例を示す図である。図5には、縦軸を前の単語、横軸を次の単語とした場合のコスト情報が示されている。なお、本実施形態では、コスト情報は連続可能性が高いほど小さい値となる「コスト」としてコスト情報記憶部30に記憶されている。例えば、前の単語の階層が「市区町村」の場合、次の単語の階層が「都道府県」、「都道府県接尾辞」の場合のコストは「100」である。これは、「市区町村」の直後に「都道府県」、「都道府県接尾辞」が続く可能性が極めて低いことを示している。また、前の単語の階層が「市区町村」の場合、次の単語の階層が「市区町村接尾辞」となる場合のコストは「1」である。これは、「市区町村」の直後には「市区町村接尾辞」が続く可能性が最も高いことを示している。つまり、図5に示すコスト情報を参照すれば、「中野」という「市区町村」の直後に続く単語としては、「区」等の「市区町村接尾辞」が続く可能性が最も高い一方、「東京」や「都」が続く可能性は極めて低いことがわかる。なお、図5に示す例では、当然につながりうる階層間のコストには「1」〜「9」が設定されている。また、正式な住所としてはつながらないが、住所の順序関係が保たれている階層間のコストには「10」〜「70」が設定されている。また、順序関係が破壊されている階層間のコストには「100」が設定されている。そして、当然につながりうる階層間や、順序関係が保たれている階層間では、より近い階層間のコストが低くなっている。ただし、図5に示すコストの値は一例にすぎない。
【0020】
検索要求受付部32は、住所を検索するための検索文字列を含む検索要求をユーザから受け付ける。例えば、検索要求受付部32は、携帯端末やパーソナルコンピュータ等で入力される検索要求をインターネット等のネットワークを介して受信することができる。また、例えば、検索要求受付部32は、住所検索装置10においてユーザから入力される検索要求を受け付けることができる。
【0021】
検索文字列分割部34は、検索要求に含まれる検索文字列を辞書記憶部24に記憶されている単語で分割することにより、検索単語の組み合わせである検索単語リストを生成する。そして、生成された検索単語リストのうち、コスト情報記憶部30に記憶されているコストの合計値が最も小さくなる検索単語リストを出力する。また、検索文字列分割部34は、検索文字列を文字ごとに分割した検索文字の組み合わせである検索文字リストも出力する。なお、連結されない1つの単語のコストは「0」であることとする。
【0022】
例えば、検索文字列が「東京中野」であり、図3に示すように、「東京」、「中野」、「中」、「野」の単語が辞書記憶部24に記憶されている場合、検索文字列分割部34は、検索単語リストとして、「東京/中野」の組み合わせと、「東京/中/野」の組み合わせを生成することができる。ここで、図3の辞書データを参照すると、「東京」は「都道府県」、「中野」は「市区町村」または「大字(文字)」、「中」は「市区町村」、「野」は「大字(文字)」である。つまり、階層の遷移としては、図6に示す3パターンが考えられる。そして、図6に示す各パターンについて、図5に示すコスト情報に基づいてコストを求めると、「東京/中野」の組み合わせは、「都道府県」→「市区町村」の場合に「10」、「都道府県」→「大字(文字)」の場合に「30」となり、「東京/中/野」の組み合わせは、「30」となる。つまり、「東京/中野」の組み合わせのコストが最も小さくなっている。よって、この例の場合、検索文字列分割部34は、検索単語リスト「東京/中野」を出力する。
【0023】
検索部36は、検索文字列分割部34から出力される検索単語リスト及び検索文字リストを用いて検索用マスタ記憶部28に記憶されている検索用マスタを検索する。具体的には、検索部36は、検索単語リスト中の単語を含む住所データを検索する。また、検索部36は、検索文字リスト中の文字を含む住所データを検索する。そして、検索部36は、検索単語リスト及び検索文字リストのそれぞれに対する一致度を示す情報を含む検索結果を出力する。一致度を示す情報には、例えば、検索単語と一致する単語の数や、検索文字と一致する文字の数が含まれる。
【0024】
検索結果出力部38は、検索単語及び検索文字との一致度に応じて検索部36の検索結果を出力する。例えば、検索結果出力部38は、検索用マスタ記憶部28に記憶されている住所データについて、検索単語と一致する単語の数、および、検索文字と一致する文字の数に基づいて検索文字列に対するスコア(関連度)を算出し、スコアの高い順に住所に関連する情報が表示されるように検索結果を出力する。なお、検索結果出力部38は、スコアを算出する際に、文字の一致よりも単語の一致の重みを高くすることができる。具体的には、検索単語と一致する単語数が多い順に高いスコアとし、さらに、検索単語と一致する単語数が同一の住所については、検索文字と一致する文字数が多い順に高いスコアとすることができる。
【0025】
例えば、検索結果出力部38は、スコアの高い順に、検索用マスタに含まれる表示用住所データを出力することができる。また、例えば、検索結果出力部38は、スコアの最も高い住所データに対応する地図情報を出力することができる。また、検索結果出力部38は、スコアが同じ住所データについては、地域情報に応じた順序で検索結果を出力することができる。ここで、地域情報とは、各地域の人口密度やリアルタイムの混雑度等であり、地域情報記憶部40に記憶されている。例えば、検索結果出力部38は、同スコアの住所データについては、人口密度が高い地域の住所データがより上位となるように出力することができる。また、検索結果出力部38は、ユーザ端末あるいは住所検索装置10の現在位置に近い地域の住所データがより上位となるように出力することとしてもよい。また、検索結果出力部38は、同スコアの住所データについては、長さが短い住所データがより上位となるように出力することができる。例えば、「中央区日本橋」という検索文字列に対して、「東京都中央区日本橋」という住所データと、「大阪府大阪市中央区日本橋」という住所データが検索された場合、検索結果出力部38は、単語数が少ない「東京都中央区日本橋」の住所データが上位となるように検索結果を出力することができる。
【0026】
==処理==
住所検索装置10における処理の一例について説明する。
【0027】
図7は、辞書データ生成処理の一例を示すフローチャートである。辞書生成部22は、住所データ記憶部20に記憶されている住所データを参照し、階層ごとの住所文字列から住所の単語を取得する(S701)。そして、辞書生成部22は、取得した住所の単語に階層情報を付与して辞書データを生成し、辞書記憶部24に格納する(S702)。
【0028】
なお、辞書生成部22は、辞書データを生成する際に、住所データ記憶部20に記憶されている住所データに対して所定の正規化を施すこととしてもよい。ここで、正規化とは、例えば、片仮名を平仮名に変換したり、「ヶ」を「が」に変換したり、「2丁目10−5」を「2−10−5」に変換したりすることである。また、辞書生成部22は、一連の数字部分については1つの単語として辞書記憶部24に記憶することができる。例えば、辞書生成部22は、「2−10−5」を1つの単語として辞書記憶部24に記憶することができる。
【0029】
図8は、検索用マスタ生成処理の一例を示すフローチャートである。マスタ生成部26は、住所データ記憶部20及び辞書記憶部24を参照し、辞書データに登録されている単語と同一の区切りで単語レベルに分割された住所データを生成する(S801)。なお、辞書データに格納されている単語が正規化されている場合、マスタ生成部26によって生成される住所データも正規化されたものを用いることができる。また、マスタ生成部26は、住所データ記憶部20及び辞書記憶部24を参照し、文字レベルに分割された住所データを生成する(S802)。そして、マスタ生成部26は、単語レベルに分割された住所データと、文字レベルに分割された住所データに対するインデックスを生成し(S803)、住所データとともに検索用マスタ記憶部28に格納する(S804)。なお、マスタ生成部26は、表示用住所データや付帯情報についても検索用マスタ記憶部28に格納する。
【0030】
図9は、検索処理の一例を示すフローチャートである。まず、検索要求受付部32は、検索文字列を含む検索要求を受け付ける(S901)。検索要求が受け付けられると、検索文字列分割部34は、検索文字列から検索単語リスト及び検索文字リストを生成して出力する。具体的には、検索文字列分割部34は、辞書記憶部24に記憶されている単語を用いて検索文字列を分割することにより、検索単語リストの候補を生成する(S902)。続いて、検索文字列分割部34は、コスト記憶部30に記憶されているコスト情報に基づいて、各候補のコストを算出する(S903)。そして、検索文字列分割部34は、コストが最も低い検索単語リストと、検索文字リストとを出力する(S904)。なお、検索文字列分割部34は、辞書データに格納されている単語と同一の正規化を検索文字列に対して施した上で、検索単語リストを生成することができる。
【0031】
その後、検索部36は、検索単語リスト及び検索文字リストを用いて検索用マスタ記憶部28の検索を行う(S905)。そして、検索結果出力部38は、検索部36での検索結果に基づいて、検索単語リスト及び検索文字リストとの一致度の高い順に住所データを出力する(S906)。
【0032】
ここで、検索文字列の分割処理について、具体例を用いて説明する。なお、住所データ、辞書データ、及び検索用マスタは図2〜図4に示す状態であることとする。
【0033】
図10は、検索文字列に「東中野」が含まれている場合の一例を示している。検索文字列分割部34は、辞書記憶部24を参照し、検索文字列「東中野」から検索単語リストの候補を生成する。ここで、生成される検索単語リストの候補は、図10に示すように、「東中野」、「東/中野」、「東/中/野」の3つとなる。検索文字列分割部34は、各候補についてのコストを算出する。ここで、「東中野」は「大字(文字)」の1単語であるため、コストは「0」である。また、「東/中野」は、「市区町村」→「市区町村」の場合のコストが「10」、「市区町村」→「大字(文字)」の場合のコストが「20」となる。また、「東/中/野」は、「市区町村」→「市区町村」→「大字(文字)」であり、コストは「30」となる。よって、検索文字列分割部34は、コストが最も低い「東中野」を検索単語リストとして出力する。なお、この例に示すように、1単語の検索単語リストは最もコストが低くなる。そのため、検索文字列分割部34は、1単語の検索単語リストが存在する場合には、他の検索単語リストのコストを算出することなく、1単語の検索単語リストを出力することとしてもよい。
【0034】
そして、検索単語リスト「東中野」が出力されると、検索部36は検索単語リスト「東中野」を用いて検索用マスタ記憶部28の検索を行う。ここでは、説明を簡略化するため、検索文字リストについては考慮しないこととする。検索部36は、検索単語リスト「東中野」をキーとして、検索用マスタの単語レベルの住所データを検索する。このとき、「東京/都/中野/区/東中野/・・・」の住所データはマッチするが、「静岡/県/浜松/市/東/区/中野/町/・・・」の住所データはマッチしない。したがって、検索結果出力部38は、スコアが最も高い「東京都中野区東中野・・・」の住所データを出力する。
【0035】
ここで、仮に、検索文字列「東中野」が「東/中野」に分割された場合を検討する。この場合、「東京/都/中野/区/中野/・・・」の住所データは、検索単語「中野」との一致数が「2」となる。また、「東京/都/中野/区/東中野/・・・」の住所データは、検索単語「中野」との一致数が「1」となる。また、「静岡/県/浜松/市/東/区/中野/町/・・・」の住所データは、検索単語「東」との一致数が「1」、検索単語「中野」との一致数が「1」であり、一致数の合計値は「2」となる。よって、単純に検索単語との一致数に従ってスコアが決定されることとすると、「東京都中野区東中野・・・」の住所データよりも、「静岡県浜松市東区中野町・・・」の住所データの方がスコアが高くなってしまう。つまり、ユーザが入力した「東中野」という検索文字列を、住所の階層間の連続可能性を考慮せずに「東/中野」に分割してしまうと、ユーザの意図に反した情報が検索結果として出力されてしまう可能性がある。
【0036】
これに対して、本実施形態では、コスト情報に基づいて住所の階層間の連続可能性を考慮した結果、ユーザが入力した「東中野」という検索文字列から「東中野」という検索単語リストが生成される。したがって、ユーザの意図をより反映したと考えられる検索結果を出力することが可能となる。
【0037】
図11に、別の具体例を示す。図11は、検索文字列に「中野東」が含まれている場合の一例を示している。検索文字列分割部34は、辞書記憶部24を参照し、検索文字列「中野東」から検索単語リストの候補を生成する。ここで、生成される検索単語リストの候補は、図11に示すように、「中野東」、「中野/東」、「中/野/東」の3つとなる。検索文字列分割部34は、各候補についてのコストを算出する。ここで、「中野東」は「大字(文字)」の1単語であるため、コストは「0」である。また、「中野/東」は、「市区町村」→「市区町村」の場合のコストが「10」、「大字(文字)」→「市区町村」の場合のコストが「100」となる。また、「中/野/東」は、「市区町村」→「大字(文字)」→「市区町村」であり、コストは「120」となる。よって、検索文字列分割部34は、コストが最も低い「中野東」を検索単語リストとして出力する。
【0038】
そして、検索単語リスト「中野東」を用いて検索用マスタ記憶部28が検索されることにより、「中野東」を単語として含む、「広島県広島市安芸区中野東町・・・」の住所データが出力される。
【0039】
ここで、仮に、検索文字列「中野東」が「中野/東」に分割された場合を検討する。この場合、検索単語リスト「中野/東」との一致数は、「広島/県/広島/市/安芸/区/中野東/町・・・」の住所データが「0」である一方、「静岡/県/浜松/市/東/区/中野/町/・・・」の住所データは「2」となる。つまり、検索文字列「中野東」とは順序が異なり、「東」、「中野」の順の階層となっている住所データが検索結果の上位として出力されてしまう。
【0040】
これに対して、本実施形態では、コスト情報に基づいて住所の階層間の連続可能性を考慮した結果、ユーザが入力した「中野東」という検索文字列から「中野東」という検索単語リストが生成されることにより、ユーザの意図をより反映したと考えられる検索結果を出力することが可能となる。
【0041】
つまり、本実施形態によれば、住所の構造を考慮したうえで検索文字列から検索単語を生成し、生成された検索単語に基づいて住所データの検索を行うことにより、ユーザの意図を反映した検索結果を出力することが可能となる。
【0042】
また、本実施形態では、辞書生成時と同一の規則で検索文字列を正規化して検索単語を生成することが可能であるため、検索単語を検索用マスタとマッチングする際の精度を向上させることができる。
【0043】
また、本実施形態では、辞書データを生成する際に、住所に含まれる一連の数字部分を1つの単語とすることが可能である。これにより、例えば、検索文字列に「2−10−5」が含まれる場合、「2」、「10」、「5」の各文字によるマッチングではなく、「2−10−5」という単語でのマッチングが可能となり、より精度の高い検索が可能となる。
【0044】
また、本実施形態では、検索用マスタに、同一住所で表記が異なる複数種類の単語を含ませることができる。これにより、検索文字列と検索用マスタとのマッチング率を高めることができる。例えば、元の住所データが「霞が関」である場合に、検索用マスタに「霞ヶ関」、「霞関」のバリエーションが登録されていれば、検索文字列に「霞が関」が含まれる場合に限らず、「霞ヶ関」や「霞関」が含まれる場合においても検索用マスタとのマッチングが可能となる。
【0045】
なお、本実施形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更/改良され得るととともに、本発明にはその等価物も含まれる。
【0046】
例えば、本実施形態では、住所データ記憶部20が住所検索装置10に含まれることとしたが、住所データが住所検索装置10の外部から入力されることとしてもよい。
【0047】
また、例えば、本実施形態では、検索文字列から生成される検索単語を用いて、単語レベルに分割された住所データを含む検索用マスタを検索することとしたが、検索対象はこれに限られない。例えば、検索文字列から生成される検索単語が含まれる平文が検索されることとしてもよい。この場合、検索対象となる平文が検索用の住所データであり、このような平文を記憶する記憶部が検索用マスタ記憶部となる。また、平文に限らず、住所の一部となる文字列を含みうる任意のデータを、検索用の住所データとすることができる。
【符号の説明】
【0048】
10 住所検索装置
20 辞書生成部
22 住所データ記憶部
24 辞書記憶部
26 マスタ生成部
28 検索用マスタ記憶部
30 コスト情報記憶部
32 検索要求受付部
34 検索文字列分割部
36 検索部
38 検索結果出力部
40 地域情報記憶部
【特許請求の範囲】
【請求項1】
住所に含まれうる単語を、住所の階層を示す階層情報と対応付けて記憶する辞書記憶部と、
住所の階層間の連続可能性を示すコスト情報を記憶するコスト記憶部と、
検索用の住所データを記憶する検索用マスタ記憶部と、
住所を検索するための検索文字列を含む検索要求を受け付ける検索要求受付部と、
前記検索文字列を前記辞書記憶部に記憶されている単語で分割して得られる検索単語の組み合わせのうち、連続可能性の高い検索単語の組み合わせを、前記コスト情報に基づいて出力する検索文字列分割部と、
前記検索用マスタ記憶部に記憶されている住所データの中から、前記検索文字列分割部から出力される検索単語が含まれる住所データを検索する検索部と、
前記検索単語との一致度に応じて前記検索部の検索結果を出力する検索結果出力部と、
を備える住所検索装置。
【請求項2】
請求項1に記載の住所検索装置であって、
階層ごとに分割された住所データを記憶する住所データ記憶部と、
前記階層ごとに分割された住所データから、前記住所に含まれうる単語及び前記階層情報を生成して前記辞書記憶部に格納する辞書生成部をさらに備える、
住所検索装置。
【請求項3】
請求項2に記載の住所検索装置であって、
前記辞書生成部は、前記階層ごとに分割された住所データから、所定の規則に従って正規化された、前記住所に含まれうる単語を生成する、
住所検索装置。
【請求項4】
請求項3に記載の住所検索装置であって、
前記検索文字列分割部は、前記所定の規則に従って正規化された、前記検索単語の組み合わせを出力する、
住所検索装置。
【請求項5】
請求項2〜4の何れか一項に記載の住所検索装置であって、
前記辞書生成部は、住所に含まれる一連の数字部分を1つの単語として前記辞書記憶部に格納する、
住所検索装置。
【請求項6】
請求項1〜5の何れか一項に記載の住所検索装置であって、
前記検索用マスタ記憶部は、同一住所に対する表記が異なる複数種類の単語を前記検索用の住所データに含ませることができる、
住所検索装置。
【請求項7】
請求項1〜6の何れか一項に記載の住所検索装置であって、
各地域の情報を示す地域情報を記憶する地域情報記憶部をさらに備え、
前記検索結果出力部は、前記地域情報に応じた順序で前記検索結果を出力する、
住所検索装置。
【請求項8】
請求項1〜7の何れか一項に記載の住所検索装置であって、
前記検索結果出力部は、前記検索単語が含まれる住所データの長さに応じた順序で検索結果を出力する、
住所検索装置。
【請求項9】
住所に含まれうる単語を、住所の階層を示す階層情報と対応付けて辞書記憶部に記憶し、
住所の階層間の連続可能性を示すコスト情報をコスト記憶部に記憶し、
検索用の住所データを検索用マスタ記憶部に記憶し、
住所を検索するための検索文字列を含む検索要求を受け付け、
前記検索文字列を前記辞書記憶部に記憶されている単語で分割して得られる検索単語の組み合わせのうち、連続可能性の高い検索単語の組み合わせを、前記コスト情報に基づいて出力し、
前記検索用マスタ記憶部に記憶されている住所データの中から、前記出力された検索単語が含まれる住所データを検索し、
前記検索単語との一致度に応じて前記検索結果を出力する、
住所検索方法。
【請求項1】
住所に含まれうる単語を、住所の階層を示す階層情報と対応付けて記憶する辞書記憶部と、
住所の階層間の連続可能性を示すコスト情報を記憶するコスト記憶部と、
検索用の住所データを記憶する検索用マスタ記憶部と、
住所を検索するための検索文字列を含む検索要求を受け付ける検索要求受付部と、
前記検索文字列を前記辞書記憶部に記憶されている単語で分割して得られる検索単語の組み合わせのうち、連続可能性の高い検索単語の組み合わせを、前記コスト情報に基づいて出力する検索文字列分割部と、
前記検索用マスタ記憶部に記憶されている住所データの中から、前記検索文字列分割部から出力される検索単語が含まれる住所データを検索する検索部と、
前記検索単語との一致度に応じて前記検索部の検索結果を出力する検索結果出力部と、
を備える住所検索装置。
【請求項2】
請求項1に記載の住所検索装置であって、
階層ごとに分割された住所データを記憶する住所データ記憶部と、
前記階層ごとに分割された住所データから、前記住所に含まれうる単語及び前記階層情報を生成して前記辞書記憶部に格納する辞書生成部をさらに備える、
住所検索装置。
【請求項3】
請求項2に記載の住所検索装置であって、
前記辞書生成部は、前記階層ごとに分割された住所データから、所定の規則に従って正規化された、前記住所に含まれうる単語を生成する、
住所検索装置。
【請求項4】
請求項3に記載の住所検索装置であって、
前記検索文字列分割部は、前記所定の規則に従って正規化された、前記検索単語の組み合わせを出力する、
住所検索装置。
【請求項5】
請求項2〜4の何れか一項に記載の住所検索装置であって、
前記辞書生成部は、住所に含まれる一連の数字部分を1つの単語として前記辞書記憶部に格納する、
住所検索装置。
【請求項6】
請求項1〜5の何れか一項に記載の住所検索装置であって、
前記検索用マスタ記憶部は、同一住所に対する表記が異なる複数種類の単語を前記検索用の住所データに含ませることができる、
住所検索装置。
【請求項7】
請求項1〜6の何れか一項に記載の住所検索装置であって、
各地域の情報を示す地域情報を記憶する地域情報記憶部をさらに備え、
前記検索結果出力部は、前記地域情報に応じた順序で前記検索結果を出力する、
住所検索装置。
【請求項8】
請求項1〜7の何れか一項に記載の住所検索装置であって、
前記検索結果出力部は、前記検索単語が含まれる住所データの長さに応じた順序で検索結果を出力する、
住所検索装置。
【請求項9】
住所に含まれうる単語を、住所の階層を示す階層情報と対応付けて辞書記憶部に記憶し、
住所の階層間の連続可能性を示すコスト情報をコスト記憶部に記憶し、
検索用の住所データを検索用マスタ記憶部に記憶し、
住所を検索するための検索文字列を含む検索要求を受け付け、
前記検索文字列を前記辞書記憶部に記憶されている単語で分割して得られる検索単語の組み合わせのうち、連続可能性の高い検索単語の組み合わせを、前記コスト情報に基づいて出力し、
前記検索用マスタ記憶部に記憶されている住所データの中から、前記出力された検索単語が含まれる住所データを検索し、
前記検索単語との一致度に応じて前記検索結果を出力する、
住所検索方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2012−155356(P2012−155356A)
【公開日】平成24年8月16日(2012.8.16)
【国際特許分類】
【出願番号】特願2011−11057(P2011−11057)
【出願日】平成23年1月21日(2011.1.21)
【出願人】(500578216)株式会社ゼンリンデータコム (231)
【Fターム(参考)】
【公開日】平成24年8月16日(2012.8.16)
【国際特許分類】
【出願日】平成23年1月21日(2011.1.21)
【出願人】(500578216)株式会社ゼンリンデータコム (231)
【Fターム(参考)】
[ Back to top ]