(57)【特許請求の範囲】
【請求項１】
二次利用者が必要とする準識別子の値の粒度を確保した一般化階層を生成する際に使用されるパラメータであって、前記粒度を前記準識別子に与えるための処理ルールを定義する前記パラメータの指定を受け付ける指定部と、
指定された前記パラメータに従って、パーソナル情報について一般化階層を生成する生成部と、
前記パーソナル情報を記録する第１の記憶部と、
前記パーソナル情報のデータ構造を記録する第２の記憶部と、
前記パラメータを記録する第３の記憶部と、
前記生成部によって生成された一般化階層を記録する第４の記憶部と
を有し、
前記指定部は、前記一般化階層が有するノードの属性値の最大分類を決定するためのパラメータの指定を受け付け、
前記生成部は、前記最大分類が共通する同一グループ内で頻度の小さい順に隣り合う準識別子の値を一般化する階層構造を構築することにより、前記一般化階層を生成するパーソナル情報匿名化装置。
【請求項２】
請求項１に記載のパーソナル情報匿名化装置において、
前記指定部は、匿名化対象データ及びそのデータ定義を受け付ける機能を更に有する
ことを特徴とするパーソナル情報匿名化装置。
【請求項３】
請求項１または２に記載のパーソナル情報匿名化装置において、
前記指定部は、ユーザインタフェース画面を通じ、少なくとも前記パラメータの指定を選択的に受け付ける
ことを特徴とするパーソナル情報匿名化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パーソナル情報の匿名化技術に関する。
【背景技術】
【０００２】
医療サービスの質の向上を目的とした個人の診療履歴の活用や、都市開発などの目的での移動履歴の活用など、さまざまな個人に関する情報の活用が盛んになってきている。一方、これらの情報は他人に知られたくない情報を含み、情報によっては機微なものもある。このため、データの取り扱いを誤ると情報の提供元である個人のプライバシーが流出してしまう危険をはらんでいる。個人のプライバシーに配慮しながら個人に関する情報を活用するには、外部データとの突き合せを行ってもレコードから個人を特定できないようにする必要がある。このような技術の代表的なものとしてｋ匿名化がある。
【０００３】
ｋ匿名化とは、個人に関する情報のどのレコードも、自分と同じ準識別子の組み合わせを持つレコードが自分以外に少なくとも（ｋ−１）件以上現れるように属性値を曖昧化する匿名化技術である。ここで、準識別子とは、個人を特定するために使われる属性であり、例えば年齢、性別、居住都道府県などがある。ｋ匿名化の方法の一つは、匿名性が確保できるように準識別子の値を一般化階層という準識別子の値の変換ルールを用いるものである。例えば特許文献１においては、頻度の小さい値から順に一般化が行われるように一般化階層を生成することで、情報の損失を最小限に抑えるようにした技術が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２０１１／１４５４０１号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１では、一般化階層の自動生成方式とともに、情報損失の計算方法が提案されている。この発明の特長は、出現頻度の低い属性値を優先的に匿名化した一般化階層を作成できるため、損失情報量を抑制できることである。
【０００６】
ここで言う損失情報量は、特許文献１で定義されているものである。つまり、損失情報量は、レコード１件に対して、匿名化前と匿名化後の準識別子の値の出現頻度を基に、以下の式で計算される、情報工学的なエントロピーである。以下の式は、損失情報量を計算する対数関数の底が２の場合である。
0006301767.tif 000002
【０００７】
例えば、ある病院の患者データを匿名化する場合を考える。ここでは、匿名化の対象である患者データは属性に年齢を含み、その値の頻度分布は図１の通りであるとする。簡単のため患者データの準識別子は年齢のみとする。仮に年齢の値をすべて「＊」（不定値を表す）に変換したとすると、年齢の損失情報量の合計値は、およそ１３２３．６になる。これは年齢に関して一人一人の見分けが全くつかなくなった状態での損失情報量なので、全体の情報量とみなすことができる。
【０００８】
この例を基に、匿名化によって全体の情報量のうちどれだけが失われるかを、異なる一般化階層を用いる場合と比較する。まず、二次利用者にとっての匿名化データの使い易さだけを考え、５歳単位、１０歳単位などの分かりやすい基準で一般化階層を作成した場合、図２に示すような一般化階層になる。図２の一般化階層を用いて「１０−匿名化」を実施した場合、年齢は図２のレイヤ１を用いて一般化される。このため、匿名化後の年齢の値の頻度分布は図３に示すようになり、年齢の損失情報量の合計値はおよそ７７７．９になる。これは全体の情報量のおよそ５８．８%に当たる。この全体の情報量に対する損失情報量の割合を損失率と呼ぶことにする。
【０００９】
これに対し、特許文献１の方法によって自動生成した一般化階層を用いて「１０−匿名化」を実施した場合、一般化階層は図４に示すようになる。この場合、年齢は図４のレイヤ３を用いて一般化されるので、匿名化後の年齢の値の頻度分布は図５のようになり、年齢の損失情報量はおよそ１４５．８になる。このとき、損失率はおよそ１１．０%であり、図２の一般化階層を使用した場合と比べ、およそ４７．８%も小さい値になる。ここで、損失率の比較は、両方の損失率の算術的な差によっている。このように、特許文献１の方法によれば、損失情報量を抑えた匿名化を実施することができる。
【００１０】
ところが、図４を見ると、この一般化階層では５９歳と６０歳が同一のノードに一般化されている。このため、二次利用者が必要とする、年代ごと（１０歳単位）に匿名化データを分析することが難しくなるという問題が発生する。つまり、二次利用者が必要なデータの粒度と矛盾した一般化がなされてしまい、二次利用者にとって匿名化データが利用しにくいという課題がある。本明細書では、「粒度」なる用語を、二次利用者が匿名化後に必要とする情報（例えば数値や文字列）の最小単位を与える概念として使用する。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、例えば特許請求の範囲に記載の構成を採用する。本明細書は上記課題を解決する手段を複数含んでいるが、その一例を挙げるならば、「二次利用者が必要とする準識別子の値の粒度を確保した一般化階層を生成する際に使用されるパラメータであって、前記粒度を前記準識別子に与えるための処理ルールを定義する前記パラメータの指定を受け付ける指定部と、指定された前記パラメータに従って、パーソナル情報について一般化階層を生成する生成部と、前記パーソナル情報を記録する第１の記憶部と、前記パーソナル情報のデータ構造を記録する第２の記憶部と、前記パラメータを記録する第３の記憶部と、前記生成部によって生成された一般化階層を記録する第４の記憶部を有するパーソナル情報匿名化装置」である。
【発明の効果】
【００１２】
本発明によれば、二次利用者が必要とする準識別子の値の粒度を確保した一般化階層を自動的に生成できるので、二次利用目的に使い易く、損失情報量も小さい匿名化データを二次利用者に提供できるようになる。前述した以外の課題、構成及び効果は、以下の実施の形態の説明により明らかにされる。
【図面の簡単な説明】
【００１３】
【図１】匿名化対象データの頻度分布の一例を示す図表。
【図２】図１の情報から生成した一般化階層の例を示す図。
【図３】図２の一般化階層で匿名化した後の頻度の分布を示す図表。
【図４】特許文献１に記載の手法により図１の情報から生成した一般化階層の例を示す図。
【図５】図４の一般化階層で匿名化した後の頻度の分布を示す図表。
【図６】実施例の説明で使用する匿名化対象データの一例を示す図。
【図７】実施例に係るパーソナル情報匿名化装置の全体構成を示す図。
【図８】一般化階層を生成するパラメータの指定に用いる画面例を示す図。
【図９】匿名化対象データ定義データの例を示す図。
【図１０−１】数値属性の一般化階層に対して境界を指定して一般化階層を生成する場合に使用するパラメータの例を示す図。
【図１０−２】数値属性の一般化階層に対して幅を指定して一般化階層を生成する場合に使用するパラメータの例を示す図。
【図１０−３】カテゴリ値属性の一般化階層に対してグループを指定して一般化階層を生成する場合に使用するパラメータの例を示す図。
【図１１】実施例に係る手法によって生成される一般化階層の例を示す図。
【図１２】準識別子頻度情報の例を示す図。
【図１３】一般化階層ノードのデータ構造例を示す図。
【図１４】一般化階層生成処理のうち準識別子の型の判定処理までを説明するフローチャート。
【図１５−１】準識別子の型が数値属性の場合における一般化階層生成処理の内容を示すフローチャート（その１）。
【図１５−２】準識別子の型が数値属性の場合における一般化階層生成処理の内容を示すフローチャート（その２）
【図１５−３】準識別子の型が数値属性の場合における一般化階層生成処理の内容を示すフローチャート（その３）
【図１５−４】ステップＳ１００８の付表の例を示す図表。
【図１６−１】準識別子の型がカテゴリ値属性の場合における一般化階層生成処理の内容を示すフローチャート（その１）。
【図１６−２】準識別子の型がカテゴリ値属性の場合における一般化階層生成処理の内容を示すフローチャート（その２）。
【図１６−３】準識別子の型がカテゴリ値属性の場合における一般化階層生成処理の内容を示すフローチャート（その３）。
【発明を実施するための形態】
【００１４】
以下、添付の図面に基づいて、本発明の実施の形態を説明する。ただし、本発明の実施の形態は、本発明の一例に過ぎず、本発明の技術的範囲を限定するものではない。また、以下では、匿名化対象データとして医療データを想定し、図６に示すデータ構造を有しているものとして説明するが、匿名化対象データはこれに限るものではない。
【００１５】
（１）パーソナル情報匿名化装置の全体構成
図７に、本実施例に係るパーソナル情報匿名化装置の全体構成を示す。本システムは、匿名化装置１０１と記憶装置１０４で構成される。匿名化装置１０１は、コンピュータを基本構成とし、その処理機能はコンピュータプログラムの実行を通じて提供される。本実施例の場合、匿名化設定部１０２と一般化階層生成部１０３の機能が提供される。匿名化設定部１０２は、二次利用者が必要とする準識別子の値の粒度を確保した一般化階層を生成するパラメータの指定を受け付ける機能部である。一般化階層生成部１０３は、匿名化設定部１０２によって指定されたパラメータに従って一般化階層を生成する機能部である。
【００１６】
記憶装置１０４は、以下に示すデータの記憶に用いられる。匿名化対象データ１０５は、匿名化処理の対象となるパーソナル情報である。その一例が、図６に示すデータである。匿名化対象データ定義データ１０６は、匿名化対象データ１０５のデータ構造を与えるデータである。準識別子・一般化階層生成ポリシ定義データ１０７は、匿名化対象データ１０５の準識別子及び当該準識別子に対して二次利用者が必要とする準識別子の値の粒度を確保した一般化階層を生成するために使用されるパラメータである。一般化階層データ１０８は、一般化階層生成部１０３によって生成された一般化階層のデータである。
【００１７】
以下では、ｋ匿名化に関する技術のうち、特に、一般化階層の生成技術を中心に説明する。もっとも、本実施例に係るパーソナル情報匿名化装置には、本実施例に係る技術によって生成された一般化階層を用いて匿名化対象データをｋ匿名化する機能部、当該機能部から出力された匿名化データの匿名性を評価する機能部などを搭載しても良い。また、本実施例に係るパーソナル情報匿名化装置は、本実施例に係る技術によって生成された一般化階層を編集する機能部を搭載し、二次利用者が望む匿名化データを出力できるように一般化階層の微調整をできるようにしても良い。
【００１８】
（２）匿名化設定部１０２
匿名化設定部１０２の機能は、作業者が操作する匿名化装置１０１のモニタ画面に表示される匿名化設定画面２０１（図８）を通じて実現される。匿名化設定画面２０１には、匿名化対象データ１０５を指定するパスの入力欄２０２、匿名化対象データ定義データ１０６を指定するパスの入力欄２０３、準識別子・一般化階層生成ポリシ定義データ１０７を指定するパスの入力欄（選択欄）２０４が設けられる。図８の場合、入力欄２０４にはプルダウンメニューのボタンが設けられており、メニュー内のリストからパスを選択できるようになっている。もっとも、入力欄２０４についても他の入力欄と同様、作業者が任意のパスを直接入力できる方式でも良い。また、入力欄２０２及び２０３についても、プルダウンメニューから特定のパスを選択できる方式でも良い。
【００１９】
これらの入力欄２０２〜２０４について、それぞれパスが指定又は選択された後、実行ボタン２０５が押下されると（ポインタでクリックされると）、一般化階層生成部１０３による一般化階層の生成処理が実行され、一般化階層データ１０８として出力される。実行ボタン２０５を押下することによる一般化階層生成処理の詳細については、後述する。
【００２０】
（３）データの形式
以下、匿名化対象データ１０５、匿名化対象データ定義データ１０６、準識別子・一般化階層生成ポリシ定義データ１０７、一般化階層データ１０８の各データ形式と、一般化階層生成処理の詳細について説明する。
【００２１】
（３−１）匿名化対象データ
図６に、本実施例で使用する匿名化対象データ１０５の詳細を示す。本実施例における匿名化対象データ１０５は、個人の疾病に関する情報を持つ表形式のデータであり、個人ＩＤ、年齢、性別、住所、身長及び疾病からなる。匿名化対象データ１０５は、電子カルテなどの情報のうち個人情報が削除又は簡易的に抽象化されている。例えば個人ＩＤは、電子カルテに記載された個人の識別子を、当該識別子とは関係のない文字列に置き換えたものである。また、住所は、電子カルテに記載された元の住所のうち市区町村単位だけ残したものである。
【００２２】
（３−２）匿名化対象データ定義データ
図９に、匿名化対象データ定義データ１０６の例を示す。匿名化対象データ定義データ１０６は、匿名化対象データ１０５（図６）における列を１から開始する数値で示す列番号４０１、列番号４０１が示す列の名前である列名４０２、列番号４０１が示す列のデータ型である型４０３からなる表形式のデータである。型４０３は、「文字列」、「整数」または「小数」のいずれかである。
【００２３】
（３−３）準識別子・一般化階層生成ポリシ定義データ
準識別子・一般化階層生成ポリシ定義データ１０７は、一般化階層を生成するポリシの内容により、図１０−１、図１０−２、図１０−３の３通りがある。
【００２４】
図１０−１は、境界型の準識別子・一般化階層生成ポリシの例を表している。境界型の準識別子・一般化階層生成ポリシは、数値属性の準識別子に適用するものであり、属性値を境界値によって幾つかの分類に分け、各分類の中で一般化を行う一般化階層を生成するものである。境界型の準識別子・一般化階層生成ポリシは、準識別子の列名を表す準識別子ヘッダ５０１、準識別子・一般化階層生成ポリシの生成方法を表す生成タイプ５０２、匿名化対象データ１０５における当該準識別子の値を丸める単位である最小単位５０３、前述の最小単位５０３によって準識別子の値を丸める方式である丸め方式５０４、準識別子の属性値の分類を陽に決定する境界値５０５から構成される。
【００２５】
準識別子ヘッダ５０１は、準識別子とする列名を角括弧“［”と“］”によって囲んだものである。生成タイプ５０２は、文字列“Ｂｏｕｎｄａｒｙ”を指定する。最小単位５０３は正の整数または小数によって指定する。丸め方式５０４は、切り上げの場合は文字列“ｃｅｉｌ”、切捨ての場合は文字列“ｆｌｏｏｒ”、四捨五入の場合は文字列“ｒｏｕｎｄ”を指定する。境界値５０５は、分類の区切りになる値を昇順でカンマ区切りにして指定する。
【００２６】
図１０−２は、固定幅型の準識別子・一般化階層生成ポリシを表している。固定幅型の準識別子・一般化階層生成ポリシは、数値属性の準識別子に適用するものであり、属性値を原点と幅によって幾つかの分類に分け、各分類の中で一般化を行う一般化階層を生成するものである。固定幅型の準識別子・一般化階層生成ポリシは、準識別子の列名を表す準識別子ヘッダ５１１、準識別子・一般化階層生成ポリシの生成方法を表す生成タイプ５１２、匿名化対象データ１０５における当該準識別子の値を丸める単位である最小単位５１３、前述の最小単位５１３によって準識別子の値を丸める方式である丸め方式５１４、準識別子の属性値を幅に区切るときの基準値である原点５１５、準識別子の属性値を区切る単位である幅５１６からなる。
【００２７】
準識別子ヘッダ５１１、最小単位５１３及び丸め方式５１４は、境界型の準識別子・一般化階層生成ポリシにおける準識別子ヘッダ５０１、最小単位５０３及び丸め方式５０４と同様のものである。生成タイプ５１２は、文字列“Ｗｉｄｔｈ”を指定する。原点５１５は、分類の基準になる値を整数または小数で指定する。幅５１６は、分類の大きさを正の整数または小数で指定する。
【００２８】
図１０−３は、グループ型の準識別子・一般化階層生成ポリシを表している。グループ型の準識別子・一般化階層生成ポリシは文字列属性の準識別子に適用するものであり、属性値を意味などによって幾つかの分類に分け、各分類の中で一般化を行う一般化階層を生成するものである。グループ型の準識別子・一般化階層生成ポリシは、準識別子の列名を表す準識別子ヘッダ５２１、準識別子・一般化階層生成ポリシの生成方法を表す生成タイプ５２２、準識別子の属性値の分類を陽に決定するグループ５２３から構成される。
【００２９】
準識別子ヘッダ５２１は境界型の準識別子・一般化階層生成ポリシにおける準識別子ヘッダ５０１と同様のものである。生成タイプ５２２は、文字列“Ｇｒｏｕｐ”を指定する。グループ５２３はグループに含める値をカンマ区切りで指定し、さらに丸括弧（）内にはグループの名称を指定する。
【００３０】
（３−４）一般化階層データ
図１１に、本実施例に係る手法によって生成される一般化階層データ１０８の例を示す。一般化階層データ１０８は、準識別子の列名を表す準識別子６０１、準識別子６０１が示す準識別子の属性値または一般化された属性値を識別する符号である値ＩＤ６０２、値ＩＤ６０２によって識別される値である値６０３、値ＩＤ６０２が示す値の親の値を識別する符号である親値ＩＤ６０４からなる表形式のファイルである。親値ＩＤ６０４は、他のレコードの値ＩＤ６０２に対応するが、最も一般化された値に対する親値ＩＤ６０４は空欄となる。なお、図１１中において、親値ＩＤ６０４が“Ａ４”、“Ｄ４”となる値ＩＤ６０２の行は省略している。
【００３１】
（４）補助的な用語
一般化階層生成部１０３は、後述する処理手順に従って生成した一般化階層を記憶装置１０４の一般化階層データ１０８に格納する。ここでは、処理手順の説明において使用する補助的な用語について説明する。
【００３２】
（４−１）準識別子頻度情報
図１２に、準識別子頻度情報の例を示す。準識別子頻度情報は、個々の準識別子の値と、匿名化対象データ１０５における各値の出現頻度を関連付けたデータ構造であり、連想配列などのデータ構造によって表現する。準識別子頻度情報は、個々の準識別子の値を表す値７０１とその出現頻度を表す頻度７０２からなる。
【００３３】
（４−２）一般化階層ノード
図１３に、一般化階層ノードの例を示す。一般化階層ノードは、生成された一般化階層の親子関係を構築するためのデータ構造であり、準識別子の属性値または一般化された属性値を表す値８０１、準識別子のデータ型を表す型８０２、値８０１が匿名化対象データ１０５に出現する回数を表す頻度８０３、準識別子・一般化階層生成ポリシによる分類を表す最大分類ノード８０４、自分自身に一般化される属性値または一般化された属性値の一般化階層ノードのリストである子ノード８０５、自分自身を一般化した属性値の一般化階層ノードである親ノード８０６、準識別子の属性値または一般化された属性値をどの属性値または一般化された属性値と同一視して一般化するかの候補を表す一般化階層ノードであるフォロー先８０７からなる。図１３において、８０１、８０２などの符号は、一般化階層ノードのうちの１つだけに付けており、他の一般化階層ノードに対しては省略している。
【００３４】
（４−３）一般化階層ノードのリストにおける左隣および右隣
一般化階層ノードのリストにおいて第ｉ要素の左隣が存在するとは、ｉ＞０であり、第（ｉ−１）要素と最大分類ノードが同じであることを言う。このときの第（ｉ−１）要素を第ｉ要素の左隣という。一般化階層ノードリストの第ｉ要素の左隣が存在する条件が成り立たないとき、一般化階層ノードリストの第ｉ要素の左隣が存在しないという。
【００３５】
一般化階層ノードリストの第ｉ要素の右隣が存在するとは、Ｎを一般化階層ノードのリストの大きさとしたとき、ｉ＜Ｎ−１であり、第（ｉ＋１）要素と最大分類ノードが同じであることを言う。このときの第（ｉ＋１）要素を第ｉ要素の右隣という。一般化階層ノードリストの第ｉ要素の右隣が存在する条件が成り立たないとき、一般化階層ノードリストの第ｉ要素の右隣が存在しないという。
【００３６】
（４−４）生成タイプ別の最大分類ノードの定義
一般化階層ノードの最大分類ノード８０４は、生成タイプによって設定内容が異なる。以下、設定タイプごとに最大分類ノードの定義を与える。
【００３７】
生成タイプが“Ｂｏｕｎｄａｒｙ”の場合（つまり境界型の準識別子・一般化階層生成ポリシの場合）、最大分類ノードは、「当該準識別子の最小値≦境界値［ｍ］−最小単位」を満たす最小の整数ｍと「境界値［Ｎ］≦当該準識別子の最大値」を満たす最大の整数Ｎを取ったとき、以下の値を持つ１個以上の一般化階層ノードである。
・「当該準識別子の最小値」と「境界値［ｍ］−最小単位」をデリミタで結合したもの
【００３８】
生成タイプが“Ｗｉｄｔｈ”の場合（つまり固定幅型の準識別子・一般化階層生成ポリシの場合）、最大分類ノードは、「最小値≦原点＋幅×（ｍ＋１）−最小単位」を満たす最小の整数ｍと「原点＋幅×Ｎ≦最大値」を満たす最大の整数Ｎを取ったときの、以下の値を持つ１個以上の一般化階層ノードである。
・ｍからＮまでの整数ｒに対する、「原点＋幅×ｒ」と「原点＋幅×(ｒ＋１)−最小単位」をデリミタで結合したもの
【００３９】
生成タイプが“Ｇｒｏｕｐ”の場合（つまりグループ型の準識別子・一般化階層生成ポリシの場合）、最大分類ノードは、グループ５２３にある行の丸括弧の中身の文字列を値とする１個以上の一般化階層ノードである。
【００４０】
（５）一般化階層生成部の処理内容
以下、図１４〜図１６−３を用い、一般化階層生成部１０３で実行される処理内容を説明する。
【００４１】
（５−１）準識別子の型の判定までの処理
図１４に、準識別子の型の判定までの一般化階層生成処理を示す。当該処理では、一般化階層を生成する対象の準識別子の列を特定し、該当する列の準識別子・一般化階層生成ポリシ定義データ１０７に基づいて、該当する列に応じた一般化階層の生成処理を呼び出す。
【００４２】
・ステップＳ９０１
当該ステップにおいて、一般化階層生成部１０３は、匿名化設定画面２０１を通じて入力された準識別子・一般化階層生成ポリシ定義データ１０７を解析してメモリに格納する。このメモリに格納された準識別子・一般化階層生成ポリシ定義データ１０７の情報を、ポリシオブジェクトと呼ぶ。
【００４３】
・ステップＳ９０２
当該ステップにおいて、一般化階層生成部１０３は、ポリシオブジェクトと匿名化対象データ定義データ１０６を突き合せ、匿名化対象データ１０５から読み取る準識別子の列を特定する。
【００４４】
・ステップＳ９０３〜Ｓ９０８
一般化階層生成部１０３は、ステップＳ９０２で特定した準識別子の列の全てについて、ステップＳ９０４からステップＳ９０７までの一連の処理を繰り返し、当該準識別子の一般化階層の生成処理を実行する。以下、ステップＳ９０４からステップＳ９０７までの処理について説明する。
【００４５】
ステップＳ９０４
当該ステップにおいて、一般化階層生成部１０３は、ステップＳ９０２で特定した列について匿名化対象データ１０５から属性値を列挙し、各属性値についてその出現頻度を数え上げ、準識別子頻度情報としてメモリに格納する。
【００４６】
・ステップＳ９０５
当該ステップにおいて、一般化階層生成部１０３は、現在の列に対応するポリシオブジェクトを用いて、現在の列の型の情報を取得する。取得された列の型が整数または小数のとき、一般化階層生成部１０３はステップＳ９０６に進み、数値向けポリシベース一般化階層生成処理を実行する。これに対し、取得された列の型が文字列のとき、一般化階層生成部１０３は、ステップＳ９０７に進み、文字列向けポリシベース一般化階層生成処理を実行する。
【００４７】
（５−２）数値向けポリシベース一般化階層生成処理
図１５−１から図１５−３に、数値向けのポリシベース一般化階層生成処理を示す。本処理において、一般化階層生成部１０３は、処理対象の準識別子について準識別子頻度情報を算出し、隣り合う準識別子の属性値をグループ毎に頻度の小さい順に一般化することで階層構造を作成し、一般化階層に変換する。
【００４８】
・ステップＳ１００１
当該ステップにおいて、一般化階層生成部１０３は、処理対象の準識別子の準識別子頻度情報を、属性値の昇順にソートする。
・ステップＳ１００２
当該ステップにおいて、一般化階層生成部１０３は、当該準識別子のポリシオブジェクトに基づき、「生成タイプ別の最大分類ノードの定義」に従って最大分類ノードを作成する。
【００４９】
・ステップＳ１００３
当該ステップにおいて、一般化階層生成部１０３は、準識別子頻度情報の値と頻度を基に一般化階層ノードを作成する。値８０１には準識別子頻度情報の値７０１が、型８０２には当該準識別子の型４０３が、頻度８０３には準識別子頻度情報の値７０２が、最大分類ノード８０４にはステップＳ１００２で作成した当該準識別子の最大分類ノードが設定され、子ノード８０５、親ノード８０６及びフォロー先８０７はいずれも未設定である。
【００５０】
・ステップＳ１００４
当該ステップにおいて、一般化階層生成部１０３は、前段のステップＳ１００３で作成した一般化階層ノードの値を最小単位と丸め方式に従って丸めた値を持つ一般化階層ノードを作成し、丸める前の一般化階層ノードをこの一般化階層ノードの子ノードにする。さらに、このステップで作成した一般化階層ノードの頻度に、自分の子ノードの頻度の和を設定する。さらに、このステップで作成した一般化階層ノードの最大分類ノードを、自分の値が含まれる最大分類ノードに設定する。さらに、このステップで作成した一般化階層ノードを含むリストを作成し、値の昇順にソートする。この一般化階層ノードのリストを一般化階層ノードリストＬと呼ぶ。
【００５１】
・ステップ１００５〜Ｓ１０１９
一般化階層生成部１０３は、前段のステップＳ１００４で作成した一般化階層ノードリストＬの要素数が２以上の間、ステップＳ１００６からステップＳ１０１８までの一連の処理を繰り返し実行し、一般化階層ノードの親子関係を構築する。以下、ステップＳ１００６からＳ１０１８までの処理を説明する。
【００５２】
・ステップＳ１００６
当該ステップにおいて、一般化階層生成部１０３は、一般化階層ノードリストＬの大きさを取得し、それをＮとおく。
・ステップＳ１００７〜ステップＳ１００９
ステップＳ１００８において、一般化階層生成部１０３は、Ｓ１００８付表１（図１５−４）に従い、一般化階層ノードリストＬの各要素のフォロー先を設定する。Ｓ１００８付表１の内容は以下のとおりである。
【００５３】
当該要素である一般化階層ノードの右隣も左隣も存在しないとき、一般化階層生成部１０３は、フォロー先に空を設定する。当該要素である一般化階層ノードの右隣は存在するが左隣は存在しないとき、一般化階層生成部１０３は、フォロー先に右隣を設定する。当該要素である一般化階層ノードの左隣は存在するが右隣は存在しないとき、一般化階層生成部１０３は、フォロー先に左隣を設定する。当該要素である一般化階層ノードの右隣も左隣も存在するとき、一般化階層生成部１０３は、右隣と左隣であるそれぞれの一般化階層ノードの頻度を比較し、フォロー先には頻度の大きいほうを設定する。頻度が同じ場合は左隣を設定する。ただし、頻度が同じ場合のフォロー先については、「右隣に設定する」より「情報損失の小さくなるほうに設定する」など、他の設定とすることを排除するものではない。
【００５４】
・ステップＳ１０１０
当該ステップにおいて、一般化階層生成部１０３は、一般化階層ノードリストＬの要素に、フォロー先が空でないものが存在するかどうかをチェックし、存在すればステップＳ１０１１に進む。存在しなければ、ステップＳ１００５からステップＳ１０１９までのループを脱出し、ステップステップＳ１０２０に進む。
【００５５】
・ステップＳ１０１１
当該ステップにおいて、一般化階層生成部１０３は、一般化階層ノードリストＬのインデックスｉを０に設定する。
・ステップＳ１０１２〜ステップＳ１０１８
一般化階層生成部１０３は、前段のステップＳ１００７からステップＳ１００９で設定したフォロー先に基づいて一般化階層ノードの親子関係を構築するため、インデックスｉが一般化階層ノードリストＬの大きさから２を減じたもの以下である間、ステップＳ１０１３からステップＳ１０１７までの一連の処理を繰り返し実行する。以下、ステップＳ１０１３からステップＳ１０１７までの処理について説明する。
【００５６】
・ステップＳ１０１３
当該ステップにおいて、一般化階層生成部１０３は、一般化階層ノードリストＬの第ｉ要素Ｌ［ｉ］と第（ｉ＋１）要素Ｌ［ｉ＋１］について、それぞれのフォロー先がお互いになっているか、つまりＬ［ｉ＋１］とＬ［ｉ］になっているかをチェックする。お互いになっている場合、一般化階層生成部１０３は、ステップＳ１０１４に進み、お互いなっていない場合、一般化階層生成部１０３は、ステップＳ１０１７に進む。
【００５７】
・ステップＳ１０１４
当該ステップにおいて、一般化階層生成部１０３は、一般化階層ノードリストＬから第ｉ要素Ｌ［ｉ］と第（ｉ＋１）要素Ｌ［ｉ＋１］を取り出し、それぞれＸ０、Ｘ１としてから、一般化階層ノードリストＬから当該要素を削除する。
【００５８】
・ステップＳ１０１５
当該ステップにおいて、一般化階層生成部１０３は、Ｘ０、Ｘ１の内容に基づき、これらの一般化階層ノードの親ノードとなる一般化階層ノードＰを作成する。一般化階層ノードＰの設定値は以下のとおりである。値はＸ０の値の最小値からＸ１の値の最大値まで、型はＸ０の型、頻度はＸ０の頻度とＸ１の頻度の和、最大分類ノードはＸ０の最大分類ノード、子ノードはＸ０とＸ１、親ノードとフォロー先は未設定である。さらに、Ｘ０の親ノード、Ｘ１の親ノードにそれぞれＰを設定する。
【００５９】
・ステップＳ１０１６
当該ステップにおいて、一般化階層生成部１０３は、前段のステップＳ１０１５で作成した一般化階層ノードＰを、一般化階層ノードリストＬの第ｉ番目に挿入する。言い換えると、一般化階層ノードＰの挿入位置は、その子ノードである一般化階層ノードＸ０，Ｘ１が元にいた位置である。
【００６０】
・ステップＳ１０１７
当該ステップにおいて、一般化階層生成部１０３は、インデックスｉをインクリメントする。
・ステップＳ１０２０
当該ステップにおいて、一般化階層生成部１０３は、一般化階層ノードリストＬのサイズが２以上かどうかチェックし、そうであればＳ１０２１に、そうでなければステップＳ１０２３に進む。
【００６１】
・ステップＳ１０２１
当該ステップにおいて、一般化階層生成部１０３は、以下の内容で、一般化階層ノードたちのルートに相当する一般化階層ノードＲを作成する。値はＬ［０］の値の最小値からＬの最後の要素の値の最大値まで、型はＬ［０］の型、頻度はＬのすべての要素の頻度の和、最大分類ノードは空、子ノードは一般化階層ノードリストＬのすべての要素、親ノード及びフォロー先は空である。
【００６２】
・ステップＳ１０２２
当該ステップにおいて、一般化階層生成部１０３は、前段のステップＳ１０２１で作成した一般化階層ノードＲを、一般化階層ノードリストＬのすべての要素の親に設定する。
・ステップＳ１０２３
当該ステップにおいて、一般化階層生成部１０３は、一般化階層ノードリストＬのただひとつの要素であるＬ［０］を一般化階層ノードＲに設定する。
・ステップＳ１０２４
当該ステップにおいて、一般化階層生成部１０３は、前段までで作成した一般化階層ノードＲを基に、一般化階層ファイルを作成する。
【００６３】
（５−３）文字列向けポリシベース一般化階層生成処理
図１６−１から図１６−３に、文字列向けのポリシベース一般化階層生成処理を示す。本処理において、一般化階層生成部１０３は、処理対象の準識別子について準識別子頻度情報を算出し、準識別子の属性値をグループごとに頻度の小さい順に一般化することで階層構造を作成し、一般化階層に変換する。
【００６４】
・ステップＳ１１０１
当該ステップにおいて、一般化階層生成部１０３は、処理対象の準識別子の準識別子頻度情報を、値の昇順にソートする。当該ステップにおいて、一般化階層生成部１０３は、当該準識別子のポリシオブジェクトに基づき、「生成タイプ別の最大分類ノードの定義」に従って最大分類ノードを作成する。
【００６５】
・ステップＳ１１０２
当該ステップにおいて、一般化階層生成部１０３は、準識別子頻度情報の値と頻度に基づいて、一般化階層ノードを作成する。
【００６６】
・ステップＳ１１０３
当該ステップにおいて、一般化階層生成部１０３は、前段のステップＳ１１０２で作成した一般化階層ノードの最大分類ノードを、自分の値が含まれる最大分類ノードに設定する。さらに、一般化階層生成部１０３は、前段のステップＳ１１０２で作成した一般化階層ノードを最大分類ノードでグループ分けし、これらのグループをＧ［０］,Ｇ［１］,・・・,Ｇ［ｇ−１］とする。ここで、ｇは、Ｇの要素数である。
【００６７】
・ステップＳ１１０４〜ステップＳ１１１６
一般化階層生成部１０３は、ステップＳ１１０５からステップＳ１１１５までの一連の処理を実行することで、一般化階層ノードの親子関係を構築する。以下、ステップＳ１１０５からステップＳ１１１５までの処理について説明する。
【００６８】
・ステップＳ１１０５〜ステップＳ１１０８
これらのステップにおいて、一般化階層生成部１０３は、グループＧ［０］,Ｇ［１］,・・・,Ｇ［ｇ−１］に対してステップＳ１１０６からステップＳ１１０７の処理を繰り返す。
・ステップＳ１１０６
当該ステップにおいて、一般化階層生成部１０３は、Ｇの要素の大きさが２以上であるかどうかをチェックし、そうであればステップＳ１１０７に進む。Ｇの要素の大きさが２より小さいとき、一般化階層生成部１０３は、ステップＳ１１０８に進んでステップＳ１１０５からステップＳ１１０８までの繰り返しを終了する。
【００６９】
・ステップＳ１１０７
当該ステップにおいて、一般化階層生成部１０３は、Ｇの要素である一般化階層ノードたちを頻度の昇順にソートする。
・ステップＳ１１０９
当該ステップにおいて、一般化階層生成部１０３は、グループＧ［０］,Ｇ［１］,・・・,Ｇ［ｇ−１］の中に、要素数が２以上であるものが存在するかどうかをチェックし、存在すればステップＳ１１１０に進む。存在しなければ、ステップＳ１１０４からステップＳ１１１６までのループを脱出し、ステップステップＳ１１１７に進む。
【００７０】
・ステップＳ１１１０
当該ステップにおいて、一般化階層生成部１０３は、グループＧ［０］,Ｇ［１］,・・・,Ｇ［ｇ−１］についてそれぞれ最初の２つの一般化階層ノードの頻度の和を求め、前述の和が最小となるグループを求め、そのインデックスｉの集合をＩとする。前述の和が最小となるグループが複数ある場合、集合Ｉの大きさは２以上である。
【００７１】
・ステップＳ１１１１〜ステップＳ１１１５
これらのステップにおいて、一般化階層生成部１０３は、一般化階層ノードの親子関係を構築するため、前述のグループＧ［０］,Ｇ［１］,・・・,Ｇ［ｇ−１］に対するインデックスの集合Ｉについて、ステップＳ１１１２からステップＳ１１１４までの一連の処理を繰り返し実行する。以下、ステップＳ１１１２からステップＳ１１１４までの処理について説明する。
【００７２】
・ステップＳ１１１２
当該ステップにおいて、一般化階層生成部１０３は、インデックスの集合Ｉの要素ｉに対し、Ｇ［ｉ］から先頭の２要素を取り出し、順にＸ０，Ｘ１とおいてから、Ｇ［ｉ］から当該要素を削除する。
【００７３】
・ステップＳ１１１３
当該ステップにおいて、一般化階層生成部１０３は、Ｘ０、Ｘ１の内容に基づき、これらの一般化階層ノードの親ノードとなる一般化階層ノードＰを作成する。一般化階層ノードＰの設定値は以下のとおりである。値はＸ０の値とＸ１の値をデリミタで結合したもの、型は Ｘ０の型、頻度はＸ０の頻度とＸ１の頻度の和、最大分類ノードはＸ０の最大分類ノード、子ノードはＸ０とＸ１、親ノードとフォロー先は空である。さらに、Ｘ０の親ノード、Ｘ１の親ノードをともにＰに設定する。
【００７４】
・ステップＳ１１１４
当該ステップにおいて、一般化階層生成部１０３は、前段のステップＳ１１１３で作成した一般化階層ノードＰを、Ｇ［ｉ］の先頭に挿入する。
・ステップＳ１１１７
当該ステップにおいて、一般化階層生成部１０３は、グループのリストＧの要素数ｇが２以上であるかどうかをチェックし、そうであればステップＳ１１１８に進み、そうでなければステップＳ１１２０に進む。
【００７５】
・ステップＳ１１１８〜ステップＳ１１１９
当該ステップにおいて、一般化階層生成部１０３は、以下の内容で、一般化階層ノードたちのルートに相当する一般化階層ノードＲを作成する。値はＧ［０］の最大分類ノードからＧ［ｇ−１］の最大分類ノードまでのすべての値をデリミタで結合したもの、型はＧ［０］の最大分類ノードの型、頻度はＧ［０］の最大分類ノードからＧ［ｇ−１］の最大分類ノードまでのすべての要素の頻度の和、最大分類ノードは空、子ノードはＧ［０］からＧ［ｇ−１］までのそれぞれの最大分類ノード、親ノード及びフォロー先は空である。
ステップＳ１１１９では、Ｇ［０］の最大分類ノードからＧ［ｇ−１］の最大分類ノードまでのすべてについて親ノードにＲを設定する。
【００７６】
・ステップＳ１１２０
当該ステップにおいて、一般化階層生成部１０３は、グループのリストＧのただひとつの要素であるＧ［０］の最大分類ノードを一般化階層ノードＲに設定する。
・ステップＳ１１２１
当該ステップにおいて、一般化階層生成部１０３は、前段までで作成した一般化階層ノードＲを基に、一般化階層ファイルを作成する。
【００７７】
なお、前述の文字列向けポリシベース一般化階層生成処理では、準識別子の属性値をいくつかのグループに分けて一般化階層を作成しているが、このグループをさらに幾つかのサブグループに分けてもよい。また、グループやサブグループの中で特に関連の強い属性値のペアをいくつか定義し、これらのペアを優先して一般化するようにしても良い。さらに、前述のペアに対して関連の強さを定量的に設定し、関連のより強いものから一般化するようにしても良い。
【００７８】
（まとめ）
以上の通り、本実施例に係るパーソナル情報匿名化装置を用いれば、二次利用者が必要とする準識別子の値の粒度を確保した一般化階層を自動的に生成できるので、二次利用目的に使い易く、損失情報量も小さい匿名化データを二次利用者に提供することができる。
【００７９】
なお、本発明は、上述した実施例の構成に限定されるものでなく、様々な変形例を含んでいる。例えば上述した実施例は、本発明を分かりやすく説明するために、一部の実施例について詳細に説明したものであり、必ずしも説明した全ての構成を備える必要は無い。また、ある実施例の一部を他の実施例の構成に置き換えることが可能であり、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成に他の構成を追加し、又は、各実施例の一部構成を他の構成で置換し、又は各実施例の一部構成を削除することも可能である。
【００８０】
また、上述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路その他のハードウェアとして実現しても良い。また、上記の各構成、機能等は、それぞれの機能を実現するプログラムをプロセッサが解釈して実行することにより実現しても良い。すなわち、各構成等をソフトウェアにより実現しても良い。この場合、各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリやハードディスク、SSD（Solid State Drive）等の記憶装置、ICカード、SDカード、DVD等の記憶媒体に格納することができる。また、制御線や情報線は、説明上必要と考えられるものを示すものであり、製品上必要な全ての制御線や情報線を表すものでない。実際にはほとんど全ての構成が相互に接続されていると考えて良い。
【符号の説明】
【００８１】
１０１…匿名化装置、１０２…匿名化設定部、１０３…一般化階層生成部、１０４…記憶装置、１０５…匿名化対象データ、１０６…匿名化対象データ定義データ、１０７…準識別子・一般化階層生成ポリシ定義データ、１０８…一般化階層データ、２０１…匿名化設定画面、２０２…匿名化対象データ、２０３…匿名化対象データ定義、２０４…準識別子・一般化階層生成ポリシ定義、２０５…実行ボタン、４０１…列番号、４０２…列名、４０３…型、５０１…準識別子ヘッダ、５０２…生成タイプ、５０３…最小単位、５０４…丸め方式、５０５…境界値、５１１…準識別子ヘッダ、５１２…生成タイプ、５１３…最小単位、５１４…丸め方式、５１５…原点、５１６…幅、５２１…準識別子ヘッダ、５２２…生成タイプ、５２３…グループ、６０１…準識別子、６０２…値ＩＤ、６０３…値、６０４…親値ＩＤ、７０１…値、７０２…頻度、８０１…値、８０２…型、８０３…頻度、８０４…最大分類ノード、８０５…子ノード、８０６…親ノード、８０７…フォロー先。
【図１】
0006301767.tif 000003
【図２】
0006301767.tif 000004
【図３】
0006301767.tif 000005
【図４】
0006301767.tif 000006
【図５】
0006301767.tif 000007
【図６】
0006301767.tif 000008
【図７】
0006301767.tif 000009
【図８】
0006301767.tif 000010
【図９】
0006301767.tif 000011
【図１０−１】
0006301767.tif 000012
【図１０−２】
0006301767.tif 000013
【図１０−３】
0006301767.tif 000014
【図１１】
0006301767.tif 000015
【図１２】
0006301767.tif 000016
【図１３】
0006301767.tif 000017
【図１４】
0006301767.tif 000018
【図１５−１】
0006301767.tif 000019
【図１５−２】
0006301767.tif 000020
【図１５−３】
0006301767.tif 000021
【図１５−４】
0006301767.tif 000022
【図１６−１】
0006301767.tif 000023
【図１６−２】
0006301767.tif 000024
【図１６−３】
0006301767.tif 000025