(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-01-16
(54)【発明の名称】エンティティデータベースの方法およびシステム
(51)【国際特許分類】
G06F 16/38 20190101AFI20240109BHJP
【FI】
G06F16/38
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023540674
(86)(22)【出願日】2021-12-29
(85)【翻訳文提出日】2023-08-29
(86)【国際出願番号】 US2021065431
(87)【国際公開番号】W WO2022147067
(87)【国際公開日】2022-07-07
(32)【優先日】2021-01-04
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】519161872
【氏名又は名称】ライブランプ インコーポレーテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】クマール、シリシュ
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175DA01
5B175FB03
(57)【要約】
エンティティに対するマッチングプラットフォームを実装するためのコンピュータ化された方法は、入力データストリーム上でリアルタイムリンクを使用するリアルタイム処理層と、バッチデータソースストリームからのエンティティをリンクする高スループット層とを含む。リアルタイムのリンク結果は、状態変更ストアに記憶され、高スループットのリンク結果は、状態ストアに記憶される。オンデマンドリンクが、状態変更ストアおよび状態ストアを使用する。ラムダスイッチが、オンデマンドリンクがより古い世代の状態ストアおよびステージ変更ストアからより新しい世代の状態ストアおよび状態変更ストアに切り替わるとき、エンティティ状態が一貫したままであることを保証する。これらのストアは、クエリを命令に構文解析し、エンティティマッチングを制御する命令ストリームを作成するエンティティデータベースに実装される。
【特許請求の範囲】
【請求項1】
エンティティデータベースシステムであって、
文を命令のパイプラインに構文解析してレコード(イベント)のセットを読み取り、データストアを解決し、正規化し、持続させるように構成されたデータ操作言語(DML)パーサと、
前記エンティティデータベース内のエンティティについてのクエリを実施するように構成されたクエリパーサであって、各クエリは、エンティティ形質を備える少なくとも1つの宣言的命令を備えるクエリパーサと、
前記DMLパーサから命令を受信し、前記クエリパーサからクエリを受信し、少なくとも1つのマッチしたエンティティを返すように構成されたエンティティ解決エンジンであって、前記エンティティ解決は、
前記DMLパーサまたは前記クエリパーサにおいて受信されたレコードから形質を抽出し、前記レコードから少なくとも1つのエンティティ形質を抽出するように構成された形質抽出部
を備えるエンティティ解決エンジンと
を備える、エンティティデータベースシステム。
【請求項2】
前記エンティティ解決エンジンが、2つのアイデンティティがマッチする場合、前記2つのアイデンティティを単一のブロックにグループ化するように構成された近傍生成部をさらに備える、請求項1に記載のエンティティデータベース。
【請求項3】
前記近傍生成部が、各ブロックのサイズを指定された閾値に制限するようにさらに構成される、請求項2に記載のエンティティデータベース。
【請求項4】
前記エンティティ解決エンジンが、マッチがマッチ閾値を超える確率に基づいて、各エンティティについての少なくとも1つの特定の形質をマッチさせ、少なくとも1つのマッチしたペアを返すように構成されたペアワイズマッチサブルーチンをさらに備える、請求項2に記載のエンティティデータベース。
【請求項5】
前記ペアワイズマッチサブルーチンが、前記ブロック内のアイデンティティのペアに関する少なくとも1つの予め構築された人工知能(AI)ベースのモデルおよびビジネスルールのセットを備える、請求項4に記載のエンティティデータベース。
【請求項6】
前記少なくとも1つの予め構築されたAIベースのモデルの各々が、特定のタイプの現実世界のエンティティのために構築される、請求項5に記載のエンティティデータベース。
【請求項7】
前記エンティティ解決エンジンが、前記ペアワイズマッチサブルーチンから返された各マッチしたペアに対して推移閉包を実施し、エンティティクラスタを返すように構成された推移閉包サブルーチンをさらに備える、請求項4に記載のエンティティデータベース。
【請求項8】
前記エンティティ解決エンジンは、前記エンティティクラスタが少なくとも1つの競合を含む場合、前記推移閉包サブルーチンから前記エンティティクラスタを分割するように構成されたクラスタ分割サブルーチンをさらに備える、請求項7に記載のエンティティデータベース。
【請求項9】
前記クラスタ分割サブルーチンが、前記エンティティクラスタの各々を分割すべきかどうかを決定するために、2つの異なる主幹アルゴリズムを前記エンティティクラスタに適用するように構成される、請求項8に記載のエンティティデータベース。
【請求項10】
前記エンティティ解決エンジンが、分割が発生していない限り以前のID割り当てで割り当てられたIDを保存し、分割が発生して新しいIDを割り当てなければならない場合にID割り当ての変更を最小限に抑えるように構成された安定識別子(ID)割り当てサブルーチンをさらに備える、請求項8に記載のエンティティデータベース。
【請求項11】
前記エンティティ解決エンジンによって解決されたエンティティに関するメタデータを受信および記憶するように構成された解決辞書をさらに備える、請求項10に記載のエンティティデータベース。
【請求項12】
前記エンティティ解決エンジンから前記解決されたエンティティおよび関連識別子のすべてを受信および記憶するように構成されたスタンプされたエンティティストアをさらに備える、請求項11に記載のエンティティデータベース。
【請求項13】
前記エンティティ解決エンジンからレコードおよび関連識別子を受信および記憶するように構成されたスタンプされたレコードストアをさらに備える、請求項12に記載のエンティティデータベース。
【請求項14】
前記エンティティ解決エンジンから複数のブロッキングキーおよび各ブロックへの参照を受信および記憶するように構成されたブロッキングインデックスストアをさらに備える、請求項13に記載のエンティティデータベース。
【請求項15】
エンティティデータベースを動作させるための方法であって、
データ操作言語(DML)パーサにおける少なくとも1つのデータ操作言語(DML)文を命令のパイプラインに構文解析してレコード(イベント)のセットを読み取り、データストアを解決し、正規化し、持続させるステップと、
前記命令のパイプラインから少なくとも1つの形質を抽出するステップと、
前記エンティティデータベース内のエンティティの中からの近傍をグループ化するステップであって、前記グループは、前記近傍がマッチする場合に単一のブロックに形成されるステップと、
マッチがマッチ閾値を超える確率に基づいて、各グループ化されたエンティティからの少なくとも1つの形質をペアワイズマッチングするステップと、
各グループ化されたエンティティに対して推移閉包を実施し、少なくとも1つのエンティティクラスタを形成するステップと、
各エンティティクラスタが競合を含む場合、そのようなエンティティクラスタに対してクラスタ分割を実施するステップと、
安定識別子(ID)を各エンティティクラスタに適用するステップと
を含む、エンティティデータベースを動作させるための方法。
【請求項16】
近傍をグループ化する前記ステップが、各単一のブロックのサイズを指定された閾値に制限する、請求項15に記載のエンティティデータベースを動作させるための方法。
【請求項17】
ペアワイズマッチングは、前記ブロック内のアイデンティティのペアに対して複数の予め構築された人工知能(AI)ベースのモデルを利用し、各予め構築されたAIベースのモデルが、異なるタイプの現実世界のエンティティのために構築される、請求項15に記載のエンティティデータベースを動作させる方法。
【請求項18】
クラスタ分割を実施する前記ステップが、2つの異なる主幹アルゴリズムを前記エンティティクラスタに適用する、請求項15に記載のエンティティデータベースを動作させるための方法。
【請求項19】
スタンプされたエンティティストアに解決されたエンティティおよび関連識別子のすべてを記憶するステップをさらに含む、請求項15に記載のエンティティデータベースを動作させるための方法。
【請求項20】
スタンプされたレコードストアにレコードおよび関連識別子を記憶するステップをさらに含む、請求項19に記載のエンティティデータベースを動作させるための方法。
【発明の詳細な説明】
【背景技術】
【0001】
エンティティは、記述的形質の特定のセットを有する固有の実体であり得る。例えば、小売ビジネスにおいては、個々の顧客(人物)および家庭が各々エンティティである。保険ビジネスにおいて、顧客、代理店、および製品は、エンティティのいくつかの例である。同様に、ヘルスケア産業において、患者、提供者、およびヘルスケア施設は、エンティティのいくつかの例である。
【0002】
エンティティは、複数の形質によって記述することもできる。例えば、人物エンティティは、名前、住所、電子メールアドレス、電話番号、およびクレジットカード番号などの形質によって表すことができる。個々の形質自体が、異なる値を有し得る。例えば、ある人物は2つの名前を有することができ、1つは結婚前、もう1つは結婚後である。また、人物の住所は、複数の値を有してもよい。形質値のいくつかは、時間と共に変化する可能性があり、例えば電話番号形質は、人物にとって時間と共に変化する場合があり、特定の時間までしか有効でない可能性がある。これらのバリエーション(複数の形質および形質についての複数の値)を考えると、人物エンティティは、いくつかの有効な表現を有することができる。同様に、ビジネスエンティティは、いくつかの住所および電話番号を有することができ、または様々な名前で知られることができる。
【0003】
ビジネスにおいては、様々な理由で、複数のソースまたはシステムから収集されたレコードのセットからエンティティを一意に識別し(解決としても知られる)、正規化し(すなわち、フォーマットを標準化し、最良値を選択する)、持続し(すなわち、無期限に保存する)、クエリする必要があり得る。
【0004】
現在のデータベース技術(例えば、リレーショナルデータベース、文書指向データベース、およびキーバリューペアデータベース)は、エンティティ識別、正規化、持続、およびクエリの概念をサポートしていない。したがって、企業がエンティティを解決し、正規化し、持続させ、クエリするのを助けるために使用することができる新しいタイプのエンティティ指向データベースの改善が望まれている。宣言的言語を使用してこれを達成することもまた、望ましい。
【発明の概要】
【0005】
特定の実施形態におけるエンティティデータベースシステムは、レコードのセットからエンティティを効率的に解決し、新しいレコードを受信したときに解決を更新するコンポーネント、形質値を正規化して様々なエンティティ表現をサポートするコンポーネント、エンティティを持続させるコンポーネント、エンティティをクエリするコンポーネント、およびユーザが解決、正規化、またはクエリのためにエンティティデータベースシステムと対話するための手段を提供する宣言的言語から構成され得る。
【0006】
特定の実施形態では、解決エンジンコンポーネントは、入力データストリーム上でリアルタイムリンクを使用するリアルタイム処理層と、バッチデータソースストリームからのエンティティをリンクする高スループット層とを含むことができる。これらの2つの層は、エンティティ解決を実施する。次いで、解決されたエンティティは、正規化エンジンコンポーネントによって正規化される。
【0007】
特定の実施形態では、リアルタイムのリンク結果は、状態変更ストア(state change store)に保持され、高スループットのリンク結果は、状態ストアに保持される。オンデマンドリンクが、状態変更ストアおよび状態ストアを使用する。
【0008】
特定の実施形態では、ラムダスイッチが、オンデマンドリンクがより古い世代の状態ストアおよびステージ変更ストアからより新しい世代の状態ストアおよび状態変更ストアに切り替わるとき、エンティティ状態が一貫したままであることを保証する。これらのストアは、クエリを命令に構文解析し、エンティティマッチングを制御する命令ストリームを作成するエンティティデータベースに実装される。
【0009】
特定の実施形態では、エンティティデータベースは、エンティティ解決エンジンに供給を行うDMLおよびクエリパーサを含む。エンティティ解決エンジンは、入来するレコードまたは命令から形質を抽出し、近傍生成を実施して同様または同一のエンティティを接続し、ペアワイズマッチングを実施してエンティティ関係をさらに定義し、推移閉包を実施して同じエンティティに関係し得るクラスタを形成し、過マッチしたクラスタを分割し、次いで安定ID割り当てシステムを使用して新たに受信した情報に基づく識別子の再割り当てを最小限に抑える。
【図面の簡単な説明】
【0010】
【
図1A】いくつかの実施形態による、エンティティに対するマッチングプラットフォームを実装するための例示的なシステムを示す図である。
【
図1B】いくつかの実施形態による、エンティティに対するマッチングプラットフォームを実装するための例示的なプロセスを示す図である。
【
図1C】全体的なエンティティデータベースシステムを示す図である。
【
図2】いくつかの実施形態による、エンティティに対するマッチングプラットフォームにおいて高スループットリンクを実装するための例示的なプロセスを示す図である。
【
図3】いくつかの実施形態による、近傍プロセスの例示的な概略図である。
【
図4】いくつかの実施形態による、ペアワイズマッチングプロセスの概略図の一例を示す図である。
【
図5】いくつかの実施形態による、推移閉包プロセスの例示的な概略図である。
【
図6】いくつかの実施形態による、クラスタ分割についての例示的な概略図である。
【
図7】いくつかの実施形態による、安定識別子(ID)割り当てを示す例示的な概略図である。
【
図8】いくつかの実施形態による、リアルタイム/オンデマンドリンク(RTL)についての例示的なプロセスを示す図である。
【
図9】いくつかの実施形態による、本明細書で使用するための例示的なデータ管理プロセスを示す図である。
【
図10】いくつかの実施形態による、複合プロファイル作成の例示的な概略図である。
【
図11】いくつかの実施形態による、複合プロファイル作成のための例示的なプロセスを示す図である。
【
図12】いくつかの実施形態による、例示的なエンティティデータベースアーキテクチャを示す図である。
【
図13】いくつかの実施形態による、例示的なDML文法を示す図である。
【
図14】いくつかの実施形態による、例示的なクエリ文文法を示す図である。
【
図15】いくつかの実施形態による、エンティティ解決エンジンのコンポーネントの例示的なセットを示す図である。
【
図16】様々な実施形態を実装するために利用することができるサンプルコンピューティング環境のブロック図である。
【発明を実施するための形態】
【0011】
上述の図は、代表的なセットであり、本発明を具現化することに関して網羅的ではない。
【0012】
エンティティのためのマッチングプラットフォームのシステム、方法、および物品が開示される。以下の説明は、当業者が様々な実施形態を作製および使用することを可能にするために提示される。具体的なデバイス、技法、および用途の説明は、例としてのみ提供される。本明細書に記載された例に対する様々な修正は、当業者に容易に明らかであり得、本明細書で定義された一般的な原理は、様々な実施形態の精神および範囲から逸脱することなく、他の例および用途に適用され得る。
【0013】
本明細書全体を通した「一実施形態」、「実施形態」、「一例」、または同様の言語への参照は、その実施形態に関連して記載される特定の特徴、構造、または特性が少なくとも1つの実施形態に、またはいくつかの実施形態に従って含まれることを意味する。したがって、本明細書全体を通して「一実施形態では」、「実施形態では」、および同様の言語の句の出現は、必ずしもそうとは限らないが、すべてが同じ実施形態を参照してもよい。
【0014】
さらに、本発明の記載された特徴、構造、または特性は、1つまたは複数の実施形態において任意の適切な方式で組み合わせることができる。以下の説明では、本発明の実施形態の完全な理解を提供するために、プログラミング、ソフトウェアモジュール、ユーザ選択、ネットワークトランザクション、データベースクエリ、データベース構造、ハードウェアモジュール、ハードウェア回路、ハードウェアチップなどの例など、多数の具体的な詳細が提供される。しかし、当業者は、本発明が具体的な詳細のうちの1つまたは複数を用いずに、または他の方法、コンポーネント、材料などを用いて実践され得ることを認識することができる。他の例では、本発明の態様を不明瞭にすることを避けるために、周知の構造、材料、または動作は詳細に図示または説明されていない。
【0015】
本明細書に含まれる概略フローチャート図は、一般に、論理フローチャート図として記載されている。したがって、図示された順序およびラベル付けされたステップは、提示された方法の一実施形態を示す。機能、論理、または効果において、図示された方法の1つまたは複数のステップまたはその一部と同等である他のステップおよび方法が考えられ得る。加えて、用いられるフォーマットおよび記号は、方法の論理ステップを説明するために提供され、方法の範囲を限定するものではないと理解される。様々な矢印タイプおよび線タイプをフローチャート図では用いることができるが、それらは対応する方法の範囲を限定するものではないと理解される。実際、いくつかの矢印または他のコネクタを使用して、方法の論理フローのみを示すことができる。例えば、矢印は、図示された方法の列挙されたステップ間の不特定の期間の待機または監視期間を示すことができる。加えて、特定の方法が行われる順序は、示されている対応するステップの順序に厳密に準拠してもしなくてもよい。
【0016】
定義
いくつかの実施形態のための例示的な定義が、ここで提供される。
【0017】
アプリケーションプログラミングインターフェース(API)は、第三者がソフトウェアアプリケーションの機能を拡張することを可能にするための特定用途向けコンピューティングインターフェースとすることができる。
【0018】
トランスフォーマからの双方向エンコーダ表現(BERT)は、自然言語処理(NLP)事前訓練のためのトランスフォーマベースの機械学習技法である。
【0019】
クラウドコンピューティングは、エンドユーザによる直接的な能動的管理なしに、コンピュータシステムリソース、特にデータストレージおよびコンピューティング能力のオンデマンド可用性であり得る。
【0020】
相関クラスタリングは、予めその数を指定することなく、物体のセットを最適な数のクラスタにクラスタリングするための方法を提供する。
【0021】
データ操作言語(DML)は、コンピュータプログラムまたはデータベースユーザがデータベース内のデータを検索、挿入、削除、および更新するために使用するコンピュータ言語のファミリである。
【0022】
エンティティは、例えば、人物、会社、製品、部品などの現実世界の人工物を指す。例えば、人物は、顧客、患者、ユーザなどのような異なる形態をとることができる。同様に、会社は、例えば、商業者、供給者、サービスの提供者などであり得るビジネスエンティティとすることができる。
【0023】
エンティティ問い合わせ言語(EQL)は、SQLと同様の構文に従うストレージ非依存の問い合わせ言語である。EQLは、ユーザがエンティティ(例えば、顧客)に対して実施され得る演算を記述することを可能にする。これらの演算は、例えば、集約、和集合、交点、および最良値計算を含む。EQLが構文解析され、コードに変換される。その後、コードがエンティティデータに対して実行され、結果を計算する。例えば、小売会社の顧客は、名前、住所(1つまたは複数)、電子メール、電話番号、ショッピング場所、ウェブサイトクッキー、ウェブサイトアクティビティなどによって定義することができる。
【0024】
高スループットリンクは、現実世界のエンティティに対応するレコードのクラスタを作成するソフトウェアモジュールを使用することができる。ソフトウェアモジュールは、1回のバッチでディスクに記憶された大量のデータ(例えば、数百テラバイトの範囲内)を処理することができる。特定の例では、数時間ごとに実行するように構成することができる。
【0025】
エンティティの属性を識別することは、現実世界のエンティティを識別するための寄与因子として作用する属性である。
【0026】
リンクは、同じ現実世界のエンティティに属するレコードを識別するタスクを含むことができる。リンクは、現実世界のエンティティに属するレコードのクラスタを作成する。
【0027】
機械学習(ML)は、明示的にプログラムされることなく学習する能力をコンピュータに提供する人工知能(AI)の一種である。機械学習は、新しいデータにさらされたときに成長および変化することを自らに教えることができるコンピュータプログラムの開発に焦点を合わせている。本明細書で使用することができる例示的な機械学習技法は、とりわけ、決定木学習、相関ルール学習、人工ニューラルネットワーク、誘導論理プログラミング、サポートベクターマシン、クラスタリング、ベイジアンネットワーク、強化学習、表現学習、類似性およびメトリック学習、ならびに/またはスパース辞書学習を含む。ランダムフォレスト(RF)(例えば、ランダムデシジョンフォレスト)は、訓練時間に多数の決定木を構築し、個々の木のクラス(例えば、分類)または平均予測(例えば、回帰)のモードであるクラスを出力することによって動作する、分類、回帰、および他のタスクのためのアンサンブル学習方法である。RFは、それらの訓練セットに過剰適合する決定木の習慣を修正することができる。深層学習は、学習データ表現に基づく機械学習方法のファミリである。学習は、教師あり、半教師あり、または教師なしであり得る。
【0028】
最尤推定(MLE)は、尤度関数を最大化することによって確率分布のパラメータを推定する方法であり、仮定された統計モデルの下では、観測されたデータが最も確からしい。尤度関数を最大化するパラメータ空間内の点は、最尤推定値と呼ばれる。
【0029】
近傍は、同じ現実世界のエンティティに属する可能性が高いエンティティのユニバースから選択されたエンティティのグループである。
【0030】
オンデマンドリンクは、外部ソフトウェアアプリケーションによって呼び出されることができるAPIを提供するソフトウェアモジュールを使用することができる。外部ソフトウェアアプリケーションは、リンクさせたいレコードでAPIを呼び出すことができる。
【0031】
リアルタイムリンクは、現実世界のエンティティに属するレコードのクラスタを作成するソフトウェアモジュールを使用することができる。このソフトウェアモジュールは、マイクロバッチ間隔(例えば、1分未満)でデータストリームからデータを連続的に消費し、データストリームに到達したときにデータのマイクロバッチを処理することができる。高スループットリンクは大量のデータを処理することを意味することができるが、リアルタイムリンクは迅速に小さなデータを処理することを意味することができる(例えば、1分未満程度)。
【0032】
構造化問い合わせ言語(SQL)は、リレーショナルデータベース管理システムで保持されるデータを管理するため、またはリレーショナルデータストリーム管理システムでのストリーム処理のために設計されたドメイン固有のコンピュータプログラミング言語である。
【0033】
転移学習(TL)は、機械学習(ML)を使用して、1つの問題を解決し、それを異なるが関連する問題に適用しながら得られた知識を記憶することに焦点を合わせている。
【0034】
集合X上の二項関係Rの推移閉包は、Rを含み、推移的であるX上の最小関係である。
【0035】
例示的な方法およびシステム
図1Cに示すように、全体的なエンティティデータベースシステムは、以下のコンポーネントから構成される。解決コンポーネント/エンジン150が、レコードのセット160からエンティティを効率的に解決し、新しいレコードを受信すると解決を更新する。正規化コンポーネント/エンジン152が、様々なエンティティ表現をサポートするために形質値を正規化する。持続性コンポーネント154が、エンティティを持続させる。クエリコンポーネント/エンジン156が、エンティティをクエリする。解決コンポーネント/エンジン150、正規化コンポーネント/エンジン152、およびクエリコンポーネント/エンジン156と統合された宣言的言語をサポートするためのパーサが、解決、正規化、またはクエリのためにエンティティデータベースシステムと対話する手段をユーザに提供する。
【0036】
図1Aは、いくつかの実施形態による、エンティティデータベースシステムを実装するための例示的なシステム100を示している。エンティティは、例えば、人物、会社、製品、部品などに関する顧客データを含むことができることに留意されたい。システム100は、同じ現実世界のエンティティに属するレコードを識別し(例えば、リンクプロセスなど)、エンティティの正規化、持続、およびクエリを実施するタスクに使用することができる。
【0037】
図示のように、システム100は、その出力を状態ストア108に記憶する高スループットリンク104および正規化105を含む。これは、高スループット層120で実施することができる。高スループット層120は、マシンのクラスタ(例えば、コンピュータハードウェアおよび/またはソフトウェアシステム)を使用して大量のデータ(例えば、数百テラバイト)を処理することができるソフトウェアモジュールとすることができる。このマシンのクラスタは、従来のローカルコンピューティング環境またはクラウドベースの仮想コンピューティング環境で動作することが可能である。
【0038】
システム100は、その出力を状態変更ストア106に記憶するリアルタイムリンク102および正規化103を含む。これは、リアルタイム層118で実施することができる。
【0039】
システム100は、状態ストア108およびステージ変更ストア106から読み取りを行うエンティティクエリエンジン109を含む。
【0040】
いくつかの例示的な実施形態では、層は、明確に定義されたタスクのセットを実施するソフトウェアモジュールとすることができることに留意されたい。層は、他のモジュールがそれを通じて対話することができるインターフェースおよびAPIのリストを定義することができる。
【0041】
バッチデータソース126は、ストレージディスク上に大量のデータを記憶するデータストレージからのものとすることができる。イベントストリーム124(例えば、リアルタイムデータソースおよび/またはストリーミングデータソース)が、レコードの連続ストリームとして配信されるデータを含む。
【0042】
高スループット層120は、マシンのクラスタ(例えば、コンピュータハードウェアおよび/またはソフトウェアシステム)を使用して大量のデータ(例えば、数百テラバイト)を処理することができるソフトウェアモジュールとすることができる。高スループット層120は、バッチデータソースからデータを読み取ることができ、通常数時間ごとまたは数日ごとに規定の間隔でリンクおよび正規化を実施する。入力データサイズによっては、処理に数時間から数日かかる場合がある。
【0043】
リアルタイム層118は、イベントストリームからデータを読み取り、数秒ごとにリンクおよび正規化を実施するソフトウェアモジュールとすることができる。このプロセスは、通常、数秒未満である。
【0044】
エンティティクエリエンジン109は、外部アプリケーションからのユーザクエリに応答してクエリを実施するソフトウェアモジュールとすることができる。クエリに基づいて、クエリエンジン109は、状態ストア108と状態変更ストア106の両方を読み取り、マッチングを実施し、マッチした結果を返す。
【0045】
システム100はまた、アプリケーション構成層(図示せず)と対話することもできる。いくつかの例では、アプリケーション構成層は、高スループット層120がバッチで大量のデータを処理するとき、高スループット層120の構成/挙動を変更するために使用されるソフトウェアモジュールとすることができる。バッチ間隔は、数時間、1日など様々な場合がある。これは、データ処理層の上のカスタマイズであり得る。
【0046】
ラムダスイッチ128が、古い世代の状態から新しい世代に切り替わるときにエンティティの状態が一貫したままであることを保証する。ラムダスイッチ128は、オンデマンドリンクがサービングをより古い世代の状態ストア106および状態変更ストア106から新しい世代の状態ストア108および状態変更ストア106に切り替えるとき、エンティティの状態のセットが一貫したままであることを保証するように構成される。ラムダスイッチ128は、クエリエンジン層109がダウンタイムなしにクエリを継続することを可能にする。ラムダスイッチ128は、リアルタイム層118と高スループット層120の両方がシームレスに動作し続けることを保証する機能を提供する。したがって、ラムダスイッチ128は、膨大な量のデータを処理する能力、ならびにリアルタイムデータを処理しながらレイテンシを低減する能力を提供する。
【0047】
システム100は、高スループットリンク104とリアルタイムリンク102の両方を実施する。いくつかの例では、高スループット層120は、数時間ごとにデータの大きなバッチのリンクを実施し、リアルタイムリンク102は、ストリームが受信されるとデータストリームに対してリンクを実施する。高スループット104のリンクは、リンクの精度および包括性を保証する。リアルタイムリンク102は、ストリームデータのレイテンシを最小限に抑える。システム100は、これらの2つの層(すなわち、高スループット104およびリアルタイムリンク102)を組み合わせ、精度、包括性、および低レイテンシの利点を提供する。ラムダスイッチ128は、これらの2つの層にわたってデータが一貫したままであることを保証するソフトウェアモジュールとすることができる。
【0048】
システム100のエンティティマッチングを使用して、例えば、属性のあいまいさ(例えば、同じ名前は異なる個人を指す場合がある)、欠損値(例えば、電子メール、住所の欠落)、データ入力エラー(例えば、誤って綴られた名前、余分な数字)、属性の変更(例えば、名前変更、住所変更)、多関係(例えば、家族関係)などを解決することが可能である。システム100を使用して、現実世界のエンティティのすべてのバリエーションをまとめることができる。したがって、エンティティ(例えば、人物、商業者などの任意のタイプの現実世界のエンティティ)は、システム100を使用してマッチさせることができる。
【0049】
リンクプロセスは、異なるマッチングルールを使用して繰り返し、マッチしたエンティティの異なるバリエーションを生成するか、または異なるタイプのエンティティをマッチさせることができることに留意されたい。リンクプロセスはまた、エンティティ間の関係を生成するために使用することもできる。これらの関係は、階層的または連想的であり得る。例えば、リンクは、親とその子会社との間の従属関係を解決することができる。
【0050】
図1Bは、いくつかの実施形態による、エンティティに対するマッチングプラットフォームを実装するための例示的なプロセス130を示している。ステップ1において、高スループットリンク104は、時間t0においてバッチデータソースからデータを読み取る。高スループットリンク104は、リンクを実施し、状態ストア108に出力を保存する。状態ストア108は、時間t0におけるすべてのエンティティの状態を記憶する。この出力は、状態 世代0とラベル付けすることができる。プロセス130は、現在の状態ストア108としてこれをマークすることができる。
【0051】
ステップ2において、リアルタイムリンク102が連続プロセスとして実装される。一例では、リアルタイムリンク102は、数秒ごとにイベントストリームからデータを読み取る(例えば、マイクロバッチで)。代替の実施形態では、イベントストリームが読み取られる時間は、変更されてもよい。リアルタイムリンク102は、状態ストアからデータを読み取ってリンクを実施し、影響を受けるエンティティの状態に対して変更を適用し、ステージ変更ストア106に結果を保存する。リアルタイムリンク102の出力は、エンティティの最新の状態を表す。
【0052】
ステップ3において、外部アプリケーションがAPI114を呼び出してエンティティに関するクエリを実施すると、API114は、エンティティクエリエンジン109を呼び出す。エンティティクエリエンジン109は、状態ストア108(例えば、世代0を含む)と状態変更ストア106の両方を読み取る。読み取られた内容に基づいて、エンティティクエリエンジン109は、リンクを実施し、結果を返す。
【0053】
ステップ4において、時間t1(例えば、t0の数時間後または数日後であり得る)では、高スループットリンク104が実行される。この時点で、プロセス100は、時間t1におけるバッチデータソースおよびイベントシンク116を読み取る。この実行により、世代1としてマークされた新しい状態ストアが得られる。この状態ストアの生成は、時間t1においてバッチソースとリアルタイムソースの両方から受信したデータを使用して構築されたすべてのエンティティの状態を含む。
【0054】
ステップ5において、時間t1+t+xでは、ラムダスイッチ128は、世代0の状態ストア108を無効化し、状態変更ストアを調整し、世代1を現在の状態ストアにする。切り替え後、オンデマンドリンク110は、世代1の状態ストアに切り替えて任意のクエリを提供する。ラムダスイッチ128は、ここでは2つの目的を果たすことができる。第1に、ラムダスイッチ128は、世代0から世代1(例えば、次世代)への切り替えがエンティティの状態を矛盾させないことを保証する。第2に、ラムダスイッチ128は、オンデマンドリンク110にダウンタイムがないことを保証する(例えば、オンデマンドリンク110は、外部アプリケーションの提供を継続することができる)。
【0055】
図2は、いくつかの実施形態による、エンティティに対するマッチングプラットフォームにおいて高スループットリンクを実装するための例示的なプロセス200を示している。プロセス200は、リンクプロセスのために実装される様々なステップを示している。高スループットリンクは、精度などに合わせて調節することができる。近傍生成ステップ202において、プロセス200は、近傍生成を実装することができる。ペアワイズマッチングを、各クラスタ内で実装することができる。これにより、マッチングプロセスにおいて比較を行うために必要な反復回数を減らすことが可能である。ステップ202は、マッチする可能性が高いアイデンティティを生成する。
【0056】
ステップ202は、2つのアイデンティティがマッチする場合、それらが単一のブロック(例えば、以下に提供される近傍304のグループのブロック)に含まれるように十分なグループを生成することができる。加えて、ステップ202は、前記ブロックが大きすぎない(例えば、指定された閾値を超えない)ことを保証することが可能である。ステップ202は、アイデンティティのブロックのセットを返すことができる。
【0057】
図3は、いくつかの実施形態による、近傍プロセス300の例示的な概略図を示している。これは、ステップ202によって実装することが可能である。ステップ202は、マッチする可能性が高いエンティティE1~E8 302からのアイデンティティの近傍304のグループを生成することができる。ステップ202は、可能性の高いマッチを生成し、真陽性が少なくとも近傍グループのうちの1つに入ることを高い確率で保証する。
【0058】
カスタム機能をプラグインし、近傍を生成することができる。例えば、ステップ202は、各イベント上でキーのセットを生成し、キーによってそれらをグループ化することができる。
【0059】
生成されたキーは、以下とすることができる:
nnf(e1)={k11,k12,k13,…k1m}
nnf(e2)={k21,k22,k23,…k2m}
...
【0060】
キーごとのグループは、以下とすることができる:
k11→{e1,e6,e7,…}
...
【0061】
図2に戻ると、ステップ204において、プロセス200は、ペアワイズマッチングを実装することができる。ステップ204は、ブロック内のアイデンティティのペアに対して予め構築されたAIベースのモデルおよびビジネスルールのセットを使用する。このようにして、ステップ204は、ペアがマッチするかどうかを推測することができる。カスタムモデルは、プラグインすることができる。ステップ204は、すべてのマッチしたペアを返す。各AIベースのモデルは、特定のタイプの現実世界のエンティティのために構築することが可能である。例えば、AIベースのモデルは、マッチの確率に基づいて、住所、名前、特定の挙動などを顧客IDにマッチさせることができる。AIベースのモデルは、例えば、ランダムフォレスト分類器、人工ニューラルネットワーク、および/またはBERT符号化を使用する。これらのモデルは、ペアアイデンティティで訓練することができる。訓練中、モデルは、正または負のいずれかのマッチを予測することができるペア間の差を区別することを学習することが可能である。
【0062】
図4は、いくつかの実施形態による、ペアワイズマッチングの概略図の一例を示している。ステップ204は、AIアーキテクチャに基づいて、予め構築されたマッチング関数を使用することができる。人物エンティティについての予め構築されたマッチング関数の例は、例えば、名前のマッチング、住所のマッチングなどを含んでもよい。ステップ204は、一対のアイデンティティが与えられた場合にマッチングの確率を返すマッチング関数を使用することができる。ステップ204は、カスタムビジネスマッチングルールおよび制約のプラグインを使用することができる。ステップ204は、予め訓練されたモデル(例えば、転移学習)を再訓練し、かつ/またはエンティティ解決(ER)ワークベンチを使用してカスタムモデルを構築してもよい。ERワークベンチは、ペアワイズマッチングを実施するためのAIモデルの適用である。
図4に示すように、ステップ204は、エンティティを各近傍グループ(例えば、近傍304のグループ)と比較し、マッチしたペアのセットにおけるマッチの確率を生成することができる:
mf(e
i,e
j)=マッチの確率
(mf(e
i,e
j))>閾値である場合、マッチする。
【0063】
プロセス200の説明に戻ると、ステップ206において、プロセス200は、推移閉包を実装することができる。ステップ206は、マッチしたペアに対して推移閉包を実施することができる(例えば、上述のペアワイズマッチングを使用して)。ステップ206は、分散接続コンポーネントアルゴリズムを使用して、特定の実施形態では、数億のペアにスケーリングする。ステップ206は、マッチしたペアの推移閉包を返す。
【0064】
図5は、いくつかの実施形態による、推移閉包プロセスの例示的な概略
図500を示している。図示のように、ステップ206は、マッチしたアイデンティティのペアの各々に対して推移閉包を適用し、クラスタを作成することができる。図示の例では、e1とe2との間のマッチ、e2とe3との間のマッチ、およびe3とe4との間のマッチが存在する。したがって、e1、e2、e3、およびe4は、推移関係のためにすべて同じクラスタに割り当てられる。
【0065】
ステップ208において、プロセス200は、クラスタ分割(例えば、相関クラスタリング)を実装することができる。推移閉包は、不完全なクラスタをもたらす可能性がある(例えば、競合を含む)。マッチするエンティティのペアに対する推移閉包は、競合を含むエンティティのクラスタを作成することができる。ステップ208は、競合を解決するために、2つの異なる主幹アルゴリズム(two-disagreeing captain algorithm)(例えば、以下を参照されたい)を適用してクラスタを分割することが可能である。ステップ208は、マッチしたアイデンティティを含むクラスタを返すことができる。
【0066】
図6は、いくつかの実施形態による、クラスタ分割についての例示的な概略
図600を示している。概略
図600は、ステップ208を実装するために使用することができる。この例では、ステップ208は、2つの異なる主幹アルゴリズムを使用することによってクラスタを分割するための制約を適用する。2つの異なる主幹アルゴリズムは、2つの主幹を選択する。各主幹は、2つのクラスタのクラスタを表す。2つの異なる主幹アルゴリズムは、元のクラスタ内の他のメンバーを主幹の各々に貪欲に割り当てる。次いで、2つの結果として得られるクラスタのMLEを計算する。結果として得られる分割が確率を最大化すると、分割が実装される。このプロセスは、分割が確率を最大化しなくなるまで分割ごとに繰り返される。
【0067】
図2の説明に戻ると、ステップ210において、プロセス200は、安定ID割り当てを実装することができる。マッチしたクラスタには、「安定ID」が割り当てられる。安定IDは、以前のID割り当てで割り当てられたIDを保存する。ID分割の場合、ステップ210は、ID割り当ての変更を最小限に抑える。ステップ210は、安定IDを有するクラスタを返す。
【0068】
図7は、いくつかの実施形態による、安定識別子(ID)割り当てを示す例示的な概略
図700を示している。概略
図700は、ステップ210を実装するために使用することができる。図示のように、マッチしたクラスタには、安定IDが割り当てられる。
【0069】
IDを選択すべきカスタムルールは、プラグインすることができる。ステップ210は、安定IDを有するクラスタを返すことができる。ID割り当てのためのカスタムルールを使用して、IDが分割されるとき、またはIDが1つにマージされるとき、どの以前のIDを選択するかを決定することができる。例えば、IDマージまたはID分割のためのカスタムルールは、最大のクラスタのIDを保存してもよい。
【0070】
図7の例では、2つの実行AおよびBが実施される。これらの2つの実行の間、e4を含む実行Aのクラスタは、もはや実行Bのe4を含まないことが分かる。加えて、e8およびe9が、実行Bにおいて新たに見出される。その場合、問題は、実行Bで見られる変更に基づいてIDをどのように割り当てるかである。この例では、e4のみが変更されたため、実行Aの第1のクラスタからのID1は依然として実行Bの第1のクラスタに属しているはずである。同様に、ID2は、e9が実行Bにおいて追加されたとしても、第2のクラスタと共に残る。e4およびe8を含む新しいクラスタには、新しいID3が割り当てられる。
【0071】
図8は、いくつかの実施形態による、リアルタイム/オンデマンドリンク(RTL)についての例示的なプロセス800を示している。高スループットマッチングとは異なり、プロセス800は、マッチングの二次(または三次効果)を考慮しなくてもよい。マッチングの二次的影響は、マッチングが以前に実施された他のマッチングに影響を及ぼし得る場合である。ステップ802において、プロセス800は、近傍探索を実装することができる。ステップ802は、リンクを実施するためにイベントストリームデータおよび/または同期/非同期要求を受信して利用することができる。ステップ804において、プロセス800は、ペアワイズマッチングを実装することができる。ステップ806において、プロセス800は、安定IDを使用するか、または新しいIDを作成することができる。
【0072】
プロセス800は、低レイテンシコンテキスト(例えば、ミリ秒単位)でアイデンティティをリンクすることによってリアルタイムリンクを実装することができる。プロセス800は、いくつかの実施形態では、リアルタイムイベントのマッチの二次的影響を考慮しないが、マッチの正確さを保証することが可能である。ラムダスイッチの後、スイッチが高スループットリンクに供給されるまでに受信されたリアルタイムイベントがある場合、二次的影響および後続の影響を考慮することができる。
【0073】
図9は、いくつかの実施形態による、例示的なデータ管理プロセス900を示している。データ管理プロセス900を使用して、データ準備を最小限に抑えることができる。データ管理プロセス900は、データ動作管理モジュール902を使用することができる。データ動作管理モジュール902は、とりわけ、データ品質、データバックアウト管理、データワークフロー、分類管理、コンプライアンス、および可視性などのためのモジュールを含み得る。
【0074】
より具体的には、ステップ904において、プロセス900は、イベントストリームに対して低レイテンシ検証を実装することができる。ステップ906において、プロセス900は、低レイテンシ変換/富化(enrichment)を実装することができる。これにより、リアルタイムイベント912を生成することができる。
【0075】
ステップ908において、プロセス900は、高スループット検証を実装することができる。ステップ908の出力は、ステップ910に供給することが可能である。ステップ910において、プロセス900は、高スループット変換/富化を実装することができる。高スループット変換/富化は、リアルタイムイベント912と統合された出力を提供することが可能である。高スループット変換/富化はまた、品質メトリック914を生成することができる。
【0076】
データ管理プロセス900はまた、とりわけ、データ品質管理、データバックアップ管理、法令順守ワークフロー、コンプライアンス、および可視性プロトコルなどを実装することを可能にすることができる。
【0077】
図10は、いくつかの実施形態による、複合プロファイル作成の例示的な概略
図1000を示している。図示のように、SQL様エンティティ問い合わせ言語(EQL)を使用して、エンティティの様々な属性および/またはプロパティを計算することができる。エンティティのすべてのマッチした属性を、利用することが可能である。EQLは、エンティティ固有属性(例えば、MOST_FREQUENT、MONTHLY、LAST_ACTIVEなど)を計算するための豊富な予め定義された関数のセットを有することに留意されたい。加えて、機械学習(ML)推論関数は、通常の関数としてEQLで使用することができる。
【0078】
図11は、いくつかの実施形態による、複合プロファイル作成のための例示的なプロセス1100を示している。ステップ1102において、すべての計算がEQL形式で表される。ステップ1104において、プロセス1100は、すべての計算にわたる実行計画を実装することができる。ステップ1106において、プロセス1100は、各エンティティが計画を実行するのに適したメモリ内データ構造を作成することができる。ステップ1108において、プロセス1100は、関連する属性を計算することができる。
【0079】
エンティティデータベース管理システム
エンティティデータを扱い記憶するためのエンティティデータベース管理システムが提供される。エンティティデータベース管理システムは、従来のSQLデータベースなどのレコード指向データベースではなく、エンティティ指向データベースを利用する。エンティティデータベース管理システムは、企業がエンティティを解決、管理、およびクエリするのを助けるために使用することができる。エンティティデータベース管理システムは、エンティティ解決のためのシステム全体において上述したコンポーネントのスーパーセットを形成する。
【0080】
図12は、いくつかの実施形態による、エンティティデータベース1200の例示的なアーキテクチャを示している。エンティティデータベース1200は、エンティティデータベース管理システムで利用することができる。エンティティデータベース1200は、DMLパーサ1202を含むことができる。DMLパーサ1202は、データをエンティティデータベースにロードするために文を構文解析する。DML文は、エンティティを作成し、データをエンティティデータベース1200にロードするために使用される宣言的命令である。ロードには、エンティティの解決が必要である(例えば、以下を参照されたい)。DMLパーサ1202は、構文解析された文を命令のパイプラインに変換する。これらの命令はその後、実行のためにエンティティ解決エンジン1206に渡される。
【0081】
図13は、いくつかの実施形態による、例示的なDML文法1300を示している。DML文法は、エンティティデータベース1200の文を定義するために使用することができる。
【0082】
エンティティデータベース1200は、クエリパーサ1204を含むことができる。クエリパーサ1204は、クエリ文を構文解析し、エンティティに対するクエリを実施する。クエリ文は、エンティティ形質を含む宣言的命令である。次いで、エンティティ解決エンジン1206は、これらの命令を実行してマッチングを実施し、マッチしたエンティティを返す。
図14は、いくつかの実施形態による、例示的なクエリ文文法1400を示している。
【0083】
エンティティデータベース1200は、エンティティ解決エンジン1206を含むことができる。エンティティ解決エンジン1206は、エンティティの作成、クエリの解決、およびクエリの実施を担当する。
図15は、いくつかの実施形態による、エンティティ解決エンジン1206のコンポーネントの例示的なセットを示している。これは、解決パイプライン1502を含む。
【0084】
解決パイプライン1502は、形質抽出部1504を含む。形質抽出部1504は、各レコードから形質を抽出し、重複排除を実施し、すなわち、重複レコードが解決パイプライン1502に入るときに重複レコードを除去する。これらの処理は、上述したような近傍生成202、ペアワイズマッチング204、推移閉包206、クラスタ分割208、および安定ID割り当て210を通して進む。
【0085】
解決パイプライン1502は、DMLパーサ1202からのDML解決文を実行して解決を実施し、スタンプされたエンティティストア1512、スタンプされたレコードストア1514、およびブロッキングインデックス1510を取り込む。これらは、それら自体のデータベースストレージ領域または1つまたは複数の物理ストレージ領域の異なる領域に記憶される。解決パイプライン1502は、クエリ文を実行する。
【0086】
解決辞書1506が、解決されたエンティティおよび様々なメトリックに関するメタデータ情報を維持する。監査ログ1508が、解決およびクエリを含むすべての活動の監査を維持する。ブロッキングインデックス1510は、ブロッキングキーおよびすべてのブロックへの参照を維持する。スタンプされたエンティティストア1512は、解決されたエンティティおよび関連識別子のすべてを記憶する。スタンプされたエンティティストア1512はまた、識別子履歴、識別子マージ、および識別子分割を含む識別子の系統も維持する。スタンプされたレコードストア1514は、すべてのレコードおよびそれらの関連識別子を記憶する。
【0087】
例示的なコンピュータアーキテクチャおよびシステム
図16は、本明細書で提供されるプロセスのいずれかを実施するように構成することができる例示的なコンピューティングシステム1600を図示する。これに関連して、コンピューティングシステム1600は、例えば、プロセッサ、メモリ、ストレージ、およびI/Oデバイス(例えば、モニタ、キーボード、ディスクドライブ、インターネット接続など)を含むことができる。しかし、コンピューティングシステム1600は、プロセスのいくつかまたはすべての態様を実行するための回路または他の専用ハードウェアを含んでもよい。いくつかの動作設定では、コンピューティングシステム1600は、1つまたは複数のユニットを含むシステムとして構成されてもよく、その各々がソフトウェア、ハードウェア、またはそれらの何らかの組み合わせのいずれかでプロセスのいくつかの態様を実行するように構成される。
【0088】
メインシステム1602は、I/Oセクション1606、1つまたは複数の中央処理装置(CPU)またはプロセッサ1608、およびそれに関連するフラッシュメモリカード1612を有し得るメモリセクション1610を有するマザーボード1604を含む。CPU1608は、マルチプロセッサシステムであってもよい。I/Oセクション1606は、ディスプレイ1614、キーボードおよび/または他のユーザ入力(図示せず)、ディスクストレージユニット1616、およびメディアドライブユニット1618に接続することができる。メディアドライブユニット1618は、プログラム1622および/またはデータを含むことができるコンピュータ可読媒体1620の読み取り/書き込みを行うことができる。コンピューティングシステム1600は、ウェブブラウザを含むことができる。さらに、コンピューティングシステム1600は、様々な機能を果たすために追加のシステムを含むように構成することができることに留意されたい。コンピューティングシステム1600は、Wi-Fi、Bluetooth(登録商標)(および/または短波長無線送信を使用するものを含む短距離でデータを交換するための他の規格)、USB、イーサネット、セルラなどの様々なコンピュータ通信プロトコルに基づいて、他のコンピューティングデバイスと通信することができる。コンピューティングシステム1600は、ローカルシステムまたはクラウドベースのシステムとして実装されてもよく、後者の場合、潜在的にクラウドコンピューティング環境内の仮想コンピューティングシステムとして動作する。
【0089】
結論
特定の例示的な実施形態を参照して本実施形態を説明したが、様々な実施形態のより広い精神および範囲から逸脱することなく、これらの実施形態に対して様々な修正および変更を行うことができる。例えば、本明細書に記載の様々なデバイス、モジュールなどは、ハードウェア回路、ファームウェア、ソフトウェア、またはハードウェア、ファームウェア、およびソフトウェアの任意の組み合わせ(例えば、機械可読媒体で具現化される)を使用して有効化および動作させることができる。
【0090】
加えて、本明細書で開示される様々な動作、プロセス、および方法は、データ処理システム(例えば、コンピュータシステム)と互換性のある機械可読媒体および/または機械アクセス可能媒体で具現化することができ、(例えば、様々な動作を達成するための手段を使用することを含む)任意の順序で実施することができることが理解されよう。したがって、本明細書および図面は、限定的な意味ではなく例示的な意味で見なされるべきである。いくつかの実施形態では、機械可読媒体は、機械可読媒体の非一時的な形態であり得る。
【国際調査報告】