(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-31
(45)【発行日】2024-11-11
(54)【発明の名称】判定装置、判定方法、および、判定プログラム
(51)【国際特許分類】
G06Q 10/10 20230101AFI20241101BHJP
【FI】
G06Q10/10
(21)【出願番号】P 2021123734
(22)【出願日】2021-07-28
【審査請求日】2023-09-29
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(73)【特許権者】
【識別番号】598121341
【氏名又は名称】慶應義塾
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】石井 方邦
(72)【発明者】
【氏名】槇 俊孝
(72)【発明者】
【氏名】大槻 知明
【審査官】渡邉 加寿磨
(56)【参考文献】
【文献】特開2013-29891(JP,A)
【文献】特開2019-159837(JP,A)
【文献】特開2010-122880(JP,A)
【文献】特開2020-173675(JP,A)
【文献】特開2006-4411(JP,A)
【文献】米国特許第5724597(US,A)
【文献】中国特許第112597284(CN,B)
(58)【調査した分野】(Int.Cl.,DB名)
G06Q 10/00-99/00
G06F 16/00-16/958
(57)【特許請求の範囲】
【請求項1】
第1の組織が保有する第1のDBに格納される第1レコードと、第2の組織が保有する第2のDBに格納される第2レコードとが同じ事項に関するレコードであるか否かを判定する判定装置であって、
前記第1レコードおよび前記第2レコードを取得する取得部と、
前記第1レコードを構成する特徴量の前記第1のDBにおける重要度と、前記第2レコードを構成する特徴量の前記第2のDBにおける重要度とを用いて、前記第1レコードを構成する特徴量と前記第2レコードを構成する特徴量とのペアごとに、前記ペアにおける特徴量の値が同じだった場合に加算する値の重み付けを行うことにより、前記第1レコードと前記第2レコードとが同じ事項に関するレコードである度合いを示すスコアを算出するスコア算出部と、
前記スコアの大きさに基づき、前記第1レコードと前記第2レコードが同じ事項に関するレコードであるか否かを判定する判定部と、
判定した結果を前記第1の組織または前記第2の組織に送信する送信部と、
を備えることを特徴とする判定装置。
【請求項2】
前記第1レコードまたは前記第2レコードは、行動ベースの特徴量を含む
ことを特徴とする請求項1に記載の判定装置。
【請求項3】
前記第1レコードを構成する特徴量は、
前記第1のDBに含まれる各特徴量のうち、前記第1のDBに含まれる他の特徴量との相互情報量が高いものから優先的に選択された特徴量であり、
前記第2レコードを構成する特徴量は、
前記第2のDBに含まれる各特徴量のうち、前記第2のDBに含まれる他の特徴量との相互情報量が高いものから優先的に選択された特徴量である
ことを特徴とする請求項1に記載の判定装置。
【請求項4】
前記第1レコードを構成する特徴量の前記第1のDBにおける重要度は、
当該特徴量と前記第1のDBに含まれる他の特徴量との相互情報量に基づき算出された値であり、
前記第2レコードを構成する特徴量の前記第2のDBにおける重要度は、
当該特徴量と前記第2のDBに含まれる他の特徴量との相互情報量に基づき算出された値である、
ことを特徴とする請求項3に記載の判定装置。
【請求項5】
前記第1レコードを構成する特徴量と前記第2レコードを構成する特徴量とのペアは、
互いのデータ型が同じ特徴量のペア
であることを特徴とする請求項1に記載の判定装置。
【請求項6】
第1の組織が保有する第1のDBに格納される第1レコードと、第2の組織が保有する第2のDBに格納される第2レコードとが同じ事項に関するレコードであるか否かを判定する判定装置により実行される判定方法であって、
前記第1レコードおよび前記第2レコードを取得する工程と、
前記第1レコードを構成する特徴量の前記第1のDBにおける重要度と、前記第2レコードを構成する特徴量の前記第2のDBにおける重要度とを用いて、前記第1レコードを構成する特徴量と前記第2レコードを構成する特徴量とのペアごとに、前記ペアにおける特徴量の値が同じだった場合に加算する値の重み付けを行うことにより、前記第1レコードと前記第2レコードとが同じ事項に関するレコードである度合いを示すスコアを算出する工程と、
前記スコアの大きさに基づき、前記第1レコードと前記第2レコードが同じ事項に関するレコードであるか否かを判定する工程と、
判定した結果を前記第1の組織または前記第2の組織に送信する工程と、
を含むことを特徴とする判定方法。
【請求項7】
第1の組織が保有する第1のDBに格納される第1レコードと、第2の組織が保有する第2のDBに格納される第2レコードとが同じ事項に関するレコードであるか否かを判定するための判定プログラムであって、
前記第1レコードおよび前記第2レコードを取得する工程と、
前記第1レコードを構成する特徴量の前記第1のDBにおける重要度と、前記第2レコードを構成する特徴量の前記第2のDBにおける重要度とを用いて、前記第1レコードを構成する特徴量と前記第2レコードを構成する特徴量とのペアごとに、前記ペアにおける特徴量の値が同じだった場合に加算する値の重み付けを行うことにより、前記第1レコードと前記第2レコードとが同じ事項に関するレコードである度合いを示すスコアを算出する工程と、
前記スコアの大きさに基づき、前記第1レコードと前記第2レコードが同じ事項に関するレコードであるか否かを判定する工程と、
判定した結果を前記第1の組織または前記第2の組織に送信する工程と、
をコンピュータに実行させるための判定プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のデータベース(DB)のレコードが同じ事項に関するレコードであるか否かを判定するための、判定装置、判定方法、および、判定プログラムに関する。
【背景技術】
【0002】
従来、複数のDBのレコードをマッチングする技術がある。各DBのレコードの特徴量の数が数百ある場合、どの特徴量にどれくらいの重み付けをしてマッチングさせればマッチングの精度が高くなるかわからないため、機械学習を用いて、レコードのマッチングを行う技術がある。
【先行技術文献】
【非特許文献】
【0003】
【文献】V.Meduri, L.Popa, P.Sen, and M.Sarwat, “A Comprehensive Benchmark Framework for Active Learning Methods in Entity Matching,” Mar. 2020.
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかし、上記の技術では、機械学習を行うため、マッチング対象のDBそれぞれのレコードを取得し、集約する必要がある。したがって、例えば、マッチング対象のDBがそれぞれ別の組織により管理される場合、プライバシーの問題が発生する。また、機械学習には時間もかかり、ハードウェア資源も多く必要である。
【0005】
そこで、本発明は、前記した問題を解決し、複数の組織のDBのレコードを学習データとして取得せずに、各DBのレコードを一か所に集約することなくマッチングのパラメータをセットアップし、各DBのレコードを精度よくマッチングすることを課題とする。
【課題を解決するための手段】
【0006】
前記した課題を解決するため、本発明は、第1の組織が保有する第1のDBに格納される第1レコードと、第2の組織が保有する第2のDBに格納される第2レコードとが同じ事項に関するレコードであるか否かを判定する判定装置であって、前記第1レコードおよび前記第2レコードを取得する取得部と、前記第1レコードを構成する特徴量の前記第1のDBにおける重要度と、前記第2レコードを構成する特徴量の前記第2のDBにおける重要度とを用いて、前記第1レコードを構成する特徴量と前記第2レコードを構成する特徴量とのペアごとに、前記ペアにおける特徴量の値が同じだった場合に加算する値の重み付けを行うことにより、前記第1レコードと前記第2レコードとが同じ事項に関するレコードである度合いを示すスコアを算出するスコア算出部と、前記スコアの大きさに基づき、前記第1レコードと前記第2レコードが同じ事項に関するレコードであるか否かを判定する判定部と、判定した結果を前記第1の組織または前記第2の組織に送信する送信部と、を備えることを特徴とする。
【発明の効果】
【0007】
本発明によれば、複数の組織のDBのレコードを学習データとして取得せずに、各DBのレコードを一か所に集約することなくマッチングのパラメータをセットアップし、各DBのレコードを精度よくマッチングすることができる。
【図面の簡単な説明】
【0008】
【
図1】
図1は、マッチング装置の動作概要を説明する図である。
【
図2】
図2は、マッチングシステムの処理手順の概要を示す図である。
【
図3】
図3は、マッチングシステムの処理手順の概要を示す図である。
【
図4】
図4は、マッチングシステムの構成例を示す図である。
【
図5】
図5は、マッチングシステムの事前準備フェーズの処理手順の例を示すシーケンス図である。
【
図6】
図6は、マッチングシステムの事前準備フェーズの処理手順の例を示すシーケンス図である。
【
図7】
図7は、マッチングプログラムを実行するコンピュータの構成例を示す図である。
【発明を実施するための形態】
【0009】
以下、図面を参照しながら、本発明を実施するための形態(実施形態)について説明する。本発明は、以下に説明する実施形態に限定されない。
【0010】
[概要]
まず、
図1を用いて、本実施形態のマッチング装置(判定装置)10の動作概要を説明する。ここではマッチング装置10が、社内の営業DB(データベース)と外部企業のDBとのデータマッチングを行う場合を例に説明する。以下、社内の営業DBを、DB_Aとし、外部企業のDBを、DB_Bとして説明する。
【0011】
まず、DB_Aを保有するDB装置は、事前準備として、DB_Aに含まれる特徴量ごとに、DB_Aにおける重要度を求める。重要度は、例えば、DB_A内における他の各特徴量との相互情報量を用いる(詳細は後記)。そして、当該DB装置は、重要度が高い特徴量の特徴量名、当該特徴量の重要度(重み)、当該特徴量のデータ型(型)を示した重み付き特徴量リスト101を作成する。また、DB_Bを保有するDB装置も、同様にDB_Bに含まれる特徴量ごとに、DB_Bにおける重要度を求め、重み付き特徴量リスト102を作成する。この際に、重み付き特徴量リスト101および重み付き特徴量リスト102については、ある特徴量に対し、各型である可能性を確率的に定義することも可能である。
【0012】
その後、マッチング装置10は、DB_Aを保有するDB装置から、重み付き特徴量リスト101を取得し、DB_Bを保有するDB装置から重み付き特徴量リスト102を取得する。そして、マッチング装置10は、各リストに示される特徴量のうち、同じ型の特徴量のペアごとに、そのペアの特徴量の重みの和を示した情報(符号103)を作成する。
【0013】
例えば、符号103に示す情報において、DB_Aの特徴量「会社名」とDB_Bの特徴量「企業名」はそれぞれ、型が「企業型」のペアであり、そのペアの特徴量の重みの和は「5.5+5.4=10.9」であることを示す。また、DB_Aの特徴量「住所」とDB_Bの特徴量「所在地」はそれぞれ、型が「住所型」のペアであり、そのペアの特徴量の重みの和は「3.5+4.0=7.5」であることを示す。さらに、DB_Aの特徴量「販売数」とDB_Bの特徴量「資本金」はそれぞれ、型が「数型」のペアであり、そのペアの特徴量の重みの和は「4.0+2.0=6.0」であることを示す。
【0014】
その後、マッチング装置10は、上記の符号103に示す情報に基づき、DB_AのレコードとDB_Bのレコードとのマッチングを行う。
【0015】
例えば、マッチング装置10は、DB_Aのレコード104およびDB_Bのレコード105それぞれについて、符号103に示すペアの特徴量の値が同じ場合、重み付けの値を加算することにより、マッチングのスコアを算出する。
【0016】
例えば、マッチング装置10は、レコード104,105について、レコード104における「会社名」の値と、レコード105における「企業名」の値とは同じではないので、重みは加算しない。一方、レコード104における「住所」の値と、レコード105における「所在地」の値とが同じである場合、重み「7.5」を加算する。また、マッチング装置10は、レコード104における「販売数」の値と、レコード105における「資本金」の値とが同じである場合、重み「6.0」を加算する。マッチング装置10は、このような処理をレコード104,105の各特徴量について実施する。
【0017】
これにより、マッチング装置10は、レコード104とレコード105とが同じ事項に関するレコードである度合いを示すスコアを算出することができる。そして、マッチング装置10は、算出したスコアの値に基づき、両レコードが同じ事項に関するレコードか否かを判定する。
【0018】
例えば、レコード104とレコード105のスコアが所定値を超える場合、マッチング装置10は、レコード104とレコード105とが同じ事項に関するレコード(例えば、同じ企業に関するレコード)と判定する。
【0019】
なお、重み付き特徴量リスト101,102が、ある特徴量に対し、各型である可能性が確率的に定義される場合、例えば、マッチング装置10は、同じ型の特徴量のペアごとの特徴量の重みの和を以下のようにして算出してもよい。
【0020】
例えば、マッチング装置10は、「会社名」という型の90%が「企業名型」、10%が「住所型」である場合、それを「企業名型の会社名」と「住所型の会社名」とに分ける。そして、マッチング装置10は、重み付き特徴量リスト101の「会社名」に対する重み5.5を、前者に5.5x90%=4.95、後者に5.5x10%=0.55と分割して、同じ型の特徴量のペアごとの特徴量の重みの和を算出してもよい。
【0021】
このようなマッチング装置10によれば、複数の組織のDBのレコードを学習データとして取得せずに、各DBのレコードを精度よくマッチングすることができる。
【0022】
[処理手順の概要]
次に、
図2および
図3を用いて、マッチング装置10を含むマッチングシステムの処理手順の概要を説明する。
図2に示すように、マッチングシステム1は、マッチング装置10と、DB装置20Aと、DB装置20Bとを備える。DB装置20Aと、DB装置20Bとはそれぞれ異なる組織により保有されるものとする。
【0023】
[事前準備フェーズ]
図2を用いて、事前準備フェーズにおける処理手順の例を説明する。事前準備フェーズは、マッチングシステム1がレコードのマッチングの事前準備を行うフェーズである。
【0024】
まず、マッチング装置10は、公開されている、社名リストや所在地リスト等のデータを取得し、取得したデータに基づき、電話番号や郵便番号等の特徴量の型の推定用ルール(A)を作成する((1))。
【0025】
また、マッチング装置10は、上記の(1)と同様に、取得したデータを学習データとし、機械学習を用いて、入力された特徴量がどの型(例えば、社名、住所等)か推定するためのモデル(型の推定モデル)(B)を構築する((2))。そして、マッチング装置10は、上記のA,BをDB装置20Aに提供する((3))。
【0026】
その後、DB装置20Aは、自身のDBのレコード群を用いて、マッチングに用いる特徴量の選択用の情報の作り込みを行う((4))。例えば、DB装置20Aは、以下の処理を行う。この情報の作りこみを行うプログラムについては、事前にマッチング装置10からDB装置20A及びDB装置20Bに提供することもできる。
【0027】
まず、DB装置20Aは、DB内の全ての特徴量のペアの相互情報量を用いて、マッチングに用いる特徴量の選択と、マッチングにおいて当該特徴量を用いるときの重みとを算出する((4-1))。また、DB装置20Aは、(4-1)で選択された特徴量の型を、上記のA,Bを用いて推定する((4-2))。
【0028】
その後、DB装置20Aは、(4-1)の情報に、(4-2)の情報を付加してマッチング装置10へ送信する((5))。
【0029】
また、マッチング装置10は、上記のA,BをDB装置20Bに対しても提供する((6))。その後、DB装置20Bは、自身のDBのレコード群を用いて、上記の(4)、(5)と同様の処理を実行する。
【0030】
これにより、マッチング装置10は、DB装置20A,20Bそれぞれから、レコードのマッチングに用いる特徴量と、当該特徴量の型の推定結果と、マッチングにおいて当該特徴量を用いるときの重みとを示した情報(重み付き特徴量リスト)を受け取ることができる。そして、マッチング装置10は、DB装置20A,20Bから受信した重み付き特徴量リストに示される特徴量のうち、同じ型の特徴量のペアごとに、そのペアの特徴量の重みの和を示した情報(
図1の符号103)を作成する。また、マッチング装置10は、上記の情報に基づき、DB装置20A,20Bから受信したレコードのマッチングのスコアの算出に用いる式(後記する式(3)参照)を作成する。
【0031】
[マッチングフェーズ]
次に、
図3を用いて、マッチングフェーズにおける処理手順の例を説明する。マッチング装置10は、事前準備フェーズでDB装置20A,20Bから受信した重み付き特徴量リスト用いて、以下のようにしてレコードのマッチングを行う。
【0032】
まず、DB装置20Aは、マッチング対象のレコードRをマッチング装置10へ送信する((1))。その後、マッチング装置10は、DB装置20Bに、レコードRとのマッチング対象となるレコードの検索クエリを送信する((2))。次に、DB装置20Bは、当該検索クエリを用いてDBを検索し、マッチング対象となるレコード群をマッチング装置10へ送信する((3))。
【0033】
その後、マッチング装置10は、レコードRと、(3)で受信したレコード群の各レコードとのマッチングを行う((4)マッチングの実施)。
【0034】
例えば、マッチング装置10は、レコードRと、(3)で受信したレコード群の各レコードとでレコードのペアを作成する。そして、マッチング装置10は、DB装置20A,20Bから受信した重み付き特徴量リストを用いて、各レコードのペアがどの程度マッチしているかのスコアリングを行う。
【0035】
その後、マッチング装置10は、(4)のマッチングの結果をDB装置20Aへ送信する((5))。例えば、マッチング装置10は、レコードRと、レコードRとのマッチングのスコアが最も高いレコードとのペアをDB装置20Aへ送信する。
【0036】
このようにすることで、マッチング装置10は、学習データとして複数の組織のDBのレコードを取得せずに、各DBのレコードをマッチングすることができる。
【0037】
なお、マッチング装置10は、スコアが所定値以下のレコードしかなかった場合は、マッチするレコードがなかった旨をDB装置20Aへ送信してもよい。また、マッチング装置10は、同じスコアのレコードが複数あった場合、それらのレコードを全てDB装置20Aに送信してもよいし、最初またはランダムにスコアが所定値を超えたレコードをDB装置20Aへ送信してもよい。
【0038】
また、マッチング装置10は、信頼できる第三者により管理されることを想定するが、これに限定されない。例えば、マッチング装置10は、DB装置20Aを管理する組織に管理されてもよいし、DB装置20Bを管理する組織により管理されてもよい。
【0039】
[構成例]
次に、
図4を用いて、マッチングシステム1の構成例を説明する。マッチングシステム1は、マッチング装置10とDB装置20とを備える。まず、DB装置20を説明する。
【0040】
[DB装置]
DB装置20は、通信部21、入出力部22、記憶部23、および、制御部24を備える。通信部21は、外部装置とデータ通信を行うためのインタフェースである。入出力部22は、DB装置20への各種入力や、出力を行うためのインタフェースである。
【0041】
記憶部23は、制御部24が各種処理を実行するためのデータを記憶する。この記憶部23は、所定領域にDBを備える。DBは複数のレコードを格納する。各レコードは、複数の特徴量から構成される。また、記憶部23は、マッチング装置10から送信された、型の推定ルール(A)または型の推定モデル(B)を記憶する。
【0042】
制御部24は、DB装置20全体の制御を行う。制御部24は、特徴量作成部241と、正規化部242と、特徴量削減部243と、重み算出部244と、特徴量選択部245と、型推定部246と、重み付き特徴量リスト送信部247と、レコード送信部248と、マッチング結果出力部249とを備える。
【0043】
特徴量作成部241は、DBの全レコードを用いて、マッチング用の特徴量の候補を作成する。ここで、特徴量作成部241は、例えば、マッチング用の特徴量の候補として、行動ベースの特徴量を組み込んでもよい。行動ベースの特徴量とは、例えば、DBのレコードが他のデータ(例えば、ログ群)とリンクされている場合、そのリンク先のデータから抽出される特徴量である。なお、この処理は任意である。
【0044】
正規化部242は、DBのレコードの表記揺れの正規化を行う。例えば、正規化部242は、DBのレコードが日本語で記述されている場合、レコードに含まれる企業名や住所等の表記の正規化を行う。また、正規化部242は、レコードに含まれる平仮名/カタカナの表記をカタカナに統一したり、株式会社/(株)等の表記を「株式会社」に統一したりする。なお、この処理は任意である。
【0045】
特徴量削減部243は、特徴量作成部241により作成されたマッチング用の特徴量の候補から、マッチングに用いるのに適さない特徴量を削除する。例えば、特徴量削減部243は、例えば、DBのレコードにおける、値の欠損率が所定値以上の特徴量、ユニーク要素数が所定値以下の特徴量等を、マッチング用の特徴量の候補から削除する。そして、特徴量削減部243は、上記の削除後のマッチング用の特徴量の候補を、重み算出部244に出力する。なお、この処理は任意である。
【0046】
重み算出部244は、マッチング用の各特徴量の候補の重みを算出する。このマッチング用の特徴量の候補の重みは、例えば、DBにおける当該特徴量の候補の重要度に基づき算出される。ここで重要度としては、例えば、DBにおける特徴量間の相互情報量を用いる。
【0047】
ここで重要度として、DBにおける特徴量間の相互情報量を用いるのは以下の理由による。マッチングにおいて、他のDBの特徴量との比較ができない中で、各DBで終端する処理が必要となる。その中で複数の情報量の表し方(例えば、エントロピー、自己エントロピー等)を利用することが考えられるが、他の特徴量との相対的な強さを比較するという観点で、特徴量のペアの相互情報量を用いれば、特徴量のペアの情報量を定義できる。そこで、重み算出部244が、重要度として、特徴量のペアの相互情報量を用いて、特徴量のペアの相互依存の尺度を表す。これにより、重み算出部244は、他の特徴量に対して、ある特徴量が重要であるか否かを比較し、相互依存の度合いが大きい特徴量ほど全体として各DBの中で重要な特徴量であると考えられるからである。
【0048】
重み算出部244は、例えば、以下のようにして、特徴量間の相互情報量を算出する。
【0049】
(1)まず、重み算出部244は、すべての特徴量のペア(X,Y)をとる。(2)次に、重み算出部244は、DB内のレコードに基づき、各ペア(X,Y)の相互情報量I(X;Y)を算出する。例えば、重み算出部244は、式(1)により相互情報量I(X;Y)を算出する。
【0050】
【0051】
なお、p(x,y):X,Yの同時分布関数である。p(x,y)は、X、Yからそれぞれランダムサンプリングしたレコードセット(全てのレコードを利用してもよい)よりペアを作った際のx,yが同時に出現する確率等により算出される。
【0052】
また、p(x),p(y):周辺確率分布関数である。p(x)は、Xからランダムサンプリングされたレコードセット(全てのレコードを利用してもよい)内のxの出現確率である。また、p(y)は、Yからランダムサンプリングされたレコードセット(全てのレコードを利用してもよい)内のyの出現確率により算出される。
【0053】
なお、DB内にレコードが多い場合、重み算出部244は、DB内から所定数のレコードをサンプリングし、そのサンプリングしたレコードにより相互情報量を算出してもよい。また、重み算出部244は、算出した相互情報量をレコード数の総和で割る等の正規化処理を行ってもよい。
【0054】
(3)次に、重み算出部244は、特徴量の候補ごとに、当該特徴量の候補が含まれる全ペアの相互情報量の和を算出する。そして、重み算出部244は、算出した特徴量の候補ごとの相互情報量の和を特徴量選択部245に出力する。
【0055】
特徴量選択部245は、重み算出部244により算出された、各特徴量の候補の重み(例えば、前記した相互情報量の和)を用いて、マッチングに利用する特徴量を選択する。例えば、特徴量選択部245は、重み算出部244から出力された、各特徴量の候補のうち、相互情報量の和が大きいものから優先的に選択する。
【0056】
一例を挙げると、特徴量選択部245は、特徴量選択部245は、各特徴量の候補を相互情報量の和の値が降順になるように並べ、予め設定した所定順位以上の特徴量の候補を選択する。また、特徴量選択部245は、重み算出部244から出力された相互情報量の和が所定の閾値を超える特徴量の候補を選択してもよい。
【0057】
特徴量選択部245が、マッチングに利用する特徴量の選択を行うのは以下の理由による。例えば、特徴量の候補がとても多い場合、マッチング装置10がそのすべての特徴量を利用してマッチングを行うと、マッチングに要する計算量が多くなる。ここで、相互情報量の和(重み)が小さい特徴量については、マッチングに利用したとしても、マッチングの結果にあまり大きな影響を与えないと考えられる。そこで、特徴量選択部245は、相互特徴量の和の大きさが、所定順位以上の特徴量の候補、あるいは、閾値以上の特徴量の候補を、マッチングに利用する特徴量として選択する。これにより、マッチング装置10がマッチングに要する計算量を低減することができる。
【0058】
なお、特徴量選択部245は、重み算出部244から出力された全ての特徴量を利用してもよい。
【0059】
型推定部246は、特徴量選択部245により選択された特徴量の型の推定を行う。例えば、型推定部246は、特徴量選択部245により選択された各特徴量の候補のレコードに、型の推定ルール(A)を適用することにより、各特徴量の候補の型の推定を行う。あるいは、型推定部246は、上記の各特徴量の候補のレコードを入力とし、型の推定モデル(B)を用いて、各特徴量の候補の型の推定を行ってもよい。ここで、1つの特徴量については、複数の型を確率的に定義することも可能とする。
【0060】
また、型推定部246は、上記の各特徴量の候補のレコードをDBからサンプリングし、上記の型の推定ルール(A)により特徴量の候補の型が推定できなかった場合、上記の型の推定モデル(B)を適用して、型を推定してもよい。
【0061】
特徴量リスト送信部247は、特徴量選択部245により選択された特徴量(特徴量の候補)と、型推定部246により推定された当該特徴量の型の推定結果と、重み算出部244により算出された当該特徴量の重みとを示す重み付き特徴量リストを作成し、マッチング装置10へ送信する。
【0062】
レコード送信部248は、マッチング対象のレコードをマッチング装置10へ送信する。例えば、レコード送信部248は、入出力部22経由でマッチング対象のレコードの送信指示を受け付けると、DBからマッチング対象のレコードを読み出し、マッチング装置10へ送信する。また、レコード送信部248は、マッチング装置10から、レコードの検索クエリを受け付けた場合、当該検索クエリに基づきDBのレコードを検索し、マッチング装置10へ送信する。
【0063】
マッチング結果出力部249は、マッチング装置10から、マッチング対象のレコードに対するマッチングの結果を受信する。そして、マッチング結果出力部249は、受信したマッチングの結果を入出力部22経由で出力する。例えば、マッチング結果出力部249は、受信したマッチングの結果を、入出力部22経由で表示装置(図示省略)に表示する。これにより、DB装置20の利用者は、マッチング対象のレコードに対するマッチングの結果を確認することができる。
【0064】
[マッチング装置]
次に、マッチング装置10を説明する。マッチング装置10は、通信部11、入出力部12、記憶部13、および、制御部14を備える。通信部11は、外部装置とデータ通信を行うためのインタフェースである。入出力部12は、マッチング装置10への各種入力や、出力を行うためのインタフェースである。
【0065】
記憶部13は、制御部14が各種処理を実行するためのデータを記憶する。例えば、記憶部13は、各DB装置20から受信した重み付き特徴量リストを記憶する。また、記憶部13は、制御部14が作成したスコア算出式(詳細は後記)を記憶する。
【0066】
制御部14は、マッチング装置10全体の制御を司る。制御部14は、型推定ルール送信部141と、重み付き特徴量リスト取得部142と、特徴量情報取得部143と、フィルタリング部144と、スコア算出式作成部145と、レコード取得部146と、スコア算出部147と、判定部148と、送信部149とを備える。
【0067】
型推定ルール送信部141は、型の推定ルールを作成し、DB装置20へ送信する。例えば、型推定ルール送信部141は、公開されている社名リストや所在地リスト等のデータに基づき、電話番号や郵便番号等の型の推定ルールを作成し、各DB装置20へ送信する。
【0068】
また、型推定ルール送信部141は、公開されている社名リストや所在地リスト等のデータを学習データとし、機械学習を用いて、型の推定モデルを作成し、各DB装置20へ送信してもよい。例えば、型推定ルール送信部141は、機械学習アルゴリズム(RandomForestやLinearRegression等)により、入力レコードがどの型(社名、住所等)かを推定するモデルを作成し、各DB装置20へ送信する。ここでの、モデルの精度チューニング(パラメータ設定等)については、例えば、RakuDA等のデータ分析自動化技術を利用してもよい。
【0069】
なお、型推定ルール送信部141は、上記の型の推定ルールおよび型の推定モデルのいずれかを送信してもよいし、その両方を送信してもよい。
【0070】
重み付き特徴量リスト取得部142は、マッチング対象のレコードを保持する各DB装置20から重み付き特徴量リストを取得(受信)する。各DB装置20から取得した重み付き特徴量リストは、記憶部13に格納される。
【0071】
特徴量情報取得部143は、各DB装置20から取得した重み付き特徴量リストに含まれる特徴量の情報を取得する。例えば、特徴量情報取得部143は、DB装置20Aの重み付き特徴量リストから、当該重み付き特徴量リストに含まれる特徴量群A(特徴量A1,特徴量A2,…,特徴量An)を取得する。また、特徴量情報取得部143は、DB装置20Bの重み付き特徴量リストから、当該重み付き特徴量リストに含まれる特徴量群B(特徴量B1,特徴量B2,…,特徴量Bm)を取得する。
【0072】
フィルタリング部144は、特徴量情報取得部143により取得された、各DB装置20の特徴量群のすべてのペアから、型が異なる特徴量のペアを除外する。なお、ペアを構成する特徴量の型が異なるか否かは、各DB装置20の重み付き特徴量リストに示される各特徴量の型の推定結果を用いて判断される。なお、ここで各特徴量について型が確率的に定義された場合は、その型の確率の大きさに応じて重みを分配することもできる。
【0073】
例えば、フィルタリング部144は、まず、上記の特徴量群A(特徴量A1,特徴量A2,…,特徴量An)と特徴量群B(特徴量B1,特徴量B2,…,特徴量Bm)とのペアとして、[特徴量A1,特徴量B1]、[特徴量A1,特徴量B2]、…を作成する。次に、フィルタリング部144は、上記の[特徴量A1,特徴量B1]、[特徴量A1,特徴量B2]、…のペアのうち、特徴量の型の推定結果が異なるペアを除外する。これにより、特徴量の型の推定結果が同じ特徴量のペアが残る。なお、この処理は任意である。
【0074】
スコア算出式作成部145は、フィルタリング部144によりフィルタリングされた特徴量のペアと、重み付き特徴量リストに示される各特徴量の重みとを用いて、レコード同士が同じ事項に関するレコードである度合いを示すスコアの算出式(スコア算出式)を作成する。
【0075】
例えば、上記の算出式は、マッチングの対象となるレコードのペアについて、ペアにおける特徴量の値が同じだった場合、スコアを加算する式とする。ここで、スコア算出式作成部145は、上記のレコードのペアにおける特徴量の値が同じだった場合に加算するスコアに重み付けを行う。ここでの重み付けの値は、重み付き特徴量リストに示される各特徴量の重みの和とする。例えば、スコア算出式作成部145は、レコードのペアのスコア算出式として、以下の式(2)に示す式を作成する。
【0076】
【0077】
式(2)における、W[特徴量A1,特徴量B1]は、重み付き特徴量リストにおける特徴量A1の重みと特徴量B1の重みとの和である。例えば、DB装置20Aから送信された重み付き特徴量リストにおける特徴量A1「会社名」の重みが「5.5」であり、DB装置20Bから送信された重み付き特徴量リストにおける特徴量B1「企業名」の重みが「5.4」の場合、W[特徴量A1,特徴量B1]は「5.5+5.4=10.9」である。
【0078】
換言すると、スコア算出式作成部145は、以下の式(3)に示す、レコードのペアのスコア算出式S(x,y)を作成する。
【0079】
【0080】
スコア算出式作成部145は、作成したスコア算出式を記憶部13に格納する。
【0081】
レコード取得部146は、各DB装置20からマッチング対象のレコードを取得する。例えば、レコード取得部146は、DB装置20Aからマッチング対象のレコードを取得する。その後、レコード取得部146は、取得したレコードに対するマッチング対象のレコードの検索クエリを、DB装置20Bへ送信し、DB装置20Bからその検索クエリに対する検索結果(検索されたレコード)を取得する。
【0082】
例えば、レコード取得部146が、DB装置20Aから取得したマッチング対象のレコードが、ある地域の企業に関するレコードであった場合、その地域に関するレコードの検索クエリをDB装置20Bへ送信する。これにより、マッチング装置10は、マッチング対象のレコードの絞り込みをすることができる。
【0083】
スコア算出部147は、レコード取得部146により取得されたマッチング対象のレコードについて、レコードのペアごとのスコアを算出する。
【0084】
例えば、スコア算出部147は、DB装置20Aから取得したマッチング対象のレコードRと、DB装置20Bから取得したマッチング対象のレコード群(レコードR1~Rn)について、レコードRとレコードR1のペア、レコードRとレコードR2のペア…というように、レコードのペアを作成する。そして、スコア算出部147は、そのレコードのペアそれぞれについて、スコア算出式作成部145により作成されたスコア算出式を用いてスコアを算出する。
【0085】
判定部148は、スコア算出部147により算出されたレコードのペアそれぞれのスコアの大きさに基づき、レコードのペアが同じ事項に関するレコードのペアであるか否かを判定する。例えば、判定部148は、スコア算出部147により算出されたレコードのペアそれぞれのスコアを確認し、スコアが所定の閾値以上のレコードのペアがあれば、当該レコードのペアは同じ事項に関するレコードのペアと判定する。
【0086】
また、判定部148は、スコア算出部147により算出されたレコードのペアそれぞれのスコアの大きさに基づき、スコアが最も大きいレコードのペアを、同じ事項に関するレコードのペアと判定してもよい。また、判定部148は、スコアが所定の閾値以上のレコードのペアがなかった場合、同じ事項に関するレコードのペアがなかったと判定してもよい。
【0087】
送信部149は、判定部148による判定の結果(マッチングの結果)を、DB装置20へ送信する。例えば、送信部149は、マッチングの結果を、マッチング対象のレコードを保持するDB装置20AまたはDB装置20Bへ送信する。なお、送信部149は、マッチングの結果を、DB装置20Aを管理する組織またはDB装置20Bを管理する組織へ送信してもよい。
【0088】
[処理手順の例]
次に、マッチングシステム1の処理手順の例を説明する。まず、
図5を用いて、マッチングシステム1の事前準備フェーズの処理手順の例を説明する。
【0089】
まず、マッチング装置10の型推定ルール送信部141は、型の推定ルール(A)を作成し(S1)、また、型の推定モデル(B)を作成する(S2)。そして、型推定ルール送信部141は、上記の型の推定ルール(A)と、型の推定モデル(B)とをDB装置20A,20Bへ送信する(S3)。
【0090】
S3の後、DB装置20Aは、型の推定ルール(A)と型の推定モデル(B)に記憶部23に格納する(S10)。そして、特徴量作成部241は、DBの全レコードを用いて、マッチング用の特徴量の候補を作成する(S11:特徴量作成)。また、正規化部242は、DBのレコードの表記揺れの正規化を行う(S12:正規化)。
【0091】
S12の後、特徴量削減部243は、S11で作成されたマッチング用の特徴量の候補から、DBにおける、値の欠損率が所定値以上の特徴量、ユニーク要素数が所定値以下の特徴量等を、マッチング用の特徴量の候補から削除する(S13:特徴量削減)。
【0092】
S13の後、重み算出部244は、マッチング用の各特徴量の候補の重み(例えば、各特徴量の候補の相互情報量の和)を算出する(S14:重みの算出)。その後、特徴量選択部245は、S14で算出された、各特徴量の候補の重みを用いて、マッチングに利用する特徴量を選択する(S15:特徴量の選択)。例えば、特徴量選択部245は、S14で算出された、各特徴量の候補の相互情報量の和を降順に並べ、予め設定した所定順位以上の特徴量の候補を選択する。
【0093】
S15の後、型推定部246は、S15で選択された特徴量の型の推定を行う(S16)。ここでの型の推定には、S10で受信した型の推定ルール(A)と型の推定モデル(B)とを用いる。そして、重み付き特徴量リスト送信部247は、S15で選択された特徴量と、S16で推定された当該特徴量の型の推定結果と、S14で算出された当該特徴量の重みとを示した重み付き特徴量リストを作成し、マッチング装置10へ送信する(S17)。
【0094】
また、S3の後、DB装置20Bは、S20~S27の処理を実行する。このS20~S27の処理は、前記したS10~S17の処理と同様なので説明を省略する。
【0095】
その後、マッチング装置10の重み付き特徴量リスト取得部142は、DB装置20A,20Bそれぞれから重み付き特徴量リストを受信すると、各重み付き特徴量リストを記憶部13に格納する(S31)。そして、特徴量情報取得部143は、DB装置20A,20Bの重み付き特徴量リストそれぞれから、特徴量の情報を取得する(S32)。例えば、特徴量情報取得部143は、DB装置20Aの重み付き特徴量リストから、特徴量群A(特徴量A1,特徴量A2,…,特徴量An)を取得し、DB装置20Bの重み付き特徴量リストから、特徴量群B(特徴量B1,特徴量B2,…,特徴量Bm)を取得する。
【0096】
S32の後、フィルタリング部144は、S32で取得された特徴量の情報から、推定された型が異なる特徴量のペアを除外する(S33:特徴量のペアのフィルタリング)。その後、スコア算出式作成部145は、S33でフィルタリングされた特徴量のペアと、DB装置20A,20Bの重み付き特徴量リストに示される各特徴量の重みとを用いて、スコア算出式を作成する(S34)。そして、スコア算出式作成部145は、作成したスコア算出式を記憶部13に格納する。
【0097】
次に、
図6を用いて、マッチングシステム1のマッチングフェーズの処理手順の例を説明する。
【0098】
まず、DB装置20Aのレコード送信部248は、マッチング対象のレコードをDBから読み出し、マッチング装置10へ送信する(S41)。マッチング装置10のレコード取得部146は、S41で送信されたマッチング対象のレコードを記憶部13に格納する。
【0099】
S41の後、マッチング装置10のレコード取得部146は、DB装置20Bに対し、マッチング対象のレコードの検索クエリを送信する(S42)。その後、DB装置20Bのレコード送信部248は、当該検索クエリに基づき、DBから、マッチング対象のレコードを検索し、マッチング装置10へ送信する(S43)。その後、マッチング装置10のレコード取得部146は、S43で送信されたマッチング対象のレコードを記憶部13に格納する。
【0100】
S43の後、マッチング装置10のスコア算出部147は、DB装置20A,20Bから送信されたマッチング対象のレコードについて、レコードのペアごとのスコアを算出する(S44)。なお、スコアの算出には、
図5のS34で作成されたスコア算出式を用いる。
【0101】
S44の後、マッチング装置10の判定部148は、S44で算出された、マッチング対象のレコードのペアごとのスコアの大きさに基づく判定を行う(S45)。例えば、判定部148は、S44で算出されたレコードのペアそれぞれのスコアを確認し、最もスコアが大きいレコードのペアを、同じ事項に関するレコードのペアと判定する。その後、送信部149は、S45における判定の結果(マッチングの結果)をDB装置20Aへ送信する(S46)。
【0102】
その後、DB装置20Aのマッチング結果出力部249は、マッチングの結果を表示装置等に出力する(S47)。
【0103】
このようにすることで、マッチングシステム1は、複数の組織のDBのレコードを学習データとして取得せずに、各DBのレコードを精度よくマッチングすることができる。これにより、マッチングシステム1は、例えば、複数の組織のDBのレコードの名寄せ等を精度よく行うことができる。
【0104】
また、マッチングシステム1によれば、複数の組織のDBのレコードを学習データとして用いた機械学習が不要なので、マッチングに要する処理負荷が少なくて済む。また、マッチングシステム1は、マッチング対象のレコードを保持する各DB装置20から、マッチングの対象以外のレコードを取得する必要がないので、各DB装置20がそれぞれ別の組織により管理される場合でも、プライバシーの問題が発生しない。
【0105】
さらに、マッチングシステム1は、レコードのマッチングに適切な特徴量を絞り込んでマッチングを行うので、多数の特徴量から構成されるレコードのマッチングも行うことができる。さらに、マッチングシステム1は、レコードのマッチングに用いる特徴量を選択する際、値の欠損率が所定値以上の特徴量、ユニーク要素数が所定値以下の特徴量等を、マッチング用の特徴量の候補から削除する。また、マッチングシステム1は、レコードのマッチングに用いる特徴量のペアについて、特徴量の型の推定結果を用いたフィルタリングを行う。これにより、マッチングシステム1は、例えば、各DBに1つの特徴量に対し様々な型が混在するレコードが含まれていても、マッチングすることができる。
【0106】
例えば、レコードを構成する1つの特徴量の中に、例えば、人為ミスや組織の運用の違いにより、複数の型のデータが入っている場合もある。例えば、電話番号型等の同じ型を持つレコードが複数あるため、その中でもどの特徴量とどの特徴量とをマッチングに利用するのがよいか、人では判断しづらい場合もある。このような場合でも、マッチングシステム1は、マッチングに適切な特徴量を判断し、マッチングすることができる。また、DB間でレコードのカラム数の偏り等がある場合でも、マッチングシステム1はレコードのマッチングをすることができる。
【0107】
[その他の実施形態]
なお、前記した実施形態においてマッチング装置10は、2つのDB装置20のDBのレコードのマッチングを行う場合を例に説明したが、これに限定されない。例えば、マッチング装置10は、3つ以上のDB装置20のDBのレコードのマッチングを行ってもよい。
【0108】
さらに、マッチング装置10は、各DB装置20から送信された各特徴量の型の推定結果を用いて、レコードのマッチングを行うこととしたが、各特徴量の型の推定結果を用いずにマッチングを行ってもよい。
【0109】
また、DB装置20は、マッチング用の特徴量の候補を作成する際に行動ベースの特徴量を組み込んだり、DBのレコードの表記揺れの正規化処理を行ったり、これらの処理を実行しないこととしてもよい。
【0110】
[適用例]
次に、前記したマッチングシステム1の適用例を説明する。マッチングシステム1により、社内データと、外部データとのマッチングを行ったところ、マッチング率は95.3%であった。
【0111】
上記の結果から、マッチングシステム1によれば、各DBのレコードを用いた機械学習を行わなくても、DBのレコードを精度よくマッチングできることが確認できた。
【0112】
[システム構成等]
また、図示した各部の各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。さらに、各装置にて行われる各処理機能は、その全部又は任意の一部が、CPU及び当該CPUにて実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【0113】
また、前記した実施形態において説明した処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【0114】
[プログラム]
前記したマッチング装置10は、パッケージソフトウェアやオンラインソフトウェアとしてプログラム(マッチングプログラム)を所望のコンピュータにインストールさせることによって実装できる。例えば、上記のプログラムを情報処理装置に実行させることにより、情報処理装置を、マッチング装置10として機能させることができる。ここで言う情報処理装置にはスマートフォン、携帯電話機やPHS(Personal Handyphone System)等の移動体通信端末、さらには、PDA(Personal Digital Assistant)等の端末等がその範疇に含まれる。
【0115】
図7は、マッチングプログラムを実行するコンピュータの一例を示す図である。コンピュータ1000は、例えば、メモリ1010、CPU1020を有する。また、コンピュータ1000は、ハードディスクドライブインタフェース1030、ディスクドライブインタフェース1040、シリアルポートインタフェース1050、ビデオアダプタ1060、ネットワークインタフェース1070を有する。これらの各部は、バス1080によって接続される。
【0116】
メモリ1010は、ROM(Read Only Memory)1011及びRAM(Random Access Memory)1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1100に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ1100に挿入される。シリアルポートインタフェース1050は、例えばマウス1110、キーボード1120に接続される。ビデオアダプタ1060は、例えばディスプレイ1130に接続される。
【0117】
ハードディスクドライブ1090は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093、プログラムデータ1094を記憶する。すなわち、上記のマッチング装置10が実行する各処理を規定するプログラムは、コンピュータにより実行可能なコードが記述されたプログラムモジュール1093として実装される。プログラムモジュール1093は、例えばハードディスクドライブ1090に記憶される。例えば、マッチング装置10における機能構成と同様の処理を実行するためのプログラムモジュール1093が、ハードディスクドライブ1090に記憶される。なお、ハードディスクドライブ1090は、SSD(Solid State Drive)により代替されてもよい。
【0118】
また、上述した実施形態の処理で用いられるデータは、プログラムデータ1094として、例えばメモリ1010やハードディスクドライブ1090に記憶される。そして、CPU1020が、メモリ1010やハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して実行する。
【0119】
なお、プログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、プログラムモジュール1093及びプログラムデータ1094は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続される他のコンピュータに記憶されてもよい。そして、プログラムモジュール1093及びプログラムデータ1094は、他のコンピュータから、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
【符号の説明】
【0120】
10 マッチング装置(判定装置)
20 DB装置
11,21 通信部
12,22 入出力部
13,23 記憶部
14,24 制御部
141 型推定ルール送信部
142 重み付き特徴量リスト取得部
143 特徴量情報取得部
144 フィルタリング部
145 スコア算出式作成部
146 レコード取得部
147 スコア算出部
148 判定部
149 送信部
241 特徴量作成部
242 正規化部
243 特徴量削減部
244 重み算出部
245 特徴量選択部
246 型推定部
247 重み付き特徴量リスト送信部
248 レコード送信部
249 マッチング結果出力部