(57)【要約】【課題】  個人情報の保護技術において、検索条件を何度も指示等する必要が無い技術を提供する。また、個人情報の保護技術において、運用コストを低くすることを可能な技術を提供する。【解決手段】  各個人情報は、複数の項目と、該項目毎の項目値とを含む。情報処理装置は、複数の個人情報の各々に対し、項目のうち１つ以上を選択する。情報処理装置は、複数の個人情報の各々に対し、選択した項目の項目値と同じ項目値の組み合わせを含む個人情報の件数をカウントする。この結果、件数が閾値以上となる項目の項目値のみを出力装置に出力する。【選択図】  図１
2008217425.tif 000002
【特許請求の範囲】
【請求項１】
複数の項目毎の項目値を含む個人情報を複数記憶する個人情報記憶手段と、
前記複数の個人情報の各々に対し、前記複数の項目のうち１つ以上を選択し、前記選択した項目の項目値と同じ項目値を含む個人情報の件数をカウントするカウント手段と、
前記件数が閾値以上であるか否か判定する判定手段と、
前記判定により、前記件数が閾値以上であると判定された場合に選択された項目の項目値のみを出力装置に出力する結果出力手段と、を有すること
を特徴とする情報出力装置。
【請求項２】
請求項１記載の情報出力装置であって、
前記項目毎に、異なる項目値を包括する複数の条件を前記出力装置にさらに出力する条件出力手段、をさらに有し、
前記カウント手段が、前記複数の個人情報の各々に対し、前記複数の項目のうち１つ以上を選択し、前記出力した条件のうち入力された条件に従い、前記選択した項目の項目値と同じ項目値に包括される項目値の組み合わせを含む個人情報の件数をカウントし、
前記結果出力手段が、前記件数が閾値以上であると判定された場合に選択された項目の項目値を、前記入力された条件で前記出力装置に出力すること
を特徴とする情報出力装置。
【請求項３】
請求項２記載の情報出力装置であって、
同じ項目値の組み合わせを含む個人情報、及び、前記同じ項目値に包括される項目値の組み合わせを含む個人情報各々の頻度を取得し、該取得した頻度の頻度分布を前記出力装置にさらに出力する頻度分布出力手段、をさらに有すること
を特徴とする情報出力装置。
【請求項４】
請求項３記載の情報出力装置であって、
前記頻度分布出力手段が、前記出力した条件のうち入力された条件に従う前の、同じ項目値の組み合わせを含む個人情報の頻度の頻度分布と、前記出力した条件のうち入力された条件に従い、同じ項目値に包括される項目値の組み合わせを含む個人情報の頻度の頻度分布との両方を、前記出力装置に出力すること
を特徴とする情報出力装置。
【請求項５】
請求項１記載の情報出力装置であって、
前記カウント手段が、前記複数の項目のうち１つの項目を選択し、該選択した項目の項目値と同じ項目値を有する個人情報の件数をカウントし、
前記判定手段が、前記カウント手段による個人情報の件数のカウントの度に、該件数が閾値以上であるか否か判定し、
前記カウント手段が、前記判定手段により件数が閾値以上であると判定された場合、前記複数の項目のうち１つずつ項目を増やしながら異なる項目の組合せを選択し、該選択の度に、該選択した項目の項目値と同じ項目値を有する個人情報の件数をカウントし、前記判定手段により件数が閾値以上でないと判定された場合、前記項目の選択及び個人情報の件数のカウントを停止し、該停止より１つ前に選択した項目の項目値を前記出力装置に出力させること
を特徴とする情報出力装置。
【請求項６】
情報出力装置の出力装置に個人情報を出力する情報出力方法であって、
複数の項目毎の項目値を含む個人情報を複数記憶する個人情報記憶手段、を有する前記情報出力装置に、
前記複数の個人情報の各々に対し、前記複数の項目のうち１つ以上を選択し、前記選択した項目の項目値と同じ項目値を含む個人情報の件数をカウントするカウントステップと、
前記件数が閾値以上であるか否か判定する判定ステップと、
前記判定により、前記件数が閾値以上であると判定された場合に選択された項目の項目値のみを前記出力装置に出力する結果出力ステップと、を実行させること
を特徴とする情報出力方法。
【請求項７】
情報出力装置の出力装置に個人情報を出力させる情報出力プログラムであって、
複数の項目毎の項目値を含む個人情報を複数記憶する個人情報記憶手段、を有する前記情報出力装置に、
前記複数の個人情報の各々に対し、前記複数の項目のうち１つ以上を選択し、前記選択した項目の項目値と同じ項目値を含む個人情報の件数をカウントするカウントステップと、
前記件数が閾値以上であるか否か判定する判定ステップと、
前記判定により、前記件数が閾値以上であると判定された場合に選択された項目の項目値のみを前記出力装置に出力する結果出力ステップと、を実行させること
を特徴とする情報出力プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、個人情報の保護に関するものである。
【背景技術】
【０００２】
プライバシ保護への社会的要請が高まっている昨今、個人情報を扱う企業の情報システムにおいてはプライバシへの配慮が不可欠となってきた。保護すべき対象やその在り方は社会通念として定まっていないものの、企業（個人情報取扱事業者）にとり、少なくとも2005年4月に全面施行されたいわゆる個人情報保護法（以下、保護法）および関係法令の遵守は必須となっている。保護法は、収集、利用等の個人情報管理で必要とされる対応を義務付けており、さらに具体的な措置を各省庁のガイドラインが規定している。
【０００３】
これらのガイドラインが規定する管理措置の一つに個人情報の匿名化がある。例えば厚生労働省は、第三者提供、学会発表、医療事故報告等において、特段の必要がない限りは医療情報（個人情報）を匿名化するよう求めている。また経済産業省は、同意の取得、オプトアウトと並び、個人情報の匿名化を第三者提供時の望ましい措置として挙げている。
【０００４】
最も容易な個人情報匿名化の処理は、個人を識別可能な情報を当該個人情報から取り除くこと、識別可能な情報を曖昧にすることである。前者の例としては、氏名や住所を取り除く処理が、後者の例としては住所を都道府県単位に変換する、年齢を１０歳刻みに変換する等の処理が該当する。
【０００５】
ただし、このような処理を行っても、当該個人に関して他に入手できる情報と照合することで、匿名化された個人情報から特定個人を識別されることがありえる。そのため個人情報の匿名化に際しては、識別可能性等の観点から個人情報の安全性を測ることが望ましい。
【０００６】
個人情報の保護に関する技術が特許文献１、特許文献２に記載されている。
【０００７】
特許文献１には、個人情報の検索条件に、個人を特定可能な条件が含まれている場合、その検索条件の削除、変更等を行なうことが記載されている。また、個人情報の検索結果に個人を特定可能な情報が含まれている場合、それを取り除くか、検索結果を送信しないことが記載されている。
【０００８】
特許文献２には、予め個人情報の項目毎に頻度を設定しておき、個人情報が要求された場合、要求された項目から、その個人の特定可能性を算出し、可能性が閾値より大きい場合、何れかの項目の値を非表示とすることが記載されている。
【０００９】
【特許文献１】特開2004-318391号広報
【特許文献２】特開2004-287846号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
特許文献１の技術は、検索結果からの除外対象となる個人特定可能な情報を、予め規則記憶部に登録しておく必要がある。このため、対象となる個人情報データが大量で様々な情報を有する場合や、個人情報を格納するデータベースの更新頻度が高い場合、規則記憶部の構築、維持コストが高くなる。また、特許文献１には、規則記憶部に登録すべき情報を定量的に取捨選択する方法が明確に記載されていない。
【００１１】
また、特許文献２に記載の技術は、指定された項目毎に同一のデータ内容をもつ頻度に基づいて、個人特定可能度を算出することが記載されている。また、特許文献２には、複数の項目を有するデータに対しては、頻度の積により個人特定可能度を取得することが記載されている。しかし、特許文献２に記載の技術では、個人特定可能度を、実際の度合いより低く見積もる可能性がある。具体的には、例えば、各々の項目値単体での頻度は大きいが、それらの項目値の組合せとなると、頻度が小さくなる場合もある。このような場合、特許文献２に記載の技術は、本来非表示にすべき情報も表示する可能性が有る。
【００１２】
本発明はこのような事情に鑑みてなされたもので、運用コストを低減しつつ、適切に個人情報を保護することを目的とする。
【課題を解決するための手段】
【００１３】
本発明は上記の目的を達成するためになされたもので、複数の項目毎の項目値を含む個人情報を複数記憶する個人情報記憶手段と、前記複数の個人情報の各々に対し、前記複数の項目のうち１つ以上を選択し、前記選択した項目の項目値と同じ項目値を含む個人情報の件数をカウントするカウント手段と、前記件数が閾値以上であるか否か判定する判定手段と、前記判定により、前記件数が閾値以上であると判定された場合に選択された項目の項目値のみを出力装置に出力する結果出力手段と、を有することを特徴とする。
【００１４】
また、本発明は、前記項目毎に、異なる項目値を包括する複数の条件を前記出力装置にさらに出力する条件出力手段、をさらに有し、前記カウント手段が、前記複数の個人情報の各々に対し、前記複数の項目のうち１つ以上を選択し、前記出力した条件のうち入力された条件に従い、前記選択した項目の項目値と同じ項目値に包括される項目値の組み合わせを含む個人情報の件数をカウントし、前記結果出力手段が、前記件数が閾値以上であると判定された場合に選択された項目の項目値を、前記入力された条件で前記出力装置に出力することを特徴とする。
【発明の効果】
【００１５】
本発明の技術によれば、運用コストを低減しつつ、適切に個人情報を保護することが可能となる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の一実施形態を、図面を参照して詳細に説明する。
【００１７】
なお、以下で説明する本実施形態は、主に電子的な形態の個人情報を保護する技術である。本実施形態における「個人情報」とは、個人に関する情報であって、氏名、生年月日、その他の情報等により特定の個人を識別することができるものを示す。なお、この個人情報は、他の情報と容易に照合することができ、それにより特定の個人を識別することができることとなるものを含む。この「個人に関する情報」は、氏名、性別、生年月日等個人を識別する情報に限られず、例えば、個人の身体、財産、職種、肩書き等の属性の各々に対して事実、判断、評価等を表す全ての情報である。これらの情報は、評価情報、公刊物等によって公にされている情報や、映像（画像）、音声による情報も含み、暗号化されているか否かを問わない。また本実施形態において、情報主体とは、個人情報によって識別される特定の個人を意味する。さらに本実施形態において、個人情報の匿名化とは、情報主体を識別できないように当該個人情報を変換する処理をいう。
【００１８】
図１を参照し、本実施形態の技術を実現する装置の構成例を説明する。
【００１９】
図１において、計算機１００は、例えばＰＣ（Personal Computer）やサーバ、ワークステーション等の任意の情報処理装置である。計算機１００は、ＣＰＵ（Central Processing Unit）１０１、メモリ１０２、ストレージ１０３、入力装置１０４、出力装置１０５、通信装置１０６等を有する。ＣＰＵ１０１、メモリ１０２、ストレージ１０３、入力装置１０４、出力装置１０５、通信装置１０６等はバス１０７により互いに接続されている。
【００２０】
メモリ１０２は、出力情報１２１を有する。出力情報１２１は、後述する個人情報の匿名化した結果を表示するための情報を含む。この情報の詳細は後述する。
【００２１】
ストレージ１０３は、例えば、ＣＤ-Ｒ（Compact Disc）やＤＶＤ-ＲＡＭ（Digital Versatile Disk-Random Access Memory）、シリコンディスク等の記憶メディア及び当該記憶メディアの駆動装置、ＨＤＤ（Hard Disk Drive）等である。ストレージ１０３は、個人情報テーブル１３１、表示項目情報１３２、最小同値件数情報１３３、解析結果情報１３４、プログラム１４１等を記憶する。個人情報テーブル１３１は、複数の情報主体の個人情報を格納する。本実施形態では、各個人情報は、複数の項目毎の項目値から成る。表示項目情報１３２は、個人情報の項目のうち表示するものを格納する。最小同値件数情報１３３は、閾値を格納する。解析結果情報１３４は、後述する動作により取得する解析結果を格納する。なお、これらの情報の詳細は後述する。プログラム１４１は、後述する機能を実現するためのものである。
【００２２】
入力装置１０４は、例えば、キーボード、マウス、スキャナ、マイク等である。出力装置１０５は、ディスプレイ、プリンタ、スピーカ等である。通信装置１０６は、例えば、ＬＡＮ（Local Area Network）ボード等であり、通信ネットワーク（図示略）と接続する。
【００２３】
ＣＰＵ１０１は、メモリ１０２にロードしたプログラム１４１を実行することにより、解析対象取得部１１１、個人情報解析部１１２、出力制御部１１５等を実現する。
【００２４】
解析対象取得部１１１は、解析対象の項目、閾値等のパラメータを取得する。個人情報解析部１１２は、探索ツリー管理部１１３、安全性判定部１１４を有する。個人情報解析部１１２内の探索ツリー管理部１１３、安全性判定部１１４は、表示項目情報１３２内の表示すべき項目のうち１つ以上を選択し、個人情報テーブル１３１に格納された個人情報を参照し、選択した項目の項目値が同じとなる個人情報の件数を取得し、取得した件数と閾値とを比較することにより、表示すべき項目の項目値のうち全てを表示可能か否か判定し、この判定結果を解析結果情報１３４に出力する。出力制御部１１５は、解析結果情報１３４等を参照して出力情報１２１を生成し、表示可能とされた項目値のみを出力する。
【００２５】
次に、上述したテーブル等の詳細な例を説明する。
【００２６】
まず、図２を参照し、個人情報テーブル１３１の一例を説明する。
【００２７】
図２において、個人情報テーブル１３１は、複数のレコードを有する。１つのレコードが１人の情報主体の個人情報を表す。各レコードは項目２０１、項目２０２、項目２０３、項目２０４、項目２０５、項目２０６各々の項目値からなる。
【００２８】
項目２０１は、情報主体の氏名である。項目２０２は、同レコードの情報主体の性別である。項目２０３は、同レコードの情報主体の年齢である。項目２０４は、同レコードの情報主体の郵便番号である。項目２０５は、同レコードの情報主体の検査結果である。項目２０６は、同レコードの情報主体の初診日である。
【００２９】
なお、個人情報の項目は図２に示すものに限られるわけではなく、任意でよい。また、各情報主体の項目数も図２に示すものに限られるわけではなく、任意でよい。
【００３０】
また、上述の個人情報テーブル１３１内の情報は、予め格納されているものとする。
【００３１】
次に、図３を参照し、表示項目情報１３２の一例を説明する。
【００３２】
図３において、表示項目情報１３２は、項目３０１、項目３０２、項目３０３等を含む。
【００３３】
この表示項目情報１３２内の項目は、個人情報テーブル１３１内の項目２０１〜２０６のうち、開示したいものである。
【００３４】
なお、本実施形態の計算機１００は、情報主体が特定可能な情報を匿名化するものである。従って、表示項目情報１３２内に、情報主体を特定可能な項目が含まれる場合、計算機１００の機能は特に効果的である。ここで、情報主体を特定可能な項目とは、例えば氏名等直接的に情報主体を特定可能なものに限られるわけではない。例えば、性別、年齢、郵便番号（住所）等でも、一般的な名簿データ等を参照する等により本人を特定できる可能性がある。
【００３５】
なお、表示項目情報１３２内の項目は任意でよく、例えば、検査結果あるいは初診日等を含めても良い。表示項目情報１３２内の項目は、システムの運用上想定される個人特定の脅威に応じて、システム利用者が判断する。判断基準としては、例えば、匿名化して開示する個人情報を参照しうるデータ利用者が誰なのか、またこれらのデータ利用者自身が知っている事実と検査結果や初診日等を照らし合わせることで、匿名可個人情報が本人を特定可能となることがプライバシ保護上問題になるか等が考えられる。
【００３６】
次に、図４を参照し、最小同値件数情報１３３の一例を説明する。
【００３７】
図４において、最小同値件数情報１３３は、最小同値件数４０１等を有する。この最小同値件数４０１は、同じ項目値のレコード数が最小同値件数４０１以上であれば、開示しても情報主体を特定することが困難であると見なせる値である。図４の例の場合、最小同値件数４０１「１００」であるので、項目値が等しいレコードが「１００」件以上であれば、開示しても安全と見なすことを示す。即ち、本実施形態では、許容可能な識別確率を「１/Ｋ（最小同値件数）」以下とする。
【００３８】
なお、最小同値件数の値は特に限定されるものではなく、任意でよい。
【００３９】
次に、図５を参照し、解析結果情報１３４の一例を説明する。
【００４０】
ここで、上述のように、計算機１００は、表示項目情報１３２内の表示すべき項目のうち１つ以上を選択し、個人情報テーブル１３１に格納された個人情報を参照し、選択した項目の項目値が同じとなる個人情報の件数を取得し、取得した件数と最小同値件数とを比較することによりその項目値を表示可能か否か判定するものである。まず、表示可能な項目値の組合せを探索する模式図を、図５（ａ）を参照して説明する。
【００４１】
図５（ａ）において、探索ツリー５００は、複数のノードを有する。各ノードは、親子関係により項目値の組み合わせを示す。例えば、ノード５１１は「性別＝男性」という項目値の組合せを示す。また、例えば、ノード５１２は、「性別＝男性」及び「年齢＝３３」という項目値の組合せを示す。また、例えば、ノード５１３は、「性別＝男性」及び「郵便番号＝２１５−００１３」という項目値の組合せを示す。また、ノード５１４は、「性別＝男性」、「年齢＝３３」及び「郵便番号＝２１５−００１３」という項目値の組合せを示す。また、ルートノード５２１は、探索ツリー５００の管理用ノードである。
【００４２】
以下の説明では、あるノードとルートノードとの間に存在するアークの個数を、そのノードの深さという。ただし、ルートノードの深さは「ゼロ」とする。また、あるノード（以下、対象ノードという）とルートノードとのパス上に存在する１つ以上のノードの各々を、その対象ノードの先祖ノードという。具体的には、例えば、図５（ａ）の探索ツリー５００の場合、ノード５１２が対象ノードである場合、先祖ノードは、ノード５１１である。また、対象ノードの先祖ノードのうち、この対象ノードの上で隣接するもの、即ち、対象ノードの深さが「Ｚ」である場合、深さが「Ｚ-１」であるものを、その対象ノードの親ノードという。探索ツリーにおいて、ルートノードを除く全てのノードの各々の親ノードの個数は「１」である。具体的には、例えば、図５（ａ）の探索ツリー５００の場合、ノード５１２が対象ノードである場合、親ノードは、ノード５１１である。また、対象ノードの下で隣接するものを、この対象ノードの子ノードという。探索ツリーにおいて、全てのノードの各々の子ノードの個数は「ゼロ以上」である。具体的には、例えば、図５（ａ）の探索ツリー５００の場合、ノード５１２が対象ノードである場合、子ノードは、ノード５１４である。また、対象ノードの下のものを、この対象ノードの子孫ノードという。探索ツリーにおいて、全てのノードの各々の子孫ノードの個数は「ゼロ以上」である。具体的には、例えば、図５（ａ）の探索ツリー５００の場合、ノード５１１が対象ノードである場合、子孫ノードは、ノード５１２、ノード５１３、ノード５１４等である。また、対象ノードと共通の親ノードを持つ他のノードがある場合、このノードを兄弟ノードという。例えば、図５（ａ）の探索ツリー５００の場合、ノード５１２が対象ノードである場合、兄弟ノードは、ノード５１３等である。また、子ノードを持たないノードを、リーフノードという。
【００４３】
また、以下の説明では、ノードが表す項目値の組合せを有するレコード件数を算出する処理のことをノードの評価処理という。また、ノードの評価処理により算出されたレコード数が最小同値件数以上のノードのことを「安全ノード」、最小同値件数未満のノードのことを「危険ノード」という。また、ノードの評価処理により算出されたレコード数が最小同値件数以上となるときの項目値の組合せを「安全項目値組み」、最小同値件数未満となるときの項目値の組合せを「危険項目値組み」という。
【００４４】
次に、図５（ｂ-１）、（ｂ-２）、（ｃ）を参照し、解析結果情報１３４の一例を説明する。
【００４５】
解析結果情報１３４は、複数のテーブルを有する。このテーブルは、表示項目情報１３２に格納されている項目の組合せの数ごとに別のテーブルとするものと、この項目の組合せの項目値の各々のうち、安全項目値組みとなった場合の情報を格納するテーブルとを有する。ここでは、各テーブルを区別して説明するために、例えば「解析結果情報テーブル１３４-ａ１」「解析結果情報テーブル１３４-ｂ」等というように、符号を付与して説明する。
【００４６】
まず、図５の（ｂ-１）、（ｂ-２）を参照し、表示項目情報１３２に格納されている項目の組合せの数ごとに別のテーブルとしたものの一例を説明する。
【００４７】
図５（ｂ-１）において、解析結果情報テーブル１３４-ａ１は、項目の組合せの数が「１」であるテーブルの例である。解析結果情報テーブル１３４-ａ１の各レコードは、フィールド５３１、フィールド５３２、フィールド５３３等を有する。フィールド５３２は、ノードの項目名である。フィールド５３３は、対応するフィールド５３２の項目名の項目値である。フィールド５３１は、対応するフィールド５３２、フィールド５３３の各々に示すノードの項目名及びノードの項目値であるレコードの件数を示す。
【００４８】
図５（ｂ-２）において、解析結果情報テーブル１３４-ａ２は、項目の組合せの数が「２」であるテーブルの例である。解析結果情報テーブル１３４-ａ２の各レコードは、フィールド５４１、フィールド５４２、フィールド５４３、フィールド５４４、フィールド５４５等を有する。フィールド５４２は、ノードの項目名である。フィールド５４３は、対応するフィールド５４２の項目名の項目値である。フィールド５４４は、ノードの項目名である。フィールド５４５は、対応するフィールド５４４の項目名の項目値である。フィールド５４１は、対応するフィールド５４２、フィールド５４３、フィールド５４４、フィールド５４５等の各々に示すノードの項目名及びノードの項目値であるレコードの件数を示す。
【００４９】
なお、図５では、解析結果情報テーブル１３４-ａ１、解析結果情報テーブル１３４-ａ２の一例のみ示しているが、解析結果情報１３４は、上述の図５（ａ）に一例を示すような探索ツリーの深さと同じだけ、図５（ｂ-１）、（ｂ-２）に一例を示すようなテーブルを有する。以下、これらのテーブルを総称して説明する場合、解析結果情報テーブル１３４-ａという。
【００５０】
次に、図５（ｃ）を参照し、項目の組合せの項目値の各々のうち、安全項目値組みとなった場合の情報を格納するテーブルの一例を説明する。
【００５１】
図５（ｃ）において、解析結果情報テーブル１３４-ｂの各レコードは、フィールド５５１、フィールド５５２、フィールド５５３等を有する。フィールド５５１、フィールド５５２は、上述の解析結果情報テーブル１３４-ａに格納されている項目及び項目値である。フィールド５５３は、後述する処理により安全ノードを検出した場合のループ番号である。
【００５２】
なお、図５（ｂ-１）、（ｂ-２）、（ｃ）の例では、フィールド５３２、フィールド５４２、フィールド５４４、フィールド５５１等の項目名をそのまま示しているが、実際のプログラム上では、各項目名をゼロ以上の連続する数値で示すものとする。具体的には、例えば、項目名「性別」を「０」、項目名「年齢」を「１」、項目名「郵便番号」を「２」等で示すものとする。また、図５（ｂ-１）、（ｂ-２）、（ｃ）の例では、フィールド５３３、フィールド５４３、フィールド５４５、フィールド５５２等の項目値をそのまま示しているが、実際のプログラム上では、各項目名の項目値の各々を、ゼロ以上の連続する数値で示すものとする。具体的には、例えば、項目名「性別」の項目値「男性」及び「女性」の各々を、「０」、「１」で示す。また、例えば、項目名「年齢」の項目値「３３」、「２７」、「２５」、「３８」等の各々を、「０」、「１」、「２」、「３」等で示す。また、例えば、項目名「郵便番号」の項目値「２１５-００１３」、「２４４-０８１７」、「２４４-０８１８」等の各々を、「０」、「１」、「２」等で示す。
【００５３】
なお、以下では、説明の便宜上、項目及び項目値の各々を、上述のように整数で示したものではなく、元の項目及び項目値で説明する場合もある。しかし、この場合でも、上述のように、計算機１００の実行するプログラムとして処理する場合、項目及び項目値の各々は整数で扱われる。以下、項目を示す整数を項目番号、項目値を示す整数を項目値番号ともいう。
【００５４】
次に、図６を参照し、出力情報１２１の一例を説明する。
【００５５】
出力情報１２１は、複数のレコードを含む。各レコードは、匿名化前同値件数６０１、匿名化後同値件数６０２、項目６０３〜６０５の項目値を含む。ここで、匿名化前同値件数６０１とは、同じレコードに含まれる項目値と同じ項目値を有する、個人情報テーブル１３１のレコードの件数である。また、匿名化後同値件数６０２とは、同じレコードに含まれる項目値のうち１つ以上の項目値を匿名化した場合に、残りの項目値と同じ項目値を有する、個人情報テーブル１３１のレコードの件数である。なお、図６の例では、項目６０３〜６０５の項目値「-」は、項目値が匿名であることを示す。具体的には、例えば、図６の例の場合、レコード６１１は、項目６０３が「男性」、項目６０４が「３３」であり、かつ、項目６０５が「-（匿名）」であるレコードが、個人情報テーブル１３１に匿名化前同値件数６０１「５０」件あることを示す。また、図６の例の場合、レコード６１１は、項目６０５の項目値を除き、項目６０３、項目６０４各々の項目値が「男性」、「３３」であるレコードが、個人情報テーブル１３１に匿名化前同値件数６０１「２４００」件あることを示す。
【００５６】
次に、図７を参照し、計算機１００の動作例を説明する。
【００５７】
まず、解析対象取得部１１１は、表示項目情報１３２、最小同値件数情報１３３を取得する（Ｓ７０１）。ここで取得する表示項目情報１３２、最小同値件数情報１３３は、予めストレージ１０３に格納されていてもよく、また、入力装置１０４、通信装置１０６等を介して入力されたものでもよい。
【００５８】
次に、個人情報解析部１１２は、個人情報テーブル１３１を参照し、表示項目情報１３２に指定された項目からなるレコードデータをメモリ１０２に読み込む（Ｓ７０２）。具体的には、例えば、個人情報解析部１１２は、個人情報テーブル１３１の項目２０１〜２０６から、表示項目情報１３２内の項目３０１〜３０３の各々と一致するものを選択し、各レコードのうち選択した項目の項目値を読出し、メモリ１０２に読み込む。図２、図３に一例を示す個人情報テーブル１３１、表示項目情報１３２の例の場合、表示項目情報１３２は項目３０１「性別」、項目３０２「年齢」、項目３０３「郵便番号」を有する。従って、個人情報解析部１１２は、個人情報テーブル１３１から、項目２０２「性別」、項目２０３「年齢」、項目２０４「郵便番号」を選択し、個人情報テーブル１３１内の各レコードのうち選択した項目２０２、項目２０３、項目２０４の項目値を抽出して、メモリ１０２に格納する。
【００５９】
なお、上述のＳ７０２の処理では、上述のように、項目及び項目値の各々を整数に変換してメモリ１０２に格納する。
【００６０】
以下、Ｓ７０２の処理によりメモリ１０２に格納されるテーブルを特に区別する場合、「個人情報テーブル１３１´」という。個人情報テーブル１３１´は、作業用のテーブルである。
【００６１】
図２、図３に一例を示す個人情報テーブル１３１、表示項目情報１３２の例の場合に、Ｓ７０２の処理により、メモリ１０２に格納される個人情報テーブル１３１´の例を、図８に示す。図８において、個人情報テーブル１３１´は、複数のレコードを有する。各レコードは、項目８０１、項目８０２、項目８０３の項目値を有する。各レコードの項目８０１、項目８０２、項目８０３の項目値は、上述の個人情報テーブル１３１の各レコードの項目２０２、項目２０３、項目２０４の項目値と同じである。
【００６２】
以下、個人情報テーブル１３１´における「ｉ」番目のレコードの「j」番目の項目値を「Ｄ[ｉ][ｊ]」と示す。ただし、「ｉ」は「ゼロ」以上「Ｎ-１」以下の整数、「j」は「ゼロ」以上「Ｍ-１」以下の整数である。ここで、「Ｎ」は、個人情報テーブル１３１´のレコード件数である。また、「Ｍ」は、個人情報テーブル１３１´（又は表示項目情報１３２）の項目数である。
【００６３】
図７において、探索ツリー管理部１１３は、解析結果情報１３４を初期化する（Ｓ７０３）。そのために、探索ツリー管理部１１３は、解析結果情報１３４の各テーブルのテーブル構造を初期化する。具体的には、例えば、探索ツリー管理部１１３は、解析結果情報テーブル１３４-ａを「Ｍ」個構築し、これらのテーブルの各レコードを空にしておく。これらのテーブルが、上述の解析結果情報テーブル１３４-ａ１、解析結果情報テーブル１３４-ａ２等となる
なお、探索ツリー管理部１１３は、Ｓ７０３以降、探索ツリーのノードを順に評価する。この評価処理の詳細は以下で説明するが、評価の規則を先に示す。
【００６４】
規則（１）ルートノードを基点とする。
【００６５】
規則（２）あるノードの評価が終了した時点で、処理対象となる子ノードと兄弟ノードとの両方が存在する場合、子ノードから先に評価する。
【００６６】
ただし、複数の子ノードが存在する場合、評価優先度は以下の規則に従う。
【００６７】
規則（２-１）子ノードの項目名を示す整数（項目番号）が小さいほうを先に評価する。
【００６８】
規則（２-２）同じ項目名の子ノードが２個以上存在する場合、それらの子ノードの項目値の各々を示す整数（項目値番号）が小さいほうを先に評価する。
【００６９】
また、複数の兄弟ノードが存在する場合、評価優先度は以下の規則に従う。
【００７０】
規則（２-３）兄弟ノードの項目名を示す整数（項目番号）が小さいほうを先に評価する。
【００７１】
規則（２-４）同じ項目名の兄弟ノードが２個以上存在する場合、それらの兄弟ノードの項目値の各々を示す整数（項目値番号）が小さいほうを先に評価する。
【００７２】
上述のＳ７０３の処理の後、探索ツリー管理部１１３は、項目番号を表すループ変数「ｊ」を初期化する（Ｓ７０４）。具体的には、探索ツリー管理部１１３は、「ｊ＝０」とする。
【００７３】
安全性判定部１１４は、「ｊ＜Ｍ」であるか否か判定する（Ｓ７０５）。この「Ｍ」は、上述のように、個人情報テーブル１３１´の項目数である。
【００７４】
Ｓ７０５の判定の結果、「ｊ＜Ｍ」である場合、安全性判定部１１４は、カレントノードを設定する（Ｓ７０６）。具体的には、例えば、安全性判定部１１４は、項目番号を示す変数「ｊ」、この項目の項目値番号「０」を、カレントノードを示す変数「Ｐ」に設定する。ここで、例えばＣ言語の場合、変数「Ｐ」は構造体で定義され、「Ｐ．ＦＩＥＬＤ＝ｊ」、「Ｐ．ＶＡＬＵＥ＝０」とする。この「Ｐ．ＦＩＥＬＤ」には項目番号が格納される。また、「Ｐ．ＶＡＬＵＥ」には項目値番号が格納される。具体的には、例えば、上述のように「ｊ＝０」、即ち、項目「性別」である場合、この項目名の項目値は「男性」及び「女性」がある。従って、項目値が「男性」である場合「Ｐ．ＶＡＬＵＥ＝０」、項目値が「女性」である場合「Ｐ．ＶＡＬＵＥ＝１」が格納される。
【００７５】
次に、安全性判定部１１４は、カレントノードの項目値に対し評価済みか否か判定する（Ｓ７０７）。具体的には、例えば、安全性判定部１１４は、解析結果情報１３４のうち、安全項目値組みとなった場合の情報を格納するテーブル、即ち、上述の解析結果情報テーブル１３４-ｂを参照し、フィールド５５３の値が変数「ｊ」未満であり、かつ、フィールド５５２の値が変数「Ｐ．ＶＡＬＵＥ」の値と一致するものがあるか否か判定する。
【００７６】
Ｓ７０７の判定の結果、カレントノードの項目値が処理済である場合、安全性判定部１１４は、後述するＳ７１０の処理に移行する。
【００７７】
Ｓ７０７の判定の結果、カレントノードの項目値が処理済でない場合、安全性判定部１１４は、カレントノードを評価する（Ｓ７０８）。この詳細な説明は後述する。
【００７８】
次に、安全性判定部１１４は、カレントノードの子孫及び兄弟ノードを評価する（Ｓ７０９）。ここで、安全性判定部１１４は、兄弟ノードの判定において、探索ツリーの深さ「１」の項目名が整数「ｊ」で示されるノードを評価対象とし、また、これらの兄弟ノードの各々の子孫ノードも全て評価する。この詳細な説明は後述する。
【００７９】
次に、安全性判定部１１４は、「ｊ＝ｊ＋１」として（Ｓ７１０）、上述のＳ７０５以降の処理を再度行なう。
【００８０】
一方、Ｓ７０５の判定の結果、「ｊ＜Ｍ」でない場合、出力制御部１１５は、メモリ１０２上の解析結果情報１３４をストレージ１０３に格納する（Ｓ７１１）。具体的には、解析結果情報テーブル１３４-ａをストレージ１０３に格納する。次に、出力制御部１１５は、解析結果情報１３４、個人情報テーブル１３１等から出力情報１２１を作成し、出力装置１０５、通信装置１０６等に出力する（Ｓ７１２）。この詳細な説明は後述する。
【００８１】
ここで、出力装置１０５等のディスプレイに、出力情報１２１内の情報を表示する画面の例を図９に示す。図９において、画面９０１は、図６に一例を示す出力情報１２１の場合に表示する例である。
【００８２】
図９の画面９０１に一例を示すように、上記処理により、識別確率が「１/Ｋ」より大きくなる項目値は排除され、開示しても差し支えないと判定された項目値のみが表示等される。
【００８３】
なお、Ｓ７１２の出力処理を行なうタイミングは任意であり、Ｓ７０１〜Ｓ７１１の処理の後すぐに行なわなくても良い。例えば、所定時間毎や、入力装置１０４から出力指示が入力された場合等に出力処理しても良い。
【００８４】
次に、図１０を参照し、上述のＳ７０８の、カレントノードを評価する動作例を詳細に説明する。
【００８５】
まず、安全性判定部１１４は、カレントノードを示すループ変数「ｉ」、及び、処理対象ノードの項目名及びその処理対象ノードの項目値であるレコードの件数を示す変数「ｎｒ」を初期化する（Ｓ１００１）。具体的には、安全性判定部１１４は「ｉ＝０」、「ｎｒ＝０」とする。次に、安全性判定部１１４は、「ｉ＜Ｎ」であるか否か判定する（Ｓ１００２）。この「Ｎ」は、上述のように、個人情報テーブル１３１´のレコード件数である。
【００８６】
Ｓ１００２の判定の結果、「ｉ＜Ｎ」である場合、安全性判定部１１４は、個人情報テーブル１３１´の「ｉ」番目のレコードに、評価対象の項目及び項目値が含まれているか否か判定する（Ｓ１００３）。そのために、安全性判定部１１４は、例えば、個人情報テーブル１３１´の「ｉ」番目のレコードの、項目番号「Ｐ．ＦＩＥＬＤ」の項目の項目値、即ち、「Ｄ［ｉ］［Ｐ．ＦＩＥＬＤ］」の値が、「Ｐ．ＶＡＬＵＥ」と一致するか否か判定する。
【００８７】
上述のＳ１００３の判定の結果、処理対象の項目及び項目値が含まれていない場合、安全性判定部１１４は、後述するＳ１００５以降の処理を行なう。
【００８８】
上述のＳ１００３の判定の結果、処理対象の項目及び項目値が含まれている場合、安全性判定部１１４は、「ｎｒ＝ｎｒ＋１」とし（Ｓ１００４）、さらに、「ｉ＝ｉ＋１」とする（Ｓ１００５）。次に、安全性判定部１１４は、上述のＳ１００２以降の処理を再度行なう。
【００８９】
一方、上述のＳ１００２の判定の結果、「ｉ＜Ｎ」でない場合、安全性判定部１１４は、このＳ７０８の処理を終了し、Ｓ７０９以降の処理を行なう。
【００９０】
次に、図１１を参照し、上述のＳ７０９の、カレントノードの子孫及び兄弟ノードを評価する動作例の詳細を説明する。
【００９１】
安全性判定部１１４は、処理対象のノードの祖先ノード集合を示す変数「ＳＴ」を初期化する（Ｓ１１０１）。ここで、この変数「ＳＴ」はスタック変数であり、一般的にFILO（First In Last Out）バッファと呼ばれる領域に格納される。本実施形態では、変数「ＳＴ」の各要素は、変数「Ｐ」の値が格納される。安全性判定部１１４は、変数「ＳＴ」に格納されている全ての要素を取り出して、スタックを空にする。
【００９２】
次に、安全性判定部１１４は、「ｎｒ≧Ｋ」であるか否か判定する（Ｓ１１０２）。この「ｎｒ」は、上述のＳ７０８の処理で取得したカレントノードの値である。
【００９３】
Ｓ１１０２の判定の結果、「ｎｒ≧Ｋ」でない場合、安全性判定部１１４は、後述するＳ１１１０以降の処理を行なう。
【００９４】
Ｓ１１０２の判定の結果、「ｎｒ≧Ｋ」である場合、安全性判定部１１４は、今回の処理で判定した項目及び項目値と、この項目及び項目値のレコードの件数とを、安全項目値組みの候補として一時的に保存する（Ｓ１１０３）。そのために、安全性判定部１１４は、例えば、変数「ＳＴ」、変数「ｎｒ」の各々の値を、変数「ＳＴ´」、変数「ｎｒ´」の各々の値とする。
【００９５】
次に、安全性判定部１１４は、カレントノードに子ノードが存在するか否か判定する（Ｓ１１０４）。そのために、安全性判定部１１４は、「Ｐ．ＦＩＥＬＤ＜Ｍ-１」であるか否か判定する。この判定の結果、「Ｐ．ＦＩＥＬＤ＜Ｍ-１」でない場合、安全性判定部１１４は、カレントノードに子ノードが存在すると判定する。また、この判定の結果、「Ｐ．ＦＩＥＬＤ＜Ｍ-１」でない場合、安全性判定部１１４は、カレントノードに子ノードが存在しないと判定する。
【００９６】
Ｓ１１０４の判定の結果、カレントノードに子ノードが存在しない場合、安全性判定部１１４は、後述するＳ１１１０以降の処理を行なう。
【００９７】
Ｓ１１０４の判定の結果、カレントノードに子ノードが存在する場合、安全性判定部１１４は、変数「ＳＴ」に、変数「Ｐ」の値を追加する（Ｓ１１０５）。さらに、安全性判定部１１４は、カレントノードの子ノードを、新たなカレントノードとする（Ｓ１１０６）。そのために、安全性判定部１１４は、「Ｐ．ＦＩＥＬＤ=Ｐ．ＦＩＥＬＤ＋１」、「Ｐ．ＶＡＬＵＥ=０」とする。
【００９８】
次に、安全性判定部１１４は、「ｎｒ＝０」とし（Ｓ１１０７）、上述のＳ１１０６の処理で設定した新たなカレントノードの項目値に対し評価済みか否か判定する（Ｓ１１０８）。この処理は、上述のＳ７０７と同じであるので省略する。
【００９９】
Ｓ１１０８の判定の結果、カレントノードの項目値に対し評価済みである場合、安全性判定部１１４は、上述のＳ１１０２以降の処理を再度行なう。
【０１００】
Ｓ１１０８の判定の結果、カレントノードの項目値に対し評価済みでない場合、安全性判定部１１４は、カレントノードの項目値を評価する（Ｓ１１０９）。この評価処理は、上述のＳ１００１〜Ｓ１１０５と、Ｓ１００３を除き同じである。このＳ１１０９の処理では、上述のＳ１００３の代わりに、安全性判定部１１４は、個人情報テーブル１３１´の「ｉ」番目のレコードの項目及び項目値に、変数「Ｐ」及び変数「ＳＴ」に格納されている項目及び項目値の各々が全て含まれているか否か判定する。より具体的に説明するために、変数「ＳＴ」の「ｔ」番目の要素を変数「ＳＴ[ｔ]」で示し、さらに、この要素の項目の項目番号を「ＳＴ[ｔ]．ＦＩＥＬＤ」、この要素の項目値の項目値番号を「ＳＴ[ｔ]．ＶＡＬＵＥ」で示す。だたし、この「ｔ」は、ゼロ以上、変数「ＳＴ」に格納されている要素数未満の値である。安全性判定部１１４は、上述のように１つずつインクリメントする「ｉ」の各々に対し、「Ｄ[ｉ][Ｐ．ＦＩＥＬＤ]=Ｐ．ＶＡＬＵＥ」であるか否か判定する。さらに、安全性判定部１１４は、１つずつインクリメントする「ｉ」及び「ｔ」の各々に対し、「Ｄ[ｉ][ＳＴ[ｔ]．ＦＩＥＬＤ]=ＳＴ[ｔ]．ＶＡＬＵＥ」であるか否か判定する。この判定の結果、個人情報テーブル１３１´の「ｉ」番目のレコードが、「Ｄ[ｉ][Ｐ．ＦＩＥＬＤ]=Ｐ．ＶＡＬＵＥ」であり、かつ、「Ｄ[ｉ][ＳＴ[ｔ]．ＦＩＥＬＤ]=ＳＴ[ｔ]．ＶＡＬＵＥ」である場合、安全性判定部１１４は、個人情報テーブル１３１´の「ｉ」番目のレコードに、評価対象の項目及び項目値が含まれていると判定する。
【０１０１】
上述のＳ１１０９の処理の後、安全性判定部１１４は、上述のＳ１１０２以降の処理を再度行なう。
【０１０２】
一方、上述のＳ１１０２の判定の結果、「ｎｒ≧Ｋ」でない場合、および、上述のＳ１１０４の判定の結果、子ノードが存在しない場合、安全性判定部１１４は、上述のＳ１１０３の処理で一時保存した安全項目値組みの候補を、解析結果情報テーブル１３４-ａ、解析結果情報テーブル１３４-ｂに格納する（Ｓ１１１０）。そのために、変数「ＳＴ´」の有する要素数が「ｘ」個である場合、安全性判定部１１４は、解析結果情報テーブル１３４-ａのうち「ｘ」番目のものへ新たなレコードを追加し、そのレコードの各フィールドの値として、変数「ＳＴ´」の有する各要素の項目及び項目値と、変数「ｎｒ´」の値とを格納する。さらに、安全性判定部１１４は、解析結果情報テーブル１３４-ｂに「ｘ」個の新たなレコードを追加し、追加したレコードの各々に、項目及び項目値と、変数「ｉ」とを格納する。なお、このとき、解析結果情報テーブル１３４-ｂに、既に、同じ項目及び項目値と変数「ｉ」とを有するレコードが含まれている場合、安全性判定部１１４は、その値を格納しない。
【０１０３】
具体的には、例えば、変数「ＳＴ´」の要素として、｛ＳＴ´[０]．ＦＩＥＬＤ=性別、ＳＴ´[０]．ＶＡＬＵＥ=男性｝と、｛ＳＴ´[１]．ＦＩＥＬＤ=年齢、ＳＴ´[１]．ＶＡＬＵＥ=３３｝とが格納されており、「ｎｒ´＝２４００」、かつ、「ｉ＝１」である場合の例を説明する。この場合、安全性判定部１１４は、解析結果情報テーブル１３４-ａ２に新たなレコードを追加し、追加したレコードのフィールド５４１、フィールド５４２、フィールド５４３、フィールド５４４、フィールド５４５の各々の値として、「２４００」、「性別」、「男性」、「年齢」、「３３」を格納する。さらに、安全性判定部１１４は、解析結果情報テーブル１３４-ｂに２つのレコードを追加し、追加したレコードのうち一方のフィールド５５１、フィールド５５２、フィールド５５３の各々の値として、「性別」、「男性」、「１」を格納し、さらに、他方のレコードのフィールド５５１、フィールド５５２、フィールド５５３の各々の値として、「年齢」、「３３」、「１」を格納する。
【０１０４】
次に、安全性判定部１１４は、整数「ｊ」で示される項目の、深さ「１」の全ノード、及び、これらのノードの子孫ノードの評価が終了しているか否か判定する（Ｓ１１１１）。そのために、安全性判定部１１４は、項目値番号「Ｐ．ＶＡＬＵＥ」の値が、項目番号「Ｐ．ＦＩＥＬＤ」の項目値が取り得る最大値に一致するか否か判定する。されに、安全性判定部１１４は、項目値番号「Ｐ．ＶＡＬＵＥ」の値が、変数「ＳＴ」に含まれているか否か判定する。これらの判定の結果、「Ｐ．ＶＡＬＵＥ」の値が「Ｐ．ＦＩＥＬＤ」の項目の項目値が取り得る最大値に一致し、かつ、「Ｐ．ＶＡＬＵＥ」の値が変数「ＳＴ」に含まれていない場合、安全性判定部１１４は、深さ「１」の全ノード、及び、これらのノードの子孫ノードの評価が終了していると判定する。
【０１０５】
具体的には、例えば、変数「ＳＴ」の要素として、｛ＳＴ[０]．ＦＩＥＬＤ=性別、ＳＴ[０]．ＶＡＬＵＥ=男性｝と、｛ＳＴ[１]．ＦＩＥＬＤ=年齢、ＳＴ[１]．ＶＡＬＵＥ=３３｝とが格納されており、「Ｐ．ＦＩＥＬＤ=３（郵便番号）」、「Ｐ．ＶＡＬＵＥ=０（２１５−００１３）」である場合の例を説明する。この場合、項目値番号「Ｐ．ＶＡＬＵＥ=０（２１５−００１３）」の値が、項目番号「Ｐ．ＦＩＥＬＤ=３（郵便番号）」の取り得る値の最大値と一致しない。また、項目値番号「Ｐ．ＶＡＬＵＥ=０（２１５−００１３）」の値が、変数「ＳＴ」に含まれていない。従って、安全性判定部１１４は、深さ「１」の全ノード、及び、これらのノードの子孫ノードの評価が終了していないと判定する。
【０１０６】
Ｓ１１１１の判定の結果、深さ「１」の全ノード、及び、これらのノードの子孫ノードの評価が終了している場合、安全性判定部１１４は、Ｓ７０９の処理を終了し、上述のＳ７１０以降の処理を行なう。
【０１０７】
Ｓ１１１１の判定の結果、深さ「１」の全ノード、及び、これらのノードの子孫ノードの評価が終了していない場合、安全性判定部１１４は、カレントノードの兄弟ノードが存在するか否か判定する（Ｓ１１１２）。そのために、例えば、安全性判定部１１４は、項目値番号「Ｐ．ＶＡＬＵＥ」の値が、項目番号「Ｐ．ＦＩＥＬＤ」の項目値が取り得る最大値未満である、及び、「Ｐ．ＦＩＥＬＤ＞Ｍ」である、少なくとも一方であるか否か判定する。この判定の結果、少なくとも一方である場合、安全性判定部１１４は、カレントノードの兄弟ノードが存在すると判定する。ここで、「Ｍ」は、上述のように、個人情報テーブル１３１´の項目数である。
【０１０８】
Ｓ１１１２の判定の結果、カレントノードの兄弟ノードが存在する場合、安全性判定部１１４は、兄弟ノードをカレントノードに設定する（Ｓ１１１３）。そのために、安全性判定部１１４は、項目値番号「Ｐ．ＶＡＬＵＥ」の値が、項目番号「Ｐ．ＦＩＥＬＤ」の項目値が取り得る最大値未満である場合、「Ｐ．ＶＡＬＵＥ=Ｐ．ＶＡＬＵＥ＋１」とする。また、安全性判定部１１４は、項目値番号「Ｐ．ＶＡＬＵＥ」の値が、項目番号「Ｐ．ＦＩＥＬＤ」の項目値が取り得る最大値未満でない場合、「Ｐ．ＦＩＥＬＤ＝Ｐ．ＦＩＥＬＤ＋１」、「Ｐ．ＶＡＬＵＥ＝０」とする。
【０１０９】
さらに、安全性判定部１１４は、変数「ｎｒ＝０」とする（Ｓ１１１４）。次に、安全性判定部１１４は、上述のＳ１１１３の処理で設定した新たなカレントノードの項目値に対し評価済みか否か判定する（Ｓ１１１５）。この処理は、上述のＳ１１０８と同じであるので省略する。
【０１１０】
Ｓ１１１５の判定の結果、カレントノードの項目値に対し評価済みである場合、安全性判定部１１４は、上述のＳ１１１１以降の処理を再度行なう。
【０１１１】
Ｓ１１１５の判定の結果、カレントノードの項目値に対し評価済みでない場合、安全性判定部１１４は、カレントノードの項目値を評価する（Ｓ１１１６）。この評価処理は、上述のＳ１１０９と同じであるので省略する。
【０１１２】
一方、上述のＳ１１１２の判定の結果、カレントノードの兄弟ノードが存在しない場合、安全性判定部１１４は、カレントノードを親ノードに設定する（Ｓ１１１７）。そのために、安全性判定部１１４は、変数「ＳＴ」から、最後に追加した要素を抽出し、抽出した要素を変数「Ｐ」の新たな値とする。安全性判定部１１４は、この処理の後、上述のＳ１１１１以降の処理を再度行なう。
【０１１３】
計算機１００の特徴は、上述のように、秘匿すべき項目値を抽出するのではなく、識別確率が低い項目値組を網羅的に調べて、開示可能な項目値を抽出する点である。識別確率が閾値以上の項目値組合せのみを開示し、出力されなかった項目値組合せを非開示とすれば、個人情報テーブル１３１の全レコードに対して識別確率「１/Ｋ」以下を保証可能となる。また、計算機１００は、組み合わせる項目数が増えるほど項目値の一致するレコード件数が単調減少する性質を利用し、上述のＳ１００２の処理で、評価不要な項目値組合せを判別している。即ち、組合せる項目の数を１つずつ増やす度に識別確率が閾値以上となるか否か判定し、識別確率が閾値以上とならない時点で、項目の数を増やして評価することを停止する。さらに、計算機１００は、上述のＳ７０７、Ｓ１１０８、Ｓ１１１５の処理でカレントノードの項目値に対し評価済みか否か判定し、この判定の結果評価済みである場合、それより深いノードの評価を行なわない。この処理は、安全項目値組みの性質と、探索ツリーの構造とを利用したものである。即ち、ある２つの項目値組み「α」、「β」があり、「β」が有する項目値を全て「α」が有するとき、「α」が安全項目値組みならば「β」も安全項目値組みであるという性質を利用している。また、上述の探索ツリーの評価規則（１）、（２）に従えば、「α」、「β」のような項目値組みは、「α」に該当するノードが先に評価されるという性質を利用している。これにより、計算機１００は、効率よく処理を実行することが可能になる。
【０１１４】
なお、上述のＳ７０７、Ｓ１００８、Ｓ１１１５の処理にて、項目、項目値の値を検索キーとして解析結果情報１３４内のレコードを検索する処理技術は任意でよい。例えば、解析結果情報１３４を直接検索してもよく、また、項目、項目値のうちの一つ以上の項目で新たにインデックスを構築して検索してもよい。また、項目、項目値でノードを特定するハッシュツリーで、探索ツリー相当のレコード検索用ツリーをメモリ１０２上に構築し、このツリーを用いて検索してもよい。
【０１１５】
次に、図１２を参照し、上述のＳ７１１の、結果を出力する動作例の詳細を説明する。
【０１１６】
出力制御部１１５は、ストレージ１０３内から、表示項目情報１３２、最小同値件数情報１３３、解析結果情報テーブル１３４-ａ等を読み出す（Ｓ１２０１）。次に、次に、個人情報解析部１１２は、個人情報テーブル１３１を参照し、表示項目情報１３２に指定された項目からなるレコードデータをメモリ１０２に読み込む（Ｓ１２０２）。この処理は、上述のＳ７０２と同じである。これにより、出力制御部１１５は、メモリ１０２に個人情報テーブル１３１´を格納する。
【０１１７】
さらに、出力制御部１１５は、ループ変数「ｉ」を初期化する（Ｓ１２０３）。具体的には、出力制御部１１５は、「ｉ＝０」とする。
【０１１８】
次に、出力制御部１１５は、「ｉ＜Ｎ」であるか否か判定する（Ｓ１２０４）。ここで、「Ｎ」は、上述のように、個人情報テーブル１３１´のレコード件数である。
【０１１９】
Ｓ１２０４の判定の結果、「ｉ＜Ｎ」である場合、出力制御部１１５は、個人情報テーブル１３１´の「ｉ」番目のレコードに対し、項目値の組合せが一致するレコードの件数をカウントし、「配列Ａ[ｉ]」に格納する（Ｓ１２０５）。出力制御部１１５は、後述する処理で、ここで取得した「配列Ａ[ｉ]」をメモリ１０２の出力用レコードの匿名化前同値件数６０１の値として使用する。
【０１２０】
次に、出力制御部１１５は、「ｉ=ｉ＋１」とし（Ｓ１２０６）、再度、上述のＳ１２０４以降の処理を行なう。
【０１２１】
なお、ここで、レコード検索技術は特に限定するものではない。例えば、上述のように、項目の値を直接比較してもよい。また、検索処理を高速化するために、まず、レコードごとにキー項目の値を連結してハッシュテーブル等のインデクスを作っておき、次に、レコード同士の比較をインデクスで行なっても良い。
【０１２２】
一方、上述のＳ１２０４の判定の結果、「ｉ＜Ｎ」でない場合、出力制御部１１５は、個人情報テーブル１３１´が有する安全項目値組みをチェックするためのループ変数「j」を初期化する（Ｓ１２０７）。具体的には、出力制御部１１５は「ｊ＝Ｍ」とする。この「ｊ」は、複数の解析結果情報テーブル１３４-ａのうち、「ｊ」番目のものを示すためのものである。また、「Ｍ」は、上述のように、個人情報テーブル１３１´の項目数である。
【０１２３】
続いて、出力制御部１１５は、出力判定用テーブルの値を示す配列「Ｅ[][]」と、配列「Ｂ[]」との各々を初期化する（Ｓ１２０８）。そのために、出力制御部１１５は、配列「Ｅ[][]」と、配列「Ｂ[]」との各々の全ての要素をゼロとする。なお、ここで、出力判定用テーブルの値を示す配列「Ｅ[ｕ][ｖ]」は、例えば、個人情報テーブル１３１´の「ｕ」番目のレコードのうち、整数「ｖ」で示される項目の項目値が、安全項目値組みであるか否かを示すものである。即ち、後述する処理により、個人情報テーブル１３１´の「ｕ」番目のレコードのうち、整数「ｖ」で示される項目の項目値が安全項目値組みであると判定された場合、「Ｅ[ｕ][ｖ]」の値が「ゼロ」から「１」へ変更される。また、配列「Ｂ[ｕ]」には、後述する処理により、「ｊ」番目の解析結果情報テーブル１３４-ａにおいて、「ｕ」番目のレコードの項目及び項目値であるレコードの件数「ｎｒ」が格納される。
【０１２４】
次に、出力制御部１１５は、「ｊ≧０」であるか否か判定する（Ｓ１２０９）。
【０１２５】
Ｓ１２０９の判定の結果、「ｊ≧０」である場合、出力制御部１１５は、変数「ｓ」を初期化とする（Ｓ１２１０）。具体的には、出力制御部１１５は「ｓ＝０」とする。なお、この「ｓ」は、「ｊ」番目の解析結果情報テーブル１３４-ａのレコードを示すものである。
【０１２６】
次に、出力制御部１１５は、「ｓ＜Ｓ」であるか否か判定する（Ｓ１２１１）。ここで、この「Ｓ」は、「ｊ」番目の解析結果情報テーブル１３４-ａのレコード件数である。
【０１２７】
Ｓ１２１１の判定の結果、「ｓ＜Ｓ」でない場合、出力制御部１１５は、「ｊ＝ｊ-１」とし（Ｓ１２１２）、上述のＳ１２０９以降の処理を行なう。
【０１２８】
Ｓ１２１１の判定の結果、「ｓ＜Ｓ」である場合、出力制御部１１５は、「ｉ＝０」とする（Ｓ１２１３）。
【０１２９】
次に、出力制御部１１５は、「ｉ＜Ｎ」であるか否か判定する（Ｓ１２１４）。ここで、「Ｎ」は、上述のように、個人情報テーブル１３１´のレコード件数である。
【０１３０】
Ｓ１２１４の判定の結果、「ｉ＜Ｎ」でない場合、出力制御部１１５は、「ｓ＝ｓ＋１」とし（Ｓ１２１５）、上述のＳ１２１１以降の処理を行なう。
【０１３１】
Ｓ１２１４の判定の結果、「ｉ＜Ｎ」である場合、出力制御部１１５は、「Ｂ[ｉ]＝０」であり、かつ、個人情報テーブル１３１´の「ｉ」番目のレコードに、「ｊ」番目の解析結果情報テーブル１３４-ａの「ｓ」番目のレコードに格納された安全項目値組みが含まれているか否か判定する（Ｓ１２１６）。
【０１３２】
具体的には、例えば、「ｉ＝０」、「ｊ＝１」、「ｓ＝０」、「Ｂ[０]＝０」である場合、出力制御部１１５は、図８に一例を示す個人情報テーブル１３１´の「０」番目のレコード、即ち、フィールド８０１、フィールド８０２、フィールド８０３の各々の値「男性」、「３３」、「２１５−００１３」を抽出する。さらに、出力制御部１１５は、「１」番目の解析結果情報テーブル１３４-ａ、即ち、図５（ｂ−２）に一例を示す解析結果情報テーブル１３４-ａ２を参照し、「０」番目のレコード、即ち、フィールド５４２、フィールド５４３、フィールド５４４、フィールド５４５の各々の値「性別」、「男性」、「年齢」、「３３」を抽出する。この場合、図８に一例を示す個人情報テーブル１３１´の「０」番目のレコードのフィールド８０１の値「男性」と、図５（ｂ−２）に一例を示す解析結果情報テーブル１３４-ａ２の「０」番目のレコードのフィールド５４３の値「男性」、及び、図８に一例を示す個人情報テーブル１３１´の「０」番目のレコードのフィールド８０２の値「３３」と、図５（ｂ−２）に一例を示す解析結果情報テーブル１３４-ａ２の「０」番目のレコードのフィールド５４５の値「３３」の各々が一致するので、出力制御部１１５は、該当する安全項目値組みが含まれていると判定する。
【０１３３】
Ｓ１２１６の判定の結果、個人情報テーブル１３１´の「ｉ」番目のレコードに、「ｊ」番目の解析結果情報テーブル１３４-ａの「ｓ」番目のレコードに格納された安全項目値組みが含まれていない場合、出力制御部１１５は「ｉ＝ｉ＋１」とし（Ｓ１２１７）、上述のＳ１２１４以降の処理を再度行なう。
【０１３４】
Ｓ１２１６の判定の結果、個人情報テーブル１３１´の「ｉ」番目のレコードに、「ｊ」番目の解析結果情報テーブル１３４-ａの「ｓ」番目のレコードに格納された安全項目値組みが含まれている場合、出力制御部１１５は、配列「Ｅ[][]」、及び、配列「Ｂ[]」を更新する（Ｓ１２１８）。例えば、個人情報テーブル１３１´の「ｉ」番目のレコードと、「ｊ」番目の解析結果情報テーブル１３４-ａの「ｓ」番目のレコードとの両方に、整数「ｖ」で示される項目の項目値のうち一致するものが含まれている場合の例を説明する。この場合、出力制御部１１５は、「Ｅ[ｉ][ｖ]＝１」とする。さらに、出力制御部１１５は、「ｊ」番目の解析結果情報テーブル１３４-ａの、「ｓ」番目のレコードから、このレコードの項目及び項目値であるレコードの件数「ｎｒ」を抽出し、「Ｂ[ｉ]＝ｎｒ」とする。
【０１３５】
具体的には、例えば、「ｉ＝０」、「ｊ＝１」、「ｓ＝０」である場合、上述のように、図８に一例を示す個人情報テーブル１３１´の「０」番目のレコードのフィールド８０１の値「男性」と、図５（ｂ−２）に一例を示す解析結果情報テーブル１３４-ａ２の「０」番目のレコードのフィールド５４３の値「男性」、及び、図８に一例を示す個人情報テーブル１３１´の「０」番目のレコードのフィールド８０２の値「３３」と、図５（ｂ−２）に一例を示す解析結果情報テーブル１３４-ａ２の「０」番目のレコードのフィールド５４５の値「３３」の各々が一致する。また、上述のように、項目「性別」を示す整数は「０」であり、項目「年齢」を示す整数は「１」である。この場合、出力制御部１１５は、「Ｅ[０][０]＝１」、「Ｅ[０][１]＝１」とする。また、図５（ｂ-２）に一例を示す解析結果情報テーブル１３４-ａ２の「０」番目のレコードのレコード件数「ｎｒ」は、フィールド５４１の値「２４００」であるので、出力制御部１１５は、「Ｂ[０]＝２４００」とする。
【０１３６】
次に、出力制御部１１５は、上述のＳ１２１０以降の処理を再度行なう。
【０１３７】
一方、上述のＳ１２０９の判定の結果、「ｊ≧０」でない場合、出力制御部１１５は、「ｉ＝０」とする（Ｓ１２１９）。
【０１３８】
次に、出力制御部１１５は、「ｉ＜０」であるか否か判定する（Ｓ１２２０）。
【０１３９】
Ｓ１２２０の判定の結果、「ｉ＜０」である場合、出力制御部１１５は、Ａ[ｉ]、Ｂ[ｉ]の各々の値を、出力情報１２１の「ｉ」番目のレコードの、匿名化前同値件数６０１、匿名化後同値件数６０２の各々の値として格納する（Ｓ１２２１）。さらに、出力制御部１１５は、出力判定用テーブル（配列「Ｅ[][]」）を参照し、個人情報テーブル１３１´の「ｉ」番目のレコードの項目値のうち、安全項目値組みに該当するものを出力情報１２１に追加する（Ｓ１２２２）。そのために、出力制御部１１５は、「Ｅ[ｉ][ｘ]＝１」であるか否か判定する。なお、ここで、「ｘ」は、「ｘ＝０、１、・・・、・・・（Ｍ-１）」の値をとる整数である。この「Ｍ」は、上述のように、個人情報テーブル１３１´の項目数である。「Ｅ[ｉ][ｘ]＝１」である場合、出力制御部１１５は、個人情報テーブル１３１´から「Ｄ[ｉ][ｘ]」の値を抽出し、抽出した「Ｄ[ｉ][ｘ]」の値を、出力情報１２１の「ｉ」番目のレコードの項目９１３〜９１５のうち、「ｘ」番目の項目の項目値として格納する。また、「Ｅ[ｉ][ｘ]＝０」である場合、出力制御部１１５は、出力情報１２１の「ｉ」番目のレコードの項目９１３〜９１５のうち、「ｘ」番目の項目の項目値として空値を格納する。出力制御部１１５は、この処理を、ｘ＝０、１、・・・（Ｍ-１）の各々に対し行なう。
【０１４０】
具体的には、例えば、「ｉ＝０」、「ｘ＝０」、「Ｅ[０][０]＝１」等である場合、出力制御部１１５は、図８に一例を示す個人情報テーブル１３１´から「Ｄ[０][０]＝男性」の値を抽出し、抽出した「Ｄ[０][０]＝男性」の値を、出力情報１２１の「０」番目のレコードの項目９１３〜９１５のうち、「０」番目の項目の項目値、即ち、項目９１３「性別」の項目値として格納する。
【０１４１】
次に、出力制御部１１５は、「ｉ＝ｉ＋１」する（Ｓ１２２３）。
【０１４２】
一方、上述のＳ１２２０の判定の結果、「ｉ＜０」でない場合、出力情報１２１を、出力装置１０５、通信装置１０６を介して他装置（図示略）等に出力する（Ｓ１２２４）。なお、Ｓ１２２４で出力される画面の例は上述の図９と同じである。
＜第２の実施形態＞
次に、第２の実施形態を説明する。
【０１４３】
第２の実施形態は、上述の第１の実施形態と比較して、対話的に匿名化して出力する処理のみが異なるものである。以下、第２の実施形態を説明する場合、上述の第１の実施形態と重複する構成に対しては同じ符号を付与して説明を省略する。また、上述の第１の実施形態と重複する動作に対しては簡単に説明する。
【０１４４】
まず、図１３を参照し、第２の実施形態の計算機１００の構成例について説明する。
【０１４５】
図１３において、計算機１００のストレージ１０３は、プログラム１４１の代わりに、プログラム１３３１を有する。また、ストレージ１０３は、選択肢情報１３２１、選択肢情報１３２２、選択肢情報１３２３をさらに有する。
【０１４６】
選択肢情報１３２１、選択肢情報１３２２、選択肢情報１３２３の各々は、項目「性別」、項目「年齢」、項目「郵便番号」の各々の、匿名化の選択肢を有する。選択肢情報１３２１、選択肢情報１３２２、選択肢情報１３２３の詳細は後述する。
【０１４７】
ＣＰＵ１０１は、メモリ１０２にロードしたプログラム１３３１を実行することにより、指示受付部１３１１、匿名処理部１３１２をさらに実現する。指示受付部１３１１は、出力する項目毎の匿名化する条件の入力を受け付ける。匿名処理部１３１２は、入力された匿名化する条件に従い、出力する情報を処理する。
【０１４８】
次に、図１４〜図１６を参照し、選択肢情報１３２１、選択肢情報１３２２、選択肢情報１３２３の一例を説明する。
【０１４９】
まず、図１４を参照し、選択肢情報１３２１の一例を説明する。
【０１５０】
図１４において、選択肢情報１３２１は、項目「性別」を匿名化する選択肢を２つ以上含む。図１４の例では、選択肢として「変換無し」、「全て同じ」を含む。ここで、選択肢「変換無し」とは、個人情報テーブル１３１の各レコードの項目「性別」の項目値「男性」、「女性」をそのまま用いることを示す。また、選択肢「全て同じ」とは、個人情報テーブル１３１の各レコードの項目「性別」において、全ての項目値が「不明」を表す値に変換されることを示す。
【０１５１】
次に、図１５を参照し、選択肢情報１３２２の一例を説明する。
【０１５２】
図１５において、選択肢情報１３２２は、項目「年齢」を匿名化する選択肢を２つ以上含む。図１５の例では、選択肢として「変換無し」、「５歳刻み」、「１０歳刻み」、「１５歳刻み」、「全て同じ」を含む。ここで、選択肢「変換無し」とは、個人情報テーブル１３１の各レコードの項目「年齢」の項目値をそのまま用いることを示す。選択肢「５歳刻み」とは、個人情報テーブル１３１の各レコードの項目「年齢」において、５歳毎に１つの項目値であるものとして用いることを示す。具体的には、例えば、２１歳〜２５歳の年齢を１つの項目値として用いる。選択肢「１０歳刻み」とは、個人情報テーブル１３１の各レコードの項目「年齢」において、１０歳毎に１つの項目値であるものとして用いることを示す。選択肢「１５歳刻み」とは、個人情報テーブル１３１の各レコードの項目「年齢」において、１５歳毎に１つの項目値であるものとして用いることを示す。選択肢「全て同じ」とは、個人情報テーブル１３１の各レコードの項目「年齢」において、全ての項目値が「不明」を表す値に変換されることを示す。
【０１５３】
次に、図１６を参照し、選択肢情報１３２３の一例を説明する。
【０１５４】
図１６において、選択肢情報１３２３は、項目「郵便番号」を匿名化する選択肢を２つ以上含む。図１６の例では、選択肢として「変換無し」、「上位３桁」、「全て同じ」を含む。ここで、選択肢「変換無し」とは、個人情報テーブル１３１の各レコードの項目「郵便番号」の項目値をそのまま用いることを示す。選択肢「上位３桁」とは、個人情報テーブル１３１の各レコードの項目「郵便番号」において、上位３桁が同じ項目値を１つの項目値であるものとして用いることを示す。具体的には、例えば、郵便番号「２１５−００１３」と郵便番号「２１５−００１６」とを１つの項目値として用いる。選択肢「全て同じ」とは、個人情報テーブル１３１の各レコードの項目「郵便番号」において、全ての項目値が「不明」を表す値に変換されることを示す。
【０１５５】
なお、項目「性別」、項目「年齢」、項目「郵便番号」の各々の匿名化の選択肢は任意であり、上記に限るものではない。
【０１５６】
また、本実施形態では、表示する項目が「性別」、「年齢」、「郵便番号」であるため、これらの項目各々に対する選択肢が設定されている。しかし、上述のように、表示する項目は「性別」、「年齢」、「郵便番号」等に限るわけではない。即ち、匿名化の選択肢は、表示する項目に応じて設定するとよい。
【０１５７】
ここで、動作例を説明する前に、図１７を参照し、第２の実施形態において、計算機１００が出力装置１０５等のディスプレイに表示する画面の例を説明する。
【０１５８】
上述のように、第２の実施形態の計算機１００は、対話的に匿名化して出力する処理を行なう。対話的に匿名化するための画面例を図１７に示す。図１７（ａ）において、画面１７０１は、プルダウンメニュー１７２１、プルダウンメニュー１７２２、プルダウンメニュー１７２３等を含む。これらのプルダウンメニューの各々は、項目１７１１、項目１７１２、項目１７１３の各々の匿名化の選択肢を選択するためのものである。項目１７１１、項目１７１２、項目１７１３各々の項目は、表示項目情報１３２に含まれているものと同じである。ユーザは、入力装置１０４等を用いて、プルダウンメニュー１７２１、プルダウンメニュー１７２２、プルダウンメニュー１７２３各々に対し、匿名化の選択肢を選択する。
【０１５９】
また、画面１７０１は、サブ画面１７３１、サブ画面１７３２等を含む。サブ画面１７３１には、プルダウンメニュー１７２１、プルダウンメニュー１７２２、プルダウンメニュー１７２３等で項目毎の匿名化の選択肢を選択される前の、同値レコード数の分布を示すヒストグラムが表示されるものである。サブ画面１７３２には、プルダウンメニュー１７２１、プルダウンメニュー１７２２、プルダウンメニュー１７２３等のうち少なくとも１つで匿名化の選択肢を選択された場合の、同値レコード数の分布を示すヒストグラムが表示されるものである。サブ画面１７３１、サブ画面１７３２の各々に表示されるヒストグラムは、横軸が同値レコード数、縦軸が同値レコード数の件数を示す。同値レコード数とは、上述のように、個人情報の項目のうち最小同値件数情報１３３内の項目の項目値の組合せが同じものの数を示す。同値レコード数の件数とは、個人情報の項目のうち最小同値件数情報１３３内の項目の項目値の組合せが異なるものであっても、同値レコード数の同じである組合せの件数である。具体的には、例えば、図６に一例を示す出力情報１２１の場合、項目９１３「性別」、項目９１４「年齢」、項目９１５「郵便番号」の各々の項目値が「男性」、「３３」、「-」であるレコードの同値レコード数は、同じレコードの項目９１１「匿名化前同値件数」の項目値「５０」である。また、項目９１３「性別」、項目９１４「年齢」、項目９１５「郵便番号」の各々の項目値が「女性」、「２５」、「-」であるレコードの同値レコード数は、同じレコードの項目９１１「匿名化前同値件数」の項目値「５０」である。この、項目９１１「匿名化前同値件数」の項目値が、サブ画面１７３１、サブ画面１７３２の各々に表示されるヒストグラムの横軸の同値レコード数の値となる。また、項目９１１「匿名化前同値件数」の項目値が同じ「５０」であるレコードの件数が、サブ画面１７３１、サブ画面１７３２の各々に表示されるヒストグラムの縦軸の同値レコード数の件数の値となる。
【０１６０】
なお、サブ画面１７３１、サブ画面１７３２の各々に表示されるヒストグラムの横軸において、匿名化の判定基準となる閾値の値の表示形態を変更してもよい。この閾値は、ここでは、最小同値件数情報１３３に格納されている最小同値件数４０１である。この表示形態の変更は任意でよく、例えば、数値の色を変える、あるいは閾値を境界としてヒストグラムの色を変える等でもよい。図１７の例では、閾値「１００」を「○」で囲む場合の例を示す。
【０１６１】
また、図１７（ａ）の画面１７０１は、プルダウンメニュー１７２１、プルダウンメニュー１７２２、プルダウンメニュー１７２３等で項目毎の匿名化の選択肢を選択しない場合の例なので、サブ画面１７３２には、サブ画面１７３１と同じヒストグラムが表示されている。
【０１６２】
図１７（ｂ）の画面１７４１は、上述の画面１７０１において、プルダウンメニュー１７２１、プルダウンメニュー１７２２、プルダウンメニュー１７２３等で項目毎の匿名化の選択肢を選択した場合の例である。図１７（ｂ）の画面１７４１の場合、プルダウンメニュー１７２１で選択せず、プルダウンメニュー１７２２で「１０歳刻み」を選択し、プルダウンメニュー１７２３を「上位３桁」を選択した場合の例である。
【０１６３】
プルダウンメニュー１７２１、プルダウンメニュー１７２２、プルダウンメニュー１７２３等で項目毎の匿名化の選択肢が選択された場合、計算機１００は、後述する処理により、選択された選択肢に従い、サブ画面１７３２に表示されるヒストグラムを表示するための処理を再度行なう。これにより、サブ画面１７３２に表示されるヒストグラムが変更等される。図１７（ｂ）の例では、図１７（ａ）の場合と比較して、サブ画面１７３２のヒストグラムの分布が左側に移動している。
【０１６４】
上述したインタフェースにより、同値レコード数の最小値を満たすように、利用者が匿名化方法を調整できることに第２の実施形態の特長がある。
【０１６５】
図１８を参照し、動作例を説明する。なお、第２の実施形態の動作例は、上述した第１の実施形態の動作をＳ７１１まで行なった後に一旦終了し、以下の処理を行なう点のみで異なるので、この出力処理のみ説明する。その他の処理は、上述の第１の実施形態と同じである。
【０１６６】
なお、ここでは、以下の動作を起動するタイミングは、上述の図９に一例を示す結果を表示した後に、取得する情報の不足を判断したユーザが、匿名化の選択を指示した場合であるものとする。しかし、以下の動作を起動するタイミングは任意でよく、例えば、ユーザから指示が入力された場合や所定時間等の任意のタイミング等でもよい。
【０１６７】
図１８において、出力制御部１１５は、出力情報１２１を生成する（Ｓ１８０１）。この処理は、上述のＳ１２０１〜Ｓ１２２４と同じである。なお、既に出力情報１２１が生成されている場合は、この処理は行なわなくても良い。
【０１６８】
次に、匿名処理部１３１２は、以下の処理で用いる「配列Ａ[]」、「配列Ｂ[]」の各々に、出力情報１２１のレコード毎の匿名化前同値件数、匿名化後同値件数の値を格納する。さらに、匿名処理部１３１２は、出力情報１２１を参照し、表示項目情報１３２に指定された項目からなるレコードデータをメモリ１０２に読み込む（Ｓ１８０２）。そのために、匿名処理部１３１２は、例えば、出力情報１２１内の各レコードの匿名化前同値件数６０１の値を「配列Ａ[]」に格納する。さらに、匿名処理部１３１２は、出力情報１２１の各レコードの匿名化後同値件数６０２の値を「配列Ｂ[]」に格納する。なお、「配列Ａ」、「配列Ｂ」の各々のサイズは「Ｎ」である。この「Ｎ」は、上述のように、出力情報１２１のレコード件数である。また、匿名処理部１３１２は、出力情報１２１から、各レコードの項目６０３、項目６０４、項目６０５の項目値を読出し、メモリ１０２に読み込む。図６に一例を示す出力情報１２１の例の場合、匿名処理部１３１２は、出力情報１２１から、各レコードの項目６０３「年齢」、項目６０４「年齢」、項目６０５「郵便番号」各々の項目値を抽出して、メモリ１０２に格納する。
【０１６９】
以下、Ｓ１８０２の処理によりメモリ１０２に格納される情報を特に区別する場合、「出力情報１２１´」という。
【０１７０】
Ｓ１８０２の処理により、図６に一例を示す出力情報１２１の例の場合にメモリ１０２に格納される出力情報１２１´の例を、図１９に示す。図１９において、出力情報１２１´は複数のレコードを有する。各レコードは、項目１９０１、項目１９０２、項目１９０３の項目値を有する。各レコードの項目１９０１、項目１９０２、項目１９０３の項目値は、上述の出力情報１２１の各レコードの項目６０３、項目６０４、項目６０５の項目値と同じである。
【０１７１】
なお、以下では、出力情報１２１´の項目を、匿名化対象項目と呼ぶ。また、出力情報１２１´の各要素は空値を表現できるデータ型である。具体的には、例えば、C言語の構造体ならば、この要素は、データ値を表す変数領域と、データ値変数領域が空値か否かを表すブーリアン変数領域からなる。
【０１７２】
次に、匿名処理部１３１２は、「配列Ｆ[]」の全要素を初期化する（Ｓ１８０３）。そのために、匿名処理部１３１２は、「配列Ｆ[]」の全要素を偽値に初期化する。この「配列Ｆ[]」のサイズは「Ｍ」である。なお、この「Ｍ」は、上述のように、出力情報１２１´の項目数である。
【０１７３】
なお、「配列Ｆ[]」の「j番目」の要素が偽値の場合は、出力情報１２１´のj番目の匿名化対象項目が匿名化不要であることを示し、また、真値の場合は、匿名化が必要であることを示す。
【０１７４】
次に、匿名処理部１３１２はレコードを示す変数「ｉ」を初期化する（Ｓ１８０４）。そのために、匿名処理部１３１２は、「ｉ＝０」とする。
【０１７５】
匿名処理部１３１２は、「Ａ[ｉ]＜Ｋ」であるか否か判定する（Ｓ１８０５）。ここで「Ａ[ｉ]」は、「配列Ａ[]」の「ｉ番目」の要素である。また、「Ｋ」は、最小同値件数情報１３３の最小同値件数「Ｋ」の値である。即ち、この処理で、匿名処理部１３１２は、出力情報１２１´の「ｉ番目」のレコードを匿名化しない場合、その識別確率が「１/Ｋ」より大きいか否か判定する。
【０１７６】
Ｓ１８０５の判定の結果、「Ａ[ｉ]＜Ｋ」でない場合、匿名処理部１３１２は、後述するＳ１８０７以降の処理を行なう。
【０１７７】
Ｓ１８０５の判定の結果、「Ａ[ｉ]＜Ｋ」である場合、匿名処理部１３１２は、出力情報１２１´の「ｉ番目」のレコードに、値が空値になっているものがあるか否か判定する。この判定の結果、空値のものがある場合、匿名処理部１３１２は、出力情報１２１´の空値になっている項目「ｊ」に対応する「Ｆ[ｊ]」を真値に設定する（Ｓ１８０６）。具体的には、例えば、「ｉ＝０」の場合、図１９に一例を示す出力情報１２１´で「ｉ番目」のレコードで空値になっているものは、項目１９０３「郵便番号」である。本実施形態では、上述のように、項目「郵便番号」を数字「２」で示すので、「ｊ＝２」となる。従って、匿名処理部１３１２は、「Ｆ[２]」を真値にする。
【０１７８】
次に、匿名処理部１３１２は、「ｉ＝ｉ＋１」とする（Ｓ１８０７）。
【０１７９】
次に、匿名処理部１３１２は「ｉ＜Ｎ」であるか否か判定する（Ｓ１８０８）。この「Ｎ」は、上述のように、出力情報１２１のレコード件数である。
【０１８０】
Ｓ１８０８の判定の結果、「ｉ＜Ｎ」でない場合、匿名処理部１３１２は、上述のＳ１８０５以降の処理を再度行なう。
【０１８１】
Ｓ１８０８の判定の結果、「ｉ＜Ｎ」である場合、匿名処理部１３１２は、ストレージ１０３から選択肢情報１３２１、選択肢情報１３２２、選択肢情報１３２３等を読出し、メモリ１０２に格納する（Ｓ１８０９）。
【０１８２】
指示受付部１３１１は、項目毎の匿名化の選択肢を表示する（Ｓ１８１０）。そのために、指示受付部１３１１は、例えば、まず、「配列Ｆ[]」の全要素を参照し、各要素のうち、真値である要素の項目を特定する。次に、指示受付部１３１１は、表示項目情報１３２１、表示項目情報１３２２、表示項目情報１３２３のうち、特定した項目の匿名化の選択肢を含むものを選択する。指示受付部１３１１は、特定した項目と、選択したに匿名化の選択肢とを表示する情報を生成し、出力装置１０５のディスプレイ等に出力する。
【０１８３】
具体的には、例えば、「配列Ｆ[]」の全要素として、「Ｆ[０]」、「Ｆ[１]」、「Ｆ[２]」が含まれている場合の例を説明する。上述のように、数字「ゼロ」の項目番号は「性別」を、数字「１」の項目番号は「年齢」を、数字「２」の項目番号は「郵便番号」を示す場合、指示受付部１３１１は、項目「性別」、項目「年齢」、項目「郵便番号」が真値である項目とする。次に、指示受付部１３１１は、ストレージ１０３から、項目「性別」の匿名化の選択肢を含む選択肢情報１３２１、項目「年齢」の匿名化の選択肢を含む選択肢情報１３２２、項目「郵便番号」の匿名化の選択肢を含む選択肢情報１３２３を読出し、メモリ１０３に格納する。指示受付部１３１１は、所定のフォーマットを用いる等して、項目「性別」、項目「年齢」、項目「郵便番号」と、選択肢情報１３２１、選択肢情報１３２２、選択肢情報１３２３各々に格納されている匿名化の選択肢とを表示するための情報を生成する。ここで、指示受付部１３１１は、例えば、選択肢情報１３２１、選択肢情報１３２２、選択肢情報１３２３各々に格納されている匿名化の選択肢をプルダウンメニューとして表示させるようにする。この処理により、上述の図１７に示す項目１７１１、項目１７１２、項目１７１３、プルダウンメニュー１７２１、プルダウンメニュー１７２２、プルダウンメニュー１７２３が表示される。
【０１８４】
次に、指示受付部１３１１は、匿名化の選択肢を選択する前のヒストグラムを表示する（Ｓ１８１１）。そのために、指示受付部１３１１は、「配列Ａ[]」の値を集計して、同値レコード数、及び、同値レコード数の件数を取得する。指示受付部１３１１は、取得した同値レコード数を横軸、同値レコード数の件数を縦軸としてヒストグラムを生成し、出力装置１０５のディスプレイ等に出力する。この処理により、上述の図１７に示すサブ画面１７３１が表示される。
【０１８５】
次に、指示受付部１３１１は、匿名化の選択肢を選択した後のヒストグラムを表示する（Ｓ１８１２）。そのために、指示受付部１３１１は、「配列Ｂ[]」の値を集計して、同値レコード数、及び、同値レコード数の件数を取得する。指示受付部１３１１は、取得した同値レコード数を横軸、同値レコード数の件数を縦軸としてヒストグラムを生成し、出力装置１０５のディスプレイ等に出力する。この処理により、上述の図１７に示すサブ画面１７３２が表示される。
【０１８６】
なお、Ｓ１８１２の処理において、入力装置１０４等から、匿名化の選択肢が入力されていない場合、指示受付部１３１１は、匿名化の選択肢を選択した後のヒストグラムの代わりに、匿名化の選択肢を選択する前のヒストグラムを表示するものとする。この、匿名化の選択肢を選択する前のヒストグラムを表示する動作例は、上述のＳ１８１１と同じである。匿名化の選択肢が入力されているか否か判定する処理は任意でよく、例えば、図１７に一例を示すプルダウンメニュー１７２１、プルダウンメニュー１７２２、プルダウンメニュー１７２３のうち少なくとも１つが操作等された場合に変更するフラグを参照等することにより判定してもよい。
【０１８７】
指示受付部１３１１は、再描画が指示されたか否か判定する（Ｓ１８１３）。この再描画指示は任意でよく、例えば、図１７に一例を示す画面の「決定」ボタンが押下されたか否か等により判定してもよい。
【０１８８】
Ｓ１８１３の判定の結果、再描画が指示されている場合、匿名処理部１３１２は、再描画の指示と共に受け付けた匿名化の選択肢により定まる条件に従い、「配列Ｂ[]」に格納されている値を更新する（Ｓ１８１４）。そのために、匿名処理部１３１２は、例えば、個人情報テーブル１３１を参照し、項目毎に、再描画の指示と共に受け付けた匿名化の選択肢により定まる条件に従い、各レコードの同値レコード数をカウントし、この値を「配列Ｂ[]」に格納する。匿名処理部１３１２が同値レコード数をカウントする処理そのものは上述と同じであり、このとき、再描画の指示と共に受け付けた匿名化の選択肢により定まる条件に従ってカウントする点のみが異なる。具体的には、例えば、図１７に一例を示すプルダウンメニュー１７２２で「１０歳刻み」という匿名化の選択肢が指示されている場合、匿名処理部１３１２は、個人情報テーブル１３１の項目２０３「年齢」の項目値が「２１〜３０」の範囲内である場合、同じ項目値としてカウントする、というように処理する。また、カウントの際、出力情報１２１で空値になっている項目値のみを対象として、匿名化の選択肢に従って個人情報テーブル１３１に対する同値判定を行い、出力情報１２１で空値になっていない項目値は匿名化の選択肢を用いない同値判定を行なう。
【０１８９】
Ｓ１８１４の処理の後、指示受付部１３１１は、上述のＳ１８１２以降の処理を再度行なう。
【０１９０】
一方、Ｓ１８１３の判定の結果、再描画が指示されていない場合、指示受付部１３１１は、出力が指示されたか否か判定する（Ｓ１８１５）。この終了指示は任意でよく、例えば、図１７に一例を示す画面の「表示」ボタンが押下されたか否か等により判定してもよい。
【０１９１】
Ｓ１８１５の判定の結果、出力が指示されている場合、指示受付部１３１１は、「配列Ｂ[]」に格納されている値の各々に対し、「配列Ｂ[ｉ]≧Ｋ」であるか否か判定する（Ｓ１８１６）。この「Ｋ」は、上述のように、最小同値件数情報１３３内に含まれる最小同値件数４０１の値である。
【０１９２】
Ｓ１８１５の判定の結果、「配列Ｂ[]」に格納されている値のうち少なくとも１つが「配列Ｂ[ｉ]≧Ｋ」でない場合、指示受付部１３１１は、上述のＳ１８１２以降の処理を再度行なう。なお、このとき、指示受付部１３１１は、同値レコード数の最小値が「Ｋ」以下となるように項目毎の匿名化の選択肢を指定することを要求する情報を、出力装置１０５、通信装置１０６等に出力しても良い。
【０１９３】
上述のＳ１８１６の判定の結果、「配列Ｂ[]」に格納されている値の全てが「配列Ｂ[ｉ]≧Ｋ」である場合、出力制御部１１５は、上述のＳ１８１４と同様に、個人情報テーブル１３１に対する同値判定を行なうと共に、再描画の指示と共に受け付けた項目毎の匿名化の選択肢により定まる条件に従い、個人情報テーブル１３１´を変換し、変換した情報に従い出力情報１２１を更新し、出力装置１０５、通信装置１０６等に出力する（Ｓ１８１７）。そのために、出力制御部１１５は、まず、「配列Ｂ[]」の値の各々を、出力情報１２１の各レコードの匿名化後同値件数６０２の値として格納する。さらに、出力制御部１１５は、個人情報テーブル１３１´の各レコードの項目値の各々を、再描画の指示と共に受け付けた項目毎の匿名化の選択肢により定まる条件に従って変換し、変換した項目値の各々を出力情報１２１の各レコードの項目６０３〜６０５として格納する。出力制御部１１５は、更新した出力情報１２１を出力装置１０５、通信装置１０６等に出力する。
【０１９４】
具体的には、例えば、図１７に一例を示すプルダウンメニュー１７２２で「１０歳刻み」、プルダウンメニュー１７２３で「上位３桁」という匿名化の選択肢が指示されている場合の例を説明する。この場合、出力制御部１１５は、「配列Ｂ[]」の値の各々を、出力情報１２１の各レコードの匿名化後同値件数６０２の値として格納する。また、出力制御部１１５は、個人情報テーブル１３１´の項目８０１〜８０３のうち、匿名化の選択肢が指示されている項目「年齢」、「郵便番号」の各々の項目値を、指定された選択肢により定まる条件に従い変換する。即ち、出力制御部１１５は、個人情報テーブル１３１´の、各レコードの項目８０２の項目値を、「１０歳刻み」の値とする。具体的には、例えば、出力制御部１１５は、個人情報テーブル１３１´の項目８０２の項目値が「３３」である場合、「３１〜４０」というように変換する。また、出力制御部１１５は、個人情報テーブル１３１´の、各レコードの項目８０３の項目値を、「上位３桁」の値とする。具体的には、例えば、出力制御部１１５は、個人情報テーブル１３１´の項目８０３の項目値が「２１５−００１３」である場合、「２１５-****」というように変換する。出力制御部１１５は、変換したレコード毎の項目値の各々を、出力情報１２１の各レコードの項目６０４、項目６０５の各々として格納する。
【０１９５】
ここで、図２０を参照し、図１７に一例を示すプルダウンメニュー１７２２で「１０歳刻み」、プルダウンメニュー１７２３で「上位３桁」という匿名化の選択肢が指示されている場合に更新した出力情報１２１を、出力装置１０５のディスプレイ等に表示する場合の画面例を説明する。
【０１９６】
図２０において、画面２００１は、項目「年齢」の匿名化の選択肢が「１０歳刻み」、項目「郵便番号」の匿名化の選択肢が「上位３桁」である場合に表示される画面例である。画面２００１に一例を示すように、各情報主体の項目値のうち、項目「年齢」、「郵便番号」であるものが、「１０歳刻み」、「上位３桁」というように、複数の異なる項目値を含むように表示される。このように、識別確率が閾値以上となる項目値を全く表示しないのではなく、複数の項目値が１つの項目値となるように表示することで、識別確率のレベルを保ったまま、情報を提供することが可能となる。
【０１９７】
図１８において、Ｓ１８１７の処理の後、指示受付部１３１１は、上述のＳ１８１２以降の処理を再度行なう。
【０１９８】
一方、Ｓ１８１５の判定の結果、出力が指示されていない場合、指示受付部１３１１は、終了が指示されたか否か判定する（Ｓ１８１８）。この終了指示は任意でよく、例えば、図１７に一例を示す画面の「終了」ボタンが押下されたか否か等により判定してもよい。
【０１９９】
Ｓ１８１８の判定の結果、終了が指示されている場合、指示受付部１３１１は、処理を終了する。
【０２００】
Ｓ１８１８の判定の結果、終了が指示されていない場合、指示受付部１３１１は、上述のＳ１８１３の処理に戻る。
【０２０１】
なお、上述の処理において、Ｓ１８０６で配列「Ｆ[ｊ]」が全て真値に設定された場合、Ｓ１８０５〜Ｓ１８０８で構成されるループを脱出しても、Ｓ１８０９以降で得られる結果は同じとなる。
【０２０２】
このように第２の実施形態では、匿名化が必要な項目を判別して表示すること、同値レコード数が少ない項目値組みのみを対象として匿名化を実行すること、匿名化の結果を匿名化前と比較して判断できるとことが可能となる。
【０２０３】
以上、この発明の実施形態を図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【０２０４】
例えば、上述の第２の実施形態では、同値レコード件数が最小同値件数「Ｋ」以下となるまで、匿名化の選択肢を選択させるものとしたが、これに限られるわけではなく、同値レコード件数が最小同値件数「Ｋ」以下となる項目値を表示しなければよい。そのために、例えば、上述の第１の実施形態のように、同値レコード件数が最小同値件数「Ｋ」以下となる項目値を表示しなくてもよい。その場合、例えば、出力制御部１１５は、出力情報１２１の各レコードのうち、「配列Ｂ[ｉ]≧Ｋ」である値に該当するものに対しては上述のように更新せず、「配列Ｂ[ｉ]≧Ｋ」でない値に該当するものに対しては上述のように更新するとよい。
【図面の簡単な説明】
【０２０５】
【図１】第１の実施形態において、計算機の構成例を示す図である。
【図２】同実施形態において、個人情報テーブルの一例を示す図である。
【図３】同実施形態において、表示項目情報の一例を示す図である。
【図４】同実施形態において、最小同値件数情報の一例を示す図である。
【図５】同実施形態において、解析結果情報の一例を示す図である。
【図６】同実施形態において、出力情報の一例を示す図である。
【図７】同実施形態において、動作例を示す図である。
【図８】同実施形態において、作業用の個人情報テーブルの一例を示す図である。
【図９】同実施形態において、画面例を示す図である。
【図１０】同実施形態において、動作例を示す図である。
【図１１】同実施形態において、動作例を示す図である。
【図１２】同実施形態において、動作例を示す図である。
【図１３】第２の実施形態において、計算機の構成例を示す図である。
【図１４】同実施形態において、選択肢情報の一例を示す図である。
【図１５】同実施形態において、選択肢情報の一例を示す図である。
【図１６】同実施形態において、選択肢情報の一例を示す図である。
【図１７】同実施形態において、画面例を示す図である。
【図１８】同実施形態において、動作例を示す図である。
【図１９】同実施形態において、作業用の出力情報の一例を示す図である。
【図２０】同実施形態において、画面例を示す図である。
【符号の説明】
【０２０６】
１：計算機、１０１：ＣＰＵ、１１１：解析対象取得部、１１２：個人情報解析部、１１３：探索ツリー管理部、１１４：安全性判定部、１１５：出力制御部、１０２：メモリ、１２１：出力情報、１０３：ストレージ、１３１：個人情報テーブル、１３２：表示項目情報、１３３：最小同値件数情報、１３４：解析結果情報テーブル、１４１：プログラム、１０４：入力装置、１０５：出力装置、１０６：通信装置、１３１１：指示受付部、１３１２：匿名処理部、１３２１：選択肢情報、１３２２：選択肢情報、１３２３：選択肢情報、１３３１：プログラム
【図１】
2008217425.tif 000003
【図２】
2008217425.tif 000004
【図３】
2008217425.tif 000005
【図４】
2008217425.tif 000006
【図５】
2008217425.tif 000007
【図６】
2008217425.tif 000008
【図７】
2008217425.tif 000009
【図８】
2008217425.tif 000010
【図９】
2008217425.tif 000011
【図１０】
2008217425.tif 000012
【図１１】
2008217425.tif 000013
【図１２】
2008217425.tif 000014
【図１３】
2008217425.tif 000015
【図１４】
2008217425.tif 000016
【図１５】
2008217425.tif 000017
【図１６】
2008217425.tif 000018
【図１７】
2008217425.tif 000019
【図１８】
2008217425.tif 000020
【図１９】
2008217425.tif 000021
【図２０】
2008217425.tif 000022