(57)【特許請求の範囲】
【請求項１】
表の属性ごとに、当該属性に含まれる複数の値の唯一性を解析する解析部と、
検査元の表について、前記解析部により解析された唯一性が所定値より低い属性に含まれる複数の値を所定の割合で削減して前記検査元の表の特徴を出力する第１の特徴出力部と、
検査対象の表について、前記解析部により解析された唯一性が所定値より高い属性に含まれる複数の値を所定の割合で削減して前記検査対象の表の特徴を出力する第２の特徴出力部と、
前記検査元の表の特徴と、前記検査対象の表の特徴とを比較して前記検査元の表に対する前記検査対象の表の類似性を検査する検査部と
を有することを特徴とする検査装置。
【請求項２】
前記検査元の表の特徴を記憶する記憶部を更に有し、
前記検査部は、前記記憶部に記憶された検査元の表の特徴と、前記検査対象の表の特徴とを比較する
ことを特徴とする請求項１に記載の検査装置。
【請求項３】
前記第１の特徴出力部は、前記低い属性に含まれるユニークな値の数と、前記検査元の表のレコード数とに基づく比率に対応する割合で前記低い属性に含まれる複数の値を削減する
ことを特徴とする請求項１又は２に記載の検査装置。
【請求項４】
前記第２の特徴出力部は、前記高い属性に含まれるユニークな値の数と、前記検査対象の表のレコード数とに基づく比率に対応する割合で前記高い属性に含まれる複数の値を削減する
ことを特徴とする請求項１乃至３のいずれか一項に記載の検査装置。
【請求項５】
コンピュータに、
表の属性ごとに、当該属性に含まれる複数の値の唯一性を解析し、
検査元の表について、前記解析された唯一性が所定値より低い属性に含まれる複数の値を所定の割合で削減して前記検査元の表の特徴を出力し、
検査対象の表について、前記解析された唯一性が所定値より高い属性に含まれる複数の値を所定の割合で削減して前記検査対象の表の特徴を出力し、
前記検査元の表の特徴と、前記検査対象の表の特徴とを比較して前記検査元の表に対する前記検査対象の表の類似性を検査する
処理を実行させることを特徴とする検査プログラム。
【請求項６】
コンピュータが、
表の属性ごとに、当該属性に含まれる複数の値の唯一性を解析し、
検査元の表について、前記解析された唯一性が所定値より低い属性に含まれる複数の値を所定の割合で削減して前記検査元の表の特徴を出力し、
検査対象の表について、前記解析された唯一性が所定値より高い属性に含まれる複数の値を所定の割合で削減して前記検査対象の表の特徴を出力し、
前記検査元の表の特徴と、前記検査対象の表の特徴とを比較して前記検査元の表に対する前記検査対象の表の類似性を検査する
処理を実行することを特徴とする検査方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、検査装置、検査プログラムおよび検査方法に関する。
【背景技術】
【０００２】
従来、企業などでは、情報漏洩対策の１つとして、情報漏洩元を特定するための事後の検査が行われている。この情報漏洩の事後検査では、文書閲覧や保存等のファイル操作時における操作ログとともに、操作された文書の特徴（フィンガープリント（以後、特徴データと呼ぶ））を記録する。そして、情報漏洩の検査においては、記録された特徴データを参照し、漏洩した情報に類似した文書の操作ログを特定することで、情報漏洩元を特定する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−４５６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述した従来技術では、レコード（行）ごとに様々な属性（列）の情報を記述した表データの検査において、テキストなどの通常の文書と比較して特徴データが膨大なものとなり、検査時間が長くかかるという問題がある。例えば、表データの漏洩を事後検査する場合、操作時に記録する表データの特徴データが膨大なものとなり、検査に時間を要することとなる。
【０００５】
図２０は、情報漏洩の検査を説明する説明図である。図２０に示すように、社外秘情報５０１について、ユーザ５１１が参照、更新などの操作を行った文書５０２の操作ログや文書５０２の特徴データを社内閲覧ファイルログ５２１に記録する。例えば、社内閲覧ファイルログ５２１には、ユーザ５１１が操作を行った文書５０２の「ｋｉｍｉｔｓｕ．ｄｏｃ」などのファイル名とともに、文書５０２における「中期事業計画について…」などの特徴（キーワードの並びなど）を示すデータが抽出され、記録される。
【０００６】
ここで、文書５０２を印刷したものが、編集加工の後に文書５０３として社外に漏洩したものとする。なお、文書５０３は、ファイル名を「ｍａｒｕｈｉ．ｐｄｆ」などとし、文書５０２とは異なるファイル名に変更されている。また、文書５０３は、「事業部中期計画について…」などのように、文書５０２とは一部が異なる内容に変更されている。このため、情報漏洩の事後検査においては、社内閲覧ファイルログ５２１に記録された特徴の中から文書５０３より抽出した特徴と類似するものを検索することで、漏洩元である文書５０２を特定する。
【０００７】
文書の特徴を示す特徴データについては、キーワードのままでは扱いにくいので、キーワードをハッシュ化したデータを用いる。例えば、キーワードをハッシュ化し、定数ｎによる余剰演算（ｍｏｄ）を実行して範囲を狭めたハッシュ値（なお、ハッシュ値は定数ｎでｍｏｄした値とし、ｍｏｄする前のハッシュ値は中間ハッシュ値とする）とする。このように、文書に含まれるキーワードをハッシュ値とすることで、文書の特徴をｎ×ｎの有効グラフとした特徴データを求める。
【０００８】
なお、ｎの値を１００００程度にした上でキーワードをハッシュ化する場合、異なるキーワード間で同一のハッシュ値になる場合がある。しかしながら、ｎ×ｎの有効グラフは、特徴をキーワードの組としている。よって、内容が異なる文書間では、同一ハッシュ値に変換される確率が低く、有効グラフは同一になりにくい特性を有している。
【０００９】
情報漏洩の事後検査では、社内閲覧ファイルログ５２１に記録された特徴データと、文書５０３より抽出した特徴データとを比較し、類似する文書（漏洩元である文書５０２）を求める。
【００１０】
図２１は、特徴データの比較を説明する説明図である。図２１に示すように、情報漏洩の事後検査では、社内閲覧ファイルログ５２１に記録された特徴データ５０２ａと、文書５０３より抽出した特徴データ５０３ａとを比較した比較結果５０４を求めることで、社内閲覧ファイルログ５２１に特徴が記録された文書の中から文書５０３と類似する文書を漏洩元として特定する。
【００１１】
具体的には、特徴データ５０２ａ、５０３ａをｎ×ｎの有効グラフとすることで、ペアが存在する場所のフラグを立てる（１とする）ことにより、文書における特徴の組み合わせは、ｎ×ｎの空間で表現可能となる。よって、特徴データ５０２ａと特徴データ５０３ａとの比較では、ｎ×ｎの空間のａｎｄ（＆）を取って比較結果５０４を得る。そして、得られた比較結果５０４について、ｎ×ｎの空間のａｎｄにおける１（真値）の個数をもとに、特徴データ５０２ａ、５０３ａに対応する文書間の類似性を判定する。
【００１２】
ここで、文書５０２、５０３などを表データとして適応する場合には、上述したキーワードを表データに含まれる１つの属性値に置き換えればよい。しかしながら、表データは、データベースに格納されているオリジナルデータからＳＱＬ文などで抜き出されて得られる。よって、表データに含まれる属性の並び替え、レコードの並び替え、追加、削除などは簡単に変更できる。したがって、表データから特徴を抽出する場合は、属性の並び替え、レコードの並び替え、追加、削除などに対応するため、属性毎に２つを組み合わせた特徴を網羅的に作成する。
【００１３】
図２２は、表データ５０５からの特徴データの抽出を説明する説明図である。図２２に示すように、表データ５０５から特徴データを抽出する場合は、キーワード１の「野球」、キーワード２の「４３２９４」などの組み合わせを網羅的に作成する。したがって、特徴データのデータ量（特徴量）は、「ＩＤ」、「氏名」、「年齢」、「趣味」などの属性の組み合わせ×行数（レコード数）で膨大なものとなる。よって、表データの漏洩を事後検査する場合には、特徴データの抽出や、類似性の判定にかかる処理に要する時間（検査時間）が通常の文書と比較して長くかかる。
【００１４】
１つの側面では、検査に要する時間が長くなることを抑止できる検査装置、検査プログラムおよび検査方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
第１の案では、検査装置は、解析部と、第１の特徴出力部と、第２の特徴出力部と、検査部とを有する。解析部は、表の属性ごとに、当該属性に含まれる複数の値の唯一性を解析する。第１の特徴出力部は、検査元の表について、解析部により解析された唯一性が所定値より低い属性に含まれる複数の値を所定の割合で削減して検査元の表の特徴を出力する。第２の特徴出力部は、検査対象の表について、解析部により解析された唯一性が所定値より高い属性に含まれる複数の値を所定の割合で削減して検査対象の表の特徴を出力する。検査部は、検査元の表の特徴と、検査対象の表の特徴とを比較して検査元の表に対する検査対象の表の類似性を検査する。
【発明の効果】
【００１６】
本発明の１実施態様によれば、検査に要する時間が長くなることを抑止できる。
【図面の簡単な説明】
【００１７】
【図１】図１は、実施形態にかかる検査装置の機能構成を例示するブロック図である。
【図２】図２は、特徴データを記録する処理を例示するフローチャートである。
【図３】図３は、表データの一例を説明する説明図である。
【図４】図４は、Ｓ１２の処理の詳細を例示するフローチャートである。
【図５】図５は、Ｓ２５の処理の詳細を例示するフローチャートである。
【図６】図６は、Ｓ１４の処理の詳細を例示するフローチャートである。
【図７】図７は、Ｓ１５の処理の詳細を例示するフローチャートである。
【図８】図８は、特徴データの一例を説明する説明図である。
【図９】図９は、検査処理を例示するフローチャートである。
【図１０】図１０は、Ｓ６２の処理の詳細を例示するフローチャートである。
【図１１】図１１は、Ｓ７３の処理の詳細を例示するフローチャートである。
【図１２】図１２は、Ｓ７４の処理の詳細を例示するフローチャートである。
【図１３】図１３は、検索を説明する説明図である。
【図１４】図１４は、検索時における表データ同士の対応を説明する説明図である。
【図１５】図１５は、検索時間と検索率を説明する説明図である。
【図１６】図１６は、検索時間と検索率の具体例を説明する説明図である。
【図１７】図１７は、Ｓ６６の処理の詳細を例示するフローチャートである。
【図１８】図１８は、属性の対応関係を説明する説明図である。
【図１９】図１９は、実施形態にかかる検査装置のハードウエア構成の一例を示すブロック図である。
【図２０】図２０は、情報漏洩の検査を説明する説明図である。
【図２１】図２１は、特徴データの比較を説明する説明図である。
【図２２】図２２は、表データからの特徴データの抽出を説明する説明図である。
【発明を実施するための形態】
【００１８】
以下、図面を参照して、実施形態にかかる検査装置、検査プログラムおよび検査方法を説明する。実施形態において同一の機能を有する構成には同一の符号を付し、重複する説明は省略する。なお、以下の実施形態で説明する検査装置、検査プログラムおよび検査方法は、一例を示すに過ぎず、実施形態を限定するものではない。また、以下の各実施形態は、矛盾しない範囲内で適宜組みあわせてもよい。
【００１９】
図１は、実施形態にかかる検査装置１の機能構成を例示するブロック図である。図１に示す検査装置１は、例えばＰＣ（パーソナルコンピュータ）等の情報処理装置である。検査装置１は、検査元の表にかかる表データＤ１と、検査対象の表にかかる表データＤ２とを受け付けて、検査元の表に対する検査対象の表の類似性を検査する。
【００２０】
ここで、表データＤ１および表データＤ２は、レコード（行）ごとに様々な属性（列）の情報を記述する表のデータである。この表データＤ１および表データＤ２は、例えば、データベースに格納されているオリジナルデータからＳＱＬ文などで抜き出されて得られる。したがって、表データＤ１および表データＤ２の類似性を検査することで、表データＤ１および表データＤ２が同一のオリジナルデータから得られたものであるか否かを判別できる。
【００２１】
一例として、検査装置１は、情報漏洩元の表を特定するための事後検査に用いられる。具体的には、検査装置１は、社内において閲覧や保存などの操作が行われた表（検査元の表）の表データＤ１の特徴をログとして記憶しておき、社外に漏れた表（検査対象の表）の表データＤ２の特徴と比較して互いの類似性を検査する。そして、検査装置１は、社外に漏れた表との類似度合いが所定値以上である、類似性の高い表の表データＤ１を情報漏洩元と特定する。
【００２２】
図１に示すように、検査装置１は、記録部１０、記憶部２０および検査部３０を有する。
【００２３】
記録部１０は、検査元の表にかかる表データＤ１の入力を受け付けて、表データＤ１より抽出した検査元の表の特徴を示す特徴データ２１を記憶部２０に記録する。
【００２４】
特徴データ２１は、表データＤ１に含まれるレコード（行）ごとの様々な属性（列）のデータ（数値やテキスト等）をハッシュ化したデータである。記録部１０が行うデータのハッシュ化については、公知の手法を用いるものとする。
【００２５】
例えば、表データＤ１に含まれる数値やテキスト等の元データから固定キーによるキー付暗号化ハッシュ処理を行って中間ハッシュ値を求める。このキー付暗号化ハッシュ処理により、元データが推定されることを防止する。次いで、中間ハッシュ値に定数ｎによる余剰演算（ｍｏｄ）を実行して範囲を狭めたハッシュ値を求める。これにより、特徴データ２１におけるハッシュ値のパターン数を小さくし、特徴データ２１のデータ量を削減する。
【００２６】
記憶部２０は、各表を識別するための識別情報（例えば、文書ＩＤ（Identification  Data）など）とともに、表ごとに特徴データ２１を記憶する。これにより、例えば、社内において閲覧や保存などの操作が行われた表、すなわち検査元の表の表データＤ１より得られた特徴データ２１は、記憶部２０においてログとして管理されることとなる。
【００２７】
検査部３０は、検査対象の表にかかる表データＤ２の入力を受け付けて、表データＤ２より抽出した表の特徴と、記憶部２０に記憶された検査元の表の特徴データ２１とを比較する。この比較により、検査部３０は、検査元の表に対する検査対象の表の類似性を検査する。具体的には、検査部３０は、互いの特徴に含まれるハッシュ値同士を比較して、ハッシュ値が一致する数（ヒット数）を算出することで、互いの表の類似性を示す類似関係度を求める。
【００２８】
また、検査部３０は、記憶部２０においてログとして管理される表ごとの特徴データ２１との比較を行って、記憶部２０において管理される表の中から類似関係度の高い表を検索し、検索結果を出力する。これにより、ユーザは、社外に漏れた表の表データＤ２による検査部３０の検索結果をもとに、記憶部２０においてログとして管理されている表の中から、社外に漏れた表と類似性の高い漏洩元の表を特定できる。
【００２９】
ここで、記録部１０及び検査部３０の詳細について説明する。記録部１０は、入力部１１、表データ解析部１２および特徴出力部１３を有する。
【００３０】
入力部１１は、表データＤ１の入力を受け付けて、入力された表データＤ１を表データ解析部１２へ出力する。表データ解析部１２は、入力された表データＤ１の解析を行い、解析結果を特徴出力部１３へ通知する。具体的には、表データ解析部１２は、入力された表データＤ１について、表の属性ごとに、属性に含まれる複数の値の唯一性を解析する。
【００３１】
ここで、属性ごとの、属性に含まれる複数の値の唯一性とは、属性におけるユニークな値（ユニーク値）の数として示される。例えば、属性の唯一性は、属性に含まれる値の総数に対する、ユニーク値の数の割合であり、ユニーク値が多いほど唯一性が高く（Ｈ）なる。逆に、ユニーク値が少ないほど属性の唯一性は低く（Ｌ）なる。
【００３２】
例えば、表における「ＩＤ」など、すべての値がユニーク値である属性については、属性に含まれる値の総数に対する、ユニーク値の数の割合が「１」となり、唯一性が最も高くなる。また、「名前」など、ユニーク値の数が多くなる属性については、属性に含まれる値の総数に対する、ユニーク値の数の割合が１に近い値となり、唯一性が高くなる。逆に、「年齢」や「趣味」など、ユニーク値の数が少なくなる属性については、属性に含まれる値の総数に対する、ユニーク値の数の割合が０に近い値となり、唯一性が低くなる。
【００３３】
特徴出力部１３は、表データＤ１に含まれるレコードごとの様々な属性の値をハッシュ化し、特徴データ２１を出力する。出力された特徴データ２１は、記憶部２０に記憶される。この時、特徴出力部１３は、表データ解析部１２による解析結果をもとに、属性の唯一性が予め設定された所定値より低い属性におけるレコードごとの値を所定の割合で削減して値の数を減らす（間引きする）。次いで、特徴出力部１３は、唯一性が低い属性については、間引き後の各値をハッシュ化して特徴データ２１を得る。なお、間引きを行わなかった属性については、属性に含まれる各値がそのままハッシュ化される。
【００３４】
図２は、特徴データを記録する処理を例示するフローチャートである。図２に示すように、処理が開始されると、入力部１１は、表データＤ１の入力を受け付ける（Ｓ１１）。
【００３５】
図３は、表データＤ１の一例を説明する説明図である。図３に示すように表データＤ１は、レコード（行）ごとに「ＩＤ」、「氏名」、「年齢」、「趣味」などの属性（列）を含む。ここで、「ＩＤ」および「氏名」の属性については、予め設定されている所定値よりも唯一性が高いものとする。また、「年齢」および「趣味」の属性については、予め設定されている所定値よりも唯一性が低いものとする。
【００３６】
次いで、表データ解析部１２は、入力された表データＤ１に含まれるレコード（行）および属性（列）の値を参照し、表に含まれるレコード数と、属性毎のユニーク値の数を求める（Ｓ１２）。
【００３７】
図４は、Ｓ１２の処理の詳細を例示するフローチャートである。図４に示すように、表データ解析部１２は、最初にレコード数を初期化（例えばレコード数＝０）する（Ｓ２１）。次いで、表データ解析部１２は、入力された表データＤ１に含まれるすべてのレコードを処理したか否かを判定する（Ｓ２２）。すべてのレコードについての処理が終了した場合（Ｓ２２：ＹＥＳ）、表データ解析部１２は、Ｓ１２の処理を終了する。
【００３８】
すべてのレコードについての処理が終了していない場合（Ｓ２２：ＮＯ）、表データ解析部１２は、入力された表データＤ１に含まれるレコードの中から未処理のレコードを取り出す（Ｓ２３）。次いで、表データ解析部１２は、取り出したレコードからレコード数をカウントアップし（Ｓ２４）、属性毎にユニーク値の数を求めるための統計情報を取得する（Ｓ２５）。次いで、表データ解析部１２は、表データＤ１に含まれるすべてのレコードを処理したか否かを判定し（Ｓ２６）、処理していない場合（ＮＯ）はＳ２３へ処理を戻し、処理した場合（ＹＥＳ）はＳ１２の処理を終了する。
【００３９】
図５は、Ｓ２５の処理の詳細を例示するフローチャートである。図５に示すように、表データ解析部１２は、Ｓ２３で取り出したレコードから未処理の属性を取り出す（Ｓ３１）。次いで、表データ解析部１２は、取り出した属性の値がその属性においてすでに出現している値（既出値）であるか否かを判定する（Ｓ３２）。
【００４０】
既出値である場合（Ｓ３２：ＹＥＳ）、表データ解析部１２は、出現している値に対応するカウンタをカウントアップする（Ｓ３４）。既出値でない場合（Ｓ３２：ＮＯ）、表データ解析部１２は、出現している値に対するカウンタを作成する（Ｓ３３）。この既出値ごとにカウントされるカウンタが、属性毎にユニーク値の数を求めるための統計情報であり、例えばカウンタが「１」である場合はその値はユニーク値であることを示す。
【００４１】
次いで、表データ解析部１２は、すべての属性を処理したか否かを判定し（Ｓ３５）、すべての属性の処理を行っていない場合（Ｓ３５：ＮＯ）、Ｓ３１へ処理を戻す。また、表データ解析部１２は、すべての属性の処理を行った場合（Ｓ３５：ＹＥＳ）はＳ２５の処理を終了する。
【００４２】
図２に戻り、Ｓ１２に次いで、表データ解析部１２は、属性ごとの統計情報をもとに、既出値の数と、既出値ごとのカウンタが「１」であるユニーク値の数との比率から、属性毎のユニーク値の比率を求める（Ｓ１３）。このＳ１３において求められた属性毎のユニーク値の比率が属性毎の唯一性を示す値である。
【００４３】
次いで、表データ解析部１２は、Ｓ１３において求められた属性毎のユニーク値の比率をもとに、属性毎の特徴残存率、すなわち属性に含まれる複数の値から特徴として残す値の割合を決める（Ｓ１４）。
【００４４】
具体的には、表データ解析部１２は、Ｓ１３において求められた属性毎のユニーク値の比率をもとに、属性の唯一性（ユニーク値の比率）が予め設定された所定値より低いか否かを判定する。唯一性が低くないと判定された属性（Ｈ）については、特徴残存率を「１」、すなわちすべての値を特徴として残すものとする。また、唯一性が低いと判定された属性（Ｌ）については、特徴残存率を所定の割合、すなわち所定の割合で間引かれた値を特徴として残すものとする。
【００４５】
図６は、Ｓ１４の処理の詳細を例示するフローチャートである。図６に示すように、表データ解析部１２は、未処理の属性を取り出し（Ｓ４１）、取り出した属性の特徴残存率を求める（Ｓ４２）。
【００４６】
具体的には、唯一性が低くない属性（Ｈ）については、特徴残存率を「１」、すなわちすべての値を特徴として残すものとする。また、唯一性が低い属性（Ｌ）については、属性のユニーク値の数／レコード数を特徴残存率とする。このように、ユニーク値の数／レコード数による比率に対応する特徴残存率とすることで、唯一性に合わせた特徴残存率にすることができる。
【００４７】
なお、上述した特徴残存率の算出は、一例であって、例えばＬに分類される属性については、特徴残存率を一定の割合としてもよい。このように、Ｈに分類される属性についてはすべての値を特徴として残し、Ｌに分類される属性については間引きを行うように特徴残存率を設定する。
【００４８】
例えば、図３における表データＤ１の例では、唯一性がＨである「ＩＤ」および「氏名」の属性は特徴残存率を「全部」（特徴残存率＝「１」）とする。また、唯一性がＬである「年齢」および「趣味」の属性は特徴残存率を「１／１０００」とする。
【００４９】
次いで、表データ解析部１２は、すべての属性を処理したか否かを判定し（Ｓ４３）、すべての属性の処理を行っていない場合（Ｓ４３：ＮＯ）、Ｓ４１へ処理を戻す。また、表データ解析部１２は、すべての属性の処理を行った場合（Ｓ４３：ＹＥＳ）はＳ１４の処理を終了する。
【００５０】
このように、Ｓ１４では、Ｈに分類される属性についてはすべての値を特徴として残し、Ｌに分類される属性については間引きを行うように特徴残存率を設定する。
【００５１】
図２に戻り、Ｓ１４に次いで、特徴出力部１３は、属性毎の特徴残存率をもとに各属性の値を間引いて得られた特徴を出力し、特徴データ２１として記憶部２０に記録する（Ｓ１５）。
【００５２】
図７は、Ｓ１５の処理の詳細を例示するフローチャートである。図７に示すように、処理が開始されると、特徴出力部１３は、入力された表データＤ１に含まれるすべてのレコードを処理したか否かを判定する（Ｓ５１）。すべてのレコードについての処理が終了した場合（Ｓ５１：ＹＥＳ）、特徴出力部１３は、Ｓ１５の処理を終了する。
【００５３】
すべてのレコードについての処理が終了していない場合（Ｓ５１：ＮＯ）、特徴出力部１３は、入力された表データＤ１に含まれるレコードの中から未処理のレコードを取り出す（Ｓ５２）。次いで、特徴出力部１３は、取り出したレコード中の未処理の属性を取り出す（Ｓ５３）。
【００５４】
次いで、特徴出力部１３は、属性の特徴残存率をもとに値の間引きを行い、間引き後の値をハッシュ化した特徴を出力する（Ｓ５４）。具体的には、特徴残存率が「１」であるＨに分類される属性については、すべての値をハッシュ化した特徴を出力する。また、特徴残存率が「１」以外の所定の割合であるＬに分類される属性については、特徴残存率で間引きを行った後の値をハッシュ化した特徴を出力する。
【００５５】
次いで、特徴出力部１３は、すべての属性を処理したか否かを判定し（Ｓ５５）、すべての属性の処理を行っていない場合（Ｓ５５：ＮＯ）、Ｓ５３へ処理を戻す。また、特徴出力部１３は、すべての属性の処理を行った場合（Ｓ５５：ＹＥＳ）はＳ５６へ処理を進める。
【００５６】
Ｓ５６において、特徴出力部１３は、入力された表データＤ１に含まれるすべてのレコードを処理したか否かを判定する。すべてのレコードについての処理が終了した場合（Ｓ５６：ＹＥＳ）、特徴出力部１３は、Ｓ１５の処理を終了する。また、すべてのレコードについての処理が終了していない場合（Ｓ５６：ＮＯ）、特徴出力部１３はＳ５２へ処理を戻す。
【００５７】
図８は、特徴データ２１の一例を説明する説明図である。図８に示すように、特徴データ２１は、「特徴」、「文書ＩＤ」、「レコード番号」、「属性番号」などの項目を有する。
【００５８】
「特徴」は、特徴出力部１３により出力された特徴の値である。図示例では内容がわかりやすいようにハッシュ化される前の値を示しているが、実際にはハッシュ化後のハッシュ値が格納される。「文書ＩＤ」は、入力された表データＤ１の表（文書）を示す識別情報であり、データの格納時などの割り当てられたユニークな数値等が格納される。「レコード番号」は、「特徴」にかかる項目のレコード番号であり、Ｓ５２において取り出したレコードのレコード番号などが格納される。「属性番号」は、「特徴」にかかる項目の属性を示す情報であり、Ｓ５３において取り出した属性を示す番号（例えば、列の並び位置）などが格納される。
【００５９】
例えば、Ｈに分類される属性、すなわち図３の「ＩＤ」および「氏名」における属性１、属性２については、特徴残存率をもとに全部の項目の値がハッシュ化されて特徴として記録される。また、Ｌに分類される属性、すなわち図３の「年齢」および「趣味」における属性３…については、特徴残存率をもとに１／１０００まで削減された項目の値がハッシュ化されて特徴として記録される。このように特徴残存率をもとに値の削減を行うことで、特徴データ２１におけるデータ量を削減できる。
【００６０】
図１に戻り、検査部３０は、入力部３１、表データ解析部３２、特徴出力部３３、検索部３４および出力部３５を有する。
【００６１】
入力部３１は、表データＤ２の入力を受け付けて、入力された表データＤ２を表データ解析部３２へ出力する。表データ解析部３２は、入力された表データＤ２の解析を行い、解析結果を特徴出力部３３へ通知する。具体的には、表データ解析部３２は、表データ解析部１２と同様、入力された表データＤ２について、表の属性ごとに、属性に含まれる複数の値の唯一性を解析する。
【００６２】
特徴出力部３３は、表データＤ２に含まれるレコードごとの様々な属性の値をハッシュ化することで、表データＤ２にかかる表の特徴を得て、検索部３４へ出力する。この時、特徴出力部３３は、表データ解析部３２による解析結果をもとに、属性の唯一性が予め設定された所定値より高い属性におけるレコードごとの値を所定の割合で削減して値の数を減らす（間引きする）。次いで、特徴出力部３３は、唯一性が高い属性（Ｈ）については、間引き後の各値をハッシュ化する。また、間引きを行わなかった属性（Ｌ）については、属性に含まれる各値がそのままハッシュ化する。
【００６３】
検索部３４は、特徴出力部３３より出力された表データＤ２にかかる表の特徴と、特徴データ２１に記憶された各表の特徴とを比較し、表の類似性を検査する。具体的には、検索部３４は、互いの特徴に含まれるハッシュ値同士を比較して、ハッシュ値が一致する数（ヒット数）を算出することで、互いの表の類似性を示す類似関係度を求める。次いで、検索部３４は、特徴データ２１に記憶された各表の中で、類似関係度が高い表を検索結果（例えば類似関係度が高い表を示す文書ＩＤなど）として出力部３５に出力する。なお、類似関係度の高さの評価は任意に決めてよく、例えば、類似関係度が所定値以上の表としてもよいし、類似関係度が高い方から所定順位までの表としてもよい。
【００６４】
出力部３５は、検索部３４による検索結果をもとに、ＬＣＤ（Liquid  Crystal  Display）等の表示装置における画面表示や、プリンター等の印刷装置における紙媒体などへの印字により検索結果の出力を行う。
【００６５】
図９は、検査処理を例示するフローチャートである。図９に示すように、処理が開始されると、入力部３１は、表データＤ２の入力を受け付ける（Ｓ６１）。次いで、特徴出力部３３は、表データ解析部３２による表データＤ２の解析結果をもとに、入力された表データＤ２より特徴データを抽出する（Ｓ６２）。
【００６６】
図１０は、Ｓ６２の処理の詳細を例示するフローチャートである。図１０に示すように、処理が開始されると、表データ解析部３２は、入力された表データＤ２を参照し、Ｓ１２と同様に、表に含まれるレコード数と、属性毎のユニーク値の数を求める（Ｓ７１）。
【００６７】
次いで、表データ解析部３２は、Ｓ１３と同様に属性毎のユニーク値の比率を求める（Ｓ７２）。このＳ７２において求められた属性毎のユニーク値の比率が属性毎の唯一性を示す値である。
【００６８】
次いで、表データ解析部３２は、Ｓ７２において求められた属性毎のユニーク値の比率をもとに、属性毎の特徴残存率、すなわち属性に含まれる複数の値から特徴として残す値の割合を決める（Ｓ７３）。
【００６９】
具体的には、表データ解析部３２は、Ｓ７２において求められた属性毎のユニーク値の比率をもとに、属性の唯一性（ユニーク値の比率）が予め設定された所定値より高いか否かを判定する。唯一性が高くないと判定された属性（Ｌ）については、特徴残存率を「１」、すなわちすべての値を特徴として残すものとする。また、唯一性が高いと判定された属性（Ｈ）については、特徴残存率を所定の割合、すなわち所定の割合で間引かれた値を特徴として残すものとする。
【００７０】
図１１は、Ｓ７３の処理の詳細を例示するフローチャートである。図１１に示すように、表データ解析部３２は、未処理の属性を取り出し（Ｓ８１）、取り出した属性の特徴残存率を求める（Ｓ８２）。
【００７１】
具体的には、唯一性が高くない属性（Ｌ）については、特徴残存率を「１」、すなわちすべての値を特徴として残すものとする。また、唯一性が高い属性（Ｈ）については、（１−（属性のユニーク値の数／レコード数））を特徴残存率とする。このように、（１−（属性のユニーク値の数／レコード数））による比率に対応する特徴残存率とすることで、唯一性に合わせた特徴残存率にすることができる。
【００７２】
なお、上述した特徴残存率の算出は、一例であって、例えばＨに分類される属性については、特徴残存率を一定の割合としてもよい。このように、Ｌに分類される属性についてはすべての値を特徴として残し、Ｈに分類される属性については間引きを行うように特徴残存率を設定する。
【００７３】
次いで、表データ解析部３２は、特徴残存率が予め設定された所定値以下であるか否かを判定し（Ｓ８３）、所定値以下である場合（Ｓ８３：ＹＥＳ）、特徴残存率を予め設定した最低残存率にする（Ｓ８４）。また、所定値以下でない場合（Ｓ８３：ＮＯ）、表データ解析部３２は、Ｓ８４の処理をスキップしてＳ８５へ処理を進める。このように、最低残存率を設定しておくことで、唯一性が高くなるほど特徴残存率が低くなり、特徴が残らなくなることを防止し、属性における特徴量を一定量以上確保できるようにする。
【００７４】
次いで、表データ解析部３２は、すべての属性を処理したか否かを判定し（Ｓ８５）、すべての属性の処理を行っていない場合（Ｓ８５：ＮＯ）、Ｓ８１へ処理を戻す。また、表データ解析部３２は、すべての属性の処理を行った場合（Ｓ８５：ＹＥＳ）はＳ７３の処理を終了する。
【００７５】
このように、Ｓ７３では、Ｌに分類される属性についてはすべての値を特徴として残し、Ｈに分類される属性については間引きを行うように特徴残存率を設定する。
【００７６】
図１０に戻り、Ｓ７３に次いで、特徴出力部３３は、属性毎の特徴残存率をもとに各属性の値を間引いて得られた表データＤ２の特徴を検索部３４へ出力する（Ｓ７４）。
【００７７】
図１２は、Ｓ７４の処理の詳細を例示するフローチャートである。図１２に示すように、処理が開始されると、特徴出力部３３は、未処理の属性を取り出す（Ｓ９１）。
【００７８】
次いで、特徴出力部３３は、属性の特徴残存率をもとに値の間引きを行い、特徴残存率分の属性の値を表データＤ２にかかるリストに加える（Ｓ９２）。具体的には、特徴残存率が「１」であるＬに分類される属性については、すべての値がリストに加えられる。また、特徴残存率が「１」以外の所定の割合であるＨに分類される属性については、特徴残存率で間引きを行った後の値がリストに加えられる。
【００７９】
次いで、特徴出力部３３は、すべての属性を処理したか否かを判定し（Ｓ９３）、すべての属性の処理を行っていない場合（Ｓ９３：ＮＯ）、Ｓ９１へ処理を戻す。また、特徴出力部３３は、すべての属性の処理を行った場合（Ｓ９３：ＹＥＳ）はＳ９４へ処理を進める。Ｓ９４において、特徴出力部３３は、リストをユニーク化（リストの各値をハッシュ化）して検索部３４へ出力する。
【００８０】
図９に戻り、検索部３４は、Ｓ６２で抽出された表データＤ２の特徴データで記憶部２０に記憶された特徴データ２１との比較を行い、互いのハッシュ値が一致する特徴の検索を行う（Ｓ６３）。次いで、検索部３４は、検索して得られた特徴を、文書ＩＤで示される文書毎に分類し、文書毎の特徴のヒット数を求める（Ｓ６４）。
【００８１】
図１３は、検索を説明する説明図である。図１３は、表データＤ２より抽出した特徴で特徴データ２１の検索を行う場合を示している。表データＤ２において、唯一性が高くない「年齢」および「趣味」の属性（Ｌ）については、全部の特徴が抽出されているものとする。また、唯一性が高い「ＩＤ」および「氏名」の属性（Ｈ）については、１／１０に間引かれた特徴が抽出されているものとする。また、各特徴については、図示例では内容がわかりやすいようにハッシュ化される前の値を示しているが、実際にはハッシュ化後のハッシュ値が格納されている。
【００８２】
図１３に示すように、検索部３４は、表データＤ２より抽出した各特徴について、特徴データ２１の特徴と一致するものを検索し、特徴データ２１より検索された特徴を文書ＩＤごとに分類して検索結果Ｄ３を求める。検索結果Ｄ３は、文書ＩＤごとの特徴のヒット数としてまとめられる。このようにして求められた検索結果Ｄ３をもとに、ヒット数が大きいもの（文書ＩＤに対応する表）が、表データＤ２の表と類似する表の候補となる。
【００８３】
図１４は、検索時における表データＤ１、Ｄ２同士の対応を説明する説明図である。図１４に示すように、検査元の表にかかる表データＤ１の「ＩＤ」および「氏名」の値は、唯一性が高い属性（Ｈ）であることから、全て特徴として特徴データ２１に記録されている。逆に、検査対象の表にかかる表データＤ２の「ＩＤ」および「氏名」の値は、唯一性が高い（Ｈ）であることから、間引かれている。したがって、検索時においては間引きにより比較件数が少なくなることから高速に検索できる。また、検査対象の表については、唯一性が高い属性の値を間引いたとしても、検査元の表と類似する場合には高精度で互いの特徴がヒットすることとなる。
【００８４】
また、検査元の表にかかる表データＤ１の「年齢」および「趣味」の値は、唯一性が低い属性（Ｌ）であることから、間引かれた特徴が特徴データ２１に記録されている。逆に、検査対象の表にかかる表データＤ２の「年齢」および「趣味」の値は、唯一性が低い（Ｌ）ことから、全ての特徴が抽出される。したがって、検索時においては間引きにより比較件数が少なくなることから高速に検索できる。また、表データＤ１における唯一性が低い属性（Ｌ）については、多少の間引きを行っても重複しない特徴のほぼ全てが特徴データ２１に記録される。このため、検査対象の表については、唯一性が低い属性の特徴の全てを抽出して特徴データ２１と比較することで、検査元の表と類似する場合には高精度で互いの特徴がヒットすることとなる。
【００８５】
図１５は、検索時間と検索率を説明する説明図である。具体的には、図１５は、上述した検査元の表にかかる表データＤ１および検査対象の表にかかる表データＤ２の比較時における検索時間と検索率とを各条件ごとに数式化したものである。図１５におけるＨは唯一性の高い属性を示し、Ｌは唯一性の低い属性を示す。また、ｐは、表データＤ１におけるＬの属性の特徴残存率を示す。また、ｎは、表データＤ２における表の行数を示す。図１５に示すように、検索入力（表データＤ２）のＨ、Ｌを全部用いた条件（１）と、検索入力のＬを全部用い、Ｈを１／Ｃに間引いた条件（２）と、検索入力のＬ、Ｈともに１／Ｃ間引きした条件（３）とを数式化している。
【００８６】
図１６は、検索時間と検索率の具体例を説明する説明図である。具体的には、図１６は、図１５の条件（１）〜（３）の数式に具体的な数値を入れたものである。図１６では、ｐ＝１／１０００、ｎ＝１０、Ｃ＝２としている。図１６に示すように、特徴が互いにヒットする割合を示す検索率については、各条件ともほぼ維持され、条件（１）に対して条件（３）よりも本実施形態に対応する条件（２）のほうが若干好適な結果となる。また、検索時間については、条件（１）に対して条件（２）、（３）とも１／２となり、２倍の高速化が期待できる。
【００８７】
図９に戻り、Ｓ６４に次いで、検索部３４は、検索結果Ｄ３の中で、まだ処理していない１文書の結果（文書ＩＤごとに分類されたヒットの情報）を取り出す（Ｓ６５）。次いで、検索部３４は、取り出した文書にかかる類似関係度を数値化する（Ｓ６６）。
【００８８】
図１７は、Ｓ６６の処理の詳細を例示するフローチャートである。図１７に示すように、処理が開始されると、検索部３４は、取り出した文書についてのヒットの情報を参照し、ヒットした検索される側（検索元）と、検索側（検索対象）の属性の対応関係を求める（Ｓ１０１）。
【００８９】
図１８は、属性の対応関係を説明する説明図である。具体的には、図１８は、図１３における検索結果Ｄ３の中で、文書ＩＤが「０００１」の検査結果詳細Ｄ３１を例示している。検査結果詳細Ｄ３１において、右端の「ヒットした検索元属性」は、検索対象の属性のヒット数を属性番号（１，２，３，４）順に並べたものである。例えば、検索元の属性番号「１」に対し、検索対象の属性番号「１」では特徴が「１０」ヒットしている。また、検索元の属性番号「２」に対し、検索対象の属性番号「１」では特徴が「１」ヒットし、検索対象の属性番号「２」では「１０４」ヒットている。
【００９０】
Ｓ１０１では、各属性番号における「ヒット数」と「ヒットした検索元属性」とを比較することで、検索元と検索対象の属性の対応関係を求める。例えば、検索元の属性番号「１」については、ヒット数「１０」であり、検索対象の属性番号「１」では「１０」ヒットしていることから、互いに属性番号「１」が対応するものとする。同様にして、検索元の属性番号「２」→検索対象の属性番号「２」、検索元の属性番号「３」→検索対象の属性番号「３」、検索元の属性番号「４」→検索対象の属性番号「４」が求まる。
【００９１】
図１７に戻り、Ｓ１０１に次いで、検索部３４は、Ｓ１０１で求めた関係の中で重複している属性などの例外的な関係を削除する（Ｓ１０２）。
【００９２】
次いで、検索部３４は、例外的な関係を削除して残った対応関係でヒットした情報を残し（Ｓ１０３）、同一レコードでヒットしている特徴と属性を整理する（Ｓ１０４）。具体的には、検索元と検索対象とでヒットしている特徴を、レコード番号、属性番号順に並べ直す。
【００９３】
次いで、検索部３４は、検索側（検索対象）のレコードと同一パターンのレコードをカウントする（Ｓ１０５）。具体的には、検索元の特徴が、レコード１：属性番号１（３８４３２）、属性番号２（一郎）、属性番号３（４０）、レコード２：属性番号１（７６１３８）、属性番号２（十郎）、属性番号４（バスケット）…とする。また、検索対象のレコードの特徴が、属性番号１（３８４３２）、属性番号２（一郎）、属性番号３（４０）とする。この場合、検索元のレコード１が同一パターンのレコードとしてカウントされる。このように、Ｓ１０５のカウント数が多くなるほど、類似度合いが高いこととなる。
【００９４】
次いで、検索部３４は、カウント数に合わせてヒット数に重みを加え、取り出した文書にかかる類似関係度を算出する（Ｓ１０６）。
【００９５】
図９に戻り、Ｓ６６に次いで、検索部３４は、Ｓ６４で分類した全ての文書の処理が終わったか否かを判定する（Ｓ６７）。全ての文書の処理が終わっていない場合（Ｓ６７：ＮＯ）、検索部３４は、Ｓ６５へ処理を戻す。
【００９６】
全ての文書の処理が終わっている場合（Ｓ６７：ＹＥＳ）、検索部３４は、文書を類似関係度順にソートする（Ｓ６８）。次いで、出力部３５は、Ｓ６８のソート結果を画面表示や印字などにより出力する（Ｓ６９）。
【００９７】
以上のように、検査装置１は、表の属性ごとに、属性に含まれる複数の値の唯一性を解析する表データ解析部１２、３２を有する。また、検査装置１は、表データＤ１の検査元の表について、解析された唯一性が所定値より低い属性に含まれる複数の値を所定の割合で削減して特徴データ２１を出力する特徴出力部１３を有する。また、検査装置１は、表データＤ２の検査対象の表について、解析された唯一性が所定値より高い属性に含まれる複数の値を所定の割合で削減して特徴を出力する特徴出力部３３を有する。また、検査装置１は、検査元の表の特徴と、検査対象の表の特徴とを比較して検査元の表に対する検査対象の表の類似性を検査する検索部３４を有する。したがって、検査装置１は、図１５、１６の条件（１）と、条件（２）との比較からも明らかなように、検査に要する時間が長くなることを抑止できる。
【００９８】
また、検査装置１は、検査元の表の特徴データ２１を記憶する記憶部２０を更に有し、検索部３４は、記憶部２０に記憶された特徴データ２１と、検査対象の表の特徴とを比較する。これにより、検査装置１は、社内において閲覧や保存などの操作が行われた表の特徴データ２１を記憶し、情報漏洩元の表を特定するための事後検査に用いることができる。
【００９９】
なお、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【０１００】
また、検査装置１で行われる各種処理機能は、ＣＰＵ（またはＭＰＵ、ＭＣＵ（Micro  Controller  Unit）等のマイクロ・コンピュータ）上で、その全部または任意の一部を実行するようにしてもよい。また、各種処理機能は、ＣＰＵ（またはＭＰＵ、ＭＣＵ等のマイクロ・コンピュータ）で解析実行されるプログラム上、またはワイヤードロジックによるハードウエア上で、その全部または任意の一部を実行するようにしてもよいことは言うまでもない。
【０１０１】
ところで、上記の実施形態で説明した各種の処理は、予め用意されたプログラムをコンピュータで実行することで実現できる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータ（ハードウエア）の一例を説明する。図１９は、実施形態にかかる検査装置１のハードウエア構成の一例を示すブロック図である。
【０１０２】
図１９が示すように、検査装置１は、各種演算処理を実行するＣＰＵ１０１と、データ入力を受け付ける入力装置１０２と、モニタ１０３と、スピーカ１０４とを有する。また、検査装置１は、記憶媒体からプログラム等を読み取る媒体読取装置１０５と、各種装置と接続するためのインタフェース装置１０６と、有線または無線により外部機器と通信接続するための通信装置１０７とを有する。また、検査装置１は、各種情報を一時記憶するＲＡＭ１０８と、ハードディスク装置１０９とを有する。また、検査装置１内の各部（１０１〜１０９）は、バス１１０に接続される。
【０１０３】
ハードディスク装置１０９には、上記の実施形態で説明した記録部１０、記憶部２０および検査部３０における各種の処理を実行するためのプログラム１１１が記憶される。また、ハードディスク装置１０９には、プログラム１１１が参照する各種データ１１２（特徴データ２１など）が記憶される。入力装置１０２は、例えば、検査装置１の操作者から操作情報の入力を受け付ける。モニタ１０３は、例えば、操作者が操作する各種画面を表示する。インタフェース装置１０６は、例えば印刷装置等が接続される。通信装置１０７は、ＬＡＮ（Local  Area  Network）等の通信ネットワークと接続され、通信ネットワークを介した外部機器との間で各種情報をやりとりする。
【０１０４】
ＣＰＵ１０１は、ハードディスク装置１０９に記憶されたプログラム１１１を読み出して、ＲＡＭ１０８に展開して実行することで、各種の処理を行う。なお、プログラム１１１は、ハードディスク装置１０９に記憶されていなくてもよい。例えば、検査装置１が読み取り可能な記憶媒体に記憶されたプログラム１１１を、検査装置１が読み出して実行するようにしてもよい。検査装置１が読み取り可能な記憶媒体は、例えば、ＣＤ−ＲＯＭやＤＶＤディスク、ＵＳＢ（Universal  Serial  Bus）メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、ＬＡＮ等に接続された装置にこのプログラムを記憶させておき、検査装置１がこれらからプログラムを読み出して実行するようにしてもよい。
【符号の説明】
【０１０５】
１…検査装置
１０…記録部
１１、３１…入力部
１２、３２…表データ解析部
１３、３３…特徴出力部
２０…記憶部
２１…特徴データ
３０…検査部
３４…検索部
３５…出力部
１０１…ＣＰＵ
１１１…プログラム
１１２…各種データ
Ｄ１、Ｄ２…表データ
Ｄ３…検索結果
Ｄ３１…検査結果統計
【図１】
0006547577.tif 000002
【図２】
0006547577.tif 000003
【図３】
0006547577.tif 000004
【図４】
0006547577.tif 000005
【図５】
0006547577.tif 000006
【図６】
0006547577.tif 000007
【図７】
0006547577.tif 000008
【図８】
0006547577.tif 000009
【図９】
0006547577.tif 000010
【図１０】
0006547577.tif 000011
【図１１】
0006547577.tif 000012
【図１２】
0006547577.tif 000013
【図１３】
0006547577.tif 000014
【図１４】
0006547577.tif 000015
【図１５】
0006547577.tif 000016
【図１６】
0006547577.tif 000017
【図１７】
0006547577.tif 000018
【図１８】
0006547577.tif 000019
【図１９】
0006547577.tif 000020
【図２０】
0006547577.tif 000021
【図２１】
0006547577.tif 000022
【図２２】
0006547577.tif 000023