(57)【要約】【課題】データ匿名化のためのコンピュータ実装方法、システム、コンピュータ・プログラム製品、およびコンピュータ・プログラムを提供する。【解決手段】１つまたは複数のデータ・ストアに関連付けられた第１のデータのセットが受信される。ベクトル空間内の第１のデータのセットのサブセットの表現から、少なくとも別のデータのセットの第２の表現までの距離が、識別される。この距離を識別することに応答して、第１のデータのセットが匿名化される。この匿名化は、ノイズを第１のデータのセットの少なくとも一部に追加することを含む。【選択図】図１
2021504798.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ実装方法であって、
１つまたは複数のデータ・ストアに関連付けられた第１のデータのセットを受信することと、
前記第１のデータのセットの１つまたは複数の文字列を少なくとも１つの単語埋め込みベクトル・モデルに通すことであって、前記１つまたは複数の文字列の少なくとも１つの表現がベクトル空間内でマッピングされることを引き起こすことを含んでいる、前記通すことと、
前記１つまたは複数の文字列を前記少なくとも１つの単語埋め込みベクトル・モデルに前記通すことに少なくとも基づいて前記第１のデータのセットを匿名化することであって、前記匿名化することが、第１の属性の１つまたは複数の値を抑制すること、および第２の属性の１つまたは複数の特定の値を抑制しないことを含んでいる、前記匿名化することとを含んでいる、コンピュータ実装方法。
【請求項２】
前記１つまたは複数のデータ・ストアが１つまたは複数のリレーショナル・データベースを含んでおり、前記第１のデータのセットが、前記１つまたは複数のリレーショナル・データベース内の複数のデータベース・レコードに含まれており、前記方法が、
前記データベース・レコードの各々から、１つまたは複数の実数を最初に抽出することであって、前記１つまたは複数の文字列が最初に抽出されない、前記抽出することと、
前記１つまたは複数の実数の各々を正規化することと、
前記１つまたは複数の実数を１つまたは複数のテンソル値として表すこととさらに含んでいる、請求項１に記載のコンピュータ実装方法。
【請求項３】
前記ベクトル空間が、前記１つまたは複数の文字列を通す前に存在していた複数の単語表現を含んでおり、前記方法が、
前記１つまたは複数の文字列をデータ・レコードから抽出することと、
前記少なくとも１つの表現を前記ベクトル空間内でプロットすることと、
前記少なくとも１つの表現の最も近い近隣を前記ベクトル空間内で決定することであって、前記最も近い近隣が、前記複数の単語表現のうちの１つである、前記決定することと、
前記最も近い近隣を、前記１つまたは複数の文字列を表すための値として利用することであって、照会要求に応答して、前記１つまたは複数の文字列の代わりに、前記最も近い近隣が表示において表示される、前記利用することとをさらに含んでいる、請求項１に記載のコンピュータ実装方法。
【請求項４】
前記第１のデータのセットの各明示的識別子の値を抑制することであって、前記明示的識別子の値が個人を直接識別する、前記抑制することと、
前記第１のデータのセットの準識別子の値のセットおよび機密識別子の値のセットを識別することであって、前記準識別子の値のセットが、特定の個人を間接的に識別する可能性がある値のセットに対応し、前記機密識別子の値のセットが、個人の秘密である値のセットに対応する、前記識別することとをさらに含んでいる、請求項１に記載のコンピュータ実装方法。
【請求項５】
前記明示的識別子の値、前記準識別子の値のセット、および前記機密識別子の値のセットが、１つまたは複数のデータベース・テーブル内の各属性に関連付けられており、前記方法が、
前記準識別子の値のセットを複数のデータベース・レコードから抽出することと、
前記準識別子の値のサブセットを前記少なくとも１つの単語埋め込みベクトル・モデルに通すことであって、前記明示的識別子の値が、前記少なくとも１つの単語埋め込みベクトル・モデルを通過しない、前記通すことと、
照会に対して前記各属性を匿名化されたデータとして提示することであって、前記明示的識別子の値がいずれも表示可能でなく、前記機密識別子の値の各々が表示可能である、前記提示することとさらに含んでいる、請求項４に記載のコンピュータ実装方法。
【請求項６】
前記少なくとも１つの単語埋め込みベクトル・モデルが最初に事前にトレーニングされており、前記方法が、
前記ベクトル空間内の前記１つまたは複数の文字列の前記少なくとも１つの表現から複数の他の表現までの距離を決定することと、
ポリシーに基づいて、前記複数の表現のうちの１つの表現を匿名化の出力候補として選択することと、
前記表現の前記選択が前記ポリシーと一致していないということを決定することと、
前記表現の前記選択が前記ポリシーと一致していないということの前記決定に応答して、前記単語埋め込みベクトル・モデルを再トレーニングすることとさらに含んでいる、請求項１に記載のコンピュータ実装方法。
【請求項７】
前記少なくとも１つの単語埋め込みベクトル・モデルが１つまたは複数のｗｏｒｄ２ｖｅｃ  ２層ニューラル・ネットワーク・モデルを含んでおり、前記少なくとも１つの表現が、他の表現との意味論的意味の類似度に従ってベクトル空間内でマッピングされた１つまたは複数の数値表現であり、前記他の表現のうちの第２の表現が、照会要求に応答した表示時に前記少なくとも１つの表現を表すように選択される、請求項１に記載のコンピュータ実装方法。
【請求項８】
少なくとも１つのプロセッサを含んでいる少なくとも１つのコンピューティング・デバイスと、
プログラム命令が具現化されている少なくとも１つのコンピュータ可読記憶媒体とを備えているシステムであって、前記少なくとも１つのプロセッサによって読み取り可能または実行可能な前記プログラム命令が、前記システムに、
１つまたは複数のデータ・ストアに関連付けられた第１のデータのセットを受信することと、
前記第１のデータのセットをノイズ伝搬モジュールに通すことであって、前記通すことが、ノイズを前記第１のデータのセットに追加することを含んでおり、前記ノイズの前記追加が、前記第１のデータのセットの少なくともサブセットが一緒にグループ化され、特定の属性の単一の値として表されることを引き起こすことを含んでいる、前記通すことと、
前記第１のデータのセットを前記ノイズ伝搬モジュールに前記通すことに少なくとも基づいて前記第１のデータのセットを匿名化することであって、前記匿名化することが、第１の属性の１つまたは複数の値を抑制すること、および第２の属性の各特定の値を抑制しないことを含んでいる、前記匿名化することとを実行させる、システム。
【請求項９】
前記少なくとも１つのプロセッサによって読み取り可能または実行可能な前記プログラム命令が、前記システムに、
前記第１のデータのセットを表す第１のテンソルのセットを、入力層の第１の表現から隠れ層内の第２の表現にエンコードすることと、
ポリシーに従って匿名化されている１つまたは複数の準識別子の値を識別することとをさらに実行させる、請求項８に記載のシステム。
【請求項１０】
前記少なくとも１つのプロセッサによって読み取り可能または実行可能な前記プログラム命令が、前記システムに、前記第１のデータのセットの第３の表現を、前記隠れ層および匿名化された層から出力層にデコードすることをさらに実行させ、前記デコードすることが、前記第１の表現の代わりに前記１つまたは複数の匿名化された準識別子の値の表示可能なバージョンが表示されることを引き起こす、請求項９に記載のシステム。
【請求項１１】
前記少なくとも１つのプロセッサによって読み取り可能または実行可能な前記プログラム命令が、前記システムに、
前記１つまたは複数の準識別子の値の第３の表現を生成することと、
前記第３の表現を前記生成することに応答して、前記第２の表現を前記隠れ層からアノニマイザ層の前記第３の表現にマッピングすることとをさらに実行させる、請求項９に記載のシステム。
【請求項１２】
前記少なくとも１つのプロセッサによって読み取り可能または実行可能な前記プログラム命令が、前記システムに、
前記第１のデータのセットの各明示的識別子の値を抑制することであって、前記明示的識別子の値が個人を直接識別する、前記抑制することと、
前記第１のデータのセットの準識別子の値のセットおよび機密識別子の値のセットを識別することであって、前記準識別子の値のセットが、特定の個人を間接的に識別する可能性がある値のセットに対応し、前記機密識別子の値のセットが、個人の秘密である値のセットに対応する、前記識別することと、
前記準識別子の値のセットを前記識別することに応答して、ノイズを前記準識別子の値のセットのみに追加して、前記準識別子のセットの値を、あまり具体的ではないが前記準識別子の値のセットと意味的に一致している別の値のセットに置き換えることであって、前記ノイズが前記明示的識別子の値および前記機密識別子の値に追加されない、前記置き換えることとをさらに実行させる、請求項８に記載のシステム。
【請求項１３】
前記第１のデータのセットが１つまたは複数の単語に対応し、前記ノイズ伝搬モジュールがエンコーダ、デコーダ、および前記エンコーダと前記デコーダの間に位置するアノニマイザを含んでおり、前記第１のデータのセットが、最初に前記エンコーダによってエンコードされることによって前記ノイズ伝搬モジュールを前記通過することを実行し、次に、前記第１のデータのセットが、前記エンコーダからアノニマイザに渡されて、前記１つまたは複数の単語を、前記１つまたは複数の単語にコンテキスト的に類似している第２の単語のセットとして表し、その後、前記１つまたは複数の単語の代わりに前記第２の単語のセットを表示するために、前記第２の単語のセットが前記アノニマイザからデコードされる、請求項８に記載のシステム。
【請求項１４】
前記少なくとも１つのプロセッサによって読み取り可能または実行可能な前記プログラム命令が、前記システムに、前記第１のデータのセットを前記ノイズ伝搬モジュールに前記通す前に、前記第１のデータのセットを前記匿名化するために、前記第１のデータのサブセットを１つまたは複数の単語埋め込みベクトル・モデルに通して、１つまたは複数の属性値を変更することをさらに実行させる、請求項８に記載のシステム。
【請求項１５】
プログラム命令が具現化されているコンピュータ可読記憶媒体を備えているコンピュータ・プログラム製品であって、コンピューティング・デバイスによって読み取り可能または実行可能な前記プログラム命令が、前記コンピューティング・デバイスに、
１つまたは複数のデータ・ストアに関連付けられた第１のデータのセットを受信することと、
ベクトル空間内の前記第１のデータのセットのサブセットの表現から、少なくとも別のデータのセットの第２の表現までの距離を識別することと、
前記距離を前記識別することに応答して、前記第１のデータのセットを匿名化することであって、ノイズを前記第１のデータのセットの少なくとも一部に追加することを含んでいる、前記匿名化することとを実行させる、コンピュータ・プログラム製品。
【請求項１６】
前記匿名化が、少なくとも第１の値を抑制することと、１つまたは複数の等価クラスを生成することと、属性の各値をより広い値に変更するように、前記属性を一般化することとを含んでおり、前記より広い値が前記別のデータのセットの前記第２の表現を含んでいる、請求項１５に記載のコンピュータ・プログラム製品。
【請求項１７】
前記第１のデータのセットが１つまたは複数のデータベース・テーブル内に論理的に配置され、コンピューティング・デバイスによって読み取り可能または実行可能な前記プログラム命令が、前記コンピューティング・デバイスに、
１つまたは複数の準識別子の文字列表現を１つまたは複数のデータベース・レコードから抽出し、前記文字列表現を１つまたは複数の単語埋め込みベクトル・モデルに通すことと、
１つまたは複数の準識別子の実数を前記１つまたは複数のデータベース・レコードから抽出することと、
ノイズを前記１つまたは複数の準識別子の文字列表現および前記１つまたは複数の準識別子の実数の両方に追加することとをさらに実行させ、データベース表示が、前記１つまたは複数の準識別子の文字列表現ではなく前記第２の表現を表示するように、前記ノイズの前記追加が、前記ベクトル空間内の前記第２の表現を出力として使用して、前記データベース・テーブル内の前記１つまたは複数の準識別子の文字列表現の各々を置き換えることを含んでいる、請求項１５に記載のコンピュータ・プログラム製品。
【請求項１８】
前記ノイズの前記追加が、修正されたオートエンコーダによって実行され、前記修正されたオートエンコーダが、エンコーダ、デコーダ、および前記エンコーダと前記デコーダの間にあるアノニマイザ・モジュールを含んでいる、請求項１５に記載のコンピュータ・プログラム製品。
【請求項１９】
コンピューティング・デバイスによって読み取り可能または実行可能な前記プログラム命令が、前記コンピューティング・デバイスに、
複数の私的データベースを集中的な私的データベースに集約することと、
前記複数の私的データベースの前記集約に応答して、前記集中的な私的データベースを匿名化することであって、前記集中的な私的データベースが、前記匿名化された第１のデータのセットを含んでいる、前記匿名化することと、
前記集中的な私的データベースの前記匿名化に応答して、前記第１のデータのセットに対する照会要求を受信することとをさらに実行させる、請求項１５に記載のコンピュータ・プログラム製品。
【請求項２０】
コンピューティング・デバイスによって読み取り可能または実行可能な前記プログラム命令が、前記コンピューティング・デバイスに、
第２のデータのセットの各明示的識別子の値を抑制することと、
前記第３のデータのセットの各機密の値を変更されない状態に保つことと、
複数の等価クラスを生成することと、
前記第１のデータのセットの各準識別子の値を一般化することとをさらに実行させ、前記一般化することが、前記第１のデータのセットの前記サブセットを前記第２の表現に変更することを含んでおり、データベース・テーブルの照会要求に応答して、前記サブセットの代わりに前記第２の表現が前記データベース・テーブル内で表示可能であり、前記第１のデータのセットおよび前記第３のデータのセットが前記データベース・テーブル内にある、請求項１５に記載のコンピュータ・プログラム製品。
【請求項２１】
コンピュータ・システムに読み込まれて実行された場合に、前記コンピュータ・システムに、請求項１ないし７のいずれかに従って方法のすべての前記ステップを実行させるために、コンピュータ可読媒体に格納されたコンピュータ・プログラム・コードを含んでいる、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、データ匿名化に関連しており、より詳細には、ノイズの伝搬に基づいてデータを匿名化することに関連している。
【背景技術】
【０００２】
データ匿名化とは、データ・ストアの得られた表示が、個人の名前を識別することにも、個人を機密情報に関連付けることにも使用できなくなるように、１つまたは複数のデータ・ストアの１つまたは複数の属性値を削除することまたは曖昧にすることあるいはその両方に使用される計算メカニズムのことを指す。その目標は、特定の個人が特定のデータのセット（例えば、病気の種類、給与の数字など）に関連付けられているということを他の人が推測できないように、個人に関する機密情報を個人の身元に結び付けずに、個人に関する信頼できるデータを公開する必要性のバランスを取ることである。
【０００３】
機関およびその他の組織は、しばしば、研究またはその他の目的のために、マイクロデータ（例えば、医療データまたは国勢調査データ）を公開する必要がある。通常、そのようなデータは、リレーショナル・データベース内のテーブルなどのデータ・オブジェクトに格納される。オブジェクトの各レコード（例えば、行）は、多くの場合、１人の個人に対応する。各レコード（およびテーブル）は、３つのカテゴリに分類され得る複数の属性（例えば、列またはフィールド）を含む。第１のカテゴリは、「明示的識別子」と呼ばれ、個人を明確かつ直接的に識別する属性を含んでいる。明示的識別子は、名前、社会保障番号、住所などを含む。第２のカテゴリは、一緒に受け取られた場合に、個人を間接的に識別できる可能性がある、郵便番号、生年月日、性別などの属性を含む。これらは、「準識別子」と呼ばれる。第３のカテゴリは、「機密識別子」と呼ばれ、個人的、秘密、またはプライベートと見なされる属性（例えば、病気および給与）を含む。しばしば組織は、研究の目的で、機密情報にアクセスできるようにしようとする。したがって、明示的識別子または準識別子あるいはその両方の値を抑制するため、または曖昧にするため、あるいはその両方のために、匿名化が必要になることがある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、データ匿名化を提供することを目的とする。
【課題を解決するための手段】
【０００５】
１つまたは複数の実施形態は、システム、コンピュータ・プログラム製品、およびコンピュータ実装方法を対象にする。一部の実施形態では、コンピュータ実装方法が次の要素を含む。１つまたは複数のデータ・ストアに関連付けられた第１のデータのセットが受信される。第１のデータのセットの１つまたは複数の文字列が、少なくとも１つの単語埋め込みベクトル・モデルを通過する。この通過は、１つまたは複数の文字列の少なくとも１つの表現がベクトル空間内でマッピングされることを引き起こすことを含む。１つまたは複数の文字列が少なくとも１つの単語埋め込みベクトル・モデルを通過することに少なくとも基づいて、第１のデータのセットが匿名化される。この匿名化は、第１の属性の１つまたは複数の値を抑制すること、および第２の属性の１つまたは複数の特定の値を抑制しないことを含む。
【０００６】
一部の実施形態では、システムが、少なくとも１つのプロセッサと、プログラム命令が具現化されている少なくとも１つのコンピュータ可読記憶媒体とを含んでいる少なくとも１つのコンピューティング・デバイスを含む。一部の実施形態に従って、プログラム命令は、システムに次の要素を実行させるために、少なくとも１つのプロセッサによって読み取り可能であるか、または実行可能であることができる。１つまたは複数のデータ・ストアに関連付けられた第１のデータのセットが受信される。第１のデータのセットは、ノイズ伝搬モジュールを通過する。この通過は、ノイズを第１のデータのセットに追加することを含む。ノイズの追加は、第１のデータのセットの少なくともサブセットが一緒にグループ化され、特定の属性の単一の値として表されることを引き起こすことを含む。第１のデータのセットがノイズ伝搬モジュールを通過することに少なくとも基づいて、第１のデータのセットが匿名化される。この匿名化は、第１の属性の１つまたは複数の値を抑制すること、および第２の属性の各特定の値を抑制しないことを含む。
【０００７】
一部の実施形態では、コンピュータ・プログラム製品は、プログラム命令が具現化されているコンピュータ可読記憶媒体を含む。一部の実施形態に従って、プログラム命令は、コンピューティング・デバイスに次の要素を実行させるために、コンピューティング・デバイスによって読み取り可能であるか、または実行可能であることができる。１つまたは複数のデータ・ストアに関連付けられた第１のデータのセットが受信される。ベクトル空間内の第１のデータのセットのサブセットの表現から、少なくとも別のデータのセットの第２の表現までの距離が、識別される。この距離を識別することに応答して、第１のデータのセットが匿名化される。この匿名化は、ノイズを第１のデータのセットの少なくとも一部に追加することを含む。
【０００８】
ここで、添付の図面を単に例として参照し、本発明の実施形態について説明する。
【図面の簡単な説明】
【０００９】
【図１】実施形態に従って、匿名化されたデータの生成の抽象的表示を示すブロック図である。
【図２】実施形態に従って、１つまたは複数のデータ・レコードがデータ・テンソルに変換される方法を示すブロック図である。
【図３】実施形態に従って、データ・レコードの文字列が単語埋め込みベクトル・モデルを通過する方法を示す概略図である。
【図４】実施形態に従って、ノイズ伝搬モジュールを示す概略図である。
【図５】実施形態に従ってデータを匿名化するための例示的なプロセスのフロー図である。
【図６】実施形態に従って、データを１つまたは複数の単語埋め込みベクトル・モデルに通すための例示的なプロセスのフロー図である。
【図７】実施形態に従って、データをノイズ伝搬モジュールに通すための例示的なプロセスのフロー図である。
【図８】実施形態に従って、匿名化されたデータベースが表示時にどのように見えるかを示す概略図である。
【図９】実施形態に従うコンピューティング環境のブロック図である。
【図１０】実施形態に従うコンピューティング環境のブロック図である。
【図１１】本開示の実施形態に従ってクラウド・コンピューティング環境を示す図である。
【図１２】本開示の実施形態に従って抽象モデル・レイヤを示す図である。
【図１３】実施形態に従うコンピューティング・デバイスのブロック図である。
【発明を実施するための形態】
【００１０】
本発明は、さまざまな変更および代替の形態を受け入れるが、その詳細が、図面において例として示されており、詳細に説明される。しかし、本発明を説明されている特定の実施形態に限定することが意図されていないということが、理解されるべきである。反対に、本発明の範囲に含まれるすべての変更、同等のもの、および代替手段を対象にすることが意図されている。
【００１１】
本開示の態様は、ノイズの伝搬に基づくデータ匿名化に関連している。本開示はそのような適用に必ずしも限定されないが、この文脈を使用するさまざまな実施例の説明を通じて、本開示のさまざまな態様が理解されてよい。
【００１２】
匿名化メカニズムは、どの値がユーザが見ることができる情報を構成するかということほどには、ユーザが認証されているかどうか、またはユーザが機密情報に対するアクセス権限を有しているかどうかに、重点を置かない。例えば、典型的な技術的解決策は、照会制限などの制限手法を実行する。照会制限は、機密情報を明らかにすることができる照会を禁止する。照会制限は、機密データに対するすべての推論を（例えば、暗号化、アクセス拒否などを介して）抑制することによって実装される。これに対して、データ匿名化は、最初にデータを十分に匿名にするが、ただし表示可能にし、次に、照会が処理される基盤として使用される得られたデータを提供するための解決策を提供する。
【００１３】
何らかの匿名化を伴う場合でも、公開されたデータの公開が直面する１つの共通の問題は、データを他のデータに結び付けるか、または他のデータと照合することによって、あるいはデータ内で検出される一意の特徴を調べることによって、データ（例えば、準識別子の値）が、個人を再識別することに使用され得るということである。これは、一部の明示的識別子の値（例えば、個人の名前）が抑制されているか、またはデータベース・テーブルから削除されているということにはかかわらない。１つの例では、非常によく知られた男性の公人が、属性「名前」、「生年月日」、「性別」、「郵便番号」、および「病気」を含んでいるデータベース・レコードに含まれていることがある。「名前」の明示的識別子の値が抑制されることがある。しかし、データベース・レコードを含んでいるデータベース・テーブルは、この公人と同じ生年月日を有している人を６人しか含んでおらず、そのうち男性は３人だけである、ということがある。さらに、テーブル内で特定の郵便番号を含んでいるのはこの公人だけである、ということがある。したがって、この公人がテーブル内に存在するという知識、およびこの公人の生年月日または郵便番号あるいはその両方の知識のある人は、これらの属性値を再び個人に結び付けるか、または個人と照合し、この公人が経験した特定の病気などの、個人に関する機密データを容易に決定することができる。
【００１４】
この問題に対抗するために、一部の技術的解決策は、表示時に、より多くのレコードが同一の準識別子を含むように、データ値を抑制するか、または意味的に一貫性のある特定のデータ値をクラスタ化するか、あるいはその両方を実行する、アルゴリズムを採用する。これによって、データを再び特定の個人に結び付けることをより困難にする。例えば、ｋ−匿名度、ｌ−多様度、およびｔ−類似度などのアルゴリズムが提案されている。テーブル内のすべてのレコードが、すべての準識別子属性のセットに関して、少なくともｋ−１個の他のレコードと区別できない場合、このテーブルはｋ−匿名度を満たす。ｌ−多様度の場合、機密属性に関して、少なくともｌ個の「十分に代表された」値が存在する場合、等価クラスがｌ−多様度を有する。テーブルのすべての等価クラスがｌ−多様度を有している場合、このテーブルはｌ−多様度を有していると言われる。ｔ−類似度の場合、クラス内の機密属性の分布と、テーブル全体内での属性の分布との間の距離がしきい値ｔ以下である場合、等価クラスがｔ−類似度を有する。すべての等価クラスがｔ−類似度を有している場合、このテーブルはｔ−類似度を有していると言われる。
【００１５】
ｔ−類似度などのこれらの解決策に伴う１つの問題は、文字列などのカテゴリ（または非数値）属性間の距離を、ユーザによって手動で指定する必要があるということである。これは、属性ごとの一般化階層とも呼ばれる。したがって、カテゴリの等価クラスの定義、属性の境界、属性の範囲、または分割点を、ユーザによって手動で決定しなければならない。本明細書において説明されているように、「等価クラス」は、準識別子属性のすべてまたは一部について同じ値を有するレコードのセットである。例えば、等価クラスは、「年齢」属性において各個人が４０歳以下であることを指定する一連のレコードを含むことができる。通常、ユーザは、「４０以下」という属性の範囲を定義し、そのレコードの範囲が他の等価クラスに比例するということ、および他の交絡変数が存在しないということを、決定しなければならない。この手動の指定は、データの有用性および信頼性が損なわれるような、等価クラスの不均一な表現または偏りのある表現をもたらす可能性がある。さらに、そのような距離を手動で定義するのは、時間がかかることがある。
【００１６】
別の問題は、一部の解決策が、データが表されている順序で、またはベクトル空間内で、データ・レコードに対して解析を実行することである。データ・レコードはｎ次元ベクトルであり、各次元がレコードの属性に対応する。したがって、一方では、それ自体が匿名化に役立ち、他方では、データの有用性をより良く維持する、データ・レコードの表現（データが取得されたときの表現とは異なる）が存在する可能性がある。したがって、本開示の実施形態は、下でさらに詳細に説明されているように、これらの問題の一部または各々に対処し、匿名化およびデータベース表示技術を改善する。
【００１７】
図１は、実施形態に従って、匿名化されたデータの生成の抽象的表示を示すブロック図である。生データ１０１（例えば、カテゴリ属性値）の少なくとも一部が、単語埋め込みベクトル・モデル１０３を介して供給される。一部の実施形態では、生データ１０１（例えば、データベース・レコードの実数）のセットが、単語埋め込みベクトル・モデル１０３を回避し、データ・テンソル１０５のサブセットに変換される。単語埋め込みベクトル・モデルは、ベクトル空間内の他のデータ点（例えば、他の文字列表現）とのコンテキストの類似性（例えば、意味論的意味）に従って、生データ１０１を、ベクトル空間内の１つまたは複数の点（例えば、２Ｄまたは３Ｄグラフ・モデル内の実数）にマッピングする。単語埋め込みベクトル・モデル１０３は、ニューラル・ネットワーク、次元縮退、同時生起行列、確率的モデル、または任意のその他の適切なモデル、あるいはその組み合わせなどの、マッピングを生成するためのさまざまな方法であるか、またはそのような方法を含む。例えば、一部の実施形態では、単語埋め込みベクトル・モデル１０３は、Ｗｏｒｄ２Ｖｅｃモデルを含む。Ｗｏｒｄ２Ｖｅｃモデルおよび単語埋め込みベクトル・モデル１０３は、下でさらに詳細に説明される。
【００１８】
単語埋め込みベクトル・モデル１０３を介して生データ１０１が供給された後に、生データ１０１は、データがデータ・テンソル１０５として最初に提示されるノイズ伝搬モジュール１２１（例えば、修正されたオートエンコーダ）を介して供給される。ノイズ伝搬モジュール１２１は、ノイズをデータに追加するモジュールである。図１に示されているように、アノニマイザ１０９を使用してノイズ生成が実行される。アノニマイザ１０９は、ノイズ伝搬モジュール１２１のエンコーダ１０７とデコーダ１１１の間に存在する。エンコーダ１０７の出力は、１つまたは複数の「コード」である。エンコーダ１０７によって生成された１つまたは複数のコードが、アノニマイザ１０９に入力される。実施形態では、アノニマイザ１０９は、コードがクラスタ化またはグループ化され、各クラスタが少なくともｋ個のメンバーを含むように、適切なノイズがコードに追加されることを保証する。したがって、アノニマイザ１０９はノイズ・コードを生成する。次に、ノイズ・コードがデコーダ１１１に供給され、デコーダ１１１がデータを再構築する。その後、再構築されたデータが、匿名データを生成するために、ポリシーに従って（例えば、最も近い近隣のデコーダを介して）渡される。ノイズ伝搬モジュール１２１はデータ・テンソル１０５、エンコーダ１０７、アノニマイザ１０９、およびデコーダ１１１を含んでいるとして示されているが、これが代表にすぎないということ、およびさらに多いまたは少ないコンポーネントが任意の適切なノイズ伝搬モジュール内に存在できるということが、理解される。
【００１９】
実施形態では、ノイズを追加することは、新しい変数または新しい変数のセットを提示するために、ランダム変数またはランダム変数のセットを使用して、元のデータ点または元のデータ点のセットにデータを追加するか、あるいは元のデータ点または元のデータ点のセットを変更することを含む。例えば、一部の実施形態では、付加ノイズは、通常、Ｚ＝Ｘ＋εのような表現を含み、Ｚは変換されたデータ点であり、Ｘは元のデータ点であり、εは、分布ｅ〜Ｎ（０，σ２）を有するランダム変数（ノイズ）である。ノイズの１つの例では、データ・テンソル１０５のうちの１つが、年齢に対応する整数（２７）を表すことがある。しかし、この整数がノイズ伝搬モジュール１２１を介して供給された場合、この識別子を使用して等価クラス全体またはその他のポリシーを定義できるため、その匿名化されたデータ１１３のバージョンは、３０以下になる可能性がある。
【００２０】
本明細書において説明されているように、データ・テンソル１０５は、データを表すトークンなどの、データ自体とは異なる形態でのデータの表現である。例えば、文字列（例えば、人間が読み取れる単語）が単語埋め込みベクトル・モデル１０３を介して供給される場合、実施形態における出力は、整数またはその他の実数としてすべて表されてよいデータ・テンソル１０５になる。
【００２１】
エンコーダ１０７は、加重を学習し、最も関連する情報に対応するデータ・テンソル１０５またはその他の実数あるいはその両方の基礎的な特徴を抽出し、データ・テンソル１０５の各々を、異なる次元（例えば、コード）にマッピングまたは投影する。例えば、一部の実施形態では、データ・テンソル１０５が、高次元の空間から低次元の空間にマッピングされる（例えば、データが圧縮される）。アノニマイザ１０９は、マッピングされたデータを受け取り、単語埋め込みベクトル・モデル１０３において定義された距離を識別して、データを匿名化し、これが下でさらに詳細に説明される。次に、データを再び元の次元（例えば、圧縮されていない形態）で表すために、データがデコーダ１１１を介してデコードされ、ただしデータが、データ・テンソル１０５自体の代わりに、データ・テンソル１０５の最も近い近隣（またはその他のコンテキスト的に類似する単語）として表され、これが下でさらに詳細に説明される。最も近い近隣（またはその他の表現）は、匿名化されたデータ１１３である。一部の実施形態では、デコーダ１１１がデータを匿名化されたデータ１１３に変換した後に、単語埋め込みベクトル・モデル１０３が再トレーニングされ、これが下でさらに詳細に説明される。これは、デコーダ１１１から単語埋め込みベクトル・モデル１０３への矢印で示されている。
【００２２】
図２は、実施形態に従って、１つまたは複数のデータ・レコードがデータ・テンソルに変換される方法を示すブロック図である。データ・レコード２０１（例えば、データベース・レコード）は、実数および文字列の両方を含んでいるさまざまなフィールドまたは属性を含む。各実数属性は、個人に関連付けられ得る１つまたは複数の実数値（例えば、整数、浮動小数点数）に対応する。例えば、実数は、年齢値（例えば、３０）または郵便番号値または機密属性値（給与の数字など）などの準識別子の値を含むことができる。各文字列は、自然言語の単語（例えば、英単語）などの、１つまたは複数の非実数の文字または文字の組み合わせに対応する。例えば、文字列は、病気の種類の値（例えば、「肺がん」）などの機密属性、あるいは都市、教育レベル、または性別の値などのその他の準属性であることができる。
【００２３】
図２に示されているように、データ・レコード２０１の実数属性の各々は、中間ステップを伴わずに、テンソル２０５として表される（例えば、単語埋め込みベクトル・モデルを介して供給される）。実数の各々をテンソル２０５のテンソル値として表すために、データ・セット内の実数のセット（例えば、図１の生データ１０１などの、テーブル内のレコードのセット）全体が正規化される。データを正規化することは、１つまたは複数の特定の範囲（０〜１または−１〜＋１など）内の実数のうちの１つまたは複数をキャストすること、または再表現することを含む。一部の実施形態では、正規化は、線形代数を利用して、データ・ベクトル（例えば、データベース・レコード２０１内の実数）を、１に等しいノルム（例えば、長さ）を有する新しいベクトル（例えば、データ・レコード・トークン（data record token）２０５−１内の実数）に変換する。実施形態では、正規化は、データを、０の平均および１の標準偏差を有する新しいスコアに変換することによって、測定単位を除去することを含む。１つの例では、第１の属性が、２７の値を含んでいる年齢属性を含むことができる。２２、２６、および２５の対応する年齢値を含んでいる複数のその他のレコードが存在することができる。これらの年齢属性の各々が正規化された場合、実施形態では、データベース表示が、年齢属性の各々を、個別の値の代わりに３０以下で表示して公開するように、それらの年齢属性が３０以下という同じカテゴリに割り当てられる。それに応じて、特定の値がより広い値の表現を獲得する。
【００２４】
データ・レコード２０１の文字列属性値の各々が、Ｗｏｒｄ２Ｖｅｃ２０３を通過する。図２はＷｏｒｄ２Ｖｅｃモデルを示しているが、図１で説明されているように、任意の適切な単語埋め込みベクトル・モデルが利用され得るということが理解される。Ｗｏｒｄ２Ｖｅｃモデルは、１つまたは複数の入力ベクトル（単語表現）を隠れ層（すなわち、列と行の行列）および投射層（例えば、ソフトマックス分類器）に通す、２層ネットワーク・モデルである。Ｗｏｒｄ２Ｖｅｃモデルは、ソース・コンテキストの単語から（すなわち、Ｃｏｎｔｉｎｕｏｕｓ  Ｂａｇ  ｏｆ  Ｗｏｒｄｓ（ＣＢＯＷ）アルゴリズムを介して）ターゲット文字列を予測するか、または逆に、ターゲット単語から（すなわち、ｓｋｉｐ−ｇｒａｍアルゴリズムを介して）ソース・コンテキストの単語を予測する。実施形態では、文字列の各々が、対応するＷｏｒｄ２Ｖｅｃまたはその他の単語埋め込みモデルを通過した場合、文字列は、単語埋め込みにおいて、関連付けられたベクトル（例えば、文字列識別子の他のグループ）および文字列表現からそれらのベクトルの各々までの距離を示す数値によって表され、これが下でさらに詳細に説明される。例えば、文字列「男性」は、ベクトル空間内では「１」として表すことができ、文字列「女性」は、ベクトル空間内では「０」として表すことができる。
【００２５】
実数の正規化およびデータ・レコード２０１の文字列の単語埋め込み解析の後に、データが、１つまたは複数のデータ・トークン・レコード２０５（すなわち、ｎ次元を有する別のベクトル）で表される。例えば、データ・レコード２０１は、第１のデータベース・レコードであることができる。実数がデータベース・レコードから抽出／コピーされて、正規化され、文字列が抽出されてｗｏｒｄ２ｖｅｃモデルを通過した場合、データは、データ・レコード・トークン２０５−１（または２０５−２）の形態で、再びつなぎ合わせられ得る。実施形態では、データ・レコード・トークン２０５−１は、元のデータ・レコード２０１を表す実数のベクトルである。データ・レコード・トークン２０５−１および２０５−２（およびテーブル内の任意の量のレコード）の各々は、まとまってテンソル２０５を形成する。実施形態では、テンソル２０５は、図２に示されている２つの２０５−１および２０５−２とは対照的に、単一のデータ・レコード・トークンのみを含む。
【００２６】
図３は、実施形態に従って、データ・レコードの文字列が単語埋め込みベクトル・モデルを通過する方法を示す概略図である。実施形態では、図３は、図１の単語埋め込みベクトル・モデル１０３の態様を表している。図３は、トレーニング・データ３０１、データ・レコード３０７、およびベクトル空間３０９を含んでいる。ベクトル空間３０９は、複数のベクトル（例えば、男性、王）を含んでいる。ベクトル空間３０９は、制限されたベクトルおよび次元を含む表現であり、異なるか、より多いか、またはより少ない文字列表現を伴うさらに多いまたは少ないベクトルおよび次元が存在することができるということが、理解される。ベクトル空間３０９はデータ点を文字列の形態（例えば、男性）で含んでいるが、Ｗｏｒｄ２Ｖｅｃモデルなどの一部の実施形態では、データ点が文字列表現（例えば、実数ベクトル）であるということも、理解される。一部の実施形態では、「文字列表現」または任意のその他の表現は、第２のデータのセットと同じ意味を有しているか、第２のデータのセットを表しているか、または第２のデータのセットに置き換わるか、あるいはその組み合わせであるが、第２のデータのセットと正確に同じ値または形式を含んでいない、第１のデータのセットである。例えば、「女性」は文字列であることができ、「０」がその文字列表現であることができる。他の実施形態では、文字列表現または任意のその他の表現が、元のデータ点自体である。例えば、「女性」は元のデータ点であることができ、「女性」は「文字列表現」であることもできる。
【００２７】
ベクトル空間３０９内のデータ点または文字列表現をプロットするために、トレーニング・データ３０１を使用してモデルがトレーニングされる。さまざまな実施形態では、トレーニング・データ３０１は、非構造化データ（例えば、文書、ニュース記事、ソーシャル・メディアの投稿、ニュース・フィード、ブログ）または構造化データ（例えば、データベースの値）あるいはその両方の大きいコーパスを含んでいる。トレーニング・データ３０１は、単語埋め込みベクトル・モデルの入力でもある。トレーニング・データ３０２は、ベクトル空間３０９内で検出される、「語彙」と呼ばれる単語の各々（男性、王、父親、息子、女性、女王、母親、娘、猫、犬、博士号、博士、法務博士、修士、学士、および高校）を含む。
【００２８】
一部の実施形態では、ベクトル空間３０９は、「トレーニング済みの」埋め込みを表す。トレーニング済みの埋め込みは、それを介して供給されるデータ・セットに対するフィードバック、再トレーニング、参照をいずれも行わずに生成される静的モデルである。例えば、ユーザは、トレーニング済みの、単語間の意味的類似度に従ってベクトル空間内ですでにマッピングされたベクトルまたはデータ点を含んでいる、静的単語埋め込みベクトル・モデルを、オンライン・ソースからダウンロードしてよい。他の実施形態では、ベクトル空間３０９は、「再トレーニングされた」埋め込みを表す。再トレーニングされた単語埋め込みモデルは、初期トレーニング・セッションを受信した後にトレーニングのフィードバックを受信する埋め込みであり、特定のデータ・セット（例えば、マイクロデータ、匿名化されたデータベースなど）に対して最適化または生成される。例えば、図１に示されているように、デコーダ１１１がデータをデコードした後に、今後のデータ・セット内のいずれかのベクトルまたは単語（例えば、医学博士）が、実装されたポリシーに従って最も近い近隣（例えば、高等教育）またはその他の単語に一貫してマッピングされるように、システムが単語埋め込みベクトル・モデル１０３の２回目の「再トレーニング」を行う。一部の実施形態では、再トレーニングは、正しいデータ点の対（例えば、医学博士および高等教育）が確実に利用されるようにするために、フィードバックを発行することを含む。
【００２９】
単語の各々をベクトル空間３０９内のコンテキスト的に適切な点にマッピングするために、トレーニング・アルゴリズムが利用される。例えば、一部の実施形態では、単語埋め込みベクトル・モデルは、次のソフトマックス関数に関して、以前の単語ｈ（すなわち、「履歴」）を前提として次の単語ｗｔ（すなわち、「ターゲット」）の確率を最大化するように、最大尤度（ＭＬ：maximum likelihood）原理を使用してトレーニングされる。
【００３０】
【数１】
2021504798.tif 000003
【００３１】
ｓｃｏｒｅ（ｗｔ，ｈ）は、コンテキストｈとの単語ｗｔの互換性を計算する。モデルは、トレーニング・セットに対して対数尤度を最大化することによって、すなわち次式を最大化することによって、トレーニングされる。
【００３２】
【数２】
2021504798.tif 000004
【００３３】
これによって、言語モデル化のための適切に正規化された確率的モデルを得る。各確率は、すべてのトレーニング・ステップで、現在のコンテキストｈにおいて、すべての他の単語ｗ’に対してスコアを使用して計算され、正規化される。一部の実施形態では、ｗｏｒｄ２ｖｅｃなどの一部のモデルは、実際のターゲット単語ｗｔを、同じコンテキストにおけるＫ個のノイズ単語ｗ”と区別するために、ロジスティック回帰などの二項分類オブジェクトを使用してトレーニングされる。それに応じて、ソフトマックス分類器の代わりに、ノイズ分類器が使用される。
【００３４】
トレーニング・アルゴリズムの出力は、意味的に類似する単語のグループ化を示すベクトル空間３０９内の位置的単語（positional words）の各々である。「意味的類似度」は、既定のオントロジーに従う、２つ以上の概念（例えば、単語）間の意味的距離である。「オントロジー」は、属性（例えば、単語）のセットを含んでいるクラスまたはデータ・セットである。例えば、単語「博士号」、「博士」、「医学博士」、「法務博士」、および「修士」はそれぞれ、「高等教育」３０５のオントロジーに属しており、一方、単語「学士」および「高校」は「学生」のオントロジーに属している。一部の実施形態では、２つ以上の単語間の「距離」は、文字列形式などの構文の類似度とは対照的に、それらの意味または意味内容あるいはその両方の類似度に基づく。例えば、「自動車（ｃａｒ）」および「遠い（ｆａｒ）」は、構文的に類似しているが、２つの異なる定義を含んでいるため、意味的に類似していない。
【００３５】
任意の２つのベクトルまたは単語間の距離は、任意の適切な方法に従って測定される。例えば、一部の実施形態では、自動化されたコサイン類似度が距離の計算に使用される。コサイン類似度は、２つの非ゼロ・ベクトル間の角度のコサインを測定する、内積空間の２つの非ゼロ・ベクトル間の類似度の尺度である。類似性がないことは、９０度の角度として表され、完全な類似度（すなわち、同じ単語）である１は、０度の角度である。例えば、２つの単語間の距離０．９８は非常に高い意味的類似度を反映するが、距離０．００３はわずかな意味的類似度を反映する。ベクトル空間３０９において示されているように、「男性」と「王」の間、および「女性」と「女王」の間のコサイン類似度は、同じコサイン距離であり、したがって、男性および女性の入力を前提とする特定の状況では、王は女王に意味的に類似している。
【００３６】
トレーニング・データ３０１がトレーニング・アルゴリズムを通過し、ベクトル空間３０９として表された後に、データ・レコード３０９の文字列属性が単語埋め込みベクトル・モデルを通過し、ベクトル空間３０９内でプロットされる。例えば、図３に示されているように、データ・レコード３０７内の文字列値のみが「医学博士」であり、この値は「教育レベル」属性に対応する。「医学博士」は、データ・レコード３０７から抽出またはコピーされ、この単語が属しているオントロジー、または他の単語もしくはデータ点との意味的類似度、あるいはその両方に従って、ベクトル空間３０９内に配置される。プロットの後に、単語の距離を手動で定義するのとは対照的に、他の単語またはベクトルとの「医学博士」の距離は、単語埋め込みモデルにおいて自動化された方法で計算可能であり、匿名化されたデータにおいて属性値または等価クラスあるいはその両方を再定義（例えば、一般化）するのに役立てるために使用される。ベクトル空間３０９内で示されているように、距離に関して「医学博士」の最も近い近隣は、「高等教育」である。したがって、データ・レコードが「医学博士」、「博士号」、「博士」、「法務博士」、または「修士」の値を含んでいる場合、表示時のデータの匿名化に役立てるために、文字列「高等教育」を使用してこれらの個別の属性の各々を置換して、等価クラスまたは属性値が生成され得る。したがって、「高等教育」は、個別の値の各々より広い表現であるが、特定の情報を個人に結び付けないようにすることと、同時にデータを研究またはその他の目的のために信頼できるようにすることとの間でバランスを取るように、個別の値の関連するクラスをまだ定義している。
【００３７】
図４は、実施形態に従ってノイズ伝搬モジュール４００（例えば、図１のノイズ伝搬モジュール１２１）を示す概略図である。ノイズ伝搬モジュール４００は、入力層４０３、隠れ層４０３、アノニマイザ層４０５、および出力層４０７を、ニューラル・ネットワークとして含んでいる。一部の実施形態では、ノイズ伝搬モジュール４００は、隠れ層４０３と出力層４０７の間に追加されたアノニマイザ層４０５と共に、オートエンコーダを含む。
【００３８】
入力層４０３は、複数のデータ点ｄ１、ｄ２、ｄ３、ｄ４（例えば、テンソルとして表されるデータ・レコード）を含んでいる。例えば、図３を再び参照すると、データ点のうちの１つｄ１は、トークン・レコードとして表されたデータ・レコード３０７であることができ、他の追加のデータ・レコードは、共に３００次元ベクトルを含むことができる。エンコーダ４０９は、各データ点を表現点ｈ（例えば、ｈ１、ｈ２、またはｈ３）（ｈ＝ｆ（ｄ））にマッピングする。データ・セット全体のマッピングは、データ点に関連付けられた関連する特徴または加重を抽出すること、およびそれらの特徴を第１の次元（例えば、より高い次元）から別の次元（例えば、より低い次元）に投影することを含む。例えば、トークン・レコード（ｄ１〜ｄ４）のテーブルとして表された３００次元ベクトルは、１００次元ベクトル（ｈ１〜ｈ３）にマッピングされ得る。これは、データ圧縮などの原理に役立つことができ、データの静的特徴または重要でない特徴を削除することによって、次元を減らす。これによって、メモリ消費または処理時間あるいはその両方を削減する。
【００３９】
次に、隠れ層４０３内の各データ点が、アノニマイザ層４０５内の同じ次元または類似する次元の別の表現にマッピングされる。一部の実施形態では、このマッピングの処理は、最初にＭｏｎｄｒｉａｎアルゴリズムを使用することを含む。Ｍｏｎｄｒｉａｎアルゴリズムは、ｋ−匿名度を満たすように準識別子領域空間の貪欲再帰分割（greedy recursive partitioning）を使用する一般化アルゴリズムである。「一般化」は、準識別子の値を、あまり具体的ではないが意味的に一貫性のある準識別子の値（例えば、同じオントロジー・クラスに属する値）に置き換えるか、または変更する。その結果、より多くのレコードが、同じ準識別子の値のセットを含むようになる。Ｍｏｎｄｒｉａｎアルゴリズムは、値の最大の正規化された範囲を有する分割された属性を再帰的に選択し、（連続的属性または順序属性の場合）分割された属性の中央値を中心にしてデータを分割し、許容できる分割が存在しなくなるまで、この分割が繰り返される。
【００４０】
Ｍｏｎｄｒｉａｎアルゴリズムの出力は、等価クラスのセットであり、各等価クラスは、ｋ−匿名度を満たすように、少なくともｋのサイズを有する。等価クラスのメンバーは、この時点では（エンコーダ４０９を使用してデータ・ベクトルから導出された）コードであることができる。等価クラスの重心（例えば、平均または中央位置／中央値）が、クラス内のすべてのコードの一般化として使用され得る。例えば、ｃ１、ｃ２、ｃ３、およびｃ４が等価クラスＥ１内のコードであり、Ｃが、コードを使用して計算された重心である場合、ＣがＥ１を代表しているとして扱われる。コードｃ１がＣにマッピングされ、ｃ２がＣにマッピングされ、ｃ３がＣにマッピングされ、ｃ４がＣにマッピングされる。したがって、アノニマイザ層４０５（例えば、図１のアノニマイザ１０９）の出力で、ｃ１、ｃ２、ｃ３、およびｃ４が区別できなくなる。これらのコードは、ノイズ・コードＣによってすべて表される。一部の実施形態では、異なる等価クラスが、異なる重心を有し、したがって異なる出力を有する。これらの重心は、デコーダ４１１によってデコードされ得る。
【００４１】
隠れ層４０３からアノニマイザ層４０５への実際のマッピングの例では、ｄ１、ｄ２、およびｄ３が、一緒に圧縮され、したがって隠れ層４０３内でｈ１として表され得る。次に、ｈ１表現が、ｈ１と同じ次元を含んでいる別の値または異なる値ａ１にマッピングされ得る。次に、アノニマイザ層４０５内のデータ点の各々が、デコーダ４１１を介して出力層４０７内のデータ点に投影され、（Ｔ＝ｇ（ａ））によって表され、ｇは何らかのノイズ変数である。
【００４２】
一部の実施形態では、隠れ層４０３内の各データ点が、データ点の最も近い近隣の圧縮されたバージョン、オントロジー・クラス、または他の意味的に類似する単語、あるいはその組み合わせにマッピングされる。例えば、図３を再び参照すると、文字列「医学博士」がモデルのベクトル空間３０６内ですでにマッピングされているため、近隣までの距離がすでに計算されており、意味的に類似する各単語がすでにマッピングされている。したがって、ポリシーが、入力文字列「医学博士」の最も近い近隣を検出するように指定した場合、このポリシーは、「高等教育」をデータ点として使用する。それに応じて、最も近い近隣が決定された後に、そのデータ点が、隠れ層４０３内のデータ点のうちの１つと同じまたは類似する次元に圧縮される。次に、出力層４０７では、「医学博士」または「博士」などの個別の教育レベルの値の代わりに、文字列「高等教育」が教育レベル属性の１つまたは複数の値として使用され得るように、圧縮されたバージョンである「高等教育」（例えば、ａ１）が元の次元の（例えば、圧縮されていない）バージョン（例えば、Ｔ１）にマッピングされる。
【００４３】
図５は、実施形態に従ってデータを匿名化するための例示的なプロセス５００のフロー図である。プロセス５００（および本明細書で開示された任意のその他のプロセス（例えば、６００、７００））は、ハードウェア（例えば、回路、専用論理、プログラム可能な論理、マイクロコードなど）、ソフトウェア（例えば、ハードウェア・シミュレーションを実行するためにプロセッサ上で実行される命令）、ファームウェア、またはこれらの組み合わせを含んでいる処理論理によって実行され得る。
【００４４】
ブロック５０２で、生データ（例えば、図１の生データ１０１）が受信される。生データは、１つまたは複数のデータベース・レコード、非構造化データ、または任意のその他のデータのセット、あるいはその組み合わせなどの、任意の適切な形態で入力される。ブロック５０４で、生データの１つまたは複数の明示的識別子（例えば、個人の名前、社会保障番号）の値が抑制される。値を「抑制すること」は、値が人間の読者によって識別できなくなるように、データ・セットを削除すること、マスクすること、変更すること、または暗号化すること、あるいはその組み合わせであるか、またはこれらを含む。一部の実施形態では、プロセス５００において使用されるデータは、必ずしも「生」データではなく、任意のデータのセットであることができる。
【００４５】
ブロック５０６で、生データの１つまたは複数の準識別子（例えば、郵便番号、教育レベルなど）の値および１つまたは複数の機密識別子（例えば、病気の種類、給与など）の値が識別される。一部の実施形態では、ユーザが、最初に準識別子および機密識別子が何であるかを定義し、この定義をコンピューティング・システムに入力する。一部の属性が通常は他のカテゴリに含まれているにもかかわらず、準識別子は任意の属性クラスに設定され得る。例えば、一部の実施形態では、病気および給与などの典型的な「機密」属性が、準属性として定義される。典型的な「明示的」識別子（例えば、名前、社会保障）も、準属性として設定され得る。一部の実施形態では、ユーザとは対照的に、コンピューティング・システムが、ユーザのフィードバックなしで、自然言語処理（ＮＬＰ：Natural Language Processing）、ポリシーに基づく単語の照合およびタグ付け（例えば、単語が特定の識別子であるルールを使用して、データベース内の文字列をデータ構造内の文字列と照合する）などの、任意の適切な方法によって、各識別子の種類を識別する。
【００４６】
ブロック５０８で、１つまたは複数の準識別子の値が、実際の文字列および整数などの実数値の両方を含んでいるかどうかが（例えば、ＮＬＰ、ユーザによって定義された仕様などによって）判定される。ブロック５１０で、１つまたは複数の準識別子の値が文字列および実数の両方を含んでいない（すなわち、準識別子が実数または文字列のいずれかであるが、両方ではない）場合、準識別子がすべて実数であるかどうかが判定される。１つまたは複数の準識別子がすべて実数である場合、ブロック５１４で、１つまたは複数の準識別子の実数が、抽出されて正規化され、１つまたは複数のテンソル（例えば、図２のデータ・レコード・トークン２０５−１の実数表現）として表される。１つまたは複数の準識別子の値がすべて実数ではない（例えば、すべて文字列である）場合、ブロック５１２で、１つまたは複数の準識別子の文字列が抽出されて、１つまたは複数の単語埋め込みベクトル・モデル（例えば、図１の単語埋め込みベクトル・モデル１０２）を通過し、１つまたは複数のテンソルまたはテンソル値（例えば、図２のデータ・レコード・トークン２０５−１の文字列表現）として表される。次に、一部の実施形態では、正規化される実数が存在しないため、ブロック５１２の後にブロック５１６が発生する。
【００４７】
ブロック５１２および５１４で、１つまたは複数の準識別子が文字列および実数の両方を含んでいる場合、準識別子の文字列および準識別子の実数の両方が抽出され、それぞれ、１つまたは複数の単語埋め込みベクトル・モデルを通過するか、または正規化される。正規化および１つまたは複数の単語埋め込みベクトル・モデルから得られる出力は、データ・テンソルである。
【００４８】
ブロック５１６で、データ匿名化のために、（例えば、図１のノイズ伝搬モジュール１２１によって）ノイズが準識別子のテンソルに追加される。ブロック５１８で、照会に対して、匿名化されたデータが提示される。例えば、一部の実施形態では、最終的なデータ・セットは、抑制された明示的識別子と、１つまたは複数の特定の自動化された属性値および等価クラスに一般化されている、匿名化された準識別子の値と、変更されていない（例えば、抑制されても曖昧にされてもいない）形態での機密識別子の値とを含む。したがって、ユーザが、データの一部または全部に対する照会を発行した場合、このユーザは、データを、ブロック５１８で指定された通りに見ることができる。
【００４９】
図６は、実施形態に従って、データを１つまたは複数の単語埋め込みベクトル・モデルに通すための例示的なプロセス６００のフロー図である。ブロック６０２で、１つまたは複数のトレーニング済みの単語埋め込みベクトル・モデルがダウンロードされる。例えば、一部の実施形態では、コンピューティング・システムが、データ点の各々がベクトル空間（例えば、図３のベクトル空間３０９）内ですでにマッピングされているｗｏｒｄ２ｖｅｃなどの単語埋め込みベクトル・モデルをダウンロードするためのユーザの要求を、Ｗｅｂサイトまたはその他のサービスから受信する。したがって、過去のいずれかの時点で、文書、ソーシャル・メディアの投稿、ブログ、ニュース・フィード、辞書、定期刊行物などの１つまたは複数のソースが、単語埋め込みベクトル・モデルを通過しており、それに対応する文字列表現が、意味的類似度に従ってマッピングされている。
【００５０】
ブロック６０４で、１つまたは複数のデータ・レコードの文字列（例えば、データベース・レコードのテーブル）が、単語埋め込みベクトル・モデルを再び通過する。それに応じて、事前トレーニング段階でマッピングされた他の文字列表現の意味的類似度に従って、１つまたは複数のデータの文字列表現が、ベクトル空間にマッピングされる。例えば、図３を再び参照すると、示されているように、文字列「医学博士」がベクトル空間３０９内でマッピングされる。
【００５１】
ブロック６０６で、ベクトル空間内の１つまたは複数のデータ・レコードの文字列表現から各近隣（または他の単語）までの距離（例えば、コサイン距離）が、決定される。一部の実施形態では、１つまたは複数のデータ・レコードの文字列の近隣（すなわち、１つまたは複数のデータ・レコードの文字列を囲んでいる直近の単語）の各々のみが、１つまたは複数のデータ・レコードの文字列までの距離の計算に使用される。他の実施形態では、ベクトル空間（例えば、ベクトル空間３０９）内の１つまたは複数のデータ・レコードの文字列から各単語（近隣のみではない）までの距離が計算される。
【００５２】
ブロック６０８で、ポリシーに基づいて、最も近い近隣（または他の単語）が匿名化の出力候補として選択される。一部の実施形態では、ポリシーが、距離において文字列表現に最も近い単語を匿名化の候補として選択するように指定する。例えば、図３を再び参照すると、１つまたは複数のデータ・レコードの文字列が「医学博士」を含んでいた場合、「医学博士」の距離において最も近い近隣は、「高等教育」である。したがって、一部の実施形態では、「高等教育」が匿名化の出力候補として選択される。他の実施形態では、ポリシーが、１つまたは複数のデータ・レコードの文字列のオントロジーまたは別の近隣を選択するなど、必ずしも１つまたは複数のデータ・レコードの文字列表現に最も近い近隣ではない他の単語表現を候補として選択するように指定する。例えば、図３を再び参照すると、最も近い近隣である「高等教育」を候補として選択する代わりに、ポリシーは、医学博士から特定の距離にある単語（「法務博士」または「博士号」などであることができる）を選択することを指定することができる。一部の実施形態では、ポリシーは、オントロジー内の各データ・レコードをグループ化し、同じ値を特定の属性（必ずしもオントロジーの名前ではない）に使用することを指定する。例えば、複数のデータ・レコードが、オントロジー３０５内の各文字列に対応する文字列を含んでいた場合、ポリシーは、個人が識別されるのを防ぐために、教育レベルの各値を（「高等教育」の代わりに）「法務博士」などの文字列のうちの１つに変更するように指定することができる。
【００５３】
ブロック６１０で、ブロック６０８での選択がポリシーと一致しているかどうかが判定される。この判定は、定量的尺度（例えば、候補が本当に最も近い近隣であるかどうか）または定性的尺度（例えば、候補が１つまたは複数のデータ・レコードの文字列を正確な方法で表しているかどうか）あるいはその両方によって決定される。定性的尺度の１つの例では、文字列「医学博士」の最も近い近隣は、「高等教育」の代わりに「法務博士」であることができる。ポリシーが最も近い近隣を選択するように指定することができ、アルゴリズムが本当に最も近い近隣を選択したが、この近隣が、「医学博士」が属するクラスを適切に表していないことがある。これは、「医学博士」を、不正確な特定の値よりも、一般化されたクラスまたはオントロジーとして表したいということを決定するユーザによって、判断される。したがって、この状況では、ポリシーが定量的に正しく計算されたとしても、「法務博士」の候補選択はポリシーと一致しない。一部の実施形態では、ユーザのフィードバックが存在しないが、代わりに教師なしアルゴリズムが、選択がポリシーと一致しているかどうかの判定に使用されるか、または再トレーニングに使用される。これらの実施形態では、選択が定量的に正確だったかどうか、および選択が１つまたは複数のルールを満たしたかどうか（例えば、選択がオントロジー・クラスの名前だったかどうか）など、選択がポリシーと一致しているかどうかを判定するために、ルールのセットが使用され得る。
【００５４】
ブロック６１２で、ブロック６０８の選択がポリシーと一致していない場合、単語埋め込みベクトル・モデルが再トレーニングされる。例えば、ユーザまたは教師なしアルゴリズムは、複数の他のさまざまなソース文書をモデルにアップロードするか、または１つまたは複数の文字列がマッピングされるベクトル空間内の位置を手動で変更するか、あるいはその両方を実行することができる。例えば、図３を再び参照すると、「高等教育」がデータ・レコードの文字列に関連付けられている場合、ユーザまたは教師なしアルゴリズムは、さまざまなレベルの教育を定義して議論する専門的なＷｅｂサイト・ページ、選択された辞書の単語、教育について議論するニュース記事などの、教育に関連する追加文書をアップロードすることができる。別の例では、「医学博士」が１つまたは複数のデータ・レコードの文字列に含まれていた場合、ユーザは、別の通過時に「高等教育」が他の単語の代わりに候補として選択されるように、「高等教育」を医学博士の最も近くに移動することができる。ブロック６１２でデータが再トレーニングされた後に、ブロック６０４で、１つまたは複数のデータの文字列が単語埋め込みベクトル・モデルを再び通過する。ブロック６１０で選択がポリシーと一致するまで、第２の通過に対してブロック６０６および６０８が繰り返される。
【００５５】
ブロック６１４で、ブロック６０８での選択がポリシーと一致する場合、ポリシーが何であるかに従って、最も近い近隣（または他の単語）が匿名化の実際の出力として使用される。例えば、図１を参照すると、一部の実施形態では、ブロック６１４で出力として使用される文字列が、匿名化されたデータ１１３で表される。
【００５６】
図７は、実施形態に従って、データをノイズ伝搬モジュールに通すための例示的なプロセス７００のフロー図である。ブロック７０２で、１つまたは複数のデータ・テンソル（例えば、図１のデータ・テンソル１０５）が、第１の表現から第２の表現にエンコードされる。例えば、図４において説明されたように、データ・テンソルは、より高い次元からより低い次元に投影される複数のデータ・レコード・トークンであることができる。実施形態では、このエンコーディングは、データ・テンソルから加重または最も関連する情報を学習することを含み、その情報を、一部の実施形態では第１の表現の縮小または圧縮されたバージョンである、第２の表現にマッピングする。
【００５７】
ブロック７０４で、ポリシーに従って匿名化された準識別子の値が識別される。例えば、図６を再び参照すると、ブロック６１４で指定された通りに、匿名化の出力が識別される。ブロック７０６で、ブロック７０４で識別された準識別子の値の第３の表現が生成される。例えば、一部の実施形態では、ブロック７０４で識別された準識別子の値が、第２の表現と同じまたは類似する次元に圧縮される。
【００５８】
ブロック７０８で、第２の表現が第３の表現にマッピングされる。一部の実施形態では、このマッピングは、典型的なオートデコーダにおいて実行されているように、デコーディング時に元の入力（すなわち、第１の表現）が再生成されず、別のデータのセットが生成されてデコードされることを保証する。実施形態では、このマッピングは、準識別子の値を一般化し、あまり具体的ではないが意味的に一貫性のある準識別子の値に置き換えるために発生する。
【００５９】
ブロック７１０で、第３の表現が、匿名化された準識別子の値の表示可能なバージョンにデコードされる。例えば、第３の表現は、圧縮されていないバージョンにデコードされた圧縮済みのバージョンであることができる。「表示可能なバージョン」の１つの例では、ユーザによって照会が発行された後の表示時に、照会プロセッサが、下で説明されている図８のテーブル８３０に類似するスキーマで、匿名化された準識別子の値（および他のデータ）を圧縮解除して提示または表示することができる。
【００６０】
図８は、実施形態に従って、匿名化されたデータベースが表示時にどのように見えるかを示す概略図である。図８は、私的データベースを表すテーブル８００、および同じテーブル８００を匿名化された形態で表すテーブル８３０を含んでいる。テーブル８００および８３０に示されているように、個人に対応する複数のレコードが存在し、それらの個人は、「名前」属性（例えば、明示的識別子）で識別される。データベース・レコードの各々は、特定の値（例えば、６５）を、「年齢」、「郵便番号」、「教育レベル」（例えば、準識別子）、および「病気」（例えば、機密識別子）という属性内に含んでいる。テーブル８００および８３０は特定の属性、レコード、および値を示しているが、これらが代表にすぎないということ、ならびに任意の数量、表現、または種類の属性、レコード、および値が存在することができるということが、理解される。
【００６１】
テーブル８００は、すべての値が識別可能であり、個人に容易に結び付けることができるように、変更されない形態でデータを示している。したがって、データ値が抑制されておらず、その他の方法で曖昧にされて（例えば、一般化されて）もいない。テーブル８００は、他の人が既知の個人に結び付けることができるプライベート・データを含んでいるため、通常は、テーブル８００のようなデータを公開することは望ましくない。したがって、機密情報を個人に結び付けることができないようにすると同時に、研究またはその他の目的のために、望ましいデータを変更されない（または最小限に変更された）状態に保つように、データの一部または全部を匿名化するために、匿名化手法が実行される。
【００６２】
テーブル８００内のデータを匿名化するために、「教育レベル」属性内の文字列値８０１−２の各々が、テーブル８００から抽出またはコピーされて、単語埋め込みベクトル・モデル８０３（例えば、単語埋め込みベクトル・モデル１０３）を通過する。したがって、文字列値８０１−２の各々は、他の単語との意味的類似度またはその他のコンテキスト的類似度に従って、ベクトル空間（例えば、ベクトル空間３０９）内でマッピングされる。文字列値８０１−２の各々から単語埋め込みベクトル・モデル８０３内の他の単語の一部または各々までの距離が、計算される。匿名化されたテーブル８３０の「教育レベル」属性に使用される単語を決定するために、ポリシーが照会される。１つのポリシーは、文字列値８０１−２の各々の最も近い近隣（図３のベクトル空間３０９内で示されている「高等教育」または「学生」など）を選択することである。
【００６３】
実数値８０１−１の各々も、テーブル８００から抽出またはコピーされて、前述したように正規化される。一部の実施形態では、実数値８０１−１の一部または各々に関して、クラスの境界または範囲を提供する第２のポリシーまたはポリシーのセット（ｋ−匿名度、ｔ−類似度、またはｌ−多様度、あるいはその組み合わせのポリシーなど）が定義される。例えば、テーブル８３０に示されているように、ポリシーは、郵便番号の範囲および年齢の範囲によってデータベース・レコードをグループ化することを含む。
【００６４】
前述したように利用される特定のポリシーに従ってノイズを実数値８０１−１および文字列値８０１−２に追加するために、実数値８０１−１および文字列値８０１−２の各々は、ノイズ伝搬モジュール１２１（例えば、図１のノイズ伝搬モジュール１２１）を通過する。例えば、１つのポリシーは、文字列値９０１−２の各々に最も近い近隣を検出し、その最も近い近隣によって値の各々を表すことを指定することができる。図８に示されているように、テーブル８００の教育レベルの文字列値「高校」、「学士」、「法務博士」、「医学博士」、および「博士」の各々は、テーブル８３０内の「教育レベル」属性に示されているように、それらの最も近い近隣（「学生」または「高等教育」のいずれか）にマッピングされている。したがって、ユーザが照会を発行した場合、テーブル８００に示されている個別の教育レベルの代わりに、「高等教育」または「学生」が表示される。
【００６５】
一部の実施形態では、ポリシーの別のセットが、年齢の範囲または郵便番号の範囲あるいはその両方などの実数の範囲によって、範囲の境界を定義すること、または各等価クラスの点を分割すること、あるいはその両方を指定できる。例えば、図８は、テーブル８００内の年齢属性の実数値（２７、４０、６５、５８、３４、６３、４０、５４、５８）の各々が、テーブル８３０の年齢属性に示されているように、４０歳以下または４０歳以上（ポリシー）として定義されていることを示している。テーブル８００に表されている郵便番号の実数値の各々は、テーブル８３０の郵便番号属性に示されているように、既定の郵便番号の最後の３つの数字が同一であるということに従ってグループ化されており、最後の数字が抑制されている（別のポリシー）。したがって、ユーザが照会を発行した場合、テーブル８００に示されている個別の年齢および郵便番号の値の代わりに、≦４０、≧４０、４７６７＊、４７９０＊、または４７６０＊が表示される。
【００６６】
ノイズ伝搬モジュール８２１内で実装されたポリシーに従って、テーブル８００の「病気」属性値は、図８３０の「病気」属性の列に示されているように、変更されないままである。したがって、これらの機密属性値にはノイズが追加されていない。「病気」属性値の各々は、抑制に関しては変更されていない（すなわち、完全に表示可能である）が、上から下までのレコードの順序が、上記で指定されたポリシーに従って変更されている。図８の研究目的のためには名前が重要ではないため、テーブル８３０の「名前」属性の列に示されているように、テーブル８００の「名前」属性値の各々も抑制されている。変更されていない「病気」属性値をいずれかの特定の名前に結び付けることができないということも、望ましい。図に示されているように、名前属性値がノイズ伝搬モジュール８２１を通過しないため、どの名前属性値にもノイズが追加されていない。
【００６７】
データベース・レコードの出力およびテーブル８３０内のそれらの値は、等価クラス８２３を含む３つの等価クラスが存在するということを示している。等価クラスは、準識別子属性のうちの少なくとも１つに関して同じ値を含んでいる、匿名化される対象内のデータ・レコードのセットである。したがって、等価クラスは、一緒にグループ化され、特定の属性の単一の値として表される、データのサブセットである。例えば、等価クラス８２３は、レコードの各々が、各「年齢」属性内で≧４０、および各「郵便番号」属性内で「４７６７」という同じ値を含んでいることを示している。しかし、「教育レベル」値は、「高等教育」または「学生」のいずれかであるため、レコードごとに同じではない。
【００６８】
等価クラスは、任意の適切な方法で整理され得る。図８は、年齢および郵便番号の範囲に従って等価クラスが整理されていることを示している。しかし、一部の実施形態では、「機密」属性または他の準属性あるいはその両方を、追加でまたは代わりに使用して、等価クラスが整理され得る。例えば、一部の実施形態では、テーブル８３０内の特定の等価クラスの「教育レベル」値が同じである。１つの例では、「高等教育」の値を含んでいる３つのレコードが存在し、これらのレコードの各々が等価クラスにグループ化され得る。別の例では、すべての「心臓病」の値およびそれらに対応するレコードが、等価クラス内で一緒にグループ化され得る。
【００６９】
図９は、実施形態に従うコンピューティング環境９００のブロック図である。コンピューティング環境９００は、１つまたは複数のネットワーク９１８を介して、匿名化されたデータベース９０４、９０６、および９０８の各々に通信によって結合された、１つまたは複数のユーザ・デバイス９０２（例えば、図１１のコンピューティング・デバイス１２）を含んでいる。これらの匿名化されたデータベースの各々は、いずれかの時点で、私的データベース（私的データベース９１０、９１２、および９１４）として存在していた。
【００７０】
一部の実施形態では、私的データベース９１０、９１２、および９１４（例えば、図８のテーブル８００）の各々は、異なる実体の私的データ・ストアに対応する。例えば、一部の実施形態では、健康データに関して、私的データベース９１０が第１の病院のデータベース・サーバに対応し、私的データベース９１２が第２の病院のデータベース・サーバに対応し、私的データベース９１４が第３の病院のデータベース・サーバに対応する。私的データベースは、各属性および値が完全に表示可能になるように、データを変更されていない形態で含む。
【００７１】
私的データベースの各々が、（例えば、図５のプロセス５００または図１に示されたブロック図のフローあるいはその両方を介して）対応する匿名化されたデータベースに匿名化される。例えば、私的データベース９１０は、図８のテーブル８００を含むことができ、匿名化されたデータベース９０４になった場合に、図８のテーブル８３０に従って表示可能になり、テーブル８３０になるために必要な機能のすべてを実行する。
【００７２】
ユーザ・デバイス９０２を利用している研究者などのユーザは、匿名化されたデータベースの各々に配置されたデータを取得することを望むことがある。それに応じて、ユーザ・デバイス９０２は、匿名化されたデータベースの各々に含まれているデータにアクセスするために、ネットワーク９１８を経由して複数の要求（例えば、読み取り要求）を発行する。ユーザ・デバイス９０２および匿名化されたデータベースは、ネットワーク９１８を介して互いに接続を確立する。ネットワーク９１８は、ローカル・エリア・ネットワーク（ＬＡＮ：local area network）、一般的な広域ネットワーク（ＷＡＮ：wide area network）、パーソナル・エリア・ネットワーク（ＰＡＮ：personal area network）、またはパブリック・ネットワーク（例えば、インターネット）、あるいはその組み合わせなどの、任意の適切なネットワークであるか、またはこれらのネットワークを含む。一部の実施形態では、コンピューティング環境９００は、図１１において説明されているように、クラウド・コンピューティング環境５０であるか、またはクラウド・コンピューティング環境５０を含む。
【００７３】
図１０は、実施形態に従うコンピューティング環境１０００のブロック図である。コンピューティング環境１０００は、１つまたは複数のネットワーク１０１８を介して、集約されて匿名化されたデータベース１００４に通信によって結合された、１つまたは複数のユーザ・デバイス１００２（例えば、図１１のコンピューティング・デバイス１２）を含んでいる。集約されて匿名化されたデータベース１００４は、匿名化されたデータベースのグループを含んでいる単一の集中的なデータ・ストアである。集約されて匿名化されたデータベース１００４は、あるとき、集約された私的データベース１００６として存在していた。集約された私的データベース１００６は、私的データベース１００８、１０１０、および１０１２の各々を含んでいる単一の集中的な私的データ・ストアである。
【００７４】
一部の実施形態では、私的データベース１００８、１０１０、および１０１２の各々は、異なる実体の私的データ・ストアに対応する。例えば、一部の実施形態では、健康データに関して、私的データベース１００８が第１の医療センターのサーバに対応し、私的データベース１０１０が第２の医療センターのサーバに対応し、私的データベース１０１２が第３の医療センターのサーバに対応する。私的データベースは、各属性および値が完全に表示可能になるように、データを変更されていない形態で含む。
【００７５】
私的データベースの各々は、信頼できるサード・パーティ（例えば、私的データベース１００８、１０１０、および１０１２に関連付けられた実体から分離している別のコンピューティング・デバイスの実体）などの独立したソースによって、１つのデータ・ストアに集約または統合される。次に、集約された私的データベース１００６が、（例えば、図５のプロセス５００または図１に示されたブロック図のフローあるいはその両方を介して）対応する集約されて匿名化されたデータベース１００４に匿名化される。例えば、集約された私的データベース１００６は、図８のテーブル８００に類似した複数のテーブルまたはデータベースを含むことができ、それらの複数のテーブルまたはデータベースあるいはその両方は、匿名化され、集約されて匿名化されたデータベース１００４になった場合に、図８のテーブル８３０のように表示可能になり、テーブル８３０になるために必要な機能のすべてを実行する。
【００７６】
ユーザ・デバイス１００２を利用している研究者などのユーザは、集約されて匿名化されたデータベース１００４に配置されたデータを取得することを望むことがある。それに応じて、ユーザ・デバイス１００２は、集約されて匿名化されたデータベース１００４に含まれているデータにアクセスするために、ネットワーク１０１８を経由して要求を発行する。ユーザ・デバイス１００２および集約されて匿名化されたデータベース１００４は、ネットワーク１０１８を介して互いに接続を確立する。ネットワーク１０１８は、ローカル・エリア・ネットワーク（ＬＡＮ：local area network）、一般的な広域ネットワーク（ＷＡＮ：wide area network）、パーソナル・エリア・ネットワーク（ＰＡＮ：personal area network）、またはパブリック・ネットワーク（例えば、インターネット）、あるいはその組み合わせなどの、任意の適切なネットワークであるか、またはこれらのネットワークを含む。一部の実施形態では、コンピューティング環境１０００は、図１１において説明されているように、クラウド・コンピューティング環境５０であるか、またはクラウド・コンピューティング環境５０を含む。
【００７７】
本開示にはクラウド・コンピューティングに関する詳細な説明が含まれているが、本明細書において示された内容の実装は、クラウド・コンピューティング環境に限定されないと理解されるべきである。本発明の実施形態は、現在既知であるか、または今後開発される任意のその他の種類のコンピューティング環境と組み合わせて実装できる。
【００７８】
クラウド・コンピューティングは、構成可能な計算リソース（例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス）の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス提供モデルであり、管理上の手間とサービス・プロバイダとのやりとりを最小限に抑えて、それらのリソースを迅速にプロビジョニングおよび解放することができる。このクラウド・モデルは、少なくとも５つの特徴、少なくとも３つのサービス・モデル、および少なくとも４つのデプロイメント・モデルを含むことができる。
【００７９】
特徴は、次のとおりである。
オンデマンドのセルフ・サービス：クラウドの利用者は、サーバの時間、ネットワーク・ストレージなどの計算能力を一方的に、サービス・プロバイダとの人間的なやりとりを必要とせず、必要に応じて自動的にプロビジョニングすることができる。
幅広いネットワーク・アクセス：クラウドの能力は、ネットワークを経由して利用可能であり、標準的なメカニズムを使用してアクセスできるため、異種のシン・クライアントまたはシック・クライアント・プラットフォーム（例えば、携帯電話、ラップトップ、およびＰＤＡ）による利用を促進する。
リソース・プール：プロバイダの計算リソースは、プールされ、マルチテナント・モデルを使用して複数の利用者に提供される。さまざまな物理的および仮想的リソースが、要求に従って動的に割り当ておよび再割り当てされる。場所に依存しないという感覚があり、利用者は通常、提供されるリソースの正確な場所に関して管理することも知ることもないが、さらに高い抽象レベルでは、場所（例えば、国、州、またはデータセンター）を指定できる場合がある。
迅速な順応性：クラウドの能力は、迅速かつ柔軟に、場合によっては自動的にプロビジョニングされ、素早くスケールアウトし、迅速に解放されて素早くスケールインすることができる。プロビジョニングに使用できる能力は、利用者には、多くの場合、任意の量をいつでも無制限に購入できるように見える。
測定されるサービス：クラウド・システムは、計測機能を活用することによって、サービスの種類（例えば、ストレージ、処理、帯域幅、およびアクティブなユーザのアカウント）に適した抽象レベルで、リソースの使用を自動的に制御および最適化する。リソースの使用量は監視、制御、および報告することができ、利用されるサービスのプロバイダと利用者の両方に透明性が提供される。
【００８０】
サービス・モデルは、次のとおりである。
ＳａａＳ（Software as a Service）：利用者に提供される能力は、クラウド・インフラストラクチャ上で稼働しているプロバイダのアプリケーションの利用である。それらのアプリケーションは、Ｗｅｂブラウザ（例えば、Ｗｅｂベースの電子メール）などのシン・クライアント・インターフェイスを介して、さまざまなクライアント・デバイスからアクセスできる。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能を含む基盤になるクラウド・インフラストラクチャを、限定的なユーザ固有のアプリケーション構成設定を行う可能性を除き、管理することも制御することもない。
ＰａａＳ（Platform as a Service）：利用者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、利用者が作成または取得したアプリケーションをクラウド・インフラストラクチャにデプロイすることである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、デプロイされたアプリケーション、および場合によってはアプリケーション・ホスティング環境の構成を制御することができる。
ＩａａＳ（Infrastructure as a Service）：利用者に提供される能力は、処理、ストレージ、ネットワーク、およびその他の基本的な計算リソースのプロビジョニングであり、利用者は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをデプロイして実行できる。利用者は、基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、およびデプロイされたアプリケーションを制御することができ、場合によっては、選択されたネットワーク・コンポーネント（例えば、ホスト・ファイアウォール）を限定的に制御できる。
【００８１】
デプロイメント・モデルは、次のとおりである。
プライベート・クラウド：このクラウド・インフラストラクチャは、ある組織のためにのみ運用される。この組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
コミュニティ・クラウド：このクラウド・インフラストラクチャは、複数の組織によって共有され、関心事（例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスに関する考慮事項）を共有している特定のコミュニティをサポートする。これらの組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
パブリック・クラウド：このクラウド・インフラストラクチャは、一般ユーザまたは大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド：このクラウド・インフラストラクチャは、データとアプリケーションの移植を可能にする標準化された技術または独自の技術（例えば、クラウド間の負荷バランスを調整するためのクラウド・バースト）によって固有の実体を残したまま互いに結合された２つ以上のクラウド（プライベート、コミュニティ、またはパブリック）の複合である。
【００８２】
クラウド・コンピューティング環境は、ステートレス、疎結合、モジュール性、および意味的相互運用性に重点を置いたサービス指向の環境である。クラウド・コンピューティングの中心になるのは、相互接続されたノードのネットワークを含んでいるインフラストラクチャである。
【００８３】
ここで図１１を参照すると、例示的なクラウド・コンピューティング環境５０が示されている。図示されているように、クラウド・コンピューティング環境５０は、クラウドの利用者によって使用されるローカル・コンピューティング・デバイス（例えば、パーソナル・デジタル・アシスタント（ＰＤＡ：personal digital assistant）または携帯電話５４Ａ、デスクトップ・コンピュータ５４Ｂ、ラップトップ・コンピュータ５４Ｃ、または自動車コンピュータ・システム５４Ｎ、あるいはその組み合わせなど）が通信できる１つまたは複数のクラウド・コンピューティング・ノード１０を含んでいる。ノード１０は、互いに通信してよい。ノード１０は、１つまたは複数のネットワーク内で、本明細書において前述されたプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、またはハイブリッド・クラウド、あるいはこれらの組み合わせなどに、物理的または仮想的にグループ化されてよい（図示されていない）。これによって、クラウド・コンピューティング環境５０は、クラウドの利用者がローカル・コンピューティング・デバイス上でリソースを維持する必要のないインフラストラクチャ、プラットフォーム、またはＳａａＳ、あるいはその組み合わせを提供できる。図１１に示されたコンピューティング・デバイス５４Ａ〜Ｎの種類は、例示のみが意図されており、コンピューティング・ノード１０およびクラウド・コンピューティング環境５０は、任意の種類のネットワークまたはネットワーク・アドレス可能な接続（例えば、Ｗｅｂブラウザを使用した接続）あるいはその両方を経由して任意の種類のコンピュータ制御デバイスと通信することができると理解される。
【００８４】
ここで図１２を参照すると、クラウド・コンピューティング環境５０（図１１）によって提供される機能的抽象レイヤのセットが示されている。図１２に示されたコンポーネント、レイヤ、および機能は、例示のみが意図されており、本発明の実施形態がこれらに限定されないということが、あらかじめ理解されるべきである。図示されているように、次のレイヤおよび対応する機能が提供される。
【００８５】
ハードウェアおよびソフトウェア・レイヤ６０は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム６１、ＲＩＳＣ（Reduced Instruction Set Computer）アーキテクチャベースのサーバ６２、サーバ６３、ブレード・サーバ６４、ストレージ・デバイス６５、ならびにネットワークおよびネットワーク・コンポーネント６６が挙げられる。一部の実施形態では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア６７およびデータベース・ソフトウェア６８を含む。
【００８６】
仮想化レイヤ７０は、仮想サーバ７１、仮想ストレージ７２、仮想プライベート・ネットワークを含む仮想ネットワーク７３、仮想アプリケーションおよびオペレーティング・システム７４、ならびに仮想クライアント７５などの仮想的実体を提供できる抽象レイヤを備える。
【００８７】
一例を挙げると、管理レイヤ８０は、以下で説明される機能を提供できる。リソース・プロビジョニング８１は、クラウド・コンピューティング環境内でタスクを実行するために利用される計算リソースおよびその他のリソースの動的調達を行う。計測および価格設定８２は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡、およびそれらのリソースの利用に対する請求書の作成と送付を行う。一例を挙げると、それらのリソースは、アプリケーション・ソフトウェア・ライセンスを含んでよい。セキュリティは、クラウドの利用者およびタスクのＩＤ検証を行うとともに、データおよびその他のリソースの保護を行う。ユーザ・ポータル８３は、クラウド・コンピューティング環境へのアクセスを利用者およびシステム管理者に提供する。サービス・レベル管理８４は、必要なサービス・レベルを満たすように、クラウドの計算リソースの割り当てと管理を行う。サービス水準合意（ＳＬＡ：Service Level Agreement）計画および実行８５は、今後の要求が予想されるクラウドの計算リソースの事前準備および調達を、ＳＬＡに従って行う。
【００８８】
ワークロード・レイヤ９０は、クラウド・コンピューティング環境で利用できる機能の例を示している。このレイヤから提供されてよいワークロードおよび機能の例としては、マッピングおよびナビゲーション９１、ソフトウェア開発およびライフサイクル管理９２、仮想クラスルーム教育の配信９３、データ分析処理９４、トランザクション処理９５、およびノイズ伝搬に基づくデータ匿名化９６（例えば、図５のプロセス５００に基づく匿名化）が挙げられる。
【００８９】
図１３は、実施形態に従うコンピューティング・デバイス１２のブロック図である。図１３に示されているように、コンピューティング・デバイス１２は、汎用コンピューティング・デバイスの形態で示されているが、必ずしも一般的な機能を実行する汎用コンピュータとして当業者によって解釈されるべきではない。むしろコンピューティング・デバイス１２は、コンピューティング・デバイスが何のコンポーネントを含んでよいかについての例示にすぎない。コンピューティング・デバイス１２のコンポーネントは、１つまたは複数のプロセッサまたはプロセッシング・ユニット１６、システム・メモリ２８、およびシステム・メモリ２８を含むさまざまなシステム・コンポーネントをプロセッサ１６に結合するバス１８を含んでよいが、これらに限定されない。一部の実施形態では、コンピューティング・デバイス１２は、ユーザ・デバイス９０２、１００２、匿名化されたデータベース（例えば、９０４）、集約されて匿名化されたデータベース１００４を含んでいるコンピューティング・デバイス、図１１に含まれているコンピューティング・デバイス５４もしくはノード１０またはその両方、または図１のフローを実装するデバイス、あるいはその組み合わせを表す。
【００９０】
バス１８は、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、アクセラレーテッド・グラフィックス・ポート、およびさまざまなバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを含む、複数の種類のバス構造のいずれかのうちの１つまたは複数を表す。例として、そのようなアーキテクチャは、ＩＳＡバス、ＭＣＡバス、ＥＩＳＡバス、ＶＥＳＡローカル・バス、およびＰＣＩバスを含むが、これらに限定されない。
【００９１】
コンピューティング・デバイス１２は、通常、さまざまなコンピュータ・システム可読媒体を含む。そのような媒体は、コンピューティング・デバイス１２によってアクセスできる任意の使用可能な媒体であってよく、揮発性および不揮発性媒体、取り外し可能および取り外し不可の媒体を含む。
【００９２】
システム・メモリ２８は、ランダム・アクセス・メモリ（ＲＡＭ）３０またはキャッシュ・メモリ３２あるいはその両方などの、揮発性メモリの形態でのコンピュータ・システム可読媒体を含むことができる。コンピューティング・デバイス１２は、その他の取り外し可能／取り外し不可、揮発性／不揮発性のコンピュータ・システム・ストレージ媒体をさらに含んでよい。単に例として、取り外し不可、不揮発性の磁気媒体（図示されておらず、通常は「ハード・ドライブ」と呼ばれる）に対する読み取りと書き込みを行うために、ストレージ・システム３４を提供することができる。図示されていないが、取り外し可能、不揮発性の磁気ディスク（例えば、「フロッピー（Ｒ）・ディスク」）に対する読み取りと書き込みを行うための磁気ディスク・ドライブ、およびＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、またはその他の光媒体などの取り外し可能、不揮発性の光ディスクに対する読み取りと書き込みを行うための光ディスク・ドライブを提供することができる。そのような例では、それぞれを、１つまたは複数のデータ媒体インターフェイスによってバス１８に接続することができる。下で詳細に示され、説明されているように、メモリ２８は、本発明の実施形態の機能を実行するように構成された一連の（例えば、少なくとも１つの）プログラム・モジュールを備える少なくとも１つのプログラム製品を含んでよい。
【００９３】
例えば、一連の（少なくとも１つの）プログラム・モジュール４２を含んでいるプログラム／ユーティリティ４０がメモリ２８に格納されてよいが、これに限定されず、オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データも格納されてよい。オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データまたはこれらの組み合わせは、それぞれネットワーク環境の実装を含んでよい。プログラム・モジュール４２は、通常、本明細書に記載された本発明の実施形態の機能または方法あるいはその両方を実行する。例えば、プログラム・モジュール４２は、図１のフロー、図２で説明されたプロセス、図３で説明された方法、図４で説明されたノイズ伝搬モジュール１２１、プロセス５００、プロセス６００、プロセス７００、図８で説明された機能、図９で説明されたコンピューティング環境の機能、または図１０で説明されたコンピューティング環境の機能、あるいはその組み合わせであるか、またはこれらを含んでよい。
【００９４】
コンピューティング・デバイス１２は、キーボード、ポインティング・デバイス、ディスプレイ２４などの１つまたは複数の外部デバイス１４、ユーザがコンピューティング・デバイス１２と情報をやりとりできるようにする１つまたは複数のデバイス、またはコンピューティング・デバイス１２が１つまたは複数の他のコンピューティング・デバイスと通信できるようにする任意のデバイス（例えば、ネットワーク・カード、モデムなど）、あるいはその組み合わせと通信してもよい。そのような通信は、入出力（Ｉ／Ｏ）インターフェイス２２を介して行うことができる。さらに、コンピューティング・デバイス１２は、ローカル・エリア・ネットワーク（ＬＡＮ）、一般的な広域ネットワーク（ＷＡＮk）、またはパブリック・ネットワーク（例えば、インターネット）、あるいはその組み合わせなどの１つまたは複数のネットワークと、ネットワーク・アダプタ２０を介して通信することができる。図に示されているように、ネットワーク・アダプタ２０は、バス１８を介してコンピューティング・デバイス１２の他のコンポーネントと通信する。図示されていないが、その他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を、コンピューティング・デバイス１２と併用できるということが理解されるべきである。その例として、マイクロコード、デバイス・ドライバ、冗長プロセッシング・ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが挙げられるが、これらに限定されない。
【００９５】
本発明の態様は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせであってよい。コンピュータ・プログラム製品は、プロセッサにさまざまな実施形態の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読記憶媒体を含んでよい。
【００９６】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読記憶媒体のさらに具体的な例の非網羅的リストは、ポータブル・フロッピー（登録商標）・ディスク、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ：またはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー（Ｒ）・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組み合わせを含む。本明細書において使用されるとき、コンピュータ可読記憶媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を伝搬する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、あるいはワイヤを介して送信される電気信号などの一過性の信号であると解釈されるべきではない。
【００９７】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から各コンピューティング・デバイス／処理デバイスへ、またはネットワーク（例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組み合わせ）を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを備えてよい。各コンピューティング・デバイス／処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス／処理デバイス内のコンピュータ可読記憶媒体に格納するために転送する。
【００９８】
本発明の実施形態の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいは、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む１つまたは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）または広域ネットワーク（ＷＡＮ）を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、（例えば、インターネット・サービス・プロバイダを使用してインターネットを介して）外部コンピュータに対して行われてよい。一部の実施形態では、本発明の実施形態の態様を実行するために、例えばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラマブル・ロジック・アレイ（ＰＬＡ：）を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行してよい。
【００９９】
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
【０１００】
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能／動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読記憶媒体がフローチャートまたはブロック図あるいはその両方のブロックに指定される機能／動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読記憶媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組み合わせに特定の方式で機能するように指示できるものであってもよい。
【０１０１】
コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能／動作を実施するように、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込まれてもよく、それによって、一連の動作可能なステップを、コンピュータ上、その他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成するその他のデバイス上で実行させる。
【０１０２】
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための１つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された２つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組み合わせは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組み合わせを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。
【０１０３】
本発明のさまざまな実施形態の説明は、例示の目的で提示されているが、網羅的であることは意図されておらず、開示された実施形態に制限されない。説明された実施形態の範囲を逸脱することなく多くの変更および変形が可能であることは、当業者にとって明らかである。本明細書で使用された用語は、実施形態の原理、実際の適用、または市場で見られる技術を超える技術的改良を説明するため、または他の当業者が本明細書で開示された実施形態を理解できるようにするために選択されている。
【０１０４】
以下の定義は、本開示に固有である。
「または〜あるいはその組み合わせ（and/or）」は、包含的離接であり、論理離接とも呼ばれ、一般に「包含的論理和」と呼ばれる。例えば、「Ａ、Ｂ、またはＣ、あるいはその組み合わせ」という語句は、ＡまたはＢまたはＣのうちの少なくとも１つが真であるということを意味しており、「Ａ、Ｂ、またはＣ、あるいはその組み合わせ」は、ＡおよびＢおよびＣの各々が偽である場合にのみ、偽になる。
項目「のセット」は、１つまたは複数の項目が存在しており、少なくとも１つの項目が存在しなければならないが、２つ、３つ、またはそれ以上の項目が存在する可能性もあるということを意味する。項目「のサブセット」は、共通の特徴を含んでいる項目のグループ内に１つまたは複数の項目が存在するということを意味する。
「含む（includes）」およびその変形（例えば、含んでいる（including）、含む（include）など）は、特に明示的に示されない限り、「〜を含むが、必ずしもそれに限定されない」ということを意味する。
「ユーザ」または「サブスクライバ」は、（ｉ）１人の個人、（ｉｉ）１人の個人または２人以上の人間の代わりに行動するための十分な知能を有する人工知能の実体、（ｉｉｉ）１人の個人または２人以上の人間によって活動が行われている企業実体、または（ｉｖ）１つの「ユーザ」または「サブスクライバ」として行動している任意の１つまたは複数の関連する「ユーザ」または「サブスクライバ」の組み合わせ、あるいはその組み合わせを含むが、必ずしもこれらに限定されない。
「受信する」、「提供する」、「送信する」、「入力する」、「出力する」、および「報告する」という用語は、特に明示的に指定されない限り、（ｉ）物体と対象の間の関係に関する直接性の特定の程度、または（ｉｉ）物体と対象の間に挿入された中間的なコンポーネント、中間的な動作、もしくは物、またはその組み合わせのセットの存在もしくは不在、あるいはその両方を示しているか、または暗示していると受け取られるべきではない。
「モジュール」は、ハードウェア、ファームウェア、またはソフトウェア、あるいはその組み合わせの任意のセットであり、モジュールが次のいずれの状態であるかに関わらず、機能を実行するように動作可能である。（ｉ）１つにまとまって局所的に近接している、（ｉｉ）広い領域にわたって分散している、（ｉｉｉ）大きい一群のソフトウェア・コード内で１つにまとまって近接している、（ｉｖ）一群のソフトウェア・コード内に存在する、（ｖ）１つのストレージ・デバイス、メモリ、または媒体内に存在する、（ｖｉ）機械的に接続されている、（ｖｉｉ）電気的に接続されている、または（ｖｉｉｉ）データ通信で接続されている、あるいはその組み合わせの状態にある。「サブモジュール」は、「モジュール」内の「モジュール」である。
本明細書において説明されているように、「データ・ストア」は、データを格納するため、または管理するため、あるいはその両方を行うための、任意の種類の保存場所である。例えば、データ・ストアは、１つまたは複数の、データベース、ファイル（例えば、非構造化データのファイル）、コーパス、デジタル文書などであるか、またはこれらを含むことができる。
「引き起こしている」または「引き起こす」という用語は、１つまたは複数のシステム（例えば、コンピューティング・デバイス）またはコンポーネント（例えば、プロセッサ）あるいはその両方が、他のシステムまたはコンポーネントあるいはその両方から孤立して、またはそれらと組み合わせられて、特定の結果または効果をもたらすか、またはもたらすことに役立ってよいということを意味する。例えば、サーバ・コンピューティング・デバイスが、（例えば、メッセージをユーザ・デバイスに送信することによって）メッセージがユーザ・デバイスに表示されることを「引き起こし」てよく、または同じユーザ・デバイスが、（例えば、ユーザ・デバイスの表示メモリ内の命令およびデータを実行するプロセッサを介して）同じメッセージが表示されることを「引き起こし」てよく、あるいはその両方が行われてよい。したがって、１つまたは両方のシステムが、孤立して、または一緒に、メッセージを表示する効果を「引き起こし」てよい。
「コンピューティング・システム」または「デバイス」という用語は、単一のコンピューティング・デバイス（例えば、モバイル・デバイス）または複数のコンピューティング・デバイス（例えば、複数のクラウド・コンピューティング・ノード）あるいはその両方を意味する。
第１（例えば、第１のキャッシュ）、第２（例えば、第２のキャッシュ）などの用語は、明示的に述べられない限り、順序または時系列を示しているとして、または暗示しているとして解釈されるべきではない。むしろこれらの用語は、２つ以上の要素を区別していると解釈されるべきである。一部の実施形態では、２つ以上の要素が、区別可能であるが、同じ構成を有する。例えば、第１のメモリおよび第２のメモリは、実際に２つの別々のメモリであるが、両方とも、同じ記憶容量（例えば、４ＧＢ）を有するＲＡＭデバイスであってよい。
【図１】
2021504798.tif 000005
【図２】
2021504798.tif 000006
【図３】
2021504798.tif 000007
【図４】
2021504798.tif 000008
【図５】
2021504798.tif 000009
【図６】
2021504798.tif 000010
【図７】
2021504798.tif 000011
【図８】
2021504798.tif 000012
【図９】
2021504798.tif 000013
【図１０】
2021504798.tif 000014
【図１１】
2021504798.tif 000015
【図１２】
2021504798.tif 000016
【図１３】
2021504798.tif 000017
【手続補正書】
【提出日】令和2年6月18日(2020.6.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータが実行する方法であって、
１つまたは複数のデータ・ストアに関連付けられた第１のデータのセットを受信することと、
前記第１のデータのセットの１つまたは複数の文字列を少なくとも１つの単語埋め込みベクトル・モデルに通すことであって、前記１つまたは複数の文字列の少なくとも１つの表現がベクトル空間内でマッピングされることを引き起こすことを含んでいる、前記通すことと、
前記１つまたは複数の文字列を前記少なくとも１つの単語埋め込みベクトル・モデルに前記通すことに少なくとも基づいて前記第１のデータのセットを匿名化することであって、前記匿名化することが、第１の属性の１つまたは複数の値を抑制すること、および第２の属性の１つまたは複数の特定の値を抑制しないことを含んでいる、前記匿名化することとを含んでいる、コンピュータ実装方法。
【請求項２】
前記１つまたは複数のデータ・ストアが１つまたは複数のリレーショナル・データベースを含んでおり、前記第１のデータのセットが、前記１つまたは複数のリレーショナル・データベース内の複数のデータベース・レコードに含まれており、前記方法が、
前記データベース・レコードの各々から、１つまたは複数の実数を最初に抽出することであって、前記１つまたは複数の文字列が最初に抽出されない、前記抽出することと、
前記１つまたは複数の実数の各々を正規化することと、
前記１つまたは複数の実数を１つまたは複数のテンソル値として表すこととさらに含んでいる、請求項１に記載の方法。
【請求項３】
前記ベクトル空間が、前記１つまたは複数の文字列を通す前に存在していた複数の単語表現を含んでおり、前記方法が、
前記１つまたは複数の文字列をデータ・レコードから抽出することと、
前記少なくとも１つの表現を前記ベクトル空間内でプロットすることと、
前記少なくとも１つの表現の最も近い近隣を前記ベクトル空間内で決定することであって、前記最も近い近隣が、前記複数の単語表現のうちの１つである、前記決定することと、
前記最も近い近隣を、前記１つまたは複数の文字列を表すための値として利用することであって、照会要求に応答して、前記１つまたは複数の文字列の代わりに、前記最も近い近隣が表示において表示される、前記利用することとをさらに含んでいる、請求項１に記載の方法方法。
【請求項４】
前記第１のデータのセットの各明示的識別子の値を抑制することであって、前記明示的識別子の値が個人を直接識別する、前記抑制することと、
前記第１のデータのセットの準識別子の値のセットおよび機密識別子の値のセットを識別することであって、前記準識別子の値のセットが、特定の個人を間接的に識別する可能性がある値のセットに対応し、前記機密識別子の値のセットが、個人の秘密である値のセットに対応する、前記識別することとをさらに含んでいる、請求項１に記載の方法。
【請求項５】
前記明示的識別子の値、前記準識別子の値のセット、および前記機密識別子の値のセットが、１つまたは複数のデータベース・テーブル内の各属性に関連付けられており、前記方法が、
前記準識別子の値のセットを複数のデータベース・レコードから抽出することと、
前記準識別子の値のサブセットを前記少なくとも１つの単語埋め込みベクトル・モデルに通すことであって、前記明示的識別子の値が、前記少なくとも１つの単語埋め込みベクトル・モデルを通過しない、前記通すことと、
照会に対して前記各属性を匿名化されたデータとして提示することであって、前記明示的識別子の値がいずれも表示可能でなく、前記機密識別子の値の各々が表示可能である、前記提示することとさらに含んでいる、請求項４に記載の方法。
【請求項６】
前記少なくとも１つの単語埋め込みベクトル・モデルが最初に事前にトレーニングされており、前記方法が、
前記ベクトル空間内の前記１つまたは複数の文字列の前記少なくとも１つの表現から複数の他の表現までの距離を決定することと、
ポリシーに基づいて、前記複数の表現のうちの１つの表現を匿名化の出力候補として選択することと、
前記表現の前記選択が前記ポリシーと一致していないということを決定することと、
前記表現の前記選択が前記ポリシーと一致していないということの前記決定に応答して、前記単語埋め込みベクトル・モデルを再トレーニングすることとさらに含んでいる、請求項１に記載の方法方法。
【請求項７】
前記少なくとも１つの単語埋め込みベクトル・モデルが１つまたは複数のｗｏｒｄ２ｖｅｃ  ２層ニューラル・ネットワーク・モデルを含んでおり、前記少なくとも１つの表現が、他の表現との意味論的意味の類似性に従ってベクトル空間内でマッピングされた１つまたは複数の数値表現であり、前記他の表現のうちの第２の表現が、照会要求に応答した表示時に前記少なくとも１つの表現を表すように選択される、請求項１に記載の方法。
【請求項８】
少なくとも１つのプロセッサを含んでいる少なくとも１つのコンピューティング・デバイスと、
プログラム命令が具現化されている少なくとも１つのコンピュータ可読記憶媒体とを備えているシステムであって、前記少なくとも１つのプロセッサによって読み取り可能または実行可能な前記プログラム命令が、前記システムに、
１つまたは複数のデータ・ストアに関連付けられた第１のデータのセットを受信することと、
前記第１のデータのセットをノイズ伝搬モジュールに通すことであって、前記通すことが、ノイズを前記第１のデータのセットに追加することを含んでおり、前記ノイズの前記追加が、前記第１のデータのセットの少なくともサブセットが一緒にグループ化され、特定の属性の単一の値として表されることを引き起こすことを含んでいる、前記通すことと、
前記第１のデータのセットを前記ノイズ伝搬モジュールに前記通すことに少なくとも基づいて前記第１のデータのセットを匿名化することであって、前記匿名化することが、第１の属性の１つまたは複数の値を抑制すること、および第２の属性の各特定の値を抑制しないことを含んでいる、前記匿名化することとを実行させる、システム。
【請求項９】
前記少なくとも１つのプロセッサによって読み取り可能または実行可能な前記プログラム命令が、前記システムに、
前記第１のデータのセットを表す第１のテンソルのセットを、入力層の第１の表現から隠れ層内の第２の表現にエンコードすることと、
ポリシーに従って匿名化されている１つまたは複数の準識別子の値を識別することとをさらに実行させる、請求項８に記載のシステム。
【請求項１０】
前記少なくとも１つのプロセッサによって読み取り可能または実行可能な前記プログラム命令が、前記システムに、前記第１のデータのセットの第３の表現を、前記隠れ層および匿名化された層から出力層にデコードすることをさらに実行させ、前記デコードすることが、前記第１の表現の代わりに前記１つまたは複数の匿名化された準識別子の値の表示可能なバージョンが表示されることを引き起こす、請求項９に記載のシステム。
【請求項１１】
前記少なくとも１つのプロセッサによって読み取り可能または実行可能な前記プログラム命令が、前記システムに、
前記１つまたは複数の準識別子の値の第３の表現を生成することと、
前記第３の表現を前記生成することに応答して、前記第２の表現を前記隠れ層からアノニマイザ層の前記第３の表現にマッピングすることとをさらに実行させる、請求項９に記載のシステム。
【請求項１２】
前記少なくとも１つのプロセッサによって読み取り可能または実行可能な前記プログラム命令が、前記システムに、
前記第１のデータのセットの各明示的識別子の値を抑制することであって、前記明示的識別子の値が個人を直接識別する、前記抑制することと、
前記第１のデータのセットの準識別子の値のセットおよび機密識別子の値のセットを識別することであって、前記準識別子の値のセットが、特定の個人を間接的に識別する可能性がある値のセットに対応し、前記機密識別子の値のセットが、個人の秘密である値のセットに対応する、前記識別することと、
前記準識別子の値のセットを前記識別することに応答して、ノイズを前記準識別子の値のセットのみに追加して、前記準識別子のセットの値を、あまり具体的ではないが前記準識別子の値のセットと意味的に一致している別の値のセットに置き換えることであって、前記ノイズが前記明示的識別子の値および前記機密識別子の値に追加されない、前記置き換えることとをさらに実行させる、請求項８に記載のシステム。
【請求項１３】
前記第１のデータのセットが１つまたは複数の単語に対応し、前記ノイズ伝搬モジュールがエンコーダ、デコーダ、および前記エンコーダと前記デコーダの間に位置するアノニマイザを含んでおり、前記第１のデータのセットが、最初に前記エンコーダによってエンコードされることによって前記ノイズ伝搬モジュールを前記通過することを実行し、次に、前記第１のデータのセットが、前記エンコーダからアノニマイザに渡されて、前記１つまたは複数の単語を、前記１つまたは複数の単語にコンテキスト的に類似している第２の単語のセットとして表し、その後、前記１つまたは複数の単語の代わりに前記第２の単語のセットを表示するために、前記第２の単語のセットが前記アノニマイザからデコードされる、請求項８に記載のシステム。
【請求項１４】
前記少なくとも１つのプロセッサによって読み取り可能または実行可能な前記プログラム命令が、前記システムに、前記第１のデータのセットを前記ノイズ伝搬モジュールに前記通す前に、前記第１のデータのセットを前記匿名化するために、前記第１のデータのサブセットを１つまたは複数の単語埋め込みベクトル・モデルに通して、１つまたは複数の属性値を変更することをさらに実行させる、請求項８に記載のシステム。
【請求項１５】
プログラム命令が具現化されているコンピュータ可読記憶媒体を備えているコンピュータ・プログラムであって、前記コンピュータ・プログラムは、前記コンピューティング・デバイスに、
１つまたは複数のデータ・ストアに関連付けられた第１のデータのセットを受信することと、
ベクトル空間内の前記第１のデータのセットのサブセットの表現から、少なくとも別のデータのセットの第２の表現までの距離を識別することと、
前記距離を前記識別することに応答して、前記第１のデータのセットを匿名化することであって、ノイズを前記第１のデータのセットの少なくとも一部に追加することを含んでいる、前記匿名化することとを実行させる、コンピュータ・プログラム。
【請求項１６】
前記匿名化が、少なくとも第１の値を抑制することと、１つまたは複数の等価クラスを生成することと、属性の各値をより広い値に変更するように、前記属性を一般化することとを含んでおり、前記より広い値が前記別のデータのセットの前記第２の表現を含んでいる、請求項１５に記載のコンピュータ・プログラム。
【請求項１７】
前記第１のデータのセットが１つまたは複数のデータベース・テーブル内に論理的に配置され、コンピューティング・デバイスによって読み取り可能または実行可能な前記プログラム命令が、前記コンピューティング・デバイスに、
１つまたは複数の準識別子の文字列表現を１つまたは複数のデータベース・レコードから抽出し、前記文字列表現を１つまたは複数の単語埋め込みベクトル・モデルに通すことと、
１つまたは複数の準識別子の実数を前記１つまたは複数のデータベース・レコードから抽出することと、
ノイズを前記１つまたは複数の準識別子の文字列表現および前記１つまたは複数の準識別子の実数の両方に追加することとをさらに実行させ、データベース表示が、前記１つまたは複数の準識別子の文字列表現ではなく前記第２の表現を表示するように、前記ノイズの前記追加が、前記ベクトル空間内の前記第２の表現を出力として使用して、前記データベース・テーブル内の前記１つまたは複数の準識別子の文字列表現の各々を置き換えることを含んでいる、請求項１５に記載のコンピュータ・プログラム。
【請求項１８】
前記ノイズの前記追加が、修正されたオートエンコーダによって実行され、前記修正されたオートエンコーダが、エンコーダ、デコーダ、および前記エンコーダと前記デコーダの間にあるアノニマイザ・モジュールを含んでいる、請求項１５に記載のコンピュータ・プログラム。
【請求項１９】
コンピューティング・デバイスによって読み取り可能または実行可能な前記プログラム命令が、前記コンピューティング・デバイスに、
複数の私的データベースを集中的な私的データベースに集約することと、
前記複数の私的データベースの前記集約に応答して、前記集中的な私的データベースを匿名化することであって、前記集中的な私的データベースが、前記匿名化された第１のデータのセットを含んでいる、前記匿名化することと、
前記集中的な私的データベースの前記匿名化に応答して、前記第１のデータのセットに対する照会要求を受信することとをさらに実行させる、請求項１５に記載のコンピュータ・プログラム。
【請求項２０】
コンピューティング・デバイスによって読み取り可能または実行可能な前記プログラム命令が、前記コンピューティング・デバイスに、
第２のデータのセットの各明示的識別子の値を抑制することと、
前記第３のデータのセットの各機密の値を変更されない状態に保つことと、
複数の等価クラスを生成することと、
前記第１のデータのセットの各準識別子の値を一般化することとをさらに実行させ、前記一般化することが、前記第１のデータのセットの前記サブセットを前記第２の表現に変更することを含んでおり、データベース・テーブルの照会要求に応答して、前記サブセットの代わりに前記第２の表現が前記データベース・テーブル内で表示可能であり、前記第１のデータのセットおよび前記第３のデータのセットが前記データベース・テーブル内にある、請求項１５に記載のコンピュータ・プログラム。
【請求項２１】
コンピュータ・システムに読み込まれて実行された場合に、前記コンピュータ・システムに、請求項１ないし７のいずれかに従って方法のすべての前記ステップを実行させるために、コンピュータ可読媒体に格納されたコンピュータ・プログラム・コードを含んでいる、コンピュータ可読な記録媒体。
【国際調査報告】
2021504798.tif 000018
2021504798.tif 000019