(58)【調査した分野】(Int.Cl.,DB名)
匿名化される対象である複数の準識別子の属性値の組み合わせを含む匿名化対象データに基づいて、当該準識別子毎に、前記匿名化対象データに含まれる属性値および当該属性値の出現頻度を有する複数のノードを含む最下層のレイヤと、下層のレイヤに比べて匿名化の程度が同一またはより高い属性値および当該属性値の出現頻度を有する1つ以上のノードを含むレイヤとによって構成される木構造の一般化階層を作成する一般化階層作成手段と、
利用者による準識別子の指定に応答して、指定された当該準識別子の一般化階層を利用者に提示する一般化階層提示手段と、
利用者による編集の指示に応じて、前記一般化階層提示手段によって提示された一般化階層を、木構造を保ちながら更新し、更新された一般化階層を利用者に再提示する一般化階層編集手段と、
利用者による各準識別子の一般化階層のレイヤの指定に応答して、前記匿名化対象データに含まれる各準識別子の属性値が当該指定された各準識別子の一般化階層のレイヤに属するノードの属性値に置き換えられた匿名化データを作成する匿名化手段と、
を備えることを特徴とするパーソナル情報匿名化システム。
前記匿名化手段が、前記匿名化データに含まれる各準識別子の属性値の組み合わせの出現頻度が利用者によって指定されたk匿名化閾値を満たすように前記匿名化データを修正することを特徴とする請求項1または2に記載のパーソナル情報匿名化システム。
前記一般化階層編集手段における編集が、ノードの名前の変更と、ノードの移動と、レイヤの追加と、レイヤの削除とを含むことを特徴とする請求項1ないし3のいずれか1項に記載のパーソナル情報匿名化システム。
【発明を実施するための形態】
【0017】
以下、本発明の実施形態に係るパーソナル情報匿名化システムについて添付図面を参照しながら説明する。ただし、本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。
なお、実施形態を説明する全図において、共通の構成要素には同一の符号を付し、繰り返しの説明を省略する。
【0018】
(全体構成)
図1は、本発明の実施形態に係るパーソナル情報匿名化システム100の構成の一例を示す。
パーソナル情報匿名化システム100は、インターネット等のネットワーク180に接続されている。また、ネットワーク180には、一般化階層編集受付装置170が接続されている。パーソナル情報匿名化システム100と一般化階層編集受付装置170は、ネットワーク180を介して相互に通信することができる。
一般化階層編集受付装置170は、一般化階層を編集するユーザインタフェースを利用者に提供する。一般化階層編集受付装置170は、例えば、パーソナルコンピュータで実現される。一般化階層編集受付装置170は、例えば、Webブラウザに表示されるWebページとしてユーザインタフェースを実現してもよいし、Java(登録商標)のグラフィカルユーザインタフェース部品であるSWT(Standard Widget Toolkit)を用いたクライアントサーバアプリケーションのウィンドウとしてユーザインタフェースを実現してもよい。
【0019】
パーソナル情報匿名化システム100は、匿名化装置101とパーソナル情報管理装置150とを含む。
匿名化装置101は、アプリケーションサーバ等であって、CPU(Central Processing Unit)と、RAM(Random Access Memory)等で構成される主メモリと、ハードディスク等で構成される記憶装置とを備える。
匿名化装置101の記憶装置には、匿名化プログラムが格納されている。
匿名化装置101のCPUが、匿名化プログラムを記憶装置から主メモリに読み込んで実行することによって、ユーザインタフェース部110と、一般化階層作成部111と、一般化階層提示部112と、一般化階層編集部113と、匿名化後頻度表算出部114と、損失指標算出部115と、一般化階層保存部116と、匿名化処理部117との各部の機能が実現される。一時記憶部120は、匿名化装置101の主メモリまたは記憶装置に設けられた記憶領域である。
パーソナル情報管理装置150は、データベース製品上のストレージとして実現される。パーソナル情報管理装置150の実現方法は関係データベース、キーバリュー型分散データベースなどが考えられる。パーソナル情報管理装置150は、匿名化対象データ151と、管理データ152と、一般化階層データ153と、準識別子タプル頻度データ154と、匿名化データ155とを管理する。
なお、匿名化装置101とパーソナル情報管理装置150は、同一のコンピュータで実現されてもよいし、別々のコンピュータで実現されてもよい。
【0020】
ユーザインタフェース部110は、後述するように、
図2に示す一般化階層編集画面200を一般化階層編集受付装置170に表示させる。一般化階層編集受付装置170が一般化階層編集画面200上で入力された各種情報を匿名化装置101に送信すると、ユーザインタフェース部110はその情報を受信して他の各部に渡す。
一般化階層作成部111は、匿名化対象データの名前、匿名化対象データが格納されているデータファイルの場所、k匿名化閾値、および属性情報などの情報を受け付けると、データファイルを取得する。そして、一般化階層作成部111は、データファイルから匿名化対象データと一般化階層データと準識別子タプル頻度データとを作成し、パーソナル情報管理装置150に匿名化対象データ151と管理データ152と一般化階層データ153と準識別子タプル頻度データ154とを書き込む。
一般化階層提示部112は、一般化階層編集受付装置200を用いる利用者による準識別子の指定を受け付けると、指定された準識別子の一般化階層データ153をパーソナル情報管理装置150から読み出して木構造に展開し、一時記憶部120に保存する。そして、一般化階層提示部112は、一時記憶部120に保存されている一般化階層等を一般化階層編集受付装置170の一般化階層編集画面上に表示させる。なお、「一般化階層等を一般化階層編集受付装置170の一般化階層編集画面上に表示させる」ことは、本発明における「指定された準識別子の一般化階層を利用者に提示する」ことの一例である。
一般化階層編集部113は、利用者による編集の指示に応じて、一般化階層提示部112によって提示された一般化階層を、木構造を保ちながら更新する。
【0021】
匿名化後頻度表算出部114は、匿名化対象データの準識別子の属性値を匿名化したときの準識別子の組み合わせの出現頻度を算出し、匿名化換後の準識別子の組み合わせとその出現頻度とを含む匿名化後タプル頻度表を出力する。
損失指標算出部115は、匿名化後頻度表算出部114により出力される匿名化後タプル頻度表を基に、匿名化前後の情報量を計算して匿名化前のデータからどれだけ情報の精度が落ちたかを表す情報損失指標である情報損失率を計算する。
【0022】
一般化階層保存部116は、利用者の保存操作に応じて一時記憶部120に保存されている一般化階層をパーソナル情報管理装置150の一般化階層データ153として書き込む。
匿名化処理部117は、利用者による匿名化要求に応答して匿名化対象データから匿名化データを求める。そして、匿名化処理部117は、利用者によって指定されたk匿名化閾値を満たすように匿名化データを修正してパーソナル情報管理装置150の匿名化データ155として書き込む。
なお、一般化階層作成部111は本発明の一般階層作成手段の一例であり、一般化階層提示部112は本発明の一般化階層提示手段の一例であり、一般化階層編集部113は本発明の一般化階層編集手段の一例であり、匿名化処理部117は本発明の匿名化手段の一例であり、匿名化後頻度表算出部114は本発明の匿名化後頻度表算出手段の一例である。
【0023】
(一般化階層編集受付装置)
一般化階層編集受付装置170は、
図2に示す一般化階層編集画面200をディスプレイに表示する。
一般化階層編集画面200は、メニューバー210と、匿名化設定表示エリア250と、損失指標評価エリア260と、一般化階層エディタ270とを含む。
メニューバー210には、項目として「データ」と「一般化階層」が表示される。メニューバー210をマウスで左クリックするなどの操作によって、「データ−取込」メニュー220を選択すると、
図3に示す匿名化対象データ取込ダイアログ221がディスプレイ上に開く。後述するように、匿名化対象データ取込ダイアログ221上でデータ名とデータファイルのパスを指定し、k匿名化閾値を設定し、匿名化対象データの属性と準識別子の情報を選択することができる。
また、メニューバー210をマウスで左クリックするなどの操作によって「データ−匿名化」メニュー230を選択すると、
図4に示す匿名化実行ダイアログ231がディスプレイ上に開く。
また、メニューバー210をマウスで左クリックするなどの操作によって「一般階層化−保存」メニュー240を選択することにより、一般化階層を情報管理装置150の一般化階層データ153に保存することができる。
【0024】
匿名化設定表示エリア250は、匿名化対象データ取込ダイアログ221上で設定されたデータ名とk匿名化閾値と匿名化対象データの属性の一覧と匿名化対象データの準識別子の一覧とを表示する。
図2では属性の一覧と準識別子の一覧とを別々の領域に表示しているが、同一の領域に表示して準識別子にあたる属性だけを太字で示すなどの方法で強調表示してもよい。また、属性の領域と準識別子の領域の間に、準識別子の追加や削除を実行するボタンを設けてもよい。
【0025】
損失指標評価エリア260は、匿名化実行ダイアログ231上で選択された一般化階層のレイヤをすべての準識別子について表示し、また、それらのレイヤを用いて匿名化を実行したときの情報損失率を表示する。
匿名化実行ダイアログ231上で準識別子の一般化階層のレイヤが選択されると、匿名化後頻度表算出部114は、選択されたレイヤに応じて匿名化後タプル頻度表を算出し、この匿名化後タプル頻度表を基に情報損失率を求める。情報損失率は、後述する式1から式9に定める方法によって算出される。
【0026】
一般化階層エディタ270は、準識別子ごとに一般化階層を表示し、準識別子の属性値または一般化(匿名化)された属性値とその出現頻度、および各レイヤでの情報損失率(IL:Information Loss rate)を表示する。ここで、出現頻度とは、例えば、準識別子の属性値が匿名化対象データに現れる回数をいう。また、一般化階層エディタ270は、利用者によるノードの移動やノード名変更、レイヤの追加や削除などの編集操作に応じて一般化階層や情報損失率の表示を更新する。
【0027】
一般化階層は、匿名化対象データに含まれる準識別子の属性値およびその出現頻度を有する複数のノードを含む最下層のレイヤと、下層のレイヤに比べて匿名化の程度が同一またはより高い属性値およびその出現頻度を有する1つ以上のノードを含むレイヤとによって構成される。
例えば、
図2中の一般化階層エディタ270には、あるパーソナル情報について「国籍」という準識別子の一般化階層が表示されている。各ボックスの上段は「国籍」という準識別子の属性値または一般化(匿名化)された属性値を表し、下段はその出現頻度を表す。
一般化階層は2個以上任意個のレイヤL
0,…,L
J−1から構成され、各々のレイヤは1個以上任意個のノードを持つ。さらに、隣接するレイヤ間には親子関係がある。つまり、j=0,…,J−2に対して、L
jはL
j+1の子レイヤ、L
j+1はL
jの親レイヤである。さらに、各々のレイヤに属するノードは、上位レイヤに高々1つの親ノードを、下位レイヤに0個以上任意個の子ノードを持つ。ノードが親ノードを持たないのは、該ノードが属するレイヤが最上層のレイヤL
J−1、つまりルートレイヤであるときである。ノードが子ノードを持たないのは、そのノードが属するレイヤが最下層のレイヤL
0、つまりリーフレイヤであるときである。また、ルートレイヤに含まれるノードをルートノード、リーフレイヤに含まれるノードをリーフノードという。
【0028】
図2中の一般化階層エディタ270に表示されている例では、第5レイヤがルートレイヤであり、ルートノードの属性値は「仏中英独米日」である。また、第0レイヤがリーフレイヤであり、リーフノードの属性値は「仏」、「中」、「英」、「独」、「米」、および「日」である。第0レイヤは、匿名化する前の属性値各々を有するノードを含む。なお、例えば、「日」は第0レイヤから第4レイヤまでに含まれるが、第0レイヤの「日」がリーフノードであり、第1レイヤから第4レイヤまでの「日」はリーフノードではない。
以下では、あるレイヤのノード(親ノード)につながる上層のレイヤのノードを祖先ノードという。第5レイヤの「仏中英独米日」、第4レイヤの「仏中英独米」、および第3レイヤの「仏中英独」は、第2レイヤのノード「仏中英」の祖先ノードである。また、あるレイヤのノード(親ノード)につながる下層のレイヤのノードを子孫ノードという。たとえば、第1レイヤの「仏中」と「英」および第0レイヤの「仏」と「中」と「英」は、第2レイヤの親ノード「仏中英」の子孫ノードである。また、第0〜第3レイヤのノード「日」は、第4レイヤの親ノード「日」の子孫ノードである。
【0029】
(一般化階層エディタにおける編集)
一般化階層エディタ270上でマウスにより右クリックするなどの操作によって、コンテキストメニューを開くことができる。コンテキストメニューでは、「ノード名変更」、「ノード移動」、「レイヤ追加(上)」、「レイヤ追加(下)」および「レイヤ削除」等の各操作を行うことができる。
図5は、一般化階層エディタ270上に表示されるコンテキストメニューで選択可能な項目の一例を示す。選択可能な項目はレイヤに依存するが、加えてノード上で右クリックしたかそれ以外の空白エリア(以下、非ノードという。)で右クリックしたかにも依存する。
図5において、Nはルートレイヤのレイヤ番号であり、1以上の整数値を取る。一般化階層のレイヤの総数が2(N=1)である場合は、第1レイヤはルートレイヤである。この場合、ルートノードに対する操作を行うときは、
図5におけるレイヤ「1」の場合とレイヤ「N」の場合のANDを適用する。たとえば、第1階層でノードを選択したとき、レイヤ「1」の場合では「ノード移動」は○になっているが、レイヤ「N」の場合では「ノード移動」は×になっているので、「ノード移動」は選択できない。一般化階層のレイヤの総数が3(N=2)である場合、第1レイヤはルートレイヤではない。この場合に第1レイヤに対する操作を行うときは、
図5におけるレイヤ「1」の場合を適用する。一般化階層のレイヤの総数が3(N=2)である場合は、第2レイヤがルートレイヤである。この場合、ルートノードに対する操作を行うときは、
図5におけるレイヤ「N」の場合を適用する。
例えば、
図5によれば、一般化階層のレイヤの総数が2以上のときに第1レイヤ上のノードで右クリックしたときは「ノード名変更」と「ノード移動」が選択可能である。一方、第1レイヤの非ノード(ノードがないところ、すなわち空白エリア)で右クリックしたときは「レイヤ追加(上)」「レイヤ追加(下)」「レイヤ削除」が選択可能である。
【0030】
図6は、「ノード名変更」の一例を示す。
図6の例では第2レイヤの米をアメリカに変更している。
「ノード名変更」操作を行う場合、まず一般化階層エディタ270に表示されているノードをマウスで右クリックするとコンテキストメニューが表示される。次に、そのコンテキストメニュー上に表示されている「ノード名変更」をマウスで左クリックして選択する。これにより、一般化階層エディタ270上でこの選択されたノードのノード名を直接入力できるようになるので、キーボード等を用いて変更後のノード名を入力する。なお、ノード名変更後、ノード名を変更されたノードの祖先ノードや子孫ノード(リーフノードは除く)など、改名を推奨するノードを強調表示することとしてもよい。強調表示の方法としては、例えばノード名を赤色で表示したり、太線で表示する等の方法が考えられる。強調表示の例として、
図6に改名を推奨するノードのボックスの枠線を太線化する例を示す。
「ノード名変更」では編集前後でノード間の階層構造は変わらないため、情報損失率は変わらない。
【0031】
「ノード移動」操作を行う場合、まず一般化階層エディタ270に表示されているノードをマウスで右クリックするとコンテキストメニューが表示される。次に、そのコンテキストメニュー上に表示されている「ノード移動」をマウスで左クリックして選択する。そして、移動先の親ノードをマウスで左クリックする。
ノード移動は、移動対象ノードの子孫ノードも含めて階層構造を保ちながら移動する。その際、一般化階層は元のデータの属性値を曖昧化する階層であるので、レイヤ0にすべての匿名化前の属性値を持つ必要がある。このため、「ノード移動」は、移動元と移動先の階層によって以下の3種類に分けられる。
(1)移動によって階層が上がる場合:移動するノードの子孫ノードも一緒に移動し、移動するノードの末端にあるノードを第0レイヤまで伸ばす。第1レイヤのノード「中」を第3レイヤの「日」の下のレイヤ(第2レイヤ)に移動する例を
図7に示す。
(2)移動によって階層が変わらない場合:移動するノードを子孫ノードごと移動する。第1レイヤのノード「中」を第2レイヤの「日」の下のレイヤ(第1レイヤ)に移動する例を
図8に示す。
(3)移動によって階層が下がる場合:移動するノードを子孫ノードごと移動する。ただし、このまま移動すると、移動するノードの末端にあるノードが第0レイヤよりも下に位置してしまうので、移動前の第0レイヤからはみ出す分だけ下に階層を増やし、その最下層を改めて第0レイヤとする。さらに、移動するノードの子孫ノードに含まれないリーフノードは新しい第0レイヤまで伸ばす。第1レイヤのノード「仏独」を第1レイヤの「英」の下のレイヤ(第0レイヤ)に移動する例を
図9に示す。
なお、ノード移動後、改名を推奨するノードを強調表示することとしてもよい。強調表示の例として、
図7〜
図9に改名を推奨するノードのボックスの枠線を太線化する例を示す。
【0032】
また、
図5に示すように、第0レイヤのノード、つまりリーフノードの移動も可能である。例えば、
図2の一般化階層エディタ270に例示されている一般化階層において、ノード「中」を第1レイヤ以上のノード「日」の下に移動し、移動先の親ノードを「アジア」に改名するというような操作が考えられる。この操作によるリーフノードの移動が行われると、移動されたリーフノードは第0レイヤまで子孫ノードが伸び、同じ属性値を持つリーフノードが作成される。
ただし、「ノード移動」では、リーフノードを親ノードに指定することはできない。リーフノードは匿名化される前の生の属性値を表しているので、リーフノードが他の生の属性値を子孫に持つことは考えられないからである。
また、あるノードをその子孫ノードの下に移動することはできない。このような移動を可能とすると、ノードの親子関係が循環してしまうからである。この点は、Windows(登録商標)のエクスプローラで、あるフォルダをそのサブフォルダの下に移動する操作はできないのと同様である。
「ノード移動」では、ノード移動完了後に情報損失率を再計算し、再計算された情報損失率を一般化階層エディタ270に表示する。
【0033】
「レイヤ追加(上)」、「レイヤ追加(下)」または「レイヤ削除」操作を行う場合、まず一般化階層エディタ270に表示されているレイヤの非ノード(ノードがないところ、すなわち空白エリア)をマウスで右クリックするとコンテキストメニューが表示される。次に、そのコンテキストメニュー上に表示されている「レイヤ追加(上)」、「レイヤ追加(下)」および「レイヤ削除」のいずれかをマウスで左クリックして選択する。
「レイヤ追加(上)」では、選択したレイヤの上に新しくレイヤを作成する。新しいレイヤのノードは、選択したレイヤのノードがそのまま現れる。選択したレイヤと新しいレイヤでのノード間の親子関係は、同じ名前のノード同士が親子になる。新しいレイヤとその親レイヤのノード間の親子関係は、レイヤ追加前の選択したレイヤとその親レイヤの親子関係を引き継ぐ。
ただし、ルートレイヤの上には新しいレイヤを作成できない。
「レイヤ追加(上)」では追加したレイヤでの情報損失率は、選択したレイヤのそれと同じである。
【0034】
「レイヤ追加(下)」では、選択したレイヤの下に新しくレイヤを作成する。新しいレイヤのノードは、選択したレイヤの子レイヤにあったノードがそのまま現れる。新しいレイヤの子レイヤと新しいレイヤでのノード間の親子関係は、同じ名前のノード同士が親子になる。新しいレイヤとその親レイヤのノード間の親子関係は、レイヤ追加前の選択したレイヤとその子レイヤの親子関係を引き継ぐ。
ただし、リーフレイヤの下には新しいレイヤを作成できない。
「レイヤ追加(下)」では追加したレイヤでの情報損失率は、選択したレイヤのレイヤ追加前の子レイヤのそれと同じである。
【0035】
「レイヤ削除」では、選択したレイヤを削除する。削除するレイヤの一つ下のレイヤと一つ上のレイヤとの子孫関係が、レイヤ削除後の一般化階層での親子関係になる。
ただし、ルートレイヤとリーフレイヤの削除はできない。
「レイヤ削除」では編集前後でリーフレイヤと他レイヤとの子孫関係は変わらないため、情報損失率は変わらない。
【0036】
(匿名化対象データ)
匿名化対象データ151は、
図10に示すような表形式をとる。匿名化対象データ151のレコードは、レコードの識別子であるキーと、レコードの属性であるいくつかの列を有する。ここでは、KEYという列が識別子であり、他に年齢、国籍、専攻及び通勤時間といった列を持つ。本実施形態ではこれらの列のうち、年齢、国籍及び専攻を準識別子とする。
【0037】
(管理データ)
管理データ152は、
図11に示すように、データ名と、k匿名化閾値と、列情報と、一般化階層情報とを有する。
データ名は、匿名化対象のデータの名前である。
k匿名化閾値は、データ名が表す匿名化対象データ151をk匿名化するときの閾値である。
列情報は、匿名化対象データ151が持つ属性情報である。列情報は、属性の名前と型を持ち、準識別子かどうかを表すフラグ(準識別子である場合True、準識別子でない場合False)を持つ属性情報のリストである。
一般化階層情報は、準識別子の名前を示す準識別子名と、準識別子に対する一般化階層名とを含む情報のリストである。ここで、一般化階層名は、パーソナル情報管理装置150の一般化階層データ153でのテーブル名に対応している。一般化階層のデータは、一般化階層データ153の中にテーブルとして書き込まれる。一般化階層名は、そのテーブルの名前であり、例えば、データ名と準識別子名を一定の区切り文字で結合したものである。また、別々の準識別子の一般化階層のデータを同じテーブルに格納することもできる。この場合も一般化階層名はテーブル名に対応しており、同じテーブルに格納された一般化階層のデータに共通の一般化階層名が付与される。この場合の一般化階層名は、例えば、データ名の後に一定のサフィックスを結合したものとすることができる。
図2の一般化階層エディタ270上で、管理データ152のデータ名に紐づく一般化階層を編集することができる。
【0038】
(一般化階層データ)
一般化階層データ153は、
図12に示すように、準識別子名と、オブジェクトIDと、値と、頻度とを有する。一般化階層データ153は、準識別子名とオブジェクトIDをキーとする表である。
オブジェクトIDは、一般化階層の属性値または親子関係の識別子であり、属性値の識別子はNXXXの形式で、親子関係の識別子はPNYYYの形式である。ここで、属性値の識別子「NXXX」に対する値は、その識別子「NXXX」で特定される属性値である。また、オブジェクトID「PNYYY」に対する値は、ノード「NYYY」の親ノードのオブジェクトIDである。
頻度は、属性値の出現頻度を示す。出現頻度は、オブジェクトID「NXXX」に対してのみ存在し、オブジェクトID「PNYYY」に対する出現頻度は空欄である。
例えば、
図12の1行目は、
図2の一般化階層エディタ270中に示される一般化階層例におけるリーフレイヤの最も左のノードに対応しており、準識別子「国籍」のノード「N001」は属性値「仏」を持ち、その出現頻度は「5」であることを表す。同様に
図12の2行目は
図2の一般化階層エディタ270中に示される一般化階層例における第1レイヤの最も左のノードに対応しており、準識別子「国籍」のノード「N002」は属性値「仏中」を持ち、その出現頻度は「10」であることを表す。
図12の3行目はオブジェクトID「N001」のノード「仏」の親がオブジェクトID「N002」のノード「仏中」であることを表す。
【0039】
(準識別子タプル頻度データ)
準識別子タプル頻度データ154は、
図13に示すように、匿名化対象データの準識別子の値の組み合わせと、頻度とを有する。頻度は、準識別子の値の組み合わせがその匿名化対象データに現れる回数を示す。準識別子タプル頻度データ154は、匿名化対象データ151を基に予め算出されている。
準識別子タプル頻度データ154のデータ形式は、一般化階層を用いて匿名化対象データをk匿名化して得られる匿名化データの準識別子の値の組み合わせに対する頻度を表現する匿名化後タプル頻度表にも使用される。
【0040】
次に、匿名化後頻度表算出部114と損失指標算出部115について説明するが、これらの両部の処理は、
図20の一般化階層作成処理の後で実行される。
(匿名化後頻度表算出処理)
図14は、匿名化後頻度表算出部114における匿名化後頻度表算出処理の流れの一例を示す。
匿名化後頻度表算出部114は、
図12の一般化階層データ153と、
図13の準識別子タプル頻度データ154とをパーソナル情報管理装置150から主メモリに読み出す(S101)。そして、匿名化後頻度表算出部114は、読み出した準識別子タプル頻度データ154に含まれる全件のデータについて1件ずつ以下の処理を繰り返し、
図16に示す匿名化後タプル頻度表300を算出する(S102)。
具体的には、匿名化後頻度表算出部114は、準識別子タプル頻度データ154から、現在のレコードのキーを取得する(S103)。このキーは、読み出した一般化階層データ153により構成される一般化階層におけるリーフノードの属性値を組み合わせたものである。例えば、
図13の(27,日,地球物理学)というようなものになる。
次に、匿名化後頻度表算出部114は、このキーに含まれる属性値を、指定された各準識別子のレイヤの属性値に置き換えて新しいキーを作成する(S104)。なお、各準識別子のレイヤの指定は
図4の匿名化実行ダイアログ231上で行うことができる。また、後述する一般化階層提示処理と一般化階層編集処理の実行中には、一般化階層エディタ270上に一般化階層が表示される準識別子についてはレイヤの指定がリーフレイヤからルートレイヤまで自動で更新される。例えば、前述のキー(27,日,地球物理学)を、
図15に示す一般化階層の例を用いて、年齢・国籍および専攻の各属性値を第1レイヤの各属性値で置換したとき、置換されたキーは(20代,日,理系)となる。
次に、匿名化後頻度表算出部114は、置換されたキーに対して匿名化後タプル頻度表300に該当するキーのエントリがあるか確認し(S105)、エントリがなければ(S106:Yes)、頻度の値0でエントリを作成する(S107)。続いて、匿名化後頻度表算出部114は、置換されたキーに対する匿名化後タプル頻度表300のエントリを取得し、その頻度の値に置換されたキーに対応する現在のレコードのキーに対する準識別子タプル頻度データ154の頻度の値を加算して、匿名化後タプル頻度表300のエントリを更新する(S108)。これを準識別子タプル頻度データ154に含まれる全件のデータに対して繰り返す(S102)。
匿名化後頻度表算出部114は、例えば、
図13の準識別子タプル頻度データ154と
図15の一般化階層を用い、年齢・国籍及び専攻の一般化階層のレイヤをすべて第1レイヤで指定したとき、
図16に示す匿名化後タプル頻度表300を出力する。
【0041】
(損失指標算出部)
図17は、損失指標算出部115における損失指標算出処理の流れの一例を示す。
損失指標算出部115の入力は、準識別子タプル頻度データ154、および匿名化後頻度表算出部114で求められた匿名化後タプル頻度表300である。
損失指標算出部115は、まず、準識別子タプル頻度データ154を準識別子ごとに集計して全ての準識別子の属性値の出現頻度を求めることにより、準識別子ごとの頻度表F1,…,FNを作成する(S201)。ここで、準識別子ごとの頻度表は、匿名化対象データ151と単一の準識別子を決めたときの、その準識別子の属性値と出現頻度との対応関係を示す。例えば、
図13の準識別子タプル頻度データ154からは
図18のような準識別子ごとの頻度表が得られる。
次に、損失指標算出部115は、匿名化後タプル頻度表300から、各準識別子について指定されたレイヤを対象として準識別子ごとの匿名化後頻度表G1,…,GNを求める(S202)。なお、各準識別子のレイヤの指定は
図4の匿名化実行ダイアログ231上で行うことができる。また、後述する一般化階層提示処理と一般化階層編集処理の実行中には、一般化階層エディタ270上に一般化階層が表示される準識別子についてはレイヤの指定がリーフレイヤからルートレイヤまで自動で更新される。ここで、準識別子ごとの匿名化後頻度表は、匿名化データと単一の準識別子を決めたときの、該準識別子の匿名化属性値と出現頻度との対応関係を示す。この出現頻度は、匿名化後タプル頻度表300から特定の準識別子について頻度を集計することによって求められる。例えば、
図13の準識別子タプル頻度データ154と
図15の一般化階層を用い、すべての一般化階層で第1レイヤを指定したとき、
図19のような準識別子ごとの匿名化後頻度表が得られる。
次に、損失指標算出部115は、準識別子ごとの頻度表F1,…,FNと匿名化対象データの全レコード数Rから匿名化前情報量を求める。ここで、匿名化前情報量は、匿名化実行ダイアログ231等で全ての準識別子についてリーフレイヤが指定されたときの情報量に相当する。匿名化前情報量の算出式は以下の数1から数4のとおりである。なお、これ以降に現れる式において、対数関数logの底は2であるとするが、システム内で統一されていれば、10やネイピア数などの1を超える任意の正の数でよい。
【0042】
【数1】
【数2】
【数3】
【数4】
【0043】
次に、損失指標算出部115は、準識別子ごとの匿名化後頻度表G1,…,GNと匿名化対象データの全レコード数Rから匿名化後情報量を求める(S204)。ここで、匿名化後情報量は、各準識別子について指定されたレイヤで匿名化された場合の情報量である。各準識別子のレイヤの指定は匿名化実行ダイアログ231等で行うことができる。また、後述する一般化階層提示処理と一般化階層編集処理の実行中には、一般化階層エディタ270上に一般化階層が表示される準識別子についてはレイヤの指定がリーフレイヤからルートレイヤまで自動で更新される。匿名化後情報量の算出式は以下の数5から数8のとおりである。
【0044】
【数5】
【数6】
【数7】
【数8】
【0045】
最後に、損失指標算出部115は、ここまでに求めた匿名化前情報量と匿名化後情報量から、数9に従って情報損失率を求める(S205)。なお、情報損失率は本発明の情報損失指標の一例である。
【数9】
例えば、
図2の一般化階層編集画面200の損失指標評価エリア260に表示されている情報損失率(12.91%)は、準識別子「年齢」、「国籍」、および「専攻」について全て第1レイヤが指定されて匿名化された場合の値である。
【0046】
(一般化階層作成処理)
図20は、一般化階層作成処理の流れの一例を示す。
利用者が一般化階層編集受付装置170に表示されている一般化階層編集画面200上で、「データ−取込」メニュー220を選択する(S301)と、
図3の匿名化対象データ取込ダイアログ221が開く(S302)。利用者は匿名化対象データ取込ダイアログ221上で、データ名、データファイルのパス、k匿名化閾値、および列情報を入力する。列情報としては、取り込もうとしているデータファイルを基に作成される匿名化対象データを構成する各列の名前、型を指定し、さらに各列の中から準識別子として使用する列を指定する。利用者がデータ名、データファイルのパス、k匿名化閾値、および列情報を入力して取込ボタンを押すと、一般化階層編集受付装置170は、データファイルを指定されたパスから読み出して、データ名、データファイル、k匿名化閾値、および列情報を含む匿名化対象データ取込要求を匿名化装置101に送信する(S303)。
匿名化装置101がデータ名、データファイル、k匿名化閾値、および列情報を含む匿名化対象データ取込要求を受信する(S304)と、一般化階層作成部111は、受信したデータファイルから匿名化される対象である複数の準識別子の属性値の組み合わせを含む匿名化対象データを作成し、作成された匿名化対象データをパーソナル情報管理装置150の匿名化対象データ151として書き込む(S305)。
次に、一般化階層作成部111は、その匿名化対象データ151と列情報により指定された準識別子を基に、準識別子毎に、匿名化対象データ151に含まれる属性値およびその出現頻度を有する複数のノードを含む最下層のレイヤと、下層のレイヤに比べて匿名化の程度が同一またはより高い属性値およびその出現頻度を有する1つ以上のノードを含むレイヤとによって構成される木構造の一般化階層を作成し、パーソナル情報管理装置150の一般化階層データ153として書き込む(S306)。ここでの一般化階層の自動生成は、特許文献1に示すような技術を用いる。
【0047】
そして、一般化階層作成部111は、匿名化対象データ151を基に準識別子タプル頻度データを求め、パーソナル情報管理装置150の準識別子タプル頻度データ154に書き込む(S307)。さらに、一般化階層作成部111は、受信したデータ名、k匿名化閾値、および列情報を基に、パーソナル情報管理装置150の管理データ152を書き込む(S308)。ここで、一般化階層名には例えば、パーソナル情報管理装置150の一般化階層データ153を書き出したときの書き出し先のテーブル名を指定するが、これに限るものではない。
一般化階層作成部111は、これらの一連の処理が完了すると一般化階層作成処理の完了を一般化階層編集受付装置170に通知する(S309)。一般化階層編集受付装置170は通知を受けて、匿名化対象データ取込ダイアログ221を閉じる(S310)。
【0048】
(一般化階層提示処理)
図21は、一般化階層提示処理の流れの一例を示す。
図2の一般化階層編集画面200の匿名化設定表示エリア250には、匿名化対象データ取込ダイアログ221で設定したデータ名とk匿名化閾値と匿名化対象データの属性の一覧と匿名化対象データの準識別子の一覧とが表示される。利用者が匿名化設定表示エリア250で準識別子名を選択する(S401)と、一般化階層編集受付装置170は、準識別子名を含む一般化階層読出要求を匿名化装置101に送信する(S402)。
匿名化装置101が一般化階層読出要求を受信する(S403)と、一般化階層提示部112は、パーソナル情報管理装置150の一般化階層データ153から、一般化階層を読み込み、木構造のデータ構造に変換して一時記憶部120に書き込む(S404)。
次に、一般化階層提示部112は、準識別子タプル頻度データ154を準識別子ごとに集計して、すべての準識別子について属性値の出現頻度を求める(S405)。なお、ステップS405はステップS201と同一の処理であり、各準識別子の属性値の出現頻度は、一般化階層におけるリーフノードの出現頻度に相当する。
そして、一般化階層提示部112は、一般化階層読出要求に含まれる選択された準識別子の一般化階層(一般化階層エディタ270に表示されている準識別子の一般化階層)について、ステップS405で求めたリーフノードの出現頻度を用いてリーフノードの上層のノードの属性値の出現頻度を求める(S406)。例えば、
図2の一般化階層編集画面200の一般化階層エディタ270に表示されている一般化階層については、第1レイヤのノード「仏中」の頻度10は、第0レイヤのノード「仏」の頻度5と「中」の頻度5を加算することによって求められ、また、第2レイヤのノード「仏中英」の頻度25は、第1レイヤのノード「仏中」の頻度10と「英」の頻度15を加算することによって求められる。
【0049】
次に、損失指標算出部115が、一般化階層編集画面200の一般化階層エディタ270に表示される一般化階層の各レイヤの情報損失率ILを求める(S407)。ここで、一般化階層エディタ270には一般化階層読出要求に含まれる選択された準識別子の一般化階層が表示される。損失指標算出部115は、選択された準識別子以外の準識別子については匿名化実行ダイアログ231で指定されたレイヤ(すなわち、損失指標評価エリア260に表示されているレイヤ)に固定して、選択された準識別子のレイヤを変えながら各レイヤの情報損失率を求める。たとえば、
図2の一般化階層エディタ270に表示されているケースでは、年齢と専攻を第1レイヤに固定したときの情報損失率を、国籍のレイヤを変えながらそれぞれ求める。このために、損失指標算出部115に、準識別子タプル頻度データ154、および匿名化後タプル頻度表300を入力として与える。ここで、選択された準識別子については、一般化階層の全てのレイヤについて匿名化後タプル頻度表300を求めて使用する。それ以外の準識別子については、損失指標評価エリア260に表示されているレイヤについて求められた匿名化後タプル頻度表300を使用する。
そして、一般化階層提示部112は、一時記憶部120に保持している各ノードの出現頻度を含む一般化階層、および各レイヤの情報損失率を一般化階層編集受付装置170に送信する(S408)。一般化階層編集受付装置170は、受信した一般化階層と各レイヤの情報損失率を一般化階層エディタ270に表示する(S409)。
【0050】
(一般化階層編集処理)
図22は、一般化階層編集処理の流れの一例を示す。
上述したように、一般化階層編集画面200の一般化階層エディタ270上で「ノード名変更」、「ノード移動」、「レイヤ追加(上)」、「レイヤ追加(下)」および「レイヤ削除」等の各編集操作を行うことができる。
一般化階層編集受付装置170は、ノード移動等の編集操作を受け付けると、該当する編集操作の指定を含む編集要求を匿名化装置101に送信する(S501)。
匿名化装置101が編集要求を受信する(S502)と、一般化階層編集部113は、編集要求により指定される編集操作を一時記憶部120に保存されている一般化階層のデータ構造に対して実施し、一時記憶部120の一般化階層を更新する(S503)。
続いて、一般化階層編集部113等は、上述したステップS405〜S407と同一の処理を行って、一般化階層編集画面200の一般化階層エディタ270に表示される一般化階層の各ノードの出現頻度および各レイヤの情報損失率ILを再計算し、更に、上述したステップS408とS409と同一の処理を行って、一般化階層編集受付装置170上の一般化階層編集画面200の一般化階層エディタ270に一般化階層を表示させる。
具体的には、一般化階層編集部113は、準識別子タプル頻度データ154を準識別子ごとに集計して、すべての準識別子について属性値の出現頻度(一般化階層におけるリーフノードの出現頻度)を求める(S504、S405と同一)。そして、一般化階層編集部113は、一般化階層エディタ270に表示されている準識別子の一般化階層について、ステップS504で求めたリーフノードの出現頻度を用いてリーフノードの上層のノードの属性値の出現頻度を求める(S505、S406と同一)。
次に、損失指標算出部115が、一般化階層編集画面200の一般化階層エディタ270に表示されている一般化階層の各レイヤの情報損失率ILを求める(S506、S407と同一)。
そして、一般化階層編集部113は、一時記憶部120に保持している各ノードの出現頻度を含む一般化階層、および各レイヤの情報損失率を一般化階層編集受付装置170に送信する(S507、S408と同一)。一般化階層編集受付装置170は、受信した一般化階層と各レイヤの情報損失率を一般化階層エディタ270に表示する(S508、S409と同一)。
【0051】
(一般化階層保存処理)
図23は、一般化階層保存部116における一般化階層保存処理の流れの一例を示す。
一般化階層編集受付装置170に表示されている一般化階層編集画面200で「一般化階層−保存」メニュー240が選択されると、一般化階層編集受付装置170は、一般化階層エディタ270に表示されている準識別子の一般化階層を保存する保存要求を匿名化装置101に送信する(S601)。
匿名化装置101が保存要求を受信する(S602)と、一般化階層保存部116は、一時記憶部120に保存されている木構造の一般化階層から
図12の構造の一般化階層データ153を作成して、パーソナル情報管理装置150の一般化階層データ153に書き込む(S603)。
【0052】
(匿名化処理)
図24は、匿名化処理部117における匿名化処理の流れの一例を示す。
一般化階層編集受付装置170に表示されている一般化階層編集画面200上で「一般化階層−保存」メニュー240が選択される(S701)と、
図4の匿名化実行ダイアログ231が開く(S702)。匿名化実行ダイアログ231では、準識別子の一般化階層のレイヤを入力することができる。利用者は、損失指標評価エリア260を参照して情報損失率の評価を行い、最も適切であると判断したレイヤを匿名化実行ダイアログ231上で指定する。利用者が匿名化実行ダイアログ231上で各準識別子の一般化階層のレイヤを入力し、匿名化実行ボタンを押下する(S703)と、一般化階層編集受付装置170は各準識別子の一般化階層のレイヤを含む匿名化要求を匿名化装置101に送信する(S704)。
匿名化装置101が匿名化要求を受信する(S705)と、匿名化処理部117は、匿名化対象データに含まれる各準識別子の属性値が匿名化要求に含まれる各準識別子の一般化階層のレイヤに属するノードの属性値に置き換えられた匿名化データを作成する(S706)。
次に、匿名化処理部117は匿名化データに含まれる各準識別子の属性値の組み合わせの出現頻度を算出する(S707)。匿名化処理部117は、算出された出現頻度がk匿名化閾値未満のレコードを匿名化データから削除することにより、匿名化データに含まれる各準識別子の属性値の組み合わせの出現頻度が利用者によって指定されたk匿名化閾値を満たすように匿名化データを修正する(S708)。そして、匿名化処理部117は、匿名化後の各準識別子の属性値の組み合わせとその出現頻度とを含み、k匿名化閾値を満たす匿名化データ155をパーソナル情報管理装置150に書き込む(S709)。なお、匿名化データ155の構成は、匿名化後タプル頻度表300と同様である。
匿名化処理部117はこれらの一連の処理が完了すると匿名化処理の完了を一般化階層受付編集装置170に通知する(S710)。
なお、データファイルに含まれるパーソナル情報を匿名化するときには、まず、匿名化データ155に含まれる準識別子の属性値に対応する匿名化前の準識別子の属性値を一般化階層データ153から求める。そして、データファイルに含まれる匿名化前の準識別子の属性値を匿名化後の準識別子の属性値で置き換えることになる。
【0053】
以上説明したように、本発明によれば、匿名化対象データを基にした一般化階層のテンプレートを出発点として、一般化階層の編集を、損失情報量を確認しながらインタラクティブに行うことができる。このために、利用者は一般化階層の編集中に最適な匿名化プランが分かるようになる。このようにして編集した一般化階層を用いて、匿名化対象データの匿名化を利用者が望む匿名化プランによって実施することで、分析用途に適した一般化階層と匿名化データを、利用者が納得しやすい形で効率的に得ることができる。