(57)【特許請求の範囲】
【請求項１】
複数の項目と複数のレコードとで区切られた複数のセルをそれぞれが含む複数のデータ間でのセルの値を比較し、
前記比較することにより、類似する文字列を含むセルの組として検出された複数のセル組を示す情報を記憶している記憶部を参照し、
前記複数のデータ間で１つの項目同士を一組とした複数の項目組のそれぞれの項目組のスコアを、前記複数のセル組のうちで前記項目組に含まれているセル組をレコード内に含むレコード組に対するスコアに基づいて設定する、
処理を情報処理装置に実行させる評価プログラム。
【請求項２】
更に、前記複数のデータ間で１つのレコード同士を一組とした複数のレコード組のそれぞれのレコード組のスコアを、前記複数のセル組のうちで前記レコード組に含まれているセル組を項目内に含む前記項目組に対するスコアに基づいて設定する、
処理を前記情報処理装置に実行させる、請求項１に記載の評価プログラム。
【請求項３】
前記複数の項目組のそれぞれの前記項目組のスコアの設定と、前記複数のレコード組のそれぞれの前記レコード組のスコアの設定との交互の繰り返しを、前記複数の項目組のスコアによる順位付けの並び及び前記複数のレコード組のスコアによる順位付けの並びの少なくとも一方において、所定回数の前記繰り返しにわたって順位が入れ替わらなくなるまで実行する、
処理を前記情報処理装置に実行させる、請求項２に記載の評価プログラム。
【請求項４】
前記複数のデータのうちの或るデータの或る項目のセルの値は、前記或るデータに含まれる別の複数の項目のセルの値を結合した値である、ことを特徴とする請求項１から３のいずれか１項に記載の評価プログラム。
【請求項５】
複数の項目と複数のレコードとで区切られた複数のセルをそれぞれが含む複数のデータ間でのセルの値を比較する比較部と、
前記比較部が前記比較することにより、類似する文字列を含むセルの組として検出された複数のセル組を示す情報を記憶している記憶部と、
前記複数のデータ間で１つの項目同士を一組とした複数の項目組のそれぞれの項目組のスコアを、前記複数のセル組のうちで前記項目組に含まれているセル組をレコード内に含むレコード組に対するスコアに基づいて設定する設定部と、
を含む、情報処理装置。
【請求項６】
複数の項目と複数のレコードとで区切られた複数のセルをそれぞれが含む複数のデータ間でのセルの値を比較し、
前記比較することにより、類似する文字列を含むセルの組として検出された複数のセル組を示す情報を記憶している記憶部を参照し、
前記複数のデータ間で１つの項目同士を一組とした複数の項目組のそれぞれの項目組のスコアを、前記複数のセル組のうちで前記項目組に含まれているセル組をレコード内に含むレコード組に対するスコアに基づいて設定する、
ことを含む、コンピュータが実行する評価方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、評価プログラム、評価方法、及び情報処理装置に関する。
【背景技術】
【０００２】
例えば、業務システムでは、ビジネスで利用される様々な情報がマスタデータに登録され管理されている。また、複数の業務システムが統合されることがあり、統合に伴い、複数のマスタデータの名寄せが行われることがある。名寄せでは、例えば、或るマスタデータと、別のマスタデータとの間で内容が対応している項目を対応付けることが行われている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−２３４３４３号公報
【特許文献２】特開２００８−２７０７２号公報
【特許文献３】特開２０１２−１４６８４号公報
【特許文献４】特開２００４−０８６７８２号公報
【特許文献５】特開２００７−１８８３４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
例えば、名寄せのためにデータ間で項目を対応付ける一つの手法として、データ間で項目に属するセルの値を比較し、類似する文字列が検出されたセルの組を多く含む項目同士を対応付けることが考えられる。しかし、例えば、或るデータの項目と、別のデータの別の項目とが対応する項目でないにもかかわらず、項目に属するセルの値が類似していることがある。例えば、企業の住所が登録された項目と、担当者の住所が登録された項目があった場合、住所と言う点でこれらの情報は類似している。そのため、これらの項目は、類似する値を互いに項目内のセルに有することがあり、対応付けられてしまう可能性があるが、企業の住所と個人の住所とを対応づけているため、この対応付けは不適切である。また、別の例として、データのレコードに対して連番で数値列が割り振られることがある。この様な場合、割り振られた数値列は他のデータにおいて割り振られた数値列と類似することがあり、これらの項目は対応付けられる可能性があるが、連番はデータ毎に異なる意味を持っており、項目の対応付けとしては不適切となる。この様に、項目に属するセルの値が類似していたとしても、データ毎に異なる意味を持っており、不適切な項目の対応付けとなることがある。そのため、例えば、複数のデータ間で高い精度で項目を対応付けることを可能にする技術の提供が望まれている。
【０００５】
１つの側面では、本発明は、複数のデータ間で高い精度で項目を対応付けることを可能にする技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一つの態様の一実施形態に係る評価プログラムは、比較する処理と、設定する処理を情報処理装置に実行させる。比較する処理では情報処理装置は、複数の項目と複数のレコードとで区切られた複数のセルをそれぞれが含む複数のデータ間でのセルの値を比較する。記憶部は、比較することにより、類似する文字列を含むセルの組として検出された複数のセル組を示す情報を記憶している。設定する処理では情報処理装置は、記憶部を参照し、複数のデータ間で１つの項目同士を一組とした複数の項目組のそれぞれの項目組のスコアを、複数のセル組のうちで項目組に含まれているセル組をレコード内に含むレコード組に対するスコアに基づいて設定する。
【発明の効果】
【０００７】
複数のデータ間で項目を高い精度で対応付けることを可能にする技術を提供することができる。
【図面の簡単な説明】
【０００８】
【図１】文字列マッチの結果を例示する図である。
【図２】実施形態に係る項目組の対応付けを例示する図である。
【図３】いくつかの実施形態に係る情報処理装置の機能ブロック構成を例示する図である。
【図４】文字列マッチと文字列マッチの結果を例示する図である。
【図５】項目組スコア情報及びレコード組スコア情報を例示する図である。
【図６】項目組のスコアを用いたレコード組のスコアの算出を例示する図である。
【図７】レコード組のスコアを用いた項目組のスコアの算出を例示する図である。
【図８】項目組の順位付けを例示する図である。
【図９】レコード組の対応付けを例示する図である。
【図１０】文字列マッチと文字列マッチの結果を示す別な例である。
【図１１】項目組のスコアの算出を例示する図である。
【図１２】項目組の順位付け例示する図である。
【図１３】実施形態に評価処理の動作フローを例示する図である。
【図１４】実施形態に係る情報処理装置を実現するためのコンピュータのハードウェア構成を例示する図である。
【発明を実施するための形態】
【０００９】
以下、図面を参照しながら、本発明のいくつかの実施形態について詳細に説明する。なお、複数の図面において対応する要素には同一の符号を付す。
【００１０】
上述のように、例えば、名寄せのために、データ間で項目を対応付ける一つの手法として、データ間で項目に属するセルの値を比較し、類似する文字列が検出されたセルの組を多く含む項目同士を対応付けることが考えられる。なお、項目の対応付けを行う対象のデータは、例えば、データベースやテーブルなどのデータであってよい。データは、例えば、マスタデータであってよい。また、以下では、２つのデータを対象にデータ間で項目の対応付けを行う場合を例示するが、これに限定されるものではなく、３以上のデータを対象にデータ間で項目の対応付けが実行されてもよい。
【００１１】
図１は、例示的な項目の対応付けを示す図であり、図１（ａ）には、データＡとデータＢとが示されている。なお、以下では、データにおいて列の区切りを項目と呼ぶ。例えば、データＡにおいて、「Ａ１：コード」、「Ａ２：企業名」、「Ａ３：所在地」、．．．は項目である。また、以下では、各項目を省略して参照することもあり、例えば、「Ａ１：コード」は「Ａ１」と、また、「Ａ２：企業名」は「Ａ２」と参照することがある。
【００１２】
一方、以下では、データにおいて行の区切りをレコードと呼ぶ。例えば、データＡにおいて「ａ１」、「ａ２」、「ａ３」、．．．はレコードである。また、以下では、項目とレコードとで区切られた値を格納する領域をセルと呼ぶ。また、以下の説明では、データＡ及びデータＢなどの複数のデータ間で、１つの項目同士を組にしたものを項目組と呼ぶことがある。例えば、データＡの複数の項目のそれぞれを、データＢの複数の項目のそれぞれと組にすることで、複数の項目組が作られ得る。また、同様に、複数のデータ間で、１つのレコード同士を組にしたものをレコード組と呼ぶことがあり、例えば、データＡの複数のレコードのそれぞれを、データＢの複数のレコードのそれぞれと組にすることで、複数のレコード組が作られ得る。
【００１３】
ここで、図１の例では、データＡの項目「Ａ２：企業名」は、データＢの項目「Ｂ２：取引先名」と内容が対応した適切な項目組を形成しているものとする。データＡの項目「Ａ３：所在地」は、データＢの項目「Ｂ３：取引先住所」と内容が対応する適切な項目組を形成しているものとする。
【００１４】
また、図１は、データＡと、データＢとの間で文字列マッチを実行した結果を示している。文字列マッチでは、例えば、複数のデータ間でセルの値が比較され、マッチする文字列が検出される。文字列マッチの結果、複数のデータからマッチ文字列が抽出される。マッチ文字列は、例えば、文字列マッチの結果見つかった複数のデータ間でマッチした文字列であってよく、完全に文字列が一致している共通文字列であっても、ファジーな対応付けにより検出された類似する文字列であってもよい。図１では、検出されたマッチ文字列同士が線で結ばれている。そして、データＡの項目と、データＢの項目との間でマッチ文字列の個数をカウントすると、項目Ａ１と項目Ｂ１との間では、マッチ文字列は３回出現している（例えば、００１、００２、００３）。同様に、項目Ａ２と項目Ｂ２との間では、マッチ文字列は２回出現している（例えば、Ｆ会社、ＡＡ商事）。そして、この様にデータＡの項目とデータＢの項目との間のマッチ文字列の出現個数を取得し、取得したマッチ文字列の出現個数で項目組に順位をつけると、図１（ｂ）に示す結果となる。
【００１５】
図１（ｂ）において、例えば、データＡの項目「Ａ２：企業名」は、文字列マッチにより、データＢの項目「Ｂ２：取引先名」との間でのみマッチ文字列が複数検出されている。そのため、これらの項目が対応付く可能性は高いことが推定できる。上述のように、データＡの項目「Ａ２：企業名」と、データＢの項目「Ｂ２：取引先名」との対応付けは適切であり、この様に、マッチ文字列に基づいて、複数のデータ間で対応する項目を推定することが可能である。
【００１６】
しかし、データＡの項目「Ａ３：所在地」は、データＢの項目「Ｂ３：取引先住所」及び項目「Ｂ４：担当者住所」の両方とマッチ文字列が複数検出されている。上述のように、図１の例では、データＡの項目「Ａ３：所在地」は、データＢの項目「Ｂ３：取引先住所」と対応する適切な項目組を形成している。しかしながら、図１（ｂ）をでは、データＡの項目「Ａ３：所在地」と、データＢの項目「Ｂ４：担当者住所」の項目の組の方が高い順位になっている。この様に、マッチ文字列の数で順位を付けて、対応する項目組を決定した場合、誤った項目組で項目を対応付けてしまうことがある。
【００１７】
また、別の例として、マッチ文字列の文字数をカウントすると、項目Ａ１と項目Ｂ１との間では、マッチ文字列の文字数は、「００１」の３文字、「００２」の３文字、及び「００３」の３文字の合計で、９文字となる。同様に、項目Ａ２と項目Ｂ２との間では、マッチ文字列の文字数は、「Ｆ会社」の３文字、「ＡＡ商事」の４文字の合計で、７文字となる。そして、この様にデータＡの項目とデータＢとの間のマッチ文字列の文字数を取得し、取得したマッチ文字列の文字数で項目組に順位をつけると、図１（ｃ）に示す結果となる。
【００１８】
この場合も、実際にはデータＡの項目「Ａ３：所在地」は、データＢの項目「Ｂ３：取引先住所」と対応しているにも関わらず、図１（ｃ）において、データＢの項目「Ｂ４：担当者住所」との方が高い順位となっている。この様に、例えば、マッチ文字列の数で順位を付けて対応する項目組を決定した場合も、誤った項目組で項目を対応付けてしまうことがある。そのため、データ間で項目組をより高い精度で対応付けることができる技術の提供が望まれている。
【００１９】
ここで、例えば、名寄せはもともと対応する項目やレコードを多く含むデータに対して実行されることが多い。そして、適切な対応付けのレコード組では、複数の項目でマッチ文字列が見つかる傾向がある。そのため、例えば、マッチ文字列を用いて対応付けた項目組が適切な項目組である場合、項目組に含まれるマッチ文字列を含むレコード組を見ると、他の項目でもマッチ文字列が見つかる傾向がある。
【００２０】
例えば、図１において項目が沢山マッチした項目「Ａ３：所在地」と項目「Ｂ３：取引先住所」との項目組で、マッチ文字列を含むレコード同士を比較する。すると、図２（ａ）に示す様に、マッチ文字列を含む２つのレコード組において「Ａ２：企業名」と「Ｂ２：取引先名」もマッチしている。
【００２１】
一方、図１において項目が沢山マッチした「Ａ３：所在地」と「Ｂ４：担当者住所」との項目組で、マッチ文字列を含むレコード同士を比較する。すると、図２（ｂ）に示す様に、マッチ文字列に対応する３つのレコード組のうち、項目「Ａ２：企業名」と項目「Ｂ２：取引先名」は「ＡＡ商事」の１つのレコード組でしか、マッチしていない。この場合、レコード組でのマッチが多い「Ａ３：所在地」と「Ｂ３：取引先住所」の項目組の方が、「Ａ３：所在地」と「Ｂ４：担当者住所」の項目組よりも信頼性が高いと推定することができる。
【００２２】
以下で述べる実施形態では、例えば、項目組のスコアを、スコアの高いレコード組でマッチ文字列を含むセルの組（以降、セル組と呼ぶことがある）が出現する項目組ほど高いスコアとなるように設定する。また、レコード組のスコアを、スコアの高い項目組でマッチ文字列を含むセル組が出現するレコード組ほど高いスコアとなるように設定する。それにより、上述の“適切な対応付けレコード組では、複数の項目でマッチ文字列が見つかる”傾向を加味して、項目組のスコアを評価することができ、その結果、項目組のスコアを用いて高い精度で項目組を対応付けることが可能となる。以下、図３から図１４を参照して実施形態を更に詳細に説明する。
【００２３】
図３は、実施形態に係る情報処理装置３００の機能ブロック構成を例示する図である。情報処理装置３００は、例えば、パーソナルコンピュータ（ＰＣ）、ノートＰＣなどの情報を処理する装置であってよい。情報処理装置３００は、例えば、制御部３０１及び記憶部３０２を含んでいる。制御部３０１は、例えば、情報処理装置３００の各部を制御してよい。制御部３０１は、例えば、比較部３１１、及び設定部３１２を含む。記憶部３０２は、例えば、項目の対応付けを行う対象のデータや、後述する文字列マッチの結果Ｍ、項目組スコア情報５０１、及びレコード組スコア情報５０２などの情報を記憶していてよい。これらの制御部３０１の各部の詳細及び記憶部３０２に格納されている情報の詳細については後述する。
【００２４】
続いて、実施形態に係る項目組のスコアと、レコード組のスコアの算出について説明する。上述のように、例えば、２つのデータ（例えば、データＡ及びデータＢ）間でセルの値を比較して、文字列マッチを実行することで、２つのデータ間でマッチしたマッチ文字列を検出することができる。
【００２５】
そして、文字列マッチの結果Ｍは、例えば、Ｍ＝｛ｍ１，ｍ２，…，ｍｋ，…，ｍμ｝で表すことができる。ここで、ｍｋ（１≦ｋ≦μ）は、文字列マッチにより検出されたマッチ文字列に関する情報である。なお、μは、文字列マッチにより検出されたマッチ文字列の総数であってよい。また、ｋは、マッチ文字列に割り振られたインデックスであってよい。そして、ｍｋの各要素は、ｍｋ＝（ｉｋ，ｊｋ，ｕｋ，ｖｋ，ｓｋ）で表すことができる。ここで、ｉｋは、ｍｋのマッチ文字列を含むセルのデータＡにおけるレコードを識別するための情報であってよく、例えば、データＡのレコードの識別子であるａ１、ａ２、…などであってよい。ｊｋは、ｍｋのマッチ文字列を含むセルのデータＢにおけるレコードを識別するための情報であってよく、例えば、データＢのレコードの識別子であるｂ１、ｂ２、…などであってよい。また、ｕｋは、ｍｋのマッチ文字列を含むセルのデータＡにおける項目を識別するための情報であってよく、例えば、データＡの項目の識別子であるＡ１、Ａ２、…などであってよい。ｖｋは、ｍｋのマッチ文字列を含むセルのデータＢにおける項目を識別するための情報であってよく、例えば、データＢの項目の識別子であるＢ１、Ｂ２、…などであってよい。ｓｋは、ｍｋと対応するスコアであり、ｍｋの信頼性を定める値である。ｓｋは、予め定められていてよい。例えば、文字列マッチで検出された全てのマッチ文字列を等価に扱う場合は、全てのｓｋに共通する値（例えばｓｋ＝１）を設定してよい。或いは、マッチ文字列の文字長が長いほど重要なマッチ文字列として扱う場合には、ｓｋ＝マッチ文字列長としてもよい。
【００２６】
図４は、文字列マッチと、結果Ｍとを例示する図である。図４（ａ）は、文字列マッチを例示しており、図４（ｂ）は、文字列マッチの結果Ｍを表で例示している。図４（ａ）に示す様に、例えば、２つのデータ間でセルの値を比較して、文字列マッチを実行することで、２つのデータ間でマッチしたマッチ文字列が検出される。図４（ａ）では、マッチ文字列にインデックスｋが順に割り振られている。そして、文字列マッチの結果Ｍは、図４（ｂ）のテーブルで表すことができる。なお、図４（ｂ）の文字列マッチの結果Ｍにおいて各エントリは、インデックスｋの値と、ｍｋの要素：ｉｋ，ｊｋ，ｕｋ，ｖｋ，ｓｋとを含んでいる。また、図４の例では、エントリは更にマッチ文字列も含んでいるが、マッチ文字列は結果Ｍに含まれていなくてもよい。
【００２７】
続いて、文字列マッチの結果Ｍを用いた項目組のスコアと、レコード組のスコアの算出について説明する。なお、以下では、項目組のスコアをＰｃ、レコード組のスコアをＰｒと呼ぶことがある。
【００２８】
＜スコアの算出＞
或る項目組（ｕ、ｖ）のスコアをＰｃ（ｕ、ｖ）で表すとする。また、或るレコード組（ｉ、ｊ）のスコアをＰｒ（ｉ、ｊ）で表すとする。この場合、或る項目組（ｕ、ｖ）のスコアＰｃ（ｕ、ｖ）は、レコード組（ｉｋ、ｊｋ）のそれぞれのスコアＰｒ（ｉｋ、ｊｋ）を用いて以下の式１で表すことができる。
【数１】
0006690399.tif 000002
なお、式１において「ｓ．ｔ．」は、例えば、「subject to」の省略である。そして、式１の「ｋ  ｓ．ｔ．  ｕｋ＝ｕ，ｖｋ＝ｖ」は、例えば、図４（ｂ）の結果Ｍに登録されているエントリのうちで、ｕｋの値が、スコアを求めたい対象の項目組（ｕ、ｖ）のｕと一致し、ｖｋがｖと一致するエントリのインデックスｋを処理の対象とすることを示している。そして、式１では、処理の対象としたインデックスｋのレコード組のスコアＰｒにｓｋを掛けた値を積算して項目組（ｕ，ｖ）のスコアＰｃ（ｕ，ｖ）の値としている。
【００２９】
また、同様に、或るレコード組（ｉ、ｊ）のスコアＰｒ（ｉ、ｊ）は、各項目組（ｕｋ、ｖｋ）のそれぞれのスコアＰｃ（ｕｋ、ｖｋ）を用いて以下の式２で表すことができる。
【数２】
0006690399.tif 000003
なお、式２の「ｋ  ｓ．ｔ．  ｉｋ＝ｉ，ｊｋ＝ｊ」は、例えば、図４（ｂ）の結果Ｍに登録されているエントリのうちで、ｉｋの値が、スコアを求めたい対象のレコード組（ｉ、ｊ）のｉと一致し、ｊｋがｊと一致するエントリのインデックスｋを処理の対象とすることを示している。そして、式２では、処理の対象としたインデックスｋの項目組のスコアＰｃにＳｋを掛けた値を積算してレコード組（ｉ，ｊ）のスコアＰｒ（ｉ，ｊ）の値としている。
【００３０】
続いて、２つのデータ間の複数の項目組のそれぞれの式１を用いたスコアの算出と、複数のレコード組のそれぞれの式２を用いたスコアの算出とを説明する。なお、複数の項目組は、２つのデータ間で１つの項目同士を組にして複数の項目の組を作ることで得られてよい。複数のレコード組は、２つのデータ間で１つのレコード同士を組にして複数のレコードの組を作ることで得られてよい。
【００３１】
図５は、項目組スコア情報５０１及びレコード組スコア情報５０２を例示する図である。図５（ａ）は、項目組スコア情報５０１を表しており、各項目組（ｕｋ，ｖｋ）のスコアＰｃ（ｕｋ，ｖｋ）が登録されている。なお、図５（ａ）では、行がデータＡの項目であり、列がデータＢの項目である。また、図５（ｂ）は、レコード組スコア情報５０２を表しており、各レコード組（ｉｋ，ｊｋ）のスコアＰｒ（ｉｋ，ｊｋ）が登録されている。なお、図５（ｂ）では、行がデータＡのレコードであり、列がデータＢのレコードである。
【００３２】
項目組スコア情報５０１及びレコード組スコア情報５０２は、例えば、スコアの算出の際に、少なくとも一方のテーブルが初期化されてよい。スコアの初期化では、制御部３０１は、例えば、全てのスコアを共通する値（例えば、図５に例示するように“１”）に初期化してよい。なお、実施形態はこれに限定されるものではなく、例えば、予め対応付きそうな項目組又はレコード組に初期化の際に大きな値を設定してもよい。
【００３３】
図６は、項目組のスコアを用いた、レコード組のスコアの算出を例示する図である。なお、図６は、ｉ＝ａ１、ｊ＝ｂ１のレコード組のスコアの算出を例示している。図６（ａ）は、初期化された項目組スコア情報５０１を表している。また、図６（ｂ）は、文字列マッチの結果Ｍである。そして、制御部３０１は、結果Ｍのうちで、ｉ＝ａ１、且つ、ｊ＝ｂ１であるエントリに示されるｕｋとｖｋとの組（図６（ｂ）のｋ＝１、４、６のエントリ）の項目組（Ａ１とＢ１、Ａ２とＢ２、Ａ３とＢ３）を特定する。そして、制御部３０１は、項目組（Ａ１とＢ１、Ａ２とＢ２、Ａ３とＢ３）のスコア（Ｐｃ（Ａ１，Ｂ１）、Ｐｃ（Ａ２，Ｂ２）、Ｐｃ（Ａ３，Ｂ３））を、項目組スコア情報５０１から取得する。更に、制御部３０１は、スコア（Ｐｃ（Ａ１，Ｂ１）、Ｐｃ（Ａ２，Ｂ２）、Ｐｃ（Ａ３，Ｂ３））にｓｋを掛けた値を積算することで、ｉ＝ａ１、ｊ＝ｂ１のレコード組のスコアＰｒ「３」を算出する。以下に、図６と対応する式２を用いた計算式を示す。
【数３】
0006690399.tif 000004
そして、同様の計算を行うことで、全てのレコード組（ｉｋ、ｊｋ）のスコアＰｒを計算することができる。図６（ｃ）は、計算の結果得られた全てのレコード組のスコアを登録したレコード組スコア情報５０２を表している。
【００３４】
また、図７は、レコード組のスコアを用いた、項目組のスコアの算出を例示する図である。なお、図７は、ｕ＝Ａ１、ｖ＝Ｂ１の項目組のスコアの算出を例示している。図７（ａ）は、図６（ｃ）で生成されたレコード組スコア情報５０２を表している。また、図７（ｂ）は、文字列マッチの結果Ｍである。そして、制御部３０１は、結果Ｍのうちで、ｉ＝Ａ１、且つ、ｊ＝Ｂ１であるエントリに示されるｉｋとｊｋとの組（図７（ｂ）のｋ＝１、２、３のエントリ）のレコード組（ａ１とｂ１、ａ２とｂ２、ａ３とｂ３）を特定する。そして、制御部３０１は、レコード組（ａ１とｂ１、ａ２とｂ２、ａ３とｂ３）のスコア（Ｐｒ（ａ１，ｂ１）、Ｐｒ（ａ２，ｂ２）、Ｐｒ（ａ３，ｂ３））を、レコード組スコア情報５０２から取得する。更に、スコア（Ｐｒ（ａ１，ｂ１）、Ｐｒ（ａ２，ｂ２）、Ｐｒ（ａ３，ｂ３））にＳｋを掛けた値を積算することで、ｕ＝Ａ１、ｖ＝Ｂ１の項目組のスコア「５」を算出する。以下に、図７と対応する計算式を示す。
【数４】
0006690399.tif 000005
そして、同様の計算を行うことで、全ての項目組（ｕｋ，ｖｋ）のスコアＰｃを計算することができる。図７（ｃ）は、計算の結果得られた全ての項目組のスコアを登録した項目組スコア情報５０１を表している。
【００３５】
そして、例えば、以上のようにスコアを計算することで、項目組のスコアを、スコアの高いレコード組でマッチ文字列を含むセル組が出現する項目組ほど高いスコアとなるように設定することができる。また、同様に、レコード組のスコアを、スコアの高い項目組でマッチ文字列を含むセル組が出現するレコード組ほど高いスコアとなるように設定することができる。そして、例えば、得られた項目組のスコアを用いて、高い精度でデータ間の項目組を対応付けることが可能である。
【００３６】
図８は、実施形態に係る２つのデータ間の項目組の順位付けを例示する図である。図８は、図７（ｃ）の項目組スコア情報５０１の項目組のスコアＰｃを用いた項目組の順位付けを例示しており、スコアの高い項目組が上位となる順番で、項目組が並べられている。図８では、項目「Ａ３：所在地」と、データＢの項目「Ｂ３：取引先住所」の適切な組み合わせの方が、項目「Ａ３：所在地」と、データＢの項目「Ｂ４：担当者住所」よりも高い順位となっている。例えば、同様のデータをマッチ文字列の出現個数で順位付けた場合、図１（ｂ）のように、項目「Ａ３：所在地」と、データＢの項目「Ｂ３：取引先住所」の適切な組み合わせの方が、データＢの項目「Ｂ４：担当者住所」との組み合わせよりも低い順位となる。しかしながら、実施形態によれば、適切な項目組である項目「Ａ３：所在地」と、データＢの項目「Ｂ３：取引先住所」の項目組に高いスコアを与えることができる。そのため、項目組スコア情報５０１のスコアを用いることで、項目の対応付けの精度を向上させることができる。
【００３７】
なお、実施形態によれば、レコード組スコア情報５０２のスコアＰｒ（ｉｋ、ｊｋ）を用いて、同様にレコード組も高い精度で対応付けることができる。図９は、レコード組の対応付けを例示する図である。図９に示されるように、例えば、レコード組スコア情報５０２において高いスコア：３を示したレコード組（ａ１、ｂ１）と、（ａ２、ｂ３）は、適切な組み合わせである可能性が高いレコード組として対応付けることができる。
【００３８】
また更に、項目組のスコアを用いたレコード組のスコアの算出と、レコード組のスコアを用いた項目組のスコアの算出とを、交互に繰り返すことで、項目組及びレコード組の対応付け精度を更に向上させることもできる。
【００３９】
図１０は、文字列マッチと、結果Ｍとを示す別な例である。図１０（ａ）は、文字列マッチを例示しており、図１０（ｂ）は、文字列マッチの結果Ｍを表で例示している。図１０（ａ）に示す様に、例えば、２つのデータ間でセルの値を比較して、文字列マッチを実行することで、２つのデータ間でマッチしたマッチ文字列が検出される。図１０（ａ）では、マッチ文字列にインデックスｋが順に割り振られている。そして、文字列マッチの結果Ｍは、図１０（ｂ）のテーブルで表すことができる。なお、図１０（ｂ）の文字列マッチの結果Ｍにおいて各エントリは、インデックスｋの値と、ｍｋの要素：ｉｋ，ｊｋ，ｕｋ，ｖｋ，ｓｋとを含んでいる。また、図１０の例では、エントリは更にマッチ文字列も含んでいるが、マッチ文字列は結果Ｍに含まれていなくてもよい。
【００４０】
続いて、結果Ｍを用いて項目組のスコアの算出を行う。図１１は、項目組のスコアの算出を例示する図である。まず、制御部３０１は、例えば、項目組スコア情報５０１又はレコード組スコア情報５０２を初期化する。なお、ここでは、項目組スコア情報５０１を初期化する場合を例示する。例えば、制御部３０１は、図５（ａ）に例示するように、項目組スコア情報５０１の全てのスコアＰｃを“１”に初期化してよい。
【００４１】
続いて、制御部３０１は、初期化した項目組スコア情報５０１を用いて式２によりレコード組スコア情報５０２の各レコード組のスコアＰｒを計算する。図１１（ａ）は、図５（ａ）の項目組スコア情報５０１から、式２により算出されたレコード組スコア情報５０２を例示する図である。
【００４２】
更に、図１１（ｂ）は、図１１（ａ）のレコード組スコア情報５０２から式１を用いて更新した項目組スコア情報５０１である。図１１（ｃ）は、図１１（ｂ）の項目組スコア情報５０１から式２を用いて更新したレコード組スコア情報５０２であり、図１１（ｄ）は、図１１（ｃ）のレコード組スコア情報５０２から式１を用いて算出した項目組スコア情報５０１である。即ち、図１１では、制御部３０１は、図５（ａ）の初期化された項目組スコア情報５０１に、図１１（ｂ）までの処理で１度目の更新を行い、図１１（ｄ）までの処理で２度目の更新を行っている。そして、図１１（ｂ）の１度目の更新の項目組スコア情報５０１の項目組のスコアと、図１１（ｄ）の２度目の更新の項目組スコア情報５０１の項目組のスコアとを用いて項目組をスコアの高い順に並べた結果を図１２に示す。
【００４３】
図１２は、項目組の順位付け例示する図である。図１２（ａ）は、図１１（ｂ）の１度目の更新後の項目組スコア情報５０１の項目組をスコア順に並べた場合を例示しており、図１２（ｂ）は、図１１（ｄ）の２度目の更新後の項目組スコア情報５０１の項目組をスコア順に並べた場合を例示している。なお、図１２（ｃ）は、図１（ｂ）と同じように、マッチ文字列の出現個数で項目組に順位をつけて並べた場合を例示している。
【００４４】
そして、図１２に示されるように、データＡの項目「Ａ２：企業名」と、データＢの項目「Ｂ２：取引先名」との項目組のエントリは、図１２（ａ）の１度目の更新後では、スコア「６」で、他の２位のエントリとスコアが並んでいる。しかしながら、図１２（ｂ）の２度目の更新後では、データＡの項目「Ａ２：企業名」と、データＢの項目「Ｂ２：取引先名」との項目組のエントリは単独で２位となっており、１度目の更新後で同じ２位であった他のエントリと差がでている。この様に、項目組のスコアを用いたレコード組のスコアの算出と、レコード組のスコアを用いた項目組のスコアの算出とを、交互に繰り返すことで、スコアの差を際立たせて項目組の対応付け精度を更に向上させることができる。また、同様に、レコード組の対応付けについても、項目組のスコアを用いたレコード組のスコアの算出と、レコード組のスコアを用いた項目組のスコアの算出とを、交互に繰り返すことで、対応付け精度を更に向上させることができる。
【００４５】
なお、制御部３０１は、項目組のスコアの算出とレコード組のスコアの算出との交互の繰り返しを、例えば、項目組又はレコード組の少なくともいずれかの順位が所定回数繰り返しても変動しなくなるまで、実行してよい。
【００４６】
図１３は、以上で述べた実施形態に係る項目組及びレコード組のスコアを算出する評価処理の動作フローを例示する図である。制御部３０１は、例えば、評価処理の実行指示が入力されると、図１３の動作フローを開始してよい。
【００４７】
ステップ１３０１（以降、ステップを“Ｓ”と記載し、例えば、Ｓ１３０１と表記する）において制御部３０１は、項目の対応付けを行う対象の複数のデータを読み込む。Ｓ１３０２において制御部３０１は、文字列マッチを実行し、複数のデータ間でマッチしたマッチ文字列に関する情報を含む結果Ｍを生成する。
【００４８】
Ｓ１３０３において制御部３０１は、項目組スコア情報５０１に登録されている各項目組のスコアＰｃを初期化するか否かを判定する。なお、初期化対象を項目組スコア情報５０１とするか、又はレコード組スコア情報５０２とするかは、例えば、ユーザからの入力を受けて決定してもよいし、又は予め定められた情報を記憶部３０２から参照して決定してもよい。Ｓ１３０３において項目組のスコアＰｃを初期化する場合（Ｓ１３０３がＹＥＳ）、フローはＳ１３０４に進む。Ｓ１３０４において制御部３０１は、項目組スコア情報５０１の全ての項目組のスコアＰｃを初期化する。制御部３０１は、例えば、全てのスコアを共通する値（例えば、“１”）に初期化してよい。或いは、制御部３０１は、例えば、ユーザによる入力を受け付けて、予め対応付きそうな項目組には大きな値を設定してもよい。
【００４９】
Ｓ１３０５において項目組のスコアＰｃと文字列マッチの結果Ｍとを用いて、式２によりレコード組スコア情報５０２の全てのレコード組のスコアＰｒを計算する。なお、式２の計算によれば、スコアの高い項目組でマッチ文字列を含むセル組が出現するレコード組ほど高いスコアとなるようにスコアＰｒを設定することができる。
【００５０】
Ｓ１３０６において制御部３０１は、スコアの計算が終了したか否かを判定する。制御部３０１は、項目組のスコアＰｃの算出とレコード組のスコアＰｒの算出とを、例えば、項目組スコア情報５０１の項目組又はレコード組スコア情報５０２のレコード組の順位の少なくともいずれかが所定回数繰り返しても変動しなくなるまで繰り返してよい。そして、制御部３０１は、項目組スコア情報５０１の項目組又はレコード組スコア情報５０２のレコード組の順位の少なくともいずれかの順位が変化しなくなった場合に、Ｓ１３０６においてＹＥＳと判定してよい。或いは、制御部３０１は、例えば、項目組スコア情報５０１の項目組のスコア及びレコード組スコア情報５０２のレコード組のスコアの少なくとも一方の値を正規化する。そして、制御部３０１は、正規化した値の変化が、繰り返しにおいて、所定の閾値を下回った場合に、Ｓ１３０６においてＹＥＳと判定してよい。なお、正規化は、例えば、項目組では、項目組スコア情報５０１のスコアＰｃの和が１となるように定数倍することで行われてよい。Ｐｒも、同様に正規化されてよい。
【００５１】
Ｓ１３０６においてスコア計算終了で無い場合（Ｓ１３０６がＮＯ）、フローはＳ１３０８に進む。Ｓ１３０８において制御部３０１は、レコード組のスコアＰｒと文字列マッチ結果Ｍとを用いて、式１により項目組スコア情報５０１の全ての項目組のスコアＰｃを計算する。式１の計算によれば、スコアの高いレコード組でマッチ文字列を含むセル組が出現する項目組ほど高いスコアとなるようにスコアＰｃを設定することができる。
【００５２】
Ｓ１３０９において制御部３０１は、スコア計算が終了したか否かを判定する。例えば、制御部３０１は、Ｓ１３０９においてＳ１３０６と同様の判定を行ってよい。Ｓ１３０９においてスコア計算終了で無い場合（Ｓ１３０９がＮＯ）、フローはＳ１３０５に戻る。
【００５３】
また、Ｓ１３０３においてＰｃの初期化で無い場合（Ｓ１３０３がＮＯ）、フローはＳ１３０７に進む。Ｓ１３０７において制御部３０１は、レコード組スコア情報５０２の全てのレコード組のＰｒを初期化する。制御部３０１は、例えば、全てのスコアを共通する値（例えば、“１”）に初期化してよい。或いは、制御部３０１は、例えば、ユーザによる入力を受け付けて、予め対応付きそうな項目組には大きな値を設定してもよい。
【００５４】
また、Ｓ１３０６又はＳ１３０９において、制御部３０１がスコア計算終了と判定した場合（Ｓ１３０６又はＳ１３０９がＹＥＳ）、フローはＳ１３１０に進む。Ｓ１３１０において制御部３０１は、項目組スコア情報５０１に登録されている項目組のスコアＰｃに基づいて項目組を出力する。制御部３０１は、例えば、項目組スコア情報５０１のスコアの高いエントリを上位から所定の数だけ出力してよい。或いは、制御部３０１は、項目の対応付けを行う対象の複数のデータのうちの１つのデータの各項目に対して、最も高いスコアを有する項目組を出力してもよい。
【００５５】
Ｓ１３１１において制御部３０１は、レコードを対応付けるか否かを判定する。なお、レコードも対応付けるか否かは、例えば、ユーザからの入力を受け付けて判定してもよいし、又は記憶部３０２に予め記憶しておいたレコードを対応付けるか否かを示す情報を参照して判定してもよい。
【００５６】
レコードを対応付けない場合（Ｓ１３１１がＮＯ）、本動作フローは終了する。一方、レコードを対応付ける場合（Ｓ１３１１がＹＥＳ）、フローはＳ１３１２に進む。
【００５７】
Ｓ１３１２において制御部３０１は、レコード組スコア情報５０２に登録されているレコード組のスコアＰｒに基づいてレコード組を出力する。例えば、制御部３０１は、レコード組スコア情報５０２のスコアの高いレコード組を所定の数だけ出力してよい。或いは、制御部３０１は、複数のデータのうちの１つのデータの各レコードに対して、最も高いスコアを有するレコード組を出力してもよい。制御部３０１が、Ｓ１３１２においてレコードとの対応付けを出力すると、本動作フローは終了する。
【００５８】
なお、図１３の動作フローのＳ１３０２の処理において制御部３０１は、例えば、比較部３１１として動作する。また、Ｓ１３０８の処理において制御部３０１は、例えば、設定部３１２として動作する。
【００５９】
以上で述べた様に、実施形態によれば、制御部３０１は、式１の計算をすることで、スコアの高いレコード組でマッチ文字列を含むセル組が出現する項目組ほど高いスコアとなるようにスコアＰｃを設定することができる。そのため、付与したスコアによって項目の対応付けを行うことで、データ間で項目を高い精度で対応付けることができる。また、実施形態によれば、データの値以外の情報を用いなくとも、データ間で項目を高い精度で対応付けることができる。
【００６０】
また同様に、上述の実施形態では制御部３０１は、式２の計算を計算することで、スコアの高い項目組でマッチ文字列を含むセル組が出現するレコード組ほど高いスコアとなるようにスコアＰｒを設定することができる。そのため、付与したスコアによってレコードの対応付けを行うことで、データ間でレコードを高い精度で対応付けることができる。また、実施形態によれば、データの値以外の情報を用いなくとも、データ間でレコードを高い精度で対応付けることができる。
【００６１】
また、上述の実施形態で述べた様に、項目組のスコアを用いたレコード組のスコアの算出と、レコード組のスコアを用いた項目組のスコアの算出とを、交互に繰り返すことで、更に対応付け精度を向上させることができる。
【００６２】
従って、実施形態によれば、複数のデータ間で項目を高い精度で対応付けることが可能になる。
【００６３】
なお、制御部３０１は、結果としてえられた項目組スコア情報５０１及びレコード組スコア情報５０２を、そのまま記憶部３０２に保存してもよい。或いは、例えば、項目組スコア情報５０１の全項目組又はレコード組スコア情報５０２の全レコード組のうちから、スコアが０でない項目組及びレコード組のスコアのみを抽出して記憶部３０２に保存するようにしてもよい。
【００６４】
また、例えば、項目の対応付けを行う対象のデータＡとデータＢとがある場合に、データＡの或る項目が、データＢの複数の項目と対応していることがある。例えば、データＡの項目「Ａ２：住所」が、データＢにおいて項目「Ｂ７：都道府県」、「Ｂ８：市区町村」、「Ｂ９：丁目番地」に分割されて保持されていることがある。この様な場合には、例えば、任意の複数項目を結合して新たな項目を割り当てることなどで、実施形態を適用することができる。例えば、項目「Ｂ７：都道府県」+「Ｂ８：市区町村」+「Ｂ９：丁目番地」のデータを結合してまとめたデータに、項目「Ｂ１０」を割り当てることで、データＢの項目「Ｂ１０」と、データの項目「Ａ２：住所」との対応付けが可能である。
【００６５】
また更に、上述の実施形態では、２つのデータの対応付けを例に説明を行っているが、実施形態はこれに限定されるものではない。例えば、実施形態は、３以上のデータの項目やレコードの対応付けにも適用することができる。例えば、Ｎ個のデータ間でのマッチ文字列集合を入力とし、Ｐｃ、及びＰｒの引数をそれぞれＮ個ずつにすることで、Ｎ個のデータ間の対応付けが可能である。例えば、３個のデータ間で名寄せを行う場合は、マッチ結果を（ｉｋ，ｊｋ，ｌｋ，ｕｋ，ｖｋ，ｗｋ，ｓｋ）の集合とし、それぞれのスコアをＰｃ（ｕｋ，ｖｋ，ｗｋ）、Ｐｒ（ｉｋ，ｊｋ，ｌｋ）と拡張すれば、実施形態を適用することができる。
【００６６】
以上において、実施形態を例示したが、実施形態はこれに限定されるものではない。例えば、上述の動作フローは例示であり、実施形態はこれに限定されるものではない。可能な場合には、動作フローは、処理の順番を変更して実行されてもよく、別に更なる処理を含んでもよく、又は、一部の処理が省略されてもよい。
【００６７】
また、例えば、上述の実施形態では、Ｓ１３０１〜Ｓ１３０２において項目の対応付けを行う対象のデータを読み出し、文字列マッチを実行している。しかしながら、実施形態はこれに限定されるものではない。例えば、文字列マッチは、別の装置において実行されてもよく、動作フローを、Ｓ１３０３から開始し、別の装置で実行された文字列マッチの結果を利用するようにしてもよい。
【００６８】
また、別の実施形態では、レコードの対応付けの結果を出力し、項目の対応付けについては結果を出力しなくてもよい。
【００６９】
図１４は、実施形態に係る情報処理装置３００を実現するためのコンピュータ１４００のハードウェア構成を例示する図である。図１４の情報処理装置３００を実現するためのハードウェア構成は、例えば、プロセッサ１４０１、メモリ１４０２、記憶装置１４０３、読取装置１４０４、通信インタフェース１４０６、及び入出力インタフェース１４０７を備える。なお、プロセッサ１４０１、メモリ１４０２、記憶装置１４０３、読取装置１４０４、通信インタフェース１４０６、入出力インタフェース１４０７は、例えば、バス１４０８を介して互いに接続されている。
【００７０】
プロセッサ１４０１は、メモリ１４０２を利用して例えば上述の動作フローの手順を記述したプログラムを実行することにより、制御部３０１の一部または全部の機能を提供する。例えば、プロセッサ１４０１は、メモリ１４０２を利用して例えば上述の動作フローの手順を記述したプログラムを実行することにより、比較部３１１及び設定部３１２として動作する。また、記憶部３０２は、例えば、メモリ１４０２、記憶装置１４０３、及び着脱可能記憶媒体１４０５を含んでいる。例えば、記憶装置１４０３には、項目の対応付けを行う対象のデータや、後述する文字列マッチの結果Ｍ、項目組スコア情報５０１、及びレコード組スコア情報５０２が格納されていてよい。
【００７１】
メモリ１４０２は、例えば半導体メモリであり、ＲＡＭ領域及びＲＯＭ領域を含んでいてよい。記憶装置１４０３は、例えばハードディスク、フラッシュメモリ等の半導体メモリ、又は外部記憶装置である。なお、ＲＡＭは、Random Access Memoryの略称である。また、ＲＯＭは、Read Only Memoryの略称である。
【００７２】
読取装置１４０４は、プロセッサ１４０１の指示に従って着脱可能記憶媒体１４０５にアクセスする。着脱可能記憶媒体１４０５は、例えば、半導体デバイス（ＵＳＢメモリ等）、磁気的作用により情報が入出力される媒体（磁気ディスク等）、光学的作用により情報が入出力される媒体（ＣＤ−ＲＯＭ、ＤＶＤ等）などにより実現される。なお、ＵＳＢは、Universal Serial Busの略称である。ＣＤは、Compact Discの略称である。ＤＶＤは、Digital Versatile Diskの略称である。
【００７３】
通信インタフェース１４０６は、プロセッサ１４０１の指示に従ってネットワーク１４２０を介してデータを送受信する。入出力インタフェース１４０７は、例えば、入力装置及び出力装置との間のインタフェースであってよい。入力装置は、例えばユーザからの指示を受け付けるキーボードやマウスなどのデバイスである。出力装置は、例えばディスプレーなどの表示装置、及びスピーカなどの音声装置である。
【００７４】
実施形態に係る各プログラムは、例えば、下記の形態で情報処理装置３００に提供される。
（１）記憶装置１４０３に予めインストールされている。
（２）着脱可能記憶媒体１４０５により提供される。
（３）プログラムサーバなどのサーバ１４３０から提供される。 
【００７５】
なお、図１４を参照して述べた情報処理装置３００を実現するためのコンピュータ１４００のハードウェア構成は、例示であり、実施形態はこれに限定されるものではない。例えば、上述の機能部の一部または全部の機能がＦＰＧＡ及びＳｏＣなどによるハードウェアとして実装されてもよい。なお、ＦＰＧＡは、Field Programmable Gate Arrayの略称である。ＳｏＣは、System-on-a-chipの略称である。
【００７６】
そして、コンピュータ１４００のプロセッサ１４０１は、例えば上述の動作フローの手順を記述したプログラムを読み出して実行することで、高い精度で項目を対応付けることができる。その結果、例えば、不要なレコード組を記憶装置１４０３に記憶させておかなくてもよくなる為、記憶装置１４０３の利用可能な記憶容量を増加させることができる。また、不要なレコードにアクセスする処理コストを削減することができる。
【００７７】
以上において、いくつかの実施形態が説明される。しかしながら、実施形態は上記の実施形態に限定されるものではなく、上述の実施形態の各種変形形態及び代替形態を包含するものとして理解されるべきである。例えば、各種実施形態は、その趣旨及び範囲を逸脱しない範囲で構成要素を変形して具体化できることが理解されよう。また、前述した実施形態に開示されている複数の構成要素を適宜組み合わせることにより、種々の実施形態が実施され得ることが理解されよう。更には、実施形態に示される全構成要素からいくつかの構成要素を削除して又は置換して、或いは実施形態に示される構成要素にいくつかの構成要素を追加して種々の実施形態が実施され得ることが当業者には理解されよう。
【符号の説明】
【００７８】
３００      情報処理装置
３０１      制御部
３０２      記憶部
３１１      比較部
３１２      設定部
１４００    コンピュータ
１４０１    プロセッサ
１４０２    メモリ
１４０３    記憶装置
１４０４    読取装置
１４０５    着脱可能記憶媒体
１４０６    通信インタフェース
１４０７    入出力インタフェース
１４０８    バス
【図１】
0006690399.tif 000006
【図２】
0006690399.tif 000007
【図３】
0006690399.tif 000008
【図４】
0006690399.tif 000009
【図５】
0006690399.tif 000010
【図６】
0006690399.tif 000011
【図７】
0006690399.tif 000012
【図８】
0006690399.tif 000013
【図９】
0006690399.tif 000014
【図１０】
0006690399.tif 000015
【図１１】
0006690399.tif 000016
【図１２】
0006690399.tif 000017
【図１３】
0006690399.tif 000018
【図１４】
0006690399.tif 000019