"属性毎の属性値からなる個人情報を1件以上格納する個人情報格納手段と、属性を1つ選択し、該選択した属性に出現する属性値毎に該属性値を持つ該入力個人情報の件数をカウントする頻度取得手段を用いて、該属性の各々に対して該入力個人情報に出現する各属性値の上位概念をその曖昧度によって木構造で表現する一般化階層木を自動構成する一般化階層木自動生成手段と、該一般化階層木自動生成手段を用いて該属性の各々に対して生成された一般化階層木を用いて該入力個人情報を再符号化する手段と、を有することを特徴とする個人情報匿名化装置。請求項1に記載の個人情報匿名化装置であって、該再符号化手段が、1件の個人情報の1つの属性値を該自動生成された一般化階層木を用いて曖昧化する際に損失する情報量を計量する損失情報量計量手段を備えることを特徴とする個人情報匿名化装置。請求項2に記載の個人情報匿名化装置であって、該損失情報量計量手段が、該自動生成された一般化階層木の各節点の出現頻度を、葉であれば該葉に示される属性値が出現する個人情報の件数としてカウントし、内部節点であれば外節点の子孫でありかつ葉である節点の頻度の総和としてカウントする節点頻度取得手段を備え、1件の該入力個人情報の各属性値を該属性値に対応する節点aをその祖先である節点bに曖昧化するときの損失情報量を-logaの頻度/bの頻度で計量することを特徴とする個人情報匿名化装置。請求項3に記載の個人情報匿名化装置であって、該再符号化手段を用いて生成された各匿名情報の属性値それぞれに対し、該節点頻度取得手段を用いて取得した節点頻度を利用して該属性値が該一般化階層木の節点aであるとき該属性値の子孫である1つ以上の葉に対して、該属性値を該葉cの属性値にcの頻度/aの頻度の確率で置き換えたものを出力する手段を備えることを特徴とする個人情報匿名化装置。請求項1または2に記載の個人情報匿名化装置であって、該一般化階層木の各節点の出現頻度を、葉であれば該葉に示される属性値が出現する該入力個人情報の件数としてカウントし、内部節点であれば外節点の子孫でかつ葉である節点の頻度の総和としてカウントする節点頻度取得手段を用いて、該再符号化手段を用いて生成された各匿名情報の属性値それぞれに対し、該属性値が該一般化階層木の節点aであるとき該属性値の子孫である1つ以上の葉に対して、該属性値を該葉cの属性値にcの頻度/aの頻度の確率で置き換えたものを出力する手段を備えることを特徴とする個人情報匿名化装置。請求項1から5のいずれか一に記載の個人情報匿名化装置であって、該一般化階層木自動生成手段が、該頻度取得手段によって取得した頻度を用いて、Huffman符号木を生成することで達成することを特徴とする個人情報匿名化装置。請求項1から5のいずれか一に記載の個人情報匿名化装置であって、該一般化階層木自動生成手段が、該頻度取得手段によって取得した頻度を用いてShannon-Fano符号木を生成することで達成することを特徴とする個人情報匿名化装置請求項1から5のいずれか一に記載の個人情報匿名化装置であって、該一般化階層木自動生成手段が、該頻度取得手段によって取得した頻度と該属性の属性値に予め定義される順序情報を用いて、Hu-Tucker符号木を生成することで達成することを特徴とする個人情報匿名化装置。請求項1から5のいずれか一に記載の個人情報匿名化装置であって、該自動構成した一般化階層木を記憶する手段を有することを特徴とする個人情報匿名化装置。属性毎の属性値からなる1件以上の個人情報と、該属性の各々に対して該1件以上の個人情報に出現する各属性値の上位概念をその曖昧度によって木構造で表現する一般化階層木を入力とし、1件の個人情報の1つの属性値を該自動生成された一般化階層木を用いて曖昧化する際に損失する情報量を計量する損失情報量計量手段と、該損失情報量計量手段と該一般化階層木を用いて、該入力個人情報の各属性値を該属性値の示す節点の祖先である節点に曖昧化することで該入力個人情報を再符号化する手段と、を有することを特徴とする個人情報匿名化装置。属性の各々に対して属性値の上位概念をその曖昧度によって木構造で表現する一般化階層木を記憶する一般化階層木と、該一般化階層木を用いて1件以上の個人情報が匿名化された匿名情報と、各属性の属性値毎に該属性値が出現する該個人情報の件数と、を入力とし、該一般化階層木の各節点の出現頻度を、葉であれば該葉に示される属性値が出現する該元の個人情報の件数としてカウントし、内部節点であれば外節点の子孫でかつ葉である節点の頻度の総和としてカウントする節点頻度取得手段を用いて、該入力の各匿名情報の該各属性の属性値それぞれに対し、該属性値が該一般化階層木の節点aであるとき該属性値の子孫である1つ以上の葉に対して、該属性値を該葉cの属性値にcの頻度/aの頻度の確率で置き換えたものを出力することを特徴とする個人情報匿名化装置。請求項1から5および請求項9に記載の個人情報匿名化装置であって、属性の一般化階層木の節点の一部を定義したユーザ定義階層木を格納するユーザ定義階層木格納手段と、該ユーザ定義階層木と該頻度取得手段によって取得した頻度とを用いて一般化階層木を自動生成するユーザ定義階層木に基づく一般化階層木自動生成手段を備えることを特徴とする個人情報匿名化装置請求項12に記載の個人情報匿名化装置であって、該ユーザ定義階層木に基づく一般化階層木自動生成手段が、該ユーザ定義階層木と該頻度取得手段によって取得した頻度を用いて、Huffman符号木を生成することで達成することを特徴とする個人情報匿名化装置。請求項12に記載の個人情報匿名化装置であって、該ユーザ定義階層木に基づく一般化階層木自動生成手段が、該ユーザ定義階層木と該頻度取得手段によって取得した頻度を用いてShannon-Fano符号木を生成することで達成することを特徴とする個人情報匿名化装置請求項12に記載の個人情報匿名化装置であって、該ユーザ定義階層木に基づく一般化階層木自動生成手段が、該ユーザ定義階層木と該頻度取得手段によって取得した頻度と該属性の属性値に予め定義される順序情報を用いて、Hu-Tucker符号木を生成することで達成することを特徴とする個人情報匿名化装置。請求項12に記載の個人情報匿名化装置であって、該ユーザ定義階層木に基づく一般化階層木生成手段は、該ユーザ定義階層木を構成する節点のうち祖先と子孫の関係にない2つ以上の節点において、各節点の子孫が重複しないことをチェックすることを特徴とする個人情報匿名化装置。請求項12に記載の個人情報匿名化装置であって、該ユーザ定義階層木の節点が、該節点の全ての子のラベルを列挙したラベルを持つことを特徴とする個人情報匿名化装置。請求項12に記載の個人情報匿名化装置であって、該ユーザ定義階層木が、子となりうる節点が自明でない抽象的な名称のラベルを持つ節点と、該抽象的な名称のラベルを持つ節点を親とする節点から構成されることを特徴とする個人情報匿名化装置。請求項12に記載の個人情報匿名化装置であって、該ユーザ定義階層木の節点が、該節点の子孫となる属性値の範囲を表すラベルを持ち、該範囲は該節点と祖先または子孫の関係にない節点の範囲と重複しないことを特徴とする個人情報匿名化装置。非特許文献1の技術は、曖昧化の度合いを定義する一般化階層木を別途、属性毎に定義する必要がある。また、しきい値以上を達成する候補を全て出力するので、使用する匿名データを選択する必要があり、匿名データ間の有用性の優劣を決定する手段を自動化できない。本発明はこのような事情を考慮してなされたもので、個人情報匿名化の運用コストを低減しつつ、適切に個人情報を保護することを提供する。一例として開示されるのは、属性毎の属性値からなる個人情報を1件以上入力する個人情報入力手段と、属性を1つ選択し、該選択した属性に出現する属性値毎に該属性値を持つ該入力個人情報の件数をカウントする頻度取得手段を用いて、該属性の各々に対して該入力個人情報に出現する各属性値の上位概念をその曖昧度によって木構造で表現する一般化階層木を自動構成する一般化階層木自動生成手段と、該一般化階層木自動生成手段を用いて該属性の各々に対して生成された一般化階層木を用いて該入力個人情報を再符号化する手段を有する個人情報匿名化装置である。これにより、上述の課題を解決できる。自動化による運用コストの低減と適切な個人情報の保護を両立することが可能となる。以下、本発明を実施するための形態を、図面を参照して詳細に説明する。なお、以下で説明する3つの実施例は、主に電子的な形態の個人情報を保護する技術である。本実施形態における個人情報とは、個人に関する情報であって、氏名、生年月日、その他の情報などにより特定の個人を識別することができるものを示す。また、他の情報と容易に照合することができ、それにより特定の個人を識別することができるものも個人情報に含む。本実施形態において、個人情報の匿名化とは、情報主体を識別できないように当該個人情報を変換する処理をいう。また、再符号化とは個人のある属性を説明する属性値を、より曖昧な概念へと置き換えることを言う。<実施例1>図1を参照し、実施例1の技術を実現する装置の構成例を説明する。図1は計算機上に装置を構成した例である。図1において、計算機100は、例えばPCPersonalComputerやサーバ、ワークステーション等の任意の情報処理装置である。計算機100はCPUCentralProcessingUnit101、メモリ102、ストレージ103、入力装置104、出力装置105、通信装置106等を有する。これらは全て、バスなどの内部通信線107により互いに接続されている。ストレージ103は、例えばCD-RCompactDiscRecordableやDVD-RAMDigitalVersatileDiskRandomAccessMemory、シリコンディスク等の記憶メディア及び当該記憶メディアの駆動装置、HDDHardDiskDrive等である。ストレージ103は、個人情報テーブル131、匿名情報テーブル132、最小同値件数情報133、属性種別情報134、プログラム151等を記憶する。個人情報テーブル131は、複数の個人に関する個人情報を格納する。本実施形態では、各個人情報は、複数の項目ごとの項目値からなる。匿名情報テーブル132は、個人情報テーブル131を本発明により匿名化した結果を格納する。最小同値件数情報133は、しきい値を格納する。属性種別情報134は、個人情報テーブル131が有する各属性の情報種別を格納する。プログラム151は、後述する機能を実現するためのものである。入力装置104は例えばキーボード、マウス、スキャナ、マイク等である。出力装置105は、ディスプレイ、プリンタ、スピーカ等である。通信装置106は、例えば、LANLocalAreaNetworkボード等であり、通信ネットワーク図示略と接続する。CPU101は、メモリ102上にプログラム151をロードし、実行することにより、一般化階層木自動生成部121と再符号化部122を実現する。なお、再符号化部122は必要に応じて内部処理として損失情報量計量部123を実現する。一般化階層木自動生成部121は、個人情報テーブル131及び属性値種別情報134を入力とし、個人情報テーブル131の各属性から全ての属性値の頻度を取得し、取得した頻度情報と属性値種別情報134から取得した当該属性の種別情報からHuffman符号木またはShannon-Fano符号木またはHu-Tucker符号木を作成し、作成した木を一般化階層木として一般化階層木テーブル135に格納する。再符号化部122は、個人情報テーブル131及び最小同値件数情報133及び一般化階層木テーブル135を入力とし、一般化階層木テーブル135から得られる各属性に対応する一般化階層木にしたがってその属性値を再符号化することで全てのレコードがテーブル上に存在する件数が最小同値件数情報133に格納された値よりも大きくなるようにし、この結果を匿名情報テーブル132に出力する。なお、さらに出力装置105に結果を出力してもよい。損失情報量計量部123は属性値の再符号化によりデータの失う情報量を定量的に評価する部分であり、必要に応じて再符号化部122から呼び出される。次に上述したテーブル等の詳細な例を説明する。まず、図2を参照し、個人情報テーブル131の一例を説明する。図2において、個人情報テーブル131は複数のレコードを有する。1つのレコードが1人の個人に関する情報を表す。各レコードは属性201、属性202、属性203の属性値のタプルとして表される。図2で表される表の一行目は属性の名前を指す。属性201、属性202、属性203はそれぞれ個人の住所、年齢、出身国または出身地域、のうち任意の一つ以上を表す。また上述の個人情報テーブル131内の情報は予め格納されているものとする。なお、個人情報の項目は図2に示されるものに限られるわけではなく、任意でよい。また、個人の総数レコード総数も属性数も任意で良い。実施例1の計算機100は、個人を特定可能な情報を匿名化するものである。個人を特定可能な情報とは必ずしも氏名等、直接的に個人を特定するものに限らない。例えば、性別、年齢、住所の組み合わせにより個人を特定できる場合がある。本実施形態は、システムの運用者が匿名化を行う属性を予め決定するものである。図2の例では、システムの運用者が住所、年齢、出身国または出身地域、の組み合わせが個人の特定につながると判断し、この3属性に対して匿名化を行う例である。すなわち、個人情報の属性全体が住所、年齢、出身国または出身地域、に限定されている必要はない。次に図3を参照して最小同値件数情報133の一例を説明する。図3の例は、最小同値件数301が5件であることを示している。この最小同値件数301は、同じ属性値タプルを持つレコードの数が最小同値件数301以上であれば、データを公開しても個人を特定することが困難であると見なせる値である。図3の例ではデータ中に出現する任意の属性値タプルが5件以上データ中に出現すれば開示しても安全であると見なすことを示す。なお、最小同値件数301の値は5件に限定されるものではなく、任意で良い。次に図4を参照して属性種別情報134の一例を説明する。属性種別情報134は、匿名化を行う各属性の一般化階層木を構成する上で、構成方法を指定するためにその属性の持つ情報種別を規定するものである。図4の例の表134-aでは、属性住所401の一般化階層木を文字列処理型で、属性年齢402の一般化階層木を順序保存型で、属性出身国または出身地域403の一般化階層木をその他で生成することを示している。表134-bのように、文字列処理型の属性に関してはその文字列処理のタイプを指定する。表134-bでは、属性住所404を前方一致型で処理することを意味している。なお、順序保存型とは構成された一般化階層木の葉の順序を予め決定しておく場合を指し、その他とは文字列処理型でも順序保存型でもないものを指す。次に図5a、図5b、図5cを参照し、一般化階層木テーブル135の一例を示す。ここで、上述のように、一般化階層木テーブル135は、一般化階層木自動生成部121が個人情報テーブル131と属性種別情報134を参照して生成するものである。まず、図5a-1を参照して属性住所201に対して作成した一般化階層木135-a1の概念図を示し、図5a-2を参照して一般化階層木135-a1をストレージ上に保存する方法を示し、図5a-3を参照して一般化階層木135-a1をメモリ上に管理する方法を示す。図5a-1において、属性住所201に対する一般化階層木135-a1は複数の節点と枝から成る木構造として表される。枝は節点間の親子関係を意味する。枝は矢線を用いて示され、矢線の根側の節点が親であり、矢側の節点が子である。例えば節点501と節点502の関係において、節点501が親であり節点502は子である。親を持たない節点を根と呼び、子を持たない節点を葉と呼ぶ。例えば、節点501は根であり、節点503や節点504などは葉である。親を辿ることで行き着くことができる節点を祖先と呼び、子を辿ることで行き着くことのできる節点を子孫と呼ぶ。葉でない節点は内部節点と呼ばれる。例えば、節点501や節点502等は内部節点である。各節点にはラベル5031と頻度5032が関連付けられる。葉にはラベルとして元の属性値が関連付けられ、頻度として個人情報テーブル中にその属性値が出現する件数が関連付けられる。例えば、葉503は東京都文京区とラベル付されており、その出現件数35が頻度として関連付けられている。内部節点のラベルには、その子を全て表すことができる抽象的な概念が割り当てられ、またその頻度として全ての子の頻度の総和が割り当てられる。例えば、属性住所201は属性種別情報134を参照すると前方一致型の文字列処理型であるので、節点503東京都文京区と節点504東京都豊島区は同じ親節点502としてより抽象的な概念へと一般化され、節点502のラベルとしては東京都が割り当てられている。また、節点502の頻度として、その全ての子の頻度の総和が関連付けられている。同様にして、全ての属性値の一般化階層構造を前方一致型の文字列処理を行って木構造として出力した結果が一般化階層木135-a1である。図5a-2において、一般化階層木135-a1をストレージ上に保存する方法の一例を示す。ストレージ上にはリレーショナルデータベース等を用いて保存される。リレーショナルデータベース上のテーブルとして、一般化階層木135-a1を保存する一例がテーブル135-a2である。テーブル135-a2の一行目511は、各カラムのラベルを示し、2行目以降の各レコードは1つの節点に対応する。すなわち、左列は当該節点のラベルを意味し、中央列は当該節点の親節点のラベルを意味し、右列は当該節点の頻度を意味する。例えば、レコード512は節点501に対応するものである。節点501は根であるから、親を持たない。この場合、中央列にはNULLという値を保管し、節点501の頻度205を右列に保管する。同様に、節点502に対応するレコードがレコード513である。なお、前方一致型の文字列処理型の属性の場合に限らず、任意の属性種別に対する一般化階層木がこの方法でストレージ上に保存可能である。図5a-3において、一般化階層木135-a1をメモリ上で管理する方法を示す。データ構造521は節点501を管理するデータ構造の一例である。データ構造はポインタ5211と親を指し示すポインタ5212と子のポインタリスト5213と当該節点のラベル5214と当該節点の頻度5215によって構成される。節点501を表すデータ構造521は根に対応するから、親のポインタはNULLである。同様に例えば、節点503は葉であるから、節点503を表すデータ構造の子のポインタリストは空となる。なお、前方一致型の文字列処理型の属性の場合に限らず、任意の属性種別に対する一般化階層木がこの方法でメモリ上に管理できる。次に図5b-1を用いて、属性年齢202の一般化階層木を構成した一例を木135-b1に示す。属性種別情報134を参照すると、属性年齢202は順序保存型である。順序保存型とは葉の順序を保存する情報種別を指し、実際、一般化階層木135-b1において、全ての葉がその大小順序を左から右に保存している。なお、順序としては大小順序に限らず、辞書式順序や、人手で与えた順序など、任意の順序が適用可能である。順序保存型の一般化階層木の構築には、その属性の属性値の頻度情報を用いる。テーブル135-b2は、属性年齢202の属性値の頻度を表にしたものであり、属性値20を取るレコードが50件、属性値25を取るレコードが35件、属性値27を取るレコードが25件、属性値33を取るレコードが40件、属性値38を取るレコードが55件であり、その他の属性値を取るレコードは存在しないことを指す。この例では属性値を5種類に限定しているが、これに限定する必要はない。頻度テーブル135-b2を利用して順序保存型で一般化階層木を構築すると一般化階層木135-b1が生成される。なお、一般化階層木135-b1では大小順序を保存する形で一般化階層木を構成したことにより、内部節点のラベルが範囲の形で指定できる。例えば、節点531では、20-27というラベルが指定出来る。言い換えれば、祖先と子孫の関係にない2節点のラベルの表す範囲が重なってしまうことがない。図6を参照して、属性年齢の属性種別が仮に後述のその他であった場合に一般化階層木を自動生成した結果を示す。この例では、作為的に内部節点に範囲の形でラベルを割り当てている。図6の例において、節点601と節点602のラベルはそれぞれ25-38と33であり、これらの節点は祖先と子孫の関係にないにも関わらず33が25-38の範囲に含まれる形となっている。次に、図5c-1を用いて属性出身国または出身地域203の一般化階層木を構成した一例を示す。属性種別情報134を参照すると、属性出身国または出身地域203の属性種別はその他である。すなわち、文字列処理型でも順序保存型でもない。この場合には、属性の全ての属性値の頻度情報のみを用いて一般化階層木を構成する。頻度情報135-c2を用いて一般化階層木を構成した一例が木135-c1である。内部節点に割り当てられているラベルは、その内部節点よりも下位にある葉のラベルを列挙したものである。例えば、節点541では{中国、仏国、独国、米国、英国}というラベルが割り当てられているが、これは中国または仏国または独国または米国または英国と解釈する。図7を参照して、匿名情報テーブル132の一例を説明する。各属性値はその属性に対する一般化階層木の節点のラベルに再符号化される。このとき、再符号化先の節点は、元の属性値に対応する葉の祖先に限る。また、匿名情報テーブル132中に出現する全ての属性に対する属性値タプルが、匿名情報テーブル全体の中で最小同値件数情報133の件数は少なくとも存在している必要がある。例えば、データタプル701神奈川県横浜市、33-38、日本というタプルを持つレコードが最小同値件数情報133に示される5件以上存在していなくてはならない。なお、図7の例では、子孫、祖先の関係にある節点のラベルが匿名情報テーブル132中に共に存在しない形式となっているが、その限りではない。すなわち、例えば20-27と再符号化される年齢のセルと25-27と再符号化される年齢のセルが共存してもよい。次に、図8を参照し、計算機100の動作例を説明する。まず、一般化階層木自動生成部121は、個人情報テーブル131および属性種別情報134を参照し、一般化階層木の自動生成を行い、その結果を一般化階層木テーブル135に格納するS801。次に、再符号化部122が、個人情報テーブル131および最小同値件数134ならびに一般化階層木テーブル135を参照し、任意のレコードが最小同値件数301に示された5件以上存在するようにデータを再符号化し、その結果を匿名情報テーブル132に格納するS802。なお、図8では、S801とS802を続けて実行しているが、上記の説明からも分かるようにこれらのステップは分離できる。すなわち、一般化木自動生成部121がS801を行うタイミングと再符号化部122がS802を行うタイミングを別にすることが可能である。ただし、S801はS802よりも以前に実行されている必要がある。S801とS802の実行のタイミングをずらすことで次のようなメリットを享受できる。S801によって自動的に生成された一般化階層木を計算機100の利用者が閲覧して、これに修正を加えることができる。例えば、S801によって自動生成された一般化階層木の全ての内部節点を再符号化先の候補とする必要がない場合には、再符号化先の候補とする内部節点のみを残した木を改めて一般化階層木とすることでS802の高速化が可能である。また、前記以外の一般化階層木に対する修正も可能であり、さらに自動生成された木と全く関係のない構造を持った一般化階層木に利用者が置き換えることも可能である。次に図9を参照して、一般化階層木自動生成部121が上記S801で一般化階層木を自動構成する詳細な動作例を説明する。すなわち、図9の各処理を行うのは一般化階層木自動生成部121である。まず、いくつかの表記法を定義する。mは個人情報テーブル131の属性の総数列数である。個人情報テーブル131の各列を左から順番に0番目の列、1番目の列、、m-1番目の列と呼ぶ。図9でははじめに、個人情報テーブル131をメモリ102上に読み込みS901、パラメタjを0に初期化するS902。次に、jがmより小さいかどうかを確認しS903、jがm以上であれば処理を終了する。S903の判定でjがmよりも小さい場合には、j番目の属性の属性種別を属性種別情報134から取得しS904、その結果に従って条件分岐するS905。S905で当該属性の属性種別が文字列処理型の場合は、まず、j番目の属性の個人情報テーブル131に出現する全ての属性値を漏らすことなく列挙するS911。具体的には、レコードを全件走査しながら、j番目の属性に対応する属性値を既に列挙したかを判別し、列挙していない場合は列挙する。列挙したかどうかの判別には、例えばプログラミング言語であるCの標準ライブラリで提供されるset等のデータ構造を用いればよい。次に列挙した属性値から指定された文字列処理を行い、包含関係を抽出し、その包含関係に基づいて木を構成するS912。包含関係の抽出方法は、既に知られている様々な文字列処理手法に依るが、例えば図5a-1の例のように前方一致型の文字列処理の場合には、一致部分を全て切り出して、一致長の長い方が葉に近い方に、一致長の短い方が根に近い方になるように構成する。文字列に一致部分がある2つの属性値は、その一致部分を根とする部分木の葉となり、当該の部分木の根となる節点のラベルには、一致した文字列を割り当てることができる。前方一致型以外の文字列処理型に対しても、適切な方法でラベルを全ての節点に割り当てる。なお、特にラベルの内容を気にしない場合は、当該節点の子孫となる葉全てを列挙したものでもよい。例えば、{東京都文京区、東京都豊島区、東京都板橋区}などである。S912の処理を終えたら、後に記述するS941の処理に移る。S905で当該属性の属性種別が順序保存型の場合は、まず、j番目の属性の全ての属性値の頻度情報を取得するS921。具体的には、レコードを全件走査しながら、現在走査中のレコードのj番目の属性に対応する属性値を既に列挙したかを判別し、列挙した場合は当該属性値の頻度を数えるカウンタを1つ増加させ、列挙していない場合は当該属性値の頻度のカウンタを1にセットする。データ構造として、Cの標準ライブラリで提供されるmap等を用いる。mapは前述のsetの集合内の要素に、値を関連付けられるもので、集合の要素をキー、関連付ける値をバリューと呼ぶ。レコード全件の走査が終了した時には、mapに各属性値の頻度が記憶されている。次に、上記で取得したj番目の属性の頻度情報を用いてHu-Tucker符号木を構成し、これを当該属性の一般化階層木とするS922。この符号木の構成方法は文献D.E.Knuth,TheArtofComputerProgramming:Volume3SortingandSearching,Addison-Wesley,pp.439‐444,1973に記載の方法等を用いる。この場合も、S912と同じように、適切な方法で節点にラベルを割り当てるものとする。なお、順序保存型の場合には、前述のように属性値の素な範囲として内部節点のラベルを割り当てることができる。S922の処理を終えた後は後述するS941の処理に移る。S905で当該属性の属性種別がその他の場合は、まず、j番目の属性の全ての頻度情報を取得するS931。これは、処理S921と全く等価な処理である。次に、上記で取得したj番目の属性の頻度情報を用いてHuffman符号木あるいはShannon-Fano符号木を構成し、これを当該属性の一般化階層木とするS932。どちらの符号木を用いるかは、計算機100の設計者があらかじめ決定しておく。なお、Huffman符号木の構成方法は文献TSHanandK.Kobayashi,MathematicsofInformationandCoding,AmericanMathematicalSociety,pp.99‐105,2002等に記載の方法を用い、Shannon-Fano符号木の構成方法は文献T.S.HanandK.Kobayashi,MathematicsofInformationandCoding,AmericanMathematicalSociety,pp.95‐96,2002に記載の方法等を用いる。S932の処理を終えた後は、後述するS941の処理に移る。S912またはS922またはS932の処理を終えた後、各々のステップで構成した一般化階層木の各節点の頻度情報を更新するS941。なお、より詳細な更新方法を、図10を用いて後に説明する。次に、構成した一般化階層木を、一般化階層木テーブル135に保存しS942、jにj1を代入しS943、前述のS903の評価に戻る。jは単調に増加し、必ずmよりも大きくなるから、以上を以て全ての属性に対する一般化階層木は構成できる。図10を用いて、一般化階層木自動生成部121がS941のステップで行う一般化階層木の節点頻度情報の更新方法の一例を説明する。すなわち、図10の各処理を行うのは一般化階層木自動生成部121である。図10aは一般化階層木の節点頻度更新の大きな流れで、内部的に図10bのルーティンを再帰的に用いる。まず、j番目の属性の全ての属性値の頻度情報を取得するS1001。ステップS1001はS921と全く同等の処理である。次に取得した頻度情報をj番目の属性の一般化階層木の対応する葉に割り当てるS1002。具体的には、対応する葉のデータ構造の頻度5215に、S1001で取得した頻度を代入する。これを全ての葉に対して行う。図10bのルーティンを、j番目の一般化階層木の根を引数として実行するS1003。図10bのルーティンを説明する。図10bのルーティンは、節点を引数に取る。まず、引数節点の子を全て取得し、この総数をpとするS1004。便宜上、p個の子節点を0、1、、p-1番目の子と呼ぶ。具体的には、節点のデータ構造の子のポインタリスト5213を取得する。このリストに格納されている要素の総数がpである。次に、iに0を代入するS1005。次にiがpより小さいかどうかを判定しS1006、p以上であれば後に説明するS1010に処理を移行する。S1006の判定で、iがpよりも小さければ、i番目の子に頻度が既に割り当てられていないかどうかを判定するS1007。もしも既に頻度が割り当てられていれば、iにi1を代入しS1009、S1006に戻る。S1007の判定でi番目の子に未だ頻度が割り当てられていなければ、図10bのルーティンを、i番目の子を引数として実行しS1008、これが終了した後iにi1を代入しS1009、S1006に戻る。S1006の判定でiがp以上であれば、0、1、、p-1番目の子の頻度の総和を当該節点の頻度として設定するS1010。以上により、全ての節点に頻度を設定できる。次に、図11を参照して、再符号化部122が再符号化処理S802で実行する処理の詳細を説明する。すなわち、図11の各処理を実行するのは再符号化部122である。以降、最小同値件数情報133で定義する最小同値件数301をkで表す。まず、個人情報テーブル131および一般化階層木テーブル135をメモリ上にロードするS1101。一般化階層木テーブル135は具体的には前述のデータ構造521を用いてメモリ上で管理される。なお、前述のように、一般化階層木の自動生成S801と再符号化S802を別のタイミングで行って、一般化階層木に修正を加えたりした場合には、このステップで一般化階層木自動生成部121が一般化階層木の頻度情報を図10の方法を用いて更新する必要がある。次に、節点を格納する空のリストvを準備しS1102、jに0を代入するS1103。S1102で準備するリストvには節点が格納され、格納される各要素eは、eの子のラベルをeのラベルに再符号化する候補であることを指し、S802の処理内において動的に変化するものである。次に、jがmよりも小さいかどうか判定するS1104。jがmよりも小さいと判定された場合には、j番目の一般化階層木において、全ての子が葉である節点を全てvに追加するS1105。jにj1を代入しS1106、S1104に戻る。S1104の判定でjがm以上であると判定された場合には、メモリ上の個人情報テーブルに出現する全ての全属性データタプルがk件以上存在するかを判定するS1107。具体的にはmapなどのデータ構造を用意し、mapのキー集合の中にレコードの示す全属性データタプルが存在する場合にはそのバリューに保存するカウントを1だけカウントアップする。キー集合の中に全属性データタプルが存在しない場合にはそのキーに対して、バリューとして1を代入する。以上を、全てのレコードに対して行い、mapに格納されている全てのバリューがk以上であるかどうかを判定すれば良い。S1107の判定で、k件未満しかないデータタプルが存在すると判定された場合には、S1108のループを処理する。ループはv内の全ての要素wに対して行う。ループS1108内では、wの子の節点のラベルをデータとして持つ全てのレコードの当該属性値をwのラベルに再符号化した場合の損失情報量を、損失情報量計量部123に計算させるS1109。この損失情報量の計算方法については、後に説明する。ループS1108を終えたら、vの中で最も損失情報量の小さい節点uの子の節点のラベルをデータとして持つ全てのレコードの当該ラベルをuのラベルに再符号化するS1110。次にuの子を全て削除し、uを葉とすることで、uを含む一般化階層木を更新するS1111。次に、uの親をtとし、tの全ての子が葉であれば、tをvに追加しS1112、S1107の判定に戻る。S1107の判定で、メモリ上の個人情報テーブルで、全ての全属性データタプルがk件以上存在すると判定された場合には、メモリ上の再符号化結果を匿名情報テーブル132に書き出してS1113、処理を終える。次に、図12aを参照して、wの子の節点のラベルをデータとして持つ個人情報テーブル中の全てのレコードをwのラベルに再符号化した場合に損失する情報量の計算を行う損失情報量計量部123を用いた処理S1109の詳細を説明する。すなわち、図12aの各処理を行うのは、損失情報量計量部123である。まず、最後に求める損失情報量を格納する変数Iを0に初期化するS1201。ループS1202は、節点wの全ての子cに対するループである。ループS1202では、内部で、cのラベルをデータとして持つ1レコードをwのラベルに再符号化した場合の損失情報量iを計算するS1203。損失情報量の計算方法は後に説明する。次にIにcountciを加算するS1204。なお、countcはメモリ上の個人情報テーブルでcのラベルをデータとして持つレコードの総数を意味し、演算は実数上の乗算を意味する。具体的には、countcは節点の頻度5215を参照することで得ることができる。ループS1202を終了した後、Iを返し処理を終える。次に図12bを参照して、cのラベルをデータとして持つ1レコードをwのラベルに再符号化した場合の損失情報量の計算方法S1203の詳細の一例を説明する。図12bの各処理を行うのは損失情報量計量部123である。必ずしもここに説明する方法を用いる必要はない。cのラベルをデータとして持つ1レコードをwのラベルに再符号化した時にデータが失う情報量を、-log{countc/countw}で計算するS1205。なお、logの底は通常2を用いるが、定数倍しか変化しないため何を用いても構わない。しかし、システムの中では統一する必要がある。またcountcは前述と同様に、メモリ上での個人情報テーブルでcのラベルをデータとして持つレコードの総数を意味する。なお、図12bに示す再符号化時の損失情報量の計算方法において、cとwは必ずしも親子関係にある必要はない。wがcの祖先であれば任意の節点間に対して定義できる。実際、cの祖先に節点dがあり、dの祖先に節点wがある場合、-log{countc/countw}=[-log{countc/countd}][-log{countd/countw}]を満たす。これは、cを再符号化してdにした後、dを再符号化してwにした場合の損失情報量と、cを直接wに再符号化した場合の損失情報量が等しいことを意味する。以上のように、計算機100の特長は自動的に一般化階層木を構成する手法と損失情報量の計量方法を備えることである。Hu-Tucker符号木やHuffman符号木およびShannon-Fano符号木は、前述のように頻度の小さい属性値を深い方に配置し、頻度の大きい属性値を浅い方に配置する木である。このため、再符号化に際して、頻度の小さいもの同士が同じラベルに再符号化される可能性を高くするため、過度の再符号化を避けた有用性の高い匿名データを生成できるものである。また、前述の符号木を一般化階層木として用いれば、再符号化時の損失情報量を小さくすることが可能である。<実施例2>次に実施例2について説明する。実施例2はデータの有用性を向上させるものである。以下、実施例2を説明する場合、上述の実施例1と重複する構成に対しては同じ符号を付与して説明を省略する。また、実施例2は動作のほとんどは実施例1と同様である。この部分の動作に対しては、同じ符号を付与して説明を省略する。まず、図13を参照して、実施例2の計算機100の構成例について説明する。図13において、計算機100のストレージ103は、プログラム151の代わりにプログラム1331を有する。プログラム1331がメモリ上にロードされ、CPU101は、実施例1の各部121、122、123に加えて擬似個人情報発生部1321を実現する。また、プログラム1331の処理結果の格納先として、ストレージ上に発生情報テーブル1332を有する。次に図14を参照して、発生情報テーブル1332の詳細を説明する。発生情報テーブル1332は図14に示されるように、ほとんど匿名情報テーブル132と同様のものである。その違いは、発生情報テーブル1332では、各属性情報はその属性の一般化階層木の葉に対応した値を取ることである。より具体的には、匿名情報テーブル132に格納されたラベルに対応する一般化階層木の節点の、子孫に対応する葉の属性値として改めて符号化されたものである。次に図15を参照して、実施例2の計算機100の処理の流れを説明する。図15において、一般化階層木自動生成部121が一般化階層木を自動生成するステップS801と再符号化部122が再符号化を行うステップS802は実施例1のものと完全に等価である。これらの処理を終えた後、擬似個人情報発生部1321が擬似個人情報発生ステップS1501を実行する。なお、実施例1にて示したS801とS802の関係と同様に、S1501も続けて実行する必要はなく、処理を行うタイミングは別々で構わない。図16を参照して、擬似個人情報発生部1321が頻度情報を用いて擬似個人情報発生処理を実行するS1501の詳細の一例を説明する。すなわち図16の各処理を行うのは擬似個人情報発生部1321である。まず、メモリ上に匿名情報テーブル132と一般化階層木テーブル135を取得するS1601。取得後、全てのレコードrに対してのループS1602と、さらに内部ループとしてレコードrの全ての属性についてのループS1603に対して以下を行う。ただし、現在処理中の属性をj番目の属性とする。まず、レコードrのj番目の属性の属性値が一般化階層木のどの節点に対応するかを特定し、当該節点をwとするS1604。次に、wの子孫に相当する節点で葉となるものを全て列挙し、これをc1、c2、、cnとおくS1605。具体的にはwから幅優先探索などの探索方法を用いてもよいし、一度探索した後は節点にこの探索結果を関連付けて記憶して、これを再利用してもよい。次に、レコードrのj番目の属性がwのラベルとなっているが、これを以下に示すような方法で一般化階層木の1つの葉のラベルに置き換えるS1606。一般化階層木に保管されている節点の頻度情報を用いて、countc1/countwの確率でc1のラベルを選び、countc2/countwの確率でc2を選び、同様の確率でc1、c2、c3、、cnをランダムに発生させて、発生結果の節点のラベルに置き換える。最後に全てのレコードを発生情報テーブル1332に格納するS1607。実施例2で構成した計算機100の特長は、発生情報テーブル1332の属性値が元の個人情報テーブル131の属性値と同じ集合の値を取るために、データを利用するアプリケーションを選ばない点である。例えば、年齢が10歳ということを示すレコードがあったとき、メモリ上では整数型として保持していることが多い。このデータが10-19歳という再符号化を行われると、整数型として表現することができないため、任意のアプリケーションに利用できない。しかし、実施例2ではこれを10-19歳の間の年齢に頻度情報を用いて置き換える。例えば、14歳などに置き換える。したがって整数型として表現でき、元の個人情報では利用できていた任意のアプリケーションに利用できるということになる。また、発生情報テーブル1332の各属性の分布が元の個人情報テーブル131の分布に近くなることが期待できる。なお、実施例2では匿名情報テーブル132を構成するステップを含む形で説明を行ったが、前述のように事前に匿名情報テーブル132を構成しておいて擬似個人情報発生部1331のみを後で行う方法もある。この方法によれば、個人情報テーブル131を必要としないので、匿名情報テーブル132と一般化階層木テーブル135と擬似個人情報発生部1331のみでシステムを構成できる。これにより、匿名情報と一般化階層木のみを社外に預託するだけで利用可能なシステムを構築でき、個人情報を預託する必要がないという意味において匿名性の高いシステムである。<実施例3>次に実施例3について説明する。実施例3は、ユーザが望む属性値の分類を用いることにより、データの有用性を向上させるものである。国際疾病分類、図書分類、特許分類など様々な分野において、決められた分類が存在している。また、年齢ならば10代、20代のようによく用いられる分類が存在する。実施例3は、ユーザが一般化階層木に望む階層構造のみを予め定義しておくことで、ユーザの望む分類を考慮した一般化階層木を自動生成するものである。例えば、年齢の分類を20歳から24歳、25歳から29歳と予め定義しておくことで、24歳から27歳のようにユーザが望む分類から外れる形でデータが再符号化されることを防ぐ。なお、実施例3は、一般化階層木を構成する際に、ユーザ定義階層木に外れない形での節点の追加を認めるものである。例えば、ユーザが20歳から24歳という分類を定義するとき、20歳から24歳という節点の子として20歳から22歳というような節点を構成することを認める。また、ユーザが20歳から24歳の親として、全属性値を包含するを定義していた場合、20歳から24歳の親として20歳から29歳という節点を新たに追加することを認める。ユーザ定義階層木に外れない形での階層の追加を認めることにより、ユーザが望む分類を活かしつつ、より詳細な匿名化データを出力することが可能になる。以下、実施例3を説明する場合、上述の実施例1と重複する構成に対しては同じ符号を付与して説明を省略する。また、実施例3の動作の一部は実施例1と同様である。この部分の動作に対しては、同じ符号を付与して説明を省略する。まず、図17を参照し、実施例3の計算機100の構成例を説明する。図17において、計算機100のストレージ103は、個人情報テーブル131、匿名情報テーブル132、最小同値件数情報133、属性種別情報134、一般化階層木テーブル135、プログラム1731、ユーザ定義階層木テーブル1732を記憶する。CPU101は、メモリ102上にプログラム1731をロードし、ユーザ定義階層木に基づく一般化階層木自動生成部1721と再符号化部122を実現する。なお、再符号化部122は必要に応じて内部処理として損失情報量計量部123を実現する。ユーザ定義階層木テーブル1732は、ユーザが任意の属性に対して望む分類を定義したものを格納する。ユーザは匿名化を行う全ての属性に対してユーザ定義階層木を定義する必要はなく、分類を定義したい属性についてのみ定義すればよい。また、前述のとおり、ユーザは各属性において望む分類のみを定義すればよく、全ての階層を定義する必要はない。なお、文字列処理型、順序保存型、その他のどの属性種別においても、祖先と子孫の関係にない複数の節点において各節点の子孫となる属性値が重複するような分類とならないように定義する必要がある。例えば、25歳から38歳と20歳から33歳のような分類や、{神奈川県横浜市、神奈川県川崎市}と{神奈川県横浜市、神奈川県藤沢市}のような分類を定義してはならない。図18を参照し、ユーザ定義階層木テーブル1732の一例を示す。まず、図18aを参照して属性年齢に対するユーザ定義階層木の概念図を示し、図18bを参照してユーザ定義階層木をストレージ上に保存する方法を示し、図18cを参照して一般化階層木をメモリ上に管理する方法を示す。図18aにおいて、属性年齢に対するユーザ定義階層木の一例を示す。ユーザ定義階層木は複数の節点と枝から成る木構造として表される。各節点にはユーザが求める分類を表すラベルが関連付けられる。図18bにおいて、ユーザ定義階層木をストレージ上に保存する方法の一例を示す。ストレージ上にはリレーショナルデータベース等を用いて保存される。リレーショナルデータベース上のテーブルとしてユーザ定義階層木を保存する一例がテーブル1732-bである。テーブルの一行目1811は、各カラムのラベルを示し、2行目以降の各レコードは1つの節点に対応する。図18cにおいて、ユーザ定義階層木1732-aをメモリ上で管理する方法を示す。データ構造1821は節点1801を管理するデータ構造の一例である。データ構造はポインタ18211と親を指し示すポインタ18212と子のポインタリスト18213と当該節点のラベル18214と頻度情報18215によって構成される。次に、図19を参照し、各属性種別におけるユーザ定義階層木の一例と、ユーザ定義階層木に基づく一般化階層木の例を示す。図19a-1は文字列処理型の属性住所のユーザ定義階層木の一例、図19a-2は、図5a-2で例示したデータを用いて、ユーザ定義階層木に基づく一般化階層木を構成した例である。文字列処理型の属性のユーザ定義階層木としてユーザは文字列から抽出される分類以外の分類を定義することが出来る。例えば、神奈川県を{神奈川県横浜市、神奈川県川崎市}と、神奈川県その他などに細かく分類できる。ここで、{神奈川県横浜市、神奈川県川崎市}という節点は、子となる節点のラベルを列挙したものであり、神奈川県横浜市と神奈川県川崎市を子に持つことが明らかであるので、神奈川県横浜市と神奈川県川崎市を子として定義しなくともよいが、神奈川県その他は子としてどのような節点を持つか明らかでないため、ユーザは神奈川県その他の子を定義する必要がある。図19b-1は順序保存型の属性年齢のユーザ定義階層木の一例、図19b-2は、図5b-2で例示したデータを用いて、ユーザ定義階層木に基づく一般化階層木を構成した例を示す。順序保存型の属性の場合、節点のラベルは値の範囲を示すものとなるため、当該節点に対して子を定義しなくともよい。図19c-1はその他の属性国籍のユーザ定義階層木の一例、図19c-2は、図5c-2で例示したデータを用いて、ユーザ定義階層木に基づく一般化階層木を構成した例を示す。属性種別がその他の属性は、文字列処理型の属性と同様、各節点のラベルが子の節点を列挙する形のものである場合は子を定義する必要はないが、欧州のような抽象的な名称とする場合には、子としてどのような節点をもつかを定義しなければならない。図19a-2b-2c-2において、点線で囲まれた部分は、再符号化の際になくともよい節点を示す。たとえば、頻度が0の節点、つまりユーザ定義階層木において分類区分を指定したものの節点に区分される属性値が個人情報データに存在しない場合、当該節点は再符号化処理には必要ない。そのため、頻度が0となる節点は一般化階層木から削除してもよい。また、節点の頻度が当該節点の子の頻度とかわらないもの、つまり頻度が0以外の子を1つしか持たない節点についても、再符号化処理には必要ない。そのため、頻度が0以外の子を1つしか持たない節点は、一般化階層木から削除し、当該節点の子と当該節点の親とを親子関係にしてもよい。次に、図20を参照して、実施例3の計算機100の処理の流れを説明する。まず、ユーザ定義階層木に基づく一般化階層木自動生成部1721は、個人情報テーブル131および属性種別情報134ならびにユーザ定義階層木テーブル1732を参照し、一般化階層木の自動生成を行い、その結果を一般化階層木テーブル135に格納するS2001。次に再符号化部122がデータの再符号化を行い、その結果を匿名情報テーブル132に格納するS802。ステップS802は実施例1のものと等価である。実施例1にて示したS801とS802の関係と同様に、S2001とS802も続けて実行する必要はなく、処理を行うタイミングは別々で構わない。次に図21を参照して、ユーザ定義階層木に基づく一般化階層木自動生成部1721が上記S2001で一般化階層木を自動構成する詳細な動作例を説明する。すなわち、図21の各処理を行うのはユーザ定義階層木に基づく一般化階層木自動生成部1721である。まず、個人情報テーブル131およびユーザ定義階層木テーブル1732をメモリ102上に読み込むS2101。このとき、ユーザ定義階層木で定義された分類に重複がないか確認する。具体的には、ユーザ定義階層木を構成する節点のうち祖先と子孫の関係にない複数の節点において、各節点の子孫が重複しないことをチェックする。重複が存在する場合には、処理を終了する。S902およびS903は実施例1のものと等価である。S2102でj番目の属性におけるユーザ定義階層木が存在するかどうかを判定する。ユーザ定義階層木が存在しない場合には、S2103、ユーザ定義階層木が存在する場合はS2104に進む。S2103およびS2104の詳細については後述する。S2103またはS2104の処理を終えた後は、S943の処理に移る。S943の処理は実施例1のものと等価である。図22を参照して、S2103の処理を説明する。S2103は、ユーザ定義階層木を用いず、個人情報テーブルの情報のみを用いて一般化階層木を構成する場合の処理である。つまり、S2103の処理はすべて、実施例1で述べた処理と等価の処理となる。次に、図23を参照して、S2104の処理を説明する。S904およびS905の処理は前述の通りである。S905で、当該属性の属性種別が文字列処理型の場合はS2311、順序保存型の場合はS2321、その他の場合はS2331へ進む。S2311、S2321、S2331の詳細は後述する。S2311またはS2321または2331の処理を終えたら、S942に進む。S942の処理は前述の通りである。図24aを参照して、S2311の処理を説明する。まず、いくつかの表記法を定義する。yはユーザ定義階層木1732の最も深い階層の階層数である。全ての属性値を包含するを階層0とし、下の階層に行くごとに階層1、階層2、階層yと呼ぶ。S911は実施例1のものと等価である。S2401では、パラメタxをyに初期化する。次に、xが0より小さいかどうかを確認しS2402、xが0より小さい場合は処理を終了し、xが0以上の場合にはS2403へ進む。S2403では、j番目の属性のユーザ定義階層木を用いて、階層xの節点を全て列挙したリストzを用意する。S2404では、リストzが空かどうかを判定する。リストzが空の場合はS2407へ進み、空でない場合は、S2405へ進む。S2405では、リストzから節点を一つ選択し、選択した節点をリストzから削除する。S2411では、S2405で選択した節点の子孫となる節点を列挙する。具体的には、S2405でユーザ定義階層木1732において子を持たない節点を選択した場合は、S911で取得した属性値情報を用いて当該節点の子孫となる属性値を列挙する。例えば、神奈川県川崎市という節点を選択した場合、神奈川県川崎市という文字列を含む属性値を列挙する。また、S2405でユーザ定義階層木1732において子を持つ節点を選択した場合は、ユーザ定義階層1732において当該節点の子として定義されている節点を列挙する。例えば、{神奈川県横浜市、神奈川県川崎市}という節点を選択した場合、ユーザ定義階層木1732で{神奈川県横浜市、神奈川県川崎市}の子として定義されている神奈川県横浜市と神奈川県川崎市を列挙する。S2412では、S2411で列挙した節点から指定された文字列処理を行い、包含関係を抽出し、その包含関係に基づいてS2405で選択した節点を根とする木を構成する。木の構成方法は、実施例1と同様既に知られている様々な文字列処理手法に依る。構成した木はユーザ定義階層木に基づく一般化階層木の一部となる。構成した木を用いて、ユーザ定義階層木を更新する。S2406では、S2412で構成した木の頻度情報を更新する。S2406の処理は後述する。S2406の処理を終えたら、前述のS2404の評価に戻る。S2407では、xにx-1を代入し、前述のS2402の評価に戻る。以上により、属性種別が文字列処理型の属性について、ユーザ定義階層に基づいた一般化階層木が構成される。図25を参照して、S2406の処理を説明する。S2406の処理の一部は、図10で説明したS941のものと等価である。この部分の動作に対しては、同じ符号を付与して説明を省略する。まず、S2501で、頻度情報更新対象の部分木の葉となる節点の頻度情報を取得する。ここで、頻度情報更新対象の部分木とは、S2412で構成した木をさし、部分木の葉となる節点とは、S2411で列挙した全ての節点を指す。S2502では、S2501で取得した頻度情報を対応する葉に割り当てる。S2503では、頻度情報更新対象の部分木の根、つまりS2414で選択した節点を引数として、図25bのルーティンを実行する。図25bのルーティンは、図10bのものと完全に等価である。次に図24bを参照して、S2321の処理を説明する。S2321の処理の一部はS2311のものと等価である。この部分の動作に対しては、同じ符号を付与して説明を省略する。S921、S2401、S2402、S2403、S2404、S2405の処理は前述の通りである。S2421では、S2405で選択した節点の子孫となる節点の頻度情報を取得する。具体的には、S2405でユーザ定義階層木1732において子を持たない節点を選択した場合は、S921で取得した属性値情報を用いて当該節点の子孫となる属性値の頻度情報を取得する。また、S2405でユーザ定義階層木1732において子を持つ節点を選択した場合は、ユーザ定義階層1732において当該節点の子として定義されている節点の頻度情報を取得する。例えば、ユーザ定義階層木1732において20歳から24歳という節点を選択した場合、属性値が20歳、21歳、22歳、23歳、24歳の頻度情報を取得する。S2422では、S2421で取得した頻度情報を用いて、S2405で選択した節点を根とするHu-Tucker符号木を構成する。構成した木を用いて、ユーザ定義階層木を更新する。S2406、S2407の処理は前述の通りである。以上により、属性種別が順序保存型の属性について、ユーザ定義階層に基づいた一般化階層木が構成される。次に図24cを参照して、S2331の処理を説明する。S2331の処理の一部はS2311のものと等価である。この部分の動作に対しては、同じ符号を付与して説明を省略する。S931、S2401、S2402、S2403、S2404、S2405の処理は前述の通りである。S2431では、S2405で選択した節点の子孫となる節点属性値の頻度情報を取得する。具体的には、S2405でユーザ定義階層木1732において子を持たない節点を選択した場合は、S931で取得した属性値情報を用いて当該節点の子孫となる属性値の頻度情報を取得する。また、S2405でユーザ定義階層木1732において子を持つ節点を選択した場合は、ユーザ定義階層1732において当該節点の子として定義されている節点の頻度情報を取得する。例えば、ユーザ定義階層木1732において欧州を選択した場合、英国、仏国、独国の頻度情報を取得する。S2432では、S2431で取得した頻度情報を用いて、Huffman符号木あるいはShannon-Fano符号木を構成する。実施例1と同様、どちらの符号木を用いるかは、計算機100の設計者があらかじめ決定しておく。構成した木を用いて、ユーザ定義階層木を更新する。S2406,S2417の処理は前述の通りである。以上により、属性種別がその他の属性について、ユーザ定義階層に基づいた一般化階層木が構成される。実施例3で構成した計算機100の特長は、ユーザが希望する分類を持つ一部の属性、一部の階層をユーザ定義階層木として定義することで、ユーザが望む分類を考慮した一般化階層木を自動的に生成することである。また、頻度情報を用いて一般化階層木を自動生成することで、損失情報量が少ない形でデータを匿名化することである。"