実施の形態1.
本発明の第1の実施の形態について、図面を参照して説明する。図1は、本発明の第1の実施の形態の一構成例を説明するブロック図である。
本発明の第1の実施の形態による重複レコード検出システム20は、同義語が登録されている同義語辞書と、省略可能な語が登録されている省略可能語辞書とによって構成される変換語辞書(変換語記憶部)5、変換語辞書5を用いて、店舗の情報が登録されているデータベース2に登録されている複数のレコード間の類似度を計算する類似度計算部3、類似度計算部3が計算した類似度が所定の閾値以上であった情報を抽出する重複候補抽出部6、および各部の動作を制御するプログラムを記憶する記憶部1を含む。
重複レコード検出システム20は、プログラムによって処理を実行するサーバ等のコンピュータによって実現される。なお、重複レコード検出システム20は、外部の記憶媒体が記憶しているプログラムに従って処理を実行してもよい。また、変換語辞書5は、予め同義語および省略可能語が登録されているものとする。
図2は、データベース2に登録されている情報の例を示す説明図である。データベース2には、例えば、店舗の名称や住所、電話番号が登録されている。なお、データベース2には、各店舗の情報が、レコードに区切られて登録され、店舗の各情報は、登録されているレコードの各情報の属性に応じたフィールドに区切られて登録されているものとする。具体的には、図2に示す例では、レコードIDが「001」のレコードには「エヌイーシー奈良支店」の各情報が登録され、レコードIDが「002」のレコードには「日電奈良支店」の各情報が登録され、レコードIDが「003」のレコードには「NEC奈良支店」の各情報が登録されている。
また、データベース2の各レコードの名称のフィールドには、「エヌイーシー奈良支店」、「日電奈良支店」、および「NEC奈良支店」が登録されており、住所のフィールドには、「○○○1の1」、「○○○1−1」、および「○○○1−1」が登録されており、電話番号のフィールドには、「000−111−1234」、「000−111−1235」、および「000−111−1234」が登録されているものとする。
なお、データベース2における各レコードのフィールドの数等の情報を入力し、入力されたデータベース2の情報を類似度計算部3に出力するデータベース情報入力部4を含んでもよい。データベース情報入力部4には、使用者がキーボード等の入力手段を用いてデータベース2の情報を入力してもよい。また、データベース情報入力部4は、記憶部1や外部の記憶媒体が記憶しているデータベース2の情報を読み込んでもよい。
データベース情報入力部4には、例えば、どのフィールドは何を表しているのか(例えば、各レコードの先頭のフィールドはIDである等)、どのフィールドとどのフィールドとを結合して1つのフィールドとして扱う(例えば、住所が「都道府県」、「市町村」、および「番地とビル名」に分かれている各フィールドを1つのフィールドとして扱う等)のか、どのフィールドの類似度計算に変換語辞書5を用いるのか、およびレコード間の類似度を算出する際の各フィールドの重み(名称フィールド、住所フィールド、および電話番号フィールドの重みの比を、1:1:1とする)等の情報を入力する。
図3は、変換語辞書5に登録されている情報の例を示す説明図である。変換語辞書5を構成する同義語辞書には、語と、その語の同義語のうち代表的な語である代表語とが対応づけられて登録されている。また、変換語辞書5を構成する省略可能語辞書には、代表語のうち、相互に省略可能な代表語に同じグループIDが付されて登録されている。
図3の例によれば、「エヌイーシー」と「日本電気」との代表語は「NEC」であり、「日本電気株式会社」の代表語は「日電」である。また、「NEC」と「日電」とは相互に省略可能な省略可能語である。
なお、同義語辞書において、同義語の欄の語は、代表語として用いられることはないものとする。また、省略可能語辞書において、省略可能語として登録されている語は、代表語であってもよいが、同義語ではないものとする。
類似度計算部3は、例えば、形態素解析等の方法を用いて、データベース2に登録されている各情報を語の単位に分解する。なお、情報を語の単位に分解する他の方法として、例えば、スペースの前後で語の単位に分解したり、文字種が切り替わる位置(例えば、カタカナから漢字に切り替わる位置等)で語の単位に分解したりする方法がある。類似度計算部3は、同義語辞書を検索して、分解した語が同義語辞書に同義語として登録されていると、その同義語に対応づけられている代表語に変換する。
類似度計算部3は、省略可能語辞書を検索して、代表語に変換された語が省略可能語として登録されていると、同じグループIDが付されている省略可能語を、データベース2に登録されているレコードの語に追加する。そして、類似度計算部3は、代表語に変換され、省略可能語が追加された各レコード間の類似度を計算する。
類似度計算部3が各レコード間の類似度を計算する方法は、例えば、各情報の対応するフィールドの語の文字を先頭から1文字ずつ比較していき、合致すればその文字の類似度を1とし、合致しなければその文字の類似度を0とする。そして、例えば、各文字の類似度を合計した数を、語の文字数で割った商(すなわち、0から1の間で正規化した値)をそのフィールドの類似度とする。なお、各情報のフィールドの語の文字数が異なっている場合は、各フィールドを構成する語のうち最も多い文字数で、各文字の類似度を合計した数を割った商をそのフィールドの類似度とする。
そして、類似度計算部3は、各フィールドの類似度に、各フィールドごとの所定の重みの値を乗じた積を合計した数を、フィールドの数で割った商(すなわち、0から1の間で正規化した値)を、レコードの類似度として計算する。
本発明の類似度の計算方法は、上述した方法に限定されるものではなく、編集距離を用いる方法等の、他の方法を用いてもよい。なお、類似度計算部3は、データベース情報入力部4に入力された情報にもとづいて、各フィールドおよび各レコードの類似度を計算してもよい。
重複候補抽出部6は、類似度計算部3が計算した類似度が、所定の閾値以上であるレコードの組を、重複レコード候補として抽出する。なお、重複候補抽出部6は、他の方法を用いて、重複レコード候補を抽出してもよい。
重複レコード検出システム20は、コンピュータに、複数の情報からなる複数のレコードを保持するデータベースに登録されている情報に用いられている語を、語に対応する変換語を記憶する変換語辞書5が記憶している変換語に変換して、レコード間の類似度を計算させる類似度計算処理と、類似度計算処理で計算した類似度が、所定の値以上であるレコードの組み合わせである重複レコード候補を抽出させる重複候補抽出処理とを実行させるための重複レコード検出プログラムを搭載している。
次に、本発明の第1の実施の形態の動作を、具体例を挙げて図面を参照して説明する。図2の例に示すデータベース2に登録されている情報から、重複レコード候補を抽出する。図4は、本発明の第1の実施の形態の動作を説明するフローチャートである。
まず、類似度計算部3が、データベース2に登録されている情報を読み込む(ステップS101)。レコードIDが「001」のレコードの名称のフィールドは、「エヌイーシー奈良支店」である。類似度計算部3は、「エヌイーシー奈良支店」に形態素解析等を行って語に分解する(ステップS102)。具体的には、「エヌイーシー」と「奈良」と「支店」とに分解する。
なお、ここでは、データベース情報入力部4に入力された情報が、名称フィールド、および住所フィールドの類似度計算に、変換語辞書5を用いることを示していたものとする。すると、類似度計算部3は、変換語辞書5を参照して、分解した語が同義語であれば代表語に変換する(ステップS103)。図3を参照すると、「エヌイーシー」が同義語であるので、「エヌイーシー」を代表語である「NEC」に変換する。「奈良」および「支店」は同義語辞書に登録されていないので変換を行わない。すると、レコードID「001」の語は、「NEC」、「奈良」、および「支店」である。
次に、類似度計算部3は、変換語辞書5を参照して、省略可能語があれば、同じグループIDの省略可能語を追加する(ステップS104)。図3を参照すると、「NEC」と「日電」とが同じグループIDの省略可能語であるので、「日電」を追加する。すると、レコードID「001」の語は、「NEC」、「日電」、「奈良」、および「支店」である。
類似度計算部3は、分解した語を結合する(ステップS105)。すると、レコードID「001」のレコードの名称のフィールドは、「NEC日電奈良支店」および「日電NEC奈良支店」に変換される。
類似度計算部3は、上述したステップS101からステップS105の動作を、レコードID「002」およびレコードID「003」に対しても行う。
具体的には、レコードIDが「002」のレコードの名称のフィールドは、「日電奈良支店」である。類似度計算部3は、「日電奈良支店」に形態素解析を行って語に分解する。具体的には、「日電」と「奈良」と「支店」とに分解する。
類似度計算部3は、変換語辞書5を参照して、分解した各語が同義語であれば代表語に変換する。図3を参照すると、「日電」は代表語であり、「奈良」および「支店」は同義語辞書に登録されていないので変換を行わない。
次に、類似度計算部3は、変換語辞書5を参照して、省略可能語があれば、同じグループIDの省略可能語を追加する。図3を参照すると、「NEC」と「日電」とが同じグループIDの省略可能語であるので、「NEC」を追加する。すると、レコードID「002」の語は、「NEC」、「日電」、「奈良」、および「支店」である。
類似度計算部3は、分解した語を結合する。すると、レコードID「002」のレコードの名称のフィールドは、「NEC日電奈良支店」および「日電NEC奈良支店」に変換される。
同様に、レコードIDが「003」のレコードの名称のフィールドは、「NEC奈良支店」である。類似度計算部3は、「NEC奈良支店」に形態素解析を行って語に分解する。具体的には、「NEC」と「奈良」と「支店」とに分解する。
類似度計算部3は、変換語辞書5を参照して、分解した各語が同義語であれば代表語に変換する。図3を参照すると、「NEC」が代表語であり、「奈良」および「支店」は同義語辞書に登録されていないので変換を行わない。
次に、類似度計算部3は、変換語辞書5を参照して、省略可能語があれば、同じグループIDの省略可能語を追加する。図3を参照すると、「NEC」と「日電」とが同じグループIDの省略可能語であるので、「日電」を追加する。すると、レコードID「006」の語は、「NEC」、「日電」、「奈良」、および「支店」である。
類似度計算部3は、分解した語を結合する。すると、レコードID「003」のレコードの名称のフィールドは、「NEC日電奈良支店」および「日電NEC奈良支店」に変換される。
次に、類似度計算部3は、変換したレコードID「001」、「002」および「003」の名称のフィールドの相互の類似度を計算する(ステップS106)。
まず、レコードID「001」の名称のフィールドと、レコードID「002」の名称のフィールドとの類似度を計算する。レコードID「001」の変換後の名称のフィールドは、「NEC日電奈良支店」と、「日電NEC奈良支店」とであり、レコードID「002」の変換後の名称のフィールドは、「NEC日電奈良支店」と、「日電NEC奈良支店」とである。レコードID「001」の「NEC日電奈良支店」と、レコードID「002」の「NEC日電奈良支店」とは、9文字中9文字が合致するので、9×1÷9=1となり、類似度は1である。
同様に、レコードID「001」の「日電NEC奈良支店」と、レコードID「002」の「日電NEC奈良支店」とは、9文字中9文字が合致するので、9×1÷9=1となり、類似度は1である。
また、レコードID「001」の「NEC日電奈良支店」と、レコードID「002」の「日電NEC奈良支店」とは、9文字中4文字が合致するので、4×1÷9=0.44(小数点3桁目四捨五入)となり、類似度は0.44である。
同様に、また、レコードID「001」の「日電NEC奈良支店」と、レコードID「002」の「NEC日電奈良支店」とは、9文字中4文字が合致するので、4×1÷9=0.44(小数点3桁目四捨五入)となり、類似度は0.44である。
ここで、類似度計算部3は、最も類似度が高い値を採用することとする。すると、レコードID「001」の名称のフィールドと、レコードID「002」の名称のフィールドとの類似度は1である。
同様に、レコードID「001」の名称のフィールドと、レコードID「003」の名称のフィールドとの類似度を計算すると、類似度は1となる。また、レコードID「002」の名称のフィールドと、レコードID「003」の名称のフィールドとの類似度を計算すると、類似度は1となる。
次に、類似度計算部3は、レコードID「001」、「002」および「003」の住所のフィールドの相互の類似度を計算する(ステップS107)。
レコードID「001」の住所のフィールドは「○○○1の1」であり、レコードID「002」の住所のフィールドは「○○○1−1」であり、レコードID「003」の住所のフィールドは「○○○1−1」である。
レコードID「001」の住所のフィールド「○○○1の1」と、レコードID「002」の住所のフィールド「○○○1−1」とは、6文字中5文字が合致するので、5×1÷6=0.83(小数点3桁目四捨五入)となり、類似度は0.83である。
レコードID「001」の住所のフィールド「○○○1の1」と、レコードID「003」の住所のフィールド「○○○1−1」とは、6文字中5文字が合致するので、5×1÷6=0.83(小数点3桁目四捨五入)となり、類似度は0.83である。
レコードID「002」の住所のフィールド「○○○1−1」と、レコードID「003」の住所のフィールド「○○○1−1」とは、6文字中6文字が合致するので、6×1÷6=1となり、類似度は1である。
次に、類似度計算部3は、レコードID「001」、「002」および「003」の電話番号のフィールドの相互の類似度を計算する(ステップS108)。
レコードID「001」の電話番号のフィールドは「000−111−1234」であり、レコードID「002」の電話番号のフィールドは「000−111−1235」であり、レコードID「003」の電話番号のフィールドは「000−111−1234」である。
レコードID「001」の電話番号のフィールド「000−111−1234」と、レコードID「002」の電話番号のフィールド「000−111−1235」とは、12文字中11文字が合致するので、11×1÷12=0.92(小数点3桁目四捨五入)となり、類似度は0.92である。
レコードID「001」の電話番号のフィールド「000−111−1234」と、レコードID「003」の電話番号のフィールド「000−111−1234」とは、12文字中12文字が合致するので、12×1÷12=1となり、類似度は1である。
レコードID「002」の電話番号のフィールド「000−111−1235」と、レコードID「003」の電話番号のフィールド「000−111−1234」とは、12文字中11文字が合致するので、11×1÷12=0.92(小数点3桁目四捨五入)となり、類似度は0.92である。
類似度計算部3は、レコードID「001」、「002」および「003」の各フィールドの相互の類似度を、各フィールドの類似度に重みの値を乗じた積を合計した数を、フィールドの数で割った商を、各レコード間の類似度として計算する(ステップS109)。なお、ここでは、データベース情報入力部4に入力された情報が、名称フィールド、住所フィールド、および電話番号フィールドの重みの比が、1:1:1であることを示していたものとする。
すると、レコードID「001」とレコードID「002」との類似度は、(1×1+0.83×1+0.92×1)÷3=0.92(小数点3桁目四捨五入)となる。
また、レコードID「001」とレコードID「003」との類似度は、(1×1+0.83×1+1×1)÷3=0.94(小数点3桁目四捨五入)となる。
レコードID「002」とレコードID「003」との類似度は、(1×1+1×1+0.92×1)÷3=0.97(小数点3桁目四捨五入)となる。
類似度計算部3は、計算した各レコードの組の類似度と、類似度を計算したレコードの組とを重複候補抽出部6に出力する。重複候補抽出部6は、類似度計算部3が計算した類似度が、所定の閾値以上である各レコードを、重複レコード候補として抽出する(ステップS110)。ここで、所定の閾値を0.90とすると、重複候補抽出部6は、レコードID「001」、レコードID「002」、およびレコードID「003」を重複レコード候補として抽出する。
表示部(図示せず)は、重複候補抽出部6が抽出した各レコードを表示する(ステップS111)。
以上に述べたように、この実施の形態によれば、同義語や省略可能語による表記の差異があっても、重複する情報をデータベース2から抽出することができる。
実施の形態2.
本発明の第2の実施の形態について、図面を参照して説明する。図5は、本発明の第2の実施の形態の一構成例を示すブロック図である。
本発明の第2の実施の形態の構成は、第1の実施の形態の構成に、重複候補抽出部6が抽出した重複レコード候補が、重複レコードであるか否かを判定するルールである重複判定ルールを記憶する重複判定ルール記憶部8、重複判定ルール記憶部8が記憶しているルールにもとづいて、重複候補抽出部6が抽出した重複レコード候補が重複レコードであるか否かを判定する重複レコード判定部7、および重複レコード判定部7が重複レコードであると判定したレコードを記憶する重複レコードデータベース9を加えたものであり、その他の構成要素は第1の実施の形態と同様なため、その他の構成要素には図1と同じ符号を付し、説明を省略する。
図6は、重複判定ルールの例を示す説明図である。図6に示した例によると、重複判定ルールは、例えば、レコード相互の類似度が特定の値を超えているならば、それらを重複レコードとみなす、というルールや、レコード相互の類似度が特定の値以下であれば、それらを重複レコードではないとみなす、というルールや、いずれかのフィールドの類似度が特定の値以下であれば、それらを重複レコードではないとみなす、というルールや、あるフィールドの類似度が所定の値以上であり、かつ、他のあるフィールドの類似度が所定の値以上であれば、それらを重複レコードとみなす、等である。
図7は、重複判定ルール記憶部8が記憶している重複判定ルールの例を示す説明図である。図7の例に示すように、重複判定ルールは、それぞれ条件部分(図7におけるIF以下の部分)と、結論部分(図7におけるTHEN以下の部分)とで構成される。
そして、条件部分には、レコードの組の類似度の値や、フィールドの組の類似度の値が、ある値よりも大きい、小さい、以上、または以下等の条件を、AND、OR、およびNOTで組み合わせて記述する。
また、結論部分には、条件部分のに記述されている条件に合致するレコードの組を、重複レコードであると記述したり、重複レコードではないと記述したりする。また、結論部分において、条件部分のネスト(入れ子)を記述してもよい。
図7の(1)式に示す例では、レコードの組の類似度の値が1であれば、重複レコードであるというルールを記述している。また、図7の(2)式に示す例では、住所フィールドの組の類似度が0.9を超えていて、かつ、電話番号フィールドの組の類似度が0.9を超えていた場合、名称フィールドの組の類似度が0.9を超えていれば、レコードの組は重複レコードであり、名称フィールドの組の類似度が0.9以下であれば、レコードの組を重複レコードではないというルールを記述している。
類似度計算部3は、計算した各フィールドの組の類似度と、各レコードの組の類似度とを重複候補抽出部6に出力する。重複候補抽出部6は、類似度計算部3が計算した類似度が、所定の閾値以上である各レコードを、重複レコード候補として抽出し、重複レコード候補の各フィールドの組の類似度と、各レコードの組の類似度とを重複レコード判定部7に出力する。
本発明の第2の実施の形態の動作を、具体例を挙げて説明する。まず、図2の例に示したレコードID「001」、レコードID「002」およびレコードID「003」が重複レコードであるか否かを判定する場合を例に説明する。
類似度計算部3が、各フィールドの組の類似度と、各レコードの組の類似度とを計算するまでの動作は、第1の実施の形態における動作と同様なため、説明を省略する。
類似度計算部3は、計算した各フィールドの組の類似度と、各レコードの組の類似度とを重複候補抽出部6に出力する。重複候補抽出部6は、類似度計算部3が計算した類似度が、所定の閾値以上である各レコードを重複レコード候補として抽出し、重複レコード候補の各フィールドの組の類似度と、各レコードの組の類似度とを重複レコード判定部7に出力する。ここで、所定の閾値を0.9とすると、重複候補抽出部6は、レコードID「001」、レコードID「002」、およびレコードID「003」を重複レコード候補として抽出する。
重複レコード判定部7は、レコードID「001」とレコードID「002」との類似度が0.92であるので、図7の例に示す式(1)の条件部分(レコードの組の類似度の値が1)に合致しないので、レコードID「001」とレコードID「002」との重複レコードの判定に、式(1)を適用しない。
重複レコード判定部7は、レコードID「001」の住所フィールドと、レコードID「002」の住所フィールドとの類似度が1であるが、レコードID「001」の電話番号フィールドと、レコードID「002」の電話番号フィールドとの類似度が0.83であるので、図7の例に示す式(2)の条件部分(住所フィールドの組の類似度が0.9を超えていて、かつ、電話番号フィールドの組の類似度が0.9を超えていた場合)に合致しないので、レコードID「001」とレコードID「002」との重複レコードの判定に、式(2)を適用しない。
また、重複レコード判定部7は、レコードID「001」とレコードID「003」との類似度が0.94であるので、図7の例に示す式(1)の条件部分(レコードの組の類似度の値が1)に合致しないので、レコードID「001」とレコードID「003」との重複レコードの判定に、式(1)を適用しない。
重複レコード判定部7は、レコードID「001」の住所フィールドと、レコードID「003」の住所フィールドとの類似度が1であるが、レコードID「001」の電話番号フィールドと、レコードID「003」の電話番号フィールドとの類似度が0.83であるので、図7の例に示す式(2)の条件部分(住所フィールドの組の類似度が0.9を超えていて、かつ、電話番号フィールドの組の類似度が0.9を超えていた場合)に合致しないので、レコードID「001」とレコードID「003」との重複レコードの判定に、式(2)を適用しない。
重複レコード判定部7は、レコードID「002」とレコードID「003」との類似度が0.97であるので、図7の例に示す式(1)の条件部分(レコードの組の類似度の値が1)に合致しないので、レコードID「002」とレコードID「003」との重複レコードの判定に、式(1)を適用しない。
重複レコード判定部7は、レコードID「002」の住所フィールドと、レコードID「003」の住所フィールドとの類似度が1であって、レコードID「002」の電話番号フィールドと、レコードID「003」の電話番号フィールドとの類似度が1であるので、図7の例に示す式(2)の条件部分(住所フィールドの組の類似度が0.9を超えていて、かつ、電話番号フィールドの組の類似度が0.9を超えていた場合)に合致する。また、レコードID「002」の名称フィールドと、レコードID「003」の名称フィールドとの類似度が0.92であるので、式(2)の結果部分における条件部分(名称フィールドの組の類似度が0.9を超えている)に合致するので、レコードID「002」とレコードID「003」とが重複レコードであると判定する。
重複レコード判定部7は、重複レコードであると判定した各レコードを、重複レコードデータベース9に記憶させる。
なお、重複レコード判定部7は、重複判定ルール記憶部8が記憶している重複判定ルールを適用しなかったレコードの組を、表示部に表示させてもよい。すると、使用者が重複レコードであるか否かを判定することができる。
以上に述べたように、この実施の形態によれば、重複レコード判定部7が、予め重複判定ルール記憶部8が記憶している重複判定ルールにもとづいて、各レコードの組が重複レコードであるか否かを自動的に判定することができる。
また、重複レコードデータベース9が、重複レコード判定部7が重複レコードであると判定したレコードの組を記憶するため、使用者は、重複レコード判定部7が重複レコードであると判定したレコードの組を確認することができる。
実施の形態3.
本発明の第3の実施の形態を、図面を参照して説明する。図8は、本発明の第3の実施の形態の一構成例を示すブロック図である。
本発明の第3の実施の形態の構成は、第2の実施の形態の構成に、重複レコード判定部7が重複レコードであると判定したレコードの組から変換語の候補を抽出して変換語辞書5に登録する変換語候補抽出部10を加えた点が第2の実施の形態の構成と異なり、その他の点は第2の実施の形態の構成と同様である。そのため、第2の実施の形態と同様な構成要素には、図5と同じ符号を付し、説明を省略する。
変換語候補抽出部10は、重複レコード判定部7が重複レコードであると判定したレコードの組を比較して、異なる部分に、例えば、形態素解析等を行って、重複レコードの組における異なる部分の語の組を同義語候補の組として抽出する。
なお、変換語候補抽出部10は、重複レコード判定部7が重複レコードであると判定したレコードの組を比較して、一方のレコードが、他方のレコードに含まれる場合には、一方のレコードと他方のレコードとの異なる部分と、共通する部分との組を省略可能語候補の組として抽出する。
また、変換語候補抽出部10は、抽出した同義語候補の組が、他の一のレコードに含まれる場合は、抽出した同義語候補の組を省略可能語候補の組とする。
変換語候補抽出部10は、抽出した同義語候補の組のうち、他の同義語候補や省略可能語候補の組み合わせで構成される同義語候補の組を、同義語候補の組から除外する。
また、変換語候補抽出部10は、省略可能語候補の組のうち、他の同義語候補や省略可能語候補に含まれる省略可能語候補の組を、省略可能語候補の組から除外する。
変換語候補抽出部10は、変換語辞書5を参照して、変換語候補、および省略可能語候補の組のうち、変換語辞書5に登録されている語以外の語を変換語辞書5に登録する。
次に、この実施の形態において、重複レコードから同義語候補および省略可能語候補を名称フィールドから抽出する際の動作を、具体例を挙げて図面を参照して説明する。図9は、本発明の第3の実施の形態の動作を説明するフローチャートである。図10は、重複レコード判定部7が重複レコードであると判定したレコードの組の例を示す説明図である。
変換語候補抽出部10は、重複レコード判定部7が重複レコードであると判定したレコードの組を比較して、異なる部分に、例えば、形態素解析等を行って、重複レコードの組における異なる部分の語を同義語候補として抽出し、一方のレコードが、他方のレコードに含まれる場合には、一方のレコードと他方のレコードとの異なる部分と、共通する部分とを省略可能語候補として抽出する(ステップS301)。
具体的には、変換語候補抽出部10は、図10の例に示したレコードID「001」とレコードID「002」とを比較して、レコードID「001」と、レコードID「002」とで異なる部分である「日電NEC」と「エヌイーシー」とを同義語候補の組として抽出する。
変換語候補抽出部10は、図10の例に示したレコードID「001」とレコードID「003」とを比較して、レコードID「001」と、レコードID「003」とで異なる部分である「NEC」と「エヌイーシー」とを同義語候補の組として抽出する。
変換語候補抽出部10は、図10の例に示したレコードID「001」とレコードID「004」とを比較すると、レコードID「004」が、レコードID「001」に含まれるので、異なる部分である「日電」と、共通する部分である「NEC奈良支店」とを省略可能語候補の組として抽出する。
変換語候補抽出部10は、図10の例に示したレコードID「001」とレコードID「005」とを比較すると、レコードID「005」が、レコードID「001」に含まれるので、異なる部分である「NEC」と、共通する部分である「日電奈良支店」とを省略可能語候補の組として抽出する。
変換語候補抽出部10は、図10の例に示したレコードID「002」とレコードID「003」とを比較すると、レコードID「002」が、レコードID「003」に含まれるので、異なる部分である「日電」と、共通する部分である「エヌイーシー奈良支店」とを省略可能語候補の組として抽出する。
変換語候補抽出部10は、図10の例に示したレコードID「002」とレコードID「004」とを比較して、レコードID「002」と、レコードID「004」とで異なる部分である「エヌイーシー」と「NEC」とを同義語候補の組として抽出する。
変換語候補抽出部10は、図10の例に示したレコードID「002」とレコードID「005」とを比較して、レコードID「002」と、レコードID「005」とで異なる部分である「エヌイーシー」と「日電」とを同義語候補の組として抽出する。
変換語候補抽出部10は、図10の例に示したレコードID「003」とレコードID「004」とを比較して、レコードID「003」と、レコードID「004」とで異なる部分である「日電エヌイーシー」と「NEC」とを同義語候補の組として抽出する。
変換語候補抽出部10は、図10の例に示したレコードID「003」とレコードID「005」とを比較すると、レコードID「005」が、レコードID「003」に含まれるので、異なる部分である「エヌイーシー」と、共通する部分である「日電奈良支店」とを省略可能語候補の組として抽出する。
変換語候補抽出部10は、図10の例に示したレコードID「004」とレコードID「005」とを比較して、レコードID「004」と、レコードID「005」とで異なる部分である「NEC」と「日電」とを同義語候補の組として抽出する。
次に、変換語候補抽出部10は、抽出した同義語候補の組が、他の一のレコードに含まれる場合は、抽出した同義語候補の組を省略可能語候補の組とする(ステップS302)。
具体的には、変換語候補抽出部10は、レコードID「002」とレコードID「005」とを比較して抽出した同義語候補の組である「エヌイーシー」と「日電」とが、レコードID「003」の「日電エヌイーシー奈良支店」に含まれるので、同義語候補の組である「エヌイーシー」と「日電」とを省略可能語候補の組とする。
また、変換語候補抽出部10は、レコードID「004」とレコードID「005」とを比較して抽出した同義語候補の組である「NEC」と「日電」とが、レコードID「001」の「日電NEC奈良支店」に含まれるので、同義語候補の組である「NEC」と「日電」と省略可能語候補の組とする。
次に、変換語候補抽出部10は、抽出した同義語候補の組のうち、他の同義語候補や省略可能語候補の組み合わせで構成される同義語候補の組を、同義語候補の組から除外する(ステップS303)。
具体的には、変換語候補抽出部10は、レコードID「004」とレコードID「005」とを比較して抽出した同義語候補の組である「NEC」と「日電」とを組み合わせると、レコードID「001」とレコードID「002」とを比較して同義語候補として抽出した「日電NEC」を構成するので、レコードID「004」とレコードID「005」とを比較して抽出した同義語候補の組である「NEC」と「日電」とを、同義語候補の組から除外する。
変換語候補抽出部10は、レコードID「002」とレコードID「005」とを比較して抽出した同義語候補の組である「エヌイーシー」と「日電」とを組み合わせると、レコードID「003」とレコードID「004」とを比較して同義語候補として抽出した「日電エヌイーシー」を構成するので、レコードID「002」とレコードID「005」とを比較して抽出した同義語候補の組である「エヌイーシー」と「日電」とを、同義語候補の組から除外する。
変換語候補抽出部10は、省略可能語候補の組のうち、他の同義語候補や省略可能語候補に含まれる省略可能語候補の組を、省略可能語候補の組から除外する(ステップS304)。
具体的には、変換語候補抽出部10は、レコードID「001」とレコードID「004」とを比較して抽出した省略可能語候補の組である「日電」と「NEC奈良支店」とは、レコードID「004」とレコードID「005」とを比較して抽出した同義語候補の組である「NEC」と「日電」とを含むので省略可能語候補から除外する。
変換語候補抽出部10は、レコードID「001」とレコードID「005」とを比較して抽出した省略可能語候補の組である「NEC」と「日電奈良支店」とは、レコードID「004」とレコードID「005」とを比較して抽出した同義語候補の組である「NEC」と「日電」とを含むので省略可能語候補から除外する。
変換語候補抽出部10は、レコードID「002」とレコードID「003」とを比較して抽出した省略可能語候補の組である「日電」と「エヌイーシー奈良支店」とは、レコードID「002」とレコードID「005」とを比較して抽出した同義語候補の組である「エヌイーシー」と「日電」とを含むので省略可能語候補から除外する。
変換語候補抽出部10は、レコードID「003」とレコードID「005」とを比較して抽出した省略可能語候補の組である「エヌイーシー」と「日電奈良支店」とは、レコードID「002」とレコードID「005」とを比較して抽出した同義語候補の組である「エヌイーシー」と「日電」とを含むので省略可能語候補から除外する。
すると、レコードID「001」とレコードID「003」とを比較して抽出された同義語候補の組、およびレコードID「002」とレコードID「004」とを比較して抽出された同義語候補の組である「NEC」と「エヌイーシー」とが同義語候補の組となる。
また、レコードID「002」とレコードID「005」とを比較して抽出された同義語候補の組、およびレコードID「004」とレコードID「005」とを比較して抽出された同義語候補の組である「エヌイーシー」と「日電」とが、省略可能語候補に変更されて省略可能語候補の組となる。
変換語候補抽出部10は、変換語辞書5を参照して、変換語候補、および省略可能語候補の組のうち、変換語辞書5に登録されている語以外の語を変換語辞書5に登録する(ステップS305)。
なお、変換語候補抽出部10は、同義語候補の組である「NEC」と「エヌイーシー」とのいずれかを代表語として、変換語辞書5に登録する。変換語候補抽出部10は、例えば、50音順のや、アルファベット順の早い方の語や、文字数の少ない方の語を代表語として、同義語候補の組の語を変換語辞書5に登録する。
このとき、同義語候補の組の語のいずれかが既に代表語として変換語辞書5に登録されていた場合、変換語候補抽出部10は、同義語候補の組の他の語を、その代表語の同義語として変換語辞書5に登録する。
なお、同義語候補の組の語のすべてが既に代表語として変換語辞書5に登録されていた場合、変換語候補抽出部10は、いずれか1つの語を代表語として変換語辞書5に登録し、同義語候補の組の他の語を、その代表語の同義語として変換語辞書5に登録する。このとき、変換語候補抽出部10は、既に代表語として変換語辞書5に登録されていた語の同義語を、代表語として変換語辞書5に登録した語の同義語として、変換語辞書5に登録する。
変換語候補抽出部10は、省略可能語候補の組が変換語辞書5に登録されていなかった場合、新たにグループIDを決定して省略可能語候補として変換語辞書5に登録する。なお、新たなグループIDは、例えば、既に登録済みのグループIDの最大値に1を加えた値とする。
変換語候補抽出部10は、省略可能語候補の組のうち、いずれかが既に省略可能語候補として変換語辞書5に登録されていた場合、他の省略可能語候補を、既に変換語辞書5に登録されている省略可能語候補と同じグループIDで変換語辞書5に登録する。
変換語候補抽出部10は、省略可能語候補の組がすべて既に省略可能語候補として同じグループIDで変換語辞書5に登録されていた場合は、変換語辞書5に登録する動作を行わない。変換語候補抽出部10は、省略可能語候補の組を構成する省略可能語候補のそれぞれが、異なるグループIDで既に省略可能語候補として変換語辞書5に登録されていた場合、グループIDの値を比較して、グループIDの値が大きい方の省略可能語候補のグループIDの値を、グループIDが小さい方の値に変更する。
なお、変換語候補抽出部10は、同義語候補または省略可能語候補を表示部に表示して、同義語候補または省略可能語候補として変換語辞書5に登録するか否かを使用者に選択させてもよい。
以上に述べたように、この実施の形態によれば、重複レコード判定部7が重複レコードとして判定したレコードに含まれる語のうち、所定の条件に合致する語を、同義語候補または省略可能語候補として変換語辞書5に登録することができる。
実施の形態4.
本発明の第4の実施の形態を、図面を参照して説明する。図11は、本発明の第4の実施の形態の一構成例を示すブロック図である。
本発明の第4の実施の形態の構成は、第3の実施の形態の構成に、同義語候補、および省略可能語候補を変換語辞書5に登録するか否か、および重複レコード候補を重複レコードデータベース9に登録するか否かを使用者に確認する入出力部11を加えたものであり、その他の構成要素は第3の実施の形態と同様なため、その他の構成要素には図8と同じ符号を付し、説明を省略する。
入出力部11は、表示部である液晶ディスプレイ等と、入力手段であるキーボード等によって実現される。
次に、本発明の第4の実施の形態の動作を、図面を参照して説明する。図12は、本発明の第4の実施の形態の動作を説明するフローチャートである。
まず、類似度計算部3が、データベース2に登録されている情報を読み込む(ステップS401)。
類似度計算部3は、第1の実施の形態における動作と同様の動作を行い、各レコードの組の類似度を計算し、計算した各レコードの組の類似度と、類似度を計算したレコードの組とを重複候補抽出部6に出力する(ステップS402)。
重複候補抽出部6は、例えば、第1の実施の形態における動作と同様の動作を行い、重複レコード候補をデータベース2から抽出する(ステップS403)。
重複レコード判定部7は、第2の実施の形態における動作と同様の動作を行い、重複候補抽出部6が抽出した重複レコード候補が重複レコードであるか否かを判定し(ステップS404)、重複レコードであると判定した重複レコード候補を重複レコードデータベース9に記憶させる。
変換語候補抽出部10は、第3の実施の形態における動作と同様の動作を行い、重複レコード判定部7が重複レコードであると判定したレコードから、同義語候補および省略可能語候補(以下、単に変換語候補という)を抽出する(ステップS405)。
変換語候補抽出部10は、変換語候補を抽出すると、抽出した変換語候補を入出力部11に出力する。入出力部11は、変換語候補抽出部10が入力した変換語候補を表示し、使用者に変換語候補が変換語であるか否かを判定させる。
使用者が、入出力部11を操作して変換語候補が変換語であると判定すると、変換語候補抽出部10は、変換語候補を変換語辞書5に登録する(ステップS406)。
変換語候補抽出部10が、変換語候補を変換語辞書5に登録すると、重複候補抽出部6は、第1の実施の形態における動作と同様の動作を行い、重複レコード候補をデータベース2から抽出する(ステップS403)。新たな変換語が変換語辞書5に登録されると、新たに重複レコードと判定されるレコードが発生する可能性があるからである。
変換語候補抽出部10が変換語候補の抽出を終了したり、使用者が、入出力部11を操作して変換語候補が変換語であるか否かの判定を拒否したりすると、重複レコード判定部7は、重複レコードであると判定しなかった重複レコード候補を入出力部11に出力する。入出力部11は、重複レコード判定部7が入力した重複レコード候補を表示し、使用者に重複レコード候補が重複レコードであるか否かを判定させる(ステップS407)。なお、重複レコード判定部7は、重複レコードであると判定しなかった重複レコード候補のうち、重複する可能性のあるレコードの組み合わせの数が多い順番で、重複レコード候補を入出力部11に出力してもよい。
使用者が、入出力部11を操作して重複レコード候補が重複レコードであると判定すると、重複レコード判定部7は、重複レコード候補を重複レコードであると判定し、重複レコードデータベース9に登録する(ステップS408)。
重複レコード判定部7が、重複レコード候補を重複レコードデータベース9に登録すると、変換語候補抽出部10は、第3の実施の形態における動作と同様の動作を行い、重複レコード判定部7が重複レコードであると判定したレコードから、変換語候補を抽出する(ステップS405)。重複レコードが増加すると、増加した重複レコードから新たに変換語候補が抽出される可能性があるからである。
重複レコード判定部7が、重複レコードであると判定しなかった重複レコード候補をすべて入出力部11に出力したり、使用者が、入出力部11を操作して重複レコード候補の判定を拒否したりすると、変換語候補抽出部10は、第3の実施の形態における動作と同様の動作を行い、重複レコード判定部7が重複レコードであると判定したレコードから変換語候補を抽出する(ステップS405)。
変換語候補抽出部10が、第3の実施の形態における動作と同様の動作を行い、重複レコード判定部7が重複レコードであると判定したレコードから変換語候補を抽出する動作を終了すると、すべての構成要素は動作を終了する。
以上に述べたように、この実施の形態によれば、重複レコードを検出するために、使用者に確認する回数を減らすことができる。
また、使用者が、変換語候補が変換語であると判定した場合に増加した新たな重複レコードから変換語候補を抽出することができる。
さらに、使用者が、重複レコード候補が重複レコードであると判定した場合に増加した新たな重複レコードから変換語候補を抽出することができる。
なお、重複レコード判定部7は、重複レコードであると判定しなかった重複レコード候補が複数存在した場合、最も語の数の多い重複レコード候補から順に入出力部11に出力してもよい。すると、変換語候補抽出部10が変換語候補を抽出する可能性が高い順に重複レコード候補が入出力部11に出力されて使用者が重複レコードであるか否かを判定するため、変換語候補抽出部10が重複レコード候補から多くの変換語候補を抽出すると、語の数の少ない重複レコード候補からは変換語候補抽出部10が変換語候補を抽出する可能性が低くなり、変換語候補や、重複レコードを検出するために使用者に確認する回数を減らすことができる。
また、変換語候補抽出部10は、使用者が複数の変換語候補を変換語であると判定すると、使用者が判定した複数の変換語を類似度計算部3に出力し、類似度計算部3は、使用者が判定した複数の変換語に応じてデータベース2の該当するレコードを変換し、重複候補抽出部6は、変換されたレコードにもとづいて重複レコード候補の組を抽出してもよい。そして、重複レコード判定部7は、重複候補抽出部6が抽出した重複レコード候補の組のうち、重複レコード候補の組を構成する重複レコード候補の数が多い順に、重複レコード候補を入出力部11に出力してもよい。
重複レコード判定部7は、使用者が複数の重複レコード候補を重複レコードであると判定すると、使用者が重複レコードであると判定した重複レコード候補を変換語候補抽出部10に出力し、変換語候補抽出部10は、抽出した変換語候補の数が多い重複レコード候補から抽出した変換語候補を、順に入出力部11に出力してもよい。
実施の形態5.
本発明の第5の実施の形態を、図面を参照して説明する。図13は、本発明の第5の実施の形態の一構成例を示すブロック図である。
本発明の第5の実施の形態の構成は、本発明の第4の実施の形態の構成に、重複レコードデータベース9に登録されている重複レコードの組を構成するレコードのうち、一のレコードを除いて、他のレコードをデータベース2から削除する重複レコード削除部12を加えたものであり、その他の構成要素は第4の実施の形態と同様なため、その他の構成要素には図11と同じ符号を付し、説明を省略する。
重複レコード削除部12は、重複レコードデータベース9に登録された重複レコードの組を入出力部11に出力して、使用者に削除するレコードを選択させ、使用者が選択したレコードをデータベース2から削除してもよい。また、重複レコード削除部12は、重複レコードデータベース9に登録された重複レコードの組のうち、最もレコードIDの値の小さいレコード以外のレコードをデータベース2から削除してもよい。
また、重複レコード削除部12は、削除したレコードの記録を記憶してもよい。
以上に述べたように、この実施の形態によれば、重複レコード判定部7が、重複レコード判定ルールにもとづいて重複レコードであると判定した重複レコードを、重複レコードデータベース9に登録してから、重複レコード削除部12を介してデータベース2から削除するため、使用者が削除するレコードを確認したり、削除したレコードの記録を記憶させておいたりすることができる。
実施の形態6.
本発明の第6の実施の形態を、図面を参照して説明する。図14は、本発明の第6の実施の形態の一構成例を示すブロック図である。
本発明の第6の実施の形態の構成は、第3の実施の形態の構成に、使用者が新たにデータベース2に追加する情報を入力するデータベース登録部13と、データベース2に登録されている情報を検索する検索部14と、使用者に請求する料金を算出する検索料金算出部15とを加えたものであり、その他の構成要素は第3の実施の形態と同様なため、その他の構成要素には図8と同じ符号を付し、説明を省略する。
データベース登録部13は、使用者が新たにデータベース2に追加する情報を入力すると、変換語辞書5に登録されている同義語と省略可能語とにもとづいて、使用者が入力した情報と重複する情報である可能性のあるレコードを表示部に表示させる。
例えば、図2の例に示す情報がデータベース2に登録され、図3の例に示す情報が変換語辞書5に登録されている場合に、使用者が、データベース登録部13に、名称が「日本電気奈良支店」である情報を入力する。
すると、データベース登録部13は、入力された「日本電気奈良支店」に形態素解析等の方法を用いて、「日本電気奈良支店」を、「日本電気」と「奈良支店」との語に分解する。
そして、データベース登録部13は、同義語辞書5を参照して、「日本電気」および「奈良支店」の同義語と省略可能語とを抽出する。「日本電気」の代表語である同義語は、「NEC」であるため、データベース登録部13は、「NEC」を抽出する。また、データベース登録部13は、「NEC」を代表語とする同義語である「エヌイーシー」を抽出する。
さらに、データベース登録部13は、同義語辞書5を参照して、「日本電気」、「NEC」、および「エヌイーシー」のいずれかの省略可能語を抽出する。具体的には、「NEC」の省略可能語として「日電」を抽出する。
そして、データベース登録部13は、同義語辞書5から抽出した語や、使用者が入力した情報の語を組み合わせて、使用者が入力した情報から変形した可能性がある情報を生成する。具体的には、「NEC奈良支店」、「エヌイーシー奈良支店」、「日電NEC奈良支店」、「日電エヌイーシー奈良支店」、「NEC日電奈良支店」、「エヌイーシー日電奈良支店」、「日電奈良支店」等を生成する。
データベース登録部13は、生成した情報と合致する情報がデータベース2に登録されているか否かを検索して、データベース2から合致する情報を抽出する。すると、図2の例に示すレコードID「001」、レコードID「002」、およびレコードID「003」が抽出される。
データベース登録部13は、抽出した各レコードを、重複可能性のあるレコードとして表示部に表示させる。
検索部14は、上述したデータベース登録部13の動作と同様な動作を行って、データベース2から、使用者が検索部14に検索キーとして入力した情報、およびその情報から変形した可能性がある情報に合致する情報を、検索結果として表示部に表示させる。
検索料金算出部15は、検索部14が検索結果を表示部に表示させると、使用者に請求する所定の料金を算出する。なお、使用者が、データベース2の所有者または管理者に、データベース2の使用料金を支払っている場合は、検索料金算出部15は、データベース2の所有者または管理者に請求する料金を算出してもよい。
以上に述べたように、この実施の形態によれば、使用者がデータベース2に情報を登録する際に、重複する可能性のある情報を使用者に提示するため、新しく登録する情報が、重複レコードとなることを防ぐことができる。
また、検索部14がデータベース2に登録されている情報を検索し、検索料金算出部15が、検索部14が行った情報の検索に応じた料金を算出するため、重複レコード検出システム20の所有者は、料金を使用者またはデータベース2の所有者または管理者に請求することができる。
実施の形態7.
本発明の第7の実施の形態を、図面を参照して説明する。図15は、本発明の第7の実施の形態の一構成例を示すブロック図である。
本発明の第7の実施の形態の構成は、第5の実施の形態の構成に、重複レコード削除部12がデータベース2から削除した情報に応じて、データベース2の所有者等に請求する料金を算出する削除料金算出部16を加えたものであり、その他の構成要素は第5の実施の形態と同様なため、その他の構成要素には図13と同じ符号を付し、説明を省略する。
重複レコード削除部12は、第5の実施の形態における動作と同様の動作を行い、重複レコードをデータベース2から削除する。
削除料金算出部16は、重複レコード削除部12がデータベース2から削除した情報に応じて、データベース2の所有者または管理者に請求する料金を算出する。
以上に述べたように、この実施の形態によれば、データベース2に登録されている重複レコードの削除に応じた料金を、データベース2の所有者または管理者に請求することができる。
なお、重複レコード検出システム20の所有者等は、重複レコード検出システム20に他のデータベースに登録されている情報を入力して、重複レコード削除部12に情報を削除させてもよい。すると、変換語候補抽出部10が、変換語を変換語辞書5に登録するため、重複レコード判定部7による重複レコードの判定精度を向上させることができる。そのため、例えば、第4の実施の形態で、使用者が、重複レコード候補が重複レコードであるか否かの判定を行う回数を減らすことができる。