まず、実施例1に係るデータ処理装置100によるデータ修正処理の概要について説明する。データ処理装置100は、表記が統一されている住所を表す文字列データ(以下、「正規住所データ」という)を所定の記憶部に記憶しておく。そして、データ処理装置100は、表記が統一されているか否かが不明である所定の住所を表す文字列データ(以下、「処理対象住所データ」という)を受け付けた場合に、所定の記憶部から、処理対象住所データに対応する正規住所データを取得する。そして、データ処理装置100は、処理対象住所データを、取得した正規住所データに書き換える。
なお、ここでいう「表記が統一されている住所を表す文字列データ」とは、システム管理者等によって予め決められている表記規則に則って表記された住所データを示す。また、「処理対象住所データに対応する正規住所データ」とは、処理対象住所データと一致する正規住所データ、または、処理対象住所データと最も類似する正規住所データを示す。以下では、「処理対象住所データに対応する正規住所データ」を「修正候補住所データ」と呼ぶこととする。
図1を用いて、実施例1に係るデータ処理装置100によるデータ修正処理の概要について具体的に説明する。図1は、実施例1に係るデータ処理装置100によるデータ修正処理の概要を説明するための図である。データ処理装置100は、住所記憶部121と、住所要素記憶部122とを有する。住所記憶部121は、表記が統一されている正規住所データと、かかる正規住所データを識別するための住所IDとを対応付けて記憶する。
住所要素記憶部122は、住所データを形成する都道府県、市区郡、政令区町村などの住所データの要素(以下、「住所要素」という)と、かかる住所要素に対応する正規住所データの住所IDとを対応付けて記憶する。例えば、図1に示した例において、住所要素「神奈川県」は、住所記憶部121に記憶されている正規住所データのうち、住所ID「1」〜「499」に対応付けて記憶されている正規住所データに含まれる。かかる場合、住所要素記憶部122は、住所要素「神奈川県」と、住所ID「1」〜「499」とを対応付けて記憶する。
なお、図1に示した住所記憶部121および住所要素記憶部122の構造はあくまで一例であって、住所記憶部121および住所要素記憶部122の詳細な構造については後述する。
そして、データ処理装置100は、処理対象住所データを受け付けた場合に、住所要素記憶部122に記憶されている住所要素によって形成されるオートマトンに対して、処理対象住所データを順次代入する。これにより、データ処理装置100は、住所要素記憶部122に記憶されている住所要素と、処理対象住所データに含まれる住所要素との文字列照合を行う。データ処理装置100は、かかる文字列照合の結果、住所要素記憶部122から、処理対象住所データに含まれる住所要素に対応付けて記憶されている住所IDを取得する。
図1に示した例では、データ処理装置100は、処理対象住所データとして「神奈川県川崎市中原下小田中1丁目」を受け付けている。かかる場合、データ処理装置100は、住所要素記憶部122に記憶されている住所要素によって形成されるオートマトンに対して、文字列「神」、「奈」、「川」、「県」、「川」、「崎」、「市」、「中」、「原」、「下」、「小」、「田」、「中」、「1」、「丁」、「目」を順次代入して照合する。
そして、データ処理装置100は、オートマトンに対して、文字列「神」、「奈」、「川」、「県」を順次代入した場合に、住所要素記憶部122に記憶されている住所要素「神奈川県」と一致したことを検出する。続いて、データ処理装置100は、住所要素「神奈川県」に対応付けて住所要素記憶部122に記憶されている住所ID「1−499」を取得する。同様にして、データ処理装置100は、住所要素記憶部122から、住所要素「川崎市」に対応する住所ID「1−100」と、住所要素「下小田中」に対応する住所ID「5−9」と、住所要素「1丁目」に対応する住所ID「1:5:101:・・・:500:・・・」とを取得する。
続いて、データ処理装置100は、住所要素記憶部122から取得した住所IDの論理積を演算することにより、修正候補住所データを示す住所IDを特定する。図1に示した例では、データ処理装置100は、住所IDの論理積演算の結果、修正候補住所データを示す住所IDとして、住所ID「5」を特定する。続いて、データ処理装置100は、住所記憶部121から、特定した住所ID「5」に対応する正規住所データ「神奈川県川崎市中原区下小田中1丁目」を取得する。
続いて、データ処理装置100は、処理対象住所データ「神奈川県川崎市中原下小田中1丁目」を、取得した正規住所データ「神奈川県川崎市中原区下小田中1丁目」に書き換える。すなわち、処理対象住所データ「神奈川県川崎市中原下小田中1丁目」は、「中原」の後に文字列「区」が抜けていたが、データ処理装置100によるデータ修正処理により、「神奈川県川崎市中原区下小田中1丁目」に修正される。
このように、実施例1に係るデータ処理装置100は、住所要素記憶部122に記憶されている住所要素によって形成されるオートマトンを用いて、処理対象住所データに含まれる住所要素と、住所要素記憶部122に記憶されている住所要素との文字列照合を行う。これにより、データ処理装置100は、1回の文字列照合処理によって、住所要素記憶部122から、処理対象住所データに含まれる住所要素に対応付けて記憶されている住所IDを取得することができる。
また、データ処理装置100は、住所要素記憶部122から取得した住所IDの論理積を演算することにより、住所IDを絞り込むので、1回の演算処理を行うだけで修正候補住所データを示す住所IDを特定することができる。
すなわち、データ処理装置100は、1回の文字列照合処理と、1回の論理演算処理を行うだけで修正候補住所データを特定することができる。その結果、データ処理装置100は、低負荷かつ高速に処理対象住所データを修正候補住所データに修正することができる。
なお、図1に示した例では、データ処理装置100が、住所IDの論理積を演算することにより、修正候補住所データを一意に特定する例を示したが、処理対象住所データによっては、住所IDを一意に特定できずに複数の住所IDを特定する場合がある。かかる場合、データ処理装置100は、特定した複数の住所IDが示す複数の正規住所データから、修正候補住所データを探索する。かかる探索処理については後述する。
次に、実施例1に係るデータ処理装置100の構成について説明する。図2は、実施例1に係るデータ処理装置100の構成を示す図である。図2に示すように、データ処理装置100は、対象データ入出力部110と、記憶部120と、制御部130とを有する。
対象データ入出力部110は、処理対象住所データを所定の処理部へ出力したり、修正候補住所データを所定の処理部から受け付けたりする。例えば、対象データ入出力部110は、表記が統一されていない住所データが記憶されている所定の記憶部から住所データを1レコードずつ取得して、受付部131へ順次出力する。また、例えば、対象データ入出力部110は、ネットワークを介して、他の情報処理装置から表記が統一されていない処理対象住所データを受信して、受信した処理対象住所データを受付部131へ出力する。そして、対象データ入出力部110は、書換部134から、受付部131へ出力した処理対象住所データを修正するための修正候補住所データを受け付ける。
記憶部120は、各種情報を記憶する記憶デバイスであり、住所記憶部121と、住所要素記憶部122と、構成情報記憶部123と、ログ記憶部124とを有する。住所記憶部121は、上述したように、主に、正規住所データと、かかる正規住所データを識別するための住所IDとを対応付けて記憶する。
住所記憶部121の一例を図3に示す。図3に示すように、住所記憶部121は、住所ID、住所、郵便番号、フリガナといった項目を有する。項目「住所ID」は、住所を識別するための識別子を記憶する。項目「住所」は、表記が統一されている正規住所データを記憶する。項目「郵便番号」は、対応する項目「住所」に記憶されている正規住所データの郵便番号を記憶する。項目「フリガナ」は、対応する項目「住所」に記憶されている正規住所データのフリガナ(読み仮名)を記憶する。
すなわち、図3に示した住所記憶部121の1行目は、住所ID「1」の正規住所データが「神奈川県川崎市中原区上小田中1丁目」であり、郵便番号が「211−0053」であり、フリガナが「カナガワケンカワサキシナカハラク・・・」であることを示している。また、図3に示した住所記憶部121の2行目は、住所ID「2」の正規住所データが「神奈川県川崎市中原区上小田中2丁目」であり、郵便番号が「211−0053」であり、フリガナが「カナガワケンカワサキシナカハラク・・・」であることを示している。
住所要素記憶部122は、上述したように、主に、階層的(都道府県、市区郡等ごと)に分割された住所データの要素である住所要素と、かかる住所要素に対応する正規住所データを示す住所IDとを対応付けて記憶する。
住所要素記憶部122の一例を図4に示す。図4に示すように、住所要素記憶部122は、住所要素、住所ID、タイプといった項目を有する。項目「住所要素」は、都道府県や、市区郡、政令区町村、町名字、丁目字などの住所データを形成する要素を記憶する。項目「住所ID」は、図3に示した住所記憶部121が有する項目「住所ID」に対応し、住所要素に対応する正規住所データを示す住所IDを記憶する。項目「タイプ」は、対応する項目「住所要素」に記憶されている住所要素が、都道府県や、市区郡、政令区町村、町名字、丁目字などのいずれに該当するかを示す情報を記憶する。なお、図4中の住所IDに表記した「N−M」は、住所ID「N」〜「M」であることを示す。また、図4中の住所IDに表記した「N:M」は、住所ID「N」および「M」であることを示す。
すなわち、図4に示した住所要素記憶部122の1行目は、住所要素「神奈川県」に対応する正規住所データは、住所IDが「1」〜「499」であり、住所要素「神奈川県」は、タイプが「都道府県」であることを示している。また、図4に示した住所要素記憶部122の12行目は、住所要素「1丁目」に対応する正規住所データは、住所IDが「1」、「5」、「101」、・・・、「500」、・・・であり、住所要素「1丁目」は、タイプが「丁目字」であることを示している。
構成情報記憶部123は、主に、住所IDと、かかる住所IDが示す正規住所データを形成する住所要素のタイプとを対応付けて記憶する。構成情報記憶部123の一例を図5に示す。図5に示すように、構成情報記憶部123は、住所ID、構成情報といった項目を有する。項目「住所ID」は、図3に示した住所記憶部121が有する項目「住所ID」に対応する。項目「構成情報」は、対応する住所IDが示す正規住所データが、都道府県や、市区郡、政令区町村、町名字、丁目字などのいずれによって形成されているかを示す情報を記憶する。なお、図5に例示した構成情報記憶部123では、都道府県や、市区郡、政令区町村、町名字、丁目字などを「|」によって区切って項目「構成情報」に記憶する。
すなわち、図5に示した構成情報記憶部123の1行目は、住所ID「1」が示す住所データは、都道府県、市区郡、政令区町村、町名字、丁目字によって形成されていることを示す。また、図5に示した構成情報記憶部123の6行目は、住所ID「500」が示す住所データは、都道府県、市区郡、政令区町村、丁目字によって形成されていることを示す。
ログ記憶部124は、ログ情報を記憶し、例えば、テキストファイルや、データベースである。かかるログ記憶部124は、後述する書換部134によって、データ修正処理に関する各種ログ情報が記憶される。
ここで、図6を用いて、上述した住所要素記憶部122を生成する手法について説明する。図6は、住所要素記憶部122を生成する手法を説明するための図である。図6に示すように、データ処理装置100は、まず、住所記憶部121に記憶されている各種情報のように、各住所に住所IDを付与する(ステップS11)。
続いて、データ処理装置100は、各住所データを住所要素に分解する。そして、データ処理装置100は、図6に示すように、住所要素が含まれる住所データを示す住所IDの範囲を、住所要素ごとに抽出する(ステップS12)。そして、データ処理装置100は、各住所要素と、抽出した住所IDとを対応づけることによって、図4に示したような住所要素記憶部122を生成する。ここでは、データ処理装置100が住所要素記憶部122を生成するものとして説明したが、外部で作成して、データ処理装置100に与えてもよい。
制御部130は、データ処理装置100を全体制御し、受付部131と、一次探索部132と、二次探索部133と、書換部134とを有する。受付部131は、対象データ入出力部110から出力された処理対象住所データを受け付ける。
一次探索部132は、受付部131によって受け付けられた処理対象住所データを修正するための修正候補住所データを探索する。具体的には、一次探索部132は、抽出部132aと、一次特定部132bとを有する。
抽出部132aは、住所要素記憶部122に記憶されている住所IDのうち、処理対象住所データに含まれる住所要素に対応付けて記憶されている住所IDを抽出する。具体的には、抽出部132aは、住所要素記憶部122に記憶されている住所要素により形成されるオートマトンに対して、処理対象住所データを順次代入することによって文字列照合を行う。そして、抽出部132aは、住所要素記憶部122に記憶されている住所要素と、処理対象住所データに含まれる住所要素とが一致する住所IDを住所要素記憶部122から抽出する。
例えば、受付部131によって受け付けられた処理対象住所データが「神奈川県川崎市中原区下小田中1丁目」であり、住所要素記憶部122に記憶されている各種情報が、図4に示した状態であるものとする。かかる場合、抽出部132aは、住所要素記憶部122から、処理対象住所データに含まれる「神奈川県」に対応付けて記憶されている住所ID「1−499」を抽出する。同様に、抽出部132aは、住所要素記憶部122から、「川崎市」に対応付けて記憶されている住所ID「1−100」と、「中原区」に対応付けて記憶されている住所ID「1−20」とを抽出する。また、抽出部132aは、住所要素記憶部122から、「下小田中」に対応付けて記憶されている住所ID「5−9」と、「1丁目」に対応付けて記憶されている住所ID「1:5:101:・・・:500:・・・」とを抽出する。
このように、抽出部132aは、オートマトンを用いて文字列照合処理を行うので、1回の文字列照合処理によって、住所要素記憶部122から住所IDを抽出することができる。なお、抽出部132aは、例えば、文字列照合エンジン「SIGMA」を用いて、上記文字列照合処理を行う。
一次特定部132bは、処理対象住所データを修正するための修正候補住所データを示す住所IDを特定する。具体的には、一次特定部132bは、抽出部132aによって抽出された住所IDの集合の論理積を演算することにより住所IDを特定する。言い換えれば、一次特定部132bは、抽出部132aによって抽出された住所IDの集合に最も多く含まれている住所IDを特定する。そして、一次特定部132bは、特定した住所IDが1個である場合、かかる住所IDを書換部134へ出力する。一方、一次特定部132bは、特定した住所IDが複数である場合、かかる複数の住所IDを二次探索部133へ出力する。
ここで、図7を用いて、一次特定部132bによる住所ID特定処理について具体的に説明する。図7は、一次特定部132bによる住所ID特定処理を説明するための図である。なお、図7に示した例では、上記例と同様に、受付部131によって受け付けられた処理対象住所データが「神奈川県川崎市中原区下小田中1丁目」であるものとする。図7の上段には、抽出部132aによって抽出された住所IDを示す。なお、ここでは、説明の便宜上、住所IDに加えて、住所要素とタイプとを図示する。
図7に示した例において、一次特定部132bは、抽出部132aによって抽出された住所ID「1−499」、「1−100」、「1−20」、「5−9」および「1:5:101:・・・:500:・・・」の論理積を演算する。図7の下段には、各住所要素に対応する住所IDの範囲を、斜線を付した矩形の幅によって示す。図7の下段に示すように、一次特定部132bは、論理積演算の結果、抽出部132aによって抽出された住所IDの集合に最も多く含まれる住所IDとして、住所ID「5」を特定する。
二次探索部133は、一次特定部132bから入力された複数の住所IDが示す複数の住所データから、修正候補住所データを探索する。具体的には、二次探索部133は、Nグラム法(「N文字インデックス法」とも呼ばれる)により、修正候補住所データを探索し、分割部133aと、二次特定部133bとを有する。
分割部133aは、処理対象住所データを所定の文字数ごとに分割する。なお、実施例1において、二次探索部133は、Nグラム法の一種であるバイグラムを用いるものとする。また、分割部133aは、分割後の各文字列が前後の文字列と1文字ずつ重複するように、処理対象住所データを分割するものとする。すなわち、分割部133aは、処理対象住所データを、1文字ずつ重複させながら2文字単位に分割する。
図8を用いて、分割部133aによる処理対象住所データの分割処理について具体的に説明する。図8は、分割部133aによる処理対象住所データの分割処理を説明するための図である。図8に示した例では、処理対象住所データが「神奈川県川崎市中原区下小田1丁目」であるものとする。かかる場合、分割部133aは、図8に示すように、処理対象住所データを、「神奈」、「奈川」、「川県」、・・・、「田1」、「1丁」、「丁目」に分割する。
二次特定部133bは、一次特定部132bから入力された複数の住所IDが示す複数の正規住所データから、修正候補住所データを特定する。具体的には、二次特定部133bは、住所記憶部121から、一次特定部132bから入力された複数の住所IDに対応付けて記憶されている正規住所データを住所IDごとに取得する。続いて、二次特定部133bは、分割部133aによって分割された文字列により形成されるオートマトンに対して、住所記憶部121から取得した正規住所データを順次代入する。これにより、二次特定部133bは、分割部133aによって分割された文字列と、住所記憶部121から取得した正規住所データに含まれる文字列とを順次照合する。
続いて、二次特定部133bは、住所記憶部121から取得した正規住所データのうち、分割部133aによって分割された文字列と一致する文字列の数が最も多い正規住所データを特定する。そして、二次特定部133bは、かかる照合処理(バイグラム)によって特定した正規住所データに対応する住所IDを書換部134へ出力する。
ここで、図9を用いて、二次特定部133bによる住所データ特定処理について具体的に説明する。図9は、二次特定部133bによる住所データ特定処理を説明するための図である。図9では、図8に示した例と同様に、分割部133aによって処理対象住所データ「神奈川県川崎市中原区下小田1丁目」が分割されたものとする。また、二次特定部133bは、一次特定部132bから住所ID「1」および「5」を入力されたものとする。すなわち、二次特定部133bは、住所記憶部121から正規住所データ「神奈川県川崎市中原区上小田中1丁目」と、「神奈川県川崎市中原区下小田中1丁目」とを取得する。
かかる場合、二次特定部133bは、分割部133aによって分割された文字列により形成されるオートマトンに対して、正規住所データ「神奈川県川崎市中原区上小田中1丁目」を順次代入する。これにより、二次特定部133bは、分割部133aによって分割された文字列と、正規住所データ「神奈川県川崎市中原区上小田中1丁目」に含まれる文字列とを順次照合する。図9に示した例では、二次特定部133bは、分割部133aによって分割された文字列のうち、12個の文字列(「神奈」、「奈川」、「川県」、「県川」、「川崎」、「崎市」、「市中」、「中原」、「原区」、「小田」、「1丁」、「丁目」)が、正規住所データ「神奈川県川崎市中原区上小田中1丁目」に含まれる文字列と一致することを検出する。
続いて、二次特定部133bは、分割部133aによって分割された文字列により形成されるオートマトンに対して、正規住所データ「神奈川県川崎市中原区下小田中1丁目」を順次代入する。これにより、二次特定部133bは、分割部133aによって分割された文字列と、住所データ「神奈川県川崎市中原区下小田中1丁目」に含まれる文字列とを順次照合する。図9に示した例では、二次特定部133bは、分割部133aによって分割された文字列のうち、14個の文字列(「神奈」、「奈川」、「川県」、「県川」、「川崎」、「崎市」、「市中」、「中原」、「原区」、「区下」、「下小」、「小田」、「1丁」、「丁目」)が、正規住所データ「神奈川県川崎市中原区上小田中1丁目」に含まれる文字列と一致することを検出する。
続いて、二次特定部133bは、正規住所データ「神奈川県川崎市中原区上小田中1丁目」よりも、正規住所データ「神奈川県川崎市中原区下小田中1丁目」の方が、分割部133aによって分割された文字列と一致する文字列の数が多いと判定する。そして、二次特定部133bは、正規住所データ「神奈川県川崎市中原区下小田中1丁目」を、修正候補住所データに特定して、対応する住所ID「5」を書換部134へ出力する。
このように、二次特定部133bは、オートマトンを用いて文字列照合処理を行うので、1回の文字列照合処理によって、修正候補住所データを特定することができる。なお、二次特定部133bは、抽出部132aと同様に、例えば、文字列照合エンジン「SIGMA」を用いて、上記文字列照合処理を行う。
書換部134は、処理対象住所データを、一次特定部132bまたは二次特定部133bによって特定された正規住所データに書き換えるとともに、データ修正処理に関する各種ログ情報をログ記憶部124に記憶させる。
具体的には、書換部134は、一次特定部132bから住所IDを受け付けた場合に、住所記憶部121から、かかる住所IDに対応付けて記憶されている正規住所データを取得する。続いて、書換部134は、所定の記憶部に記憶されている処理対象住所データを、住所記憶部121から取得した正規住所データ(修正候補住所データ)に書き換える。このとき、書換部134は、住所データ書換処理を実行した日時(年月日時分秒)や、処理対象住所データ、修正候補住所データ、処理対象住所データと修正候補住所データとの差分などをログ記憶部124に記憶させる。
また、書換部134は、二次特定部133bから住所IDを受け付けた場合に、受け付けた住所IDの数を判定する。二次特定部133bから1個の住所IDの数を受け付けた場合、書換部134は、所定の記憶部に記憶されている処理対象住所データを、二次特定部133bから受け付けた住所データ(修正候補住所データ)に書き換えるとともに、住所データ書換処理に関する各種ログ情報をログ記憶部124に記憶させる。
一方、二次特定部133bから複数の住所IDを受け付けた場合、書換部134は、データ修正処理を行うことなく、住所データ書換処理を実行した日時や、処理対象住所データ、二次特定部133bによって特定された複数の住所IDなどをログ記憶部124に記憶させる。これにより、システム管理者等は、かかるログ情報に基づいて、処理対象住所データを、どの修正候補住所データに修正するかを即座に判断することができる。
なお、書換部134は、修正候補住所データを対象データ入出力部110へ出力することにより住所データを書き換えてもよい。例えば、処理対象住所データが他の情報処理装置が有する所定の記憶部に記憶されている場合、書換部134は、住所データを対象データ入出力部110に出力することにより、処理対象住所データを修正候補住所データに書き換えることが可能になる。また、対象データ入出力部110はネットワークを介して出力してもよい。
また、書換部134は、処理対象住所データと修正候補住所データとの差分が存在する構成情報をログ記憶部124に記憶させてもよい。かかる場合、書換部134は、構成情報記憶部123から、修正候補住所データの構成情報を取得する。そして、書換部134は、構成情報記憶部123から取得した構成情報と、処理対象住所データを形成する構成情報とを比較することにより、処理対象住所データと修正候補住所データとの差分が存在する構成情報を特定する。なお、書換部134は、修正候補住所データの構成情報と、処理対象住所データを形成する構成情報との論理積を演算することにより、双方の構成情報の差異を算出してもよい。
また、書換部134は、処理対象住所データと、修正候補住所データとを比較して、双方の住所データが一致しない場合に住所データ書換処理を行ってもよい。これにより、書換部134は、双方の住所データが一致する場合に住所データ書換処理を行わないので、より低負荷かつ高速に住所データ書換処理を行うことができる。
また、書換部134は、住所データ書換処理を行わずに、処理対象住所データと、修正候補住所データとをログ記憶部124に記憶させる処理を行ってもよい。かかる場合、システム管理者等は、ログ記憶部124に記憶されているログ情報に基づいて、住所データ書換処理を行うか否かを判断することができる。そして、システム管理者等は、住所データ書換処理を行うと判断した場合に、住所データ書換処理を行うことができる。
また、書換部134は、データ修正処理に関する各種ログ情報を所定の表示部に表示制御してもよい。例えば、利用者によって所定の入力フォーム(ブラウザなど)に住所を入力された場合に、対象データ入出力部110が入力された住所データを受け付けることにより、制御部130は、上述したデータ修正処理を行う。そして、書換部134は、利用者によって入力された住所データと修正候補住所データとが異なる場合に、修正候補住所データを表示部に表示制御する。これにより、利用者は、住所を入力する場合に、表記が統一されている住所をリアルタイムに確認することができる。また、データ処理装置100は、所定の記憶部に記憶されている住所データに対して修正処理を行うことなく、表記が統一されている住所データを記憶部に記憶させることができる。
次に、実施例1に係るデータ処理装置100によるデータ修正処理の手順について説明する。図10は、実施例1に係るデータ処理装置100によるデータ修正処理手順を示すフローチャートである。なお、図10に示したデータ修正処理手順は、所定の日時かつ所定の時間にバッチ処理として動作したり、データ処理装置100が他の処理(例えば、Webアプリケーション起動処理)を実行している間にバックグラウンドで動作したりする。
また、図10では、データ処理装置100が、1個の処理対象住所データについてデータ修正処理を行う例について説明する。複数の処理対象住所データについてデータ修正処理を行う場合、データ処理装置100は、図10に示した処理手順を処理対象住所データの数だけ繰り返して行う。
図10に示すように、データ処理装置100の対象データ入出力部110は、所定の記憶部から処理対象住所データを取得する(ステップS101)。なお、対象データ入出力部110は、ネットワークを介して他の情報処理装置から処理対象住所データを受信してもよい。続いて、受付部131は、対象データ入出力部110から処理対象住所データを受け付ける。
続いて、抽出部132aは、住所要素記憶部122に記憶されている住所要素により形成されるオートマトンに対して、受付部131によって受け付けられた処理対象住所データを順次代入することによって文字列照合を行う(ステップS102)。そして、抽出部132aは、住所要素記憶部122から、処理対象住所データに含まれる住所要素に対応付けて記憶されている住所IDを抽出する(ステップS103)。
続いて、一次特定部132bは、抽出部132aによって抽出された住所IDの集合の論理積を演算することにより住所IDを特定する(ステップS104)。一次特定部132bによって特定された住所IDが1個である場合(ステップS105肯定)、書換部134は、住所記憶部121から、かかる住所IDに対応付けて記憶されている正規住所データを取得する(ステップS106)。続いて、書換部134は、所定の記憶部に記憶されている処理対象住所データを、住所記憶部121から取得した正規住所データ(修正候補住所データ)に書き換える(ステップS107)。
また、書換部134は、住所データ書換処理に関する各種ログ情報をログ記憶部124に記憶させる(ステップS108)。なお、データ処理装置100が、他の情報処理装置からネットワークを介して処理対象住所データを受信した場合、書換部134は、ネットワークを介して、処理対象住所データを上記ステップS106の処理手順において取得された正規住所データに書き換える。
一方、一次特定部132bによって特定された住所IDが1個でない場合(ステップS105否定)、分割部133aは、処理対象住所データを所定の文字数ごとに分割する(ステップS109)。続いて、二次特定部133bは、住所記憶部121から、一次特定部132bによって特定された複数の住所IDに対応付けて記憶されている正規住所データを住所IDごとに取得する(ステップS110)。
続いて、二次特定部133bは、分割部133aによって分割された文字列により形成されるオートマトンに対して、上記ステップS110において取得された正規住所データを順次代入することによって文字列照合を行う(ステップS111)。続いて、二次特定部133bは、上記ステップS110において取得された正規住所データのうち、分割部133aによって分割された文字列と一致する文字列の数が最も多い正規住所データに対応する住所IDを特定する(ステップS112)。
続いて、書換部134は、二次特定部133bによって特定された住所IDが1個である場合(ステップS113肯定)、所定の記憶部に記憶されている処理対象住所データを、二次特定部133bによって特定された正規住所データに書き換える(ステップS114)。また、書換部134は、住所データ書換処理に関する各種ログ情報をログ記憶部124に記憶させる(ステップS108)。
一方、二次特定部133bによって特定された住所IDが1個でない場合(ステップS113否定)、書換部134は、住所データ書換処理を実行した日時や、処理対象住所データ、二次特定部133bによって特定された複数の正規住所データなどをログ記憶部124に記憶させる(ステップS115)。
次に、図11〜図13を用いて、データ処理装置100によるデータ修正処理の一例について説明する。図11〜図13は、実施例1に係るデータ処理装置100によるデータ修正処理の一例を説明するための図である。なお、以下に説明する3つの例において、住所記憶部121、住所要素記憶部122、構成情報記憶部123に記憶されている各種情報は、それぞれ図3、図4、図5に示した状態であるものとする。
まず、図11を用いて、処理対象住所データが「神奈川県川崎市下小田中1丁目」である場合におけるデータ処理装置100によるデータ修正処理について説明する。なお、この処理対象住所データ「神奈川県川崎市下小田中1丁目」を修正するための修正候補住所データは、「神奈川県川崎市中原区下小田中1丁目」である。すなわち、処理対象住所データ「神奈川県川崎市下小田中1丁目」は、表記が統一されている修正候補住所データと比較して「中原区」が抜けている。
かかる場合、データ処理装置100の抽出部132aは、図11に示すように、オートマトンを用いた文字列照合処理の結果、住所要素記憶部122から、住所ID「1−499」、「1−100」、「5−9」および「1:5:101:・・・:500:・・・」を抽出する。
続いて、一次特定部132bは、抽出された住所IDの論理積を演算することにより、抽出された住所IDの中から、住所ID「5」を特定する。続いて、書換部134は、一次特定部132bによって住所IDが1個に特定されたため、住所記憶部121から、住所ID「5」に対応付けて記憶されている住所データ「神奈川県川崎市中原区下小田中1丁目」を取得する。そして、書換部134は、処理対象住所データ「神奈川県川崎市下小田中1丁目」を「神奈川県川崎市中原区下小田中1丁目」へ書き換える。
また、書換部134は、構成情報記憶部123から、住所ID「5」に対応付けて記憶されている構成情報「都道府県|市区郡|政令区町村|町名字|丁目字」を取得する。そして、書換部134は、取得した構成情報と、処理対象住所データを形成する構成情報とが一致するか否かを判定する。ここでは、書換部134は、構成情報「政令区町村」が不一致であると判定する。
そして、書換部134は、ログ記憶部124にログ情報を記憶させる。このとき、書換部134は、例えば、構成情報「政令区町村」を書き換えた旨、または、構成情報「政令区町村」を補完した旨のログ情報をログ記憶部124に記憶させる。また、例えば、書換部134は、処理対象住所データ「神奈川県川崎市下小田中1丁目」と、修正候補住所データ「神奈川県川崎市中原区下小田中1丁目」との差分をログ記憶部124に記憶させる。
このように、データ処理装置100は、処理対象住所データに構成情報(図11の例では、政令区町村)が抜けている場合であっても、1回の文字列照合処理と、1回の演算処理によって、修正候補住所データを特定することができる。すなわち、データ処理装置100は、処理対象住所データに構成情報が抜けている場合であっても、低負荷かつ高速にデータ修正処理を行うことができる。
次に、図12を用いて、処理対象住所データが「神奈川県横川崎市中原区下小田中1丁目」である場合におけるデータ処理装置100によるデータ修正処理について説明する。なお、この処理対象住所データ「神奈川県横川崎市中原区下小田中1丁目」を修正するための修正候補住所データは、「神奈川県川崎市中原区下小田中1丁目」である。すなわち、処理対象住所データ「神奈川県横川崎市中原区下小田中1丁目」は、表記が統一されている住所データと比較して、「川崎市」の1文字前の「横」が余分に付与されている。
かかる場合、データ処理装置100の抽出部132aは、オートマトンを用いた文字列照合処理の結果、住所要素記憶部122から、住所ID「1−499」、「851−855」、「1−100」、「1−20」、「5−9」および「1:5:101:・・・:500:・・・」を抽出する。なお、住所ID「851−855」は、町名字「横川」を含む住所データの住所IDである。
続いて、一次特定部132bは、抽出された住所IDの論理積を演算することにより、抽出された住所IDの中から、住所ID「5」を特定する。続いて、書換部134は、住所記憶部121から、住所ID「5」に対応付けて記憶されている住所データ「神奈川県川崎市中原区下小田中1丁目」を取得する。そして、書換部134は、処理対象住所データ「神奈川県横川崎市中原区下小田中1丁目」を「神奈川県川崎市中原区下小田中1丁目」へ書き換える。
また、書換部134は、構成情報記憶部123から、住所ID「5」に対応付けて記憶されている構成情報「都道府県|市区郡|政令区町村|町名字|丁目字」を取得する。そして、書換部134は、取得した構成情報と、処理対象住所データを形成する構成情報とが一致するか否かを判定する。ここでは、書換部134は、構成情報記憶部123から取得した構成情報と、処理対象住所データを形成する構成情報とが一致すると判定する。
そして、書換部134は、ログ記憶部124にログ情報を記憶させる。このとき、書換部134は、例えば、処理対象住所データ「神奈川県横川崎市中原区下小田中1丁目」と、修正候補住所データ「神奈川県川崎市中原区下小田中1丁目」との差分をログ記憶部124に記憶させる。また、書換部134は、かかる差分が存在する構成情報を特定して、特定した構成情報をログ記憶部124に記憶させる。
このように、データ処理装置100は、処理対象住所データに余分な文字列が付与されている場合であっても、1回の文字列照合処理と、1回の演算処理によって、修正候補住所データを特定することができる。すなわち、データ処理装置100は、処理対象住所データに余分な文字列が付与されている場合であっても、低負荷かつ高速にデータ修正処理を行うことができる。
次に、図13を用いて、処理対象住所データが「神奈川県川崎市中原区小田中1丁目」である場合におけるデータ処理装置100によるデータ修正処理について説明する。なお、この処理対象住所データ「神奈川県川崎市中原区小田中1丁目」を修正するための修正候補住所データは、「神奈川県川崎市中原区下小田中1丁目」であるものとする。すなわち、処理対象住所データ「神奈川県川崎市中原区小田中1丁目」は、表記が統一されている住所データと比較して、「小田中」の1文字前の「下」が抜けている。
かかる場合、データ処理装置100の抽出部132aは、オートマトンを用いた文字列照合処理の結果、住所要素記憶部122から、住所ID「1−499」、「1−100」、「1−20」および「1:5:101:・・・:500:・・・」を抽出する。
続いて、一次特定部132bは、抽出された住所IDの論理積を演算することにより、抽出された住所IDの中から、住所ID「1」および「5」を特定する。これは、抽出部132aによって抽出された住所IDの中で、最も多く含まれている住所IDが「1」と「5」であるからである。
続いて、分割部133aは、処理対象住所データが「神奈川県川崎市中原区小田中1丁目」を1文字ずつ重複させながら2文字単位に分割する。具体的には、分割部133aは、処理対象住所データを「神奈」「奈川」「川県」「県川」「川崎」「崎市」「市中」「中原」「原区」「区小」「小田」「田中」「中1」「1丁」「丁目」に分割する。
続いて、二次特定部133bは、住所記憶部121から、住所ID「1」に対応付けて記憶されている住所データ「神奈川県川崎市中原区上小田中1丁目」と、住所ID「5」に対応付けて記憶されている住所データ「神奈川県川崎市中原区下小田中1丁目」とを取得する。続いて、二次特定部133bは、分割部133aによって分割された文字列により形成されるオートマトンを用いて、住所記憶部121から取得した住所データと、分割された文字列との文字列照合を行う。
ここでは、図13に示すように、二次特定部133bは、分割部133aによって分割された文字列のうち、14個の文字列が、住所ID「1」の住所データ「神奈川県川崎市中原区上小田中1丁目」に含まれる文字列と一致することを検出する。同様に、二次特定部133bは、分割部133aによって分割された文字列のうち、14個の文字列が、住所ID「5」の住所データ「神奈川県川崎市中原区下小田中1丁目」に含まれる文字列と一致することを検出する。
すなわち、図13に示した例では、住所ID「1」である住所データと、住所ID「5」である住所データとは、分割部133aによって分割された文字列と一致する文字列の数が等しい。したがって、書換部134は、処理対象住所データを書き換えることなく、住所データ書換処理を実行した日時や、処理対象住所データ、住所ID「1」である住所データ、住所ID「5」である住所データなどをログ記憶部124に記憶させる。
このように、データ処理装置100は、修正候補住所データを一意に特定できなかった場合であっても、特定した複数の修正候補住所データをログ記憶部124に記憶させる。これにより、システム管理者等は、かかるログ情報に基づいて、処理対象住所データを、どの修正候補住所データに書き換えるかを判断する候補を得ることができる。
なお、データ処理装置100は、処理対象住所データの市区郡や政令区町村などが入れ代わっている場合、構成情報記憶部123に記憶されている各種情報に基づいて、市区郡や政令区町村などの入れ代わりを検出することができる。処理対象住所データが「神奈川県中原区川崎市下小田中1丁目」である場合を例に挙げて説明する。かかる場合、データ処理装置100は、処理対象住所データを修正するための修正候補住所データの住所IDを「5」に特定する。
このとき、データ処理装置100は、構成情報記憶部123から、住所ID「5」に対応付けて記憶されている構成情報「都道府県|市区郡|政令区町村|町名字|丁目字」を取得する。そして、データ処理装置100は、取得した構成情報と、処理対象住所データの構成情報「都道府県|政令区町村|市区郡|町名字|丁目字」とを比較する。これにより、データ処理装置100は、処理対象住所データの市区郡と政令区町村とが入れ代わっていることを検出することができる。データ処理装置100は、このような市区郡や政令区町村などの入れ代わり情報をログ記憶部124に記憶させてもよい。
上述してきたように、実施例1に係るデータ処理装置100は、住所要素記憶部122に記憶されている住所要素によって形成されるオートマトンを用いて、かかる住所要素と、処理対象住所データに含まれる住所要素との文字列照合を行う。そして、データ処理装置100は、住所要素記憶部122から取得した住所IDの論理積を演算することにより住所IDを特定する。これにより、データ処理装置100は、1回の文字列照合処理と、1回の演算処理を行うことによって、修正候補住所データを特定することができる。その結果、データ処理装置100は、低負荷かつ高速に修正候補住所データを特定することができ、低負荷かつ高速にデータ修正処理を行うことができる。
また、データ処理装置100は、論理積演算の結果、複数の住所IDを特定した場合に、Nグラム法を用いて、修正対象住所データを特定する。これにより、データ処理装置100は、2回の文字列照合処理と、1回の演算処理を行うことによって、修正対象住所データを特定することができる。その結果、データ処理装置100は、低負荷かつ高速に修正対象住所データを特定することができ、低負荷かつ高速にデータ修正処理を行うことができる。
また、データ処理装置100は、Nグラム法を用いた文字列照合処理の結果、複数の住所データを特定した場合に、特定された複数の住所データをログ記憶部124に記憶させる。これにより、システム管理者等は、かかるログ情報に基づいて、処理対象住所データを、どの住所データに書き換えるか判断する候補を得ることができる。
なお、上記実施例1では、住所要素記憶部122が、表記が統一されている住所要素(住所記憶部121に記憶されている住所データに含まれる住所要素)を記憶する例を示したが、住所要素記憶部122は、表記が統一されていない住所要素を記憶してもよい。例えば、住所要素記憶部122に表記が不統一になり易い住所要素を記憶させることにより、データ処理装置100は、表記が不統一になり易い住所要素を含む住所データを、表記が統一されている住所データへ容易に修正することができる。
以下に、図14および図15を用いて具体的に説明する。図14は、表記が統一されていない住所要素を記憶する住所要素記憶部122の一例を示す図である。図14に示した例において、タイプに表記した「+」は、表記が統一されていない住所要素であることを示す。このようなタイプに「+」が表記されているレコードが追加されるケースは、例えば、表記が不統一になり易い住所要素が存在する場合である。
具体的には、図14に示した住所要素記憶部122では、表記が統一されている住所要素「麹町」(図14中の11行目)の表記が不統一になり易い文字列として、「麹町」の異体字(図14中の12行目)が追加されている。同様に、図14に示した住所要素記憶部122では、「麹町」を平仮名で表記した「こうじ町」(図14中の13行目)が追加されている。
続いて、表記が統一されていない住所要素を記憶する住所要素記憶部122を用いたデータ処理装置100によるデータ修正処理の一例について説明する。図15は、表記が統一されていない住所要素を記憶する住所要素記憶部122を用いた場合におけるデータ修正処理の一例を説明するための図である。
図15に示した例において、処理対象住所データは、「東京都千代田区こうじ町1丁目」であるものとする。なお、この処理対象住所データ「東京都千代田区こうじ町1丁目」を修正するための修正候補住所データは、「東京都千代田区麹町1丁目」である。すなわち、処理対象住所データ「東京都千代田区こうじ町1丁目」は、表記が統一されている住所データと比較して「麹」の文字列が平仮名で表記されている。
かかる場合、データ処理装置100の抽出部132aは、図15に示すように、オートマトンを用いた文字列照合処理の結果、住所要素記憶部122から、住所ID「500−1500」、「500−599」、「500−510」および「1:5:101:・・・:500:・・・」を抽出する。
続いて、一次特定部132bは、抽出された住所IDの論理積を演算することにより、抽出された住所IDの中から、住所ID「500」を特定する。続いて、書換部134は、住所記憶部121から、住所ID「500」に対応付けて記憶されている住所データ「東京都千代田区麹町1丁目」を取得する。そして、書換部134は、処理対象住所データ「東京都千代田区こうじ町1丁目」を「東京都千代田区麹町1丁目」へ書き換える。
そして、書換部134は、ログ記憶部124にログ情報を記憶させる。このとき、書換部134は、住所要素記憶部122から取得した住所要素「こうじ町」に対応するタイプに「+」が含まれているので、構成情報「政令区町村」を書き換えた旨のログ情報をログ記憶部124に記憶させる。
このように、住所要素記憶部122に表記が統一されていない住所要素を記憶しておくことにより、データ処理装置100は、表記が不統一になり易い住所要素を含む住所データを、表記が統一されている住所データへ容易に修正することができる。
ところで、上記実施例1では、データ処理装置100の一次特定部132bが、抽出部132aによって抽出された住所IDの集合の論理積を演算することにより住所IDを特定する例を示した。言い換えれば、上記実施例1では、一次特定部132bが、論理積を演算することにより、抽出部132aによって抽出された住所IDの集合に最も多く含まれる住所IDを特定する例を示した。
しかし、データ処理装置は、住所要素記憶部に記憶されている住所要素に重要度を付与しておいてもよい。そして、データ処理装置は、処理対象住所データに重要度の高い住所要素が含まれている場合に、かかる住所要素が含まれている住所データを修正候補住所データに特定するようにしてもよい。また、データ処理装置は、重要度の低い住所要素については、論理積演算から除外するようにしてもよい。そこで、実施例2では、住所要素記憶部に記憶されている住所要素に重要度を付与する例について説明する。
まず、実施例2に係るデータ処理装置200の構成について説明する。図16は、実施例2に係るデータ処理装置200の構成を示す図である。図16に示すように、データ処理装置200は、図2に示したデータ処理装置100と比較して、住所要素記憶部122の代わりに住所要素記憶部222を有し、一次特定部132bの代わりに一次特定部232bを有する。
住所要素記憶部222の一例を図17に示す。図17に示すように、住所要素記憶部222は、図4に示した住所要素記憶部122と比較して、項目「重要度」を新たに有する。項目「重要度」は、対応する「住所要素」に記憶されている情報の重要度を記憶する。
図17に示した例において、住所要素記憶部222は、タイプが「都道府県」である住所要素「神奈川県」および「東京都」の重要度に「0」を記憶する。ここで、重要度「0」は、重要度が低いことを示すものとする。そして、重要度「0」は、後述する一次特定部232bにより実行される論理積演算から除外してよいことを示すものとする。
このような重要度「0」は、住所を特定する上で不要な住所要素に付与される。例えば、図17に示した例のように、タイプ「都道府県」に重要度「0」を付与する。これは、一般に、都道府県が不明であっても、市区郡、政令区町村、町名字、丁目字が明確であれば、住所を特定できるからである。
また、図17に示した例において、住所要素記憶部222は、タイプが「特定名称」である住所要素「○○病院」の重要度に「1」を記憶する。ここで、重要度「1」は、重要度が高いことを示すものとする。そして、重要度「1」は、対応する住所要素(図17の例では、「○○病院」)が処理対象住所データに含まれている場合、後述する一次特定部232bによって、対応する住所ID(図17の例では、「101」)に特定されてよいことを示すものとする。
このような重要度「1」は、住所を一意に特定することができる住所要素(例えば、建物名や、ビル名、施設名)に付与される。例えば、図17に示した例のように、「○○病院」に重要度「1」を付与する。これは、「○○病院」が明確になれば、住所を一意に特定できるからである。
一次特定部232bは、抽出部132aによって抽出された住所IDの集合に対して論理積および論理和を演算することにより住所IDを特定する。このとき、一次特定部232bは、抽出部132aによって抽出された住所IDのうち、重要度「0」に対応付けて住所要素記憶部222に記憶されている住所IDを除外して、論理積を演算する。また、一次特定部232bは、重要度が設定されていない住所IDの論理積を演算し、かかる論理積演算の結果と、重要度が「1」である住所IDとの論理和を演算する。
ここで、図18および図19を用いて、データ処理装置200によるデータ修正処理の一例について説明する。図18および図19は、実施例2に係るデータ処理装置200によるデータ修正処理の一例を説明するための図である。なお、以下に説明する2つの例において、住所記憶部121、住所要素記憶部222に記憶されている各種情報は、それぞれ図3、図17に示した状態であるものとする。
まず、図18を用いて、処理対象住所データが「東京都川崎市中原区下小田中1丁目」である場合におけるデータ処理装置200によるデータ修正処理について説明する。なお、この処理対象住所データ「東京都川崎市中原区下小田中1丁目」を修正するための修正候補住所データは、「神奈川県川崎市中原区下小田中1丁目」である。すなわち、処理対象住所データ「東京都川崎市中原区下小田中1丁目」は、表記が統一されている住所データと比較して「神奈川県」と「東京都」とが異なる。
かかる場合、データ処理装置200の抽出部132aは、図18に示すように、オートマトンを用いた文字列照合処理の結果、住所要素記憶部222から、住所ID「500−1500」、「1−100」、「1−20」、「5−9」および「1:5:101:・・・:500:・・・」を抽出する。
続いて、一次特定部232bは、抽出された住所IDの論理積を演算する。このとき、一次特定部232bは、重要度が「0」である住所ID「500−1500」を除外して、論理積を演算する。すなわち、一次特定部232bは、住所ID「1−100」、「1−20」、「5−9」および「1:5:101:・・・:500:・・・」の論理積を演算する。これにより、一次特定部232bは、住所ID「5」を特定する。続いて、書換部134は、住所記憶部121から、住所ID「5」に対応付けて記憶されている住所データ「神奈川県川崎市中原区下小田中1丁目」を取得する。そして、書換部134は、処理対象住所データ「東京都川崎市中原区下小田中1丁目」を「神奈川県川崎市中原区下小田中1丁目」へ書き換える。
このように、データ処理装置200は、重要度が低い住所要素に対応する住所IDを除外して論理積を演算するので、かかる演算処理をより高速に実行することができる。すなわち、データ処理装置200は、修正対象住所データをより低負荷かつ高速に特定することができる。
次に、図19を用いて、処理対象住所データが「神奈川県横浜市○○病院」である場合におけるデータ処理装置200によるデータ修正処理について説明する。なお、この処理対象住所データ「神奈川県横浜市○○病院」を修正するための修正候補住所データは、「神奈川県横浜市港北区新横浜1丁目○○病院」である。すなわち、処理対象住所データ「神奈川県横浜市○○病院」は、表記が統一されている住所データと比較して「港北区新横浜1丁目」が抜けている。
かかる場合、データ処理装置200の抽出部132aは、図19に示すように、オートマトンを用いた文字列照合処理の結果、住所要素記憶部222から、住所ID「1−499」、「101−200」および「101」を抽出する。
続いて、一次特定部232bは、抽出された住所IDのうち、重要度が設定されていない住所IDについては論理積を演算し、重要度が設定されている住所IDについては論理和を演算する。図19に示した例では、一次特定部232bは、(「1−499」AND「101−200」)OR「101」を演算する。そして、一次特定部232bは、かかる演算処理の結果、修正候補住所データの住所IDを、住所ID「101」に特定する。
続いて、書換部134は、住所記憶部121から、住所ID「101」に対応付けて記憶されている住所データ「神奈川県横浜市港北区新横浜1丁目○○病院」を取得する。そして、書換部134は、処理対象住所データ「神奈川県横浜市○○病院」を「神奈川県横浜市港北区新横浜1丁目○○病院」へ書き換える。
このように、データ処理装置200は、重要度が高い住所要素に対応する住所IDを優先的に修正候補住所データに特定する。これにより、データ処理装置200は、処理対象住所データに重要度が高い住所要素が含まれている場合に、修正候補住所データを高精度に特定することができる。
なお、上記実施例2では、2個の重要度(「0」または「1」)について説明したが、データ処理装置200は、住所要素記憶部222に3個以上の重要度を付与してもよい。かかる場合、一次特定部232bは、処理対象住所データに含まれる住所要素の重要度が高いほど、かかる住所要素に対応する住所IDを優先的に修正候補住所データに特定する。例えば、一次特定部232bは、重要度が所定の閾値よりも低い住所IDを除外するとともに、重要度が所定の閾値よりも高い住所IDについては論理和演算を行う。
また、図2および図16に示したデータ処理装置100および200の構成は、要旨を逸脱しない範囲で種々に変更することができる。例えば、データ処理装置100の制御部130の機能をソフトウェアとして実装し、これをコンピュータで実行することにより、データ処理装置100と同等の機能を実現することもできる。以下に、データ処理装置100の各種処理部の機能をソフトウェアとして実装したデータ処理プログラム1071を実行するコンピュータの一例を示す。
図20は、データ処理プログラム1071を実行するコンピュータ1000を示す図である。このコンピュータ1000は、各種演算処理を実行するCPU(Central Processing Unit)1010と、ユーザからのデータの入力を受け付ける入力装置1020と、各種情報を表示するモニタ1030と、記録媒体からプログラム等を読み取る媒体読取り装置1040と、ネットワークを介して他のコンピュータとの間でデータの授受を行うネットワークインターフェース装置1050と、各種情報を一時記憶するRAM(Random Access Memory)1060と、ハードディスク装置1070とをバス1080で接続して構成される。
そして、ハードディスク装置1070には、図2に示した制御部130と同様の機能を有するデータ処理プログラム1071が記憶される。また、ハードディスク装置1070には、図2に示した記憶部120に記憶される各種データ(住所記憶部121、住所要素記憶部122および構成情報記憶部123)に対応するデータ処理関連データ1072が記憶される。また、ハードディスク装置1070には、図2に示したログ記憶部124に対応するログファイル1073が記憶される。なお、データ処理関連データ1072またはログファイル1073を、適宜分散させ、ネットワークを介して接続された他のコンピュータに記憶させておくこともできる。
そして、CPU1010がデータ処理プログラム1071をハードディスク装置1070から読み出してRAM1060に展開することにより、データ処理プログラム1071は、データ処理プロセス1061として機能するようになる。そして、データ処理プロセス1061は、データ処理関連データ1072から読み出した情報等を適宜RAM1060上の自身に割り当てられた領域に展開し、この展開したデータ等に基づいて各種データ処理を実行する。そして、データ処理プロセス1061は、所定の情報をログファイル1073に出力する。
なお、上記のデータ処理プログラム1071は、必ずしもハードディスク装置1070に格納されている必要はなく、CD−ROM等の記憶媒体に記憶されたこのプログラムを、コンピュータ1000が読み出して実行するようにしてもよい。また、公衆回線、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)等を介してコンピュータ1000に接続される他のコンピュータ(またはサーバ)等にこのプログラムを記憶させておき、コンピュータ1000がこれらからプログラムを読み出して実行するようにしてもよい。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)所定の文字列と、前記所定の文字列を識別するための文字列識別子とを記憶する文字列記憶手段と、
前記所定の文字列に含まれる文字列である文字列要素と、該文字列要素が含まれる前記所定の文字列を示す文字列識別子の集合とを記憶する文字列要素記憶手段と、
前記文字列要素記憶手段から、処理対象の文字列に含まれる文字列要素に対応付けて記憶されている文字列識別子の集合を抽出する抽出手段と、
前記抽出手段によって抽出された文字列識別子の集合に最も多く含まれている文字列識別子を、前記処理対象の文字列と一致または類似する文字列である対応文字列を示す文字列識別子に特定する第一の特定手段と
を備えたことを特徴とするデータ処理装置。
(付記2)前記第一の特定手段によって特定された文字列識別子が複数存在する場合に、前記処理対象の文字列を所定のサイズごとに分割する分割手段と、
前記第一の特定手段によって特定された文字列識別子が示す複数の文字列のうち、前記分割手段によって分割された文字列である分割文字列が最も多く含まれる文字列を前記対応文字列に特定する第二の特定手段とをさらに備えたことを特徴とする付記1に記載のデータ処理装置。
(付記3)前記抽出手段は、前記文字列要素記憶手段に記憶されている文字列要素により形成されるオートマトンを用いて、前記処理対象の文字列に含まれる文字列要素と、前記文字列要素記憶手段に記憶されている文字列要素とを照合することにより、前記文字列要素記憶手段から、前記処理対象の文字列に含まれる文字列要素に対応付けて記憶されている文字列識別子の集合を抽出することを特徴とする付記1または2に記載のデータ処理装置。
(付記4)前記第一の特定手段は、前記抽出手段によって抽出された文字列識別子の集合の論理積を演算することにより、前記対応文字列を示す文字列識別子を特定することを特徴とする付記1〜3のいずれか一つに記載のデータ処理装置。
(付記5)前記文字列要素記憶手段は、前記文字列要素と前記文字列識別子の集合とに対応付けて、該文字列要素の重要度をさらに記憶し、
前記第一の特定手段は、前記抽出手段によって抽出された文字列識別子の集合のうち、前記文字列要素記憶手段に記憶されている重要度が高い文字列識別子ほど、前記対応文字列を示す文字列識別子に特定することを特徴とする付記1〜4のいずれか一つに記載のデータ処理装置。
(付記6)前記第一の特定手段は、前記抽出手段によって抽出された文字列識別子の集合から前記重要度が所定の閾値よりも低い文字列識別子の集合を除外した文字列識別子の集合に最も多く含まれている文字列識別子を、前記対応文字列を示す文字列識別子に特定することを特徴とする付記5に記載のデータ処理装置。
(付記7)前記第一の特定手段は、前記抽出手段によって抽出された文字列識別子のうち、前記重要度が所定の閾値よりも低い文字列識別子の集合の論理積を演算し、論理積演算の結果と、前記重要度が所定の閾値よりも高い文字列識別子の集合との論理和を演算することにより、前記対応文字列を示す文字列識別子を特定することを特徴とする付記5または6に記載のデータ処理装置。
(付記8)前記第一の特定手段によって文字列識別子が一意に特定された場合に、前記処理対象の文字列を、該文字列識別子に対応付けて前記文字列記憶手段に記憶されている文字列に書き換え、前記第一の特定手段によって特定された文字列識別子が複数存在する場合に、前記処理対象の文字列を、前記第二の特定手段によって特定された対応文字列に書き換える書換手段をさらに備えたことを特徴とする付記1〜7のいずれか一つに記載のデータ処理装置。
(付記9)前記書換手段は、前記処理対象の文字列と前記対応文字列とが異なる場合に、前記処理対象の文字列を前記対応文字列に書き換えることを特徴とする付記8に記載のデータ処理装置。
(付記10)前記対応文字列と、前記処理対象の文字列と、前記対応文字列と前記処理対象の文字列との差異とを、所定の表示部または所定の記憶部に出力するログ出力手段をさらに備えたことを特徴とする付記1〜9のいずれか一つに記載のデータ処理装置。
(付記11)所定の文字列に含まれる文字列である文字列要素と、該文字列要素が含まれる前記所定の文字列を識別するための文字列識別子の集合とを記憶する文字列要素記憶手段から、処理対象の文字列に含まれる文字列要素に対応付けて記憶されている文字列識別子の集合を抽出する抽出手順と、
前記抽出手順によって抽出された文字列識別子の集合に最も多く含まれている文字列識別子を、前記処理対象の文字列と一致または類似する文字列である対応文字列を示す文字列識別子に特定する第一の特定手順と
をコンピュータに実行させることを特徴とするデータ処理プログラム。
(付記12)前記第一の特定手順によって特定された文字列識別子が複数存在する場合に、前記処理対象の文字列を所定のサイズごとに分割する分割手順と、
前記第一の特定手順によって特定された文字列識別子が示す複数の文字列のうち、前記分割手順によって分割された文字列である分割文字列が最も多く含まれる文字列を前記対応文字列に特定する第二の特定手順とをさらにコンピュータに実行させることを特徴とする付記11に記載のデータ処理プログラム。
(付記13)前記文字列要素記憶手段は、前記文字列要素と前記文字列識別子の集合とに対応付けて、該文字列要素の重要度をさらに記憶し、
前記第一の特定手順は、前記抽出手順によって抽出された文字列識別子の集合のうち、前記文字列要素記憶手段に記憶されている重要度が高い文字列識別子ほど、前記対応文字列を示す文字列識別子に特定することを特徴とする付記11または12に記載のデータ処理プログラム。
(付記14)前記第一の特定手順によって文字列識別子が一意に特定された場合に、前記所定の文字列と該所定の文字列の文字列識別子とを記憶する文字列記憶手段から、前記第一の特定手順によって特定された文字列識別子に対応付けて記憶されている文字列を取得し、前記処理対象の文字列を、取得した文字列に書き換え、前記第一の特定手順によって特定された文字列識別子が複数存在する場合に、前記処理対象の文字列を、前記第二の特定手順によって特定された対応文字列に書き換える書換手順をさらにコンピュータに実行させることを特徴とする付記11〜13のいずれか一つに記載のデータ処理プログラム。
(付記15)前記対応文字列と、前記処理対象の文字列と、前記対応文字列と前記処理対象の文字列との差異とを、所定の表示部または所定の記憶部に出力するログ出力手順をさらにコンピュータに実行させることを特徴とする付記11〜14のいずれか一つに記載のデータ処理プログラム。
(付記16)データ処理装置が、
所定の文字列に含まれる文字列である文字列要素と、該文字列要素が含まれる前記所定の文字列を識別するための文字列識別子の集合とを記憶する文字列要素記憶手段から、処理対象の文字列に含まれる文字列要素に対応付けて記憶されている文字列識別子の集合を抽出する抽出工程と、
前記抽出工程によって抽出された文字列識別子の集合に最も多く含まれている文字列識別子を、前記処理対象の文字列と一致または類似する文字列である対応文字列を示す文字列識別子に特定する第一の特定工程と
を含んだことを特徴とするデータ処理方法。
(付記17)前記第一の特定工程によって特定された文字列識別子が複数存在する場合に、前記処理対象の文字列を所定のサイズごとに分割する分割工程と、
前記第一の特定工程によって特定された文字列識別子が示す複数の文字列のうち、前記分割工程によって分割された文字列である分割文字列が最も多く含まれる文字列を前記対応文字列に特定する第二の特定工程とをさらに含んだことを特徴とする付記16に記載のデータ処理方法。
(付記18)前記文字列要素記憶手段は、前記文字列要素と前記文字列識別子の集合とに対応付けて、該文字列要素の重要度をさらに記憶し、
前記第一の特定工程は、前記抽出工程によって抽出された文字列識別子の集合のうち、前記文字列要素記憶手段に記憶されている重要度が高い文字列識別子ほど、前記対応文字列を示す文字列識別子に特定することを特徴とする付記16または17に記載のデータ処理方法。
(付記19)前記第一の特定工程によって文字列識別子が一意に特定された場合に、前記所定の文字列と該所定の文字列の文字列識別子とを記憶する文字列記憶手段から、前記第一の特定工程によって特定された文字列識別子に対応付けて記憶されている文字列を取得し、前記処理対象の文字列を、取得した文字列に書き換え、前記第一の特定工程によって特定された文字列識別子が複数存在する場合に、前記処理対象の文字列を、前記第二の特定工程によって特定された対応文字列に書き換える書換工程をさらに含んだことを特徴とする付記16〜18のいずれか一つに記載のデータ処理方法。
(付記20)前記対応文字列と、前記処理対象の文字列と、前記対応文字列と前記処理対象の文字列との差異とを、所定の表示部または所定の記憶部に出力するログ出力工程をさらに含んだことを特徴とする付記16〜19のいずれか一つに記載のデータ処理方法。