(57)【要約】【課題】情報の開示量が低減することを抑止可能とする。【解決手段】実施形態の情報匿名化方法は、コンピュータが、複数のユーザのそれぞれに関するログデータから、ｋ以上の数のユーザに共通の文字列を抽出する処理を実行する。また、情報匿名化方法は、コンピュータが、抽出した文字列を包括関係に基づいてグループ化し、各グループに属性を割り当てる処理を実行する。また、情報匿名化方法は、コンピュータが、属性毎に、当該属性中の文字列を当該文字列を含むログデータのユーザに対応付ける処理を実行する。また、情報匿名化方法は、コンピュータが、各属性の文字列の組み合わせが同一となるユーザ数がｋ以上となるよう各属性の文字列を匿名化する処理を実行する。【選択図】図１
2016133872.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが、
複数のユーザのそれぞれに関するログデータから、ｋ以上の数のユーザに共通の文字列を抽出し、
前記抽出した文字列を包括関係に基づいてグループ化し、各グループに属性を割り当て、
前記属性毎に、当該属性中の文字列を当該文字列を含む前記ログデータのユーザに対応付け、
各属性の文字列の組み合わせが同一となるユーザ数がｋ以上となるよう各属性の文字列を匿名化する
処理を実行することを特徴とする情報匿名化方法。
【請求項２】
前記割り当てる処理は、前記属性の文字列において、包括する文字列の属性を包括される文字列の属性よりも上位のグループの属性とし、前記上位のグループの属性を根ノードとして下位のグループの属性を包括する階層木を生成する
ことを特徴とする請求項１に記載の情報匿名化方法。
【請求項３】
前記対応付ける処理は、前記階層木における上位のグループの属性から順に、前記属性中の文字列を当該文字列を含む前記ログデータのユーザに対応付ける
ことを特徴とする請求項２に記載の情報匿名化方法。
【請求項４】
前記匿名化する処理は、前記階層木における上位のグループの属性から順に、前記ログデータのユーザに対応付けられた各属性の文字列の組み合わせが同一となるユーザ数がｋ以上となるよう各属性の文字列を匿名化する
ことを特徴とする請求項３に記載の情報匿名化方法。
【請求項５】
コンピュータに、
複数のユーザのそれぞれに関するログデータから、ｋ以上の数のユーザに共通の文字列を抽出し、
前記抽出した文字列を包括関係に基づいてグループ化し、各グループに属性を割り当て、
前記属性毎に、当該属性中の文字列を当該文字列を含む前記ログデータのユーザに対応付け、
各属性の文字列の組み合わせが同一となるユーザ数がｋ以上となるよう各属性の文字列を匿名化する
処理を実行させることを特徴とする情報匿名化プログラム。
【請求項６】
複数のユーザのそれぞれに関するログデータから、ｋ以上の数のユーザに共通の文字列を抽出し、前記抽出した文字列を包括関係に基づいてグループ化し、各グループに属性を割り当て、前記属性毎に、当該属性中の文字列を当該文字列を含む前記ログデータのユーザに対応付ける処理部と、
各属性の文字列の組み合わせが同一となるユーザ数がｋ以上となるよう各属性の文字列を匿名化する匿名化部と
を有する情報匿名化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報匿名化方法、情報匿名化プログラムおよび情報匿名化装置に関する。
【背景技術】
【０００２】
各行（レコード）に各人の情報を格納したログデータなどを、各人のプライバシー保護に配慮しつつ、多くの情報が残るように変換し、市場分析などで二次活用したい場合がある。このログデータの変換時におけるプラバシー保護を目的とした技術の一つにデータの匿名化がある。匿名化では、置換・削除等により、データの１単位（行・レコード等）を個人識別性がないように加工する。個人識別性とは、知識のある人間（例えば、データの持ち主）が加工後のデータを見た時に、自分のデータを一意に特定できることである。具体的には、匿名化後のデータの１単位を見た時、データの持ち主をｋ人以上にしか絞れないように加工する。
【０００３】
ｋ−匿名化は、１データオーナー１行としデータを属性に分類して列とした２次元表に対してｋ−匿名性を達成するように値の置換・削除を行う。ｋ−匿名性とは、ＱＩ（準識別子）として設定した属性の組み合わせが対応しうる行がｋオーナー以上存在することである。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２０１１／１４５４０１号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、プライバシー保護のためにデータの匿名化を行って匿名性を十分に確保すると、匿名化により秘匿されるデータ量が多くなり、情報の開示量が低減してしまう場合がある、という問題がある。そして、匿名化により秘匿されるデータ量が多いと、二次活用時において、匿名化後のデータを利用する価値が薄れてしまう場合がある。
【０００６】
１つの側面では、情報の開示量が低減することを抑止可能とする情報匿名化方法、情報匿名化プログラムおよび情報匿名化装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
第１の案では、情報匿名化方法は、コンピュータが、複数のユーザのそれぞれに関するログデータから、ｋ以上の数のユーザに共通の文字列を抽出する処理を実行する。また、情報匿名化方法は、コンピュータが、抽出した文字列を包括関係に基づいてグループ化し、各グループに属性を割り当てる処理を実行する。また、情報匿名化方法は、コンピュータが、属性毎に、当該属性中の文字列を当該文字列を含むログデータのユーザに対応付ける処理を実行する。また、情報匿名化方法は、コンピュータが、各属性の文字列の組み合わせが同一となるユーザ数がｋ以上となるよう各属性の文字列を匿名化する処理を実行する。
【発明の効果】
【０００８】
本発明の１実施態様によれば、情報の開示量が低減することを抑止可能とすることができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施形態にかかる情報匿名化装置の構成を例示するブロック図である。
【図２】図２は、実施形態にかかる情報匿名化装置の動作を例示するフローチャートである。
【図３】図３は、単語系列の列挙を説明する説明図である。
【図４】図４は、表データへの変換を説明する説明図である。
【図５】図５は、表データへの値の設定を説明する説明図である。
【図６Ａ】図６Ａは、表データへの値の設定を説明する説明図である。
【図６Ｂ】図６Ｂは、表データへの値の設定を説明する説明図である。
【図７Ａ】図７Ａは、一般化階層木の作成を説明する説明図である。
【図７Ｂ】図７Ｂは、一般化階層木の作成を説明する説明図である。
【図８】図８は、匿名化済み表データの生成を説明する説明図である。
【図９】図９は、ログデータへの変換を説明する説明図である。
【図１０】図１０は、ログデータへの変換を説明する説明図である。
【図１１】図１１は、情報匿名化プログラムを実行するコンピュータの一例を示す説明図である。
【図１２】図１２は、匿名化において閾値による開示量の違いを説明する説明図である。
【発明を実施するための形態】
【００１０】
以下、図面を参照して、実施形態にかかる情報匿名化方法、情報匿名化プログラムおよび情報匿名化装置を説明する。実施形態において同一の機能を有する構成には同一の符号を付し、重複する説明は省略する。なお、以下の実施形態で説明する情報匿名化方法、情報匿名化プログラムおよび情報匿名化装置は、一例を示すに過ぎず、実施形態を限定するものではない。また、以下の各実施形態は、矛盾しない範囲内で適宜組みあわせてもよい。
【００１１】
図１は、実施形態にかかる情報匿名化装置１の構成を例示するブロック図である。図１に示すように、情報匿名化装置１は、ＰＣ（Personal  Computer）等の情報処理装置であり、入力部１０と、制御部２０と、出力部３０とを有する。
【００１２】
入力部１０は、キーボードやマウスなどの入力装置、ＣＤ−ＲＯＭやＤＶＤディスク等の記憶媒体からデータを読み取る読取装置または他の機器と通信を行う通信装置（いずれの装置も図示しない）等からデータを入力する。入力部１０が入力を受け付けるデータは、例えば、ログデータＤ１０および閾値ｋがある。入力されたログデータＤ１０および閾値ｋは、制御部２０により参照される。
【００１３】
ログデータＤ１０は、複数のユーザのそれぞれに関する履歴等を記述するデータである。ログデータＤ１０は、例えば、アプリケーション・ネットワーク機器等のログデータやセンサ機器の出力データ等、企業同士・企業−ユーザ間でやり取りされるデータのうち、テキストデータとして扱えるものである。テキストデータとして扱えるログデータＤ１０は、行やレコードといった単位で要素を区切ることができる。本実施形態では、ログデータＤ１０には、１行に１つの履歴（１ユーザが行った動作等）が記述されているものとする。情報匿名化装置１におけるログデータＤ１０の匿名化では、ログデータＤ１０の要素１単位（行・レコード等）の組み合わせを個人識別性が無いように加工する。
【００１４】
閾値ｋは、個人識別性が無いようにログデータＤ１０を匿名化した後のデータを見た時、データの持ち主をｋ人以上にしか絞れないようにする、プライバシー保護の基準に合わせて設定される閾値である。例えば、閾値ｋには、２≦ｋ≦入力されたログデータＤ１０のユーザ数の値が設定される。
【００１５】
制御部２０は、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリと、プログラムを順次実行するＣＰＵ（Central  Processing  Unit）とを有し、これらによって種々の処理を実行する。制御部２０は、生成部２１、匿名化処理部２２およびログデータ変換部２３を有する。
【００１６】
生成部２１は、表データ変換部２１１と、一般化階層木生成部２１２とを有し、匿名化処理部２２によりログデータＤ１０のｋ−匿名化を行うための中間データである表データＤ２１および一般化階層木Ｄ２２を生成する。ｋ−匿名化は、１データオーナー（ユーザ）１行とし、データを属性に分類して列とした２次元表である表データＤ２１に対して適用できる。ＱＩ（準識別子）として設定した属性の組み合わせが対応しうる行がｋオーナー以上存在することをｋ−匿名性といい、ｋ−匿名化では、表データＤ２１に対して、ｋ−匿名性を達成するように値の置換・削除を行う。値の置換には、属性間の包括関係を木構造で示し、置換する値を定義した一般化階層木Ｄ２２を用いる。一般化階層木Ｄ２２を用いた置換は、削除と比較して、木構造によって段階的に情報を落とす（匿名化する）ことができるため、情報損失を少なくできる。
【００１７】
ここで、匿名化後のデータのうち、元のデータのままの箇所を開示箇所と呼び、開示箇所の量を開示量と呼ぶ。この開示量は、文字数や単語数で表す。ｋ−匿名性を満たしているように匿名化した後のログデータ同士を比較した場合、開示量が多いほど、二次活用の際に有用である。よって、開示量の多い匿名化ほど二次活用に有用である。
【００１８】
表データ変換部２１１は、ログデータＤ１０および閾値ｋを参照し、ログデータＤ１０を表データＤ２１に変換する。具体的には、表データ変換部２１１は、区切り文字での分割・文字種分割・形態素解析等の既存技術を用いてログデータＤ１０の単語分割を行う。例えば、文字種分割では、ログデータＤ１０における「ｎａｍｅ＝ｄｂ．ｐａｔｈ＝ｃ：／ｄａｔａ」の行の場合、｛ｎａｍｅ，＝，ｄｂ，．，ｐａｔｈ，＝，ｃ，：，／，ｄａｔａ｝のように分割する。
【００１９】
表データ変換部２１１は、ログデータＤ１０の単語分割をもとに、ｋオーナー以上のログデータＤ１０に出現する単語系列を表データＤ２１の属性（列）に設定する。単語系列は、順序をもった単語の組み合わせである。この単語系列では、行頭から行末における単語同士の隣接・非隣接を区別する。例えば、並んだ単語同士が隣接していない場合は、その間を非隣接箇所とし、特殊文字列「［ＧＡＰ］」をおいて表現する。
【００２０】
例えば｛ｎａｍｅ，［ＧＡＰ］，ｄｂ｝という単語系列において、「［ＧＡＰ］」は、「ｎａｍｅ」と「ｄｂ」と隣接しておらず、「ｎａｍｅ」と「ｄｂ」の間に１つ以上の単語が含まれていることを示す。なお、非隣接箇所を示す特殊文字列は、後から識別可能であればいずれの文字列を用いてもよい。
【００２１】
また、単語系列同士では包括関係を持つ場合がある。例えば、｛ｎａｍｅ，［ＧＡＰ］，ｄｂ｝と｛ｎａｍｅ，＝，ｄｂ｝は包括関係があり、｛ｎａｍｅ，［ＧＡＰ］，ｄｂ｝が｛ｎａｍｅ，＝，ｄｂ｝を包括している。本実施形態では、包括している側（上記の例では｛ｎａｍｅ，［ＧＡＰ］，ｄｂ｝）を上位として扱う。
【００２２】
表データ変換部２１１は、単語分割されたログデータＤ１０の各行から、抽出可能な全ての単語系列を列挙する。具体的には、表データ変換部２１１は、単語分割された後の単語系列をベースに、各単語が「そのまま」である単語系列と、「［ＧＡＰ］」の２通りの状態をとるものとして、取りうる全状態を単語系列として出力する。これにより２の［単語数］乗の単語系列が出力される。
【００２３】
例えば、｛ｎａｍｅ，＝，ｄｂ，．｝の場合は、｛ｎａｍｅ，＝，ｄｂ，．｝、｛［ＧＡＰ］，＝，ｄｂ，．｝、｛［ＧＡＰ］，［ＧＡＰ］，ｄｂ，．｝…の単語系列が出力される。ここで、出力された単語系列において、［ＧＡＰ］が連続している場合は、１つにまとめる。例えば、｛ｎａｍｅ，＝，［ＧＡＰ］，［ＧＡＰ］｝は、｛ｎａｍｅ，＝，［ＧＡＰ］｝とする。また、｛［ＧＡＰ］｝となった単語系列は除外する。
【００２４】
次いで、表データ変換部２１１は、ｋオーナー以上に出現する単語系列を抽出して表データＤ２１の属性（列）に設定し、ログデータＤ１０の各行を、当てはまる属性の中で、包括関係が最上位の属性の値として表データＤ２１の行に設定する。包括関係においては、包括する側を上位とする。また、最上位の属性が複数ある場合は、「文字列長・単語数」や「出現オーナー数」等の基準によって上位の属性を判定する。また、表データ変換部２１１は、既に値が設定されている属性は除外し、値が設定されていない属性の中で、包括関係が最上位の属性の値として設定する。また、ログデータＤ１０の各行において、当てはまる属性が無い場合は、その行は値として設定しないものとする。表データ変換部２１１は、ログデータＤ１０を変換した表データＤ２１として、属性（列）および行を設定した表データＤ２１を出力する。
【００２５】
一般化階層木生成部２１２は、表データＤ２１の各属性について、属性間の包括関係を木構造で示した一般化階層木Ｄ２２を生成する。具体的には、一般化階層木生成部２１２は、表データＤ２１の対象属性の単語系列を根ノードとし、その根ノードからの単語系列の包括関係のある属性をノードとする木構造の一般化階層木Ｄ２２を生成する。一般化階層木生成部２１２は、包括関係のある属性において、包括する側を親ノードとする。また、一般化階層木生成部２１２は、入力されたログデータＤ１０の全ての行と、表データＤ２１の全属性とをノードの候補とする。また、一般化階層木生成部２１２は、ノード追加の際に、親ノード候補が複数ある場合は、親ノードの単語系列の「文字列長・単語数」や「出現オーナー数」等の基準で一つを選択するものとする。
【００２６】
匿名化処理部２２は、生成部２１により生成された表データＤ２１および一般化階層木Ｄ２２をもとに、表データＤ２１に対して各属性の文字列の組み合わせが同一となるユーザ（オーナー）数がｋ以上となるよう各属性の文字列を匿名化するｋ−匿名化を行い、匿名化済み表データＤ２３を生成する。具体的には、匿名化処理部２２は、一般化階層木Ｄ２２における上位のグループの属性から順に、表データＤ２１のオーナーに対応付けられた各属性の単語系列が同一となるオーナー数がｋ以上となるよう各属性の文字列を匿名化する。
【００２７】
ログデータ変換部２３は、生成された匿名化済み表データＤ２３の各行をログデータに変換する。具体的には、ログデータ変換部２３は、まず、匿名化済み表データＤ２３に残った値を全て抽出する。次に、ログデータ変換部２３は、対応するオーナーの元のログデータＤ１０に対して抽出した値を用いて文字列置換処理を行う。より具体的には、元のログデータＤ１０の各行に対し、匿名化済み表データＤ２３より抽出した値の中からマッチする中で最も開示量が多くなる値を選択する。開示量が多くなる値とは、文字列長か単語長が最大の値である。次に、選択した値の［ＧＡＰ］にあたる対象行の文字列を置換する。置換方法は、すべて同じ文字列に置換する「墨塗り」、同じ置換箇所が同じ文字列になるように置換する「トークン化」、復号鍵を持つユーザだけが閲覧できる文字列に置換する「暗号化」等がある。この置換方法は、安全性・活用性を考慮した方法がユーザにより選択され、設定されているものとする。本実施形態では、「トークン化」を用いて置換するものとする。
【００２８】
出力部３０は、制御部２０により匿名化されたログデータＤ３０を出力する。具体的には、出力部３０は、ファイルなどの他、ディスプレイ（図示しない）への表示や、通信装置（図示しない）を介して接続する他の装置への送信などにより、ログデータＤ３０を出力する。
【００２９】
ここで、情報匿名化装置１の動作の詳細を説明する。図２は、実施形態にかかる情報匿名化装置１の動作を例示するフローチャートである。
【００３０】
図２に示すように、処理が開始されると、入力部１０は、ログデータＤ１０および閾値ｋの入力を受け付ける。次いで、表データ変換部２１１は、区切り文字での分割・文字種分割・形態素解析等の既存技術を用いて、受け付けたログデータＤ１０の単語分割を行う（Ｓ１）。
【００３１】
次いで、表データ変換部２１１は、単語分割したログデータＤ１０から全単語系列を列挙する（Ｓ２）。図３は、単語系列の列挙を説明する説明図である。図３に示すように、ログデータＤ１０における「ｎａｍｅ＝ｄｂ．」は、｛ｎａｍｅ，＝，ｄｂ，．｝、｛ｎａｍｅ，［ＧＡＰ］｝、…のように全単語系列が列挙される。
【００３２】
次いで、表データ変換部２１１は、列挙した全単語系列と、入力された閾値ｋとをもとに、ｋオーナー以上に出現する単語系列を抽出し（Ｓ３）、抽出した単語系列を表データＤ２１における表の属性（列）に設定する（Ｓ４）。
【００３３】
図４は、表データＤ２１への変換を説明する説明図である。図４に示すように、オーナーＡ〜オーナーＤのログデータＤ１０と、ｋ＝２とが入力されているものとする。この場合、ｋ＝２オーナー以上に出現する単語系列として「Ｕｓｅｒ＝Ｓａｔｏ」、「Ａ  ｉｓ  ｓｔａｒｔｅｄ」、…が抽出され、表データＤ２１の属性（列）に設定される。
【００３４】
次いで、表データ変換部２１１は、各オーナーのログデータ（Ｄｉ（ｉ＝０〜ｕ））に対する第１ループ処理（Ｓ５〜Ｓ１０）を行う。第１ループ処理において、表データ変換部２１１は、表データＤ２１の表にＤｉ用の行（Ｒｉ）を追加し、ログデータ各行（Ｌｉ（ｉ＝０〜ｍ））すべてに対する第２ループ処理（Ｓ７〜Ｓ９）を行う。
【００３５】
第２ループ処理において、表データ変換部２１１は、ログデータの行（Ｌｉ）をＤｉ用の行（Ｒｉ）の当てはまる属性に値として設定する（Ｓ８）。
【００３６】
図５は、表データへの値の設定を説明する説明図であり、より具体的には、図４に例示したログデータＤ１０および表データＤ２１における値設定を説明している図である。
【００３７】
図５に示すように、表データ変換部２１１は、オーナーＡ〜オーナーＤのログデータに対する第１ループ処理を行うことで、オーナーＡ〜オーナーＤのログデータを表データＤ２１に順次設定する。例えば、オーナーＡについては、ログデータＤ１０として「Ｕｓｅｒ＝Ａｂｅ」とする行（Ｌ１）と、「Ａ  ｉｓ  Ｓｔａｒｔｅｄ」とする行（Ｌ２）とがある。この行（Ｌ１）、（Ｌ２）については、第２ループ処理を行うことで、「Ｕｓｅｒ＝［ＧＡＰ］」、「［ＧＡＰ］  ｉｓ  Ｓｔａｒｔｅｄ」などの当てはまる属性に値として設定される。
【００３８】
なお、表データ変換部２１１は、既に値が設定されている属性は除外するとともに、当てはまる属性の中で、包括関係において最上位の属性に設定する。
【００３９】
図６Ａ、図６Ｂは、表データへの値の設定を説明する説明図である。より具体的には、図６Ａは既に値が設定されている属性は除外する場合を説明し、図６Ｂは包括関係において最上位の属性に設定する場合を説明している。
【００４０】
図６Ａに示すように、オーナーＡのログデータＤ１０における「Ｋ  ｉｓ  ｓｔａｒｔｅｄ」を設定する場合、当てはまる最上位の属性は「［ＧＡＰ］  ｉｓ  ｓｔａｒｔｅｄ」であることから、その属性に値が設定される。次いで、「Ａ  ｉｓ  ｓｔａｒｔｅｄ」を設定する場合、当てはまる最上位の属性は「［ＧＡＰ］  ｉｓ  ｓｔａｒｔｅｄ」であるが、この属性には既に値が設定されている。よって、「Ａ  ｉｓ  ｓｔａｒｔｅｄ」は、包括関係において次の属性である「Ａ  ｉｓ  ｓｔａｒｔｅｄ」に値が設定されることとなる。
【００４１】
図６Ｂに示すように、オーナーＡのログデータＤ１０における「Ａ  ｉｓ  ｓｔａｒｔｅｄ」を設定する場合には、「Ａ  ｉｓ  ｓｔａｒｔｅｄ」、「Ａ  ｉｓ  ［ＧＡＰ］」、「［ＧＡＰ］  ｉｓ  ｓｔａｒｔｅｄ」の３属性が当てはまる。ここで、３属性の包括関係を比較すると、「Ａ  ｉｓ  ［ＧＡＰ］」は「Ａ  ｉｓ  ｓｔａｒｔｅｄ」より上位であり、「［ＧＡＰ］  ｉｓ  ｓｔａｒｔｅｄ」は「Ａ  ｉｓ  ｓｔａｒｔｅｄ」より上位である。なお、「Ａ  ｉｓ  ［ＧＡＰ］」と、「［ＧＡＰ］  ｉｓ  ｓｔａｒｔｅｄ」との間には包括関係はない。ここで、表データ変換部２１１は、包括関係が最上位の属性を、「文字列長・単語数」や「出現オーナー数」等の基準によって選択する。図示例では、単語数によって、「［ＧＡＰ］  ｉｓ  ｓｔａｒｔｅｄ」を上位としている。
【００４２】
図２に戻り、第１ループ処理（Ｓ５〜Ｓ１０）に次いで、一般化階層木生成部２１２は、表データＤ２１の各属性（Ａｊ（ｊ＝０〜ｒ））に対する第３ループ処理（Ｓ１１〜Ｓ１３）を行う。
【００４３】
第３ループ処理において、一般化階層木生成部２１２は、表データＤ２１の属性（Ａｊ）を根ノードとし、その根ノードからの単語系列の包括関係のある属性をノードとする木構造の一般化階層木Ｄ２２を作成する（Ｓ１２）。
【００４４】
図７Ａ、図７Ｂは、一般化階層木Ｄ２２の作成を説明する説明図である。より具体的には、図７Ａは包括関係が１段の一般化階層木Ｄ２２の作成を説明し、図７Ｂは包括関係が多段（２段）の一般化階層木Ｄ２２の作成を説明している。
【００４５】
図７Ａに示すように、「Ｕｓｅｒ＝［ＧＡＰ］」を根ノードとする場合は、その根ノードよりも包括関係が下位の「Ｕｓｅｒ＝Ａｂｅ」、「Ｕｓｅｒ＝Ｓａｔｏ」および「Ｕｓｅｒ＝Ｏｄａ」を下位のノードとする一般化階層木Ｄ２２が作成される。
【００４６】
また、図７Ｂに示すように、「［ＧＡＰ］ｉｓ［ＧＡＰ］」を根ノードとする場合は、その根ノードよりも包括関係が１段下位の「［ＧＡＰ］ｉｓ  ｓｔａｒｔｅｄ」および「［ＧＡＰ］ｉｓ  ｓｔｏｐｐｅｄ」を１段下位のノードとする一般化階層木Ｄ２２が作成される。また、「［ＧＡＰ］ｉｓ  ｓｔａｒｔｅｄ」については、包括関係が１段下位の「Ａ  ｉｓ  ｓｔａｒｔｅｄ」がさらに１段下位のノードとされる。また、「［ＧＡＰ］ｉｓ  ｓｔｏｐｐｅｄ」については、包括関係が１段下位の「Ｃ  ｉｓ  ｓｔｏｐｐｅｄ」および「Ｂ  ｉｓ  ｓｔｏｐｐｅｄ」がさらに１段下位のノードとされる。
【００４７】
図２に戻り、第３ループ処理（Ｓ１１〜Ｓ１３）に次いで、匿名化処理部２２は、表データＤ２１と、一般化階層木Ｄ２２とをもとに、表データＤ２１に対して各属性の文字列の組み合わせが同一となるユーザ数がｋ以上となるよう各属性の文字列を匿名化するｋ−匿名化を行う（Ｓ１４）。そして、匿名化処理部２２は、表データＤ２１に対してｋ−匿名化を行った後の匿名化済み表データＤ２３を生成して出力する。
【００４８】
図８は、匿名化済み表データＤ２３の生成を説明する説明図である。図８に示すように、「Ｕｓｅｒ＝［ＧＡＰ］」、「［ＧＡＰ］＝ｉｓ  ｓｔａｒｔｅｄ」などの属性において、ユーザ数がｋ以上となるように一般化階層木Ｄ２２を参照して匿名化する。例えば、「Ｕｓｅｒ＝［ＧＡＰ］」については、「Ｕｓｅｒ＝Ａｂｅ」、「Ｕｓｅｒ＝Ｏｄａ」がｋ＝２とするｋ−匿名性を満たさないことから、「Ｕｓｅｒ＝［ＧＡＰ］」に匿名化される。
【００４９】
図２に戻り、Ｓ１４に次いで、ログデータ変換部２３は、匿名化済み表データＤ２３の各行（Ｒｊ（ｊ＝０〜ｕ））に対する第４ループ処理（Ｓ１５〜Ｓ１７）を行う。
【００５０】
第４ループ処理において、ログデータ変換部２３は、匿名化済み表データＤ２３の行（Ｒｊ）をログデータに変換する（Ｓ１６）。具体的には、ログデータ変換部２３は、匿名化済み表データＤ２３の行（Ｒｊ）に対応するオーナーの元のログデータＤ１０に対して、Ｒｊの値を用いて文字列置換処理を行う。第４ループ処理（Ｓ１５〜Ｓ１７）に次いで、出力部３０は、匿名化済みのログデータＤ３０を出力する（Ｓ１８）。
【００５１】
図９は、ログデータへの変換を説明する説明図である。図９に示すように、元のログデータＤ１０は「Ｂ  ｉｓ  ｓｔａｒｔｅｄ」であり、匿名化済み表データＤ２３のＲｊの値は「［ＧＡＰ］  ｉｓ  ｓｔａｒｔｅｄ」とする。この場合、ログデータ変換部２３は、「［ＧＡＰ］  ｉｓ  ｓｔａｒｔｅｄ」を用いて、「Ｂ  ｉｓ  ｓｔａｒｔｅｄ」を「ｔｏｋｅ０１  ｉｓ  ｓｔａｒｔｅｄ」と変換する。これにより、ログデータＤ１０は、「Ｂ」の文字列が「ｔｏｋｅ０１」へと匿名化されたログデータＤ３０に変換される。
【００５２】
図１０は、ログデータへの変換を説明する説明図であり、より具体的には、ある行にマッチする「値」が複数ある場合の変換を説明する図である。図１０に示すように、「Ｋ  ｉｓ  ｓｔａｒｔｅｄ」がマッチする値は「［ＧＡＰ］ｉｓ  ｓｔａｒｔｅｄ」である。よって、「Ｋ  ｉｓ  ｓｔａｒｔｅｄ」については、マッチする値を適用して「ｔｏｋｅ０１  ｉｓ  ｓｔａｒｔｅｄ」に変換される。「Ａ  ｉｓ  ｓｔａｒｔｅｄ」がマッチする値は、「［ＧＡＰ］ｉｓ  ｓｔａｒｔｅｄ」および「Ａ  ｉｓ  ｓｔａｒｔｅｄ」である。この場合は、開示量が多い「Ａ  ｉｓ  ｓｔａｒｔｅｄ」を適用し、「Ａ  ｉｓ  ｓｔａｒｔｅｄ」のままとなる。
【００５３】
また、図示した各部の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各部の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、上記の実施形態の生成部２１、匿名化処理部２２、ログデータ変換部２３などのそれぞれを統合してもよい。
【００５４】
さらに、各装置で行われる各種処理機能は、ＣＰＵ（またはＭＰＵ、ＭＣＵ（Micro  Controller  Unit）等のマイクロ・コンピュータ）上で、その全部または任意の一部を実行するようにしてもよい。また、各種処理機能は、ＣＰＵ（またはＭＰＵ、ＭＣＵ等のマイクロ・コンピュータ）で解析実行されるプログラム上、またはワイヤードロジックによるハードウェア上で、その全部または任意の一部を実行するようにしてもよいことは言うまでもない。
【００５５】
ところで、上記の実施形態で説明した各種の処理は、予め用意されたプログラムをコンピュータで実行することで実現できる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図１１は、情報匿名化プログラムを実行するコンピュータ３００の一例を示す説明図である。
【００５６】
図１１が示すように、コンピュータ３００は、各種演算処理を実行するＣＰＵ３０１と、データ入力を受け付ける入力装置３０２と、モニタ３０３とを有する。また、コンピュータ３００は、記憶媒体からプログラム等を読み取る媒体読取装置３０４と、各種装置と接続するためのインタフェース装置３０５と、他の装置と有線または無線により接続するための通信装置３０６とを有する。また、コンピュータ３００は、各種情報を一時記憶するＲＡＭ３０７と、ハードディスク装置３０８とを有する。また、各装置３０１〜３０８は、バス３０９に接続される。
【００５７】
ハードディスク装置３０８には、上記の実施形態で説明した各処理部と同様の機能を有する情報匿名化プログラムが記憶される。また、ハードディスク装置３０８には、情報匿名化プログラムを実現するための各種データが記憶される。入力装置３０２は、例えばユーザからの入力を受け付ける。モニタ３０３は、ユーザからの入力を受け付ける際の操作画面の表示や、各種情報の表示を行う。インタフェース装置３０５は、例えば印刷装置等が接続される。通信装置３０６は、例えばネットワークに接続される。
【００５８】
ＣＰＵ３０１は、ハードディスク装置３０８に記憶された各プログラムを読み出して、ＲＡＭ３０７に展開して実行することで、各種の処理を行う。また、これらのプログラムは、コンピュータ３００を上記の実施形態で説明した各処理部と同様に機能させることができる。
【００５９】
なお、上記の情報匿名化プログラムは、必ずしもハードディスク装置３０８に記憶されている必要はない。例えば、コンピュータ３００が読み取り可能な記憶媒体に記憶されたプログラムを、コンピュータ３００が読み出して実行するようにしてもよい。コンピュータ３００が読み取り可能な記憶媒体は、例えば、ＣＤ−ＲＯＭやＤＶＤディスク、ＵＳＢ（Universal  Serial  Bus）メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、ＬＡＮ等に接続された装置にこの情報匿名化プログラムを記憶させておき、コンピュータ３００がこれらから情報匿名化プログラムを読み出して実行するようにしてもよい。
【００６０】
以上のように、情報匿名化装置１は、複数のユーザのそれぞれに関するログデータから、ｋ以上の数のユーザに共通の文字列を抽出する。また、情報匿名化装置１は、抽出した文字列を包括関係に基づいてグループ化し、各グループに属性を割り当てる。また、情報匿名化装置１は、属性毎に、当該属性中の文字列を当該文字列を含むログデータのユーザに対応付ける。また、情報匿名化装置１は、各属性の文字列の組み合わせが同一となるユーザ数がｋ以上となるよう各属性の文字列を匿名化する。よって、情報匿名化装置１では、属性ごとに、置換の度合いを調整できるため、開示量が低減することを抑止可能とすることができる。
【００６１】
図１２は、匿名化において閾値（ｖ）による開示量の違いを説明する説明図である。ここで、閾値（ｖ）は、ｖ≧ｋとして設定される値であり、ｋ−匿名化を行う際に、段階的に絞り込みを行って中間データ（表）を生成するための閾値である。図１２では、入力されたログデータＤ１００からｋ＝２のｋ−匿名性を満たすコンピュータ３００を生成する場合を例示している。
【００６２】
図１２に示すように、ｖ＝２（＝ｋ）として中間データ（表）を生成し、その表をもとにｋ−匿名性を満たすように変換する場合よりも、ｖ＝３、４（＞ｋ）として中間データを生成してから変換する場合の方が、開示量が多くなる。具体的には、「＊＊＊」に対して「＊＊＊  ｉｓ  ｓｔａｒｔｅｄ」としている分、開示量が多くなっている。このように、ｖ≧ｋの閾値（ｖ）により中間データを生成してから匿名化を行う場合は、閾値（ｖ）により、匿名化後の開示量は変化することから、開示量を多くするための適切な閾値（ｖ）の設定が必要となる。
【００６３】
これに対し、本実施形態では、図８に示すように、一般化階層木Ｄ２２を用いることで、属性ごとに置換の度合いを調整できることから、閾値（ｖ）の設定を行うことなく、開示量の多い匿名化を行うことができる。具体的には、匿名化処理部２２を用いることで、「Ｕｓｅｒ＝［ＧＡＰ］」についてはｖ＝２の単語系列として匿名化し、［［ＧＡＰ］ｉｓ  ｓｔａｒｔｅｄ］についてはｖ＝４の単語系列として匿名化している。
【符号の説明】
【００６４】
１…情報匿名化装置
１０…入力部
２０…制御部
３０…出力部
２１…生成部
２２…匿名化処理部
２３…ログデータ変換部
３００…コンピュータ
Ｄ１０、Ｄ３０、Ｄ１００、Ｄ３００…ログデータ
Ｄ２１…表データ
Ｄ２２…一般化階層木
Ｄ２３…匿名化済み表データ
ｋ…閾値
【図１】
2016133872.tif 000003
【図２】
2016133872.tif 000004
【図３】
2016133872.tif 000005
【図４】
2016133872.tif 000006
【図５】
2016133872.tif 000007
【図６Ａ】
2016133872.tif 000008
【図６Ｂ】
2016133872.tif 000009
【図７Ａ】
2016133872.tif 000010
【図７Ｂ】
2016133872.tif 000011
【図８】
2016133872.tif 000012
【図９】
2016133872.tif 000013
【図１０】
2016133872.tif 000014
【図１１】
2016133872.tif 000015
【図１２】
2016133872.tif 000016