以下、本発明の一実施形態を、図面を参照して詳細に説明する。
なお、以下では、主に電子的な文書データ(テキスト)の形態の個人情報を保護する技術を説明する。以下の実施形態における「個人情報」とは、個人に関する情報であって、氏名、生年月日、その他の情報等により特定の個人を識別することができるものを示す。なお、この個人情報は、他の情報と容易に照合することができ、それにより特定の個人を識別することができることとなるものを含む。この「個人に関する情報(個人情報)」は、氏名、性別、生年月日等個人を識別する情報に限られず、例えば、個人の身体、財産、職種、肩書き等の属性の各々に対して事実、判断、評価等を表す全ての情報である。これらの情報は、暗号化されているか否かを問わない。また、以下の実施形態において、情報主体とは、個人情報によって識別される特定の個人を意味する。さらに、以下の実施形態において、個人情報の匿名化とは、情報主体を識別できないようにその情報主体の個人情報を変換する処理をいう。
また、匿名化する情報は、個人情報が含まれている可能性のある情報であれば任意でよく、とくに限定するものではない。以下の実施形態では、電子メール、Web(World Wide Web)、コールセンタ等により収集される、顧客からの製品やサービス等に対する問合せやコメント等の情報を匿名化する場合の例を説明する。
<第1の実施形態>
まず、第1の実施形態を説明する。
図1を参照し、第1の実施形態のシステム構成例を説明する。
本実施形態のシステムは、コンタクトセンタデータ管理装置101、文章データ解析装置102、識別可能性評価装置103、文章データ匿名化装置104等を有する。これらは、通信ネットワーク105を介して接続される。
コンタクトセンタデータ管理装置101、文章データ解析装置102、識別可能性評価装置103、文章データ匿名化装置104の各々は、例えばPC(Personal Computer)やサーバ装置、ワークステーション等の任意の情報処理装置である。通信ネットワーク105は、例えば、インターネット、専用線、公衆網、LAN(Local Area Network)、WAN(Wide Area Network)等任意の通信ネットワークである。
コンタクトセンタデータ管理装置101は、電子メール、Web、コールセンタ等で収集される情報を管理する。以下、電子メール、Web、コールセンタ等で収集される各件の情報を「文章データ」という。文章データ解析装置102は、文章データの名寄せを行なう。なお、「名寄せ」とは、各々が同一人物の個人情報を含む1件以上の文書データを、1件の文書データに結合する処理を示す。以下、名寄せされ、1件の文書データに結合されたデータを「名寄せデータ」という。また、文章データ解析装置102は、名寄せデータに含まれる単語を抽出する。以下、名寄せデータから抽出した単語と、その各単語が各名寄せデータに含まれている数とを含む情報を「索引情報」という。また、索引情報を生成する処理を「索引構築処理」という。識別可能性評価装置103は、文章データ解析装置102により名寄せされたデータの、情報主体の識別可能性を評価する。文章データ匿名化装置104は、文章データ内の単語を匿名化する。
なお、本実施形態は、文章データ解析装置102により名寄せすることで、同一の情報主体から得られた複数の文章データを1つのものとして扱うことが可能となる。これにより、同一の情報主体から複数件の文章データを取得した場合でも、適切に匿名化することが可能となる。具体的には、例えば、30人の異なる情報主体の各々から合計50個の文章データを取得したものとする。ここで、この文章データのうち、1人の情報主体から「X」という単語を含む文章データを10回取得した場合と、異なる10人の情報主体の各々から「X」という単語を含む文章データを1回ずつ計10個取得した場合とでは、その単語「X」を含むか否かによる情報主体の識別可能性は異なる。例えば、「名寄せ」処理しない場合、取得した文章データにおける単語「X」を含む割合は、前者及び後者とで同じ値の「10/50」となる。しかし、前者の場合、実際には単語「X」を含む文章データは同一の情報主体からのみ得られている。従って、この値は、情報主体の識別可能性としては正確ではない。このことは、1つの単語「X」のみを含む場合の例のみを説明したが、複数の単語の組合せでも同じことがいえる。
そこで、本実施形態では、同一の情報主体の文章データを「名寄せ」することにより、匿名化を適切に行なうことが可能となる。
ここで、図2を参照し、コンタクトセンタデータ管理装置101、文章データ解析装置102、識別可能性評価装置103、文章データ匿名化装置104の各々のハードウェア構成例を説明する。
図2において、コンタクトセンタデータ管理装置101、文章データ解析装置102、識別可能性評価装置103、文章データ匿名化装置104の各々は、CPU(Central Processing Unit)201、ストレージ202、メモリ203、入力装置204、出力装置205、通信装置206等を有する。CPU201、ストレージ202、メモリ203、入力装置204、出力装置205、通信装置206等はバス207により互いに接続されている。
ストレージ202は、例えば、CD-R(Compact Disc)やDVD-RAM(Digital Versatile Disk-Random Access Memory)、シリコンディスク等の記憶メディア及び当該記憶メディアの駆動装置、HDD(Hard Disk Drive)等である。入力装置204は、例えば、キーボード、マウス、スキャナ、マイク等である。出力装置205は、例えば、ディスプレイ装置、スピーカ、プリンタ等である。通信装置206は、例えば、LAN(Local Area Network)ボード等である。コンタクトセンタデータ管理装置101、文章データ解析装置102、識別可能性評価装置103、文章データ匿名化装置104の各々は、各々の通信装置206を介して通信ネットワーク105に接続する。
図1に戻り、コンタクトセンタデータ管理装置101のストレージ202は、文章データテーブル111を有する。文章データテーブル111は、複数の情報主体の文章データを格納する。この情報の詳細は後述する。
文章データ解析装置102のCPU201は、データ名寄せ部121、形態素解析部122、索引情報取得部123等を有する。これらは、文章データ解析装置102のCPU201が自身のメモリ203にロードしたプログラム(図示略)を実行することにより実現する機能である。また、文章データ解析装置102のストレージ202は、名寄せ条件情報124、名寄せデータ管理テーブル125、索引情報テーブル126等を有する。これらの情報の詳細は後述する。
データ名寄せ部121は、名寄せ条件情報124内に含まれる情報に従って、複数の文書データを名寄せする。形態素解析部122は、名寄せデータのそれぞれに対して形態素解析を実施し、文書中に出現する単語等を索引情報テーブル126に格納する。索引情報取得部123は、形態素解析部122により取得された単語の各々が、名寄せデータのそれぞれに何回出現するかを取得し、索引情報テーブル126に格納する。
識別可能性評価装置103のCPU201は、識別可能性評価部131等を有する。これは、識別可能性評価装置103のCPU201が自身のメモリ203にロードしたプログラム(図示略)を実行することにより実現する機能である。また、識別可能性評価装置103のストレージ202は、識別可能性許容値情報132、識別可能性評価結果情報133、匿名化不要語テーブル134等を有する。この匿名化不要語テーブル134は、個人情報の識別可能性の評価処理を効率化するための情報を含む。これらの情報の詳細は後述する。
識別可能性評価部131は、索引情報テーブル126内の単語のうち1つ以上の単語の組合せを選択し、選択した組合せを構成する単語の全てを含む名寄せデータの件数が識別可能性許容値情報132内の値以上となるものを抽出し、識別可能性評価結果情報133、匿名化不要語テーブル134等に格納する。
なお、以下では、文章データ内の単語のうち、出現個数のカウント対象となるものを「出現語」という。また、文章データに含まれる出現語を1つ以上組み合わせたものを「出現語組み」という。また、出現語組みのうち、その出現語組みを含む名寄せデータの件数が識別可能性許容値情報132内の値以上となるものの出現語の各々を「匿名化不要語」という。また、出現語組みを含む名寄せデータの件数が識別可能性許容値情報132の値以上となる出現語組みそのものを「匿名化不要語組み」という。
文章データ匿名化装置104のCPU201は、匿名化部141を有する。これは、文章データ匿名化装置104のCPU201が自身のメモリ203にロードしたプログラム(図示略)を実行することにより実現する機能である。また、文章データ匿名化装置104のストレージ202は、匿名化文章データテーブル142等を有する。この情報の詳細は後述する。
匿名化部141は、文章データテーブル111内の文章データの各々に含まれる出現語のうち、識別可能性評価結果情報133及び匿名化不要語テーブル134に含まれていないものを匿名化し、匿名化した文章データを匿名化文章データテーブル142に格納する。なお、以下では、匿名化部141により匿名化される出現語を「実名語」、匿名化された後の単語を「匿名語」という。
なお、上述の図1において、コンタクトセンタデータ管理装置101、文章データ解析装置102、識別可能性評価装置103、文章データ匿名化装置104の各々は、例えば、異なる企業等により管理されるものであってもよい。また、図1に一例を示すシステムでは、上述した機能を別の装置の各々が有するものとしたが、これに限られるわけではなく、1つの装置が上記全ての機能及び情報を有していても良い。
次に、上述した情報の一例を説明する。
まず、図3を参照し、文章データテーブル111の一例を説明する。なお、図3では、文章データを電子メールにより取得する場合の例を示す。
図3において、文章データテーブル111は、複数のレコードを有する。各レコードは、複数の情報主体の各々から取得した文章データであり、1件の電子メールである。各レコードは、フィールド301、フィールド302、フィールド303、フィールド304、フィールド305等を有する。フィールド301は、文章データの識別子である。フィールド302は、文章データに含まれるヘッダである。フィールド303、フィールド304、フィールド305の各々は、文章データに含まれる取得日時、件名及び本文である。
なお、文章データテーブル111は、予め、コンタクトセンタデータ管理装置101のストレージ202に格納されているものとする。この文章データテーブル111に格納される文章データを取得する技術は任意であり、顧客から受信した電子メールを順次格納等してもよく、また、例えば、Webから入力されたテキストデータ、あるいはコールセンタでオペレータが入力したテキストデータを格納しても良い。また、これらの混合であってもよい。
また、図3の例では、文章データテーブル111をテーブル形式としているが、これに限られるわけではない。文章データテーブル111は、例えばXML(eXtensible Markup Language)等の任意のデータ形式でもよい。
図4を参照し、名寄せ条件情報124の一例を説明する。
図4において、名寄せ条件情報124は、名寄せ条件情報401を有する。名寄せ条件情報401は、データ名寄せ部121が名寄せするための情報を指定するものである。上述のように、データの「名寄せ」とは、1人の情報主体による複数件の文書データを、1件の文書データに結合する処理を意味する。図4に一例を示す名寄せ条件情報124の例では、ヘッダに記載の情報である「From」、即ち、情報主体のメールアドレスを基準として名寄せすることを示している。後述する識別可能性の評価は、名寄せデータに対し行なわれる。即ち、名寄せ条件情報401は、識別可能性をどのようなデータ単位で判別するかを示すものである。従って、図4の例では、識別可能性はメールアドレスごとに情報主体を区別することを示している。
なお、名寄せ条件情報401は「From」に限られるわけではなく、文章データに含まれる任意の情報のうち1つ以上を指定することが可能である。具体的には、例えば、文章データに顧客識別番号、氏名、住所、電話番号等の属性情報が含まれている場合は、これらの属性情報のうち1つ以上を名寄せ条件情報401としても良い。また、例えば、文書データに含まれる1個以上の任意の単語を名寄せ条件情報401としても良い。即ち、名寄せ条件情報401は、異なる情報主体の個人情報が含まれる複数の文書データの各々を、同一の個人の個人情報を含むものに分類するための情報であればよい。
上記名寄せ条件情報124は、予め、文章データ解析装置102のストレージ202に格納されているものとする。
図5を参照し、名寄せデータ管理テーブル125の一例を説明する。
図5において、名寄せデータ管理テーブル125の各レコードは、フィールド501、フィールド502等を有する。フィールド501は、名寄せデータの識別子である。フィールド502は、同じレコードのフィールド501の値で示される名寄せデータを構成する文章データの識別子である。この識別子は、文章データテーブル111における各文章データの識別子と同じである。
名寄せデータ管理テーブル125を生成する動作の詳細については後述する。
図6を参照して、索引情報テーブル126の一例を説明する。
図6において、索引情報テーブル126の各レコードは、フィールド601、フィールド602、フィールド603、フィールド604、フィールド605、フィールド606等を有する。
索引情報テーブル126の最初の行のレコードにおいて、フィールド602、603、604、605、606は、各文章データに含まれている全ての出現語である。なお、図6の例では、フィールド602、603、604、605、606のみを示しているが、これに限られるわけではなく、索引情報テーブル126には、図3に一例を示す文章データテーブル111内の文章データから抽出された全ての出現語の各々が各フィールドに格納される。即ち、索引情報テーブル126は、名寄せデータの識別子と、図3に一例を示す文章データテーブル111内の文章データから抽出した全ての出現語との合計分のフィールドを有する。また、索引情報テーブル126の次行以降の各レコードにおいて、フィールド601は名寄せデータの識別子である。また、フィールド602、603、604、605、606は、フィールド601の名寄せデータにおける、最初の行の各フィールド値の出現語の出現数を表している。具体的には、図6の例では、例えば、フィールド601「0」の名寄せデータには、フィールド602、603、604、605、606等の各々に示される出現語「foo@a.com」、「加湿器」、「ABC−123」、「ファン」、「異音」等がそれぞれ「2」、「2」、「2」、「1」、「2」回ずつ出現することを示している。
索引情報テーブル126を生成する動作の詳細については後述する。
図7を参照し、識別可能性許容値情報132の一例を説明する。
図7において、識別可能性許容値情報132は、識別可能性許容値情報701を有する。識別可能性許容値情報701は、各出現語組みを構成する全ての単語が、名寄せデータのそれぞれに出現した回数の許容数である。即ち、名寄せデータに含まれる出現語組みが、識別可能性許容値情報701の値以上であれば、その出現語組みは、識別可能性の低い安全な組みとし、この出現語組みに含まれる出現語が開示されても情報主体を識別することが困難であると見なす。逆に、ある出現語組みの出現回数が、識別可能性許容値情報701の値未満であれば、この出現語組みは識別可能性の高い危険な組みとする。
識別可能性許容値情報132は、予め、識別可能性評価装置103のストレージ202に格納されているものとする。
図8を参照し、識別可能性評価結果情報133の一例を説明する。
ここで、識別可能性評価結果情報133は、匿名化不要語を示す。本実施形態では、識別可能性評価結果情報133は、匿名化不要語組みに含まれる匿名化不要語の数ごとに別のテーブルを有するものとする。以下、このテーブルを「識別可能性評価結果情報テーブル801」という。即ち、識別可能性評価結果情報133は、匿名化不要語組みに含まれる出現語の数の分、識別可能性評価結果情報テーブル801を有するものとする。以下、各識別可能性評価結果情報テーブル801を区別して説明する場合、例えば「識別可能性評価結果情報テーブル801a」というように符号を付与して説明する。
図8(a)において、識別可能性評価結果情報テーブル801aは、1個の匿名化不要語からなる匿名化不要語組みに関する情報を格納する。識別可能性評価結果情報テーブル801aの各レコードは、フィールド811、フィールド812等を有する。フィールド811は、フィールド812で示される1個の匿名化不要語が出現する名寄せデータの個数DF(Document Frequency)である。フィールド812は、匿名化不要語である。具体的には、例えば、図8(a)の場合、フィールド812「加湿器」を含む名寄せデータの数は、フィールド811「150」個であることを示す。
図8(b)において、識別可能性評価結果情報テーブル801bは、2個の匿名化不要語からなる匿名化不要語組みに関する情報を格納する。識別可能性評価結果情報テーブル801bの各レコードは、フィールド821、フィールド822、フィールド823等を有する。フィールド821は、フィールド822及びフィールド823で示される2個の匿名化不要語の両方が出現する名寄せデータの個数DFである。フィールド822、フィールド823の各々は、匿名化不要語である。具体的には、例えば、図8(b)の場合、フィールド822「テレビ」、フィールド823「音量」の両方を含む名寄せデータの数は、フィールド821「100」個であることを示す。
識別可能性評価結果情報テーブル801の各々を生成する動作の詳細については後述する。
図9を参照し、匿名化不要語テーブル134の一例を説明する。
図9において、匿名化不要語テーブル134の各レコードは、フィールド901、フィールド902等を有する。フィールド901は、処理ループ番号である。フィールド902は、匿名化不要語を表す。
匿名化不要語テーブル134を生成する動作の詳細は後述する。
図10を参照し、匿名化文章データテーブル142の一例を説明する。
図10において、匿名化文章データテーブル142は、上述の文章データテーブル111内の単語を匿名化したものである。即ち、後述する評価処理により、文章データテーブル111の各レコードに含まれる出現語組みが、識別可能性の高い危険な組みであると判定された場合に、その出現語組みの出現語の各々を匿名化したものである。図10の例では、実名語「foo@a.com」、実名語「ABC−123」、実名語「佐藤」を匿名化した場合の例を示す。即ち、図10の例では、実名語「foo@a.com」を匿名語「A0」に、実名語「ABC−123」を匿名語「A1」に、実名語「佐藤」を匿名語「A2」に置換している。
なお、図10の例では、匿名語のそれぞれをカギ括弧で囲んでいるが、これは説明の便宜上のものであり、実際の出力においてカギ括弧は在ってもよく、無くても良い。即ち、どの単語が匿名化されているのかを明示するか否かは任意でよい。また、明示の手段はカギ括弧に限るわけでなく、色やフォントを変更する等任意でよい。
匿名化文章データテーブル142を生成する動作の詳細については後述する。
次に、本実施形態の動作例を説明する。
まず、図11を参照し、シーケンス例を説明する。
図11において、コンタクトセンタデータ管理装置101は、文章データを収集し、文章データテーブル111に格納する(S1101)。上述の通り、文章データテーブル111には、1個の文章データ(受信メール)が1つのレコードに格納される。
文章データ解析装置102は、コンタクトセンタデータ管理装置101から読み出した文章データテーブル111の複製を、自身のメモリ203に格納する(S1102)。なお、この処理を開始するトリガーは特に限定するものではないが、例えば、文章データテーブル111に追加もしくは更新されたデータの件数が所定の件数以上となる場合や、前回の処理実行後から所定の日時が経過した場合等である。
次に、文章データ解析装置102のデータ名寄せ部121は、名寄せ処理を行って名寄せデータ管理テーブル125を生成する。また、形態素解析部122は、名寄せデータに対し形態素解析を行う。索引情報取得部123は、索引構築処理を行なう。これにより、索引情報テーブル126が生成される(S1103)。この処理の詳細は後述する。
次に、識別可能性評価装置103は、文章データ解析装置102から読み出した索引情報テーブル126の複製を、自身のメモリ203に格納する(S1104)。以下、S1104の処理により複製されるテーブルを特に区別する場合、「索引情報テーブル126´」という。この索引情報テーブル126´は、作業用のテーブルである。索引情報テーブル126´の格納処理及び検索処理を実現する技術は任意でよく、例えば、「高野明彦他:汎用連想計算エンジンの開発と大規模文書分析への応用、情報処理振興事業協会、独創的情報技術育成事業、2001年度成果報告論文」に開示されたツールを用いてもよい。なお、以下の説明では、索引情報テーブル126´における「i」番目の行の、「j」番目の列の値を、「D[i][j]」と表記する。ただし、「i」は0以上(N-1)以下の整数、「j」は0以上(M-1)以下の整数である。ここで、「N」は、索引情報テーブル126´のレコード件数である。また、「M」は、索引情報テーブル126´における出現語を表すフィールドの総数である。
なお、この処理を起動するタイミングは、上述のS1103を実行した後であれば任意でよいが、例えば、管理者が識別可能性評価装置103の入力装置204等を用いて起動を指示した場合でもよく、また、文章データ解析装置102が上述のS1103の処理を終了した後に、識別可能性評価装置103に評価処理の実行を要求する情報を送信した場合でもよい。
次に、識別可能性評価装置103は、索引情報テーブル126´を参照し、出現語がとり得る組み合わせを取得し、取得した組合せに対する識別可能性を評価する(S1105)。これにより、識別可能性評価結果情報133、匿名化不要語テーブル134等が生成される。この動作の詳細は後述する。
次に、文章データ匿名化装置104は、識別可能性評価装置103のストレージ202から読み出した識別可能性評価結果情報133(識別可能性評価結果情報テーブル801)の複製を、メモリ203に格納する(S1106)。以下、識別可能性評価装置103の識別可能性評価結果情報133(識別可能性評価結果情報テーブル801)と、文章データ匿名化装置104のメモリ203上の識別可能性評価結果情報133(識別可能性評価結果情報テーブル801)とを特に区別する場合、文章データ匿名化装置104のものを「識別可能性評価結果情報133´(識別可能性評価結果情報テーブル801´)」と示す。また、識別可能性評価結果情報133における「m」番目の識別可能性評価結果情報テーブル801を、「SW[m]」と記す。ただし、「m」は0以上M未満の整数である。ここで、「M」は、上述のように、出現語の個数である。SW[m]の各レコードには、匿名化不要語組みが含まれる。
次に、文章データ匿名化装置104は、文章データ解析装置102から読み出した索引情報テーブル126、名寄せデータ管理テーブル125の複製を、自身のメモリ203内に格納する(S1107)。S1104と同様に、以下では、文章データ匿名化装置104のメモリ203上の索引情報テーブル126を区別する場合「索引情報テーブル126´」という。また、以下では、文章データ匿名化装置104のメモリ203上の名寄せデータ管理テーブル125を区別する場合「名寄せデータ管理テーブル125´」という。
次に、文章データ匿名化装置104は、コンタクトセンタデータ管理装置101の記憶する文章データテーブル111から読み出した文章データの複製を、メモリ203に格納する(S1108)。なお、1回のS1108の処理で読み出す文章データの数は任意でよいが、ここでは、S1108の処理で1件の文章データを読出し、その文章データに対し、後述するS1109、S1110の処理を行ない、S1108〜S1110の処理を複数回繰り返すことで、複数の文章データを匿名化するものとする。しかし、これに限られるわけではなく、文章データ匿名化装置104は、S1108の処理で複数件の文章データを読出し、読み出した文章データに対しS1109、S1110の処理を行なってもよい。
文章データ匿名化装置104は、識別可能性評価結果情報テーブル801´の各々に格納された匿名化不要語組みの各々を参照し、上述のS1108の処理でメモリ203内に複製された文書データに含まれる出現語のうち、匿名化不要語組みに該当しない出現語を匿名化する(S1109)。S1109の詳細は後述する。
次に、文章データ匿名化装置104は、上述のS1109の処理結果をストレージ202上の匿名化文章データテーブル142に出力する(S1110)。この匿名化文章データテーブル142内の情報は、文章データ匿名化装置104の出力装置205、又は、通信ネットワーク105に接続等されたPC等の情報端末の出力装置(図示略)に出力される。
次に、各機器での単体の処理を説明する。
まず、図12を参照し、上述のS1103の処理を説明する。なお、上述のように、S1103の処理を開始する段階では、文章データ解析装置102のメモリ203に、コンタクトセンタデータ管理装置101から取得した文章データテーブル111が格納されている。
図12において、文章データ解析装置102のデータ名寄せ部121は、名寄せ条件情報124を参照し、名寄せ条件情報を取得する(S1201)。次に、データ名寄せ部121は、メモリ203内の文章データテーブル111の各レコードを参照し、S1201で取得した名寄せ条件情報に従い、同一の名寄せデータを構成する文章データ(レコード)を選択し、選択した文章データの文章#を取得する(S1202)。そのために、データ名寄せ部121は、文章データテーブル111の各レコードを参照し、名寄せ条件情報124内に格納される情報に従い名寄せされる文章データのレコードを選択し、選択したレコードのフィールド301の値を取得する。
次に、データ名寄せ部121は、名寄せデータの識別子と、その名寄せデータを構成する文章データの文章#とを格納する(S1203)。そのために、データ名寄せ部121は、名寄せデータ管理テーブル125の各レコードのフィールド501、フィールド502の各々に、名寄せデータの識別子と、上述のS1203の処理で取得した、その名寄せデータを構成する文章データの文章#とを格納する。この名寄せデータの識別子は任意でよいが、ここでは、連番であるものとして説明する。
具体的には、例えば、図4に一例を示す名寄せ条件情報124の場合、名寄せ条件情報401「From」である。この場合、データ名寄せ部121は、図3に一例を示す文章データテーブル111の各レコードの文章データのうち、名寄せ条件情報401「From」の値が同一なものを、同一の名寄せデータを構成する文章データであるものとする。具体的には、例えば、図3に一例を示す文章データテーブル111の場合、データ名寄せ部121は、フィールド302の値が「foo@a.com」であるレコードは、同一の名寄せデータを構成するものとする。従って、データ名寄せ部121は、図3に一例を示す文章データテーブル111から、フィールド302の値が「foo@a.com」を有するレコードのフィールド301の値「0」、「10」等を取得する。次に、データ名寄せ部121は、名寄せデータ管理テーブル125に、フィールド501、フィールド502の各々の値が「0」、「0」であるレコードと、フィールド501、フィールド502の各々の値が「0」、「10」であるレコードとを追加する。データ名寄せ部121は、フィールド302「XX@y.ne.jp」等に対しても、同じ処理を行なう。
次に、形態素解析部122は、名寄せデータの各々に対し、形態素解析処理を行なう(S1204)。ここで、形態素解析とは、文章を、文字列の最小単位である素(形態素)に分解し、分解した形態素の各々の品詞を判別することをさす。形態素解析により判別する品詞は、日本語であれば、例えば、「名詞」、「動詞」、「助詞」等である場合や、「動詞-自立」や「助詞-接続助詞」等のより詳細な品詞等である場合がある。この形態素解析処理を実現する技術は従来技術と同じであり、特に限定するものではないが、例えば、隠れマルコフモデル(HMM;Hidden Markov Model)や、「松本裕治他:NAIST Technical Report、NAIST-IS-TR97007、February 1997」に開示されているツール等を用いるとよい。
次に、索引情報取得部123は、上述のS1204の処理で取得した形態素のうち少なくとも一部を「出現語」とし、名寄せデータの各々に対し、各出現語の出現件数をカウントし、その結果を索引情報テーブル126に格納する(S1205)。なお、出現語とする形態素は特に限定するものではないが、ここでは、品詞が「名詞」である形態素を出現語とする。索引情報取得部123は、索引情報テーブル126の各レコードの最初のフィールドに名寄せデータの識別子を格納し、最初のレコードの2番目以降のフィールドの各々に出現語を格納する。次に、索引情報取得部123は、名寄せデータ毎に、索引情報テーブル126の最初のレコードの2番目以降のフィールドに格納した出現語の各々が含まれている数をカウントし、その数を、索引情報テーブル126の、2番目以降のレコードの各々に格納する。索引情報取得部123は、このように生成した索引情報テーブル126を、ストレージ202に出力する。
具体的には、例えば、上述のように、図3に一例を示す文章データテーブル111の文章#「0」、「10」から、1つの名寄せデータが生成される場合の例を説明する。この場合、索引情報取得部123は、名寄せデータに含まれる単語「foo@a.com」、「加湿器」、「ABC−123」、「ファン」、「異音」の各々を出現語とする。次に、索引情報取得部123は、この名寄せデータから、出現語「foo@a.com」、「加湿器」、「ABC−123」、「ファン」、「異音」の各々の出現回数「2」、「2」、「2」、「1」、「2」を取得する。次に、索引情報取得部123は、索引情報テーブル126の最初のレコードの2番目以降のフィールドの各々に、「foo@a.com」、「加湿器」、「ABC−123」、「ファン」、「異音」等を格納する。さらに、索引情報取得部123は、索引情報テーブル126の、2番目のレコードのフィールドの各々に、名寄せデータの識別子「0」、出現語の各々の出現回数「2」、「2」「2」、「2」、「1」、「2」等を格納する。
なお、この索引構築処理は従来技術と同じであり、特に限定するものではないが、例えば「高野明彦他:汎用連想計算エンジンの開発と大規模文書分析への応用、情報処理振興事業協会、独創的情報技術育成事業、2001年度成果報告論文」に開示されているツール等を用いるとよい。
次に、図13を用いてS1105の動作の詳細を説明する。なお、上述のように、識別可能性評価装置103は、上述のS1104の処理で、文章データ解析装置102から索引情報テーブル126を取得し、自身のメモリ203に格納している。ここでは、上述のように、識別可能性評価装置103のメモリ203に格納された索引情報テーブル126を区別する場合「索引情報テーブル126´」という。
まず、識別可能性評価装置103の識別可能性評価部131は、ストレージ202上の識別可能性許容値情報132から識別可能性許容値情報701の値を読出し、読み出した値を変数「K」の値とする(S1301)。具体的には、例えば、図7に一例を示す識別可能性許容値情報132の場合、識別可能性評価部131は、「K=100」とする。
次に、識別可能性評価部131は、評価対象単語を取得する(S1302)。そのために、識別可能性評価部131は、索引情報テーブル126´から評価対象単語を取得する。例えば、識別可能性評価部131は、索引情報テーブル126´の、出現語を示すフィールド毎に、出現個数が「1以上」のレコードの件数をカウントする。次に、識別可能性評価部131は、カウントしたレコード件数が変数「K」以上のフィールドの出現語の各々を示す番号を、配列「W」に格納する。ここで、配列「W」は、サイズ「M」の配列であり、配列「W」の各要素を「W[m]」で示す。この「m」は、上述のように0以上M未満の整数である。また、出現語の各々を示す番号は、索引情報テーブル126´における出現語を表すフィールドの並び順を意味する。以降の処理では、識別可能性評価結果情報133、匿名化不要語テーブル134の各々に関しても、出現語を表す文字列の代わりに、出現語に割り当てた番号で管理する。さらに、識別可能性評価部131は、配列「W」に格納された出現語の個数を、変数「M´」に格納しておく。
具体的には、例えば、図6に一例を示す索引情報テーブル126(索引情報テーブル126´)の場合、出現語「foo@a.com」、「加湿器」、「ABC−123」、「ファン」、「異音」の各々は、番号「0」、「1」、「2」、「3」、「4」で示されるものとする。識別可能性評価部131は、まず、出現語を示すフィールド毎に、出現個数が「1以上」のレコードの件数をカウントする。例えば、図6に一例を示す識別可能性評価結果情報133に示される名寄せ#「0」〜「2」の名寄せデータのみの場合に限定して説明すると、識別可能性評価部131は、フィールド602「foo@a.com」の出現個数が「1以上」のレコードは、名寄せ#601の値が「0」であるものが該当するので、このレコードの件数として「1」を取得する。同様に、識別可能性評価部131は、フィールド604「ABC−123」の出現個数が「1以上」のレコードは、名寄せ#601の値が「0」、「2」であるものが該当するので、このレコードの件数として「2」を取得する。ここで、例えば、上記5個の出現語のうち、「foo@a.com」、「ABC−123」の各々を含むレコード件数が「K=100」未満であり、その他の単語の各々を含むレコード件数が「K=100」以上である場合、識別可能性評価部131は、配列「W」に、「加湿器」、「ファン」、「異音」の番号を処理した順に格納する。具体的には、識別可能性評価部131は、「W[0]=1」、「W[1]=3」、「W[2]=4」を格納する。さらに、識別可能性評価部131は「M´=2」とする。
次に、識別可能性評価部131は、識別可能性評価結果情報133の各識別可能性評価結果情報テーブル801のテーブル構造、及び、匿名化不要語テーブル134のテーブル構造を初期化する(S1303)。具体的には、識別可能性評価部131は、自身のメモリ203内に、レコードの空な識別可能性評価結果情報テーブル801を「M」個構築する。これらのテーブルの各レコードは、図8に一例を示すように、出現語を格納する1つ以上のフィールドと、その出現語が含まれている名寄せデータの数を格納する1つのフィールドから成る。即ち、識別可能性評価部131は、テーブルの各々が、名寄せデータの数を格納する1つのフィールドと、各々が単語を格納する1、2、…、M個のフィールドとを有するものを作成する。また、識別可能性評価部131は、図9に一例を示すように、フィールド901及びフィールド902を有する匿名化不要語テーブル134を構築し、レコードを空にしておく。
次に、識別可能性評価部131は、名寄せデータに含まれている出現語組みに対する評価を行なう。ここで、本実施形態の出現語組みをツリーで示したものを、図14に一例を示すツリーを参照して説明する。
図14において、ツリー1400は、図6に一例を示す索引情報テーブル126内の出現語組みの一例を示すものである。ツリー1400は複数のノードを有し、各ノードは、親子関係により出現語組みを表している。例えば、図14に示すツリー1400の場合、ノード1401は「foo@a.com」という1個の出現語からなる出現語組みを示す。また、例えば、ノード1402は、「foo@a.com」及び「加湿器」という2個の出現語からなる出現語組みを表している。また、例えば、ノード1403は、「foo@a.com」及び「ABC−123」という2個の出現語からなる出現語組みを表している。ルートノードは、探索ツリー1400の管理用ノードである。
以下の説明では、あるノードとルートノードとの間に存在するアークの個数を、そのノードの深さという。ただし、ルートノードの深さは「ゼロ」とする。また、あるノードとルートノードとのパス上に存在するノード群を当該ノードの先祖ノード、あるノードにパス上で隣接する先祖ノードを当該ノードの親ノードと呼ぶ。ルートノードを除く1個のノードの親ノードの個数は1つである。また、あるノードよりも深さが1大きく、かつ、パス上で隣接するノードのことを子ノードと呼ぶ。1個のノードの子ノードの個数は0以上である。また、あるノードAと共通の親ノードを持つ別のノードBがあるとき、ノードBはノードAの兄弟ノードと呼ぶ。また、子ノードを一切持たないノードのことをリーフノードと呼ぶ。具体的には、例えば、ツリー1400の場合、ノード1402の親ノードは、ノード1401である。また、ノード1402の兄弟ノードは、ノード1403である。ノード1402の子ノードは、ノード1404である。
また、以下の説明では、索引情報テーブル126´において、ノードが表す出現語組みを有する名寄せデータのレコード件数を算出する処理のことをノードの評価処理という。また、ノードの評価処理により算出されたレコード件数が、識別可能性許容値情報132に格納した値以上となるノードのことを「安全ノード」、安全ノードではないノードのことを「危険ノード」という。また、安全ノードに該当する出現語組みを「匿名化不要語組み」、匿名化不要語組みを構成する出現語を「匿名化不要語」という。
本実施形態では、以下で説明するノードの評価処理は、次の規則に従って探索ツリー上のノードを順に評価する。
規則(1)ルートノードを起点とする。
規則(2)あるノードの評価が終了した時点で、処理対象となる子ノードと兄弟ノードが存在する場合は、子ノードから先に評価する。
ただし、上記規則(2)において複数の子ノードが存在する場合、子ノードが表す出現語に割り当てた整数が小さい方を先に評価する。また、上記規則(2)において、複数の兄弟ノードが存在する場合は、兄弟ノードが表す出現語に割り当てた整数が小さい方を先に評価する。
図13に戻り、上述のS1303の処理の後、識別可能性評価部131は、ループ変数「j」を初期化する(S1304)。具体的には、識別可能性評価部131は、「j=0」とする。次に、識別可能性評価部131は、「j<M´」であるか否か判定する(S1305)。
S1305の判定の結果、「j<M´」である場合、識別可能性評価部131は、カレントノードを設定する(S1306)。具体的には、識別可能性評価部131は、カレントノードを参照するための変数「P」を、「P=j」とする。ただし、ここでは、出現頻度が「K」以上の出現語を処理対象とするため、カレントノードを表す出現語の番号は、W[P]で参照される。
次に、識別可能性評価部131は、カレントノードに該当する出現語が処理済みであるか否かを判定する(S1307)。そのために、識別可能性評価部131は、例えば、匿名化不要語テーブル134の各レコードを参照し、フィールド501「L#」の値が「j」未満であり、且つ、フィールド502の値が「W[P]」に一致するものが含まれているか否かを判定する。該当するものが含まれている場合、識別可能性評価部131は、カレントノードに該当する出現語が処理済みであると判定する。
S1307の判定の結果、カレントノードに該当する項目値が処理済みでないと判定された場合、識別可能性評価部131は、カレントノードを評価する(S1308)。この詳細な説明は後述する。
次に、識別可能性評価部131は、カレントノードの子孫ノード及び兄弟ノードを評価する(S1309)。ただし兄弟ノードの判定においては、配列「W」においてj番目の出現語を深さ1に持つ子孫ノード群を評価対象とする。この詳細な説明は後述する。
上記S1308、S1309の処理部により、識別可能性評価結果情報テーブル801が生成される。
次に、識別可能性評価部131は、「j=j+1」として(S1310)、上述のS1305以降の処理を再度行なう。
一方、S1305の判定の結果、j<M´でない場合、識別可能性評価部131は、メモリ203上の識別可能性評価結果情報テーブル801をストレージ202に格納する(S1311)。
次に、図15を参照し、上述のS1308においてカレントノードを評価する動作の詳細を説明する。
まず、識別可能性評価部131は、カレントレコードを示すループ変数「i」及び処理対象ノードに該当するレコード件数を示す変数「df」を初期化する(S1501)。具体的には、識別可能性評価部131は、「i=0」、「df=0」とする。なお、このとき、カレントレコードは、直前のS1306の処理で設定された変数「P」であるものとする。次に、識別可能性評価部131は、「i<N」であるか否か判定する(S1502)。この「N」は、上述のように、索引情報テーブル126´のレコード件数である。
S1502の判定の結果、i<Nである場合、識別可能性評価部131は、索引情報テーブル126´内の「i」番目のレコードに、評価対象の出現語が含まれているか否か判定する(S1503)。そのために、識別可能性評価部131は、例えば、索引情報テーブル126´のi番目のレコードの「W[P]」番目の値、すなわち、「D[i][W[P]]」の値が、1以上であるか否かを判定する。
上述のS1503の判定の結果、評価対象の出現語が含まれている場合、識別可能性評価部131は「df=df+1」とし(S1504)、さらに、「i=i+1」とする(S1505)。この後、識別可能性評価部131は、上述のS1502以降の処理を行なう。
一方、上述のS1502の判定の結果、i<Nでない場合、識別可能性評価部131は、図15に示した処理フローを終了し、S1309の処理を行なう。
次に、図16を参照し、上述のS1309の、深さ2以上のノード群を評価する動作例の詳細を説明する。なお、識別可能性評価部131がS1309を開始する際の初期状態では、変数「P」の値は、直前のS1308終了時のカレントノードの値である。また、変数「df」の値は、直前のS1308終了時の値である。
識別可能性評価部131は、処理対象のノードの先祖ノード集合を表すスタック変数「ST」を初期化する(S1601)。ここで、スタック変数「ST」は、一般にFILO(First In Last Out)バッファと呼ばれるキューを表している。本実施形態において、スタック変数「ST」の各要素は、変数「P」の値である。具体的には、識別可能性評価部131は、S1601の処理で、スタック変数「ST」に格納されている全ての要素を取り出し、スタックを空にする。
次に、識別可能性評価部131は、「df≧K」であるか否か判定する(S1602)。この「K」は、上述のように、識別可能性許容値情報132の識別可能性許容値情報701の値である。
S1602の判定の結果、df≧Kである場合、識別可能性評価部131は、匿名化不要語組みの候補を一時的に保存する(S1603)。具体的には、スタック変数「ST」、変数「df」の各々の値を、それぞれスタック変数「ST´」、変数「df´」の値として格納する。
次に、識別可能性評価部131は、処理対象となる子ノードが存在するか否か判定する(S1604)。そのために、識別可能性評価部131は、「P<(M´−1)」であるか否か判定する。この判定の結果、識別可能性評価部131は、「P<(M´−1)」である場合は子ノードが存在すると判定し、「P<(M´−1)」でない場合は子ノードが存在しないと判定する。
S1604の判定の結果、子ノードが存在しない場合、識別可能性評価部131は、後述するS1610以降の処理を行なう。
S1604の判定の結果、子ノードが存在する場合、識別可能性評価部131はスタック変数「ST」に、変数「P」の値を追加する。
次に、識別可能性評価部131は、現在のカレントノードの子ノードを、新たなカレントノードとする(S1605)。そのために識別可能性評価部131は、「P=P+1」とする。
次に、識別可能性評価部131は、変数「df」の値を「df=0」とし(S1607)、続いて、直前のS1606の処理で設定したカレントノードに該当する出現語が処理済みか否かを判定する(S1608)。この処理の具体的な例は、上述のS1307と同じであるので省略する。
S1608の判定の結果、カレントノードに該当する出現語が処理済みでない場合、識別可能性評価部131は、カレントノードを評価し(S1609)、上述のS1602以降の処理を再度行なう。S1609の動作は、上述のS1501からS1505と同じであるので省略する。ただし、S1503の、カレントノードに該当する出現語組みを有するか否かの判定のみ異なる。ここでは、識別可能性評価部131は、この判定を、変数「P」及びスタック変数「ST」に格納されている出現語が全て存在する場合、レコードはカレントノードに該当する出現語組みを有するものと判定する。具体的には、スタック変数「ST」の「k」番目の要素を「ST[k]」とすると、識別可能性評価部131は、「D[i][W[P]]≧1」であり、且つ、全ての「k」について「D[i][W[ST[k]]]≧1」である場合、レコードはカレントノードに該当する出現語組みを有するものと判定する。ただし、「k」は0以上、スタック変数「ST」に格納した要素数未満の整数である。
S1609の終了後、識別可能性評価部131は、再度、S1602以降の処理を行なう。
一方、S1602で「df≧K」でないと判定された場合、もしくは、S1604で処理対象となる子ノードが存在しないと判定された場合、識別可能性評価部131は、上述のS1603で一時保存していたスタック変数「ST´」、変数「df´」の値の各々を、索引情報テーブル126、匿名化不要語テーブル134に格納する(S1610)。そのために、例えば、スタック変数「ST´」の有する要素数が「x」個である時、識別可能性評価部131は、識別可能性評価結果情報133の識別可能性評価結果情報テーブル801のうち「x」番目のテーブルに新たなレコードを追加し、このレコードの値として、スタック変数「ST´」内の各要素と、変数「df´」の値とを格納する。さらに、識別可能性評価部131は、図9の匿名化不要語テーブル134に新たなレコードを追加し、追加したレコードのフィールド501、502の各々の値として、変数「i」、及び、スタック変数「ST´」が有する各要素の出現語の値を格納する。ただし、全てのフィールドが同じ値をとるレコードが既にテーブル中に存在する場合は、追加は行わない。
具体的には、スタック変数「ST´」に「{テレビ、音量}」が格納され、「df´=100」である場合の例を説明する。この場合、スタック変数「ST´」が有する要素数は2であるため、識別可能性評価部131は、「2」番目の識別可能性評価結果情報テーブル801に対し、フィールド821が「df´=100」、フィールド822が「W[P1]=テレビ」、フィールド823が「W[P2]=音量」であるレコードを追加する。
次に、識別可能性評価部131は、処理対象となるカレントノードの兄弟ノードが存在するか否かを判定する(S1611)。具体的には、識別可能性評価部131は、「P<(M´−1)」である場合、兄弟ノードが存在すると判定する。
S1611の判定の結果、兄弟ノードが存在すると判定した場合、識別可能性評価部131は、兄弟ノードをカレントノードに設定する(S1612)。具体的には、「P=P+1」とする。
次に、識別可能性評価部131は、「df=0」とする(S1613)。さらに、識別可能性評価部131は、カレントノードに該当する出現語組みが処理済みか否かを判定する(S1614)。この処理は上述のS1307と同じである。
次に、識別可能性評価部131は、カレントノードを評価する(S1615)。この処理は、上述のS1609と同じである。
S1615の終了後、識別可能性評価部131は、再度、S1601以降の処理を行なう。
一方、S1611の判定の結果、兄弟ノードが存在しないと判定された場合、識別可能性評価部131は、子孫ノードを評価中であるか否かを判定する(S1616)。具体的には、STに格納した要素数が1つ以上の場合は子孫ノードを評価中と判定し、STに格納した要素数が0の場合は、子孫ノードを評価中でないと判定する。
S1616の判定の結果、子孫ノードを評価中でないと判定した場合、探索ツリーをトラックバックするため、識別可能性評価部131は親ノードをカレントノードに設定する(S1617)。具体的には、識別可能性評価部131は、変数「ST」に最後に追加した要素を取り出し、変数「P」に設定する。
S1617の終了後、識別可能性評価部131は、再度、S1611以降の処理を行う。
一方、S1616の判定の結果、子孫ノードを評価中であると判定した場合、識別可能性評価部131は、図16に示した処理を終了する。
以上が図11におけるS1105の動作の詳細である。
上述のように、本実施形態では、秘匿すべき出現語を抽出するのではなく、識別確率が低い出現語組みを網羅的に調べて、開示可能な出現語を抽出する点に特徴がある。識別確率が閾値以上の出現語組合せのみを開示し、識別確率が閾値未満の出現語組合せを非開示とすれば、文章データテーブル111の全ての文章データに対して識別確率「1/K」以下を保証可能となる。また、本実施形態では、組み合わせる出現語が増えるほど、その出現語が含まれる文章データ件数が単調減少する性質を利用し、上述のS1602の処理で、評価不要な出現語組合せを判別している。これは、組合せる出現語の数を1つずつ増やす度に識別確率が閾値以上となるか否か判定し、識別確率が閾値以上とならない時点、即ち、出現語組みが識別可能性の高い危険な組みであると判定された時点で、その出現語組みに対してさらに組み合わせる出現語の数を増やしての評価を停止する。さらに、本実施形態では、カレントノードの出現語に対し評価済みか否か判定し、この判定の結果評価済みである場合、それより深いノードの評価を行なわない。この処理は、匿名化不要語組みの性質と、探索ツリーの構造とを利用したものである。即ち、例えば、ある2つの匿名化不要語組み「α」、「β」があり、「β」が有する出現語を全て「α」が有するとき、「α」が匿名化不要語組みならば「β」も匿名化不要語組みであるという性質を利用している。また、上述の探索ツリーの評価規則(1)、(2)に従えば、「α」、「β」のような出現語組みは、「α」に該当するノードが先に評価されるという性質を利用している。これらにより、本実施形態の識別可能性評価装置103は、効率よく評価処理を実行することが可能となる。さらに、本実施形態の識別可能性評価装置103は、評価時間を短縮することが可能となる。
次に、図17を参照し、文書データを匿名化するS1109の動作の詳細を説明する。
上述のように、文章データ匿名化装置104は、S1106、S1107、S1108の処理を行なう。これにより、文章データ匿名化装置104の匿名化部141は、識別可能性評価装置103のストレージ202から、識別可能性評価結果情報133即ち識別可能性評価結果情報テーブル801を取得し、自身のメモリ203内に格納している。また、文章データ匿名化装置104の匿名化部141は、文章データ解析装置102のストレージ202から索引情報テーブル126及び名寄せデータ管理テーブル125を取得し、自身のメモリ203内に格納している。また、文章データ匿名化装置104の匿名化部141は、文章データ解析装置102のストレージ202から、文章データテーブル111内の匿名化対象の文書データ1件を取得し、自身のメモリ203内に格納している。この文章データには、上述のように、フィールド301、フィールド302、フィールド303、フィールド304、フィールド305等の値が含まれている。以下、文章データ解析装置102、識別可能性評価装置103の各々のストレージ202内の名寄せデータ管理テーブル125、索引情報テーブル126、及び識別可能性評価結果情報テーブル801と、文章データ匿名化装置104のメモリ203に格納した名寄せデータ管理テーブル125、索引情報テーブル126、及び識別可能性評価結果情報テーブル801を特に区別して説明する場合、名寄せデータ管理テーブル125´、索引情報テーブル126´、及び識別可能性評価結果情報テーブル801´という。
図17において、まず、匿名化部141は、変数「DN」、配列「W」、配列「A」の各々の初期化を行なう(S1701)。そのために、匿名化部141は、まず、名寄せデータ名寄せデータ管理テーブル125´の各レコードのうち、フィールド502の値が、メモリ203内に複製された文書データのフィールド301の文書#と一致するレコードを選択する。次に、匿名化部141は、選択したレコードのフィールド501の値を参照する。これにより、匿名化部141は、匿名化対象の文書データの名寄せデータの識別子(名寄せ#)を特定する。次に、匿名化部141は、取得した名寄せ#を変数「DN」の値とする。具体的には、例えば、文章#「1」の文章データ及び図7に一例を示す名寄せデータ管理テーブル125´が文章データ匿名化装置104のメモリ203内に格納されている場合、匿名化部141は、名寄せデータの識別子「0」を取得し、「D=0」とする。
また、匿名化部141は、配列「W」に要素を格納する。さらに、匿名化部141は、配列「W」に格納された出現語の個数を、変数「M´」に格納しておく。この処理は、上述のS1302と同じである。
なお、以下では、索引情報テーブル126´の「DN」番目のレコードの要素を「IN[DN][W[j]]」で示す。ただし「j」は0以上M´以下の整数である。
また、匿名化部141は、以降の処理で匿名化不要単語を記憶するため、サイズM´の配列「A」を初期化する。そのために、匿名化部141は、j=0、1、…、M´の各々の「IN[DN][W[j]]」の値が、「IN[DN][W[j]]>0」である場合、配列「A[j]」の値を「A[j]=0」とし、また、「IN[DN][W[j]]=0」である場合、配列「A[j]」の値を「A[j]=−1」とする。
S1701に続いて、匿名化部141は、ループ変数「m」を「m=M´−1」とする(S1702)。
次に、匿名化部141は、「m≧0」であるか否かを判定する(S1703)。
S1703の判定の結果、m≧0でない場合、匿名化部141は、後述するS1710の処理を実行する。
一方、S1703の判定の結果、m≧0である場合、匿名化部141は、ループ変数「i」を「i=0」とする(S1704)。
次に、匿名化部141は、「i<N」であるか否かを判定する(S1705)。ただし、「N」は、1つ以上の識別可能性評価結果情報テーブル801´のうちSW[m]のテーブルのレコード件数である。
S1705の判定の結果、i<Nでないと判定された場合、匿名化部141は、後述するS1709の処理を行なう。
一方、S1705の判定の結果、i<Nと判定された場合、匿名化部141は、メモリ203内の文書データに含まれる出現語に、SW[m]の「i」番目のレコードに含まれる匿名化不要語組みに含まれる匿名化不要語と一致するものが含まれているか否か判定し、一致するものが含まれている場合、一致する出現語を配列「A」の要素として格納する(S1706)。そのために、匿名化部141は、{SW[m]のi番目のレコードが有する匿名化不要語組み}⊆{W[j]|A[j]=0}が成り立つ全ての「j」について、A[j]=1とする。ただし、「j」は0以上(M´−1)以下の整数である。
次に、匿名化部141は、上述のS1706の処理で、メモリ203内の文書データに含まれる出現語に、SW[m]の「i」番目のレコードに含まれる匿名化不要語組みに含まれる匿名化不要語と一致するものが含まれていたか否かを判定する(S1707)。
S1707の判定の結果、含まれていない場合、匿名化部141は、「i=i+1」とし(S1708)、S1705以降の処理を再度行う。
一方、上述のS1705の判定でi<Nでないと判定された場合、上述のS1707の判定で該当するもの含まれていないと判定された場合のうちの何れかであれば、匿名化部141は、「m=m−1」とし(S1709)、上述のS1703以降の処理を再度行う。
また、一方、上述のS1703の判定でm≧0ではないと判定された場合、匿名化部141は、出力データを生成する(S1710)。具体的には、匿名化部141は、メモリ203内の文書データから、「A[j]=0」が成り立つ全ての「j」について、W[j]が表す出現語を検索し、検索された出現語を匿名語に置換する。匿名語を取得する技術は特に限定するものではないが、ここでは、匿名化部141は、匿名語を、例えば「A」、「B」等の文字列と、W[j]の数値を表す文字列との結合により与えるものとする。具体的には、例えば、文書データ中の出現語「foo@a.com」が番号「0」で示され、「W[0]=0」である場合、匿名化部141は、「foo@a.com」を「A0」と置き換える。
以上がS1109の動作の詳細である。上述の通り、S1710で生成された出力データは、S1110で、文章データ匿名化装置104のストレージ202内の匿名化文章データテーブル142の各レコードに格納される。
上述のように匿名化文章データテーブル142が格納された後、管理者が文章データ匿名化装置104の入力装置206又は図示しない情報端末の入力装置を用いて匿名化文章データテーブル142の出力を指示した場合等に、匿名化文章データテーブル142を出力してもよい。ここで、図18を参照し、匿名化文章データテーブル142をディスプレイ装置に表示した場合の例を説明する。図18において、画面1801は、図10に一例を示す匿名化文章データテーブル142内の各レコードを表示する例である。
以上が第1の実施形態の説明である。上述のシステムの特徴は、出現頻度が大きな単語の組みを網羅的に調べて、匿名化不要な出現語組みを抽出する点にある。匿名化不要と見なされなかった識別可能性が高い単語の組みは無意味な匿名語に変換される。結果として、匿名変換されないどの単語で文書データ全体集合を検索したとしても、必ず「K」件以上の文書データがヒットするように変換される。これにより、文書データからの識別可能性が高くなる単語のみを匿名語に変換しつつ、それ以外の単語を元の形に残したまま文書データを匿名化することを可能とする。
また、上述のシステムは、組み合わせる出現語の数を1つずつ増やす度に出現頻度が閾値以上となるか否か判定し、出現頻度が閾値以上とならない時点で、出現語の数を増やして評価することを停止する。さらに、上述のシステムは、匿名化不要語組みの構成要素として既に見つかっている出現語に対する不要な評価処理を省略している。これにより、上述のシステムは、効率よく処理を実行することが可能になる。
<第2の実施形態>
次に、第2の実施例を説明する。上述の第1の実施形態では、識別可能性が保障された匿名化文書データを出力するものとした。以下で説明する第2の実施形態では、文書データ匿名化処理における匿名語の割り当て方法の変更を可能とするものである。また、第2の実施形態では、文章データの一部を匿名語としたまま、外部の企業等に分析を委託することを可能とする。なお、この分析は任意でよく、とくに限定するものではないが、以下では、文章データ内の単語の出現頻度から重要度を取得する場合の例を説明する。
なお、説明の簡略化のために、以下で説明する第2の実施形態は、上述した第1の実施形態と同じものは同じ符号を付与し、説明を省略する。
まず、図19を参照し、第2の実施形態のシステム構成例を説明する。
図19において、第2の実施形態のシステム構成は、分析装置1901がさらに通信ネットワーク105に接続されている点が異なる。分析装置1901は、例えばPCやサーバ装置、ワークステーション等の任意の情報処理装置である。分析装置1901は、例えば外部企業等の管理するものであり、この分析装置1901により、匿名化された文章データの分析が行なわれる。分析装置1901のハードウェア構成は、上述の図2と同じであり、CPU201、ストレージ202、メモリ203、入力装置204、出力装置205、通信装置206等を有する。
分析装置1901のCPU201は、プログラム(図示略)をメモリ203にロードして実行することにより、分析部1911を実現する。また、分析装置1901のストレージ202には、分析結果テーブル1921が格納される。分析部1911は、単語の出現頻度から重要度を取得し、その結果を分析結果テーブル1921に格納する。
また、第2の実施形態において、文章データ匿名化装置104のCPU201は、メモリ203にロードしたプログラム(図示略)を実行することにより、匿名化部1931を実現する。また、文章データ匿名化装置104のストレージ202には、匿名化条件情報1941、匿名対応テーブル1942、実名分析結果テーブル1943がさらに格納される。匿名化部1931は、上述の匿名化部141と同じ機能を有する。また、匿名化部1931は、匿名化条件情報1941内の情報に従って匿名化の条件を定め、その条件に従って生成した匿名語と品詞等とを匿名対応テーブル1942に格納する。さらに、匿名化部1931は、分析装置1901から分析結果テーブル1921を取得し、取得した分析結果テーブル1921に従い、実名分析結果テーブル1943を生成する。
また、文章データ解析装置102のストレージ202には、品詞テーブル1951がさらに格納される。品詞テーブル1951は、形態素解析部122の形態素解析処理により取得された、形態素ごとの品詞が格納される。
次に、上述した情報の一例を説明する。
まず、図20を参照し、匿名化条件情報1941の一例を説明する。なお、本実施形態は、匿名化条件情報1941は複数のテーブルを有し、これらのテーブル内の情報を組み合わせることで、匿名化の条件を設定するものとして説明する。以下、このテーブルを「匿名化条件情報テーブル2001」として説明する。また、複数の匿名化条件情報テーブル2001を特に区別して説明する場合、「匿名化条件情報テーブル2001a」というように、符号を付与して説明する。ここでは、匿名化条件情報1941が2つの匿名化条件情報テーブル2001を有する場合の例を説明する。
図20(a)において、匿名化条件情報テーブル2001aの各レコードは、フィールド2011、フィールド2012等を有する。フィールド2011の値は、出現語のカテゴリである。フィールド2012は、同じレコードのフィールド2011の値の品詞である。図20(a)の場合、例えば、フィールド2011「人名」の品詞は、同じレコードのフィールド2012「名詞」であることを示す。また、フィールド2011「全て」は、出現語のカテゴリを特定しないことを示す。
図20(b)において、匿名化条件情報テーブル2001bの各レコードは、フィールド2021を有する。フィールド2021の値は、上述の匿名化条件情報テーブル2001aで設定されたカテゴリに対する匿名化の選択肢である。図20(b)の場合、匿名化の選択肢として「全体で共通」、「文章ごとに共通」が含まれる。この「全体で共通」とは、複数の文書データに同一の匿名化対象の出現語が含まれている場合、その匿名化対象の出現語を、同一の匿名語で置換するものである。また、「文書ごとに共通」とは、複数の文書データに同一の匿名化対象の出現語が含まれている場合、その匿名化対象の出現語を、文章データごとに異なる匿名語で置換するものである。
具体的には、例えば、「佐藤」という人名が、文書データAに2回出現し、また、文書データBに2回出現する場合の例を説明する。この文章データの場合において、匿名化条件情報テーブル2001aのフィールド2011のうち「人名」が選択され、かつ、匿名化条件情報テーブル2001aのフィールド2021のうち「全体で共通」が選択されると、文章データAに含まれる「佐藤」、及び、文章データBに含まれる「佐藤」は、同一の匿名語「A2」に置換される。これは、例えば、文章データの分析に複数の文書に同一人が関わることを明記することが必要な場合の設定である。一方、上記文章データの場合において、匿名化条件情報テーブル2001aのフィールド2011のうち「人名」が選択され、かつ、匿名化条件情報テーブル2001aのフィールド2021のうち「文書ごとに共通」が選択されると、文章データAに含まれる「佐藤」は匿名語「A2」に置換され、文章データBに含まれる「佐藤」は匿名語「B1」に置換される。これは、例えば、複数の文書データに同一人が関わることの推測を困難にしたい場合の設定である。
匿名化条件情報1941は、予め文章データ匿名化装置104のストレージ202に格納されているものとする。匿名化条件情報1941を用いた設定の詳細は後述する。
次に、図21を参照し、匿名対応テーブル1942の一例を説明する。
図21において、匿名対応テーブル1942の各レコードは、フィールド2101、フィールド2102、フィールド2103等を有する。フィールド2101は、匿名化対象の出現語(実名語)である。フィールド2102は、匿名化後の出現語(匿名語)である。フィールド2103は、同じレコードのフィールド2101、フィールド2102の出現語の品詞である。
次に、図22を参照し、分析結果テーブル1921及び実名分析結果テーブル1943の一例を説明する。
なお、上述のように、分析結果テーブル1921は、匿名化後の文章データを分析した分析結果であり、実名分析結果テーブル1943は、分析結果テーブル1921に含まれる匿名語を実名語に変換したものである。即ち、分析結果テーブル1921と実名分析結果テーブル1943とは、出現語のうち少なくとも一部が匿名語か、あるいは実名語であるかという点のみが異なり、その他は同一の情報を示している。
図22(a)に、分析結果テーブル1921の一例を示す。図22(a)において、分析結果テーブル1921の各レコードは、フィールド2201、フィールド2202等を有する。フィールド2201は、重要度である。フィールド2202は、同じレコードのフィールド2201の重要度の出現語である。
図22(b)に、実名分析結果テーブル1943の一例を示す。図22(b)において、実名分析結果テーブル1943の各レコードは、フィールド2211、フィールド2212等を有する。フィールド2211は、重要度である。フィールド2212は、同じレコードのフィールド2211の重要度の出現語である。
ここで、図22(a)及び(b)の各々に一例を示す分析結果テーブル1921、実名分析結果テーブル1943を比較すると、分析結果テーブル1921のフィールド2201「3」のレコードのフィールド2202の値が「A2」であるのに対し、実名分析結果テーブル1943のフィールド2211「3」のレコードのフィールド2212の値が「佐藤」である。即ち、実名語「佐藤」は、匿名語「A2」に置換されていることを示す。
これらのテーブルが生成される動作の詳細は後述する。
次に、図23を参照し、品詞テーブル1951の一例を説明する。
図23において、品詞テーブル1951の各レコードは、フィールド2301、フィールド2302等を有する。フィールド2301は、形態素である。フィールド2302は、同じレコードの2301の形態素の品詞である。
次に、図24を参照し、第2の実施形態のシーケンス例を説明する。なお、以下の説明では、上述の第1の実施形態と同じ処理に関しては簡単に説明する。
図24において、コンタクトセンタデータ管理装置101の処理部z1011は、文章データを収集し、文章データテーブル111に格納する(S2401)。この処理は上述のS1101と同じである。
文章データ解析装置102のデータ名寄せ部121は、文章データテーブル111内の文章データを読み込み、文章データ解析装置102のストレージ202に複製する(S2402)。この処理は上述のS1102と同じである。次に、文章データ解析装置102のデータ名寄せ部121が名寄せ処理を行って名寄せデータ管理テーブル125を生成する。また、形態素解析部122が名寄せデータに対し形態素解析を行い、品詞テーブル1951を生成する。そのために、形態素解析部122は、従来技術により各文章データから、形態素ごとの品詞を取得すると、品詞テーブル1951の各レコードのフィールド2301、フィールド2302の各々の値として、取得した形態素と品詞とを格納する。さらに、索引情報取得部123が索引構築処理を行なうことで、索引情報テーブル126が生成される(S2403)。この処理は上述のS1103と同じである。
次に、識別可能性評価装置103の識別可能性評価部131は、文章データ解析装置102から索引情報テーブル126を読み出して複製し、識別可能性評価装置103のメモリ203に格納する(S2404)。この処理は上述のS1104と同じである。次に、識別可能性評価部131は、索引情報テーブル126´を参照しつつ出現語がとり得る組み合わせを探索し、識別可能性を評価する(S2405)。この処理は上述のS1105と同じである。
次に、文章データ匿名化装置104の匿名化部1931は、識別可能性評価装置103のストレージ202内の識別可能性評価結果情報133の識別可能性評価結果情報テーブル801を読み出し、メモリ203に格納する(S2406)。また、匿名化部1931は、文章データ解析装置102のストレージ202に格納された索引情報テーブル126、名寄せデータ管理テーブル125、品詞テーブル1951を読み出し、メモリ内に複製する(S2407)。さらに、匿名化部1931は、コンタクトセンタデータ管理装置101の記憶する文章データテーブル111から文章データを読み出し、メモリ203に格納する(S2408)。これらの処理は、品詞テーブル1951をストレージ202に出力する点を除き、上述のS1106〜S1108と同じである。
次に、文章データ匿名化装置104の匿名化部1931は、ストレージ202から読み出した匿名化条件情報1941を、自身のメモリ203にロードする(S2409)。
次に、匿名化部1931は、匿名化条件の指定を受け付ける(S2410)。そのために、匿名化部1931は、例えば、図25に一例を示すような画面を、文章データ匿名化装置104の出力装置205のディスプレイ等に出力する。
図25において、画面2501は、匿名化条件の指定を受け付けるためのものである。画面2501は、領域2511、領域2522、領域2523、領域2524等を有する。
領域2511は、各文章データを表示する。この文章データは、文章データ匿名化装置104のメモリ203に格納されているものである。
領域2522は、匿名化条件情報1941の匿名化条件情報テーブル2001aのカテゴリのうち1つをプルダウン等により選択するためのものである。領域2522に表示されるカテゴリは、匿名化条件情報テーブル2001aの各レコードのフィールド2011の値である。
領域2523は、領域2522で指定されたカテゴリの詳細情報を選択するためのものである。領域2523に表示される詳細情報は、索引情報テーブル126´の最初のレコードのフィールドの各々に含まれている出現語のうち少なくとも一部及び全ての出現語を示す情報である。この領域2523に表示される出現語は、領域2522にて選択されたカテゴリに属する品詞のものである。そのために、匿名化部1931は、領域2522にて何れかのカテゴリが選択されると、匿名化条件情報テーブル2001aの各フィールド2011を参照し、領域2522で選択されたカテゴリと一致するものを含むレコードを検索し、検索したレコードのフィールド2012の値を抽出する。次に、匿名化部1931は、品詞テーブル1951の各フィールド2302を参照し、抽出したフィールド2012の値と一致するものが含まれているレコードを検索し、検索したレコードのフィールド2301の値を抽出する。匿名化部1931は、抽出したフィールド2301の値と、全ての出現語を示す情報とを、領域2523の詳細情報として出力する。
領域2524は、匿名化条件情報1941の匿名化条件情報テーブル2001bの選択肢のうち1つをプルダウン等により選択するためのものである。領域2524に表示される選択肢は、匿名化条件情報テーブル2001bの各レコードのフィールド2021の値である。
管理者は、文章データ匿名化装置104の入力装置204等を用いる等して、領域2522、領域2523、領域2524の各々に対し条件を指定する。画面2501にて、例えば、領域2522で「人名」、領域2523で「佐藤」、領域2524で「文章ごとに共通」が選択された場合の例を説明する。この場合、画面2501の領域2511に表示されている文章データに含まれる出現語「佐藤」の各々が、同一の匿名語に置換されることを示す。また、画面2501にて、例えば、領域2522で「全て」、領域2523で「-(NULL)」、領域2524で「文章ごとに共通」が選択された場合の例を説明する。この場合、画面2501の領域2511に表示されている文章データに含まれる出現語のうち、匿名化不要語以外の全ての各々が、同一の匿名語に置換されることを示す。匿名化部1931は、領域2512で選択されたカテゴリ、領域2513で選択された内容、領域2514で選択された選択肢等をメモリ203に格納等して、後述する匿名化処理に用いる。
図24において、匿名化部1931は、識別可能性評価結果情報テーブル801´の各々に格納された匿名化不要語組みの各々を参照し、上述のS1108の処理でメモリ203内の文章データに含まれる出現語のうち、匿名化不要語組みに該当しない出現語を匿名化する(S2411)。この処理は、上述のS2410の処理で受け付けた条件に従い匿名化するか否か判定する点と、置換する匿名語の設定規則と、実名語と匿名語とを匿名対応テーブル1942に格納する点とを除き、上述のS1109と同じである。即ち、匿名化部1931は、メモリ203内の、上述の画面2501で設定されたカテゴリ、詳細情報、選択肢等を参照し、この設定に応じて、出現語を匿名化するか否か判定する。具体的には、例えば、メモリ203内に、カテゴリ「人名」、詳細情報「佐藤」、選択肢「文章ごとに共通」が格納されている場合、匿名化部1931は、上述のS1109と同じ処理を行い、文章データに含まれる匿名化対象の出現語「佐藤」を、文章データごとに異なる匿名語に置き換える。また、例えば、カテゴリ「全て」、詳細情報「-」、選択肢「文章ごとに共通」が格納されている場合、匿名化部1931は、上述のS1109と同じ処理を行い、文章データに含まれる匿名化対象の出現語の各々を、同一の匿名化対象の出現語が文章データごとに異なる匿名語に置き換える。
また、匿名化部1931は、S2410の処理で受け付けた設定に応じて、置換する匿名語の設定を行なう。具体的には、例えば、匿名語の設定規則としては、選択肢「文章ごとに共通」が選択されている場合、匿名化部1931は、匿名語の接頭語を文章データごとに異なるものとし、この接頭語の各々に連番等を付与することにより、匿名語を生成する。また、選択肢「全体で共通」が選択されている場合、匿名化部1931は、メモリ203内のカテゴリ、詳細情報等を参照し、このカテゴリ、詳細情報等で特定される出現語毎に異なる匿名語を生成し、異なる文章データの各々に含まれる同一の出現語に、同一の匿名語を置換する。
また、匿名化部1931は、出現語毎の実名語、匿名語、品詞を、匿名対応テーブル1942の各レコードのフィールド2101、フィールド2102、フィールド2103等に格納する。なお、この匿名化対象の出現語の品詞は、品詞テーブル1951から取得するとよい。即ち、匿名化部1931は、品詞テーブル1951の各フィールド2301を参照し、匿名化対象の出現語と一致するものを検索し、検索したフィールド2301を含むレコードのフィールド2302の値を、その出現語の品詞とする。
具体例として、メモリ203内に、カテゴリ「人名」、詳細情報「佐藤」、選択肢「文章ごとに共通」が格納されており、文章データA、文章データBの各々に、匿名化対象の出現語「佐藤」が含まれている場合を説明する。この場合、匿名化部1931は、文章データAの接頭語「A」と、文章データBの接頭語「B」を生成する。さらに、匿名化部1931は、文章データAに含まれる「佐藤」を「A2」に置き換える。また、匿名化部1931は、文章データBに含まれる「佐藤」を「B2」に置き換える。匿名化部1931は、品詞テーブル1951から、フィールド2301の値が「佐藤」であるレコードに含まれるフィールド2302「名詞」を抽出する。匿名化部1931は、匿名対応テーブル1942に新たなレコードを追加し、追加したレコードのフィールド2101、フィールド2102、フィールド2103等として「佐藤」、「A2」、「名詞」等を格納する。また、匿名化部1931は、さらに追加した新たなレコードのフィールド2101、フィールド2102、フィールド2103等として「佐藤」、「B2」、「名詞」等を格納する。
他の具体例として、メモリ203内に、カテゴリ「人名」、詳細情報「佐藤」、選択肢「全体で共通」が格納されており、文章データA、文章データBの各々に、匿名化対象の出現語「佐藤」が含まれている場合を説明する。この場合、匿名化部1931は、匿名化対象の出現語「佐藤」の匿名語「AA」を生成する。さらに、匿名化部1931は、文章データAに含まれる「佐藤」を「AA」に置き換える。また、匿名化部1931は、文章データBに含まれる「佐藤」を「AA」に置き換える。匿名化部1931は、品詞テーブル1951から、フィールド2301の値が「佐藤」であるレコードに含まれるフィールド2302「名詞」を抽出する。匿名化部1931は、匿名対応テーブル1942に新たなレコードを追加し、追加したレコードのフィールド2101、フィールド2102、フィールド2103等として「佐藤」、「AA」、「名詞」等を格納する。
上述のS2411の処理の後、文章データ匿名化装置104の匿名化部1931は、上述のS2410の処理結果をストレージ202上の匿名化文章データテーブル142に出力する(S2412)。この処理は上述のS1110と同じである。
ここで、図26を参照し、第2の実施形態の匿名化文章データテーブル142の一例を示す。図26(a)において、匿名化文章データテーブル142は、カテゴリ「人名」、詳細情報「佐藤」、選択肢「文章ごとに共通」が設定された場合の例である。また、図26(b)において、匿名化文章データテーブル142は、カテゴリ「人名」、詳細情報「佐藤」、選択肢「全体で共通」が設定された場合の例である。
図24に戻り、上述のS2411が終了した後、分析装置1901は、後述するS2413の処理を開始する。ただし、S2413以降の処理を起動するタイミングは、上述のS2412以降であれば任意でよく、例えば、管理者が分析装置1901の入力装置203を用いて実行を指示した場合や、文章データ匿名化装置104の匿名化文章データテーブル142が更新された場合、所定の時間毎等である。
まず、分析装置1901の分析部1911は、文章データ匿名化装置104から匿名化文章データテーブル142及び匿名対応テーブル1942を取得する(S2413)。ただし、匿名対応テーブル1942については、各レコードのフィールド2102及びフィールド2103のみが取得される。これを実現するための技術は任意でよいが、例えば、予め、文章データ匿名化装置104の管理者等が、匿名対応テーブル1942の各レコードのフィールド2101の値が分析装置1901から参照できないようアクセス制御をかけていてもよく、また、文章データ匿名化装置104の匿名化部1931は、匿名対応テーブル1942からフィールド2101を除外したテーブルを複製し、分析装置1901からのデータ要求を受信した場合、この複製テーブルを送信するようにしてもよい。
次に、分析部1911は、上述のS2413で読み込んだ匿名化文章データテーブル142と匿名対応テーブル1942を用いて、分析処理を実行する(S2414)。上述のように、この分析処理は任意でよいが、ここでは、文章データ中の単語の出現頻度から、各単語の重要度を取得するものとする。分析部1911は、メモリ203内の分析結果テーブル1921のフィールド2201、フィールド2202として、取得した重要度と、その重要度の単語とを格納する。
次に、分析部1911は、分析結果を分析結果テーブル1921として分析装置1901のストレージ202に出力する(S2415)。
上述のS2415が終了した後、文章データ匿名化装置104は、後述するS2416の処理を開始する。ただし、S2416以降の処理を起動するタイミングは、上述のS2415以降であれば任意でよく、例えば、管理者が文章データ匿名化装置104の入力装置203を用いて実行を指示した場合や、文章データ匿名化装置104の分析結果テーブル1921が更新された場合、所定の時間毎等である。
まず、文章データ匿名化装置104の匿名化部1931は、分析装置1901から分析結果テーブル1921を取得する(S2416)。次に、匿名化部1931は、分析結果テーブル1921に含まれる匿名語を実名語に変換する(S2417)。そのために、匿名化部1931は、まず、分析結果テーブル1921の各レコードのフィールド2202のうち1つを選択し、匿名対応テーブル1942の各レコードのフィールド2102に、選択したフィールド2202の値と一致する単語が含まれているか否か判定する。この判定の結果、一致する単語が含まれている場合、匿名化部1931は、選択したフィールド2202の値は匿名語であると判定し、匿名対応テーブル1942の各フィールド2102のうち一致する単語含むレコードのフィールド2101の値を抽出する。また、この判定の結果、一致するものが含まれていない場合、匿名化部1931は、選択したフィールド2202の値は匿名語であると判定する。匿名化部1931は、メモリ203内の実名分析結果テーブル1943に新たなレコードを追加し、このレコードのフィールド2211の値として、上記処理により選択したフィールド2202を含むレコードのフィールド2201を格納する。また、匿名化部1931は、新たに追加したレコードのフィールド2212の値として、上記処理により選択したフィールド2202の値が匿名語であると判定した場合は、抽出したフィールド2101の値を格納し、上記処理により選択したフィールド2202の値が匿名語でないと判定した場合は、選択したフィールド2202の値を格納する。匿名化部1931は、この処理を、分析結果テーブル1921の全てのレコードに対し行なう。
次に、匿名化部1931は、メモリ203内の実名分析結果テーブル1943を、ストレージ202に出力する(S2418)。
上述の第2の実施形態のシステムの特徴は、匿名化条件情報1941を用いて匿名語の変換方法を指定できることに特徴がある。第2の実施形態のシステムは、識別可能性評価装置103を有しているので、上述の第1の実施形態のシステムと同じ処理により、識別可能性が高い単語の組みを確実に匿名化することが可能である。しかし、第2の実施形態のシステムでは、文章データ匿名化装置104が匿名化条件情報1941を用いて設定された条件に従い匿名化することにより、匿名語が与える文書データの識別可能性を調整できるようになる。具体的には、例えば、選択肢「全体に共通」を与えたとき、変換された匿名語が持つ文書データの識別可能性は匿名化前と同じである。第2の実施形態のシステムでは、システム利用者がこのような変換を望まない場合、選択肢「文書ごとに共通」を選べば、識別可能性を匿名化前よりも小さくすることができる。
さらに、第2の実施形態のシステムでは、匿名対応テーブル1942により、分析システムに匿名化文書データのみを開示して分析を任せつつ、その分析結果に含まれる匿名語を実名語に変換することが容易となる。この用途としては、例えば文書データの分析を業務委託するケースがある。業務委託する側は文書データを匿名化して業務受託側に渡し、その後得られた分析結果を業務委託側で実名に戻すことができる。特に、匿名化条件情報1941で選択肢「全体に共通」を選んでいる場合、単語の品詞、単語の出現頻度、複数の単語の共起頻度などを用いる分析では、匿名化前の文書データに対する分析結果と全く同じ結果を得ることができる。
なお、上述のように、分析部1911の分析処理は任意でよい。分析部1911の分析処理として、例えば、匿名化文章データテーブル142を通常の文書データと見なして類似文書データ分類を行うことが可能である。このような類似文書データ分類の技術は従来技術であるが、例えば「高野明彦他:汎用連想計算エンジンの開発と大規模文書分析への応用、情報処理振興事業協会、独創的情報技術育成事業、2001年度成果報告論文」等に報告されている技術を用いるとよい。
以上、この発明の実施形態を、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等も含まれる。
例えば、識別確率を取得するための文章データは、匿名化対象となる文章データとは異なっていても良い。具体的は、例えば、コンタクトセンタデータ管理装置101のストレージ202には、過去1ヶ月間に取得した文章データを含む文章データテーブル111と、これとは別の長期の過去の文書データ(以下、長期文章データ)とが格納されている場合が考えられる。この場合、コンタクトセンタデータ管理装置101は、上述のS1102の処理で、長期文書データを文章データ解析装置102に送信する。文章データ解析装置102は、長期文章データに対し上述のS1103の処理を行なうことで、索引情報テーブル126を生成する。さらに、識別可能性評価装置103は、上述のS1105の処理で、長期文章データに基づき生成された索引情報テーブル126等を参照して、識別可能性の評価を行なう。この処理により生成される識別可能性評価結果情報133は、長期文書データに基づいた匿名化不要語組みを有するものとなる。S1109の文書匿名化処理では、文章データ匿名化装置104の匿名化部141は、長期文書データに基づいた識別可能性評価結果情報133を識別可能性評価装置103から取得し、この識別可能性評価結果情報133を参照して、コンタクトセンタデータ管理装置101の文章データテーブル111から取得した文章データに匿名化処理を行なう。これにより、長期文書データに頻出する出現語組みが開示され、頻出しない出現語組みは匿名語に変換される。
また、上述のS1105の、索引情報テーブル126´のメモリ203内での保持、及び索引情報テーブル126´に対する処理は、任意の索引処理方法を用いることができる。例えば、「高野明彦他:汎用連想計算エンジンの開発と大規模文書分析への応用、情報処理振興事業協会、独創的情報技術育成事業、2001年度成果報告論文」に開示されている技術を用いてもよい。
また、上述のS1610において、識別可能性評価装置103の識別可能性評価部131は、メモリ203内に用意した匿名化不要語テーブル134に匿名化不要語組みを出力し、この匿名化不要語テーブル134を最後にストレージ202に格納しているが、これに限られるわけではなく、例えば、匿名化不要語テーブル134を最初からストレージ202に用意し、ここに直接出力する形でも構わない。この場合、メモリ内の匿名化不要語テーブル134をまとめてストレージ202に出力するS1311は省略される。
また、上述の実施形態では、匿名語を生成するために、文章データや名寄せデータごとの情報に、連番等を組合せるものとしたが、匿名語を生成する技術はこれに限られるわけではない。文章データや名寄せデータごとの情報は必ずしも必要ではなく、また、連番である必要はない。例えば、乱数等を発生させ、文章データや名寄せデータ等によらず匿名語を生成してもよい。
101:コンタクトセンタデータ管理装置、111:文章データテーブル、102:文章データ解析装置、121:データ名寄せ部、122:形態素解析部、123:索引情報取得部、124:名寄せ条件情報、125:名寄せデータ管理テーブル、126:索引情報テーブル、103:識別可能性評価装置、131:識別可能性評価部、132:識別可能性許容値情報、133:識別可能性評価結果情報、801:識別可能性評価結果情報テーブル、134:匿名化不要語テーブル、104:文章データ匿名化装置、141(1931):匿名化部、142:匿名化文章データテーブル142、1901:分析装置、1911:分析部、1921:分析結果テーブル、1941:匿名化条件情報、2001:匿名化条件情報テーブル、1942:匿名対応テーブル、1943:実名分析結果テーブル、1951:品詞テーブル