(57)【特許請求の範囲】
【請求項１】
住所に含まれうる単語を、住所の階層を示す階層情報と対応付けて記憶する辞書記憶部と、
住所の階層間の連続可能性を示すコスト情報を記憶するコスト記憶部と、
検索用の住所データを記憶する検索用マスタ記憶部と、
住所を検索するための検索文字列を含む検索要求を受け付ける検索要求受付部と、
前記検索文字列を前記辞書記憶部に記憶されている単語で分割して得られる検索単語の複数の組み合わせのそれぞれについて、検索単語に対応付けられた前記階層情報と、前記コスト情報とに基づいて、連続可能性を示すコストを算出し、該算出されたコストに基づいて、連続可能性の高い検索単語の組み合わせを出力する検索文字列分割部と、
前記検索用マスタ記憶部に記憶されている住所データの中から、前記検索文字列分割部から出力される検索単語が含まれる住所データを検索する検索部と、
前記検索単語との一致度に応じて前記検索部の検索結果を出力する検索結果出力部と、
を備える住所検索装置。
【請求項２】
請求項１に記載の住所検索装置であって、
階層ごとに分割された住所データを記憶する住所データ記憶部と、
前記階層ごとに分割された住所データから、前記住所に含まれうる単語及び前記階層情報を生成して前記辞書記憶部に格納する辞書生成部をさらに備える、
住所検索装置。
【請求項３】
請求項２に記載の住所検索装置であって、
前記辞書生成部は、前記階層ごとに分割された住所データから、所定の規則に従って正規化された、前記住所に含まれうる単語を生成する、
住所検索装置。
【請求項４】
請求項３に記載の住所検索装置であって、
前記検索文字列分割部は、前記所定の規則に従って正規化された、前記検索単語の組み合わせを出力する、
住所検索装置。
【請求項５】
請求項２〜４の何れか一項に記載の住所検索装置であって、
前記辞書生成部は、住所に含まれる一連の数字部分を１つの単語として前記辞書記憶部に格納する、
住所検索装置。
【請求項６】
請求項１〜５の何れか一項に記載の住所検索装置であって、
前記検索用マスタ記憶部は、同一住所に対する表記が異なる複数種類の単語を前記検索用の住所データに含ませることができる、
住所検索装置。
【請求項７】
請求項１〜６の何れか一項に記載の住所検索装置であって、
各地域の情報を示す地域情報を記憶する地域情報記憶部をさらに備え、
前記検索結果出力部は、前記地域情報に応じた順序で前記検索結果を出力する、
住所検索装置。
【請求項８】
請求項１〜７の何れか一項に記載の住所検索装置であって、
前記検索結果出力部は、前記検索単語が含まれる住所データの長さに応じた順序で検索結果を出力する、
住所検索装置。
【請求項９】
情報処理装置が、
住所に含まれうる単語を、住所の階層を示す階層情報と対応付けて辞書記憶部に記憶し、
住所の階層間の連続可能性を示すコスト情報をコスト記憶部に記憶し、
検索用の住所データを検索用マスタ記憶部に記憶し、
住所を検索するための検索文字列を含む検索要求を受け付け、
前記検索文字列を前記辞書記憶部に記憶されている単語で分割して得られる検索単語の複数の組み合わせのそれぞれについて、検索単語に対応付けられた前記階層情報と、前記コスト情報とに基づいて、連続可能性を示すコストを算出し、該算出されたコストに基づいて、連続可能性の高い検索単語の組み合わせを出力し、
前記検索用マスタ記憶部に記憶されている住所データの中から、前記出力された検索単語が含まれる住所データを検索し、
前記検索単語との一致度に応じて前記検索結果を出力する、
住所検索方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、住所検索装置及び住所検索方法に関する。
【背景技術】
【０００２】
近年、様々な情報を検索可能な検索サービスが広く利用されている。このような検索サービスでは、ユーザから入力された検索文字列で検索用のデータベースを検索することにより、検索文字列に関連する情報が出力される。例えば、ユーザから入力された検索文字列に関連する住所や、この住所付近の地図を表示する住所検索システムが知られている（特許文献１）。
【０００３】
ところで、住所検索システムでは、入力される検索文字列は住所通りに入力されるとは限らないため、一般的に、検索文字列を住所として可能性のある単語に分割したうえで検索が実行される。具体的には、検索文字列から検索単語を生成し、検索単語との一致数が多い住所ほど検索結果の上位として出力することができる。例えば、検索文字列として「東京中野」が入力された場合に、検索単語「東京」、「中野」が生成されたとする。このとき、単語レベルで分割された「東京／都／中野／区／中野／・・・」の住所は、「東京」を１つ、「中野」を２つ含むため、検索単語との一致数は「３」となる。一方、「静岡／県／浜松／市／東／区／中野／・・・」の住所は、「中野」を１つ含むのみであるため、検索単語との一致数は「１」となる。よって、検索単語との一致数のみを考慮すれば、検索文字列「東京中野」に対する検索結果としては、「東京都中野区中野・・・」が「静岡県浜松市東区中野・・・」よりも上位として出力される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−１８６８８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、検索文字列の分割によっては、検索結果がユーザの意図したものと異なってしまう場合がある。例えば、検索文字列として「東中野」と入力された場合に、検索単語「東」、「中野」が生成されたとする。このとき、「東京／都／中野／区／東中野／・・・」の住所は「中野」を１つ含むため、検索単語との一致数は「１」となる。一方、「静岡／県／浜松／市／東／区／中野／・・・」の住所は、「東」を１つ、「中野」を１つ含むため、検索単語との一致数は「２」となる。よって、検索単語との一致数のみを考慮すれば、検索文字列「東中野」に対する検索結果として、「東京都中野区東中野」よりも「静岡県浜松市東区中野」の方が上位として出力されてしまう。つまり、検索文字列と同じ「東中野」という１つの大字を含む住所よりも、「東」という１つの市区町村と、「中野」という１つの大字とを含む住所の方が上位として出力されてしまう。
【０００６】
本発明はこのような事情に鑑みてなされたものであり、住所の構造を考慮した住所検索を可能とすることを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一側面に係る住所検索装置は、住所に含まれうる単語を、住所の階層を示す階層情報と対応付けて記憶する辞書記憶部と、住所の階層間の連続可能性を示すコスト情報を記憶するコスト記憶部と、検索用の住所データを記憶する検索用マスタ記憶部と、住所を検索するための検索文字列を含む検索要求を受け付ける検索要求受付部と、検索文字列を辞書記憶部に記憶されている単語で分割して得られる検索単語の組み合わせのうち、連続可能性の高い検索単語の組み合わせを、コスト情報に基づいて出力する検索文字列分割部と、検索用マスタ記憶部に記憶されている住所データの中から、検索文字列分割部から出力される検索単語が含まれる住所データを検索する検索部と、検索単語との一致度に応じて検索部の検索結果を出力する検索結果出力部と、を備える。
【０００８】
なお、本発明において、「部」とは、単に物理的手段を意味するものではなく、その「部」が有する機能をソフトウェアによって実現する場合も含む。また、１つの「部」や装置が有する機能が２つ以上の物理的手段や装置により実現されても、２つ以上の「部」や装置の機能が１つの物理的手段や装置により実現されても良い。
【発明の効果】
【０００９】
本発明によれば、住所の構造を考慮した住所検索が可能となる。
【図面の簡単な説明】
【００１０】
【図１】本実施形態の住所検索装置の構成を示す図である。
【図２】住所データの一例を示す図である。
【図３】辞書データの一例を示す図である。
【図４】検索用マスタの一例を示す図である。
【図５】コスト情報の一例を示す図である。
【図６】コスト算出の一例を示す図である。
【図７】辞書データ生成処理の一例を示すフローチャートである。
【図８】検索用マスタ生成処理の一例を示すフローチャートである。
【図９】検索処理の一例を示すフローチャートである。
【図１０】コスト算出の一例を示す図である。
【図１１】コスト算出の一例を示す図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照して本発明の一実施形態について説明する。
【００１２】
＝＝構成＝＝
図１は、本実施形態の住所検索装置の構成を示す図である。住所検索装置１０は、ユーザから入力される検索文字列に関連性の高い住所を出力する情報処理装置である。なお、ユーザから入力される検索文字列は、ユーザ端末からネットワーク経由で住所検索装置１０に送信されることとしてもよいし、住所検索装置１０において入力されることとしてもよい。つまり、住所検索装置１０は、ユーザ端末から入力される検索文字列に基づいて検索を行うサーバであってもよいし、カーナビゲーション装置のように単体で動作する装置であってもよい。
【００１３】
図１に示すように、住所検索装置１０は、住所データ記憶部２０、辞書生成部２２、辞書記憶部２４、マスタ生成部２６、検索用マスタ記憶部２８、コスト情報記憶部３０、検索要求受付部３２、検索文字列分割部３４、検索部３６、検索結果出力部３８、及び地域情報記憶部４０を含んで構成されている。なお、住所データ記憶部２０、辞書記憶部２４、検索用マスタ記憶部２８、コスト情報記憶部３０、及び地域情報記憶部４０は、住所検索装置１０において、メモリや記憶装置等の記憶領域を用いて実現することができる。また、辞書生成部２２、マスタ生成部２６、検索要求受付部３２、検索文字列分割部３４、検索部３６、及び検索結果出力部３８は、住所検索装置１０において、メモリに格納されたプログラムをプロセッサが実行することにより実現することができる。
【００１４】
住所データ記憶部２０には、階層ごとに区切られた住所データが記憶される。ここで、住所の階層は、例えば、上から順に「都道府県」、「市区町村」、「大字（文字）」、「字丁目」、「数字部分（地番）」により構成される。図２は、住所データ記憶部２０に記憶される住所データの一例を示す図である。図２に示すように、例えば、「東京都中野区中野」の住所は、「東京」、「都」、「中野」、「区」、「中野」というように、階層ごとのデータに区切られている。また、住所データ記憶部２０には、各階層の接尾辞も記憶されている。ここで、接尾辞とは、「都」、「県」、「市」、「区」等のように、住所の各階層の後に付与される語句である。なお、住所の階層を判別可能であれば、接尾辞そのものが住所データ記憶部２０に格納されていなくてもよい。例えば、階層を識別するタグ情報とともに、各階層のデータが住所データ格納部２０に格納されていることとしてもよい。あるいは、階層ごとにあらかじめ定められた位置に、各階層のデータが格納されていることとしてもよい。
【００１５】
辞書生成部２２は、住所データ記憶部２０に記憶されている住所データから、住所に含まれうる単語に住所の階層情報を付与した辞書データを生成する。そして、辞書生成部２２は、生成した辞書データを辞書記憶部２４に格納する。図３は、辞書データ記憶部２４に記憶される辞書データの一例を示す図である。図３には、図２に示した住所データから生成された辞書データが示されている。例えば、「東京都中野区中野」の住所データからは、「東京」という単語に階層情報「都道府県」を付与した辞書データが生成されている。同様に、「中野」という単語に階層情報「市区町村」を付与した辞書データが生成されている。さらに、「中野」という単語に階層情報「大字（文字）」を付与した辞書データが生成されている。また、他の住所データからも同様に辞書データが生成されている。さらに、辞書データ記憶部２４には、同一住所で表記が異なる単語（バリエーション）を登録することも可能である。例えば、「霞が関」という大字（文字）の単語がある場合に、「霞ヶ関」や「霞関」をバリエーションの単語として登録しておくことができる。なお、バリエーションの単語は、手作業で生成されてもよいし、住所データから切り出された単語に対して所定の正規化を施すことにより生成されてもよい。また、辞書データ記憶部２４では、一連のバリエーション、例えば、「霞が関」、「霞ヶ関」、「霞関」を、対応づけて記憶しておくことも可能である。
【００１６】
マスタ生成部２６は、住所データ記憶部２０に記憶されている住所データを、辞書記憶部２４に記憶されている単語で分割することにより、単語レベルに分割された住所データを生成して検索用マスタ記憶部２８に格納する。ここで、マスタ生成部２６は、単語レベルに分割された住所データに、単語のバリエーションを含ませておくこともできる。例えば、前述の例のように、元の住所データの単語が「霞が関」である場合に、「霞ヶ関」、「霞関」を含ませておくことができる。例えば、マスタ生成部２６は、辞書記憶部２４を参照することにより、辞書記憶部２４に登録されているバリエーションの単語を検索用マスタ記憶部２８に格納することができる。なお、バリエーションの単語は、手作業で生成されてもよいし、元の住所データの単語に対して所定の正規化を施すことによって生成されてもよい。
【００１７】
また、マスタ生成部２６は、住所データ記憶部２０に記憶されている住所データから、文字レベルに分割された住所データを生成して検索用マスタ記憶部２８に格納する。さらに、マスタ生成部２６は、表示用の住所データや緯度経度等の付帯情報を検索用マスタ記憶部２８に格納することができる。また、マスタ生成部２６は、単語レベルで分割された住所データに対する単語単位での検索を高速に実行可能とするためのインデックスを生成し、検索用マスタ記憶部２８に格納する。同様に、マスタ生成部２６は、文字レベルで分割された住所データに対する文字単位での検索を高速に実行可能とするためのインデックスを生成し、検索用マスタ記憶部２８に格納する。図４は、検索用マスタ記憶部２８に記憶される検索用マスタの一例を示す図である。図４には、図２に示す住所データと図３に示す辞書データとに基づいて生成された検索用マスタが示されている。
【００１８】
コスト情報記憶部３０には、住所の階層間の連続可能性を示すコスト情報が記憶されている。ここで、「連続可能性」とは、各階層に分割された単語のつながりやすさを表すものである。なお、階層には接尾辞も含まれる。例えば、「中野」という「市区町村」の単語の直後には、「区」という「市区町村接尾辞」の単語が続く可能性が高い一方、「東京」という「都道府県」の単語が続く可能性は低い。
【００１９】
図５は、コスト情報記憶部３０に記憶されるコスト情報の一例を示す図である。図５には、縦軸を前の単語、横軸を次の単語とした場合のコスト情報が示されている。なお、本実施形態では、コスト情報は連続可能性が高いほど小さい値となる「コスト」としてコスト情報記憶部３０に記憶されている。例えば、前の単語の階層が「市区町村」の場合、次の単語の階層が「都道府県」、「都道府県接尾辞」の場合のコストは「１００」である。これは、「市区町村」の直後に「都道府県」、「都道府県接尾辞」が続く可能性が極めて低いことを示している。また、前の単語の階層が「市区町村」の場合、次の単語の階層が「市区町村接尾辞」となる場合のコストは「１」である。これは、「市区町村」の直後には「市区町村接尾辞」が続く可能性が最も高いことを示している。つまり、図５に示すコスト情報を参照すれば、「中野」という「市区町村」の直後に続く単語としては、「区」等の「市区町村接尾辞」が続く可能性が最も高い一方、「東京」や「都」が続く可能性は極めて低いことがわかる。なお、図５に示す例では、当然につながりうる階層間のコストには「１」〜「９」が設定されている。また、正式な住所としてはつながらないが、住所の順序関係が保たれている階層間のコストには「１０」〜「７０」が設定されている。また、順序関係が破壊されている階層間のコストには「１００」が設定されている。そして、当然につながりうる階層間や、順序関係が保たれている階層間では、より近い階層間のコストが低くなっている。ただし、図５に示すコストの値は一例にすぎない。
【００２０】
検索要求受付部３２は、住所を検索するための検索文字列を含む検索要求をユーザから受け付ける。例えば、検索要求受付部３２は、携帯端末やパーソナルコンピュータ等で入力される検索要求をインターネット等のネットワークを介して受信することができる。また、例えば、検索要求受付部３２は、住所検索装置１０においてユーザから入力される検索要求を受け付けることができる。
【００２１】
検索文字列分割部３４は、検索要求に含まれる検索文字列を辞書記憶部２４に記憶されている単語で分割することにより、検索単語の組み合わせである検索単語リストを生成する。そして、生成された検索単語リストのうち、コスト情報記憶部３０に記憶されているコストの合計値が最も小さくなる検索単語リストを出力する。また、検索文字列分割部３４は、検索文字列を文字ごとに分割した検索文字の組み合わせである検索文字リストも出力する。なお、連結されない１つの単語のコストは「０」であることとする。
【００２２】
例えば、検索文字列が「東京中野」であり、図３に示すように、「東京」、「中野」、「中」、「野」の単語が辞書記憶部２４に記憶されている場合、検索文字列分割部３４は、検索単語リストとして、「東京／中野」の組み合わせと、「東京／中／野」の組み合わせを生成することができる。ここで、図３の辞書データを参照すると、「東京」は「都道府県」、「中野」は「市区町村」または「大字（文字）」、「中」は「市区町村」、「野」は「大字（文字）」である。つまり、階層の遷移としては、図６に示す３パターンが考えられる。そして、図６に示す各パターンについて、図５に示すコスト情報に基づいてコストを求めると、「東京／中野」の組み合わせは、「都道府県」→「市区町村」の場合に「１０」、「都道府県」→「大字（文字）」の場合に「３０」となり、「東京／中／野」の組み合わせは、「３０」となる。つまり、「東京／中野」の組み合わせのコストが最も小さくなっている。よって、この例の場合、検索文字列分割部３４は、検索単語リスト「東京／中野」を出力する。
【００２３】
検索部３６は、検索文字列分割部３４から出力される検索単語リスト及び検索文字リストを用いて検索用マスタ記憶部２８に記憶されている検索用マスタを検索する。具体的には、検索部３６は、検索単語リスト中の単語を含む住所データを検索する。また、検索部３６は、検索文字リスト中の文字を含む住所データを検索する。そして、検索部３６は、検索単語リスト及び検索文字リストのそれぞれに対する一致度を示す情報を含む検索結果を出力する。一致度を示す情報には、例えば、検索単語と一致する単語の数や、検索文字と一致する文字の数が含まれる。
【００２４】
検索結果出力部３８は、検索単語及び検索文字との一致度に応じて検索部３６の検索結果を出力する。例えば、検索結果出力部３８は、検索用マスタ記憶部２８に記憶されている住所データについて、検索単語と一致する単語の数、および、検索文字と一致する文字の数に基づいて検索文字列に対するスコア（関連度）を算出し、スコアの高い順に住所に関連する情報が表示されるように検索結果を出力する。なお、検索結果出力部３８は、スコアを算出する際に、文字の一致よりも単語の一致の重みを高くすることができる。具体的には、検索単語と一致する単語数が多い順に高いスコアとし、さらに、検索単語と一致する単語数が同一の住所については、検索文字と一致する文字数が多い順に高いスコアとすることができる。
【００２５】
例えば、検索結果出力部３８は、スコアの高い順に、検索用マスタに含まれる表示用住所データを出力することができる。また、例えば、検索結果出力部３８は、スコアの最も高い住所データに対応する地図情報を出力することができる。また、検索結果出力部３８は、スコアが同じ住所データについては、地域情報に応じた順序で検索結果を出力することができる。ここで、地域情報とは、各地域の人口密度やリアルタイムの混雑度等であり、地域情報記憶部４０に記憶されている。例えば、検索結果出力部３８は、同スコアの住所データについては、人口密度が高い地域の住所データがより上位となるように出力することができる。また、検索結果出力部３８は、ユーザ端末あるいは住所検索装置１０の現在位置に近い地域の住所データがより上位となるように出力することとしてもよい。また、検索結果出力部３８は、同スコアの住所データについては、長さが短い住所データがより上位となるように出力することができる。例えば、「中央区日本橋」という検索文字列に対して、「東京都中央区日本橋」という住所データと、「大阪府大阪市中央区日本橋」という住所データが検索された場合、検索結果出力部３８は、単語数が少ない「東京都中央区日本橋」の住所データが上位となるように検索結果を出力することができる。
【００２６】
＝＝処理＝＝
住所検索装置１０における処理の一例について説明する。
【００２７】
図７は、辞書データ生成処理の一例を示すフローチャートである。辞書生成部２２は、住所データ記憶部２０に記憶されている住所データを参照し、階層ごとの住所文字列から住所の単語を取得する（Ｓ７０１）。そして、辞書生成部２２は、取得した住所の単語に階層情報を付与して辞書データを生成し、辞書記憶部２４に格納する（Ｓ７０２）。
【００２８】
なお、辞書生成部２２は、辞書データを生成する際に、住所データ記憶部２０に記憶されている住所データに対して所定の正規化を施すこととしてもよい。ここで、正規化とは、例えば、片仮名を平仮名に変換したり、「ヶ」を「が」に変換したり、「２丁目１０−５」を「２−１０−５」に変換したりすることである。また、辞書生成部２２は、一連の数字部分については１つの単語として辞書記憶部２４に記憶することができる。例えば、辞書生成部２２は、「２−１０−５」を１つの単語として辞書記憶部２４に記憶することができる。
【００２９】
図８は、検索用マスタ生成処理の一例を示すフローチャートである。マスタ生成部２６は、住所データ記憶部２０及び辞書記憶部２４を参照し、辞書データに登録されている単語と同一の区切りで単語レベルに分割された住所データを生成する（Ｓ８０１）。なお、辞書データに格納されている単語が正規化されている場合、マスタ生成部２６によって生成される住所データも正規化されたものを用いることができる。また、マスタ生成部２６は、住所データ記憶部２０及び辞書記憶部２４を参照し、文字レベルに分割された住所データを生成する（Ｓ８０２）。そして、マスタ生成部２６は、単語レベルに分割された住所データと、文字レベルに分割された住所データに対するインデックスを生成し（Ｓ８０３）、住所データとともに検索用マスタ記憶部２８に格納する（Ｓ８０４）。なお、マスタ生成部２６は、表示用住所データや付帯情報についても検索用マスタ記憶部２８に格納する。
【００３０】
図９は、検索処理の一例を示すフローチャートである。まず、検索要求受付部３２は、検索文字列を含む検索要求を受け付ける（Ｓ９０１）。検索要求が受け付けられると、検索文字列分割部３４は、検索文字列から検索単語リスト及び検索文字リストを生成して出力する。具体的には、検索文字列分割部３４は、辞書記憶部２４に記憶されている単語を用いて検索文字列を分割することにより、検索単語リストの候補を生成する（Ｓ９０２）。続いて、検索文字列分割部３４は、コスト記憶部３０に記憶されているコスト情報に基づいて、各候補のコストを算出する（Ｓ９０３）。そして、検索文字列分割部３４は、コストが最も低い検索単語リストと、検索文字リストとを出力する（Ｓ９０４）。なお、検索文字列分割部３４は、辞書データに格納されている単語と同一の正規化を検索文字列に対して施した上で、検索単語リストを生成することができる。
【００３１】
その後、検索部３６は、検索単語リスト及び検索文字リストを用いて検索用マスタ記憶部２８の検索を行う（Ｓ９０５）。そして、検索結果出力部３８は、検索部３６での検索結果に基づいて、検索単語リスト及び検索文字リストとの一致度の高い順に住所データを出力する（Ｓ９０６）。
【００３２】
ここで、検索文字列の分割処理について、具体例を用いて説明する。なお、住所データ、辞書データ、及び検索用マスタは図２〜図４に示す状態であることとする。
【００３３】
図１０は、検索文字列に「東中野」が含まれている場合の一例を示している。検索文字列分割部３４は、辞書記憶部２４を参照し、検索文字列「東中野」から検索単語リストの候補を生成する。ここで、生成される検索単語リストの候補は、図１０に示すように、「東中野」、「東／中野」、「東／中／野」の３つとなる。検索文字列分割部３４は、各候補についてのコストを算出する。ここで、「東中野」は「大字（文字）」の１単語であるため、コストは「０」である。また、「東／中野」は、「市区町村」→「市区町村」の場合のコストが「１０」、「市区町村」→「大字（文字）」の場合のコストが「２０」となる。また、「東／中／野」は、「市区町村」→「市区町村」→「大字（文字）」であり、コストは「３０」となる。よって、検索文字列分割部３４は、コストが最も低い「東中野」を検索単語リストとして出力する。なお、この例に示すように、１単語の検索単語リストは最もコストが低くなる。そのため、検索文字列分割部３４は、１単語の検索単語リストが存在する場合には、他の検索単語リストのコストを算出することなく、１単語の検索単語リストを出力することとしてもよい。
【００３４】
そして、検索単語リスト「東中野」が出力されると、検索部３６は検索単語リスト「東中野」を用いて検索用マスタ記憶部２８の検索を行う。ここでは、説明を簡略化するため、検索文字リストについては考慮しないこととする。検索部３６は、検索単語リスト「東中野」をキーとして、検索用マスタの単語レベルの住所データを検索する。このとき、「東京／都／中野／区／東中野／・・・」の住所データはマッチするが、「静岡／県／浜松／市／東／区／中野／町／・・・」の住所データはマッチしない。したがって、検索結果出力部３８は、スコアが最も高い「東京都中野区東中野・・・」の住所データを出力する。
【００３５】
ここで、仮に、検索文字列「東中野」が「東／中野」に分割された場合を検討する。この場合、「東京／都／中野／区／中野／・・・」の住所データは、検索単語「中野」との一致数が「２」となる。また、「東京／都／中野／区／東中野／・・・」の住所データは、検索単語「中野」との一致数が「１」となる。また、「静岡／県／浜松／市／東／区／中野／町／・・・」の住所データは、検索単語「東」との一致数が「１」、検索単語「中野」との一致数が「１」であり、一致数の合計値は「２」となる。よって、単純に検索単語との一致数に従ってスコアが決定されることとすると、「東京都中野区東中野・・・」の住所データよりも、「静岡県浜松市東区中野町・・・」の住所データの方がスコアが高くなってしまう。つまり、ユーザが入力した「東中野」という検索文字列を、住所の階層間の連続可能性を考慮せずに「東／中野」に分割してしまうと、ユーザの意図に反した情報が検索結果として出力されてしまう可能性がある。
【００３６】
これに対して、本実施形態では、コスト情報に基づいて住所の階層間の連続可能性を考慮した結果、ユーザが入力した「東中野」という検索文字列から「東中野」という検索単語リストが生成される。したがって、ユーザの意図をより反映したと考えられる検索結果を出力することが可能となる。
【００３７】
図１１に、別の具体例を示す。図１１は、検索文字列に「中野東」が含まれている場合の一例を示している。検索文字列分割部３４は、辞書記憶部２４を参照し、検索文字列「中野東」から検索単語リストの候補を生成する。ここで、生成される検索単語リストの候補は、図１１に示すように、「中野東」、「中野／東」、「中／野／東」の３つとなる。検索文字列分割部３４は、各候補についてのコストを算出する。ここで、「中野東」は「大字（文字）」の１単語であるため、コストは「０」である。また、「中野／東」は、「市区町村」→「市区町村」の場合のコストが「１０」、「大字（文字）」→「市区町村」の場合のコストが「１００」となる。また、「中／野／東」は、「市区町村」→「大字（文字）」→「市区町村」であり、コストは「１２０」となる。よって、検索文字列分割部３４は、コストが最も低い「中野東」を検索単語リストとして出力する。
【００３８】
そして、検索単語リスト「中野東」を用いて検索用マスタ記憶部２８が検索されることにより、「中野東」を単語として含む、「広島県広島市安芸区中野東町・・・」の住所データが出力される。
【００３９】
ここで、仮に、検索文字列「中野東」が「中野／東」に分割された場合を検討する。この場合、検索単語リスト「中野／東」との一致数は、「広島／県／広島／市／安芸／区／中野東／町・・・」の住所データが「０」である一方、「静岡／県／浜松／市／東／区／中野／町／・・・」の住所データは「２」となる。つまり、検索文字列「中野東」とは順序が異なり、「東」、「中野」の順の階層となっている住所データが検索結果の上位として出力されてしまう。
【００４０】
これに対して、本実施形態では、コスト情報に基づいて住所の階層間の連続可能性を考慮した結果、ユーザが入力した「中野東」という検索文字列から「中野東」という検索単語リストが生成されることにより、ユーザの意図をより反映したと考えられる検索結果を出力することが可能となる。
【００４１】
つまり、本実施形態によれば、住所の構造を考慮したうえで検索文字列から検索単語を生成し、生成された検索単語に基づいて住所データの検索を行うことにより、ユーザの意図を反映した検索結果を出力することが可能となる。
【００４２】
また、本実施形態では、辞書生成時と同一の規則で検索文字列を正規化して検索単語を生成することが可能であるため、検索単語を検索用マスタとマッチングする際の精度を向上させることができる。
【００４３】
また、本実施形態では、辞書データを生成する際に、住所に含まれる一連の数字部分を１つの単語とすることが可能である。これにより、例えば、検索文字列に「２−１０−５」が含まれる場合、「２」、「１０」、「５」の各文字によるマッチングではなく、「２−１０−５」という単語でのマッチングが可能となり、より精度の高い検索が可能となる。
【００４４】
また、本実施形態では、検索用マスタに、同一住所で表記が異なる複数種類の単語を含ませることができる。これにより、検索文字列と検索用マスタとのマッチング率を高めることができる。例えば、元の住所データが「霞が関」である場合に、検索用マスタに「霞ヶ関」、「霞関」のバリエーションが登録されていれば、検索文字列に「霞が関」が含まれる場合に限らず、「霞ヶ関」や「霞関」が含まれる場合においても検索用マスタとのマッチングが可能となる。
【００４５】
なお、本実施形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更／改良され得るととともに、本発明にはその等価物も含まれる。
【００４６】
例えば、本実施形態では、住所データ記憶部２０が住所検索装置１０に含まれることとしたが、住所データが住所検索装置１０の外部から入力されることとしてもよい。
【００４７】
また、例えば、本実施形態では、検索文字列から生成される検索単語を用いて、単語レベルに分割された住所データを含む検索用マスタを検索することとしたが、検索対象はこれに限られない。例えば、検索文字列から生成される検索単語が含まれる平文が検索されることとしてもよい。この場合、検索対象となる平文が検索用の住所データであり、このような平文を記憶する記憶部が検索用マスタ記憶部となる。また、平文に限らず、住所の一部となる文字列を含みうる任意のデータを、検索用の住所データとすることができる。
【符号の説明】
【００４８】
１０  住所検索装置
２０  辞書生成部
２２  住所データ記憶部
２４  辞書記憶部
２６  マスタ生成部
２８  検索用マスタ記憶部
３０  コスト情報記憶部
３２  検索要求受付部
３４  検索文字列分割部
３６  検索部
３８  検索結果出力部
４０  地域情報記憶部
【図１】
0005400813.tif 000002
【図２】
0005400813.tif 000003
【図３】
0005400813.tif 000004
【図４】
0005400813.tif 000005
【図５】
0005400813.tif 000006
【図６】
0005400813.tif 000007
【図７】
0005400813.tif 000008
【図８】
0005400813.tif 000009
【図９】
0005400813.tif 000010
【図１０】
0005400813.tif 000011
【図１１】
0005400813.tif 000012