以下に、本発明に係る文書検査装置、コンピュータ読み取り可能な記録媒体および文書検査方法の実施例を図面に基づいて詳細に説明する。なお、本実施例によりこの発明が限定されるものではない。
[実施例1に係る文書検査装置の概念]
図1は、本実施例1に係る文書検査装置の概念を説明するための図である。図1に示すように、文書検査装置1は、クライアントPCaから受信されたメールA(機密文書)の宛先が社内宛である、例えば、クライアントPCbである場合には、受信されたメールAをクライアントPCbに送信するとともに、メールAの特徴を記憶する。
また、文書検査装置1は、クライアントPCbから受信されたメールBの宛先が社外宛である、例えば、他サーバである場合には、受信されたメールBとあらかじめ記憶されている複数の機密文書とを比較する。そして、文書検査装置1は、その比較結果に基づき、受信されたメールBが機密文書と類似しているか否かを判断し、類似している場合にはメールBの社外への送信を拒否する。
すなわち、文書検査装置1は、クライアントPCbによって機密文書である社外秘のメールAの内容を部分的にコピーしたり編集したりして作成されたメールBを、社外に送信しないようにする。
具体的には、文書検査装置1は、判定対象文書であるメールBの文書の特徴を示す文書特徴素(シグネチャ)と、機密文書であるメールAの文書特徴素とを、比較する。文書検査装置1は、機密文書との類似性が判定される判定対象文書であるメールBに含まれている所定文字数の範囲内にある2つのキーワードを対にして組み合わせた組み合わせ情報を複数含む文書特徴素と、機密文書であるメールAの文書特徴素とを比較する。この組み合わせ情報は、対の2つのキーワードを各出現位置の前後情報に対応付けて組み合わせたものである。なお、キーワードとは、文書の中でのキーとなる単語や語句をいうものとする。
そして、文書検査装置1は、比較結果に基づき、判定対象文書であるメールBの複数の組み合わせ情報のうちメールAの組み合わせ情報と一致する組み合わせ情報の数が所定値以上あるか否かを判定する(「類似性検査1」)。
そして、文書検査装置1は、一致するものの数が所定値以上あると判定した場合には、さらに、所定文字数の同一範囲内に少なくとも3つ以上のキーワードから組み合わされる組み合わせ情報の群が出現するか否かを判断して、かかる群が所定値以上あるか否かを判定する(「類似性検査2」)。
その結果、文書検査装置1は、組み合わせ情報のかかる群が所定値以上あると判定する場合には、文書同士が類似しているものとして、メールBの他サーバへの送信を拒否する。
なお、上記では、本実施例に係る文書検査装置1で扱う機密文書をメールとして説明したが、メール本文やメールに添付された文書であっても良いし、メール以外から作成された文書であっても良い。また、メールBと類似性を検査する対象となる機密文書を、クライアントPCbが過去に送受信したメールに限定することで処理を効率化しても良い。また、本実施例では、「類似性検査1」および「類似性検査2」を文書検査処理というものとする。
[実施例1に係る文書検査装置の構成]
図2は、実施例1に係る文書検査装置の構成を示す機能ブロック図である。図2に示すように、文書検査装置1は、制御部10と、記憶部20と、を備える。
制御部10は、文書検査処理等を規定したプログラムに基づいた処理を実行する処理部である。制御部10は、メール受信部110と、特徴素行列抽出部120と、社内ドメイン判定部130と、特徴素行列追加部140と、シリアライズ部150と、類似算出部160と、類似判定部170と、メール送信拒否部180と、メール送信部190と、を備える。
記憶部20は、制御部10による文書検査処理に必要なデータを格納し、不要語リスト220、社内ドメイン定義230、特徴素行列DB240および、各文書毎の一時的なデータ領域としてキーワードテーブル210、ワーク行列250を備える。
メール受信部110は、社内のクライアントPCから送信されたメールを受信して、受信したメールからメール本文の文字列とメールに添付された添付ファイルに含まれる文字列とを抽出する。ここで、メール受信部110が抽出したメール本文の文字列と添付ファイルに含まれる文字列とを、以降「検査対象テキスト」というものとする。
また、メール受信部110は、抽出した検査対象テキストを特徴素行列抽出部120に出力するとともに、抽出したメール本文を社内ドメイン判定部130に出力する。さらに、メール受信部110は、受信したメールをメール送信拒否部180およびメール送信部190に出力する。
特徴素行列抽出部120は、メール受信部110から検査対象テキストを取得すると、当該検査対象テキストから当該テキストの特徴素を行列に表した特徴素行列を抽出する。なお、特徴素行列の詳細については、後述する。さらに、特徴素行列抽出部120は、キーワード出現位置抽出部121と、ハッシュ値算出部122と、キーワード範囲内有無判定部123と、特徴素行列作成部124と、を備える。
キーワード出現位置抽出部121は、メール受信部110から検査対象テキストを取得すると、当該検査対象テキストから抽出される複数のキーワードに対して当該キーワードの出現位置およびハッシュ値を1つのレコードとしてキーワードテーブル210に格納する。
例えば、キーワード出現位置抽出部121は、不要語リスト220に含まれていない単語をキーワードとして検査対象テキストから抽出するとともに、抽出したキーワードの出現位置を検査対象テキストの先頭位置から数える。
ここで、不要語リスト220は、キーワードから除外された単語(不要語)が記憶されたリストであり、その不要語としては、例えば、「が」、「を」等の助詞、「これ」、「それ」等の指示語および「コンピュータ」等一般的な文書の中でも頻出されると予想される単語を含む。
また、キーワード出現位置抽出部121は、抽出したキーワードのハッシュ値をハッシュ値算出部122によって算出して、抽出したキーワード、その出現位置およびそのハッシュ値を1レコードとしてキーワードテーブル210に格納する。
さらに、キーワード出現位置抽出部121は、検査対象テキストにあるすべてのキーワードに関する情報をキーワードテーブル210に格納すると、キーワードテーブル210が作成された旨の通知をキーワード範囲内有無判定部123に出力する。
ここで、キーワードテーブル210のデータ構造の一例について図3を参照して説明する。図3に示すように、キーワードテーブル210は、キーワードと、出現位置と、ハッシュ値と、から構成され、記憶部20に一時的に記憶される。
ハッシュ値算出部122は、キーワード出現位置抽出部121からキーワードを取得すると、取得したキーワードからハッシュ値を算出して、算出したハッシュ値をキーワード出現位置抽出部121に出力する。
なお、ハッシュ値の算出方法としては、キーワードを構成する文字のすべての文字コードを加算した値をハッシュ値の最大数で除算した結果、余りとなる値に1を加算する方法がある。また、キーワードを構成する文字の文字コード間で排他的論理和した値をハッシュ値の最大数で除算した結果、余りとなる値に1を加算する方法やキーワードを構成する文字の文字コードを連結した値をハッシュ値の最大数で除算した結果、余りとなる値に1を加算する方法がある。さらに、キーワードと特定の数値とを1対1にあらかじめ定められた対応表によってキーワードに対応する数値をハッシュ値とする方法等があるが、これらに限定されるものではない。
キーワード範囲内有無判定部123は、キーワード出現位置抽出部121からキーワード210が作成された旨の通知を取得すると、キーワードテーブル210に格納された各キーワードを判定対象として、判定対象のキーワードの出現位置から文の後方に向かって所定文字数の範囲内に他のキーワードがあるか否かを判定する。
また、キーワード範囲内有無判定部123は、判定対象のキーワードの出現位置から文の後方に向かって所定文字数の範囲内に他のキーワードがあると判定すると、判定対象のキーワードのハッシュ値と他のキーワードのハッシュ値とを対応付けた行列要素を生成する。なお、この行列要素は、各キーワードの出現位置の前後を、例えば列と行に対応付けたものであり、組み合わせ情報に相当する。
例えば、判定対象のキーワードのハッシュ値が「5」であって、判定対象のキーワードの出現位置から後方にある他のキーワードのハッシュ値が「3」であるとき、行列要素が3行5列、すなわち(3、5)となる。
また、キーワード範囲内有無判定部123は、判定対象ごとに判定対象のキーワードのハッシュ値と他のキーワードのハッシュ値とを対応付けた行列要素を特徴素行列作成部124に出力する。
なお、キーワード範囲内有無判定部123は、判定対象のキーワードの出現位置から文の後方に向かって他のキーワードがあるか否かを判定するものとしたが、これに限定されず、判定対象のキーワードの出現位置から文の前方に向かって他のキーワードがあるか否かを判定するものとしても良い。
また、行列要素は、判定対象のキーワードのハッシュ値と他のキーワードのハッシュ値とを各キーワードの出現位置の前後を、例えば列と行に対応付けたものとして説明したが、これに限定されず、各キーワードの出現位置の前後を、行と列に対応付けたものとしても良い。
さらに、所定文字数の範囲は、例えば100文字であるが、複数のキーワードが出現する可能性がある文字数の範囲であれば良く、あらかじめ実験等で調べられ記憶部20に記憶されるものとする。
特徴素行列作成部124は、キーワード範囲内有無判定部123から判定対象ごとに生成された行列要素を取得すると、取得した行列要素を用いて、検査対象テキストに対応する特徴素行列を作成する。
具体的には、特徴素行列作成部124は、検査対象テキストの特徴素行列を作成するために必要な大きさのメモリ領域(ワーク行列250)を記憶部20に割り当てる。そして、特徴素行列作成部124は、ワーク行列250に対して、判定対象ごとに生成された行列要素を特定値(例えば「1」)に設定して特徴素行列を作成する。
なお、ワーク行列250は、特徴素行列の各行の値(「0」または「1」)を順番につなげた数列であり、行数×列数ビットの大きさのメモリ領域として格納される。
ここで、特徴素行列の作成について、図4および図5を参照して説明する。図4は、特徴素行列の一例を示す図であり、図5は、特徴素行列を作成する一例を示す図である。
まず、図4では、特徴素行列の一例について説明する。図4に示すように、特徴素行列は、行数をMaxS、列数をMaxSとした2次元の固定長正方行列である。
例えば、行列要素(3、5)要素が特定値「1」であるとは、ハッシュ値「5」のキーワードの後方に向かって所定文字数の範囲内にハッシュ値「3」のキーワードがあることを意味する。
なお、MaxS値は、ハッシュ値の最大数であって、例えば数万であるが、これに限定されるものではない。
次に、図5では、特徴素行列を作成する一例について説明する。図5に示すように、機密文書から作成されたキーワードテーブル210から特徴素行列300が作成される。
具体的には、キーワードテーブル210に含まれるキーワード「半導体」(出現位置10、ハッシュ値3)を判定対象とするとき、「半導体」の出現位置「10」から所定文字数の範囲(例えば100文字)内にある他のキーワードには、「三重」(出現位置28、ハッシュ値1)と「先端」(出現位置33、ハッシュ値2)が含まれる。
このようなとき、特徴素行列作成部124は、出現位置がキーワード「三重」より前である「半導体」のハッシュ値「3」を列に、出現位置がキーワード「半導体」より後であるキーワード「三重」のハッシュ値「1」を行に対応付けた行列要素(1、3)を特定値「1」に設定する。
同様に、特徴素行列作成部124は、キーワード「半導体」および「先端」との関係においても、行列要素(2、3)を特定値「1」に設定する。
以降、特徴素行列作成部124は、判定対象を順番に代えて上述した操作を行い、特徴素行列300を作成する。
図2に戻って、社内ドメイン判定部130は、メールの送信先が社内宛であるか否かを判定する。
具体的には、社内ドメイン判定部130は、メール受信部110から検査対象テキストのメール本文を取得し、かつ、特徴素行列作成部124から特徴素行列を取得すると、メール本文に含まれる送信先を社内ドメイン定義230に格納された社内ドメインと照合して、照合結果に基づき、送信先が社内ドメインであるか否かを判定する。
ここで、社内ドメイン定義230は、社内ドメインをパターン列で表した文字列から構成され、例えば「*.xxx.com」や「*.xxx.co.jp」(xxxは、例えば会社名称の英文字)等を含む。
社内ドメイン判定部130は、メールの送信先が社内ドメインであると判定した場合には、メールを機密文書として保管するために、検査対象テキストの特徴素行列および検査対象テキストのメール本文を特徴素行列追加部140に出力する。また、社内ドメイン判定部130は、メールの送信先が社内ドメインでないと判定した場合には、検査対象テキストと機密文書との類似性を算出するために、検査対象テキストの特徴素行列を共通行列作成部161に出力する。
特徴素行列追加部140は、社内ドメイン判定部130から検査対象テキストの特徴素行列を取得すると、取得した特徴素行列を特徴素行列DB(Database)240に追加する。すなわち、特徴素行列追加部140は、メールの送信先が社内ドメインである場合には、社内宛のメールであるため、そのメールの検査対象テキストを機密文書として特徴素行列DB240にあらかじめ格納する。
具体的には、特徴素行列追加部140は、社内ドメイン判定部130から検査対象テキストの特徴素行列を取得すると、取得した特徴素行列をシリアライズ部150に出力し、出力した特徴素行列のシリアライズ結果をシリアライズ部150から取得する。
また、特徴素行列追加部140は、社内ドメイン判定部130から取得したメール本文からメールが受信された日付、送信元および送信先を抽出し、抽出した情報とシリアライズ結果とを1レコードとして、特徴素行列DB240に格納する。
さらに、特徴素行列追加部140は、メールの送信要求をメール送信部190に通知する。
ここで、特徴素行列DB240のデータ構造の一例について図6を参照して説明する。図6は、特徴素行列DBのデータ構造の一例を示す図である。図6に示すように、特徴素行列DB240は、メールが受信された日時と、メールアドレスによって示される送信者と、メールアドレスによって示される受信者と、シリアライズされた特徴素行列と、から構成される。この特徴素行列DB240は、これらの要素から構成されるレコードを、機密文書ごとに記憶する。
シリアライズ部150は、特徴素行列追加部140から検査対象テキストの特徴素行列を取得すると、取得した特徴素行列をシリアライズして、シリアライズ結果を特徴素行列追加部140に出力する。このシリアライズとは、特徴素行列の情報量を変えないで文字列などの1次元のデータに変換することをいう。
ここで、特徴素行列のシリアライズ方法の一例として、図7を参照して説明する。図7は、特徴素行列のシリアライズ方法の一例を示す図である。なお、図7では、説明の便宜上、特徴素行列が8行8列であるものとして説明する。
まず、シリアライズ部150は、特徴素行列300のi行(iは1〜8)またはi列に特定値「1」を含む場合、縮退ベクトル310のi番目の値を特定値「1」に設定する。図7の特徴素行列300の例では、iが1、3、4および5の場合にi行またはi列に特定値「1」が設定されているため、縮退ベクトル310は、「10111000」となる。
次に、シリアライズ部150は、縮退ベクトル310の各ビットの中で特定値「1」が設定されている行および列のみを特徴素行列300から取り出して、縮退行列320を作成する。図7の特徴素行列300の例では、縮退ベクトル310が「10111000」であるため、特定値「1」が設定されている1、3、4および5の行および列のみの値が特徴素行列300から取り出され、縮退行列320が作成される。
さらに、シリアライズ部150は、縮退ベクトル310および縮退行列320の情報を8ビットずつ16進数の値に変換(バイト化)して、シリアライズ結果「B8/6B10」を取得する。
なお、シリアライズ方法としては、上述した方法以外に、特徴素行列の0と1の2進数のデータを単純に8ビットずつ16進数の値に変換されたデータをシリアライズ結果とする方法がある。また、別のシリアライズ方法としては、特徴素行列の0と1の並びの順に0および1の並びの個数をシリアライズ結果とする方法(run lengthを用いた圧縮方法)があるが、これに限定されるものではない。
図2に戻って、類似算出部160は、社内ドメイン判定部130がメールの送信先が社内ドメインでないと判定した場合には、検査対象テキストと機密文書との類似性を算出する。さらに、類似算出部160は、共通行列作成部161と、共通要素数算出部162と、共通要素数判定部163と、3連続ハッシュ値数算出部164と、3連続ハッシュ値数判定部165と、を備える。
共通行列作成部161は、社内ドメイン判定部130から検査対象テキストの特徴素行列を取得すると、検査対象テキストの特徴素行列と機密文書の特徴素行列との共通要素を算出するために論理積を算出して、その算出結果に基づき、検査対象テキストと機密文書との共通行列を作成する。この共通行列を生成することによって、検査対象テキストと機密文書との共通する組み合わせ情報、すなわち、所定文字数の範囲内に共通するキーワードの対(ハッシュ値の対)があることがわかる。
具体的には、共通行列作成部161は、特徴素行列DB240に格納されている複数の機密文書のうち検査対象テキストとの類似性を算出していない機密文書を選択して、選択した機密文書のシリアライズされた特徴素行列を行列の型に復元して、元の特徴素行列を生成する。
また、共通行列作成部161は、生成した機密文書の特徴素行列と検査対象テキストの特徴素行列との論理積を算出して、その算出結果に基づき、共通行列を作成する。さらに、共通行列作成部161は、作成した共通行列を共通要素数算出部162および3連続ハッシュ値数算出部164に出力する。
共通要素数算出部162は、共通行列作成部161から共通行列を取得すると、共通行列に含まれる共通要素である特定値「1」の個数(共通要素数)を算出して、算出した共通要素数を共通要素数判定部163に出力する。
共通要素数判定部163は、共通要素数算出部162から共通要素数を取得すると、取得した共通要素数が所定値以上あるか否かを判定する。
なお、所定値は、例えば「3」であるが、検査対象テキストと機密文書間の類似の可能性が認められる数値であれば良く、あらかじめ実験等で調べられた数値が記憶部20に記憶される。
共通要素数判定部163は、共通要素数が所定値以上であると判定すると、機密文書と検査対象テキスト間の類似の可能性があるものと判断し、文書間に類似の可能性がある旨を3連続ハッシュ算出部164に通知する。
一方、共通要素数判定部163は、共通要素数が所定値未満であると判定すると、検査対象テキストと機密文書間の類似の可能性がないものと判断し、文書間に類似の可能性がない旨を類似判定部170に通知する。
なお、上述した共通行列作成部161、共通要素数算出部162および共通要素数判定部163の処理が、検査対象テキストと機密文書との「類似性検査1」となる。
ここで、「類似性検査1」の類似性検査について、図8−1および図8−2を参照して説明する。図8−1および図8−2は、「類似性検査1」の類似性検査の一例を示す図である。まず、図8−1の例では、機密文書の特徴素行列(M1)400aと、検査対象テキストの特徴素行列(M2)400bとを有し、その検査対象テキストには、機密文書のA1部分が部分的にコピーされ編集されたA2部分を含んでいるものとする。
図8−1の例では、検査対象テキストには、所定文字数の範囲内にキーワード「鹿児島」(ハッシュ値「7」)とキーワード「半導体」(ハッシュ値「3」)の対、キーワード「会津」(ハッシュ値「5」)とキーワード「マイコン」(ハッシュ値「4」)の対、キーワード「マイコン」(ハッシュ値「4」)とキーワード「半導体」(ハッシュ値「3」)の対およびキーワード「会津」(ハッシュ値「5」)とキーワード「半導体」(ハッシュ値「3」)の対がある。これにより、検査対象テキストの特徴素行列(M2)400bには、行列要素(3、7)、(4、5)、(3、4)および(3、5)に特定値「1」が設定されている。
なお、機密文書の特徴素行列(M1)400aは、特徴素行列DB240に格納された1つの機密文書のシリアライズされた値が行列の型に復元されたものである。
次に、図8−2では、機密文書の特徴素行列(M1)400aと検査対象テキストの特徴素行列(M2)400bとの論理積の結果を示す共通行列(M3)400cを表している。この共通行列(M3)400cに含まれる特定値「1」の行列要素が、機密文書と検査対象テキストとの共通するハッシュ値の対となる。
図8−2の例では、共通行列(M3)400cのB1部分にある(3、4)、(3、5)および(4、5)の行列要素が機密文書と検査対象テキストとの共通するハッシュ値の対となり、共通要素の数は3個となる。そして、共通要素数判定部163は、共通要素の数が所定値以上であるか否かを判定して、所定値が3である場合は、文書間に類似の可能性があると判断するものである。
図2に戻って、3連続ハッシュ値数算出部164は、共通要素数判定部163から文書間に類似の可能性がある旨の通知を取得し、共通行列作成部161から共通行列を取得すると、取得した共通行列を用いて、所定文字数の同一の範囲内に出現する3連続ハッシュ値の数を算出する。
なお、3連続ハッシュ値とは、検査対象テキストと機密文書の中にそれぞれ所定文字数の範囲内に出現し、且つ、同じ並びの順序で連続して出現する3つのハッシュ値から組み合わされる組み合わせ情報の群をいうものとする。
ここで、3連続ハッシュ値について、図9−1を参照して説明する。図9−1は、3連続ハッシュ値の一例を示す図である。なお、図9−1では、検査対象テキストおよび機密文書が所定文字数の範囲内に、「会津」(ハッシュ値「5」)、「マイコン」(ハッシュ値「4」)、「半導体」(ハッシュ値「3」)の並びの順序でキーワードがあるものとする。また、説明の便宜上、共通行列が8行8列であるものとして説明する。
図9−1に示すように、文書の所定文字数の範囲内に、キーワードが「会津」(ハッシュ値「5」)、「マイコン」(ハッシュ値「4」)、「半導体」(ハッシュ値「3」)の並びの順序で連続して出現しているため、キーワードの対は、「会津」−「マイコン」、「会津」−「半導体」、「マイコン」−「半導体」となる。
そして、これらの行列要素は、それぞれ(4、5)、(3、5)および(3、4)となり、これらの行列要素に特定値「1」が設定される共通行列400cを構成している。これらの行列要素を1つの3連続ハッシュ値という。
一般的に、類似文書であれば、所定文字数の範囲内にある連続した並びの3つのキーワードの数は多くなるため、3連続ハッシュ値の数も多くなる。そこで、3連続ハッシュ値数算出部164は、共通行列400cを用いて、3連続ハッシュ値の数を算出して、後述する3連続ハッシュ値の数によって、類似文書であるか否かを判定する。
具体的には、3連続ハッシュ値数算出部164は、判定対象のキーワードから所定文字数の範囲内にある複数の他のキーワードを検索するために、共通行列の列ごとに特定値「1」の個数を算出する。また、3連続ハッシュ値数算出部164は、特定値「1」の個数が2以上ある列に対して特定値「1」がある行の位置を示すハッシュ値を取り出す。このハッシュ値が、判定対象のキーワードから所定文字数の範囲内にある複数の他のキーワードのハッシュ値となっている。
また、3連続ハッシュ値数算出部164は、取り出した複数のハッシュ値のうち互いに異なる2つのハッシュ値の組み合わせを行列要素として、その行列要素が特定値「1」の場合、所定文字数の範囲内に3連続ハッシュ値が1個あったことになり、3連続ハッシュ値の数を+1加算する。
3連続ハッシュ値数判定部165は、3連続ハッシュ値数算出部164から3連続ハッシュ値の数を取得すると、取得した3連続ハッシュ値の数が所定値以上あるか否かを判定する。なお、所定値は、例えば「1」であるが、検査対象テキストと機密文書間の類似の可能性が認められる数値であれば良く、あらかじめ実験等で調べられ記憶部20に記憶される。
3連続ハッシュ値数判定部165は、3連続ハッシュ値の数が所定値以上であると判定すると、機密文書と検査対象テキストとは類似していると判断し、文書間は類似している旨を類似判定部170に通知する。一方、3連続ハッシュ値数判定部165は、3連続ハッシュ値の数が所定値未満であると判定すると、検査対象テキストと機密文書とが類似していないと判断し、文書間に類似の可能性がない旨を類似判定部170に通知する。
なお、上述した3連続ハッシュ値数算出部164および3連続ハッシュ値数判定部165の処理が、検査対象テキストと機密文書との「類似性検査2」となる。
ここで、「類似性検査2」の類似性検査について、図9−2を参照して説明する。図9−2は、「類似性検査2」の類似性検査の一例を示す図である。図9−2に示すように、共通行列(M3)400cの列ごとに特定値「1」の個数を算出して、「1」の個数が2以上ある列が5列目にあるため、特定値「1」がある行列要素(C1)の行の位置を示すハッシュ値を取り出すと「3」および「4」がある。
すなわち、ハッシュ値「3」および「4」が、ハッシュ値「5」を持つ判定対象のキーワードから所定文字数の範囲内にある異なる複数の他のキーワードのハッシュ値である。これにより、機密文書と検査対象テキストとでは、ハッシュ値「5」を持つキーワードの開始位置の同異に関わらず、所定文字数の範囲内に「5」→「4」および「5」→「3」の近接関係があることがわかる。
次に、取り出された複数のハッシュ値「3」および「4」を組み合わせた行列要素(3、4)または(4、3)のうち(3、4)(C2)が特定値「1」であるため、所定文字数の範囲内に、「4」→「3」の近接関係があることがわかる。
すると、所定文字数の範囲内に、「5」→「4」→「3」の連続した並びがあることがわかる。したがって、3連続ハッシュ値が検索され、その個数は1となる。そして、3連続ハッシュ値数判定部165は、3連続ハッシュ値の数が所定値以上であるか否かを判定して、所定値が1である場合は、文書間は類似であると判断する。
類似判定部170は、共通要素数判定部163および3連続ハッシュ値数判定部165から各種通知を取得すると、取得した通知に応じて、検査対象テキストと機密文書間が類似しているか否かを機密文書ごとに順次判定する。
具体的には、類似判定部170は、共通要素数判定部163または3連続ハッシュ値数判定部165から文書間に類似の可能性がない旨を取得すると、類似を判断していない機密文書がある場合には、次の機密文書を選択する旨を共通行列作成部161に通知する。
また、類似判定部170は、共通要素数判定部163または3連続ハッシュ値数判定部165から文書間に類似の可能性がない旨を取得すると、検査対象テキストとの類似を判断していない機密文書がない場合には、メールの送信要求をメール送信部190に通知する。一方、類似判定部170は、3連続ハッシュ値数判定部165から文書間は類似している旨を取得すると、メールの送信拒否要求をメール送信拒否部180に通知する。
メール送信拒否部180は、類似判定部170からメールの送信拒否要求を取得すると、メール受信部110から取得したメールの送信をブロックする。
メール送信部190は、特徴素行列追加部140または類似判定部170からメールの送信要求を取得すると、メール受信部110から取得したメールを、メールの送信先に送信する。
なお、「類似性検査1」では、1つのキーワードに対して一意のハッシュ値が対応付けられることを前提として説明をした。ところが、互いに異なるキーワードのハッシュ値が[1/ハッシュ値の最大数]の確率で偶然に衝突することがある。
この場合、「類似性検査1」では、検査対象テキストと検査文書との共通要素、すなわち、共通するハッシュ値の対を用いて文書間の類似を判断するため、文書間の類似について誤った判断をすることがある。そのため、所定文字数の範囲内にある3連続ハッシュ値を用いて文書間の類似を判断する「類似性検査2」が必要となるのである。
この「類似性検査2」の必要性について、図9−3を参照して、説明する。図9−3は、類似性検査2の必要性を示す図である。図9−3に示すように、検査文書T1に含まれるキーワードと、検査文書T1と無関係な機密文書T3に含まれるキーワードと、が偶然同一のハッシュ値となることにより、検査文書T1と機密文書T3とが類似であると誤って判断されることがある。
図9−3の例では、検査対象T1に含まれるキーワード「半導体」および機密文書T3に含まれるキーワード「釣り」がともにハッシュ値「3」を持つものとする。この場合、それぞれのキーワードの出現位置から所定文字数の範囲内に同じキーワード「三重」(ハッシュ値「1」)があると、それぞれの特徴素行列の行列要素(1、3)が特定値「1」に設定されることとなる。
すると、共通行列の共通要素(1、3)が特定値「1」に設定されるため、共通要素数が+1加算されてしまい、共通要素数の数によって文書間の類似を判断する「類似性検査1」だけでは、誤った類似判断をしてしまうことがある。そこで、「類似性検査2」では、文書間の類似性を確実に判断するために、キーワード「半導体」(ハッシュ値「3」)、「三重」(ハッシュ値「1」)、「先端」(ハッシュ値「2」)の並びについて、3−1、1−2、2−3の3つのハッシュ値の対(3連続ハッシュ値)があるか否かを検査する。
もっとも、図9−3の例では、「半導体」と「釣り」のハッシュ値だけでなく、さらに「先端」と「真珠」のハッシュ値が偶然一致する場合もある。しかし、このように偶然に一致する確率は、1/((ハッシュ値の最大数)×(ハッシュ値の最大数))であり非常に低いため、偶然に3連続ハッシュ値が一致してしまうことは確率的に非常に低いものと考えられる。
また、キーワード「半導体」(ハッシュ値「3」)、「三重」(ハッシュ値「1」)、「先端」(ハッシュ値「2」)の並びについて、3−1、1−2、2−3の3つのハッシュ値の対が、所定文字数の範囲内になく、偶然、文書内の離れた位置にバラバラに存在する場合もある。この場合、誤って3連続ハッシュ値となり文書間が類似するものとみなされることもあるが、文書間のキーワードが一致していれば、文書間が類似するものとみなしても良い。
[実施例1に係る文書検査装置の文書検査処理]
次に、実施例1に係る文書検査装置の文書検査処理を、図10を参照して説明する。図10は、実施例1に係る文書検査装置の文書検査処理の処理手順を示すフローチャートである。なお、特徴素行列(CM)は、行数をMaxS、列数をMaxSとした2次元の正方行列であるものとする。
まず、社内のクライアントPCから送信されたメール(M)が、メール受信部110によって受信される(S11)。そして、メール受信部110は、受信したメール(M)からメール(M)本文のテキストとメール(M)に添付された添付ファイルに含まれるテキストとを検査対象テキスト(D)として抽出する(S12)。そして、メール受信部110は、抽出した検査対象テキスト(D)を特徴素行列抽出部120に出力し、抽出したメール(M)本文を社内ドメイン判定部130に出力する。
特徴素行列抽出部120は、メール受信部110によって出力された検査対象テキスト(D)から特徴素行列(CM)を抽出する(S13)。そして、特徴素行列抽出部120は、抽出した特徴素行列を社内ドメイン判定部130に出力する。
そして、特徴素行列抽出部120から特徴素行列を取得した社内ドメイン判定部130は、メール(M)本文に含まれている全ての送信先ドメインが社内ドメイン定義230に格納された社内ドメインに含まれているか否かを判定する(S14)。
社内ドメイン判定部130は、メール(M)本文に含まれている全ての送信先ドメインが社内ドメイン定義230に格納された社内ドメインに含まれていると判定する場合には(S14Yes)、特徴素行列(CM)およびメール(M)本文を特徴素行列追加部140に出力する。
そして、特徴素行列追加部140は、社内ドメイン判定部130からメール(M)本文を取得すると、取得したメール(M)本文からメール(M)が受信された日付、送信元および送信先を抽出する(S15)。
その後、特徴素行列追加部140は、社内ドメイン判定部130から特徴素行列(CM)を取得すると、取得した特徴素行列(CM)をシリアライズ部150によってシリアライズされたシリアライズ結果(CMs)を取得する(S16)。
そして、特徴素行列追加部140は、メール(M)が受信された日付、送信元および送信先およびシリアライズ結果(CMs)を1レコードとして、特徴素行列DB240に追加する(S17)。その後、特徴素行列追加部140は、メールの送信要求をメール送信部190に出力する。
一方、社内ドメイン判定部130は、メール(M)本文に含まれているいずれかの送信先ドメインが社内ドメイン定義230に格納された社内ドメインに含まれていないと判定する場合には(S14No)、社外宛のドメインが含まれていると判断し、特徴素行列(CM)を共通行列作成部161に出力する。
引き続き、共通行列作成部161は、社内ドメイン判定部130から特徴素行列(CM)を取得すると、検査対象テキスト(D)との類似判定がされていない機密文書に対するレコードを特徴素行列DB240から選択する。そして、共通行列作成部161は、選択したレコードから特徴素行列のシリアライズ(CMs_i)を抽出する(S18)。
そして、共通行列作成部161は、抽出したシリアライズ(CMs_i)を行列の形に復元して、特徴素行列(CM_i)を生成する(S19)。
その後、類似算出部160は、社内ドメイン判定部130から取得される検査対象テキスト(D)の特徴素行列(CM)と、共通行列作成部161によって生成された機密文書の特徴素行列(CM_i)と、の類似性を算出する(S20)。
そして、類似判定部170は、類似算出部160によって算出された類似性の結果に基づいて、検査対象テキスト(D)の特徴素行列(CM)と機密文書の特徴素行列(CM_i)とが類似しているか否かを判定する(S21)。
その結果、類似判定部170は、検査対象テキスト(D)の特徴素行列(CM)と機密文書に関する特徴素行列(CM_i)とが類似していると判定する場合には(S21Yes)、メールの送信拒否要求をメール送信拒否部180に出力する。そして、類似判定部170からメールの送信拒否要求を取得したメール送信拒否部180は、検査対象テキスト(D)を含むメール(M)をブロックする(S22)。
一方、類似判定部170は、検査対象テキスト(D)の特徴素行列(CM)と機密文書に関する特徴素行列(CM_i)とが類似していないと判定する場合には(S21No)、検査対象テキスト(D)と特徴素行列DB240に格納されている全機密文書との類似判定が終了したか否かを判定する(S23)。
そして、類似判定部170は、検査対象テキスト(D)と特徴素行列DB240に格納されている全機密文書との類似判定が終了していないと判定する場合には(S23No)、検査対象テキスト(D)との類似判定がされていない機密文書との類似判定をさせるために、S18に移行する。
一方、類似判定部170は、検査対象テキスト(D)と特徴素行列DB240に格納されている全機密文書との類似判定が終了したと判定する場合には(S23Yes)、全機密文書との類似性がないものと判断し、メールの送信要求をメール送信部190に出力する。そして、類似判定部170からメールの送信要求を取得したメール送信部190は、メール(M)を外部宛である送信先に送信する(S24)。
次に、図10に示すS13の処理手順について、図11を用いて説明する。図11は、実施例1に係る特徴素行列抽出部120の処理手順を示すフローチャートである。
特徴素行列抽出部120により検査対象テキスト(D)がキーワード出現位置抽出部121に出力されると、キーワード出現位置抽出部121は、キーワードテーブル(KT)210および特徴素行列(ワーク行列250)(CM)を初期化する(S31)。
そして、キーワード出現位置抽出部121は、検査対象テキスト(D)のキーワードテーブル(KT)210を作成する(S32)。
引き続き、キーワード出現位置抽出部121によりキーワードテーブル(KT)210が作成された旨の通知がキーワード範囲内有無判定部123に出力されると、キーワード範囲内有無判定部123は、判定対象とするキーワード(kw_i)に対するレコードをキーワードテーブル(KT)210から選択する。そして、キーワード範囲内有無判定部123は、選択されたレコードから判定対象のキーワード(kw_i)の出現位置(pos_i)およびハッシュ値(H_i)を抽出する(S33)。
また、キーワード範囲内有無判定部123は、判定対象のキーワードより出現位置が後方の他のキーワード(kw_j)に対するレコードをキーワードテーブル(KT)から選択する。そして、キーワード範囲内有無判定部123は、選択したレコードから他のキーワード(kw_j)の出現位置(pos_j)およびハッシュ値(H_j)を抽出する(S34)。
そして、キーワード範囲内有無判定部123は、他のキーワード(kw_j)の出現位置(pos_j)が判定対象のキーワードの出現位置(pos_i)から所定文字数の範囲内であるか否かを判定する(S35)。
その結果、キーワード範囲内有無判定部123は、他のキーワード(kw_j)の出現位置(pos_j)が判定対象のキーワードの出現位置(pos_i)から所定文字数の範囲内にあると判定する場合には(S35Yes)、判定対象のキーワード(kw_i)のハッシュ値(Hi)を列、他のキーワード(kw_j)のハッシュ値(Hj)を行に対応付けた行列要素を特徴素行列作成部124に出力する。そして、特徴素行列作成部124は、特徴素行列(CM)の行列要素を特定値「1」に設定する(S36)。
そして、特徴素行列作成部124は、他のキーワード(kw_j)に対するレコードがキーワードテーブル(KT)210の最大レコードであるか否かを判定し(S37)、最大レコードでないと判定する場合には(S37No)、次の他のキーワードを含むレコードを選択させるためにS34に移行する。
一方、特徴素行列作成部124は、他のキーワード(kw_j)の出現位置(pos_j)が判定対象のキーワードの出現位置(pos_i)から所定文字数の範囲内にないと判定する場合(S35No)、または、他のキーワード(kw_j)に対するレコードが最大レコードであると判定する場合には(S37Yes)、判定対象のキーワード(kw_i)に対するレコードがキーワードテーブル(KT)210の最大レコードであるか否かを判定する(S38)。
そして、特徴素行列作成部124は、判定対象のキーワード(kw_i)に対するレコードがキーワードテーブル(KT)210の最大レコードでないと判定する場合には(S38No)、次の判定対象のキーワードを含むレコードを選択させるためにS33に移行する。
一方、判定対象のキーワード(kw_i)に対するレコードがキーワードテーブル(KT)210の最大レコードであると判定する場合には(S38Yes)、特徴素行列作成部124は、特徴素行列(D)の生成を完了して、特徴素行列(D)を特徴素行列抽出部120に返却する(S39)。
次に、図11に示すS32の処理手順について、図12を用いて説明する。図12は、実施例1に係るキーワードテーブル作成処理の処理手順を示すフローチャートである。
まず、キーワード出現位置抽出部121は、検査対象テキスト(D)を単語に分割する(S41)。なお、キーワード出現位置抽出部121は、検査対象テキスト(D)を、言語で意味を持つ最小単位の文字列である単語に分割すれば良く、例えば形態素解析を行っても良い。
そして、キーワード出現位置抽出部121は、分割したそれぞれの単語をキーワードとして、1つのキーワード(kw)を選択して(S42)、選択したキーワード(kw)が不要語リスト220に含まれているか否かを判定する(S43)。
キーワード出現位置抽出部121が、キーワード(kw)が不要語リスト220に含まれていないと判定する場合には(S43No)、検査対象テキスト(D)の先頭からのキーワード(kw)の出現位置(pos)を取得する(S44)。
また、キーワード出現位置抽出部121は、キーワード(kw)をハッシュ値算出部122に出力して、出力したキーワード(kw)に対するハッシュ値(H_kw)をハッシュ値算出部122から取得する(S45)。
そして、キーワード出現位置抽出部121は、選択したキーワード(kw)、出現位置(pos)およびハッシュ値(H_kw)を1つのレコードとして、キーワードテーブル(KT)210に追加する(S46)。
そして、キーワード出現位置抽出部121が、選択したキーワード(kw)をキーワードテーブル(KT)210に追加した後、または、キーワード(kw)が不要語リスト220に含まれていると判定した場合には(S43Yes)、すべての単語が不要語判定を終了したか否かを判定する(S47)。
その結果、キーワード出現位置抽出部121が、すべての単語が不要語判定を終了していないと判定した場合には(S47No)、次の単語を選択するためにS42に移行する。一方、すべての単語が不要語判定を終了したと判定した場合には(S47Yes)、キーワードテーブル(KT)210の生成を完了する(S48)。
次に、図12に示すS45の処理手順について、図13を用いて説明する。図13は、実施例1に係るハッシュ値算出部122の処理手順を示すフローチャートである。なお、図13の例では、ハッシュ値算出部122は、ハッシュ値の算出方法として、キーワードを構成する文字のすべての文字コードを加算した値をハッシュ値の最大数で除算した結果、余りの値に1を加算する方法を採用するものとする。
まず、キーワード出現位置抽出部121によりキーワード(kw)がハッシュ値算出部122に出力されると、ハッシュ値算出部122は、キーワード(kw)を文字単位(例えば、c1、c2、c3、・・・、cM)に分割する(S51)。
そして、ハッシュ値算出部122は、文字コードを加算した結果値を示すカウント(C)を初期化するために0を設定する(S52)。
次に、ハッシュ値算出部122は、分割した文字のうち、1つの文字(ci)を選択する(S53)。
引き続き、ハッシュ値算出部122は、選択した文字(ci)の文字コードを取得する(S54)。
そして、ハッシュ値算出部122は、取得した文字コードをカウント(C)に加算する(S55)。
その後、ハッシュ値算出部122は、分割した全ての文字(ci(i=1〜M))に対する文字コードを加算したか否かを判定する(S56)。そして、全ての文字に対する文字コードを加算していないと判定した場合には(S56No)、次の文字を選択するために、S53に移行する。
一方、全ての文字に対する文字コードを加算したと判定した場合には(S56Yes)、ハッシュ値算出部122は、カウント(C)をハッシュ値の最大数(MaxS)で除算して、余りの値に+1を加算した値を算出する(S57)。その結果、算出された値がキーワード(kw)のハッシュ値となる。そして、ハッシュ値算出部122は、この算出したハッシュ値をキーワード出現位置抽出部121に返却する。
次に、図10に示すS20の処理手順について、図14を用いて説明する。図14は、実施例1に係る類似算出部160の処理手順を示すフローチャートである。
まず、共通行列作成部161は、社内ドメイン判定部130から取得される検査対象テキスト(D)の特徴素行列(Mc1)と、生成した機密文書の特徴素行列(Mc2)と、の論理積を算出して、共通行列(MA)を作成して(S61)、作成した共通行列(MA)を共通要素数算出部162に出力する。
次に、共通要素数算出部162は、取得した共通行列(MA)の各行列要素の中に含まれる共通要素である特定値「1」の個数(共通要素数)を数える(S62)。その結果、共通要素数は、検査対象テキスト(D)および機密文書の共通するキーワードの対の数であるため、検査対象テキスト(D)および機密文書の共通するハッシュ値の対の数が決定されることになる。
そして、共通要素数判定部163は、検査対象テキスト(D)および機密文書の共通するハッシュ値の対の数が所定値以上であるか否かを判定する(S63)。そして、共通要素数判定部163は、ハッシュ値の数が所定値以上であると判定する場合には(S63Yes)、機密文書と検査対象テキスト間の類似の可能性があるものと判断し、文書間に類似の可能性がある旨を3連続ハッシュ値数算出部164に出力する。一方、共通要素数判定部163は、ハッシュ値の数が所定値未満であると判定する場合には(S63No)、検査対象テキスト(D)と機密文書間の類似の可能性がないものと判断し、文書間に類似の可能性がない旨を類似判定部170に通知する(S66)。
共通要素数判定部163から文書間に類似の可能性がある旨を取得した3連続ハッシュ値数算出部164は、共通行列(MA)に含まれる3連続ハッシュ値の数を数える(S64)。
そして、3連続ハッシュ値数判定部165は、3連続ハッシュ値の数が所定値以上であるか否かを判定する(S65)。そして、3連続ハッシュ値数判定部165は、3連続ハッシュ値の数が所定値以上であると判定する場合には(S65Yes)、文書間は類似している旨を類似判定部170に通知する(S67)。
一方、3連続ハッシュ値数判定部165は、3連続ハッシュ値の数が所定値未満であると判定する場合には(S65No)、検査対象テキスト(D)と機密文書間の類似の可能性がないものと判断し、文書間に類似の可能性がない旨を類似判定部170に通知する(S66)。
次に、図14に示すS64の処理手順について、図15を用いて説明する。図15は、実施例1に係る3連続ハッシュ値数算出部164の処理手順を示すフローチャートである。
まず、3連続ハッシュ値数算出部164は、3連続ハッシュ値数を示すカウント(Csq)を初期化するためにカウント(Csq)に0を設定する(S71)とともに、共通行列(MA)の列の位置を示すiに1を設定する(S72)。なお、iによって示される列の位置(i列)とは、判定対象のキーワードのハッシュ値と一致するものである。
そして、3連続ハッシュ値数算出部164は、共通行列(MA)からi列に含まれている特定値「1」がある行の位置(例えば、p1、p2、p3、・・・、pM)を取得する(S73)。なお、行の位置は、判定対象のキーワードと組み合わされる他のキーワードのハッシュ値と一致するものである。
引き続き、3連続ハッシュ値数算出部164は、i列に含まれている特定値「1」の個数が2以上であるか否かを判定する(S74)。
そして、3連続ハッシュ値数算出部164は、特定値「1」の個数が2以上であると判定する場合には(S74Yes)、判定対象のキーワードと他のキーワードとのハッシュ値の対の数が2以上あると判断し、3連続ハッシュ値であるか否かを判定するために、取得した行の位置を指すインデックスjに1を設定する(S75)。
そして、3連続ハッシュ値数算出部164は、インデックスjが指す行の位置(pj)を選択する(S76)。また、3連続ハッシュ値数算出部164は、インデックスkにj+1を設定して(S77)、インデックスkが指す行の位置(pk)を選択する(S78)。
そして、3連続ハッシュ値数算出部164は、インデックスjが指す行の位置(pj)を行、インデックスkが指す行の位置(pk)を列とする共通行列(MA)の行列要素(pj、pk)が特定値「1」であるか否かを判定する(S79)。
そして、3連続ハッシュ値数算出部164は、行列要素(pj、pk)が特定値「1」であると判定する場合には(S79Yes)、同一の判定対象に対する2つの他のキーワード同士もハッシュ値の対となっているため3連続ハッシュ値と判断し、カウント(Csq)に+1加算する(S80)。
3連続ハッシュ値数算出部164は、カウント(Csq)に+1加算した後、または、行列要素(pj,pk)が特定値「1」でないと判定する場合には(S79No)、インデックスjが指す行の位置(pj)を列、インデックスkが指す行の位置(pk)を行とする共通行列(MA)の行列要素(pk、pj)が特定値「1」であるか否かを判定する(S81)。
そして、3連続ハッシュ値数算出部164は、行列要素(pk,pj)が特定値「1」であると判定する場合には(S81Yes)、同一の判定対象に対する2つの他のキーワード同士もハッシュ値の対となっているため3連続ハッシュ値と判断し、カウント(Csq)に+1加算する(S82)。
3連続ハッシュ値数算出部164は、カウント(Csq)に+1加算した後、または、行列要素(pk,pj)が特定値「1」でないと判定する場合には(S81No)、インデックスkを+1加算して(S83)、インデックスkが、取得した行の位置の最大数(M)以下であるか否かを判定する(S84)。
そして、3連続ハッシュ値数算出部164は、インデックスkが、取得した行の位置の最大数(M)以下であると判断する場合には(S84Yes)、次の行の位置を選択するためにS78に移行する。
一方、3連続ハッシュ値数算出部164は、インデックスkが、取得した行の位置の最大数(M)より大きいと判断する場合には(S84No)、インデックスjを+1加算して(S85)、インデックスjが、取得した行の位置の最大数(M)より小さいか否かを判定する(S86)。
そして、3連続ハッシュ値数算出部164は、インデックスjが、取得した行の位置の最大数(M)より小さいと判断する場合には(S86Yes)、次の行の位置を選択するためにS76に移行する。
一方、3連続ハッシュ値数算出部164は、インデックスjが、取得した行の位置の最大数(M)以上であると判断する場合には(S86No)、インデックスiを+1加算して(S87)、列の位置iが、共通行列MAの列の最大数(MaxS)以下であるか否かを判定する(S88)。
そして、3連続ハッシュ値数算出部164は、列の位置iが、共通行列MAの列の最大数(MaxS)以下であると判断する場合には(S88Yes)、次の列に対して3連続ハッシュ値の判断を行うためにS73に移行する。
一方、3連続ハッシュ値数算出部164は、列の位置iが、共通行列MAの列の最大数(MaxS)より大きいと判断する場合には(S88No)、3連続ハッシュ値数は算出されたため、カウント(Csq)の算出を完了する(S89)。
次に、図10に示すS16の処理手順について、図16を用いて説明する。図16は、実施例1に係るシリアライズ部150の処理手順を示すフローチャートである。
まず、特徴素行列追加部140により特徴素行列(CM)がシリアライズ部150に出力されると、シリアライズ部150は、縮退ベクトル(V)を初期化する(S91)。具体的には、シリアライズ部150は、特徴素行列(CM)が行数MaxS且つ列数MaxSの正方行列であるため、例えばMaxSビットの縮退ベクトル(V)を全て「0」に設定する。
また、シリアライズ部150は、インデックスiに1を設定する(S92)。
次に、シリアライズ部150は、特徴素行列(CM)のi番目の行またはi番目の列に特定値「1」が含まれているか否かを判定する(S93)。
そして、シリアライズ部150は、特徴素行列(CM)のi番目の行またはi番目の列に特定値「1」が含まれていると判定する場合には(S93Yes)、縮退ベクトル(V)のi番目の要素を「1」に設定する(S94)。
シリアライズ部150は、縮退ベクトル(V)のi番目の要素を「1」に設定した後、または、特徴素行列(CM)のi番目の行およびi番目の列に特定値「1」が含まれていないと判定する場合には(S93No)、インデックスiを+1加算する(S95)。
その後、シリアライズ部150は、インデックスiが行数および列数の最大値MaxS以下であるか否かを判定する(S96)。
そして、シリアライズ部150は、インデックスiがMaxS以下であると判定する場合には(S96Yes)、次のi番目の行またはi番目の列に特定値「1」が含まれているか否かを判定するためにS93に移行する。
一方、シリアライズ部150は、インデックスiがMaxSより大きいと判定する場合には(S96No)、縮退ベクトル(V)をシリアライズするために、縮退ベクトル(V)の開始位置から4要素ずつを16進に変換して、シリアライズした結果(S1)を算出する(S97)。
引き続き、シリアライズ部150は、縮退ベクトル(V)の要素が「1」である位置の行および列を特徴素行列(CM)から取り出して、縮退行列(CM_R)を作成する(S98)。
そして、シリアライズ部150は、作成した縮退行列(CM_R)の各行をつなげたベクトル(V2)を作成する(S99)。
そして、シリアライズ部150は、縮退行列(CM_R)をシリアライズするために、作成したベクトル(V2)の開始位置から4要素ずつを16進に変換して、シリアライズした結果(S2)を算出する(S100)。
そして、シリアライズ部150は、縮退ベクトル(V)をシリアライズした結果(S1)と縮退行列(CM_R)をシリアライズした結果(S2)とから特徴素行列(CM)のシリアライズ値(S1/S2)を取得して、取得したシリアライズ値を特徴素行列追加部140に返却する(S101)。
以上のように本実施例1によれば、文書検査装置1は、文書の類似性を判定する際に比較対象となる機密文書を含む検査対象テキストからキーワードおよびそのキーワードの出現位置を抽出する。そして、文書検査装置1は、抽出されたキーワードの出現位置ごとのキーワードを判定対象として、その判定対象のキーワード前後に関わる所定文字数の範囲内に抽出された他のキーワードがあるか否かを判定する。さらに、文書検査装置1は、他のキーワードがあると判定するとき、判定対象のキーワードおよび他のキーワードを各キーワードの出現位置の前後情報に対応付けて組み合わせたキーワードの対を生成する。そして、文書検査装置1は、生成された検査対象テキストの複数のキーワードの対と、機密文書の複数のキーワードの対と、を比較して、検査対象テキストの複数のキーワードの対のうち、機密文書のキーワードの対と一致するキーワードの対の数が類似判定数以上であるか否かを判定して、その判定結果に基づき検査対象テキストと機密文書との類似性を判定する。
かかる構成によれば、文書検査装置1は、例えば検査対象テキストが機密文書の一部を部分的にコピーしたものや一部変更したものであっても、コピーした部分のキーワードの対が共通するため、所定文字数の範囲内にある共通するキーワードの対によって文書間の類似性を判定することができることとなり、検査対象テキストと機密文書との類似性を高精度に判断することができる。
また、文書検査装置1は、例えば検査対象テキストが機密文書の文の「てにをは」を変更したり、いくつかのキーワードを削除したり、構造を変えて編集した場合であっても、キーワードの出現位置は変わっても多くのキーワードの対は共通するため、所定文字数の範囲内にある共通するキーワードの対によって文書間の類似性を判定することができることとなり、検査対象テキストと機密文書との類似性を高精度に判断することができる。
その結果、文書検査装置1は、検査対象テキストが例えばメール等のような送信対象文書の場合、送信対象文書と機密文書との類似性があると判断したとき、送信対象文書を外部に送信することを拒否すれば、機密漏えいを防止することができる。
また、文書検査装置1は、検査対象テキストが外部に送信する送信対象文書の場合、機密文書から作成された機密性の高い送信対象文書を誤って送信することを防止することができる。
また、複数のキーワードが同一のハッシュ値を持つように特徴素行列を構成した場合、特徴素行列の情報からは元の機密文書のキーワードの対を復元することはできないため、例え特徴素行列DB240の内容が外部に漏えいしたとしても、元の機密文書に含まれる個人情報などの内容が漏えいしない。
なお、上記実施例1では、検査対象テキストおよび機密文書の各特徴素行列におけるキーワードの対に対応する行列要素を、特定値「1」に設定して、類似性検査1によって、2つの特徴素行列に共に特定値「1」が設定されている同一の行列要素の数が所定値以上であれば文書間に類似の可能性があるものとして説明した。本発明は、これに限定されるものではなく、検査対象テキストおよび機密文書の各特徴素行列におけるキーワードの対に対応する行列要素を、対となったキーワード間の文字列数に設定して、類似性検査1によって、2つの特徴素行列に共に同値が設定されている同一の行列要素の数が所定値以上であれば文書間に類似の可能性があるものとしても良い。これにより、機密文書を流用する場合には、機密文書から検査対象テキストにキーワード間の文字列数を変更しないでそのまま部分的にコピーすることが多いため、文書検査装置1は、共通するキーワードの対が共通する文の中に含まれている可能性を高い確率で検知することができ、類似性検査1によって文書間の類似性をさらに高精度に判断することができる。
また、検査対象テキストおよび機密文書の各特徴素行列におけるキーワードの対に対応する行列要素を、各キーワードの対の出現個数に設定して、類似性検査1によって、2つの特徴素行列の同一の行列要素が共に1以上の行列要素について、検査対象テキスト側の行列要素の値の和が所定値以上であれば文書間に類似の可能性があるものとしても良い。これにより、機密文書を流用する場合には、機密文書から検査対象テキストに部分的に何度もコピーしたり改訂したりすることが多いため、文書検査装置1は、共通するキーワードの対を用いて編集されている可能性を高い確率で検知することができ、類似性検査1によって文書間の類似性をさらに高精度に判断することができる。
ところで、実施例1に係る文書検査装置1では、検査対象テキストと機密文書との共通するハッシュ値の対の数が所定値以上であるか否かを判定することにより、双方の文書の類似性を判断した(「類似性検査1」)。さらに、文書検査装置1では、「類似性検査1」によって類似の可能性があると判断した場合には、3連続ハッシュ値の数が所定値以上であるか否かを判定することにより、双方の文書の類似性を判断した(「類似性検査2」)。しかしながら、文書検査装置1は、これに限定されるものではなく、「類似性検査1」によって類似の可能性があると判断した場合には、検査対象テキストの中の機密文書との類似箇所を特定するようにしても良い。
[実施例2に係る文書検査装置の構成]
そこで、実施例2では、文書検査装置2が、「類似性検査1」によって類似の可能性があると判断した場合には、検査対象テキストの中の機密文書との類似箇所を特定する場合を説明する。図17は、実施例2に係る文書検査装置2の構成を示す機能ブロック図である。なお、図2に示す文書検査装置1と同一の構成については同一符号を示すことで、その重複する構成および動作の説明について省略する。実施例1と実施例2とが異なるところは、類似算出部160内の3連続ハッシュ値数算出部164および3連続ハッシュ値数判定部165の代わりに、類似箇所判定部364および類似箇所特定部365を追加した点にある。さらに、実施例1と実施例2とが異なるところは、ハッシュ値算出部122をハッシュ値算出部322へ変更し、キーワードテーブル210の構成内容を変更し、キーワードテーブル41とした点にある。
キーワードテーブル410のデータ構造の一例について図18を参照して説明する。図18は、実施例2に係るキーワードテーブル410のデータ構造の一例を示す図である。図18に示すように、キーワードテーブル410は、出現位置410c毎に、ワード位置410a、キーワード410b、ハッシュ値410dおよび類似度410eを対応付けて記憶する。ワード位置410aとは、検査対象テキスト内に出現するキーワード410bの出現位置410cの最前方から連番で割り当てられた数値である。例えば、キーワード410b「A」、「B」および「C」の各ワード位置は、出現位置410cの最前方からそれぞれ「1」、「2」、「22」と割り当てられる。
類似度410eは、対応するキーワードが検査対象テキストの中で機密文書と類似する類似箇所に含まれるか否かを示す。例えば、類似度410eには、対応するキーワードが検査対象テキストの中で機密文書との類似箇所に含まれる場合には、類似箇所を示す「1」が設定される。一方、対応するキーワードが検査対象テキストの中で機密文書との類似箇所に含まれない場合には、非類似箇所を示す「0」が設定される。
ハッシュ値算出部322は、キーワード出現位置抽出部121からキーワードを取得すると、取得したキーワードからハッシュ値を算出し、算出したハッシュ値をキーワード出現位置抽出部121に出力する。具体的には、ハッシュ値算出部322は、キーワードを構成する全ての文字の文字コードのうち、キーワードの開始桁にある文字と最終桁にある文字の各文字コードを乗算する。そして、ハッシュ値算出部322は、乗算した値に開始桁と最終桁を除外した残りの桁にある文字の文字コードを加算する。さらに、ハッシュ値算出部322は、加算した値をハッシュ値の最大数で除算し、その除算結果の剰余値に1を加算した値を、キーワード出現位置抽出部121から取得したキーワードのハッシュ値とする。
類似箇所判定部364は、共通要素数判定部163によって共通要素数が所定値以上であると判定されたとき、検査対象テキストの中でキーワードの対(ハッシュ値の対)に含まれるキーワードの出現密度が基準値より高いか否かを判定する。具体的には、類似箇所判定部364は、共通行列作成部161から共通行列を取得すると、取得した共通行列からキーワードの対(ハッシュ値の対)を抽出する。また、類似箇所判定部364は、抽出した全てのキーワードの対(ハッシュ値の対)に該当するキーワードのワード位置410aをキーワードテーブル410から抽出し、一時的にメモリ領域(図示せず)に保持する。
例えば、共通行列には、ハッシュ値の対を示す行列要素(5、14)に特定値「1」が設定されているとする。類似箇所判定部364は、この共通行列から特定値「1」が設定されている行列要素(5、14)を抽出する。すなわち、類似箇所判定部364は、ハッシュ値「5」と「14」からなるハッシュ値の対を抽出する。そして、類似箇所判定部364は、2つのハッシュ値「5」および「14」に対応する各キーワードの出現位置410cが所定文字数(例えば「100」)の範囲内にあるワード位置410aをキーワードテーブル410から探索する。ここでは、ハッシュ値「5」および「14」に対応するキーワードの出現位置410cがそれぞれ「135」、「163」であるとする。類似箇所判定部364は、各キーワードの出現位置410cが「100」文字数の範囲内にあるので、探索結果としてワード位置410a「22」、「24」を取得する。そして、類似箇所判定部364は、探索したワード位置410aである「22」、「24」をメモリ領域に保持する。
類似箇所判定部364は、検査対象テキストに含まれる連続する所定数のキーワードを判定箇所とし、当該判定箇所の中に、キーワードの対(ハッシュ値の対)に含まれるキーワードの数が基準値以上であるか否かを判定する。さらに具体的には、類似箇所判定部364は、キーワードテーブル410に記憶された連続する所定数のワード位置410aを判定箇所とする。そして、類似箇所判定部364は、この判定箇所の中に、メモリ領域に保持されたワード位置と一致するワード位置が基準値以上あるか否かを判定する。すなわち、類似箇所判定部364は、判定箇所の中に、キーワードの対(ハッシュ値の対)に該当するワード位置が基準値以上あるか否かを判定する。
類似箇所判定部364は、後述する類似箇所特定部365によって判定箇所を類似箇所として特定されたとき、特定された類似箇所の最後のワード位置410aより後方のワード位置であってキーワードの対に含まれる最初のキーワードのワード位置を求める。そして、類似箇所判定部364は、求めたワード位置に至るまでの連続する所定数のワード位置を次の判定箇所とする。そして、類似箇所判定部364は、この判定箇所の中に、メモリ領域に保持されたワード位置と一致するワード位置が基準値以上あるか否かを判定する。
一方、類似箇所判定部364は、類似箇所特定部365によって判定箇所を類似箇所として特定されなかったとき、1つ後方のキーワードのワード位置を求める。そして、類似箇所判定部364は、求めたワード位置に至るまでの連続する所定数のワード位置を次の判定箇所とする。そして、類似箇所判定部364は、この判定箇所の中に、メモリ領域に保持されたワード位置と一致するワード位置が基準値以上あるか否かを判定する。なお、類似箇所判定部364は、類似箇所特定部365によって判定箇所を類似箇所として特定されたときであっても、1つ後方のキーワードのワード位置に至るまでの所定数のワード位置を次の判定箇所としても良い。
類似箇所特定部365は、類似箇所判定部364によって検査対象テキストの中でキーワードの対(ハッシュ値の対)に含まれるキーワードの出現密度が基準値より高いと判定されたとき、出現密度が高いと判定された箇所を類似箇所として特定する。具体的には、類似箇所特定部365は、キーワードテーブル410に記憶された連続する所定数のワード位置410a(判定箇所)の中に、メモリ領域に保持されたキーワードの対(ハッシュ値の対)のワード位置の数が基準値以上であるとき、その判定箇所を特定する。かかる特定された判定箇所が、検査対象テキスト内の機密文書と類似する類似箇所(以降、「類似ブロック」と同義)となる。そして、類似箇所特定部365は、類似ブロックに含まれるワード位置に対応する、キーワードテーブル410の類似度410eに「1」を格納する。さらに、類似箇所特定部365は、検査対象テキストと機密文書との文書間は類似している旨の文書類似メッセージを類似判定部170に通知する。
一方、類似箇所特定部365は、判定箇所の中に、メモリ領域に保持されたキーワードの対のワード位置の数が基準値未満であるとき、その判定箇所を「非類似ブロック」とする。そして、類似箇所特定部365は、検査対象テキストと機密文書との文書間に類似の可能性がない旨の文書非類似メッセージを類似判定部170に通知する。
ここで、類似箇所特定方法について、図19を参照しながら説明する。図19は、実施例2に係る類似箇所特定方法の一例を示す図である。図19に示すように、検査対象テキスト内のキーワードが表され、これらキーワードのワード位置が昇順に表されている。なお、中黒のキーワードは、共通行列から抽出されたキーワードの対(ハッシュ値の対)のどちらか一方のキーワードを示す。また、矢印で示される2つのキーワードは、キーワードの対(ハッシュ値の対)を指す。
まず、類似箇所判定部364は、検査対象テキスト内のワード位置「1」から連続する所定数のキーワード(判定箇所)の中に、キーワードの対(ハッシュ値の対)に含まれるキーワードの数が基準値以上であるか否かを判定する。なお、説明の便宜上、図19の説明では、所定数を「5」、基準値を「3」とする。類似箇所判定部364は、検査対象テキスト内のワード位置「1」から「5」までの連続するキーワードの中に、キーワードの対に含まれるキーワードの数が2個しかないので、当該数が「3」以上でないと判定する。そして、類似箇所特定部365は、ワード位置「1」から「5」までを非類似ブロックとする。
また、類似箇所判定部364は、検査対象テキスト内のワード位置「2」から連続する「5」個のキーワードの中に、キーワードの対(ハッシュ値の対)に含まれるキーワードの数が「3」個以上であるか否かを判定する。しかしながら、検査対象テキスト内のワード位置「2」から「6」までの連続するキーワードの中に、キーワードの対に含まれるキーワードの数が1個しかないので、類似箇所判定部364は、当該数が「3」個以上でないと判定する。そして、類似箇所特定部365は、ワード位置「2」から「6」までを非類似ブロックとする。
また、類似箇所判定部364は、連続する5個のワード位置を示す判定箇所のうち先頭のワード位置を順次後方へ移動し、新たに先頭となったワード位置から連続する5個のキーワードのワード位置を次の判定箇所とし、判定動作を繰り返す。そして、類似箇所判定部364は、例えば、検査対象テキスト内のワード位置「22」から連続する「5」個のキーワードの中に、キーワードの対(ハッシュ値の対)に含まれるキーワードの数が「3」個以上であるか否かを判定する。その結果、類似箇所判定部364は、検査対象テキスト内のワード位置「22」から「26」までの連続するキーワードの中に、キーワードの対に含まれるキーワードの数が「22」、「23」、「24」および「26」の4個あるので、当該数が「3」以上であると判定する。そして、類似箇所特定部365は、ワード位置「22」から「26」までを類似ブロックとして特定する。
また、類似箇所判定部364は、類似箇所特定部365によって類似ブロックが特定されたので、類似ブロックの最後のワード位置「26」より後方にある最初のキーワードの対に含まれるキーワードのワード位置を求める。ここでは、類似箇所判定部364は、ワード位置「28」を取得する。そして、類似箇所判定部364は、取得したワード位置「28」までの連続する「5」個のキーワードに関し、類似ブロックであるか否かを判定する。すなわち、類似箇所判定部364は、検査対象テキスト内のワード位置「24」から連続する「5」個のキーワードの中に、キーワードの対(ハッシュ値の対)に含まれるキーワードの数が「3」個以上であるか否かを判定する。その結果、類似箇所判定部364は、検査対象テキスト内のワード位置「24」から「28」までの連続するキーワードの中に、キーワードの対に含まれるキーワードの数が「24」、「26」および「28」の3個あるので、当該数が「3」個以上であると判定する。そして、類似箇所特定部365は、ワード位置「24」から「28」までを類似ブロックとして特定する。その結果、類似箇所特定部365は、先行して類似ブロックとして特定された「22」から「26」までと合わせて、「22」から「28」までを連続する類似ブロックS1として特定する。
また、類似箇所判定部364は、類似箇所特定部365によって類似ブロックが特定されたので、類似ブロックの最後のワード位置「28」より後方にあるキーワードであってキーワードの対に含まれる最初のキーワードのワード位置を求める。ここでは、類似箇所判定部364は、ワード位置「34」を取得する。そして、類似箇所判定部364は、取得したワード位置「34」までの連続する「5」個のキーワードに関し、類似ブロックであるか否かを判定する。すなわち、類似箇所判定部364は、検査対象テキスト内のワード位置「30」から連続する「5」個のキーワードの中に、キーワードの対(ハッシュ値の対)に含まれるキーワードの数が「3」個以上であるか否かを判定する。しかしながら、検査対象テキスト内のワード位置「30」から「34」までの連続するキーワードの中に、キーワードの対に含まれるキーワードの数が1個しかないので、類似箇所判定部364は、当該数が「3」個以上でないと判定する。そして、類似箇所特定部365は、ワード位置「30」から「34」までを非類似ブロックとする。
その結果、類似箇所特定部365は、類似ブロックをワード位置「22」から「28」として特定する。このように、類似箇所特定方法によって、類似箇所特定部365は、検査対象テキスト内の機密文書と類似する類似箇所を特定する。
図17に戻って、類似判定部170は、共通要素数判定部163および類似箇所特定部365から各種通知を取得すると、取得した通知に応じて、検査対象テキストおよび機密文書間が類似しているか否かを機密文書ごとに順次判定する。
具体的には、類似判定部170は、文書非類似メッセージを取得すると、検査対象テキストとの類似を判断していない機密文書がある場合には、次の機密文書を選択する旨を共通行列作成部161に通知する。また、類似判定部170は、文書類似メッセージを取得すると、検査対象テキストとの類似を判断していない機密文書がない場合には、メールの送信要求をメール送信部190に通知する。一方、類似判定部170は、類似箇所特定部365から文書類似メッセージを取得すると、メールの類似確認要求を類似警告部366に通知する。
類似警告部366は、類似判定部170からメールの類似確認要求を取得すると、検査対象テキスト内の類似ブロックを編集した警告画面を、例えば文書検査装置2に接続されたモニターに表示する。具体的には、類似警告部366は、検査対象テキスト内の、キーワードテーブル410の類似度410eに「1」が記憶されたキーワードの出現位置410cの範囲を含む警告画面を編集する。そして、類似警告部366は、編集した警告画面をモニターに表示する。すなわち、例えばクライアントが過失または故意で機密文書を含んだ文書を社内ドメインでない社外宛先に送信しようとした場合に、類似警告部366は、機密文書との類似箇所等を警告画面に表示し、メールを送信したクライアントに送信メールの確認を促す。そして、類似警告部366は、送信メールの送信が許可された場合には、メールの送信要求をメール送信部190に通知する。一方、類似警告部366は、送信メールの送信が拒否された場合には、メールの送信拒否要求をメール送信拒否部180に通知する。
ここで、類似警告部366によって表示される警告画面について、図20を参照しながら説明する。図20は、警告画面の一例を示す図である。図20に示すように、警告画面には、クライアントPCから送信されたメール(検査対象テキスト)内の機密文書と類似した類似箇所Z2が表示されている。また、警告画面には、クライアントPCから送信されたメールの送信先のうち組織内および組織外のメールアドレスが表示されている。
具体的には、類似警告部366は、送信メール内の類似箇所Z2および組織外の送信先を表示し、それぞれチェックボックス(K1、K2)を表示する。このとき、類似警告部366は、メールの送信要求を起動する送信ボタンV2を、送信要求が起動できないように非表示にする。
また、類似箇所のチェックボックスK1および組織外の送信先のチェックボックスK2にチェックがされた場合には、類似警告部366は、送信ボタンV2を表示する。そして、送信ボタンV2のボタン操作に対応して、類似警告部366は、送信メールの送信許可に応じて、メールの送信要求をメール送信部190に通知する。一方、送信拒否ボタンV1のボタン操作に対応して、類似警告部366は、送信メールの送信拒否に応じて、メールの送信拒否要求をメール送信拒否部180に通知する。
図17に戻って、メール送信拒否部180は、類似判定部170または類似警告部366からメールの送信拒否要求を取得すると、メール受信部110から取得したメールの送信をブロックする。メール送信部190は、特徴素行列追加部140、類似判定部170または類似警告部366からメールの送信要求を取得すると、メール受信部110から取得したメールを、メールの送信先に送信する。
[実施例2に係る類似箇所特定方法のアルゴリズム]
ここで、実施例2に係る類似箇所特定方法のアルゴリズムについて、図21を参照しながら説明する。図21は、実施例2に係る類似箇所特定方法のアルゴリズムを説明する図である。図21に示すように、検査対象テキスト内のキーワードが表され、これらキーワードのワード位置が昇順に表されている。白丸または黒丸がキーワードであり、丸の上部の数字がワード位置を表す。また、黒丸は、キーワードの対(ハッシュ値の対)のどちらか一方のキーワード(ここでは、「類似ワード」という。)を示す。
第1回目では、類似箇所判定部364は、検査対象テキストに含まれる連続する所定数のキーワードを判定箇所として、判定箇所の中に、「類似ワード」の数が基準値以上であるか否かを判定する。すなわち、類似箇所判定部364は、検査対象テキストと機密文書との共通の類似ワードの数が判定箇所の中に基準値以上であるか否かを判定する。そして、類似箇所判定部364は、共通の類似ワードの数が判定箇所の中に基準値以上であると判定した場合に、検査対象テキスト内の当該判定箇所では類似ワードの出現密度が高いと判断する。
ここでは、所定数を「5」、基準値を「3」とし、判定箇所は連続する「5」個のキーワードのワード位置とする。そして、類似箇所判定部364は、判定箇所単位で判定箇所を後方に移動することで順次判定処理を行う。
まず、類似箇所判定部364は、検査対象テキスト内のワード位置「1」から「5」までの連続するキーワードを判定箇所とし、判定箇所の中に、「類似ワード」の数が「3」個以上であるか否かを判定する。図21の例では、判定箇所の中に、類似ワードの数が「3」個(ワード位置「2」〜「4」のキーワード)ある。そのため、類似箇所判定部364は、該当するキーワードの数が「3」個以上であると判定した場合、ワード位置「1」から「5」までの判定箇所での出現密度が高いと判断する。そして、類似箇所特定部365は、ワード位置「1」から「5」までの判定箇所を類似ブロックとして特定する。
次に、第2回目では、類似箇所判定部364は、現在の判定箇所が類似ブロックと特定すると、現在の判定箇所の右端のワード位置より後方にある最初の「類似ワード」まで判定箇所を移動する。図21の例では、現在の判定箇所の右端のワード位置「5」より後方にある最初の「類似ワード」のワード位置は「7」であるので、類似箇所判定部364は、ワード位置「3」から「7」までの計5個のワード位置を判定箇所とする。そして、類似箇所判定部364は、判定箇所の中に、「類似ワード」の数が「3」個以上であるか否かを判定する。図21の例では、判定箇所の中に、類似ワードの数が「3」個(ワード位置「3」、「4」、「7」のキーワード)ある。そのため、類似箇所判定部364は、該当するキーワードの数が「3」個以上であると判定した場合、ワード位置「3」から「7」までの判定箇所での出現密度が高いと判断する。そして、類似箇所特定部365は、ワード位置「3」から「7」までの判定箇所を類似ブロックとして特定する。
次に、第3回目では、類似箇所判定部364は、現在の判定箇所が類似ブロックと特定すると、現在の判定箇所の右端のワード位置より後方にある最初の「類似ワード」まで判定箇所を移動する。図21の例では、現在の判定箇所の右端のワード位置「7」より後方にある最初の「類似ワード」のワード位置は「12」であるので、類似箇所判定部364は、ワード位置「8」から「12」までの計5個のワード位置を判定箇所とする。そして、類似箇所判定部364は、判定箇所の中に、「類似ワード」の数が「3」個以上であるか否かを判定する。図21の例では、判定箇所の中に、類似ワードの数が「1」個(ワード位置「12」)ある。そのため、類似箇所判定部364は、該当するキーワードの数が「3」個以上でないと判定した場合、ワード位置「8」から「12」までの判定箇所での出現密度が高くないと判断する。そして、類似箇所特定部365は、ワード位置「8」から「12」までの判定箇所を非類似ブロックとする。
次に、第4回目では、類似箇所判定部364は、現在の判定箇所が非類似ブロックであると、現在の判定箇所の右端を1つだけ右に移動する。図21の例では、現在の判定箇所の右端のワード位置「12」を1つだけ右に移動すると、類似箇所判定部364は、ワード位置「9」から「13」までの計5個のワード位置を判定箇所とする。そして、類似箇所判定部364は、判定箇所の中に、「類似ワード」の数が「3」個以上であるか否かを判定する。図21の例では、判定箇所の中に、類似ワードの数が「1」個(ワード位置「12」)ある。そのため、類似箇所判定部364は、該当するキーワードの数が「3」個以上でないと判定した場合、ワード位置「9」から「13」までの判定箇所での出現密度が高くないと判断する。そして、類似箇所特定部365は、ワード位置「9」から「13」までの判定箇所を非類似ブロックとする。
同様にして、類似箇所判定部364および類似箇所特定部365は、判定箇所の右端が検査対象テキストの最終ワード位置を超えるまで、類似箇所特定方法を繰り返し、検査対象テキストの中の類似ブロックを特定する。このようにして、上記のアルゴリズムを用いて、検査対象テキスト内の機密文書と類似する類似ブロックを特定する。
[実施例2に係る文書検査装置の文書検査処理]
次に、実施例2に係る文書検査装置2の文書検査処理について説明する。なお、実施例2に係る文書検査装置2の文書検査処理手順のうち、実施例1に係る文書検査装置1による処理手順(図10〜図16)と同じ処理手順については、同一符号を付すことで、その重複する手順の説明を省略する。
そこで、図12に示すキーワードのハッシュ値を算出するS45の処理手順について、図22を用いて説明する。図22は、実施例2に係るハッシュ値算出部322の処理手順を示すフローチャートである。まず、ハッシュ値算出部322は、キーワード出現位置抽出部121によって抽出されたキーワード(kw)を文字単位(例えば、c1、c2、c3、・・・、cM)に分割する(S201)。
そして、ハッシュ値算出部322は、分割した全ての文字(ci)の文字コード(ai)を取得する(S202)。
次に、ハッシュ値算出部322は、キーワードの1文字目(開始桁)にある文字(c1)とM文字目(最終桁)にある文字(cM)の各文字コードを乗算し、乗算値をカウント(C)に設定する(S203)。
次に、ハッシュ値算出部322は、分割した文字のうち、2桁目の文字(c2)から(M−1)桁目の文字(cM)の文字コード(ai)を、順次選択する(S204)。
引き続き、ハッシュ値算出部322は、選択した文字(ci)の文字コード(ai)をカウント(C)に設定された値に加算し、加算結果をカウント(C)に設定する(S205)。
その後、ハッシュ値算出部322は、分割した全ての文字に対する文字コード(ai(i=2〜M−1))の加算が完了したか否かを判定する(S206)。そして、全ての文字に対する文字コードの加算が完了していない場合には(S206No)、次桁の文字を選択するために、S204に移行する。
一方、全ての文字に対する文字コードの加算が完了した場合には(S206Yes)、ハッシュ値算出部322は、カウント(C)に設定された値をハッシュ値の最大数(MaxS)で除算し、その除算結果の剰余値に+1を加算した値を算出する(S207)。その結果、算出された値がキーワード(kw)のハッシュ値となる。そして、ハッシュ値算出部322は、この算出したハッシュ値をキーワード出現位置抽出部121に返却する。
次に、図10に示す検査対象テキスト(D)の特徴素行列と機密文書の特徴素行列との類似性を算出するS20の処理手順について、図23を用いて説明する。図23は、実施例2に係る類似算出部160の処理手順を示すフローチャートである。なお、図23において、実施例1に係る類似算出部160の処理手順(図14)と同一の手順については、同一の符号を付すことで、その重複する説明については省略する。
まず、共通行列作成部161は、社内ドメイン判定部130から取得される検査対象テキスト(D)の特徴素行列(Mc1)と、生成した機密文書の特徴素行列(Mc2)との論理積を算出し、共通行列(MA)を作成する(S61)。そして、共通行列作成部161は、作成した共通行列(MA)を共通要素数算出部162に出力する。
次に、共通要素数算出部162は、取得した共通行列(MA)の各行列要素の中に含まれる共通要素である特定値「1」の個数(共通要素数)をカウントする(S62)。その結果、共通要素数は、検査対象テキスト(D)および機密文書の共通するキーワードの対の数であるため、検査対象テキスト(D)および機密文書の共通するハッシュ値の対の数が決定されることになる。
そして、共通要素数判定部163は、検査対象テキスト(D)および機密文書の共通するハッシュ値の対の数が所定値以上であるか否かを判定する(S63)。そして、共通要素数判定部163は、ハッシュ値の数が所定値以上であると判定した場合には(S63Yes)、機密文書と検査対象テキスト間の類似の可能性があるものと判断し、文書間に類似の可能性がある旨を類似箇所判定部364に通知する。一方、共通要素数判定部163は、ハッシュ値の数が所定値以上でない、すなわち未満であると判定した場合には(S63No)、検査対象テキスト(D)と機密文書間の類似の可能性がないものと判断し、文書間に類似の可能性がない旨を類似判定部170に通知する(S66)。
続いて、類似箇所判定部364は、共通要素数判定部163から文書間に類似の可能性がある旨を受信すると、検査対象テキスト(D)に含まれる連続する所定数のキーワードを判定箇所とする。そして、類似箇所判定部364は、この判定箇所の中に、キーワードの対(ハッシュ値の対)に含まれるキーワードの数が基準値以上であるか否かを判定する。そして、類似箇所特定部365は、類似箇所判定部364によってキーワードの対(ハッシュ値の対)に含まれるキーワードの数が基準値以上であると判定されたとき、当該判定箇所を類似箇所として特定する(S211)。なお、かかる処理を後述する「類似箇所特定処理」という。
そして、類似箇所特定部365は、検査対象テキスト(D)の機密文書との間の類似箇所があるか否かを判定する(S212)。すなわち、類似箇所特定部365は、検査対象テキスト(D)の特徴素行列(Mc1)と機密文書の特徴素行列(Mc2)とが類似であるか否かを判定する。具体的には、類似箇所特定部365は、キーワードテーブル410の類似度410eに類似箇所を示す「1」が設定されているか否かに基づき、類似箇所があるか否かを判定する。
そして、類似箇所特定部365は、検査対象テキスト(D)の機密文書との間の類似箇所があると判定した場合、すなわちMc1とMc2とが類似であると判定する場合には(S212Yes)、文書類似メッセージを類似判定部170に通知する(S67)。
一方、類似箇所特定部365は、検査対象テキスト(D)の機密文書との間の類似箇所がないと判定した場合には(S212No)、検査対象テキスト(D)と機密文書間の類似の可能性がないものと判断し、文書非類似メッセージを類似判定部170に通知する(S66)。
次に、図23に示す類似箇所特定処理S211の処理手順について、図24を用いて説明する。図24は、実施例2に係る類似箇所特定処理の処理手順を示すフローチャートである。なお、図24では、キーワードテーブル(KT)410に記憶されたキーワード410bの総数は、Wワードであるものとする。また、ワード位置410aがi(iは、自然数)番目のハッシュ値を関数hash(i)で表すものとし、ワード位置410aがi番目の類似度を関数sim(i)で表すものとする。さらに、検査対象テキスト(D)内の連続するM個のワード位置を判定箇所とし、基準値をNとする。
まず、類似箇所判定部364は、キーワードテーブル(KT)410の類似度410eを初期化する(S221)。具体的には、類似箇所判定部364は、キーワードテーブル(KT)410のすべてのワード位置410aに対応する類似度410eを初期値「0」に設定する。そして、類似箇所判定部364は、共通行列(MA)から全てのキーワードの対(ハッシュ値の対)を抽出し、抽出したキーワードの対(ハッシュ値の対)に該当するキーワードのワード位置410aをキーワードテーブル(KT)410から抽出する。そして、類似箇所判定部364は、抽出したワード位置410aに対応する類似度410eに類似箇所を示す「1」を設定する。例えば、類似箇所判定部364は、ワード位置410aをi番目とするハッシュ値h(h=hash(i))と一致する共通行列(MA)の行または列に特定値「1」を含む場合、ワード位置410aをi番目とする類似度410eに「1」(1=sim(i))を設定する。
引き続き、類似箇所判定部364は、開始ワード位置を示すインデックスiに、キーワードテーブル(KT)410のワード位置410aの最小値「1」を設定する(S222)。なお、キーワードテーブル(KT)410は、ワード位置410aの値によって昇順にソートされているものとする。
そして、類似箇所判定部364は、検査対象テキスト(D)に含まれる連続するM個のキーワードの中で、キーワードの対(ハッシュ値の対)に含まれるキーワードの数を求める。具体的には、類似箇所判定部364は、式(1)のように、インデックスiに示される開始ワード位置から連続するM個のワード位置410aに対する類似度410eの値を加算し、類似数nを求める(S223)。
n=sim(i)+sim(i+1)+・・・+sim(i+M−1)・・・式(1)
そして、類似箇所判定部364は、類似数nが基準値N以上であるか否かを判定する(S224)。類似箇所判定部365によって類似数nが基準値N以上でない、すなわち未満であると判定された場合には(S224No)、類似箇所特定部365は、インデックスiに示される開始ワード位置に対する類似度410eをsim(i)「0」に設定する(S225)。そして、類似箇所判定部364は、次の開始ワード位置を示すインデックスiを+1加算する(S226)。
一方、類似箇所判定部364によって類似数nが基準値N以上であると判定された場合には(S224Yes)、類似箇所特定部365は、開始ワード位置を示すインデックスiから連続するM個のワード位置を類似箇所として特定する。具体的には、類似箇所特定部365は、式(2)のように、開始ワード位置を示すiから連続するM個のワード位置410aに対する類似度410eを「1」に設定する(S227)。
sim(i)=sim(i+1)=・・・=sim(i+M−1)=1・・・式(2)
引き続き、類似箇所判定部364は、次の開始ワード位置を示すインデックスiを設定するために、ワード位置(i+M)をインデックスjに設定する(S228)。そして、類似箇所判定部364は、ワード位置410aがj番目の類似度410eが「1」であるか否かを、式(3)のように判定する(S229)。
sim(j)=1・・・式(3)
そして、類似箇所判定部364は、ワード位置410aがj番目の類似度410eが「1」であると判定した場合には(S229Yes)、次の開始ワード位置を示すインデックスiを(j−M+1)に設定する(S230)。そして、類似箇所判定部364は、S223に移行する。すなわち、類似箇所判定部364は、類似箇所が特定された場合には、類似箇所の最後のワード位置(i+M−1)より後方にあって類似度410eが「1」と設定された最初のキーワードのワード位置(j)を求める。そして、類似箇所判定部364は、求めたワード位置(j)を、連続するM個のワード位置の終了ワード位置とする次の開始ワード位置を求める。
一方、類似箇所判定部364が、ワード位置410aがj番目の類似度410eが「1」であると判定しなかった場合には(S229No)、インデックスjを+1加算する(S231)。そして、類似箇所判定部364は、インデックスjがキーワード総数Wより大きいか否かを判定する(S232)。類似箇所特判定部364が、インデックスjがキーワード総数Wより大きくないと判定した場合には(S232No)、S229に移行する。一方、類似箇所判定部364が、インデックスjがキーワード総数Wより大きいと判定した場合には(S232Yes)、類似箇所特定処理を終了する。
[実施例2の効果]
以上のように実施例2によれば、文書検査装置2では、共通要素数判定部163が、検査対象テキストの複数のキーワードの対と、機密文書の複数のキーワードの対とを比較する。そして、共通要素数判定部163が検査対象テキストの複数のキーワードの対のうち、機密文書のキーワードの対と一致するキーワードの対の数が所定値以上であるか否かを判定する。類似箇所判定部364は、機密文書のキーワードの対と一致するキーワードの対の数が所定値以上であると判定されたとき、検査対象テキストの中でキーワードの対に含まれるキーワードの出現密度が基準値より高いか否かを判定する。検査対象テキストの中でキーワードの対に含まれるキーワードの出現密度が基準値より高いと判定されたとき、類似箇所特定部365が、出現密度が高いと判定された箇所を、検査対象テキスト内の機密文書と類似する類似箇所として特定する。
かかる構成によれば、文書検査装置2では、機密文書と共通するキーワードの対に含まれるキーワードの出現密度に応じて、検査対象テキスト内の機密文書と類似する類似箇所を特定するので、機密文書との類似性をさらに高精度に判断できる。特に、検査対象テキストに機密文書内の一部のブロックがコピーされた場合には、コピーされたブロックに含まれるキーワードの対が機密文書と共通する。そのため、文書検査装置2は、コピーされたブロックにおいて機密文書と共通するキーワードの出現密度が高くなり、検査対象テキスト内のコピーブロックを機密文書と類似する類似箇所として確実に特定できる。
また、実施例2によれば、文書検査装置2では、類似箇所判定部364が、検査対象テキストに含まれる連続する所定数のキーワードを判定箇所とし、この判定箇所の中に、キーワードの対に含まれるキーワードの数が基準値以上であるか否かを判定する。そして、類似箇所特定部365は、キーワードの対に含まれるキーワードの数が基準値以上であると判定されたとき、この判定箇所を、検査対象テキスト内の機密文書と類似する類似箇所として特定する。かかる構成によれば、文書検査装置2は、検査対象テキストに含まれる連続する所定数のキーワードの中に、機密文書と共通するキーワードの対に含まれるキーワードが基準値以上ある箇所を類似箇所とする。その結果、文書検査装置2は、検査対象テキストと機密文書との類似箇所を容易に特定できる。
また、実施例2によれば、文書検査装置2では、類似箇所判定部364は、機密文書との類似箇所が特定されなかったとき、1つ後方のキーワードに至るまでの所定数のキーワードを次の判定箇所とする。一方、類似箇所判定部364は、機密文書との類似箇所が特定されたとき、特定された類似箇所の最後のキーワードより後方のキーワードであってキーワードの対に含まれる最初のキーワードを探索する。そして、類似箇所判定部364は、探索したキーワードに至るまでの連続する所定数のキーワードを次の判定箇所とする。さらに、類似箇所判定部364は、この判定箇所の中に、キーワードの対に含まれるキーワードの数が基準値以上であるか否かを判定する。かかる構成によれば、文書検査装置2は、類似箇所が特定されたとき、類似箇所後方のキーワードの対に含まれる最初のキーワードまで次の判定箇所を移動させるので、1つずつ後方に移動させるよりも検査対象テキスト内の類似箇所特定処理のスピードを高速にできる。
また、実施例2によれば、文書検査装置2では、類似警告部366が、機密文書との類似箇所が特定されたとき、特定された類似箇所を、例えばモニターに出力する。かかる構成によれば、文書検査装置2は、仮に検査対象テキストがメール文書であるとすると、メール文書を送信しようとしたクライアントに類似箇所を明確に提示できる。そのため、クライアントは、検査対象テキストが機密文書と類似していることを容易に認識できる。その結果、文書検査装置2は、クライアントに対して送信前のチェックを容易に促すことができる。同様に、文書検査装置2は、悪意のあるクライアントに対しても送信前に注意を喚起できる。
また、実施例2によれば、文書検査装置2では、ハッシュ値算出部322が、キーワードを構成する全ての文字の文字コードのうち、当該キーワードの開始桁と最終桁にある文字の各文字コードを乗算する。そして、ハッシュ値算出部322が、乗算値に開始桁と最終桁を除外した残りの桁にある文字の各文字コードを加算し、加算した値をハッシュ値の最大数で除算する。そして、ハッシュ値算出部322が、除算結果の剰余値に1を加算した値をハッシュ値とする。かかる構成によれば、キーワードの開始桁と最終桁以外の中間桁にある文字の順序が悪意またはタイプミス等により入れ替えられても、文書検査装置2は、異なった文字列によってハッシュ値が変わることから防止できる。例えば、キーワードの正規の文字列が「じゅんばん」である場合に、「じばんゅん」または「じんばゅん」のように中間桁にある文字の順序が入れ替えられるとする。入れ替えられた文字列のハッシュ値は正規の文字列のハッシュ値と同値となるので、文書検査装置2は、文字列によってハッシュ値が変わることから防止できる。
ところで、実施例1に係る文書検査装置1では、メール文書の検査対象テキストと機密文書との共通するハッシュ値の対の数が所定値以上あるか否かを判定することにより、双方の文書の類似性を判断した(「類似性検査1」)。そして、文書検査装置1では、「類似性検査1」によって類似の可能性があると判断した場合には、3連続ハッシュ値の数が所定値以上あるか否かを判定することにより、双方の文書の類似性を判断した(「類似性検査2」)。また、実施例2に係る文書検査装置2では、「類似性検査1」によって類似の可能性があると判断した場合には、検査対象テキスト内の機密文書と類似する類似箇所を特定した。しかしながら、文書検査装置2は、メール文書に限定されるものではなく、文書画像を光学式文字認識(OCR:Optical Character Recognition)して得た検査対象テキスト内の機密文書と類似する類似箇所を特定するようにしても良い。
[実施例3に係る文書検査装置の構成]
そこで、実施例3では、文書画像を光学式文字認識して得た検査対象テキスト内の機密文書と類似する類似箇所を特定する文書検査装置3について説明する。図25は、実施例3に係る文書検査装置3の構成を示す機能ブロック図である。なお、図17に示す文書検査装置2と同一の構成については同一符号を付すことで、その重複する構成および動作の説明については省略する。実施例2と実施例3とが異なるところは、OCR部510および特徴素受信部550を追加した点にある。さらに、実施例2と実施例3とが異なるところは、社内ドメイン判定部130、特徴素行列追加部140、シリアライズ部150、社内ドメイン定義230および類似箇所警告部366を削除した点にある。さらに、メール受信部110、メール着信拒否部180およびメール送信部190をそれぞれ電子文書受信部520、機密部分削除部530および電子文書送信部540に変更した点にある。
OCR部510は、文書画像を光学的に文字認識し、認識した文字を抽出し、抽出した文字を検査対象テキストとして、電子文書受信部520に送信する。例えば、OCR部510は、文書画像をコピーをする際、スキャナで読み取る際、またはファクシミリ(FAX)送信する際に、その文字画像を受信し、受信した文字画像を光学式に文字認識する。さらに、OCR部510は、認識した文字を抽出し、抽出した文字を検査対象テキストとする。そして、OCR部510は、検査対象テキストを電子文書受信部520に送信する。
電子文書受信部520は、OCR部510を通じて検査対象テキストを受信すると、検査対象テキストをキーワード出現位置抽出部121に通知する。また、電子文書受信部520は、受信した検査対象テキストを機密部分削除部530および電子文書送信部540に通知する。
類似判定部170は、共通要素数判定部163または類似箇所特定部365から各種通知を取得すると、取得した通知に応じて、検査対象テキストおよび機密文書間が類似しているか否かを機密文書ごとに順次判定する。具体的には、類似判定部170は、文書非類似メッセージを取得すると、類似を判断していない機密文書がある場合には、次の機密文書を選択する旨を共通行列作成部161に通知する。
また、類似判定部170は、文書非類似メッセージを取得すると、検査対象テキストとの類似を判断していない機密文書がない場合には、検査対象テキストの送信要求を電子文書送信部540に通知する。一方、類似判定部170は、類似箇所特定部365から文書類似メッセージを取得すると、類似箇所の削除要求を機密部分削除部530に通知する。
機密部分削除部530は、検査対象テキスト内の機密文書との類似箇所を削除する。具体的には、機密部分削除部530は、類似判定部170から類似箇所の削除要求を取得すると、キーワードテーブル410の類似度410eに「1」が記憶されたキーワードの出現位置410cの範囲を含む類似箇所を検査対象テキストから削除する。そして、機密部分削除部530は、類似箇所を削除した検査対象テキストを電子文書送信部540に送信する。
電子文書送信部540は、機密部分削除部530から検査対象テキストを取得すると、取得した検査対象テキストを、送信先に送信する。また、電子文書送信部540は、特徴素行列追加部140または類似判定部170から検査対象テキストの送信要求を取得すると、電子文書受信部520から取得した検査対象テキストを、送信先に送信する。
特徴素受信部550は、機密文書を管理する電子計算機から機密文書の特徴素(シグネチャ)を受信し、受信した機密文書ごとの特徴素を特徴素行列DB240に格納する。例えば、特徴素受信部550は、機密文書ごとの特徴素行列をシリアライズ化した結果を機密文書ごとに受信し、受信した機密文書ごとのシリアライズ結果を特徴素行列DB240に格納する。
なお、実施例3に係る類似箇所特定処理の処理手順は、実施例2(図23および図24)と同様であるので、その説明については省略する。
[実施例3に係る文書検査装置の用途]
ここで、実施例3に係る文書検査装置3の用途の一例を、図26を参照して説明する。図26は、実施例3に係る文書検査装置の用途の一例を説明する図である。図26に示すように、文書検査装置3は、機密文書管理サーバ9とともに、コピー機と印刷機とを複合したプリンタ装置4に用いられる。
機密文書管理サーバ9は、機密文書を管理するサーバであり、機密文書ファイル9a、特徴素生成装置9b、特徴素配信装置9cおよび特徴素行列DB9dを備える。機密文書ファイル9aは、管理者またはネットワークから取得された機密文書T6を記憶する。特徴素生成装置9bは、機密文書ファイル9aから各機密文書を取り出して、機密文書ごとの特徴素(シグネチャ)を生成し、生成した特徴素を保持する。ここでは、特徴素生成装置9bは、機密文書ごとの特徴素行列を生成し、生成した特徴素行列をシリアライズ化した結果を特徴素行列DB9dに格納する。特徴素配信装置9cは、所定のタイミングで機密文書の特徴素の差分を文書検査装置3に配信する。なお、所定のタイミングとは、新たに機密文書を取得したタイミングや機密文書を削除したタイミングであっても良いし、予め定められたタイミングであれば良い。
プリンタ装置4は、文書検査装置3、紙スキャン装置4aおよび印刷装置4bを備える。紙スキャン装置4aは、コピーやFAX等により文書画像T4が描画された紙媒体から文書画像をスキャンし、その文書画像を電子化する。文書検査装置3は、紙スキャン装置4aまたはクライアントPCcから電子化された文書画像T5を受信し、受信した文書画像を光学的に文字認識し、その文字認識した文書画像を検査対象テキストに変換する。
文書検査装置3は、類似箇所特定方法によって検査対象テキスト内の機密文書と類似する類似箇所を特定する。すなわち、文書検査装置3は、検査対象テキストの特徴素行列と機密文書の特徴素行列とから共通行列を作成し、作成した共通行列を用いて、検査対象テキスト内に機密文書と類似する類似箇所があるか否かを判定する。そして、文書検査装置3は、検査対象テキスト内に機密文書と類似する類似箇所があると判定した場合には、類似箇所を特定する。そして、文書検査装置3は、特定した類似箇所を検査対象テキストから削除し、類似箇所の文字を削除した検査対象テキストを印刷装置4bに送信する。
印刷装置4bは、文書検査装置3から検査対象テキストを受信すると、受信した検査対象テキストを印刷し、印刷文書T7を出力する。すなわち、検査対象テキストが機密文書と類似する類似箇所がある場合には、印刷装置4bは、類似箇所の文字が削除された検査対象テキストを印刷し、そのテキストを印刷文書T7として印刷出力する。
例えば、実施例3に係るプリンタ装置4を用いて印刷された印刷文書を、図27を参照して説明する。図27は、実施例3に係るプリンタ装置を用いた印刷結果の一例を説明する図である。図27に示すように、紙スキャン装置4aは、紙媒体の文書画像S1をスキャンする。そして、文書検査装置3は、スキャンされた文書画像S1をOCR部510によって検査対象テキストS2に変換する。この際、文書検査装置3は、OCR部510による文字認識に失敗する場合がある。図27の例では、検査対象テキストS2内の黒丸の部分が、OCR部510による文字認識に失敗した部分である。
文書検査装置3は、検査対象テキストS2内に機密文書S3と類似する類似箇所があるか否かを判定する。図27の例では、文書検査装置3は、検査対象テキストS2内の符号S2aで示される破線箇所が機密文書S3と類似し、類似箇所があると判定する。そして、文書検査装置3は、符号S2aで示される破線箇所を類似箇所と特定する。さらに、印刷装置4bは、検査対象テキストS2から文書検査装置3によって特定された類似箇所S2aを白塗りにし、印刷文書S4を印刷する。
[実施例3の効果]
以上のように実施例3によれば、文書検査装置3では、OCR部510が、文書画像を光学的に文字認識し、文字認識した文字を抽出し、抽出した文字を検査対象テキストとするようにした。かかる構成によれば、文書検査装置3は、文書画像を光学的に正確に文字認識できない場合であっても、正確に文字認識できた文字から類似箇所を特定できるので、機密文書から作成された機密性の高い文書画像を容易にみつけることができる。
[その他]
なお、実施例2および実施例3では、ハッシュ値算出部322は、キーワードを構成する開始桁と最終桁の各文字コードを乗算し、乗算した値にそれ以外の桁の各文字コードを加算した値をハッシュ値の最大数で除算し、その剰余値に1を加算するとして説明した。しかしながら、ハッシュ値算出部322は、例えば、実施例1によって説明したキーワードを構成する文字のすべての文字コードを加算した値をハッシュ値の最大数で除算し、その剰余値に1を加算しても良い。
また、実施例2および実施例3では、第1に、共通要素数判定部163が、検査対象テキストと機密文書との共通するハッシュ値の対の数が所定値以上あるか否かを判定することにより、双方の文書の類似性を判断した(「類似性検査1」)。そして、第2に、「類似性検査1」によって類似の可能性があると判断された場合には、類似箇所判定部364が、検査対象テキストの中でキーワードの対に含まれるキーワードの出現密度が基準値より高いか否かを判定する。そして、出現密度が高いと判定された場合には、類似箇所特定部365は、出現密度が高いと判定された箇所を類似箇所と特定するとして説明した。しかし、これに限定されず、「類似性検査1」によって類似の可能性があると判断した場合には、実施例1によって説明した「類似性検査2」と併用するようにしても良い。
また、文書検査装置1〜3は、既知のパーソナルコンピュータ、ワークステーション等の情報処理装置に、上記した制御部10および記憶部20の各機能を搭載することによって実現することができる。
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、特徴素行列追加部140とシリアライズ部150とを1つの部として統合しても良く、一方、類似箇所判定部364を、類似箇所であるか否かを判定する判定部と、判定箇所を求める判定箇所探索部とに分散しても良い。また、記憶部20または特徴素行列抽出部120を別の装置がそれぞれ有し、ネットワーク接続されて協働することで、上記した文書検査装置1〜3の機能を実現するようにしても良い。また、OCR部510または機密部分削除部530を文書検査装置3の外部装置としてプリンタ装置4に内蔵するようにしても良いし、ネットワーク経由で接続するようにしても良い。
以上、本発明の実施例について説明したが、本実施例によって本発明の技術的思想の範囲が限定されるものではなく、特許請求の範囲に記載した技術的範囲を逸脱しない限り、各種様々な実施例が実施可能であることは言うまでもない。また、本実施例に記載した効果は、これに限定されるものではない。
また、図示した文書検査装置1〜3の各構成要素は機能概念的に記載したものであって、必ずしも物理的に図示のように構成されるものではなく、その文書検査装置1の具体的な態様は図示のものに限縮されるものでは到底ないことは言うまでもない。
なお、文書検査装置1〜3にて行われる各処理機能は、その全部または任意の一部が、CPU(Central Processing Unit)(またはMPU(Micro Processing Unit)、MCU(Micro Controller Unit)などのマイクロ・コンピュータ)および当該CPU(またはMPU、MCUなどのマイクロ・コンピュータ)にて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現されても良い。
以上の実施例に係る実施形態に関し、さらに以下の付記を開示する。
(付記1)文書の類似性を判定する際に比較対象となる特定文書を含む判定対象文書からキーワードおよび該キーワードの出現位置を抽出する抽出手段と、
前記抽出手段によって抽出されたキーワードの出現位置ごとのキーワードを判定対象として、当該判定対象のキーワード前後に関わる所定範囲内に前記抽出手段によって抽出された他のキーワードがあるか否かを判定する判定手段と、
前記判定手段によって他のキーワードがあると判定されたとき、前記判定対象のキーワードおよび前記他のキーワードを各キーワードの出現位置の前後情報に対応付けて組み合わせた組み合わせ情報を生成する生成手段と、
前記生成手段によって生成された前記判定対象文書の複数の組み合わせ情報と、前記特定文書の複数の組み合わせ情報とを比較して、前記判定対象文書の複数の組み合わせ情報のうち、前記特定文書の組み合わせ情報と一致する組み合わせ情報の数が第1の類似判定数以上であるか否かを判定して、その判定結果に基づき前記判定対象文書と前記特定文書との類似性を判定する比較判定手段と
を備えることを特徴とする文書検査装置。
(付記2)前記比較判定手段は、
前記判定対象文書の複数の組み合わせ情報のうち、前記特定文書の組み合わせ情報と一致する組み合わせ情報の数が第1の類似判定数以上であると判定されたとき、同一の所定範囲内に出現する少なくとも3つ以上のキーワードから組み合わされる組み合わせ情報の群が第2の類似判定数以上あるか否かを判定する類似判定手段を含むことを特徴とする付記1に記載の文書検査装置。
(付記3)前記類似判定手段は、
同一の所定範囲内に出現する少なくとも3つ以上のキーワードから組み合わされる組み合わせ情報の群が第2の類似判定数以上あると判定されたとき、前記判定対象文書の送信許可相手以外の他の送信相手への送信を拒否する送信拒否手段をさらに備えることを特徴とする付記2に記載の文書検査装置。
(付記4)前記判定対象文書が送信許可相手に送信するものである場合、前記生成手段によって生成された組み合わせ情報を前記特定文書の組み合わせ情報として記憶する記憶手段をさらに備えることを特徴とする付記1から付記3のいずれか1つに記載の文書検査装置。
(付記5)前記生成手段は、
前記判定対象のキーワードのハッシュ値および前記他のキーワードのハッシュ値を、各キーワードの出現位置の前後情報を行情報および列情報に対応付けて組み合わせた行列要素を特定値に設定した行列情報を複数の組み合わせ情報として生成し、
前記比較判定手段は、
前記生成手段によって生成された前記判定対象文書および前記特定文書のいずれの行列情報にも特定値が設定されている同一の行列要素に対応する行列要素を特定値に設定される共通行列情報を生成する共通情報生成手段を含み、
前記類似判定手段は、
前記共通情報生成手段によって生成された共通行列情報から同一の列情報ごとに複数の特定値が設定されている行情報を抽出し、抽出された行情報のうち互いに異なる2つの行情報を組み合わせた行列要素であって特定値が設定されている行列要素の数が第2の類似判定数以上であるか否かを判定することを特徴とする付記2または付記3に記載の文書検査装置。
(付記6)前記キーワードを構成する全ての文字の文字コードのうち、前記キーワードの開始桁と最終桁にある文字の各文字コードを乗算し、乗算した値に開始桁と最終桁を除外した残りの桁にある文字の各文字コードを加算し、加算した値をハッシュ値の最大数で除算し、その除算結果の剰余値に1を加算した値をハッシュ値とするハッシュ値算出手段を有することを特徴とする付記5に記載の文書検査装置。
(付記7)前記比較判定手段は、
前記判定対象文書の複数の組み合わせ情報のうち、前記特定文書の組み合わせ情報と一致する組み合わせ情報の数が第1の類似判定数以上であると判定されたとき、前記判定対象文書の中で前記組み合せ情報に含まれるキーワードの出現密度が基準値より高いか否かを判定する類似箇所判定手段と、
前記類似箇所判定手段によって前記判定対象文書の中で前記組み合せ情報に含まれるキーワードの出現密度が基準値より高いと判定されたとき、出現密度が高いと判定された箇所を、前記判定対象文書内の前記特定文書と類似する類似箇所として特定する類似箇所特定手段と
を有することを特徴とする付記1に記載の文書検査装置。
(付記8)前記類似箇所判定手段は、
前記判定対象文書に含まれる連続する所定数のキーワードを判定箇所とし、当該判定箇所の中に、前記組み合わせ情報に含まれるキーワードの数が、前記基準値以上であるか否かを判定し、
前記類似箇所特定手段は、
前記類似箇所判定手段によって前記組み合わせ情報に含まれるキーワードの数が、前記基準値以上であると判定されたとき、前記判定箇所を、前記判定対象文書内の前記特定文書と類似する類似箇所として特定することを特徴とする付記7に記載の文書検査装置。
(付記9)前記類似箇所判定手段は、
前記類似箇所特定手段によって前記類似箇所が特定されなかったとき、1つ後方のキーワードに至るまでの所定数のキーワードを次の判定箇所とし、前記類似箇所特定手段によって前記類似箇所が特定されたとき、特定された類似箇所の最後のキーワードより後方のキーワードであって組み合わせ情報に含まれる最初のキーワードに至るまでの所定数のキーワードを次の判定箇所とし、前記判定箇所の中に、前記組み合わせ情報に含まれるキーワードの数が、前記基準値以上であるか否かを判定することを特徴とする付記8に記載の文書検査装置。
(付記10)前記類似箇所特定手段によって特定された類似箇所を出力する出力手段を有することを特徴とする付記7から付記9のいずれか1つに記載の文書検査装置。
(付記11)文書画像を光学的に文字認識し、認識した文字を抽出し、抽出した文字を判定対象文書とする光学式文字認識手段を有することを特徴とする付記7から付記9のいずれか1つに記載の文書検査装置。
(付記12)文書の類似性を判定する際に比較対象となる特定文書を含む判定対象文書からキーワードおよび該キーワードの出現位置を抽出する抽出手順と、
前記抽出手順によって抽出されたキーワードの出現位置ごとのキーワードを判定対象として、当該判定対象のキーワード前後に関わる所定範囲内に前記抽出手順によって抽出された他のキーワードがあるか否かを判定する判定手順と、
前記判定手順によって他のキーワードがあると判定されたとき、前記判定対象のキーワードおよび前記他のキーワードを各キーワードの出現位置の前後情報に対応付けて組み合わせた組み合わせ情報を生成する生成手順と、
前記生成手順によって生成された前記判定対象文書の複数の組み合わせ情報と、前記特定文書の複数の組み合わせ情報とを比較して、前記判定対象文書の複数の組み合わせ情報のうち、前記特定文書の組み合わせ情報と一致する組み合わせ情報の数が第1の類似判定数以上であるか否かを判定して、その判定結果に基づき前記判定対象文書と前記特定文書との類似性を判定する比較判定手順と
を含む文書検査プログラムをコンピュータに実行させることを特徴とするコンピュータ読み取り可能な記録媒体。
(付記13)前記比較判定手順は、
前記判定対象文書の複数の組み合わせ情報のうち、前記特定文書の組み合わせ情報と一致する組み合わせ情報の数が第1の類似判定数以上であると判定されたとき、同一の所定範囲内に出現する少なくとも3つ以上のキーワードから組み合わされる組み合わせ情報の群が第2の類似判定数以上あるか否かを判定する類似判定手順を含むことを特徴とする付記12に記載のコンピュータ読み取り可能な記録媒体。
(付記14)前記生成手順は、
前記判定手順のキーワードのハッシュ値および前記他のキーワードのハッシュ値を、各キーワードの出現位置の前後情報を行情報および列情報に対応付けて組み合わせた行列要素を特定値に設定した行列情報を複数の組み合わせ情報として生成し、
前記比較判定手順は、
前記生成手順によって生成された前記判定対象文書および前記特定文書のいずれの行列情報にも特定値が設定されている同一の行列要素に対応する行列要素を特定値に設定される共通行列情報を生成する共通情報生成手順を含み、
前記類似判定手順は、
前記共通情報生成手順によって生成された共通行列情報から同一の列情報ごとに複数の特定値が設定されている行情報を抽出し、抽出された行情報のうち互いに異なる2つの行情報を組み合わせた行列要素であって特定値が設定されている行列要素の数が第2の類似判定数以上あるか否かを判定することを特徴とする付記13に記載のコンピュータ読み取り可能な記録媒体。
(付記15)前記比較判定手順は、
前記判定対象文書の複数の組み合わせ情報のうち、前記特定文書の組み合わせ情報と一致する組み合わせ情報の数が第1の類似判定数以上であると判定されたとき、前記判定対象文書の中で前記組み合せ情報に含まれるキーワードの出現密度が基準値より高いか否かを判定する類似箇所判定手順と、
前記類似箇所判定手順によって前記判定対象文書の中で前記組み合せ情報に含まれるキーワードの出現密度が基準値より高いと判定されたとき、出現密度が高いと判定された箇所を、前記判定対象文書内の前記特定文書と類似する類似箇所として特定する類似箇所特定手順と
を含むことを特徴とする付記12に記載のコンピュータ読み取り可能な記録媒体。
(付記16)文書の類似性を判定する際に比較対象となる特定文書を含む判定対象文書からキーワードおよび該キーワードの出現位置を抽出する抽出工程と、
前記抽出工程によって抽出されたキーワードの出現位置ごとのキーワードを判定対象として、当該判定対象のキーワード前後に関わる所定範囲内に前記抽出工程によって抽出された他のキーワードがあるか否かを判定する判定工程と、
前記判定工程によって他のキーワードがあると判定されたとき、前記判定対象のキーワードおよび前記他のキーワードを各キーワードの出現位置の前後情報に対応付けて組み合わせた組み合わせ情報を生成する生成工程と、
前記生成工程によって生成された前記判定対象文書の複数の組み合わせ情報と、前記特定文書の複数の組み合わせ情報とを比較して、前記判定対象文書の複数の組み合わせ情報のうち、前記特定文書の組み合わせ情報と一致する組み合わせ情報の数が第1の類似判定数以上であるか否かを判定して、その判定結果に基づき前記判定対象文書と前記特定文書との類似性を判定する比較判定工程と
を含むことを特徴とする文書検査方法。
(付記17)前記比較判定工程は、
前記判定対象文書の複数の組み合わせ情報のうち、前記特定文書の組み合わせ情報と一致する組み合わせ情報の数が第1の類似判定数以上であると判定されたとき、前記判定対象文書の中で前記組み合せ情報に含まれるキーワードの出現密度が基準値より高いか否かを判定する類似箇所判定工程と、
前記類似箇所判定工程によって前記判定対象文書の中で前記組み合せ情報に含まれるキーワードの出現密度が基準値より高いと判定されたとき、出現密度が高いと判定された箇所を、前記判定対象文書内の前記特定文書と類似する類似箇所として特定する類似箇所特定工程と
を含むことを特徴とする付記16に記載の文書検査方法。