(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-05-31
(45)【発行日】2023-06-08
(54)【発明の名称】データ匿名化のためコンピュータが実行する方法、システム、コンピュータ・プログラム、コンピュータ・プログラム、および記憶媒体
(51)【国際特許分類】
G06F 21/62 20130101AFI20230601BHJP
【FI】
G06F21/62 354
(21)【出願番号】P 2020528039
(86)(22)【出願日】2018-11-09
(86)【国際出願番号】 IB2018058803
(87)【国際公開番号】W WO2019102291
(87)【国際公開日】2019-05-31
【審査請求日】2021-04-23
(32)【優先日】2017-11-22
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】521173926
【氏名又は名称】グリーン・マーケット・スクエア・リミテッド
【氏名又は名称原語表記】GREEN MARKET SQUARE LIMITED
(74)【代理人】
【識別番号】110000028
【氏名又は名称】弁理士法人明成国際特許事務所
(72)【発明者】
【氏名】チャックラボーティ、スプリオ
(72)【発明者】
【氏名】スリバトサ、ムドラカル
【審査官】吉田 歩
(56)【参考文献】
【文献】米国特許第09135320(US,B1)
【文献】米国特許出願公開第2017/0308613(US,A1)
【文献】長谷川聡ほか,行列分解を利用した確率的k-匿名性を満たす高次元データ公開法,コンピュータセキュリティシンポジウム2016 論文集,日本,一般社団法人情報処理学会,2016年10月04日,Vol.2016, No.2,pp.936-942,情報処理学会シンポジウムシリーズ
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/62
(57)【特許請求の範囲】
【請求項1】
コンピュータが実行する方法であって、
1つまたは複数のデータ・ストアに関連付けられた第1のデータのセットを受信することと、前記1つまたは複数のデータ・ストアが1つまたは複数のリレーショナル・データベースを含んでおり、前記第1のデータのセットが、前記1つまたは複数のリレーショナル・データベース内の複数のデータベース・レコードに含まれており、
前記データベース・レコードの各々から、1つまたは複数の実数を最初に抽出することであって、前記第1のデータのセットの1つまたは複数の文字列が最初に抽出されない、前記抽出することと、
前記1つまたは複数の実数の各々を正規化することと、
前記1つまたは複数の実数を1つまたは複数のテンソル値として表すことと、
前記1つまたは複数の文字列を少なくとも1つの単語埋め込みベクトル・モデルに通すことであって、前記1つまたは複数の文字列の少なくとも1つの表現がベクトル空間内でマッピングされることを引き起こすことを含んでいる、前記通すことと、
前記1つまたは複数の文字列を前記少なくとも1つの単語埋め込みベクトル・モデルに前記通すことに少なくとも基づいて前記第1のデータのセットを匿名化することであって、前記匿名化することが、第1の属性の1つまたは複数の値を抑制すること、および第2の属性の1つまたは複数の特定の値を抑制しないことを含んでいる、前記匿名化することとを含んでいる、コンピュータ実装方法。
【請求項2】
前記ベクトル空間が、前記1つまたは複数の文字列を通す前に存在していた複数の単語表現を含んでおり、前記方法が、
前記1つまたは複数の文字列をデータ・レコードから抽出することと、
前記少なくとも1つの表現を前記ベクトル空間内でプロットすることと、
前記少なくとも1つの表現の最も近い近隣を前記ベクトル空間内で決定することであって、前記最も近い近隣が、前記複数の単語表現のうちの1つである、前記決定することと、
前記最も近い近隣を、前記1つまたは複数の文字列を表すための値として利用することであって、照会要求に応答して、前記1つまたは複数の文字列の代わりに、前記最も近い近隣が表示において表示される、前記利用することとをさらに含んでいる、請求項1に記載の方法。
【請求項3】
前記第1のデータのセットの各明示的識別子の値を抑制することであって、前記明示的識別子の値が個人を直接識別する、前記抑制することと、
前記第1のデータのセットの準識別子の値のセットおよび機密識別子の値のセットを識別することであって、前記準識別子の値のセットが、特定の個人を間接的に識別する可能性がある値のセットに対応し、前記機密識別子の値のセットが、個人の秘密である値のセットに対応する、前記識別することとをさらに含んでいる、請求項1に記載の方法。
【請求項4】
前記明示的識別子の値、前記準識別子の値のセット、および前記機密識別子の値のセットが、1つまたは複数のデータベース・テーブル内の各属性に関連付けられており、前記方法が、
前記準識別子の値のセットを複数のデータベース・レコードから抽出することと、
前記準識別子の値のサブセットを前記少なくとも1つの単語埋め込みベクトル・モデルに通すことであって、前記明示的識別子の値が、前記少なくとも1つの単語埋め込みベクトル・モデルを通過しない、前記通すことと、
照会に対して前記各属性を匿名化されたデータとして提示することであって、前記明示的識別子の値がいずれも表示可能でなく、前記機密識別子の値の各々が表示可能である、前記提示することとさらに含んでいる、請求項3に記載の方法。
【請求項5】
前記少なくとも1つの単語埋め込みベクトル・モデルが最初に事前にトレーニングされており、前記方法が、
前記ベクトル空間内の前記1つまたは複数の文字列の前記少なくとも1つの表現から複数の他の表現までの距離を決定することと、
ポリシーに基づいて、前記
少なくとも1つの表現を匿名化の出力候補として選択することと、
前記表現の前記選択が前記ポリシーと一致していないということを決定することと、
前記表現の前記選択が前記ポリシーと一致していないということの前記決定に応答して、前記単語埋め込みベクトル・モデルを再トレーニングすることとさらに含んでいる、請求項1に記載の方法。
【請求項6】
前記少なくとも1つの単語埋め込みベクトル・モデルが1つまたは複数のword2vec 2層ニューラル・ネットワーク・モデルを含んでおり、前記少なくとも1つの表現が、他の表現との意味論的意味の類似性に従ってベクトル空間内でマッピングされた1つまたは複数の数値表現であり、前記他の表現のうちの第2の表現が、照会要求に応答した表示時に前記少なくとも1つの表現を表すように選択される、請求項1に記載の方法。
【請求項7】
少なくとも1つのプロセッサを含んでいる少なくとも1つのコンピューティング・デバイスと、
プログラム命令が具現化されている少なくとも1つのコンピュータ可読記憶媒体とを備えているシステムであって、前記少なくとも1つのプロセッサによって読み取り可能または実行可能な前記プログラム命令が、前記システムに、
1つまたは複数のデータ・ストアに関連付けられた第1のデータのセットを受信することと、前記1つまたは複数のデータ・ストアが1つまたは複数のリレーショナル・データベースを含んでおり、前記第1のデータのセットが、前記1つまたは複数のリレーショナル・データベース内の複数のデータベース・レコードに含まれており、
前記データベース・レコードの各々から、1つまたは複数の実数を最初に抽出することであって、前記第1のデータのセットの1つまたは複数の文字列が最初に抽出されない、前記抽出することと、
前記1つまたは複数の実数の各々を正規化することと、
前記1つまたは複数の実数を1つまたは複数のテンソル値として表すことと、
前記第1のデータのセットをノイズ伝搬モジュールに通すことであって、前記通すことが、ノイズを前記第1のデータのセットに追加することを含んでおり、前記ノイズの前記追加が、前記第1のデータのセットの少なくともサブセットが一緒にグループ化され、特定の属性の単一の値として表されることを引き起こすことを含んでいる、前記通すことと、
前記第1のデータのセットを前記ノイズ伝搬モジュールに前記通すことに少なくとも基づいて前記第1のデータのセットを匿名化することであって、前記匿名化することが、第1の属性の1つまたは複数の値を抑制すること、および第2の属性の各特定の値を抑制しないことを含んでいる、前記匿名化することとを実行させる、システム。
【請求項8】
前記少なくとも1つのプロセッサによって読み取り可能または実行可能な前記プログラム命令が、前記システムに、
前記第1のデータのセットを表す第1のテンソルのセットを、入力層の第1の表現から隠れ層内の第2の表現にエンコードすることと、
ポリシーに従って匿名化されている1つまたは複数の準識別子の値を識別することとを
さらに実行させる、請求項7に記載のシステム。
【請求項9】
前記少なくとも1つのプロセッサによって読み取り可能または実行可能な前記プログラム命令が、前記システムに、前記第1のデータのセットの第3の表現を、前記隠れ層および匿名化された層から出力層にデコードすることをさらに実行させ、前記デコードすることが、前記第1の表現の代わりに前記1つまたは複数の匿名化された準識別子の値の表示可能なバージョンが表示されることを引き起こす、請求項8に記載のシステム。
【請求項10】
前記少なくとも1つのプロセッサによって読み取り可能または実行可能な前記プログラム命令が、前記システムに、
前記1つまたは複数の準識別子の値の第3の表現を生成することと、
前記第3の表現を前記生成することに応答して、前記第2の表現を前記隠れ層からアノニマイザ層の前記第3の表現にマッピングすることとをさらに実行させる、請求項8に記載のシステム。
【請求項11】
前記少なくとも1つのプロセッサによって読み取り可能または実行可能な前記プログラム命令が、前記システムに、
前記第1のデータのセットの各明示的識別子の値を抑制することであって、前記明示的識別子の値が個人を直接識別する、前記抑制することと、
前記第1のデータのセットの準識別子の値のセットおよび機密識別子の値のセットを識別することであって、前記準識別子の値のセットが、特定の個人を間接的に識別する可能性がある値のセットに対応し、前記機密識別子の値のセットが、個人の秘密である値のセットに対応する、前記識別することと、
前記準識別子の値のセットを前記識別することに応答して、ノイズを前記準識別子の値のセットのみに追加して、前記準識別子のセットの値を
、前記準識別子の値のセットと意味的に一致している別の値のセットに置き換えることであって、前記ノイズが前記明示的識別子の値および前記機密識別子の値に追加されない、前記置き換えることとをさらに実行させる、請求項7に記載のシステム。
【請求項12】
前記第1のデータのセットが1つまたは複数の単語に対応し、前記ノイズ伝搬モジュールがエンコーダ、デコーダ、および前記エンコーダと前記デコーダの間に位置するアノニマイザを含んでおり
、最初に前記エンコーダによって
前記第1のデータのセットをエンコード
し、次に、前記エンコーダからアノニマイザに
前記第1のデータのセットを渡
し、前記1つまたは複数の単語を、前記1つまたは複数の単語にコンテキスト的に類似している第2の単語のセットとして表し、その後、前記1つまたは複数の単語の代わりに前記第2の単語のセットを表示するために、前記第2の単語のセットが前記アノニマイザからの
前記第2の単語のセットをデコード
することによって、
前記ノイズ伝搬モジュールを通じて前記第1のデータのセット
を実行する、請求項7に記載のシステム。
【請求項13】
前記少なくとも1つのプロセッサによって読み取り可能または実行可能な前記プログラム命令が、前記システムに、前記第1のデータのセットを前記ノイズ伝搬モジュールに前記通す前に、前記第1のデータのセットを前記匿名化するために、前記第1のデータのサブセットを1つまたは複数の単語埋め込みベクトル・モデルに通して、1つまたは複数の属性値を変更することをさらに実行させる、請求項7に記載のシステム。
【請求項14】
コンピューティング・デバイスによって読み取り可能または実行可能なプログラム命令が具現化されているコンピュータ可読記憶媒体を備えているコンピュータ・プログラムであって、前記コンピュータ・プログラムは、前記コンピューティング・デバイスに、
1つまたは複数のデータ・ストアに関連付けられた第1のデータのセットを受信することと、前記1つまたは複数のデータ・ストアが1つまたは複数のリレーショナル・データベースを含んでおり、前記第1のデータのセットが、前記1つまたは複数のリレーショナル・データベース内の複数のデータベース・レコードに含まれており、
前記データベース・レコードの各々から、1つまたは複数の実数を最初に抽出することであって、前記第1のデータのセットの1つまたは複数の文字列が最初に抽出されない、前記抽出することと、
前記1つまたは複数の実数の各々を正規化することと、
前記1つまたは複数の実数を1つまたは複数のテンソル値として表すことと
ベクトル空間内の前記第1のデータのセットのサブセットの表現から、少なくとも別のデータのセットの第2の表現までの距離を識別することと、
前記距離を前記識別することに応答して、前記第1のデータのセットを匿名化することであって、ノイズを前記第1のデータのセットの少なくとも一部に追加することを含んでいる、前記匿名化することとを実行させる、コンピュータ・プログラム。
【請求項15】
前記匿名化が、少なくとも第1の値を抑制することと、1つまたは複数の等価クラスを生成することと、属性の各値をより広い値に変更するように、前記属性を一般化することとを含んでおり、前記より広い値が前記別のデータのセットの前記第2の表現を含んでいる、請求項14に記載のコンピュータ・プログラム。
【請求項16】
前記第1のデータのセットが1つまたは複数のデータベース・テーブル内に論理的に配置され、コンピューティング・デバイスによって読み取り可能または実行可能な前記プログラム命令が、前記コンピューティング・デバイスに、
1つまたは複数の準識別子の文字列表現を1つまたは複数のデータベース・レコードから抽出し、前記文字列表現を1つまたは複数の単語埋め込みベクトル・モデルに通すことと、
1つまたは複数の準識別子の実数を前記1つまたは複数のデータベース・レコードから抽出することと、
ノイズを前記1つまたは複数の準識別子の文字列表現および前記1つまたは複数の準識別子の実数の両方に追加することとをさらに実行させ、データベース表示が、前記1つまたは複数の準識別子の文字列表現ではなく前記第2の表現を表示するように、前記ノイズの前記追加が、前記ベクトル空間内の前記第2の表現を出力として使用して、前記データベース・テーブル内の前記1つまたは複数の準識別子の文字列表現の各々を置き換えることを含んでいる、請求項14に記載のコンピュータ・プログラム。
【請求項17】
前記ノイズの前記追加が、修正されたオートエンコーダによって実行され、前記修正されたオートエンコーダが、エンコーダ、デコーダ、および前記エンコーダと前記デコーダの間にあるアノニマイザ・モジュールを含んでいる、請求項14に記載のコンピュータ・プログラム。
【請求項18】
コンピューティング・デバイスによって読み取り可能または実行可能な前記プログラム命令が、前記コンピューティング・デバイスに、
複数の私的データベースを集中的な私的データベースに集約することと、
前記複数の私的データベースの前記集約に応答して、前記集中的な私的データベースを匿名化することであって、前記集中的な私的データベースが、前記匿名化された第1のデータのセットを含んでいる、前記匿名化することと、
前記集中的な私的データベースの前記匿名化に応答して、前記第1のデータのセットに対する照会要求を受信することとをさらに実行させる、請求項14に記載のコンピュータ・プログラム。
【請求項19】
コンピューティング・デバイスによって読み取り可能または実行可能な前記プログラム命令が、前記コンピューティング・デバイスに、
第2のデータのセットの各明示的識別子の値を抑制することと、
第3のデータのセットの各機密の値を変更されない状態に保つことと、
複数の等価クラスを生成することと、
前記第1のデータのセットの各準識別子の値を一般化することとをさらに実行させ、前記一般化することが、前記第1のデータのセットの前記サブセットを前記第2の表現に変更することを含んでおり、データベース・テーブルの照会要求に応答して、前記サブセットの代わりに前記第2の表現が前記データベース・テーブル内で表示可能であり、前記第1のデータのセットおよび前記第3のデータのセットが前記データベース・テーブル内にある、請求項14に記載のコンピュータ・プログラム。
【請求項20】
コンピュータ・システムに読み込まれて実行された場合に、前記コンピュータ・システムに、請求項1ないし6のいずれかに従って方法のすべて
のステップを実行させるために、コンピュータ可読媒体に格納されたコンピュータ・プログラム・コードを含んでいる、コンピュータ可読な記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、データ匿名化に関連しており、より詳細には、ノイズの伝搬に基づいてデータを匿名化することに関連している。
【背景技術】
【0002】
データ匿名化とは、データ・ストアの得られた表示が、個人の名前を識別することにも、個人を機密情報に関連付けることにも使用できなくなるように、1つまたは複数のデータ・ストアの1つまたは複数の属性値を削除することまたは曖昧にすることあるいはその両方に使用される計算メカニズムのことを指す。その目標は、特定の個人が特定のデータのセット(例えば、病気の種類、給与の数字など)に関連付けられているということを他の人が推測できないように、個人に関する機密情報を個人の身元に結び付けずに、個人に関する信頼できるデータを公開する必要性のバランスを取ることである。
【0003】
機関およびその他の組織は、しばしば、研究またはその他の目的のために、マイクロデータ(例えば、医療データまたは国勢調査データ)を公開する必要がある。通常、そのようなデータは、リレーショナル・データベース内のテーブルなどのデータ・オブジェクトに格納される。オブジェクトの各レコード(例えば、行)は、多くの場合、1人の個人に対応する。各レコード(およびテーブル)は、3つのカテゴリに分類され得る複数の属性(例えば、列またはフィールド)を含む。第1のカテゴリは、「明示的識別子」と呼ばれ、個人を明確かつ直接的に識別する属性を含んでいる。明示的識別子は、名前、社会保障番号、住所などを含む。第2のカテゴリは、一緒に受け取られた場合に、個人を間接的に識別できる可能性がある、郵便番号、生年月日、性別などの属性を含む。これらは、「準識別子」と呼ばれる。第3のカテゴリは、「機密識別子」と呼ばれ、個人的、秘密、またはプライベートと見なされる属性(例えば、病気および給与)を含む。しばしば組織は、研究の目的で、機密情報にアクセスできるようにしようとする。したがって、明示的識別子または準識別子あるいはその両方の値を抑制するため、または曖昧にするため、あるいはその両方のために、匿名化が必要になることがある。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明は、データ匿名化を提供することを目的とする。
【課題を解決するための手段】
【0005】
1つまたは複数の実施形態は、システム、コンピュータ・プログラム製品、およびコンピュータ実装方法を対象にする。一部の実施形態では、コンピュータ実装方法が次の要素を含む。1つまたは複数のデータ・ストアに関連付けられた第1のデータのセットが受信される。第1のデータのセットの1つまたは複数の文字列が、少なくとも1つの単語埋め込みベクトル・モデルを通過する。この通過は、1つまたは複数の文字列の少なくとも1つの表現がベクトル空間内でマッピングされることを引き起こすことを含む。1つまたは複数の文字列が少なくとも1つの単語埋め込みベクトル・モデルを通過することに少なくとも基づいて、第1のデータのセットが匿名化される。この匿名化は、第1の属性の1つまたは複数の値を抑制すること、および第2の属性の1つまたは複数の特定の値を抑制しないことを含む。
【0006】
一部の実施形態では、システムが、少なくとも1つのプロセッサと、プログラム命令が具現化されている少なくとも1つのコンピュータ可読記憶媒体とを含んでいる少なくとも1つのコンピューティング・デバイスを含む。一部の実施形態に従って、プログラム命令は、システムに次の要素を実行させるために、少なくとも1つのプロセッサによって読み取り可能であるか、または実行可能であることができる。1つまたは複数のデータ・ストアに関連付けられた第1のデータのセットが受信される。第1のデータのセットは、ノイズ伝搬モジュールを通過する。この通過は、ノイズを第1のデータのセットに追加することを含む。ノイズの追加は、第1のデータのセットの少なくともサブセットが一緒にグループ化され、特定の属性の単一の値として表されることを引き起こすことを含む。第1のデータのセットがノイズ伝搬モジュールを通過することに少なくとも基づいて、第1のデータのセットが匿名化される。この匿名化は、第1の属性の1つまたは複数の値を抑制すること、および第2の属性の各特定の値を抑制しないことを含む。
【0007】
一部の実施形態では、コンピュータ・プログラム製品は、プログラム命令が具現化されているコンピュータ可読記憶媒体を含む。一部の実施形態に従って、プログラム命令は、コンピューティング・デバイスに次の要素を実行させるために、コンピューティング・デバイスによって読み取り可能であるか、または実行可能であることができる。1つまたは複数のデータ・ストアに関連付けられた第1のデータのセットが受信される。ベクトル空間内の第1のデータのセットのサブセットの表現から、少なくとも別のデータのセットの第2の表現までの距離が、識別される。この距離を識別することに応答して、第1のデータのセットが匿名化される。この匿名化は、ノイズを第1のデータのセットの少なくとも一部に追加することを含む。
【0008】
ここで、添付の図面を単に例として参照し、本発明の実施形態について説明する。
【図面の簡単な説明】
【0009】
【
図1】実施形態に従って、匿名化されたデータの生成の抽象的表示を示すブロック図である。
【
図2】実施形態に従って、1つまたは複数のデータ・レコードがデータ・テンソルに変換される方法を示すブロック図である。
【
図3】実施形態に従って、データ・レコードの文字列が単語埋め込みベクトル・モデルを通過する方法を示す概略図である。
【
図4】実施形態に従って、ノイズ伝搬モジュールを示す概略図である。
【
図5】実施形態に従ってデータを匿名化するための例示的なプロセスのフロー図である。
【
図6】実施形態に従って、データを1つまたは複数の単語埋め込みベクトル・モデルに通すための例示的なプロセスのフロー図である。
【
図7】実施形態に従って、データをノイズ伝搬モジュールに通すための例示的なプロセスのフロー図である。
【
図8】実施形態に従って、匿名化されたデータベースが表示時にどのように見えるかを示す概略図である。
【
図9】実施形態に従うコンピューティング環境のブロック図である。
【
図10】実施形態に従うコンピューティング環境のブロック図である。
【
図11】本開示の実施形態に従ってクラウド・コンピューティング環境を示す図である。
【
図12】本開示の実施形態に従って抽象モデル・レイヤを示す図である。
【
図13】実施形態に従うコンピューティング・デバイスのブロック図である。
【発明を実施するための形態】
【0010】
本発明は、さまざまな変更および代替の形態を受け入れるが、その詳細が、図面において例として示されており、詳細に説明される。しかし、本発明を説明されている特定の実施形態に限定することが意図されていないということが、理解されるべきである。反対に、本発明の範囲に含まれるすべての変更、同等のもの、および代替手段を対象にすることが意図されている。
【0011】
本開示の態様は、ノイズの伝搬に基づくデータ匿名化に関連している。本開示はそのような適用に必ずしも限定されないが、この文脈を使用するさまざまな実施例の説明を通じて、本開示のさまざまな態様が理解されてよい。
【0012】
匿名化メカニズムは、どの値がユーザが見ることができる情報を構成するかということほどには、ユーザが認証されているかどうか、またはユーザが機密情報に対するアクセス権限を有しているかどうかに、重点を置かない。例えば、典型的な技術的解決策は、照会制限などの制限手法を実行する。照会制限は、機密情報を明らかにすることができる照会を禁止する。照会制限は、機密データに対するすべての推論を(例えば、暗号化、アクセス拒否などを介して)抑制することによって実装される。これに対して、データ匿名化は、最初にデータを十分に匿名にするが、ただし表示可能にし、次に、照会が処理される基盤として使用される得られたデータを提供するための解決策を提供する。
【0013】
何らかの匿名化を伴う場合でも、公開されたデータの公開が直面する1つの共通の問題は、データを他のデータに結び付けるか、または他のデータと照合することによって、あるいはデータ内で検出される一意の特徴を調べることによって、データ(例えば、準識別子の値)が、個人を再識別することに使用され得るということである。これは、一部の明示的識別子の値(例えば、個人の名前)が抑制されているか、またはデータベース・テーブルから削除されているということにはかかわらない。1つの例では、非常によく知られた男性の公人が、属性「名前」、「生年月日」、「性別」、「郵便番号」、および「病気」を含んでいるデータベース・レコードに含まれていることがある。「名前」の明示的識別子の値が抑制されることがある。しかし、データベース・レコードを含んでいるデータベース・テーブルは、この公人と同じ生年月日を有している人を6人しか含んでおらず、そのうち男性は3人だけである、ということがある。さらに、テーブル内で特定の郵便番号を含んでいるのはこの公人だけである、ということがある。したがって、この公人がテーブル内に存在するという知識、およびこの公人の生年月日または郵便番号あるいはその両方の知識のある人は、これらの属性値を再び個人に結び付けるか、または個人と照合し、この公人が経験した特定の病気などの、個人に関する機密データを容易に決定することができる。
【0014】
この問題に対抗するために、一部の技術的解決策は、表示時に、より多くのレコードが同一の準識別子を含むように、データ値を抑制するか、または意味的に一貫性のある特定のデータ値をクラスタ化するか、あるいはその両方を実行する、アルゴリズムを採用する。これによって、データを再び特定の個人に結び付けることをより困難にする。例えば、k-匿名度、l-多様度、およびt-類似度などのアルゴリズムが提案されている。テーブル内のすべてのレコードが、すべての準識別子属性のセットに関して、少なくともk-1個の他のレコードと区別できない場合、このテーブルはk-匿名度を満たす。l-多様度の場合、機密属性に関して、少なくともl個の「十分に代表された」値が存在する場合、等価クラスがl-多様度を有する。テーブルのすべての等価クラスがl-多様度を有している場合、このテーブルはl-多様度を有していると言われる。t-類似度の場合、クラス内の機密属性の分布と、テーブル全体内での属性の分布との間の距離がしきい値t以下である場合、等価クラスがt-類似度を有する。すべての等価クラスがt-類似度を有している場合、このテーブルはt-類似度を有していると言われる。
【0015】
t-類似度などのこれらの解決策に伴う1つの問題は、文字列などのカテゴリ(または非数値)属性間の距離を、ユーザによって手動で指定する必要があるということである。これは、属性ごとの一般化階層とも呼ばれる。したがって、カテゴリの等価クラスの定義、属性の境界、属性の範囲、または分割点を、ユーザによって手動で決定しなければならない。本明細書において説明されているように、「等価クラス」は、準識別子属性のすべてまたは一部について同じ値を有するレコードのセットである。例えば、等価クラスは、「年齢」属性において各個人が40歳以下であることを指定する一連のレコードを含むことができる。通常、ユーザは、「40以下」という属性の範囲を定義し、そのレコードの範囲が他の等価クラスに比例するということ、および他の交絡変数が存在しないということを、決定しなければならない。この手動の指定は、データの有用性および信頼性が損なわれるような、等価クラスの不均一な表現または偏りのある表現をもたらす可能性がある。さらに、そのような距離を手動で定義するのは、時間がかかることがある。
【0016】
別の問題は、一部の解決策が、データが表されている順序で、またはベクトル空間内で、データ・レコードに対して解析を実行することである。データ・レコードはn次元ベクトルであり、各次元がレコードの属性に対応する。したがって、一方では、それ自体が匿名化に役立ち、他方では、データの有用性をより良く維持する、データ・レコードの表現(データが取得されたときの表現とは異なる)が存在する可能性がある。したがって、本開示の実施形態は、下でさらに詳細に説明されているように、これらの問題の一部または各々に対処し、匿名化およびデータベース表示技術を改善する。
【0017】
図1は、実施形態に従って、匿名化されたデータの生成の抽象的表示を示すブロック図である。生データ101(例えば、カテゴリ属性値)の少なくとも一部が、単語埋め込みベクトル・モデル103を介して供給される。一部の実施形態では、生データ101(例えば、データベース・レコードの実数)のセットが、単語埋め込みベクトル・モデル103を回避し、データ・テンソル105のサブセットに変換される。単語埋め込みベクトル・モデルは、ベクトル空間内の他のデータ点(例えば、他の文字列表現)とのコンテキストの類似性(例えば、意味論的意味)に従って、生データ101を、ベクトル空間内の1つまたは複数の点(例えば、2Dまたは3Dグラフ・モデル内の実数)にマッピングする。単語埋め込みベクトル・モデル103は、ニューラル・ネットワーク、次元縮退、同時生起行列、確率的モデル、または任意のその他の適切なモデル、あるいはその組み合わせなどの、マッピングを生成するためのさまざまな方法であるか、またはそのような方法を含む。例えば、一部の実施形態では、単語埋め込みベクトル・モデル103は、Word2Vecモデルを含む。Word2Vecモデルおよび単語埋め込みベクトル・モデル103は、下でさらに詳細に説明される。
【0018】
単語埋め込みベクトル・モデル103を介して生データ101が供給された後に、生データ101は、データがデータ・テンソル105として最初に提示されるノイズ伝搬モジュール121(例えば、修正されたオートエンコーダ)を介して供給される。ノイズ伝搬モジュール121は、ノイズをデータに追加するモジュールである。
図1に示されているように、アノニマイザ109を使用してノイズ生成が実行される。アノニマイザ109は、ノイズ伝搬モジュール121のエンコーダ107とデコーダ111の間に存在する。エンコーダ107の出力は、1つまたは複数の「コード」である。エンコーダ107によって生成された1つまたは複数のコードが、アノニマイザ109に入力される。実施形態では、アノニマイザ109は、コードがクラスタ化またはグループ化され、各クラスタが少なくともk個のメンバーを含むように、適切なノイズがコードに追加されることを保証する。したがって、アノニマイザ109はノイズ・コードを生成する。次に、ノイズ・コードがデコーダ111に供給され、デコーダ111がデータを再構築する。その後、再構築されたデータが、匿名データを生成するために、ポリシーに従って(例えば、最も近い近隣のデコーダを介して)渡される。ノイズ伝搬モジュール121はデータ・テンソル105、エンコーダ107、アノニマイザ109、およびデコーダ111を含んでいるとして示されているが、これが代表にすぎないということ、およびさらに多いまたは少ないコンポーネントが任意の適切なノイズ伝搬モジュール内に存在できるということが、理解される。
【0019】
実施形態では、ノイズを追加することは、新しい変数または新しい変数のセットを提示するために、ランダム変数またはランダム変数のセットを使用して、元のデータ点または元のデータ点のセットにデータを追加するか、あるいは元のデータ点または元のデータ点のセットを変更することを含む。例えば、一部の実施形態では、付加ノイズは、通常、Z=X+εのような表現を含み、Zは変換されたデータ点であり、Xは元のデータ点であり、εは、分布e~N(0,σ2)を有するランダム変数(ノイズ)である。ノイズの1つの例では、データ・テンソル105のうちの1つが、年齢に対応する整数(27)を表すことがある。しかし、この整数がノイズ伝搬モジュール121を介して供給された場合、この識別子を使用して等価クラス全体またはその他のポリシーを定義できるため、その匿名化されたデータ113のバージョンは、30以下になる可能性がある。
【0020】
本明細書において説明されているように、データ・テンソル105は、データを表すトークンなどの、データ自体とは異なる形態でのデータの表現である。例えば、文字列(例えば、人間が読み取れる単語)が単語埋め込みベクトル・モデル103を介して供給される場合、実施形態における出力は、整数またはその他の実数としてすべて表されてよいデータ・テンソル105になる。
【0021】
エンコーダ107は、加重を学習し、最も関連する情報に対応するデータ・テンソル105またはその他の実数あるいはその両方の基礎的な特徴を抽出し、データ・テンソル105の各々を、異なる次元(例えば、コード)にマッピングまたは投影する。例えば、一部の実施形態では、データ・テンソル105が、高次元の空間から低次元の空間にマッピングされる(例えば、データが圧縮される)。アノニマイザ109は、マッピングされたデータを受け取り、単語埋め込みベクトル・モデル103において定義された距離を識別して、データを匿名化し、これが下でさらに詳細に説明される。次に、データを再び元の次元(例えば、圧縮されていない形態)で表すために、データがデコーダ111を介してデコードされ、ただしデータが、データ・テンソル105自体の代わりに、データ・テンソル105の最も近い近隣(またはその他のコンテキスト的に類似する単語)として表され、これが下でさらに詳細に説明される。最も近い近隣(またはその他の表現)は、匿名化されたデータ113である。一部の実施形態では、デコーダ111がデータを匿名化されたデータ113に変換した後に、単語埋め込みベクトル・モデル103が再トレーニングされ、これが下でさらに詳細に説明される。これは、デコーダ111から単語埋め込みベクトル・モデル103への矢印で示されている。
【0022】
図2は、実施形態に従って、1つまたは複数のデータ・レコードがデータ・テンソルに変換される方法を示すブロック図である。データ・レコード201(例えば、データベース・レコード)は、実数および文字列の両方を含んでいるさまざまなフィールドまたは属性を含む。各実数属性は、個人に関連付けられ得る1つまたは複数の実数値(例えば、整数、浮動小数点数)に対応する。例えば、実数は、年齢値(例えば、30)または郵便番号値または機密属性値(給与の数字など)などの準識別子の値を含むことができる。各文字列は、自然言語の単語(例えば、英単語)などの、1つまたは複数の非実数の文字または文字の組み合わせに対応する。例えば、文字列は、病気の種類の値(例えば、「肺がん」)などの機密属性、あるいは都市、教育レベル、または性別の値などのその他の準属性であることができる。
【0023】
図2に示されているように、データ・レコード201の実数属性の各々は、中間ステップを伴わずに、テンソル205として表される(例えば、単語埋め込みベクトル・モデルを介して供給される)。実数の各々をテンソル205のテンソル値として表すために、データ・セット内の実数のセット(例えば、
図1の生データ101などの、テーブル内のレコードのセット)全体が正規化される。データを正規化することは、1つまたは複数の特定の範囲(0~1または-1~+1など)内の実数のうちの1つまたは複数をキャストすること、または再表現することを含む。一部の実施形態では、正規化は、線形代数を利用して、データ・ベクトル(例えば、データベース・レコード201内の実数)を、1に等しいノルム(例えば、長さ)を有する新しいベクトル(例えば、データ・レコード・トークン(data record token)205-1内の実数)に変換する。実施形態では、正規化は、データを、0の平均および1の標準偏差を有する新しいスコアに変換することによって、測定単位を除去することを含む。1つの例では、第1の属性が、27の値を含んでいる年齢属性を含むことができる。22、26、および25の対応する年齢値を含んでいる複数のその他のレコードが存在することができる。これらの年齢属性の各々が正規化された場合、実施形態では、データベース表示が、年齢属性の各々を、個別の値の代わりに30以下で表示して公開するように、それらの年齢属性が30以下という同じカテゴリに割り当てられる。それに応じて、特定の値がより広い値の表現を獲得する。
【0024】
データ・レコード201の文字列属性値の各々が、Word2Vec203を通過する。
図2はWord2Vecモデルを示しているが、
図1で説明されているように、任意の適切な単語埋め込みベクトル・モデルが利用され得るということが理解される。Word2Vecモデルは、1つまたは複数の入力ベクトル(単語表現)を隠れ層(すなわち、列と行の行列)および投射層(例えば、ソフトマックス分類器)に通す、2層ネットワーク・モデルである。Word2Vecモデルは、ソース・コンテキストの単語から(すなわち、Continuous Bag of Words(CBOW)アルゴリズムを介して)ターゲット文字列を予測するか、または逆に、ターゲット単語から(すなわち、skip-gramアルゴリズムを介して)ソース・コンテキストの単語を予測する。実施形態では、文字列の各々が、対応するWord2Vecまたはその他の単語埋め込みモデルを通過した場合、文字列は、単語埋め込みにおいて、関連付けられたベクトル(例えば、文字列識別子の他のグループ)および文字列表現からそれらのベクトルの各々までの距離を示す数値によって表され、これが下でさらに詳細に説明される。例えば、文字列「男性」は、ベクトル空間内では「1」として表すことができ、文字列「女性」は、ベクトル空間内では「0」として表すことができる。
【0025】
実数の正規化およびデータ・レコード201の文字列の単語埋め込み解析の後に、データが、1つまたは複数のデータ・トークン・レコード205(すなわち、n次元を有する別のベクトル)で表される。例えば、データ・レコード201は、第1のデータベース・レコードであることができる。実数がデータベース・レコードから抽出/コピーされて、正規化され、文字列が抽出されてword2vecモデルを通過した場合、データは、データ・レコード・トークン205-1(または205-2)の形態で、再びつなぎ合わせられ得る。実施形態では、データ・レコード・トークン205-1は、元のデータ・レコード201を表す実数のベクトルである。データ・レコード・トークン205-1および205-2(およびテーブル内の任意の量のレコード)の各々は、まとまってテンソル205を形成する。実施形態では、テンソル205は、
図2に示されている2つの205-1および205-2とは対照的に、単一のデータ・レコード・トークンのみを含む。
【0026】
図3は、実施形態に従って、データ・レコードの文字列が単語埋め込みベクトル・モデルを通過する方法を示す概略図である。実施形態では、
図3は、
図1の単語埋め込みベクトル・モデル103の態様を表している。
図3は、トレーニング・データ301、データ・レコード307、およびベクトル空間309を含んでいる。ベクトル空間309は、複数のベクトル(例えば、男性、王)を含んでいる。ベクトル空間309は、制限されたベクトルおよび次元を含む表現であり、異なるか、より多いか、またはより少ない文字列表現を伴うさらに多いまたは少ないベクトルおよび次元が存在することができるということが、理解される。ベクトル空間309はデータ点を文字列の形態(例えば、男性)で含んでいるが、Word2Vecモデルなどの一部の実施形態では、データ点が文字列表現(例えば、実数ベクトル)であるということも、理解される。一部の実施形態では、「文字列表現」または任意のその他の表現は、第2のデータのセットと同じ意味を有しているか、第2のデータのセットを表しているか、または第2のデータのセットに置き換わるか、あるいはその組み合わせであるが、第2のデータのセットと正確に同じ値または形式を含んでいない、第1のデータのセットである。例えば、「女性」は文字列であることができ、「0」がその文字列表現であることができる。他の実施形態では、文字列表現または任意のその他の表現が、元のデータ点自体である。例えば、「女性」は元のデータ点であることができ、「女性」は「文字列表現」であることもできる。
【0027】
ベクトル空間309内のデータ点または文字列表現をプロットするために、トレーニング・データ301を使用してモデルがトレーニングされる。さまざまな実施形態では、トレーニング・データ301は、非構造化データ(例えば、文書、ニュース記事、ソーシャル・メディアの投稿、ニュース・フィード、ブログ)または構造化データ(例えば、データベースの値)あるいはその両方の大きいコーパスを含んでいる。トレーニング・データ301は、単語埋め込みベクトル・モデルの入力でもある。トレーニング・データ302は、ベクトル空間309内で検出される、「語彙」と呼ばれる単語の各々(男性、王、父親、息子、女性、女王、母親、娘、猫、犬、博士号、博士、法務博士、修士、学士、および高校)を含む。
【0028】
一部の実施形態では、ベクトル空間309は、「トレーニング済みの」埋め込みを表す。トレーニング済みの埋め込みは、それを介して供給されるデータ・セットに対するフィードバック、再トレーニング、参照をいずれも行わずに生成される静的モデルである。例えば、ユーザは、トレーニング済みの、単語間の意味的類似度に従ってベクトル空間内ですでにマッピングされたベクトルまたはデータ点を含んでいる、静的単語埋め込みベクトル・モデルを、オンライン・ソースからダウンロードしてよい。他の実施形態では、ベクトル空間309は、「再トレーニングされた」埋め込みを表す。再トレーニングされた単語埋め込みモデルは、初期トレーニング・セッションを受信した後にトレーニングのフィードバックを受信する埋め込みであり、特定のデータ・セット(例えば、マイクロデータ、匿名化されたデータベースなど)に対して最適化または生成される。例えば、
図1に示されているように、デコーダ111がデータをデコードした後に、今後のデータ・セット内のいずれかのベクトルまたは単語(例えば、医学博士)が、実装されたポリシーに従って最も近い近隣(例えば、高等教育)またはその他の単語に一貫してマッピングされるように、システムが単語埋め込みベクトル・モデル103の2回目の「再トレーニング」を行う。一部の実施形態では、再トレーニングは、正しいデータ点の対(例えば、医学博士および高等教育)が確実に利用されるようにするために、フィードバックを発行することを含む。
【0029】
単語の各々をベクトル空間309内のコンテキスト的に適切な点にマッピングするために、トレーニング・アルゴリズムが利用される。例えば、一部の実施形態では、単語埋め込みベクトル・モデルは、次のソフトマックス関数に関して、以前の単語h(すなわち、「履歴」)を前提として次の単語wt(すなわち、「ターゲット」)の確率を最大化するように、最大尤度(ML:maximum likelihood)原理を使用してトレーニングされる。
【0030】
【0031】
score(wt,h)は、コンテキストhとの単語wtの互換性を計算する。モデルは、トレーニング・セットに対して対数尤度を最大化することによって、すなわち次式を最大化することによって、トレーニングされる。
【0032】
【0033】
これによって、言語モデル化のための適切に正規化された確率的モデルを得る。各確率は、すべてのトレーニング・ステップで、現在のコンテキストhにおいて、すべての他の単語w’に対してスコアを使用して計算され、正規化される。一部の実施形態では、word2vecなどの一部のモデルは、実際のターゲット単語wtを、同じコンテキストにおけるK個のノイズ単語w”と区別するために、ロジスティック回帰などの二項分類オブジェクトを使用してトレーニングされる。それに応じて、ソフトマックス分類器の代わりに、ノイズ分類器が使用される。
【0034】
トレーニング・アルゴリズムの出力は、意味的に類似する単語のグループ化を示すベクトル空間309内の位置的単語(positional words)の各々である。「意味的類似度」は、既定のオントロジーに従う、2つ以上の概念(例えば、単語)間の意味的距離である。「オントロジー」は、属性(例えば、単語)のセットを含んでいるクラスまたはデータ・セットである。例えば、単語「博士号」、「博士」、「医学博士」、「法務博士」、および「修士」はそれぞれ、「高等教育」305のオントロジーに属しており、一方、単語「学士」および「高校」は「学生」のオントロジーに属している。一部の実施形態では、2つ以上の単語間の「距離」は、文字列形式などの構文の類似度とは対照的に、それらの意味または意味内容あるいはその両方の類似度に基づく。例えば、「自動車(car)」および「遠い(far)」は、構文的に類似しているが、2つの異なる定義を含んでいるため、意味的に類似していない。
【0035】
任意の2つのベクトルまたは単語間の距離は、任意の適切な方法に従って測定される。例えば、一部の実施形態では、自動化されたコサイン類似度が距離の計算に使用される。コサイン類似度は、2つの非ゼロ・ベクトル間の角度のコサインを測定する、内積空間の2つの非ゼロ・ベクトル間の類似度の尺度である。類似性がないことは、90度の角度として表され、完全な類似度(すなわち、同じ単語)である1は、0度の角度である。例えば、2つの単語間の距離0.98は非常に高い意味的類似度を反映するが、距離0.003はわずかな意味的類似度を反映する。ベクトル空間309において示されているように、「男性」と「王」の間、および「女性」と「女王」の間のコサイン類似度は、同じコサイン距離であり、したがって、男性および女性の入力を前提とする特定の状況では、王は女王に意味的に類似している。
【0036】
トレーニング・データ301がトレーニング・アルゴリズムを通過し、ベクトル空間309として表された後に、データ・レコード309の文字列属性が単語埋め込みベクトル・モデルを通過し、ベクトル空間309内でプロットされる。例えば、
図3に示されているように、データ・レコード307内の文字列値のみが「医学博士」であり、この値は「教育レベル」属性に対応する。「医学博士」は、データ・レコード307から抽出またはコピーされ、この単語が属しているオントロジー、または他の単語もしくはデータ点との意味的類似度、あるいはその両方に従って、ベクトル空間309内に配置される。プロットの後に、単語の距離を手動で定義するのとは対照的に、他の単語またはベクトルとの「医学博士」の距離は、単語埋め込みモデルにおいて自動化された方法で計算可能であり、匿名化されたデータにおいて属性値または等価クラスあるいはその両方を再定義(例えば、一般化)するのに役立てるために使用される。ベクトル空間309内で示されているように、距離に関して「医学博士」の最も近い近隣は、「高等教育」である。したがって、データ・レコードが「医学博士」、「博士号」、「博士」、「法務博士」、または「修士」の値を含んでいる場合、表示時のデータの匿名化に役立てるために、文字列「高等教育」を使用してこれらの個別の属性の各々を置換して、等価クラスまたは属性値が生成され得る。したがって、「高等教育」は、個別の値の各々より広い表現であるが、特定の情報を個人に結び付けないようにすることと、同時にデータを研究またはその他の目的のために信頼できるようにすることとの間でバランスを取るように、個別の値の関連するクラスをまだ定義している。
【0037】
図4は、実施形態に従ってノイズ伝搬モジュール400(例えば、
図1のノイズ伝搬モジュール121)を示す概略図である。ノイズ伝搬モジュール400は、入力層403、隠れ層403、アノニマイザ層405、および出力層407を、ニューラル・ネットワークとして含んでいる。一部の実施形態では、ノイズ伝搬モジュール400は、隠れ層403と出力層407の間に追加されたアノニマイザ層405と共に、オートエンコーダを含む。
【0038】
入力層403は、複数のデータ点d
1、d
2、d
3、d
4(例えば、テンソルとして表されるデータ・レコード)を含んでいる。例えば、
図3を再び参照すると、データ点のうちの1つd
1は、トークン・レコードとして表されたデータ・レコード307であることができ、他の追加のデータ・レコードは、共に300次元ベクトルを含むことができる。エンコーダ409は、各データ点を表現点h(例えば、h
1、h
2、またはh
3)(h=f(d))にマッピングする。データ・セット全体のマッピングは、データ点に関連付けられた関連する特徴または加重を抽出すること、およびそれらの特徴を第1の次元(例えば、より高い次元)から別の次元(例えば、より低い次元)に投影することを含む。例えば、トークン・レコード(d
1~d
4)のテーブルとして表された300次元ベクトルは、100次元ベクトル(h
1~h
3)にマッピングされ得る。これは、データ圧縮などの原理に役立つことができ、データの静的特徴または重要でない特徴を削除することによって、次元を減らす。これによって、メモリ消費または処理時間あるいはその両方を削減する。
【0039】
次に、隠れ層403内の各データ点が、アノニマイザ層405内の同じ次元または類似する次元の別の表現にマッピングされる。一部の実施形態では、このマッピングの処理は、最初にMondrianアルゴリズムを使用することを含む。Mondrianアルゴリズムは、k-匿名度を満たすように準識別子領域空間の貪欲再帰分割(greedy recursive partitioning)を使用する一般化アルゴリズムである。「一般化」は、準識別子の値を、あまり具体的ではないが意味的に一貫性のある準識別子の値(例えば、同じオントロジー・クラスに属する値)に置き換えるか、または変更する。その結果、より多くのレコードが、同じ準識別子の値のセットを含むようになる。Mondrianアルゴリズムは、値の最大の正規化された範囲を有する分割された属性を再帰的に選択し、(連続的属性または順序属性の場合)分割された属性の中央値を中心にしてデータを分割し、許容できる分割が存在しなくなるまで、この分割が繰り返される。
【0040】
Mondrianアルゴリズムの出力は、等価クラスのセットであり、各等価クラスは、k-匿名度を満たすように、少なくともkのサイズを有する。等価クラスのメンバーは、この時点では(エンコーダ409を使用してデータ・ベクトルから導出された)コードであることができる。等価クラスの重心(例えば、平均または中央位置/中央値)が、クラス内のすべてのコードの一般化として使用され得る。例えば、c1、c2、c3、およびc4が等価クラスE1内のコードであり、Cが、コードを使用して計算された重心である場合、CがE1を代表しているとして扱われる。コードc1がCにマッピングされ、c2がCにマッピングされ、c3がCにマッピングされ、c4がCにマッピングされる。したがって、アノニマイザ層405(例えば、
図1のアノニマイザ109)の出力で、c1、c2、c3、およびc4が区別できなくなる。これらのコードは、ノイズ・コードCによってすべて表される。一部の実施形態では、異なる等価クラスが、異なる重心を有し、したがって異なる出力を有する。これらの重心は、デコーダ411によってデコードされ得る。
【0041】
隠れ層403からアノニマイザ層405への実際のマッピングの例では、d1、d2、およびd3が、一緒に圧縮され、したがって隠れ層403内でh1として表され得る。次に、h1表現が、h1と同じ次元を含んでいる別の値または異なる値a1にマッピングされ得る。次に、アノニマイザ層405内のデータ点の各々が、デコーダ411を介して出力層407内のデータ点に投影され、(T=g(a))によって表され、gは何らかのノイズ変数である。
【0042】
一部の実施形態では、隠れ層403内の各データ点が、データ点の最も近い近隣の圧縮されたバージョン、オントロジー・クラス、または他の意味的に類似する単語、あるいはその組み合わせにマッピングされる。例えば、
図3を再び参照すると、文字列「医学博士」がモデルのベクトル空間306内ですでにマッピングされているため、近隣までの距離がすでに計算されており、意味的に類似する各単語がすでにマッピングされている。したがって、ポリシーが、入力文字列「医学博士」の最も近い近隣を検出するように指定した場合、このポリシーは、「高等教育」をデータ点として使用する。それに応じて、最も近い近隣が決定された後に、そのデータ点が、隠れ層403内のデータ点のうちの1つと同じまたは類似する次元に圧縮される。次に、出力層407では、「医学博士」または「博士」などの個別の教育レベルの値の代わりに、文字列「高等教育」が教育レベル属性の1つまたは複数の値として使用され得るように、圧縮されたバージョンである「高等教育」(例えば、a
1)が元の次元の(例えば、圧縮されていない)バージョン(例えば、T
1)にマッピングされる。
【0043】
図5は、実施形態に従ってデータを匿名化するための例示的なプロセス500のフロー図である。プロセス500(および本明細書で開示された任意のその他のプロセス(例えば、600、700))は、ハードウェア(例えば、回路、専用論理、プログラム可能な論理、マイクロコードなど)、ソフトウェア(例えば、ハードウェア・シミュレーションを実行するためにプロセッサ上で実行される命令)、ファームウェア、またはこれらの組み合わせを含んでいる処理論理によって実行され得る。
【0044】
ブロック502で、生データ(例えば、
図1の生データ101)が受信される。生データは、1つまたは複数のデータベース・レコード、非構造化データ、または任意のその他のデータのセット、あるいはその組み合わせなどの、任意の適切な形態で入力される。ブロック504で、生データの1つまたは複数の明示的識別子(例えば、個人の名前、社会保障番号)の値が抑制される。値を「抑制すること」は、値が人間の読者によって識別できなくなるように、データ・セットを削除すること、マスクすること、変更すること、または暗号化すること、あるいはその組み合わせであるか、またはこれらを含む。一部の実施形態では、プロセス500において使用されるデータは、必ずしも「生」データではなく、任意のデータのセットであることができる。
【0045】
ブロック506で、生データの1つまたは複数の準識別子(例えば、郵便番号、教育レベルなど)の値および1つまたは複数の機密識別子(例えば、病気の種類、給与など)の値が識別される。一部の実施形態では、ユーザが、最初に準識別子および機密識別子が何であるかを定義し、この定義をコンピューティング・システムに入力する。一部の属性が通常は他のカテゴリに含まれているにもかかわらず、準識別子は任意の属性クラスに設定され得る。例えば、一部の実施形態では、病気および給与などの典型的な「機密」属性が、準属性として定義される。典型的な「明示的」識別子(例えば、名前、社会保障)も、準属性として設定され得る。一部の実施形態では、ユーザとは対照的に、コンピューティング・システムが、ユーザのフィードバックなしで、自然言語処理(NLP:Natural Language Processing)、ポリシーに基づく単語の照合およびタグ付け(例えば、単語が特定の識別子であるルールを使用して、データベース内の文字列をデータ構造内の文字列と照合する)などの、任意の適切な方法によって、各識別子の種類を識別する。
【0046】
ブロック508で、1つまたは複数の準識別子の値が、実際の文字列および整数などの実数値の両方を含んでいるかどうかが(例えば、NLP、ユーザによって定義された仕様などによって)判定される。ブロック510で、1つまたは複数の準識別子の値が文字列および実数の両方を含んでいない(すなわち、準識別子が実数または文字列のいずれかであるが、両方ではない)場合、準識別子がすべて実数であるかどうかが判定される。1つまたは複数の準識別子がすべて実数である場合、ブロック514で、1つまたは複数の準識別子の実数が、抽出されて正規化され、1つまたは複数のテンソル(例えば、
図2のデータ・レコード・トークン205-1の実数表現)として表される。1つまたは複数の準識別子の値がすべて実数ではない(例えば、すべて文字列である)場合、ブロック512で、1つまたは複数の準識別子の文字列が抽出されて、1つまたは複数の単語埋め込みベクトル・モデル(例えば、
図1の単語埋め込みベクトル・モデル102)を通過し、1つまたは複数のテンソルまたはテンソル値(例えば、
図2のデータ・レコード・トークン205-1の文字列表現)として表される。次に、一部の実施形態では、正規化される実数が存在しないため、ブロック512の後にブロック516が発生する。
【0047】
ブロック512および514で、1つまたは複数の準識別子が文字列および実数の両方を含んでいる場合、準識別子の文字列および準識別子の実数の両方が抽出され、それぞれ、1つまたは複数の単語埋め込みベクトル・モデルを通過するか、または正規化される。正規化および1つまたは複数の単語埋め込みベクトル・モデルから得られる出力は、データ・テンソルである。
【0048】
ブロック516で、データ匿名化のために、(例えば、
図1のノイズ伝搬モジュール121によって)ノイズが準識別子のテンソルに追加される。ブロック518で、照会に対して、匿名化されたデータが提示される。例えば、一部の実施形態では、最終的なデータ・セットは、抑制された明示的識別子と、1つまたは複数の特定の自動化された属性値および等価クラスに一般化されている、匿名化された準識別子の値と、変更されていない(例えば、抑制されても曖昧にされてもいない)形態での機密識別子の値とを含む。したがって、ユーザが、データの一部または全部に対する照会を発行した場合、このユーザは、データを、ブロック518で指定された通りに見ることができる。
【0049】
図6は、実施形態に従って、データを1つまたは複数の単語埋め込みベクトル・モデルに通すための例示的なプロセス600のフロー図である。ブロック602で、1つまたは複数のトレーニング済みの単語埋め込みベクトル・モデルがダウンロードされる。例えば、一部の実施形態では、コンピューティング・システムが、データ点の各々がベクトル空間(例えば、
図3のベクトル空間309)内ですでにマッピングされているword2vecなどの単語埋め込みベクトル・モデルをダウンロードするためのユーザの要求を、Webサイトまたはその他のサービスから受信する。したがって、過去のいずれかの時点で、文書、ソーシャル・メディアの投稿、ブログ、ニュース・フィード、辞書、定期刊行物などの1つまたは複数のソースが、単語埋め込みベクトル・モデルを通過しており、それに対応する文字列表現が、意味的類似度に従ってマッピングされている。
【0050】
ブロック604で、1つまたは複数のデータ・レコードの文字列(例えば、データベース・レコードのテーブル)が、単語埋め込みベクトル・モデルを再び通過する。それに応じて、事前トレーニング段階でマッピングされた他の文字列表現の意味的類似度に従って、1つまたは複数のデータの文字列表現が、ベクトル空間にマッピングされる。例えば、
図3を再び参照すると、示されているように、文字列「医学博士」がベクトル空間309内でマッピングされる。
【0051】
ブロック606で、ベクトル空間内の1つまたは複数のデータ・レコードの文字列表現から各近隣(または他の単語)までの距離(例えば、コサイン距離)が、決定される。一部の実施形態では、1つまたは複数のデータ・レコードの文字列の近隣(すなわち、1つまたは複数のデータ・レコードの文字列を囲んでいる直近の単語)の各々のみが、1つまたは複数のデータ・レコードの文字列までの距離の計算に使用される。他の実施形態では、ベクトル空間(例えば、ベクトル空間309)内の1つまたは複数のデータ・レコードの文字列から各単語(近隣のみではない)までの距離が計算される。
【0052】
ブロック608で、ポリシーに基づいて、最も近い近隣(または他の単語)が匿名化の出力候補として選択される。一部の実施形態では、ポリシーが、距離において文字列表現に最も近い単語を匿名化の候補として選択するように指定する。例えば、
図3を再び参照すると、1つまたは複数のデータ・レコードの文字列が「医学博士」を含んでいた場合、「医学博士」の距離において最も近い近隣は、「高等教育」である。したがって、一部の実施形態では、「高等教育」が匿名化の出力候補として選択される。他の実施形態では、ポリシーが、1つまたは複数のデータ・レコードの文字列のオントロジーまたは別の近隣を選択するなど、必ずしも1つまたは複数のデータ・レコードの文字列表現に最も近い近隣ではない他の単語表現を候補として選択するように指定する。例えば、
図3を再び参照すると、最も近い近隣である「高等教育」を候補として選択する代わりに、ポリシーは、医学博士から特定の距離にある単語(「法務博士」または「博士号」などであることができる)を選択することを指定することができる。一部の実施形態では、ポリシーは、オントロジー内の各データ・レコードをグループ化し、同じ値を特定の属性(必ずしもオントロジーの名前ではない)に使用することを指定する。例えば、複数のデータ・レコードが、オントロジー305内の各文字列に対応する文字列を含んでいた場合、ポリシーは、個人が識別されるのを防ぐために、教育レベルの各値を(「高等教育」の代わりに)「法務博士」などの文字列のうちの1つに変更するように指定することができる。
【0053】
ブロック610で、ブロック608での選択がポリシーと一致しているかどうかが判定される。この判定は、定量的尺度(例えば、候補が本当に最も近い近隣であるかどうか)または定性的尺度(例えば、候補が1つまたは複数のデータ・レコードの文字列を正確な方法で表しているかどうか)あるいはその両方によって決定される。定性的尺度の1つの例では、文字列「医学博士」の最も近い近隣は、「高等教育」の代わりに「法務博士」であることができる。ポリシーが最も近い近隣を選択するように指定することができ、アルゴリズムが本当に最も近い近隣を選択したが、この近隣が、「医学博士」が属するクラスを適切に表していないことがある。これは、「医学博士」を、不正確な特定の値よりも、一般化されたクラスまたはオントロジーとして表したいということを決定するユーザによって、判断される。したがって、この状況では、ポリシーが定量的に正しく計算されたとしても、「法務博士」の候補選択はポリシーと一致しない。一部の実施形態では、ユーザのフィードバックが存在しないが、代わりに教師なしアルゴリズムが、選択がポリシーと一致しているかどうかの判定に使用されるか、または再トレーニングに使用される。これらの実施形態では、選択が定量的に正確だったかどうか、および選択が1つまたは複数のルールを満たしたかどうか(例えば、選択がオントロジー・クラスの名前だったかどうか)など、選択がポリシーと一致しているかどうかを判定するために、ルールのセットが使用され得る。
【0054】
ブロック612で、ブロック608の選択がポリシーと一致していない場合、単語埋め込みベクトル・モデルが再トレーニングされる。例えば、ユーザまたは教師なしアルゴリズムは、複数の他のさまざまなソース文書をモデルにアップロードするか、または1つまたは複数の文字列がマッピングされるベクトル空間内の位置を手動で変更するか、あるいはその両方を実行することができる。例えば、
図3を再び参照すると、「高等教育」がデータ・レコードの文字列に関連付けられている場合、ユーザまたは教師なしアルゴリズムは、さまざまなレベルの教育を定義して議論する専門的なWebサイト・ページ、選択された辞書の単語、教育について議論するニュース記事などの、教育に関連する追加文書をアップロードすることができる。別の例では、「医学博士」が1つまたは複数のデータ・レコードの文字列に含まれていた場合、ユーザは、別の通過時に「高等教育」が他の単語の代わりに候補として選択されるように、「高等教育」を医学博士の最も近くに移動することができる。ブロック612でデータが再トレーニングされた後に、ブロック604で、1つまたは複数のデータの文字列が単語埋め込みベクトル・モデルを再び通過する。ブロック610で選択がポリシーと一致するまで、第2の通過に対してブロック606および608が繰り返される。
【0055】
ブロック614で、ブロック608での選択がポリシーと一致する場合、ポリシーが何であるかに従って、最も近い近隣(または他の単語)が匿名化の実際の出力として使用される。例えば、
図1を参照すると、一部の実施形態では、ブロック614で出力として使用される文字列が、匿名化されたデータ113で表される。
【0056】
図7は、実施形態に従って、データをノイズ伝搬モジュールに通すための例示的なプロセス700のフロー図である。ブロック702で、1つまたは複数のデータ・テンソル(例えば、
図1のデータ・テンソル105)が、第1の表現から第2の表現にエンコードされる。例えば、
図4において説明されたように、データ・テンソルは、より高い次元からより低い次元に投影される複数のデータ・レコード・トークンであることができる。実施形態では、このエンコーディングは、データ・テンソルから加重または最も関連する情報を学習することを含み、その情報を、一部の実施形態では第1の表現の縮小または圧縮されたバージョンである、第2の表現にマッピングする。
【0057】
ブロック704で、ポリシーに従って匿名化された準識別子の値が識別される。例えば、
図6を再び参照すると、ブロック614で指定された通りに、匿名化の出力が識別される。ブロック706で、ブロック704で識別された準識別子の値の第3の表現が生成される。例えば、一部の実施形態では、ブロック704で識別された準識別子の値が、第2の表現と同じまたは類似する次元に圧縮される。
【0058】
ブロック708で、第2の表現が第3の表現にマッピングされる。一部の実施形態では、このマッピングは、典型的なオートデコーダにおいて実行されているように、デコーディング時に元の入力(すなわち、第1の表現)が再生成されず、別のデータのセットが生成されてデコードされることを保証する。実施形態では、このマッピングは、準識別子の値を一般化し、あまり具体的ではないが意味的に一貫性のある準識別子の値に置き換えるために発生する。
【0059】
ブロック710で、第3の表現が、匿名化された準識別子の値の表示可能なバージョンにデコードされる。例えば、第3の表現は、圧縮されていないバージョンにデコードされた圧縮済みのバージョンであることができる。「表示可能なバージョン」の1つの例では、ユーザによって照会が発行された後の表示時に、照会プロセッサが、下で説明されている
図8のテーブル830に類似するスキーマで、匿名化された準識別子の値(および他のデータ)を圧縮解除して提示または表示することができる。
【0060】
図8は、実施形態に従って、匿名化されたデータベースが表示時にどのように見えるかを示す概略図である。
図8は、私的データベースを表すテーブル800、および同じテーブル800を匿名化された形態で表すテーブル830を含んでいる。テーブル800および830に示されているように、個人に対応する複数のレコードが存在し、それらの個人は、「名前」属性(例えば、明示的識別子)で識別される。データベース・レコードの各々は、特定の値(例えば、65)を、「年齢」、「郵便番号」、「教育レベル」(例えば、準識別子)、および「病気」(例えば、機密識別子)という属性内に含んでいる。テーブル800および830は特定の属性、レコード、および値を示しているが、これらが代表にすぎないということ、ならびに任意の数量、表現、または種類の属性、レコード、および値が存在することができるということが、理解される。
【0061】
テーブル800は、すべての値が識別可能であり、個人に容易に結び付けることができるように、変更されない形態でデータを示している。したがって、データ値が抑制されておらず、その他の方法で曖昧にされて(例えば、一般化されて)もいない。テーブル800は、他の人が既知の個人に結び付けることができるプライベート・データを含んでいるため、通常は、テーブル800のようなデータを公開することは望ましくない。したがって、機密情報を個人に結び付けることができないようにすると同時に、研究またはその他の目的のために、望ましいデータを変更されない(または最小限に変更された)状態に保つように、データの一部または全部を匿名化するために、匿名化手法が実行される。
【0062】
テーブル800内のデータを匿名化するために、「教育レベル」属性内の文字列値801-2の各々が、テーブル800から抽出またはコピーされて、単語埋め込みベクトル・モデル803(例えば、単語埋め込みベクトル・モデル103)を通過する。したがって、文字列値801-2の各々は、他の単語との意味的類似度またはその他のコンテキスト的類似度に従って、ベクトル空間(例えば、ベクトル空間309)内でマッピングされる。文字列値801-2の各々から単語埋め込みベクトル・モデル803内の他の単語の一部または各々までの距離が、計算される。匿名化されたテーブル830の「教育レベル」属性に使用される単語を決定するために、ポリシーが照会される。1つのポリシーは、文字列値801-2の各々の最も近い近隣(
図3のベクトル空間309内で示されている「高等教育」または「学生」など)を選択することである。
【0063】
実数値801-1の各々も、テーブル800から抽出またはコピーされて、前述したように正規化される。一部の実施形態では、実数値801-1の一部または各々に関して、クラスの境界または範囲を提供する第2のポリシーまたはポリシーのセット(k-匿名度、t-類似度、またはl-多様度、あるいはその組み合わせのポリシーなど)が定義される。例えば、テーブル830に示されているように、ポリシーは、郵便番号の範囲および年齢の範囲によってデータベース・レコードをグループ化することを含む。
【0064】
前述したように利用される特定のポリシーに従ってノイズを実数値801-1および文字列値801-2に追加するために、実数値801-1および文字列値801-2の各々は、ノイズ伝搬モジュール121(例えば、
図1のノイズ伝搬モジュール121)を通過する。例えば、1つのポリシーは、文字列値901-2の各々に最も近い近隣を検出し、その最も近い近隣によって値の各々を表すことを指定することができる。
図8に示されているように、テーブル800の教育レベルの文字列値「高校」、「学士」、「法務博士」、「医学博士」、および「博士」の各々は、テーブル830内の「教育レベル」属性に示されているように、それらの最も近い近隣(「学生」または「高等教育」のいずれか)にマッピングされている。したがって、ユーザが照会を発行した場合、テーブル800に示されている個別の教育レベルの代わりに、「高等教育」または「学生」が表示される。
【0065】
一部の実施形態では、ポリシーの別のセットが、年齢の範囲または郵便番号の範囲あるいはその両方などの実数の範囲によって、範囲の境界を定義すること、または各等価クラスの点を分割すること、あるいはその両方を指定できる。例えば、
図8は、テーブル800内の年齢属性の実数値(27、40、65、58、34、63、40、54、58)の各々が、テーブル830の年齢属性に示されているように、40歳以下または40歳以上(ポリシー)として定義されていることを示している。テーブル800に表されている郵便番号の実数値の各々は、テーブル830の郵便番号属性に示されているように、既定の郵便番号の最後の3つの数字が同一であるということに従ってグループ化されており、最後の数字が抑制されている(別のポリシー)。したがって、ユーザが照会を発行した場合、テーブル800に示されている個別の年齢および郵便番号の値の代わりに、≦40、≧40、4767*、4790*、または4760*が表示される。
【0066】
ノイズ伝搬モジュール821内で実装されたポリシーに従って、テーブル800の「病気」属性値は、
図830の「病気」属性の列に示されているように、変更されないままである。したがって、これらの機密属性値にはノイズが追加されていない。「病気」属性値の各々は、抑制に関しては変更されていない(すなわち、完全に表示可能である)が、上から下までのレコードの順序が、上記で指定されたポリシーに従って変更されている。
図8の研究目的のためには名前が重要ではないため、テーブル830の「名前」属性の列に示されているように、テーブル800の「名前」属性値の各々も抑制されている。変更されていない「病気」属性値をいずれかの特定の名前に結び付けることができないということも、望ましい。図に示されているように、名前属性値がノイズ伝搬モジュール821を通過しないため、どの名前属性値にもノイズが追加されていない。
【0067】
データベース・レコードの出力およびテーブル830内のそれらの値は、等価クラス823を含む3つの等価クラスが存在するということを示している。等価クラスは、準識別子属性のうちの少なくとも1つに関して同じ値を含んでいる、匿名化される対象内のデータ・レコードのセットである。したがって、等価クラスは、一緒にグループ化され、特定の属性の単一の値として表される、データのサブセットである。例えば、等価クラス823は、レコードの各々が、各「年齢」属性内で≧40、および各「郵便番号」属性内で「4767」という同じ値を含んでいることを示している。しかし、「教育レベル」値は、「高等教育」または「学生」のいずれかであるため、レコードごとに同じではない。
【0068】
等価クラスは、任意の適切な方法で整理され得る。
図8は、年齢および郵便番号の範囲に従って等価クラスが整理されていることを示している。しかし、一部の実施形態では、「機密」属性または他の準属性あるいはその両方を、追加でまたは代わりに使用して、等価クラスが整理され得る。例えば、一部の実施形態では、テーブル830内の特定の等価クラスの「教育レベル」値が同じである。1つの例では、「高等教育」の値を含んでいる3つのレコードが存在し、これらのレコードの各々が等価クラスにグループ化され得る。別の例では、すべての「心臓病」の値およびそれらに対応するレコードが、等価クラス内で一緒にグループ化され得る。
【0069】
図9は、実施形態に従うコンピューティング環境900のブロック図である。コンピューティング環境900は、1つまたは複数のネットワーク918を介して、匿名化されたデータベース904、906、および908の各々に通信によって結合された、1つまたは複数のユーザ・デバイス902(例えば、
図11のコンピューティング・デバイス12)を含んでいる。これらの匿名化されたデータベースの各々は、いずれかの時点で、私的データベース(私的データベース910、912、および914)として存在していた。
【0070】
一部の実施形態では、私的データベース910、912、および914(例えば、
図8のテーブル800)の各々は、異なる実体の私的データ・ストアに対応する。例えば、一部の実施形態では、健康データに関して、私的データベース910が第1の病院のデータベース・サーバに対応し、私的データベース912が第2の病院のデータベース・サーバに対応し、私的データベース914が第3の病院のデータベース・サーバに対応する。私的データベースは、各属性および値が完全に表示可能になるように、データを変更されていない形態で含む。
【0071】
私的データベースの各々が、(例えば、
図5のプロセス500または
図1に示されたブロック図のフローあるいはその両方を介して)対応する匿名化されたデータベースに匿名化される。例えば、私的データベース910は、
図8のテーブル800を含むことができ、匿名化されたデータベース904になった場合に、
図8のテーブル830に従って表示可能になり、テーブル830になるために必要な機能のすべてを実行する。
【0072】
ユーザ・デバイス902を利用している研究者などのユーザは、匿名化されたデータベースの各々に配置されたデータを取得することを望むことがある。それに応じて、ユーザ・デバイス902は、匿名化されたデータベースの各々に含まれているデータにアクセスするために、ネットワーク918を経由して複数の要求(例えば、読み取り要求)を発行する。ユーザ・デバイス902および匿名化されたデータベースは、ネットワーク918を介して互いに接続を確立する。ネットワーク918は、ローカル・エリア・ネットワーク(LAN:local area network)、一般的な広域ネットワーク(WAN:wide area network)、パーソナル・エリア・ネットワーク(PAN:personal area network)、またはパブリック・ネットワーク(例えば、インターネット)、あるいはその組み合わせなどの、任意の適切なネットワークであるか、またはこれらのネットワークを含む。一部の実施形態では、コンピューティング環境900は、
図11において説明されているように、クラウド・コンピューティング環境50であるか、またはクラウド・コンピューティング環境50を含む。
【0073】
図10は、実施形態に従うコンピューティング環境1000のブロック図である。コンピューティング環境1000は、1つまたは複数のネットワーク1018を介して、集約されて匿名化されたデータベース1004に通信によって結合された、1つまたは複数のユーザ・デバイス1002(例えば、
図11のコンピューティング・デバイス12)を含んでいる。集約されて匿名化されたデータベース1004は、匿名化されたデータベースのグループを含んでいる単一の集中的なデータ・ストアである。集約されて匿名化されたデータベース1004は、あるとき、集約された私的データベース1006として存在していた。集約された私的データベース1006は、私的データベース1008、1010、および1012の各々を含んでいる単一の集中的な私的データ・ストアである。
【0074】
一部の実施形態では、私的データベース1008、1010、および1012の各々は、異なる実体の私的データ・ストアに対応する。例えば、一部の実施形態では、健康データに関して、私的データベース1008が第1の医療センターのサーバに対応し、私的データベース1010が第2の医療センターのサーバに対応し、私的データベース1012が第3の医療センターのサーバに対応する。私的データベースは、各属性および値が完全に表示可能になるように、データを変更されていない形態で含む。
【0075】
私的データベースの各々は、信頼できるサード・パーティ(例えば、私的データベース1008、1010、および1012に関連付けられた実体から分離している別のコンピューティング・デバイスの実体)などの独立したソースによって、1つのデータ・ストアに集約または統合される。次に、集約された私的データベース1006が、(例えば、
図5のプロセス500または
図1に示されたブロック図のフローあるいはその両方を介して)対応する集約されて匿名化されたデータベース1004に匿名化される。例えば、集約された私的データベース1006は、
図8のテーブル800に類似した複数のテーブルまたはデータベースを含むことができ、それらの複数のテーブルまたはデータベースあるいはその両方は、匿名化され、集約されて匿名化されたデータベース1004になった場合に、
図8のテーブル830のように表示可能になり、テーブル830になるために必要な機能のすべてを実行する。
【0076】
ユーザ・デバイス1002を利用している研究者などのユーザは、集約されて匿名化されたデータベース1004に配置されたデータを取得することを望むことがある。それに応じて、ユーザ・デバイス1002は、集約されて匿名化されたデータベース1004に含まれているデータにアクセスするために、ネットワーク1018を経由して要求を発行する。ユーザ・デバイス1002および集約されて匿名化されたデータベース1004は、ネットワーク1018を介して互いに接続を確立する。ネットワーク1018は、ローカル・エリア・ネットワーク(LAN:local area network)、一般的な広域ネットワーク(WAN:wide area network)、パーソナル・エリア・ネットワーク(PAN:personal area network)、またはパブリック・ネットワーク(例えば、インターネット)、あるいはその組み合わせなどの、任意の適切なネットワークであるか、またはこれらのネットワークを含む。一部の実施形態では、コンピューティング環境1000は、
図11において説明されているように、クラウド・コンピューティング環境50であるか、またはクラウド・コンピューティング環境50を含む。
【0077】
本開示にはクラウド・コンピューティングに関する詳細な説明が含まれているが、本明細書において示された内容の実装は、クラウド・コンピューティング環境に限定されないと理解されるべきである。本発明の実施形態は、現在既知であるか、または今後開発される任意のその他の種類のコンピューティング環境と組み合わせて実装できる。
【0078】
クラウド・コンピューティングは、構成可能な計算リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス提供モデルであり、管理上の手間とサービス・プロバイダとのやりとりを最小限に抑えて、それらのリソースを迅速にプロビジョニングおよび解放することができる。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つのデプロイメント・モデルを含むことができる。
【0079】
特徴は、次のとおりである。
オンデマンドのセルフ・サービス:クラウドの利用者は、サーバの時間、ネットワーク・ストレージなどの計算能力を一方的に、サービス・プロバイダとの人間的なやりとりを必要とせず、必要に応じて自動的にプロビジョニングすることができる。
幅広いネットワーク・アクセス:クラウドの能力は、ネットワークを経由して利用可能であり、標準的なメカニズムを使用してアクセスできるため、異種のシン・クライアントまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による利用を促進する。
リソース・プール:プロバイダの計算リソースは、プールされ、マルチテナント・モデルを使用して複数の利用者に提供される。さまざまな物理的および仮想的リソースが、要求に従って動的に割り当ておよび再割り当てされる。場所に依存しないという感覚があり、利用者は通常、提供されるリソースの正確な場所に関して管理することも知ることもないが、さらに高い抽象レベルでは、場所(例えば、国、州、またはデータセンター)を指定できる場合がある。
迅速な順応性:クラウドの能力は、迅速かつ柔軟に、場合によっては自動的にプロビジョニングされ、素早くスケールアウトし、迅速に解放されて素早くスケールインすることができる。プロビジョニングに使用できる能力は、利用者には、多くの場合、任意の量をいつでも無制限に購入できるように見える。
測定されるサービス:クラウド・システムは、計測機能を活用することによって、サービスの種類(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザのアカウント)に適した抽象レベルで、リソースの使用を自動的に制御および最適化する。リソースの使用量は監視、制御、および報告することができ、利用されるサービスのプロバイダと利用者の両方に透明性が提供される。
【0080】
サービス・モデルは、次のとおりである。
SaaS(Software as a Service):利用者に提供される能力は、クラウド・インフラストラクチャ上で稼働しているプロバイダのアプリケーションの利用である。それらのアプリケーションは、Webブラウザ(例えば、Webベースの電子メール)などのシン・クライアント・インターフェイスを介して、さまざまなクライアント・デバイスからアクセスできる。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能を含む基盤になるクラウド・インフラストラクチャを、限定的なユーザ固有のアプリケーション構成設定を行う可能性を除き、管理することも制御することもない。
PaaS(Platform as a Service):利用者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、利用者が作成または取得したアプリケーションをクラウド・インフラストラクチャにデプロイすることである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、デプロイされたアプリケーション、および場合によってはアプリケーション・ホスティング環境の構成を制御することができる。
IaaS(Infrastructure as a Service):利用者に提供される能力は、処理、ストレージ、ネットワーク、およびその他の基本的な計算リソースのプロビジョニングであり、利用者は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをデプロイして実行できる。利用者は、基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、およびデプロイされたアプリケーションを制御することができ、場合によっては、選択されたネットワーク・コンポーネント(例えば、ホスト・ファイアウォール)を限定的に制御できる。
【0081】
デプロイメント・モデルは、次のとおりである。
プライベート・クラウド:このクラウド・インフラストラクチャは、ある組織のためにのみ運用される。この組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
コミュニティ・クラウド:このクラウド・インフラストラクチャは、複数の組織によって共有され、関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスに関する考慮事項)を共有している特定のコミュニティをサポートする。これらの組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
パブリック・クラウド:このクラウド・インフラストラクチャは、一般ユーザまたは大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、データとアプリケーションの移植を可能にする標準化された技術または独自の技術(例えば、クラウド間の負荷バランスを調整するためのクラウド・バースト)によって固有の実体を残したまま互いに結合された2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合である。
【0082】
クラウド・コンピューティング環境は、ステートレス、疎結合、モジュール性、および意味的相互運用性に重点を置いたサービス指向の環境である。クラウド・コンピューティングの中心になるのは、相互接続されたノードのネットワークを含んでいるインフラストラクチャである。
【0083】
ここで
図11を参照すると、例示的なクラウド・コンピューティング環境50が示されている。図示されているように、クラウド・コンピューティング環境50は、クラウドの利用者によって使用されるローカル・コンピューティング・デバイス(例えば、パーソナル・デジタル・アシスタント(PDA:personal digital assistant)または携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、あるいはその組み合わせなど)が通信できる1つまたは複数のクラウド・コンピューティング・ノード10を含んでいる。ノード10は、互いに通信してよい。ノード10は、1つまたは複数のネットワーク内で、本明細書において前述されたプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、またはハイブリッド・クラウド、あるいはこれらの組み合わせなどに、物理的または仮想的にグループ化されてよい(図示されていない)。これによって、クラウド・コンピューティング環境50は、クラウドの利用者がローカル・コンピューティング・デバイス上でリソースを維持する必要のないインフラストラクチャ、プラットフォーム、またはSaaS、あるいはその組み合わせを提供できる。
図11に示されたコンピューティング・デバイス54A~Nの種類は、例示のみが意図されており、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、任意の種類のネットワークまたはネットワーク・アドレス可能な接続(例えば、Webブラウザを使用した接続)あるいはその両方を経由して任意の種類のコンピュータ制御デバイスと通信することができると理解される。
【0084】
ここで
図12を参照すると、クラウド・コンピューティング環境50(
図11)によって提供される機能的抽象レイヤのセットが示されている。
図12に示されたコンポーネント、レイヤ、および機能は、例示のみが意図されており、本発明の実施形態がこれらに限定されないということが、あらかじめ理解されるべきである。図示されているように、次のレイヤおよび対応する機能が提供される。
【0085】
ハードウェアおよびソフトウェア・レイヤ60は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム61、RISC(Reduced Instruction Set Computer)アーキテクチャベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーク・コンポーネント66が挙げられる。一部の実施形態では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
【0086】
仮想化レイヤ70は、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75などの仮想的実体を提供できる抽象レイヤを備える。
【0087】
一例を挙げると、管理レイヤ80は、以下で説明される機能を提供できる。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用される計算リソースおよびその他のリソースの動的調達を行う。計測および価格設定82は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡、およびそれらのリソースの利用に対する請求書の作成と送付を行う。一例を挙げると、それらのリソースは、アプリケーション・ソフトウェア・ライセンスを含んでよい。セキュリティは、クラウドの利用者およびタスクのID検証を行うとともに、データおよびその他のリソースの保護を行う。ユーザ・ポータル83は、クラウド・コンピューティング環境へのアクセスを利用者およびシステム管理者に提供する。サービス・レベル管理84は、必要なサービス・レベルを満たすように、クラウドの計算リソースの割り当てと管理を行う。サービス水準合意(SLA:Service Level Agreement)計画および実行85は、今後の要求が予想されるクラウドの計算リソースの事前準備および調達を、SLAに従って行う。
【0088】
ワークロード・レイヤ90は、クラウド・コンピューティング環境で利用できる機能の例を示している。このレイヤから提供されてよいワークロードおよび機能の例としては、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想クラスルーム教育の配信93、データ分析処理94、トランザクション処理95、およびノイズ伝搬に基づくデータ匿名化96(例えば、
図5のプロセス500に基づく匿名化)が挙げられる。
【0089】
図13は、実施形態に従うコンピューティング・デバイス12のブロック図である。
図13に示されているように、コンピューティング・デバイス12は、汎用コンピューティング・デバイスの形態で示されているが、必ずしも一般的な機能を実行する汎用コンピュータとして当業者によって解釈されるべきではない。むしろコンピューティング・デバイス12は、コンピューティング・デバイスが何のコンポーネントを含んでよいかについての例示にすぎない。コンピューティング・デバイス12のコンポーネントは、1つまたは複数のプロセッサまたはプロセッシング・ユニット16、システム・メモリ28、およびシステム・メモリ28を含むさまざまなシステム・コンポーネントをプロセッサ16に結合するバス18を含んでよいが、これらに限定されない。一部の実施形態では、コンピューティング・デバイス12は、ユーザ・デバイス902、1002、匿名化されたデータベース(例えば、904)、集約されて匿名化されたデータベース1004を含んでいるコンピューティング・デバイス、
図11に含まれているコンピューティング・デバイス54もしくはノード10またはその両方、または
図1のフローを実装するデバイス、あるいはその組み合わせを表す。
【0090】
バス18は、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、アクセラレーテッド・グラフィックス・ポート、およびさまざまなバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを含む、複数の種類のバス構造のいずれかのうちの1つまたは複数を表す。例として、そのようなアーキテクチャは、ISAバス、MCAバス、EISAバス、VESAローカル・バス、およびPCIバスを含むが、これらに限定されない。
【0091】
コンピューティング・デバイス12は、通常、さまざまなコンピュータ・システム可読媒体を含む。そのような媒体は、コンピューティング・デバイス12によってアクセスできる任意の使用可能な媒体であってよく、揮発性および不揮発性媒体、取り外し可能および取り外し不可の媒体を含む。
【0092】
システム・メモリ28は、ランダム・アクセス・メモリ(RAM)30またはキャッシュ・メモリ32あるいはその両方などの、揮発性メモリの形態でのコンピュータ・システム可読媒体を含むことができる。コンピューティング・デバイス12は、その他の取り外し可能/取り外し不可、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体をさらに含んでよい。単に例として、取り外し不可、不揮発性の磁気媒体(図示されておらず、通常は「ハード・ドライブ」と呼ばれる)に対する読み取りと書き込みを行うために、ストレージ・システム34を提供することができる。図示されていないが、取り外し可能、不揮発性の磁気ディスク(例えば、「フロッピー(R)・ディスク」)に対する読み取りと書き込みを行うための磁気ディスク・ドライブ、およびCD-ROM、DVD-ROM、またはその他の光媒体などの取り外し可能、不揮発性の光ディスクに対する読み取りと書き込みを行うための光ディスク・ドライブを提供することができる。そのような例では、それぞれを、1つまたは複数のデータ媒体インターフェイスによってバス18に接続することができる。下で詳細に示され、説明されているように、メモリ28は、本発明の実施形態の機能を実行するように構成された一連の(例えば、少なくとも1つの)プログラム・モジュールを備える少なくとも1つのプログラム製品を含んでよい。
【0093】
例えば、一連の(少なくとも1つの)プログラム・モジュール42を含んでいるプログラム/ユーティリティ40がメモリ28に格納されてよいが、これに限定されず、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データも格納されてよい。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データまたはこれらの組み合わせは、それぞれネットワーク環境の実装を含んでよい。プログラム・モジュール42は、通常、本明細書に記載された本発明の実施形態の機能または方法あるいはその両方を実行する。例えば、プログラム・モジュール42は、
図1のフロー、
図2で説明されたプロセス、
図3で説明された方法、
図4で説明されたノイズ伝搬モジュール121、プロセス500、プロセス600、プロセス700、
図8で説明された機能、
図9で説明されたコンピューティング環境の機能、または
図10で説明されたコンピューティング環境の機能、あるいはその組み合わせであるか、またはこれらを含んでよい。
【0094】
コンピューティング・デバイス12は、キーボード、ポインティング・デバイス、ディスプレイ24などの1つまたは複数の外部デバイス14、ユーザがコンピューティング・デバイス12と情報をやりとりできるようにする1つまたは複数のデバイス、またはコンピューティング・デバイス12が1つまたは複数の他のコンピューティング・デバイスと通信できるようにする任意のデバイス(例えば、ネットワーク・カード、モデムなど)、あるいはその組み合わせと通信してもよい。そのような通信は、入出力(I/O)インターフェイス22を介して行うことができる。さらに、コンピューティング・デバイス12は、ローカル・エリア・ネットワーク(LAN)、一般的な広域ネットワーク(WANk)、またはパブリック・ネットワーク(例えば、インターネット)、あるいはその組み合わせなどの1つまたは複数のネットワークと、ネットワーク・アダプタ20を介して通信することができる。図に示されているように、ネットワーク・アダプタ20は、バス18を介してコンピューティング・デバイス12の他のコンポーネントと通信する。図示されていないが、その他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を、コンピューティング・デバイス12と併用できるということが理解されるべきである。その例として、マイクロコード、デバイス・ドライバ、冗長プロセッシング・ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが挙げられるが、これらに限定されない。
【0095】
本発明の態様は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせであってよい。コンピュータ・プログラム製品は、プロセッサにさまざまな実施形態の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読記憶媒体を含んでよい。
【0096】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読記憶媒体のさらに具体的な例の非網羅的リストは、ポータブル・フロッピー(登録商標)・ディスク、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROM:またはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組み合わせを含む。本明細書において使用されるとき、コンピュータ可読記憶媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいはワイヤを介して送信される電気信号などの一過性の信号であると解釈されるべきではない。
【0097】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から各コンピューティング・デバイス/処理デバイスへ、またはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組み合わせ)を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを備えてよい。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読記憶媒体に格納するために転送する。
【0098】
本発明の実施形態の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいは、Smalltalk、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)または広域ネットワーク(WAN)を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われてよい。一部の実施形態では、本発明の実施形態の態様を実行するために、例えばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA:)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行してよい。
【0099】
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
【0100】
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読記憶媒体がフローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読記憶媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組み合わせに特定の方式で機能するように指示できるものであってもよい。
【0101】
コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作を実施するように、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込まれてもよく、それによって、一連の動作可能なステップを、コンピュータ上、その他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成するその他のデバイス上で実行させる。
【0102】
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための1つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された2つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組み合わせは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組み合わせを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。
【0103】
本発明のさまざまな実施形態の説明は、例示の目的で提示されているが、網羅的であることは意図されておらず、開示された実施形態に制限されない。説明された実施形態の範囲を逸脱することなく多くの変更および変形が可能であることは、当業者にとって明らかである。本明細書で使用された用語は、実施形態の原理、実際の適用、または市場で見られる技術を超える技術的改良を説明するため、または他の当業者が本明細書で開示された実施形態を理解できるようにするために選択されている。
【0104】
以下の定義は、本開示に固有である。
「または~あるいはその組み合わせ(and/or)」は、包含的離接であり、論理離接とも呼ばれ、一般に「包含的論理和」と呼ばれる。例えば、「A、B、またはC、あるいはその組み合わせ」という語句は、AまたはBまたはCのうちの少なくとも1つが真であるということを意味しており、「A、B、またはC、あるいはその組み合わせ」は、AおよびBおよびCの各々が偽である場合にのみ、偽になる。
項目「のセット」は、1つまたは複数の項目が存在しており、少なくとも1つの項目が存在しなければならないが、2つ、3つ、またはそれ以上の項目が存在する可能性もあるということを意味する。項目「のサブセット」は、共通の特徴を含んでいる項目のグループ内に1つまたは複数の項目が存在するということを意味する。
「含む(includes)」およびその変形(例えば、含んでいる(including)、含む(include)など)は、特に明示的に示されない限り、「~を含むが、必ずしもそれに限定されない」ということを意味する。
「ユーザ」または「サブスクライバ」は、(i)1人の個人、(ii)1人の個人または2人以上の人間の代わりに行動するための十分な知能を有する人工知能の実体、(iii)1人の個人または2人以上の人間によって活動が行われている企業実体、または(iv)1つの「ユーザ」または「サブスクライバ」として行動している任意の1つまたは複数の関連する「ユーザ」または「サブスクライバ」の組み合わせ、あるいはその組み合わせを含むが、必ずしもこれらに限定されない。
「受信する」、「提供する」、「送信する」、「入力する」、「出力する」、および「報告する」という用語は、特に明示的に指定されない限り、(i)物体と対象の間の関係に関する直接性の特定の程度、または(ii)物体と対象の間に挿入された中間的なコンポーネント、中間的な動作、もしくは物、またはその組み合わせのセットの存在もしくは不在、あるいはその両方を示しているか、または暗示していると受け取られるべきではない。
「モジュール」は、ハードウェア、ファームウェア、またはソフトウェア、あるいはその組み合わせの任意のセットであり、モジュールが次のいずれの状態であるかに関わらず、機能を実行するように動作可能である。(i)1つにまとまって局所的に近接している、(ii)広い領域にわたって分散している、(iii)大きい一群のソフトウェア・コード内で1つにまとまって近接している、(iv)一群のソフトウェア・コード内に存在する、(v)1つのストレージ・デバイス、メモリ、または媒体内に存在する、(vi)機械的に接続されている、(vii)電気的に接続されている、または(viii)データ通信で接続されている、あるいはその組み合わせの状態にある。「サブモジュール」は、「モジュール」内の「モジュール」である。
本明細書において説明されているように、「データ・ストア」は、データを格納するため、または管理するため、あるいはその両方を行うための、任意の種類の保存場所である。例えば、データ・ストアは、1つまたは複数の、データベース、ファイル(例えば、非構造化データのファイル)、コーパス、デジタル文書などであるか、またはこれらを含むことができる。
「引き起こしている」または「引き起こす」という用語は、1つまたは複数のシステム(例えば、コンピューティング・デバイス)またはコンポーネント(例えば、プロセッサ)あるいはその両方が、他のシステムまたはコンポーネントあるいはその両方から孤立して、またはそれらと組み合わせられて、特定の結果または効果をもたらすか、またはもたらすことに役立ってよいということを意味する。例えば、サーバ・コンピューティング・デバイスが、(例えば、メッセージをユーザ・デバイスに送信することによって)メッセージがユーザ・デバイスに表示されることを「引き起こし」てよく、または同じユーザ・デバイスが、(例えば、ユーザ・デバイスの表示メモリ内の命令およびデータを実行するプロセッサを介して)同じメッセージが表示されることを「引き起こし」てよく、あるいはその両方が行われてよい。したがって、1つまたは両方のシステムが、孤立して、または一緒に、メッセージを表示する効果を「引き起こし」てよい。
「コンピューティング・システム」または「デバイス」という用語は、単一のコンピューティング・デバイス(例えば、モバイル・デバイス)または複数のコンピューティング・デバイス(例えば、複数のクラウド・コンピューティング・ノード)あるいはその両方を意味する。
第1(例えば、第1のキャッシュ)、第2(例えば、第2のキャッシュ)などの用語は、明示的に述べられない限り、順序または時系列を示しているとして、または暗示しているとして解釈されるべきではない。むしろこれらの用語は、2つ以上の要素を区別していると解釈されるべきである。一部の実施形態では、2つ以上の要素が、区別可能であるが、同じ構成を有する。例えば、第1のメモリおよび第2のメモリは、実際に2つの別々のメモリであるが、両方とも、同じ記憶容量(例えば、4GB)を有するRAMデバイスであってよい。