(57)【特許請求の範囲】
【請求項１】
一つの属性に複数の属性値が格納される属性を含む個人情報から、各属性が一つの属性値しかもたない複数の個人情報を生成する個人情報分割手段と、
該個人情報分割手段によって生成された分割個人情報と属性値の抽象化方針を示す一般化階層木とを用いて該分割個人情報を抽象化する匿名化手段と、
該匿名化手段によって得られた匿名個人情報を、分割前の個人情報に合わせて統合する個人情報統合手段と、
を有することを特徴とする個人情報匿名化装置。
【請求項２】
請求項１に記載の個人情報匿名化装置であって、
該個人情報統合手段が、一つの属性値からなる属性に対しては該匿名化手段によって抽象化された複数の属性値のうち最も抽象度の高いものを統合結果とし、複数の属性値からなる属性に対しては該匿名化手段によって抽象化された複数の属性値を区切り文字により連結したものを統合結果とする
ことを特徴とする個人情報匿名化装置。
【請求項３】
個人情報から前記個人情報に対応した匿名情報を生成する個人情報匿名化装置における個人情報匿名化方法であって、前記個人情報匿名化装置は、
一つの属性に複数の属性値が格納される属性を含む前記個人情報から、各属性が一つの属性値しかもたない複数の分割個人情報を生成する個人情報分割ステップと、
前記個人情報分割ステップによって生成された前記分割個人情報と属性値の抽象化方針を示す一般化階層木とを用いて前記分割個人情報を抽象化する匿名化ステップと、
前記匿名化ステップによって前記分割個人情報を抽象化して得られた匿名個人情報を、前記分割個人情報を生成する前の前記個人情報に合わせて統合した前記匿名情報を生成する個人情報統合ステップと、
を有することを特徴とする個人情報匿名化方法。
【請求項４】
請求項３に記載の個人情報匿名化方法であって、
前記個人情報匿名化装置の前記個人情報統合ステップは、一つの属性値からなる属性に対しては前記匿名化ステップによって抽象化された複数の属性値のうち最も抽象度の高い属性値とし、複数の属性値からなる属性に対しては前記匿名化ステップによって抽象化された複数の属性値を区切り文字により連結した属性値とした前記匿名情報を生成する
ことを特徴とする個人情報匿名化方法。
【請求項５】
請求項３に記載の個人情報匿名化方法であって、
前記個人情報匿名化装置の前記個人情報分割ステップは、
複数の属性値を有する属性を含む前記個人情報の識別情報と、複数の属性値を有する前記属性の識別情報との対応関係を示す情報に基づいて、複数の属性値を有する前記属性を含む前記個人情報から、各属性が一つの属性値しかもたない複数の前記分割個人情報を生成することを特徴とする個人情報匿名化方法。
【請求項６】
計算機に、請求項３記載の個人情報匿名化方法を実行させるためのプログラム。
【請求項７】
計算機で読み取り可能な記憶媒体であって、請求項３記載の個人情報匿名化方法を実行するためのプログラムを格納したことを特徴とする記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一つの属性に複数の属性値を持つ属性を含んで構成される個人情報の匿名化方法に関するものである。
【背景技術】
【０００２】
個人情報匿名化の処理は、氏名や住所など個人を直接識別可能な情報を当該個人情報から取り除くこと、または住所を都道府県単位に変換する、年齢を１０歳刻みに変換する、など情報を抽象化することである。
【０００３】
しかし、上述の匿名化処理を行っても、複数の属性を組み合わせにより個人を識別できてしまう場合がある。例えば、都道府県単位の住所と１０歳刻みの年齢でも極稀な組み合わせであれば個人を特定できる。
【０００４】
このような識別可能性を除去するための技術として、しきい値ｋを設定し、個人情報データに含まれる任意の属性値の組み合わせがデータ中にｋ件以上存在することを保証した匿名データを生成するｋ−匿名化技術がある。
【０００５】
非特許文献１は、一般化階層木を用いて個人情報データ中の属性値を曖昧にすることで、開示したデータ中に出現する任意の属性値の組み合わせが少なくともｋ件出現することを保証することが記載されている。
【０００６】
非特許文献２は、非特許文献１の匿名化方式に関して、匿名化対象データに含まれる各属性に対して、その属性の属性値毎の頻度情報を取得し、頻度情報を用いて一般化階層木を自動生成し、情報損失量を情報エントロピーによって定義し、情報損失量が少なくなるように個人情報の一般化することで、一般化階層木作成の運用コストと情報損失量の少ない匿名化データ生成を実現している。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】K. LeFevre，D. J. DeWitt，and R. Ramakrishnan，“Incognito: Efficient Full−Domain K−Anonymity，”2005 ACM SIGMOD International Conf. Management of Data，pp.49‐60，2005
【非特許文献２】原田邦彦、佐藤嘉則、“一般化階層木の自動生成と情報エントロピーによる歪度評価を伴うk−匿名化手法”、情報処理学会研究報告研究報告（CSEC）、2010−CSEC−50(47)、pp.1−7、2010
【発明の概要】
【発明が解決しようとする課題】
【０００８】
個人情報は、一般的に複数の属性によって構成される。各属性は、一つの属性に一つの属性値のみ与えられるものと、複数の属性値が与えられうるものとが存在する。例えば、医療のレセプト情報の場合、患者の「氏名」や「生年月日」、「性別」などの属性が持つ属性値はそれぞれ一つである。一方で、例えば、「傷病名」の場合、一人の患者が同時に「高血圧症」と「アレルギー性鼻炎」に罹患するなど、一つの属性に対して複数の属性値を持ちうる。レセプトデータの場合、１件のレセプトに記載される傷病名は、１つの場合もあれば数十個に及ぶ場合もある。
【０００９】
以下では、一つの属性に一つの属性値のみを含む属性を単値属性、一つの属性に複数の属性値を含む属性を多値属性と呼ぶ。
【００１０】
非特許文献１、非特許文献２の匿名化手法で多値属性を含むデータを匿名化する場合、多値属性を単値属性とみなして抽象化することになる。例えば、「傷病名」に「高血圧症、アレルギー性鼻炎」が格納されている場合、「高血圧症ならびにアレルギー性鼻炎」という一つの属性値として考える。
【００１１】
非特許文献１で多値属性を含む個人情報を匿名化することを考えた場合、各属性がとりうる全ての属性値の全組合せを考慮した一般化階層木を用意する必要がある。国際的疾病分類ＩＣＤ−１０で表現される傷病名は約１４０００項目あり、１枚のレセプトデータに含まれる傷病数は一つの場合もあれば数十個に及ぶ場合もあるなどレコードによってばらつきが大きいことから、傷病数も考慮した全ての組合せに対応した一般化階層木は、膨大な数となる。
【００１２】
非特許文献２の場合、属性値とその頻度情報により一般化階層木を自動生成可能である。一方、複数の属性値のそれぞれの値について抽象化する場合には、“｛高血圧症、アレルギー性鼻炎｝または｛高脂血症、上気道炎｝”のように、各レコードに格納されていた属性値情報を列挙したものが抽象化結果となる。この結果は、複数属性値のうちの一つの属性値に焦点を当てた分析には不向きである。
【００１３】
データの有用性と安全性はトレードオフの関係にある。データを抽象化すればするほど個人の特定可能性は減少するが、分析等には活用しにくくなる。情報から個人を特定しようとする攻撃者がその属性に含まれる属性値を全て知っていることは少ないと考えられる場合や、情報活用者と情報管理について契約を結ぶ場合など、厳密にｋ−匿名化されたデータでなく必要最小限のプライバシ情報が守られると共に二次利用しやすいデータが求められることが考えられる。
【００１４】
本発明の目的は、一つの属性に複数の属性値を持つ属性を含む個人情報に対して、個人の識別可能性を排除するとともに、二次利用しやすいデータを生成できる個人情報匿名化装置および方法を提供する。
【課題を解決するための手段】
【００１５】
本発明はこのような事情を考慮してなされたもので、一つの属性に複数の属性値を持つ属性を含む個人情報の匿名化方法を提供する。
【００１６】
ｋ−匿名化方法によって生成される匿名データに対する多値属性において、ｓ個の情報が知られている場合に個人特定できないことを、ｋ−ｓ匿名性を持つと定義する。即ち、ｋ−ｓ匿名性とは、ｓ個の情報が知られており、情報の組み合せが同じレコードが少なくともｋ個存在することにより、個人を特定できないことを言う。本発明は、ｓが１の場合、つまり、多値属性に含まれる属性値のうち、一つの属性値情報が知られていても個人特定できない匿名化方式を実現する。
【００１７】
具体的には、多値属性が含まれる個人情報を単値属性からのみ構成される複数の個人情報に分割し、分割したデータに対してｋ−匿名化を実施し、最後にｋ−匿名化後のデータをもともとの個人情報にあわせて情報を統合することにより、上記を実現する。
【発明の効果】
【００１８】
本発明によれば、一つの属性に複数の属性値を持つ属性を含む個人情報に対して、当該属性に含まれる属性値のうちの一つと当該属性以外の属性値との組合せによって個人の識別可能性を排除すると共に、二次利用しやすいデータを生成することができる。
【図面の簡単な説明】
【００１９】
【図１】実施例１において、計算機の構成例を示す図である。
【図２】実施例１において、個人情報テーブルの一例を示す図である。
【図３Ａ】実施例１において、個人情報分割テーブルの一例を示す図である。
【図３Ｂ】実施例１において、多値属性フラグテーブルの一例を示す図である。
【図４】実施例１において、匿名情報分割テーブルの一例を示す図である。
【図５】実施例１において、匿名情報テーブルの一例を示す図である。
【図６】実施例１において、匿名化数の一例を示す図である。
【図７Ａ】一般化階層木の概念図である。
【図７Ｂ】一般化階層木のテーブルの構成を示す図である。
【図８】実施例１において、動作例を示す図である。
【図９】実施例１において、動作例を示す図である。
【図１０】実施例１において、動作例を示す図である。
【図１１】実施例２において、計算機の構成例を示す図である。
【図１２】実施例２において、多値属性テーブルの一例を示す図である。
【図１３】実施例２において、動作例を示す図である。
【図１４】実施例２において、動作例を示す図である。
【発明を実施するための形態】
【００２０】
以下、本発明を実施するための形態を、図面を参照して詳細に説明する。
【００２１】
なお、以下で説明する実施例は、主に電子的な形態の個人情報を保護する技術である。本実施形態における個人情報とは、個人に関する情報であって、氏名、生年月日、その他の情報などにより特定の個人を識別することができるものを示す。また、他の情報と容易に照合することができ、それにより特定の個人を識別することができるものも個人情報に含む。本実施形態において、個人情報の匿名化とは、情報主体を識別できないように当該個人情報を変換する処理をいう。また、再符号化とは個人のある属性を説明する属性値を、より曖昧な概念へと置き換えることを言う。
【００２２】
＜実施例１＞
図１を参照し、実施例１の技術を実現する装置の構成例を説明する。  
図１において、計算機１００は、例えばＰＣ(Personal Computer)やサーバ、ワークステーション等の任意の情報処理装置である。計算機１００はＣＰＵ(Central Processing Unit)１０１、メモリ１０２、ストレージ１０３、入力装置１０４、出力装置１０５、通信装置１０６等を有する。これらは全て、バスなどの内部通信線１０７により互いに接続されている。
【００２３】
ストレージ１０３は、例えばＣＤ−Ｒ(Compact Disc Recordable)やＤＶＤ−ＲＡＭ(Digital Versatile Disk Random Access Memory)、シリコンディスク等の記憶メディア及び当該記憶メディアの駆動装置、ＨＤＤ(Hard Disk Drive)等である。ストレージ１０３は、個人情報テーブル１３１、匿名データテーブル１３２、匿名化数１３３、一般化階層木テーブル１３４及びプログラム１３５等を記憶する。
【００２４】
個人情報テーブル１３１は、複数の個人に関する個人情報を格納する。本実施形態では、各個人情報は、複数の属性ごとのそれぞれの属性値からなる。匿名情報テーブル１３２は、個人情報テーブル１３１を本発明により匿名化した結果を格納する。匿名化数１３３は、データの同じ組合せを持つレコードが最低何件必要かを示すしきい値を格納する。一般化階層木テーブル１３４は、属性値をどのように抽象化するかを示す情報を格納する。プログラム１３５は、後述する機能を実現するためのものである。
【００２５】
入力装置１０４は、例えばキーボード、マウス、スキャナ、マイク等である。出力装置１０５は、ディスプレイ、プリンタ、スピーカ等である。通信装置１０６は、例えば、ＬＡＮ(Local Area Network)ボード等であり、通信ネットワーク（図示略）と接続する。
【００２６】
ＣＰＵ１０１は、メモリ１０２上にプログラム１３５をロードし、実行することにより、レコード分解部１２１と匿名化部１２２とレコード統合部１２３とを実現する。
【００２７】
レコード分解部１２１は、個人情報テーブル１３１を入力とし、全てのレコードが単値属性のみで構成されるようにし、多値属性を含むレコードが存在する場合には単値属性で構成される複数のレコードに分解し、個人情報分割テーブル１２４に格納する。
【００２８】
匿名化部１２２は、レコード分解部１２１により生成された個人情報分割テーブル１２４及び匿名化数１３３を入力とし、個人情報分割テーブル１２４上に存在する全てのレコードに対して、後述するレコード識別番号以外の全ての属性値からなるタプル（tuple、組）が同一となるレコードの数が、匿名化数１３３に格納された値以上になるように情報をあいまい化し、結果を匿名情報分割テーブル１２６に格納する。
【００２９】
レコード統合部１２３は、匿名情報分割テーブル１２６を入力とし、個人情報テーブル１３１において同一レコードであった複数のレコードを統合し、統合した結果を匿名情報テーブル１３２に格納する。このとき、多値属性は、各属性値をカンマにより連結した一つの値として格納し、一つの属性に一つの属性値を含んでいた属性に関しては、属性値のうちで最も抽象度の高い属性値を格納する。
【００３０】
図１には、各テーブルなどのデータと各処理部との間のデータの入出力及びデータの参照の関係を矢印で示した。実線の矢印は、処理部に対するデータの移動を示し、破線の矢印は、処理部がデータを参照することを示す。各処理部とデータの関係の詳細は、図８を用いて後述する。図中の矢印に付した符号は、図８の各処理ステップとの対応を示す。
【００３１】
次に上述したテーブル等の詳細な例を説明する。
【００３２】
まず、図２を参照し、複数の属性からなる個人情報を格納した個人情報テーブル１３１の一例を説明する。  
図２において、個人情報テーブル１３１は複数のレコードを有する。個人情報テーブル１３１の左側に示したＮｏは、各レコード、即ち、各個人情報を識別する番号である。各レコードは属性２０１、属性２０２、属性２０３の属性値のタプルとして表される。
【００３３】
図２で表される表の一行目は属性の名前を指す。属性２０１、属性２０２、及び属性２０３はそれぞれ個人の年齢、性別、及び傷病名を表す。一つの属性に複数の属性値を含む場合は、カンマで属性値を区切った上で列挙される。
【００３４】
なお、個人情報の項目は図２に示されるものに限られるわけではなく、任意でよい。また、区切り文字はカンマに限定されるものではなく、各属性値を識別できる任意の文字でよい。さらに、個人の総数（レコード総数）も属性数も任意で良い。
【００３５】
図３Ａを参照して、多値属性に含まれる属性値ごとに個人情報を分割した個人情報分割テーブル１２４の一例を説明する。
【００３６】
個人情報分割テーブル１２４は、個人情報テーブル１３１の各属性２０１、２０２、２０３と、個人情報テーブル１３１のレコードを識別するためのレコード識別Ｎｏを表す属性３０１とからなる。
【００３７】
個人情報分割テーブル１２４には、単値属性のみで構成されるレコードが格納される。個人情報テーブル１３１のレコードにおいて、多値属性が含まれていたものについては、当該属性の属性値ひとつと、当該属性以外の属性の属性値との組合せのレコードに分割したレコードを格納する。例えば、個人情報テーブル１３１のレコード２１１は、個人情報分割テーブル１２６の３つのレコード３１１、３１２、及び３１３に分割して格納される。
【００３８】
図３Ｂを参照して、属性が単値属性か多値属性かを識別して管理するための多値属性フラグテーブル１２５の一例を説明する。
【００３９】
多値属性フラグテーブル１２５には、個人情報分割テーブル１２４の各セルが、個人情報テーブル１３１では元々多値属性であったかどうかを格納する。対応するレコードの対応する属性が多値属性であった場合には「１」を格納し、単値属性であった場合には「０」を格納する。例えば、図２のレコード２１１の場合、年齢と性別は属性値が一つのみ格納されているため「０」が格納され、傷病名は複数（３つ）の傷病が格納されているため「１」が格納される。図３Ａ及び３ＢのＮｏ（３０１）に格納されている番号は、図２の個人情報テーブル１３１の左側に示したＮｏの番号（個人情報の識別番号）と対応している。
【００４０】
図４を参照して、図３Ａに示した個人情報分割テーブル１２４に含まれる単値属性の属性値を匿名化した匿名情報分割テーブル１２６の一例を説明する。
【００４１】
匿名情報分割テーブル１２６は、個人情報分割テーブル１２４と同一の属性で表される。各属性値は個人情報分割テーブル１２４に格納されていた属性値、または当該属性値を抽象化した値が格納される。また、匿名情報分割テーブル１２６中の全ての属性に対する属性値タプルが匿名化数１３３で与えられる件数以上匿名情報テーブルの中に存在している必要がある。
【００４２】
レコード４１１，４１２及び４１３は同一人物に対する情報であるが、「年齢」の属性値が異なっている。これは、病名に該当する人数の多少によって匿名が異なるためである。即ち、該当する人数が少ない場合は、抽象度のレベルが高い「４０代」によって匿名化されており、該当する人数が多い場合は、抽象度のレベルが低い「４０代前半」（「４０代後半」も同様）によって匿名化されている。「性別」の一部が「＊」（男又は女を匿名化したもの）となっているのも同様である。また、「傷病名」の「不眠症」は匿名化されて「神経系疾患」となっている。
【００４３】
図５を参照して、図２に示した個人情報テーブル１３１に含まれる属性の一部の属性値を匿名化した匿名情報テーブル１３２の一例を説明する。即ち、図５は、図４の各レコードの情報を、個人ごとの情報として統合した結果である。従って、図５のテーブル１３２の左側のＮｏは、図２のテーブル１３１の左側のＮｏと同一である。
【００４４】
匿名情報テーブル１３２は個人情報テーブル１３１と同一の属性で表される。匿名情報テーブル１３２は、匿名情報分割テーブル１２６の同一識別Ｎｏを持つレコードが統合された情報が格納される。例えば、図４に示す匿名情報分割テーブル１２６のレコード４１１、４１２、及び４１３が、匿名情報テーブル１３３のレコード５１１に統合されて格納される。属性の一部が「＊」となっている部分は、完全に匿名化（抽象化）されていることを示す。
【００４５】
図６を参照して、匿名化数１３３について説明する。  
匿名化数６０１は、匿名情報テーブル１３２の各レコードに対して、同一タプルを持つレコードが少なくとも何件存在するように匿名化するかを示す。匿名化数の値は任意でよく、値が大きくなるほど匿名性は高くなる。この数値は求められる匿名性の強さに応じて外部から与えることができる。
【００４６】
図７Ａ及び７Ｂを参照して、一般化階層木テーブル１３４について説明する。  
一般化階層木テーブル１３４は、匿名化部１２２が個人情報分割テーブル１２４の情報を抽象化する際に利用するものであり、属性値をどのように階層的に（段階的に）抽象化するかを示す情報を格納する。図７Ａは属性２０１「年齢」に対する一般化階層木１３４の概念図、図７Ｂは一般化階層木テーブル１３４の一例を示す。
【００４７】
図７Ａにおいて、図２の属性２０１「年齢」に対する一般化階層木は複数の節点と枝から成る木構造として表される。枝は節点間の親子関係を意味する。枝は矢線を用いて示され、矢線の根側の節点が親であり、矢側の節点が子である。親を持たない節点は根、子を持たない節点は葉、親と子を持つ節点を内部節点と呼ぶ。属性値となりうる値が葉となる。例えば、図２の属性２０１「年齢」では「４０」及び「４１」といった値が葉となる。葉以外の節点は、その子を全て表すことができる抽象的な概念が割り当てられる。例えば、葉７０１１「４０」、７０１２「４１」、７０１３「４２」、７０１４「４３」、及び７０１５「４４」は、節点７０１「４０代前半（４０−４４）」へと抽象化される。
【００４８】
図７では、「年齢」のように、属性値の範囲と匿名とが対応付けられている場合には、各節点を「匿名（匿名に属する値の範囲、例えば年齢の範囲）」で示す。
【００４９】
図７Ｂにおいて、一般化階層木テーブル１３４の一例を示す。  
一般化階層木テーブル１３４は属性７１１、及び属性７１２を持つ。一般化階層木テーブル１３４のレコードは一般化階層木の１つの節点を示す。属性７１１は当該節点のラベル、属性７１２は当該節点の親節点のラベルを意味する。例えば、レコード７１３は節点７０２に対応する。根は親を持たないため、属性７１２にはＮＵＬＬを格納する。
【００５０】
次に、図１に矢印で示した、各テーブルなどのデータと各処理部との間のデータの入出力及びデータの参照の関係を参照しながら、図８を用いて、計算機１００による本発明における処理の概要について説明する。図１に示した、処理部に対するデータの移動を示す実線の矢印に付した符号は、図８に示した各処理ステップの符号に対応する。図１に示した破線の矢印は、処理部がデータを参照することを示す。
【００５１】
まず、レコード分割部１２１が個人情報テーブル１３１を参照し、多値属性を持つレコードを単値属性のみから構成されるレコードに分割し、その結果を個人情報分割テーブル１２４に格納する（Ｓ８０１）。
【００５２】
次に、匿名化部１２２が個人情報分割テーブル１２４を参照し、全てのレコードに対して同じタプルを持つレコードが匿名化数１３３に示された値以上存在するようにデータを抽象化し、その結果を匿名情報分割テーブル１２６に格納する（Ｓ８０２）。ステップＳ８０２では、例えば、非特許文献１や、非特許文献２などの、任意の匿名化方法で属性値の匿名化を行ってよい。
【００５３】
最後に、レコード統合部１２３が匿名情報分割テーブル１２６を参照し、同一のレコード識別番号を持つレコードの属性情報を統合し、統合した結果を匿名情報テーブル１３２に格納する（Ｓ８０３）。このとき、多値属性は各属性値をカンマにより連結した一つの値として格納し、単値属性に関しては、属性値のうちで最も抽象度の高い属性値を格納する。
【００５４】
次に、図９を参照して、レコード分割部１２１が上記ステップＳ８０１で個人情報テーブル１３１から個人情報分割テーブル１２４を生成する詳細な動作例を説明する。
【００５５】
ここで、いくつかの表記を定義する。ｍは個人情報テーブル１３１の個人情報レコード数（行数）である。すなわち、属性情報の名称を示す個人情報分割テーブル１２４の１行目はレコード数にはカウントしない。個人情報部分のレコードに対して、上から順に１行目、２行目、・・・、ｍ行目と呼ぶ。例えば、レコード２１１は３行目のレコードである。ｎは個人情報テーブル１３１の属性数（列数）である。個人情報テーブル１３１の各列（属性）を左から順番に１番目の列、２番目の列、・・・ｎ番目の列（属性）と呼ぶ。
【００５６】
まず、ステップＳ９０１で、レコード数（個人情報の数）をカウントするパラメタｉを１に初期化する。
【００５７】
ステップＳ９０２では、ｉがｍ（個人情報の総数）より小さいかどうかを判定する。ｉがｍよりも小さい場合にはステップＳ９０３へ進み、ｉがｍ以上（ｉ＞ｍ）の場合には処理を終了する。
【００５８】
ステップＳ９０３では、個人情報テーブル１３１のｉ行目のレコードを読み込む。当該レコードにレコード識別番号としてｉを割り当てる。
【００５９】
ステップＳ９０４では、属性の数をカウントするパラメタｊを１に初期化する。
【００６０】
ステップＳ９０５では、ｊがｎ（属性の総数）より小さいかどうかを判定し、ｊがｎよりも小さい場合にはステップＳ９０６へ、ｊがｎ以上（ｉ＞ｎ）であればステップＳ９０８へ進む。
【００６１】
ステップＳ９０６では、ｊ番目の属性に格納された値を要素に分割する。具体的には、文字列を区切り文字カンマによって分割する。ｊ番目の属性が単値属性だった場合は、分割は行われず、多値属性だった場合は、属性値の数だけ分割される。加えて、ステップＳ９０６では、多値属性フラグテーブル１２５にｊ番目の属性が多値属性かどうかを示す情報を格納する。具体的には、単値属性だった場合には「０」を、多値属性だった場合には「１」を格納する。例えば、レコード２１１の属性２０３「傷病名」の場合、「糖尿病、高血圧症、高脂血症」が「糖尿病」、「高血圧症」及び「高脂血症」の３つの要素に分割される。分割した要素はメモリ１０２に格納される。
【００６２】
ステップＳ９０７では、ｊにｊ＋１を代入し、ステップＳ９０５に戻る。
【００６３】
ステップＳ９０８では、属性ごとに分割された要素を用いて、属性ごとに要素を一つずつ選択し、単値属性のみから構成される分割レコードを生成する。生成したレコードは個人情報分割テーブルに格納する。ステップＳ９０８の処理では、取りうる全組合せのレコードを生成する。すなわち、各属性の要素数の積だけ分割レコードを生成する。例えば、図２のレコード２１１「Ｎｏ＝８、年齢＝４９、性別＝男、傷病名＝｛糖尿病、高血圧症、高脂血症｝」の場合、年齢と性別は要素が１つ、傷病名は要素が３つなので、レコード３１１「Ｎｏ＝８、年齢＝４９、性別＝男、傷病名＝糖尿病」と、レコード３１２「Ｎｏ＝８、年齢＝４９、性別＝男、傷病名＝高血圧症」と、レコード３１３「Ｎｏ＝８、年齢＝４９、性別＝男、傷病名＝高脂血症」の３つ（１×１×３）のレコードを生成する。
【００６４】
ステップＳ９０９では、ｉにｉ＋１を代入して、ステップＳ９０３に戻る。
【００６５】
以上の処理によって、個人情報テーブル１３１から、レコード識別Ｎｏを保持し、単値属性からのみ構成される個人情報分割テーブル１２４が生成される。
【００６６】
次に、図１０を参照して、レコード統合部１２３が上記ステップＳ８０３でレコードを統合する詳細な動作例を説明する。
【００６７】
まず、レコード数（分割された個人情報の数）をカウントするパラメタｉを１に初期化する（Ｓ１００１）。
【００６８】
ステップＳ１００２ではｉがＭ（分割された個人情報の総数）より小さいかどうかを判定し、ｉがＭよりも小さい場合にはステップＳ１００３へ進み、ｉがＭ以上（ｊ＞Ｍ）の場合には処理を終了する。ここで、Ｍは匿名情報分割テーブル１２６のレコード数（分割された個人情報の総数）であり、多値属性の存在を考慮すると、Ｍ≧ｍ（ｍ：個人情報テーブル１３１のレコード総数）である。
【００６９】
ステップＳ１００３では、レコード識別Ｎｏにｉが格納されているレコードを匿名情報分割データテーブル１２６から抽出する。
【００７０】
ステップＳ１００４〜Ｓ１００９では、ステップＳ１００３で抽出したレコード（以下、統合対象レコードと呼ぶ）の各属性に対してデータの統合処理を行う。
【００７１】
まず、属性の数をカウントするパラメタｊを１に初期化する（Ｓ１００４）。
【００７２】
次に、ｊがｎより小さいかどうかを判定し（Ｓ１００５）、ｊがｎよりも小さい場合にはステップＳ１００６へ、ｊがｎ以上（ｊ＞ｎ）の場合はステップＳ１０１０へ進む。ここで、ｎは個人情報テーブル１３１の属性の総数である。
【００７３】
ステップＳ１００６では、多値属性フラグテーブル１２５を参照し、当該属性が多値属性か単値属性かを判定する。統合対象レコードのｊ番目の属性の多値属性フラグが“１”の場合にはステップＳ１００７に進み、多値属性フラグが“０”の場合はステップＳ１００８に進む。
【００７４】
ステップＳ１００７では、統合対象レコードのｊ番目の属性の属性値をカンマで連結したデータを統合結果とする。例えば、図４のレコード識別Ｎｏが“３”のレコード４１１、４１２、及び４１３の傷病名を統合する場合、統合結果は「糖尿病、高血圧症、高脂血症」となる。
【００７５】
ステップＳ１００８では、図７Ｂの一般化階層テーブル１３４を参照し、統合対象レコードのｊ番目の属性の属性値の中でもっとも抽象度の高い属性を統合結果とする。例えば、レコード４１１、４１２、及び４１３の年齢情報を統合する場合、図７Ａより、「４０代」、「４０代前半」及び「４０代後半」の中で最も抽象度の高い「４０代」というデータを統合結果とする。
【００７６】
ステップＳ１００９では、ｊにｊ＋１を代入し、ステップＳ１００５の判定処理に戻る。  
ステップＳ１０１０では、ｉにｉ＋１を代入し、ステップＳ１００２の判定処理に戻る。  
ステップＳ１０１１では、匿名情報テーブル１３２に匿名情報分割テーブル１２６の統合結果を格納する。
【００７７】
以上の処理によって、匿名情報分割テーブル１２６の統合結果が個人情報テーブル１３１のレコードと対応して統合され、匿名情報テーブル１３２に格納される。
【００７８】
実施例１で構成した計算機の特徴は、多値属性が含まれるレコードを単値属性のみで構成されるレコードに分解し、分解したレコードに対する匿名化結果を元のデータに合わせて統合することである。本処理によって、単値属性の属性値と多値属性の属性値の中の一つとの組合せからは個人を特定できないデータを、任意の一般化方法を用いて生成できるという効果がある。
【００７９】
＜実施例２＞
次に、実施例２について説明する。  
実施例２は、メモリ使用量を軽減するものである。以下、実施例２を説明する場合、実施例１と重複する構成に対しては同じ符号を付与して説明を省略する。また、実施例２の動作のほとんどは実施例１と同様である。実施例１と同様の動作に対しては、同じ符号を付与して説明を省略する。
【００８０】
まず、図１１を参照して、実施例２の計算機１００の構成例について説明する。  
図１１において、計算機１００のストレージ１０３は、多値情報フラグテーブル１２５の代わりに多値情報テーブル１１２５を、プログラム１３５の代わりにプログラム１１０２を有する。プログラム１１３５がメモリ上にロードされ、ＣＰＵ１０１がレコード分解部１１２１と匿名化部１２２とレコード統合部１１２３とを実現する。
【００８１】
次に、図１２を参照して、多値属性テーブル１１２５の詳細を説明する。  
多値情報テーブル１１２５はレコードＮｏ（１２０１、ｉ＝１〜ｍ）と多値属性Ｎｏ（１２０２、ｊ＝１〜ｎ）から構成される。１つのレコードに複数の多値属性が含まれる場合は、多値属性Ｎｏ（１２０２）に複数の属性に対応した列の番号が格納される。ここで、多値属性Ｎｏは個人情報テーブル１２４における列番号を表し、多値属性Ｎｏに「３」が記録されていた場合は、属性２０３の「傷病名」が多値属性であることを表す。実施例１の図３Ｂの多値属性フラグテーブル１２５が個人情報テーブル１２４のレコード及び属性と１対１対応し、多値属性かどうかを格納していたのに対し、多値属性テーブル１１２５は多値属性であったセルの情報のみを格納する。
【００８２】
例えば、図２のレコード２１２の場合、全ての属性が単値属性であるため多値属性テーブル１１２５にはレコード２１２に関する情報は格納されず、レコード２１１の場合には傷病名が多値属性であるため多値属性テーブル１１２５にレコード１２１１のようにレコード２１１のレコード識別Ｎｏ「３」と多値属性列Ｎｏ「３」が格納される。
【００８３】
図１３を参照して、レコード分割部１１２１の動作例の詳細を説明する。  
レコード分割部１１２１では実施例１のステップＳ９０６の代わりにステップＳ１３０６の処理が実行される。また、ステップＳ１３０６において、ｊ番目に格納された値の要素分割処理は実施例１と同様であり、多値属性情報の格納のしかたが異なる。ステップＳ１３０６では、多値属性情報のみを多値属性テーブル１１２５に格納する。具体的には、多値属性であったセルのレコードＮｏと属性名（個人情報テーブル１３１の列番号）を多値属性テーブル１１２５に格納する。例えば、レコード２１２の場合は全ての属性が単値属性であるため多値属性テーブル１１２５にはレコード２１２に関する情報は格納されず、レコード２１１は傷病名が多値属性であるためレコード１２１１のようにレコード２１１のレコード識別Ｎｏ「３」と多値属性情報「３」が格納される。
【００８４】
図１４を参照して、レコード統合部１１２３の動作例の詳細を説明する。  
レコード統合部１１２３では実施例１のステップＳ１００６の代わりにＳ１４０６が実行される。ステップＳ１４０６では、多値属性テーブル１１２５を参照し、当該属性が多値属性か単値属性かを判定する。具体的にはレコード識別Ｎｏと多値属性列Ｎｏが一致する情報が多値属性テーブル１１２５に格納されているかどうかを判定する。
【００８５】
実施例２で構成した計算機の特徴は、多値属性かどうかの情報を個人情報テーブル１２４と１対１対応せず、多値属性の情報のみを格納することで、実施例１と同様の匿名化を実現することである。多値属性の情報のみを格納することで、メモリに格納する多値属性情報を低減することができるという効果がある。
【符号の説明】
【００８６】
１００：計算機、１０１：ＣＰＵ、１０２：メモリ、１２１：レコード分割部、１２２：匿名化部、１２３：レコード統合部、１０３：ストレージ、１３１：個人情報テーブル、１３２：匿名情報テーブル、１３３：匿名化数、１３４：一般化階層木テーブル、１３５：プログラム、１０４：入力装置、１０５：出力装置、１０６：通信装置、１０７：内部通信線
【図１】
0005684165.tif 000002
【図２】
0005684165.tif 000003
【図３Ａ】
0005684165.tif 000004
【図３Ｂ】
0005684165.tif 000005
【図４】
0005684165.tif 000006
【図５】
0005684165.tif 000007
【図６】
0005684165.tif 000008
【図７Ａ】
0005684165.tif 000009
【図７Ｂ】
0005684165.tif 000010
【図８】
0005684165.tif 000011
【図９】
0005684165.tif 000012
【図１０】
0005684165.tif 000013
【図１１】
0005684165.tif 000014
【図１２】
0005684165.tif 000015
【図１３】
0005684165.tif 000016
【図１４】
0005684165.tif 000017