(57)【要約】【課題】送信対象文書と機密文書との間の類似性を高精度に判断する。【解決手段】文書検査装置１は、機密文書を含む判定対象文書からキーワードおよび該キーワードの出現位置を抽出するキーワード出現位置抽出部１２１と、抽出されたキーワードの出現位置ごとのキーワードを判定対象として、当該判定対象のキーワード前後に関わる所定範囲内に抽出された他のキーワードがあるか否かを判定するキーワード範囲内有無判定部１２３と、他のキーワードがあると判定されたとき、前記判定対象のキーワードおよび前記他のキーワードを各キーワードの出現位置の前後情報に対応付けて組み合わせた組み合わせ情報を生成する特徴素行列作成部１２４と、生成された前記判定対象文書の複数の組み合わせ情報のうち、前記機密文書の組み合わせ情報と一致する組み合わせ情報の数が所定値以上であるか否かを判定する共通要素数算出部１６２とを備える。【選択図】図２
2010231766.tif 000002
【特許請求の範囲】
【請求項１】
文書の類似性を判定する際に比較対象となる特定文書を含む判定対象文書からキーワードおよび該キーワードの出現位置を抽出する抽出手段と、
前記抽出手段によって抽出されたキーワードの出現位置ごとのキーワードを判定対象として、当該判定対象のキーワード前後に関わる所定範囲内に前記抽出手段によって抽出された他のキーワードがあるか否かを判定する判定手段と、
前記判定手段によって他のキーワードがあると判定されたとき、前記判定対象のキーワードおよび前記他のキーワードを各キーワードの出現位置の前後情報に対応付けて組み合わせた組み合わせ情報を生成する生成手段と、
前記生成手段によって生成された前記判定対象文書の複数の組み合わせ情報と、前記特定文書の複数の組み合わせ情報とを比較して、前記判定対象文書の複数の組み合わせ情報のうち、前記特定文書の組み合わせ情報と一致する組み合わせ情報の数が第１の類似判定数以上であるか否かを判定して、その判定結果に基づき前記判定対象文書と前記特定文書との類似性を判定する比較判定手段と
を備えることを特徴とする文書検査装置。
【請求項２】
前記比較判定手段は、
前記判定対象文書の複数の組み合わせ情報のうち、前記特定文書の組み合わせ情報と一致する組み合わせ情報の数が第１の類似判定数以上であると判定されたとき、同一の所定範囲内に出現する少なくとも３つ以上のキーワードから組み合わされる組み合わせ情報の群が第２の類似判定数以上あるか否かを判定する類似判定手段を含むことを特徴とする請求項１に記載の文書検査装置。
【請求項３】
前記生成手段は、
前記判定対象のキーワードのハッシュ値および前記他のキーワードのハッシュ値を、各キーワードの出現位置の前後情報を行情報および列情報に対応付けて組み合わせた行列要素を特定値に設定した行列情報を複数の組み合わせ情報として生成し、
前記比較判定手段は、
前記生成手段によって生成された前記判定対象文書および前記特定文書のいずれの行列情報にも特定値が設定されている同一の行列要素に対応する行列要素を特定値に設定される共通行列情報を生成する共通情報生成手段を含み、
前記類似判定手段は、
前記共通情報生成手段によって生成された共通行列情報から同一の列情報ごとに複数の特定値が設定されている行情報を抽出し、抽出された行情報のうち互いに異なる２つの行情報を組み合わせた行列要素であって特定値が設定されている行列要素の数が第２の類似判定数以上あるか否かを判定することを特徴とする請求項２に記載の文書検査装置。
【請求項４】
前記比較判定手段は、
前記判定対象文書の複数の組み合わせ情報のうち、前記特定文書の組み合わせ情報と一致する組み合わせ情報の数が第１の類似判定数以上であると判定されたとき、前記判定対象文書の中で前記組み合せ情報に含まれるキーワードの出現密度が基準値より高いか否かを判定する類似箇所判定手段と、
前記類似箇所判定手段によって前記判定対象文書の中で前記組み合せ情報に含まれるキーワードの出現密度が基準値より高いと判定されたとき、出現密度が高いと判定された箇所を、前記判定対象文書内の前記特定文書と類似する類似箇所として特定する類似箇所特定手段と
を有することを特徴とする請求項１に記載の文書検査装置。
【請求項５】
文書の類似性を判定する際に比較対象となる特定文書を含む判定対象文書からキーワードおよび該キーワードの出現位置を抽出する抽出手順と、
前記抽出手順によって抽出されたキーワードの出現位置ごとのキーワードを判定対象として、当該判定対象のキーワード前後に関わる所定範囲内に前記抽出手順によって抽出された他のキーワードがあるか否かを判定する判定手順と、
前記判定手順によって他のキーワードがあると判定されたとき、前記判定対象のキーワードおよび前記他のキーワードを各キーワードの出現位置の前後情報に対応付けて組み合わせた組み合わせ情報を生成する生成手順と、
前記生成手順によって生成された前記判定対象文書の複数の組み合わせ情報と、前記特定文書の複数の組み合わせ情報とを比較して、前記判定対象文書の複数の組み合わせ情報のうち、前記特定文書の組み合わせ情報と一致する組み合わせ情報の数が第１の類似判定数以上であるか否かを判定して、その判定結果に基づき前記判定対象文書と前記特定文書との類似性を判定する比較判定手順と
を含む文書検査プログラムをコンピュータに実行させることを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項６】
前記比較判定手順は、
前記判定対象文書の複数の組み合わせ情報のうち、前記特定文書の組み合わせ情報と一致する組み合わせ情報の数が第１の類似判定数以上であると判定されたとき、同一の所定範囲内に出現する少なくとも３つ以上のキーワードから組み合わされる組み合わせ情報の群が第２の類似判定数以上あるか否かを判定する類似判定手順を含むことを特徴とする請求項５に記載のコンピュータ読み取り可能な記録媒体。
【請求項７】
文書の類似性を判定する際に比較対象となる特定文書を含む判定対象文書からキーワードおよび該キーワードの出現位置を抽出する抽出工程と、
前記抽出工程によって抽出されたキーワードの出現位置ごとのキーワードを判定対象として、当該判定対象のキーワード前後に関わる所定範囲内に前記抽出工程によって抽出された他のキーワードがあるか否かを判定する判定工程と、
前記判定工程によって他のキーワードがあると判定されたとき、前記判定対象のキーワードおよび前記他のキーワードを各キーワードの出現位置の前後情報に対応付けて組み合わせた組み合わせ情報を生成する生成工程と、
前記生成工程によって生成された前記判定対象文書の複数の組み合わせ情報と、前記特定文書の複数の組み合わせ情報とを比較して、前記判定対象文書の複数の組み合わせ情報のうち、前記特定文書の組み合わせ情報と一致する組み合わせ情報の数が第１の類似判定数以上であるか否かを判定して、その判定結果に基づき前記判定対象文書と前記特定文書との類似性を判定する比較判定工程と
を含むことを特徴とする文書検査方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文書検査装置、コンピュータ読み取り可能な記録媒体および文書検査方法に関する。
【背景技術】
【０００２】
従来から、電子メール等による機密情報や個人情報の漏洩を防止するために、例えば社内のメールサーバが、文書を社外に送信する前に、送信対象の文書と保管された機密文書との類似性を判定し、類似性があれば、送信対象文書の社外への送信をしないようにすることが重要となっている。
【０００３】
この文書間の類似性の判断方法としては、送信対象文書および機密文書それぞれの文書を構成する文ごとにハッシュ値を算出し、機密文書を構成する文のハッシュ値と同一のハッシュ値を持つ文が送信対象文書にあるか否かを判定して類似性の判断をする技術が開示されている。
【０００４】
また、文書間の類似性の判断方法としては、送信対象文書に含まれるキーワードが機密文書に含まれているか否かを判定して類似性の判断をする技術が開示されている。例えば、キーワード「電池」に対して「アルカリ電池」「カリウム電池」「燃料電池」等の連接キーワードを検索する場合には、キーワード「電池」とキーワードの前後の文字（「リ」、「ム」、「料」）のハッシュ値をインデックスとして持つことで、送信対象文書に含まれる連接キーワードが機密文書にあるか否かを高速に判定することができる。
【０００５】
さらに、文書中にキーワードがあるか否かの可能性を判定することができるものとして、文書の特徴素を示すシグネチャがある。シグネチャとは、例えば機密文書中の複数のキーワードから得られるそれぞれのビット列を論理和したデータであり、このシグネチャと送信対象文書に含まれるキーワードのビット列とを論理積して得られた結果が０ベクトルでないとき、機密文書中に当該キーワードを含む可能性があると判断するものである。なお、このシグネチャは、キーワードに当該キーワードの周辺文字列を加えた文字列から算出される場合もある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−０６５８３７号公報
【特許文献２】特開２００５−２３４９３０号公報
【特許文献３】米国特許出願公開第２００６／０２５３４３８号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、送信対象文書が、機密文書内の文の構造を改訂したものや、機密文書内の助詞を変更したものである場合、送信対象文書と機密文書との間の類似性を高精度に判断することができないという問題がある。
【０００８】
例えば、送信対象文書と機密文書との間の類似性を文ごとに判断する場合には、送信対象文書が、機密文書の文を分割したもの、複数の文を併合したものや、機密文書内の「てにをは」を変更したものである場合、文のハッシュ値が変わるため、送信対象文書と機密文書との間の類似性が判断できない。
【０００９】
また、送信対象文書と機密文書との間の類似性をキーワードの検索によって判断する場合には、送信対象文書に含まれるキーワードが、機密文書内のキーワードに完全に一致して存在しているか否かは判断できるが、文書間の類似性を高精度に判断することができない。
【００１０】
さらに、送信対象文書と機密文書との間の類似性を、シグネチャを用いて判断する場合には、送信対象文書のキーワードは、機密文書内に存在している可能性があるか否かが判断できるが、キーワードを構成するいずれかのビットの有無によって判断することになるため、送信対象文書に含まれるキーワードが全く違う文脈でバラバラに機密文書に含まれていたとしても、誤って類似と判定されてしまうこともある。
【００１１】
本発明は、上記に鑑みてなされたものであって、送信対象文書と機密文書との間の類似性を高精度に判断することができる文書検査装置、コンピュータ読み取り可能な記録媒体および文書検査方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上述した問題を解決し、目的を達成するために、文書検査装置は、文書の類似性を判定する際に比較対象となる特定文書を含む判定対象文書からキーワードおよび該キーワードの出現位置を抽出する抽出手段と、前記抽出手段によって抽出されたキーワードの出現位置ごとのキーワードを判定対象として、当該判定対象のキーワード前後に関わる所定範囲内に前記抽出手段によって抽出された他のキーワードがあるか否かを判定する判定手段と、前記判定手段によって他のキーワードがあると判定されたとき、前記判定対象のキーワードおよび前記他のキーワードを各キーワードの出現位置の前後情報に対応付けて組み合わせた組み合わせ情報を生成する生成手段と、前記生成手段によって生成された前記判定対象文書の複数の組み合わせ情報と、前記特定文書の複数の組み合わせ情報と、を比較して、前記判定対象文書の複数の組み合わせ情報のうち前記特定文書の組み合わせ情報と一致する組み合わせ情報の数が所定値以上であるか否かを判定して、その判定結果に基づき前記判定対象文書と前記特定文書との類似性を判定する比較判定手段と、を備えた構成を採る。
【発明の効果】
【００１３】
以上により、文書検査装置、コンピュータ読み取り可能な記録媒体および文書検査方法は、判定対象文書のうち例えば送信対象文書が、特定文書例えば機密文書内の文の構造を改訂したもの、機密文書内の助詞を変更したものであっても、送信対象文書と機密文書との類似性を高精度に判断することができるという効果を奏する。
【図面の簡単な説明】
【００１４】
【図１】図１は、実施例１に係る文書検査装置の概念を示す図である。
【図２】図２は、実施例１に係る文書検査装置の構成を示す機能ブロック図である。
【図３】図３は、キーワードテーブルのデータ構造の一例を示す図である。
【図４】図４は、特徴素行列の一例を示す図である。
【図５】図５は、特徴素行列を作成する一例を示す図である。
【図６】図６は、特徴素行列ＤＢのデータ構造の一例を示す図である。
【図７】図７は、特徴素行列のシリアライズ方法の一例を示す図である。
【図８−１】図８−１は、類似性検査１の類似性検査の一例を示す図である。
【図８−２】図８−２は、類似性検査１の類似性検査の一例を示す図である。
【図９−１】図９−１は、３連続ハッシュ値の一例を示す図である。
【図９−２】図９−２は、類似性検査２の類似性検査の一例を示す図である。
【図９−３】図９−３は、類似性検査２の必要性を示す図である。
【図１０】図１０は、実施例１に係る文書検査装置の文書検査処理の処理手順を示すフローチャートである。
【図１１】図１１は、実施例１に係る特徴素行列抽出部の処理手順を示すフローチャートである。
【図１２】図１２は、実施例１に係るキーワードテーブル作成処理の処理手順を示すフローチャートである。
【図１３】図１３は、実施例１に係るハッシュ値算出部の処理手順を示すフローチャートである。
【図１４】図１４は、実施例１に係る類似算出部の処理手順を示すフローチャートである。
【図１５】図１５は、実施例１に係る３連続ハッシュ値数算出部の処理手順を示すフローチャートである。
【図１６】図１６は、実施例１に係るシリアライズ部の処理手順を示すフローチャートである。
【図１７】図１７は、実施例２に係る文書検査装置の構成を示す機能ブロック図である。
【図１８】図１８は、実施例２に係るキーワードテーブルのデータ構造の一例を示す図である。
【図１９】図１９は、実施例２に係る類似箇所特定方法の一例を示す図である。
【図２０】図２０は、警告画面の一例を示す図である。
【図２１】図２１は、実施例２に係る類似箇所特定方法のアルゴリズムを説明する図である。
【図２２】図２２は、実施例２に係るハッシュ値算出部の処理手順を示すフローチャートである。
【図２３】図２３は、実施例２に係る類似算出部の処理手順を示すフローチャートである。
【図２４】図２４は、実施例２に係る類似箇所特定処理の処理手順を示すフローチャートである。
【図２５】図２５は、実施例３に係る文書検査装置の構成を示す機能ブロック図である。
【図２６】図２６は、実施例３に係る文書検査装置の用途の一例を説明する図である。
【図２７】図２７は、実施例３に係るプリンタ装置を用いた印刷結果の一例を説明する図である。
【発明を実施するための形態】
【００１５】
以下に、本発明に係る文書検査装置、コンピュータ読み取り可能な記録媒体および文書検査方法の実施例を図面に基づいて詳細に説明する。なお、本実施例によりこの発明が限定されるものではない。
【実施例１】
【００１６】
［実施例１に係る文書検査装置の概念］
図１は、本実施例１に係る文書検査装置の概念を説明するための図である。図１に示すように、文書検査装置１は、クライアントＰＣａから受信されたメールＡ（機密文書）の宛先が社内宛である、例えば、クライアントＰＣｂである場合には、受信されたメールＡをクライアントＰＣｂに送信するとともに、メールＡの特徴を記憶する。
【００１７】
また、文書検査装置１は、クライアントＰＣｂから受信されたメールＢの宛先が社外宛である、例えば、他サーバである場合には、受信されたメールＢとあらかじめ記憶されている複数の機密文書とを比較する。そして、文書検査装置１は、その比較結果に基づき、受信されたメールＢが機密文書と類似しているか否かを判断し、類似している場合にはメールＢの社外への送信を拒否する。
【００１８】
すなわち、文書検査装置１は、クライアントＰＣｂによって機密文書である社外秘のメールＡの内容を部分的にコピーしたり編集したりして作成されたメールＢを、社外に送信しないようにする。
【００１９】
具体的には、文書検査装置１は、判定対象文書であるメールＢの文書の特徴を示す文書特徴素（シグネチャ）と、機密文書であるメールＡの文書特徴素とを、比較する。文書検査装置１は、機密文書との類似性が判定される判定対象文書であるメールＢに含まれている所定文字数の範囲内にある２つのキーワードを対にして組み合わせた組み合わせ情報を複数含む文書特徴素と、機密文書であるメールＡの文書特徴素とを比較する。この組み合わせ情報は、対の２つのキーワードを各出現位置の前後情報に対応付けて組み合わせたものである。なお、キーワードとは、文書の中でのキーとなる単語や語句をいうものとする。
【００２０】
そして、文書検査装置１は、比較結果に基づき、判定対象文書であるメールＢの複数の組み合わせ情報のうちメールＡの組み合わせ情報と一致する組み合わせ情報の数が所定値以上あるか否かを判定する（「類似性検査１」）。
【００２１】
そして、文書検査装置１は、一致するものの数が所定値以上あると判定した場合には、さらに、所定文字数の同一範囲内に少なくとも３つ以上のキーワードから組み合わされる組み合わせ情報の群が出現するか否かを判断して、かかる群が所定値以上あるか否かを判定する（「類似性検査２」）。
【００２２】
その結果、文書検査装置１は、組み合わせ情報のかかる群が所定値以上あると判定する場合には、文書同士が類似しているものとして、メールＢの他サーバへの送信を拒否する。
【００２３】
なお、上記では、本実施例に係る文書検査装置１で扱う機密文書をメールとして説明したが、メール本文やメールに添付された文書であっても良いし、メール以外から作成された文書であっても良い。また、メールＢと類似性を検査する対象となる機密文書を、クライアントPCbが過去に送受信したメールに限定することで処理を効率化しても良い。また、本実施例では、「類似性検査１」および「類似性検査２」を文書検査処理というものとする。
【００２４】
［実施例１に係る文書検査装置の構成］
図２は、実施例１に係る文書検査装置の構成を示す機能ブロック図である。図２に示すように、文書検査装置１は、制御部１０と、記憶部２０と、を備える。
【００２５】
制御部１０は、文書検査処理等を規定したプログラムに基づいた処理を実行する処理部である。制御部１０は、メール受信部１１０と、特徴素行列抽出部１２０と、社内ドメイン判定部１３０と、特徴素行列追加部１４０と、シリアライズ部１５０と、類似算出部１６０と、類似判定部１７０と、メール送信拒否部１８０と、メール送信部１９０と、を備える。
【００２６】
記憶部２０は、制御部１０による文書検査処理に必要なデータを格納し、不要語リスト２２０、社内ドメイン定義２３０、特徴素行列ＤＢ２４０および、各文書毎の一時的なデータ領域としてキーワードテーブル２１０、ワーク行列２５０を備える。
【００２７】
メール受信部１１０は、社内のクライアントＰＣから送信されたメールを受信して、受信したメールからメール本文の文字列とメールに添付された添付ファイルに含まれる文字列とを抽出する。ここで、メール受信部１１０が抽出したメール本文の文字列と添付ファイルに含まれる文字列とを、以降「検査対象テキスト」というものとする。
【００２８】
また、メール受信部１１０は、抽出した検査対象テキストを特徴素行列抽出部１２０に出力するとともに、抽出したメール本文を社内ドメイン判定部１３０に出力する。さらに、メール受信部１１０は、受信したメールをメール送信拒否部１８０およびメール送信部１９０に出力する。
【００２９】
特徴素行列抽出部１２０は、メール受信部１１０から検査対象テキストを取得すると、当該検査対象テキストから当該テキストの特徴素を行列に表した特徴素行列を抽出する。なお、特徴素行列の詳細については、後述する。さらに、特徴素行列抽出部１２０は、キーワード出現位置抽出部１２１と、ハッシュ値算出部１２２と、キーワード範囲内有無判定部１２３と、特徴素行列作成部１２４と、を備える。
【００３０】
キーワード出現位置抽出部１２１は、メール受信部１１０から検査対象テキストを取得すると、当該検査対象テキストから抽出される複数のキーワードに対して当該キーワードの出現位置およびハッシュ値を１つのレコードとしてキーワードテーブル２１０に格納する。
【００３１】
例えば、キーワード出現位置抽出部１２１は、不要語リスト２２０に含まれていない単語をキーワードとして検査対象テキストから抽出するとともに、抽出したキーワードの出現位置を検査対象テキストの先頭位置から数える。
【００３２】
ここで、不要語リスト２２０は、キーワードから除外された単語（不要語）が記憶されたリストであり、その不要語としては、例えば、「が」、「を」等の助詞、「これ」、「それ」等の指示語および「コンピュータ」等一般的な文書の中でも頻出されると予想される単語を含む。
【００３３】
また、キーワード出現位置抽出部１２１は、抽出したキーワードのハッシュ値をハッシュ値算出部１２２によって算出して、抽出したキーワード、その出現位置およびそのハッシュ値を１レコードとしてキーワードテーブル２１０に格納する。
【００３４】
さらに、キーワード出現位置抽出部１２１は、検査対象テキストにあるすべてのキーワードに関する情報をキーワードテーブル２１０に格納すると、キーワードテーブル２１０が作成された旨の通知をキーワード範囲内有無判定部１２３に出力する。
【００３５】
ここで、キーワードテーブル２１０のデータ構造の一例について図３を参照して説明する。図３に示すように、キーワードテーブル２１０は、キーワードと、出現位置と、ハッシュ値と、から構成され、記憶部２０に一時的に記憶される。
【００３６】
ハッシュ値算出部１２２は、キーワード出現位置抽出部１２１からキーワードを取得すると、取得したキーワードからハッシュ値を算出して、算出したハッシュ値をキーワード出現位置抽出部１２１に出力する。
【００３７】
なお、ハッシュ値の算出方法としては、キーワードを構成する文字のすべての文字コードを加算した値をハッシュ値の最大数で除算した結果、余りとなる値に１を加算する方法がある。また、キーワードを構成する文字の文字コード間で排他的論理和した値をハッシュ値の最大数で除算した結果、余りとなる値に１を加算する方法やキーワードを構成する文字の文字コードを連結した値をハッシュ値の最大数で除算した結果、余りとなる値に１を加算する方法がある。さらに、キーワードと特定の数値とを１対１にあらかじめ定められた対応表によってキーワードに対応する数値をハッシュ値とする方法等があるが、これらに限定されるものではない。
【００３８】
キーワード範囲内有無判定部１２３は、キーワード出現位置抽出部１２１からキーワード２１０が作成された旨の通知を取得すると、キーワードテーブル２１０に格納された各キーワードを判定対象として、判定対象のキーワードの出現位置から文の後方に向かって所定文字数の範囲内に他のキーワードがあるか否かを判定する。
【００３９】
また、キーワード範囲内有無判定部１２３は、判定対象のキーワードの出現位置から文の後方に向かって所定文字数の範囲内に他のキーワードがあると判定すると、判定対象のキーワードのハッシュ値と他のキーワードのハッシュ値とを対応付けた行列要素を生成する。なお、この行列要素は、各キーワードの出現位置の前後を、例えば列と行に対応付けたものであり、組み合わせ情報に相当する。
【００４０】
例えば、判定対象のキーワードのハッシュ値が「５」であって、判定対象のキーワードの出現位置から後方にある他のキーワードのハッシュ値が「３」であるとき、行列要素が３行５列、すなわち（３、５）となる。
【００４１】
また、キーワード範囲内有無判定部１２３は、判定対象ごとに判定対象のキーワードのハッシュ値と他のキーワードのハッシュ値とを対応付けた行列要素を特徴素行列作成部１２４に出力する。
【００４２】
なお、キーワード範囲内有無判定部１２３は、判定対象のキーワードの出現位置から文の後方に向かって他のキーワードがあるか否かを判定するものとしたが、これに限定されず、判定対象のキーワードの出現位置から文の前方に向かって他のキーワードがあるか否かを判定するものとしても良い。
【００４３】
また、行列要素は、判定対象のキーワードのハッシュ値と他のキーワードのハッシュ値とを各キーワードの出現位置の前後を、例えば列と行に対応付けたものとして説明したが、これに限定されず、各キーワードの出現位置の前後を、行と列に対応付けたものとしても良い。
【００４４】
さらに、所定文字数の範囲は、例えば１００文字であるが、複数のキーワードが出現する可能性がある文字数の範囲であれば良く、あらかじめ実験等で調べられ記憶部２０に記憶されるものとする。
【００４５】
特徴素行列作成部１２４は、キーワード範囲内有無判定部１２３から判定対象ごとに生成された行列要素を取得すると、取得した行列要素を用いて、検査対象テキストに対応する特徴素行列を作成する。
【００４６】
具体的には、特徴素行列作成部１２４は、検査対象テキストの特徴素行列を作成するために必要な大きさのメモリ領域（ワーク行列２５０）を記憶部２０に割り当てる。そして、特徴素行列作成部１２４は、ワーク行列２５０に対して、判定対象ごとに生成された行列要素を特定値（例えば「１」）に設定して特徴素行列を作成する。
【００４７】
なお、ワーク行列２５０は、特徴素行列の各行の値（「０」または「１」）を順番につなげた数列であり、行数×列数ビットの大きさのメモリ領域として格納される。
【００４８】
ここで、特徴素行列の作成について、図４および図５を参照して説明する。図４は、特徴素行列の一例を示す図であり、図５は、特徴素行列を作成する一例を示す図である。
【００４９】
まず、図４では、特徴素行列の一例について説明する。図４に示すように、特徴素行列は、行数をＭａｘＳ、列数をＭａｘＳとした２次元の固定長正方行列である。
【００５０】
例えば、行列要素（３、５）要素が特定値「１」であるとは、ハッシュ値「５」のキーワードの後方に向かって所定文字数の範囲内にハッシュ値「３」のキーワードがあることを意味する。
【００５１】
なお、ＭａｘＳ値は、ハッシュ値の最大数であって、例えば数万であるが、これに限定されるものではない。
【００５２】
次に、図５では、特徴素行列を作成する一例について説明する。図５に示すように、機密文書から作成されたキーワードテーブル２１０から特徴素行列３００が作成される。
【００５３】
具体的には、キーワードテーブル２１０に含まれるキーワード「半導体」（出現位置１０、ハッシュ値３）を判定対象とするとき、「半導体」の出現位置「１０」から所定文字数の範囲（例えば１００文字）内にある他のキーワードには、「三重」（出現位置２８、ハッシュ値１）と「先端」（出現位置３３、ハッシュ値２）が含まれる。
【００５４】
このようなとき、特徴素行列作成部１２４は、出現位置がキーワード「三重」より前である「半導体」のハッシュ値「３」を列に、出現位置がキーワード「半導体」より後であるキーワード「三重」のハッシュ値「１」を行に対応付けた行列要素（１、３）を特定値「１」に設定する。
【００５５】
同様に、特徴素行列作成部１２４は、キーワード「半導体」および「先端」との関係においても、行列要素（２、３）を特定値「１」に設定する。
【００５６】
以降、特徴素行列作成部１２４は、判定対象を順番に代えて上述した操作を行い、特徴素行列３００を作成する。
【００５７】
図２に戻って、社内ドメイン判定部１３０は、メールの送信先が社内宛であるか否かを判定する。
【００５８】
具体的には、社内ドメイン判定部１３０は、メール受信部１１０から検査対象テキストのメール本文を取得し、かつ、特徴素行列作成部１２４から特徴素行列を取得すると、メール本文に含まれる送信先を社内ドメイン定義２３０に格納された社内ドメインと照合して、照合結果に基づき、送信先が社内ドメインであるか否かを判定する。
【００５９】
ここで、社内ドメイン定義２３０は、社内ドメインをパターン列で表した文字列から構成され、例えば「＊．ｘｘｘ．ｃｏｍ」や「＊．ｘｘｘ．ｃｏ．ｊｐ」（ｘｘｘは、例えば会社名称の英文字）等を含む。
【００６０】
社内ドメイン判定部１３０は、メールの送信先が社内ドメインであると判定した場合には、メールを機密文書として保管するために、検査対象テキストの特徴素行列および検査対象テキストのメール本文を特徴素行列追加部１４０に出力する。また、社内ドメイン判定部１３０は、メールの送信先が社内ドメインでないと判定した場合には、検査対象テキストと機密文書との類似性を算出するために、検査対象テキストの特徴素行列を共通行列作成部１６１に出力する。
【００６１】
特徴素行列追加部１４０は、社内ドメイン判定部１３０から検査対象テキストの特徴素行列を取得すると、取得した特徴素行列を特徴素行列ＤＢ（Database）２４０に追加する。すなわち、特徴素行列追加部１４０は、メールの送信先が社内ドメインである場合には、社内宛のメールであるため、そのメールの検査対象テキストを機密文書として特徴素行列ＤＢ２４０にあらかじめ格納する。
【００６２】
具体的には、特徴素行列追加部１４０は、社内ドメイン判定部１３０から検査対象テキストの特徴素行列を取得すると、取得した特徴素行列をシリアライズ部１５０に出力し、出力した特徴素行列のシリアライズ結果をシリアライズ部１５０から取得する。
【００６３】
また、特徴素行列追加部１４０は、社内ドメイン判定部１３０から取得したメール本文からメールが受信された日付、送信元および送信先を抽出し、抽出した情報とシリアライズ結果とを１レコードとして、特徴素行列ＤＢ２４０に格納する。
【００６４】
さらに、特徴素行列追加部１４０は、メールの送信要求をメール送信部１９０に通知する。
【００６５】
ここで、特徴素行列ＤＢ２４０のデータ構造の一例について図６を参照して説明する。図６は、特徴素行列ＤＢのデータ構造の一例を示す図である。図６に示すように、特徴素行列ＤＢ２４０は、メールが受信された日時と、メールアドレスによって示される送信者と、メールアドレスによって示される受信者と、シリアライズされた特徴素行列と、から構成される。この特徴素行列ＤＢ２４０は、これらの要素から構成されるレコードを、機密文書ごとに記憶する。
【００６６】
シリアライズ部１５０は、特徴素行列追加部１４０から検査対象テキストの特徴素行列を取得すると、取得した特徴素行列をシリアライズして、シリアライズ結果を特徴素行列追加部１４０に出力する。このシリアライズとは、特徴素行列の情報量を変えないで文字列などの１次元のデータに変換することをいう。
【００６７】
ここで、特徴素行列のシリアライズ方法の一例として、図７を参照して説明する。図７は、特徴素行列のシリアライズ方法の一例を示す図である。なお、図７では、説明の便宜上、特徴素行列が８行８列であるものとして説明する。
【００６８】
まず、シリアライズ部１５０は、特徴素行列３００のｉ行（ｉは１〜８）またはｉ列に特定値「１」を含む場合、縮退ベクトル３１０のｉ番目の値を特定値「１」に設定する。図７の特徴素行列３００の例では、ｉが１、３、４および５の場合にｉ行またはｉ列に特定値「１」が設定されているため、縮退ベクトル３１０は、「１０１１１０００」となる。
【００６９】
次に、シリアライズ部１５０は、縮退ベクトル３１０の各ビットの中で特定値「１」が設定されている行および列のみを特徴素行列３００から取り出して、縮退行列３２０を作成する。図７の特徴素行列３００の例では、縮退ベクトル３１０が「１０１１１０００」であるため、特定値「１」が設定されている１、３、４および５の行および列のみの値が特徴素行列３００から取り出され、縮退行列３２０が作成される。
【００７０】
さらに、シリアライズ部１５０は、縮退ベクトル３１０および縮退行列３２０の情報を８ビットずつ１６進数の値に変換（バイト化）して、シリアライズ結果「Ｂ８／６Ｂ１０」を取得する。
【００７１】
なお、シリアライズ方法としては、上述した方法以外に、特徴素行列の０と１の２進数のデータを単純に８ビットずつ１６進数の値に変換されたデータをシリアライズ結果とする方法がある。また、別のシリアライズ方法としては、特徴素行列の０と１の並びの順に０および１の並びの個数をシリアライズ結果とする方法（ｒｕｎ  ｌｅｎｇｔｈを用いた圧縮方法）があるが、これに限定されるものではない。
【００７２】
図２に戻って、類似算出部１６０は、社内ドメイン判定部１３０がメールの送信先が社内ドメインでないと判定した場合には、検査対象テキストと機密文書との類似性を算出する。さらに、類似算出部１６０は、共通行列作成部１６１と、共通要素数算出部１６２と、共通要素数判定部１６３と、３連続ハッシュ値数算出部１６４と、３連続ハッシュ値数判定部１６５と、を備える。
【００７３】
共通行列作成部１６１は、社内ドメイン判定部１３０から検査対象テキストの特徴素行列を取得すると、検査対象テキストの特徴素行列と機密文書の特徴素行列との共通要素を算出するために論理積を算出して、その算出結果に基づき、検査対象テキストと機密文書との共通行列を作成する。この共通行列を生成することによって、検査対象テキストと機密文書との共通する組み合わせ情報、すなわち、所定文字数の範囲内に共通するキーワードの対（ハッシュ値の対）があることがわかる。
【００７４】
具体的には、共通行列作成部１６１は、特徴素行列ＤＢ２４０に格納されている複数の機密文書のうち検査対象テキストとの類似性を算出していない機密文書を選択して、選択した機密文書のシリアライズされた特徴素行列を行列の型に復元して、元の特徴素行列を生成する。
【００７５】
また、共通行列作成部１６１は、生成した機密文書の特徴素行列と検査対象テキストの特徴素行列との論理積を算出して、その算出結果に基づき、共通行列を作成する。さらに、共通行列作成部１６１は、作成した共通行列を共通要素数算出部１６２および３連続ハッシュ値数算出部１６４に出力する。
【００７６】
共通要素数算出部１６２は、共通行列作成部１６１から共通行列を取得すると、共通行列に含まれる共通要素である特定値「１」の個数（共通要素数）を算出して、算出した共通要素数を共通要素数判定部１６３に出力する。
【００７７】
共通要素数判定部１６３は、共通要素数算出部１６２から共通要素数を取得すると、取得した共通要素数が所定値以上あるか否かを判定する。
【００７８】
なお、所定値は、例えば「３」であるが、検査対象テキストと機密文書間の類似の可能性が認められる数値であれば良く、あらかじめ実験等で調べられた数値が記憶部２０に記憶される。
【００７９】
共通要素数判定部１６３は、共通要素数が所定値以上であると判定すると、機密文書と検査対象テキスト間の類似の可能性があるものと判断し、文書間に類似の可能性がある旨を３連続ハッシュ算出部１６４に通知する。
【００８０】
一方、共通要素数判定部１６３は、共通要素数が所定値未満であると判定すると、検査対象テキストと機密文書間の類似の可能性がないものと判断し、文書間に類似の可能性がない旨を類似判定部１７０に通知する。
【００８１】
なお、上述した共通行列作成部１６１、共通要素数算出部１６２および共通要素数判定部１６３の処理が、検査対象テキストと機密文書との「類似性検査１」となる。
【００８２】
ここで、「類似性検査１」の類似性検査について、図８−１および図８−２を参照して説明する。図８−１および図８−２は、「類似性検査１」の類似性検査の一例を示す図である。まず、図８−１の例では、機密文書の特徴素行列（Ｍ１）４００ａと、検査対象テキストの特徴素行列（Ｍ２）４００ｂとを有し、その検査対象テキストには、機密文書のＡ１部分が部分的にコピーされ編集されたＡ２部分を含んでいるものとする。
【００８３】
図８−１の例では、検査対象テキストには、所定文字数の範囲内にキーワード「鹿児島」（ハッシュ値「７」）とキーワード「半導体」（ハッシュ値「３」）の対、キーワード「会津」（ハッシュ値「５」）とキーワード「マイコン」（ハッシュ値「４」）の対、キーワード「マイコン」（ハッシュ値「４」）とキーワード「半導体」（ハッシュ値「３」）の対およびキーワード「会津」（ハッシュ値「５」）とキーワード「半導体」（ハッシュ値「３」）の対がある。これにより、検査対象テキストの特徴素行列（Ｍ２）４００ｂには、行列要素（３、７）、（４、５）、（３、４）および（３、５）に特定値「１」が設定されている。
【００８４】
なお、機密文書の特徴素行列（Ｍ１）４００ａは、特徴素行列ＤＢ２４０に格納された１つの機密文書のシリアライズされた値が行列の型に復元されたものである。
【００８５】
次に、図８−２では、機密文書の特徴素行列（Ｍ１）４００ａと検査対象テキストの特徴素行列（Ｍ２）４００ｂとの論理積の結果を示す共通行列（Ｍ３）４００ｃを表している。この共通行列（Ｍ３）４００ｃに含まれる特定値「１」の行列要素が、機密文書と検査対象テキストとの共通するハッシュ値の対となる。
【００８６】
図８−２の例では、共通行列（Ｍ３）４００ｃのＢ１部分にある（３、４）、（３、５）および（４、５）の行列要素が機密文書と検査対象テキストとの共通するハッシュ値の対となり、共通要素の数は３個となる。そして、共通要素数判定部１６３は、共通要素の数が所定値以上であるか否かを判定して、所定値が３である場合は、文書間に類似の可能性があると判断するものである。
【００８７】
図２に戻って、３連続ハッシュ値数算出部１６４は、共通要素数判定部１６３から文書間に類似の可能性がある旨の通知を取得し、共通行列作成部１６１から共通行列を取得すると、取得した共通行列を用いて、所定文字数の同一の範囲内に出現する３連続ハッシュ値の数を算出する。
【００８８】
なお、３連続ハッシュ値とは、検査対象テキストと機密文書の中にそれぞれ所定文字数の範囲内に出現し、且つ、同じ並びの順序で連続して出現する３つのハッシュ値から組み合わされる組み合わせ情報の群をいうものとする。
【００８９】
ここで、３連続ハッシュ値について、図９−１を参照して説明する。図９−１は、３連続ハッシュ値の一例を示す図である。なお、図９−１では、検査対象テキストおよび機密文書が所定文字数の範囲内に、「会津」（ハッシュ値「５」）、「マイコン」（ハッシュ値「４」）、「半導体」（ハッシュ値「３」）の並びの順序でキーワードがあるものとする。また、説明の便宜上、共通行列が８行８列であるものとして説明する。
【００９０】
図９−１に示すように、文書の所定文字数の範囲内に、キーワードが「会津」（ハッシュ値「５」）、「マイコン」（ハッシュ値「４」）、「半導体」（ハッシュ値「３」）の並びの順序で連続して出現しているため、キーワードの対は、「会津」−「マイコン」、「会津」−「半導体」、「マイコン」−「半導体」となる。
【００９１】
そして、これらの行列要素は、それぞれ（４、５）、（３、５）および（３、４）となり、これらの行列要素に特定値「１」が設定される共通行列４００ｃを構成している。これらの行列要素を１つの３連続ハッシュ値という。
【００９２】
一般的に、類似文書であれば、所定文字数の範囲内にある連続した並びの３つのキーワードの数は多くなるため、３連続ハッシュ値の数も多くなる。そこで、３連続ハッシュ値数算出部１６４は、共通行列４００ｃを用いて、３連続ハッシュ値の数を算出して、後述する３連続ハッシュ値の数によって、類似文書であるか否かを判定する。
【００９３】
具体的には、３連続ハッシュ値数算出部１６４は、判定対象のキーワードから所定文字数の範囲内にある複数の他のキーワードを検索するために、共通行列の列ごとに特定値「１」の個数を算出する。また、３連続ハッシュ値数算出部１６４は、特定値「１」の個数が２以上ある列に対して特定値「１」がある行の位置を示すハッシュ値を取り出す。このハッシュ値が、判定対象のキーワードから所定文字数の範囲内にある複数の他のキーワードのハッシュ値となっている。
【００９４】
また、３連続ハッシュ値数算出部１６４は、取り出した複数のハッシュ値のうち互いに異なる２つのハッシュ値の組み合わせを行列要素として、その行列要素が特定値「１」の場合、所定文字数の範囲内に３連続ハッシュ値が１個あったことになり、３連続ハッシュ値の数を＋１加算する。
【００９５】
３連続ハッシュ値数判定部１６５は、３連続ハッシュ値数算出部１６４から３連続ハッシュ値の数を取得すると、取得した３連続ハッシュ値の数が所定値以上あるか否かを判定する。なお、所定値は、例えば「１」であるが、検査対象テキストと機密文書間の類似の可能性が認められる数値であれば良く、あらかじめ実験等で調べられ記憶部２０に記憶される。
【００９６】
３連続ハッシュ値数判定部１６５は、３連続ハッシュ値の数が所定値以上であると判定すると、機密文書と検査対象テキストとは類似していると判断し、文書間は類似している旨を類似判定部１７０に通知する。一方、３連続ハッシュ値数判定部１６５は、３連続ハッシュ値の数が所定値未満であると判定すると、検査対象テキストと機密文書とが類似していないと判断し、文書間に類似の可能性がない旨を類似判定部１７０に通知する。
【００９７】
なお、上述した３連続ハッシュ値数算出部１６４および３連続ハッシュ値数判定部１６５の処理が、検査対象テキストと機密文書との「類似性検査２」となる。
【００９８】
ここで、「類似性検査２」の類似性検査について、図９−２を参照して説明する。図９−２は、「類似性検査２」の類似性検査の一例を示す図である。図９−２に示すように、共通行列（Ｍ３）４００ｃの列ごとに特定値「１」の個数を算出して、「１」の個数が２以上ある列が５列目にあるため、特定値「１」がある行列要素（Ｃ１）の行の位置を示すハッシュ値を取り出すと「３」および「４」がある。
【００９９】
すなわち、ハッシュ値「３」および「４」が、ハッシュ値「５」を持つ判定対象のキーワードから所定文字数の範囲内にある異なる複数の他のキーワードのハッシュ値である。これにより、機密文書と検査対象テキストとでは、ハッシュ値「５」を持つキーワードの開始位置の同異に関わらず、所定文字数の範囲内に「５」→「４」および「５」→「３」の近接関係があることがわかる。
【０１００】
次に、取り出された複数のハッシュ値「３」および「４」を組み合わせた行列要素（３、４）または（４、３）のうち（３、４）（Ｃ２）が特定値「１」であるため、所定文字数の範囲内に、「４」→「３」の近接関係があることがわかる。
【０１０１】
すると、所定文字数の範囲内に、「５」→「４」→「３」の連続した並びがあることがわかる。したがって、３連続ハッシュ値が検索され、その個数は１となる。そして、３連続ハッシュ値数判定部１６５は、３連続ハッシュ値の数が所定値以上であるか否かを判定して、所定値が１である場合は、文書間は類似であると判断する。
【０１０２】
類似判定部１７０は、共通要素数判定部１６３および３連続ハッシュ値数判定部１６５から各種通知を取得すると、取得した通知に応じて、検査対象テキストと機密文書間が類似しているか否かを機密文書ごとに順次判定する。
【０１０３】
具体的には、類似判定部１７０は、共通要素数判定部１６３または３連続ハッシュ値数判定部１６５から文書間に類似の可能性がない旨を取得すると、類似を判断していない機密文書がある場合には、次の機密文書を選択する旨を共通行列作成部１６１に通知する。
【０１０４】
また、類似判定部１７０は、共通要素数判定部１６３または３連続ハッシュ値数判定部１６５から文書間に類似の可能性がない旨を取得すると、検査対象テキストとの類似を判断していない機密文書がない場合には、メールの送信要求をメール送信部１９０に通知する。一方、類似判定部１７０は、３連続ハッシュ値数判定部１６５から文書間は類似している旨を取得すると、メールの送信拒否要求をメール送信拒否部１８０に通知する。
【０１０５】
メール送信拒否部１８０は、類似判定部１７０からメールの送信拒否要求を取得すると、メール受信部１１０から取得したメールの送信をブロックする。
【０１０６】
メール送信部１９０は、特徴素行列追加部１４０または類似判定部１７０からメールの送信要求を取得すると、メール受信部１１０から取得したメールを、メールの送信先に送信する。
【０１０７】
なお、「類似性検査１」では、１つのキーワードに対して一意のハッシュ値が対応付けられることを前提として説明をした。ところが、互いに異なるキーワードのハッシュ値が［１／ハッシュ値の最大数］の確率で偶然に衝突することがある。
【０１０８】
この場合、「類似性検査１」では、検査対象テキストと検査文書との共通要素、すなわち、共通するハッシュ値の対を用いて文書間の類似を判断するため、文書間の類似について誤った判断をすることがある。そのため、所定文字数の範囲内にある３連続ハッシュ値を用いて文書間の類似を判断する「類似性検査２」が必要となるのである。
【０１０９】
この「類似性検査２」の必要性について、図９−３を参照して、説明する。図９−３は、類似性検査２の必要性を示す図である。図９−３に示すように、検査文書Ｔ１に含まれるキーワードと、検査文書Ｔ１と無関係な機密文書Ｔ３に含まれるキーワードと、が偶然同一のハッシュ値となることにより、検査文書Ｔ１と機密文書Ｔ３とが類似であると誤って判断されることがある。
【０１１０】
図９−３の例では、検査対象Ｔ１に含まれるキーワード「半導体」および機密文書Ｔ３に含まれるキーワード「釣り」がともにハッシュ値「３」を持つものとする。この場合、それぞれのキーワードの出現位置から所定文字数の範囲内に同じキーワード「三重」（ハッシュ値「１」）があると、それぞれの特徴素行列の行列要素（１、３）が特定値「１」に設定されることとなる。
【０１１１】
すると、共通行列の共通要素（１、３）が特定値「１」に設定されるため、共通要素数が＋１加算されてしまい、共通要素数の数によって文書間の類似を判断する「類似性検査１」だけでは、誤った類似判断をしてしまうことがある。そこで、「類似性検査２」では、文書間の類似性を確実に判断するために、キーワード「半導体」（ハッシュ値「３」）、「三重」（ハッシュ値「１」）、「先端」（ハッシュ値「２」）の並びについて、３−１、１−２、２−３の３つのハッシュ値の対（３連続ハッシュ値）があるか否かを検査する。
【０１１２】
もっとも、図９−３の例では、「半導体」と「釣り」のハッシュ値だけでなく、さらに「先端」と「真珠」のハッシュ値が偶然一致する場合もある。しかし、このように偶然に一致する確率は、１／（（ハッシュ値の最大数）×（ハッシュ値の最大数））であり非常に低いため、偶然に３連続ハッシュ値が一致してしまうことは確率的に非常に低いものと考えられる。
【０１１３】
また、キーワード「半導体」（ハッシュ値「３」）、「三重」（ハッシュ値「１」）、「先端」（ハッシュ値「２」）の並びについて、３−１、１−２、２−３の３つのハッシュ値の対が、所定文字数の範囲内になく、偶然、文書内の離れた位置にバラバラに存在する場合もある。この場合、誤って３連続ハッシュ値となり文書間が類似するものとみなされることもあるが、文書間のキーワードが一致していれば、文書間が類似するものとみなしても良い。
【０１１４】
［実施例１に係る文書検査装置の文書検査処理］
次に、実施例１に係る文書検査装置の文書検査処理を、図１０を参照して説明する。図１０は、実施例１に係る文書検査装置の文書検査処理の処理手順を示すフローチャートである。なお、特徴素行列（ＣＭ）は、行数をＭａｘＳ、列数をＭａｘＳとした２次元の正方行列であるものとする。
【０１１５】
まず、社内のクライアントＰＣから送信されたメール（Ｍ）が、メール受信部１１０によって受信される（Ｓ１１）。そして、メール受信部１１０は、受信したメール（Ｍ）からメール（Ｍ）本文のテキストとメール（Ｍ）に添付された添付ファイルに含まれるテキストとを検査対象テキスト（Ｄ）として抽出する（Ｓ１２）。そして、メール受信部１１０は、抽出した検査対象テキスト（Ｄ）を特徴素行列抽出部１２０に出力し、抽出したメール（Ｍ）本文を社内ドメイン判定部１３０に出力する。
【０１１６】
特徴素行列抽出部１２０は、メール受信部１１０によって出力された検査対象テキスト（Ｄ）から特徴素行列（ＣＭ）を抽出する（Ｓ１３）。そして、特徴素行列抽出部１２０は、抽出した特徴素行列を社内ドメイン判定部１３０に出力する。
【０１１７】
そして、特徴素行列抽出部１２０から特徴素行列を取得した社内ドメイン判定部１３０は、メール（Ｍ）本文に含まれている全ての送信先ドメインが社内ドメイン定義２３０に格納された社内ドメインに含まれているか否かを判定する（Ｓ１４）。
【０１１８】
社内ドメイン判定部１３０は、メール（Ｍ）本文に含まれている全ての送信先ドメインが社内ドメイン定義２３０に格納された社内ドメインに含まれていると判定する場合には（Ｓ１４Ｙｅｓ）、特徴素行列（ＣＭ）およびメール（Ｍ）本文を特徴素行列追加部１４０に出力する。
【０１１９】
そして、特徴素行列追加部１４０は、社内ドメイン判定部１３０からメール（Ｍ）本文を取得すると、取得したメール（Ｍ）本文からメール（Ｍ）が受信された日付、送信元および送信先を抽出する（Ｓ１５）。
【０１２０】
その後、特徴素行列追加部１４０は、社内ドメイン判定部１３０から特徴素行列（ＣＭ）を取得すると、取得した特徴素行列（ＣＭ）をシリアライズ部１５０によってシリアライズされたシリアライズ結果（ＣＭｓ）を取得する（Ｓ１６）。
【０１２１】
そして、特徴素行列追加部１４０は、メール（Ｍ）が受信された日付、送信元および送信先およびシリアライズ結果（ＣＭｓ）を１レコードとして、特徴素行列ＤＢ２４０に追加する（Ｓ１７）。その後、特徴素行列追加部１４０は、メールの送信要求をメール送信部１９０に出力する。
【０１２２】
一方、社内ドメイン判定部１３０は、メール（Ｍ）本文に含まれているいずれかの送信先ドメインが社内ドメイン定義２３０に格納された社内ドメインに含まれていないと判定する場合には（Ｓ１４Ｎｏ）、社外宛のドメインが含まれていると判断し、特徴素行列（ＣＭ）を共通行列作成部１６１に出力する。
【０１２３】
引き続き、共通行列作成部１６１は、社内ドメイン判定部１３０から特徴素行列（ＣＭ）を取得すると、検査対象テキスト（Ｄ）との類似判定がされていない機密文書に対するレコードを特徴素行列ＤＢ２４０から選択する。そして、共通行列作成部１６１は、選択したレコードから特徴素行列のシリアライズ（ＣＭｓ＿ｉ）を抽出する（Ｓ１８）。
【０１２４】
そして、共通行列作成部１６１は、抽出したシリアライズ（ＣＭｓ＿ｉ）を行列の形に復元して、特徴素行列（ＣＭ＿ｉ）を生成する（Ｓ１９）。
【０１２５】
その後、類似算出部１６０は、社内ドメイン判定部１３０から取得される検査対象テキスト（Ｄ）の特徴素行列（ＣＭ）と、共通行列作成部１６１によって生成された機密文書の特徴素行列（ＣＭ＿ｉ）と、の類似性を算出する（Ｓ２０）。
【０１２６】
そして、類似判定部１７０は、類似算出部１６０によって算出された類似性の結果に基づいて、検査対象テキスト（Ｄ）の特徴素行列（ＣＭ）と機密文書の特徴素行列（ＣＭ＿ｉ）とが類似しているか否かを判定する（Ｓ２１）。
【０１２７】
その結果、類似判定部１７０は、検査対象テキスト（Ｄ）の特徴素行列（ＣＭ）と機密文書に関する特徴素行列（ＣＭ＿ｉ）とが類似していると判定する場合には（Ｓ２１Ｙｅｓ）、メールの送信拒否要求をメール送信拒否部１８０に出力する。そして、類似判定部１７０からメールの送信拒否要求を取得したメール送信拒否部１８０は、検査対象テキスト（Ｄ）を含むメール（Ｍ）をブロックする（Ｓ２２）。
【０１２８】
一方、類似判定部１７０は、検査対象テキスト（Ｄ）の特徴素行列（ＣＭ）と機密文書に関する特徴素行列（ＣＭ＿ｉ）とが類似していないと判定する場合には（Ｓ２１Ｎｏ）、検査対象テキスト（Ｄ）と特徴素行列ＤＢ２４０に格納されている全機密文書との類似判定が終了したか否かを判定する（Ｓ２３）。
【０１２９】
そして、類似判定部１７０は、検査対象テキスト（Ｄ）と特徴素行列ＤＢ２４０に格納されている全機密文書との類似判定が終了していないと判定する場合には（Ｓ２３Ｎｏ）、検査対象テキスト（Ｄ）との類似判定がされていない機密文書との類似判定をさせるために、Ｓ１８に移行する。
【０１３０】
一方、類似判定部１７０は、検査対象テキスト（Ｄ）と特徴素行列ＤＢ２４０に格納されている全機密文書との類似判定が終了したと判定する場合には（Ｓ２３Ｙｅｓ）、全機密文書との類似性がないものと判断し、メールの送信要求をメール送信部１９０に出力する。そして、類似判定部１７０からメールの送信要求を取得したメール送信部１９０は、メール（Ｍ）を外部宛である送信先に送信する（Ｓ２４）。
【０１３１】
次に、図１０に示すＳ１３の処理手順について、図１１を用いて説明する。図１１は、実施例１に係る特徴素行列抽出部１２０の処理手順を示すフローチャートである。
【０１３２】
特徴素行列抽出部１２０により検査対象テキスト（Ｄ）がキーワード出現位置抽出部１２１に出力されると、キーワード出現位置抽出部１２１は、キーワードテーブル（ＫＴ）２１０および特徴素行列（ワーク行列２５０）（ＣＭ）を初期化する（Ｓ３１）。
【０１３３】
そして、キーワード出現位置抽出部１２１は、検査対象テキスト（Ｄ）のキーワードテーブル（ＫＴ)２１０を作成する（Ｓ３２）。
【０１３４】
引き続き、キーワード出現位置抽出部１２１によりキーワードテーブル（ＫＴ）２１０が作成された旨の通知がキーワード範囲内有無判定部１２３に出力されると、キーワード範囲内有無判定部１２３は、判定対象とするキーワード（ｋｗ＿ｉ）に対するレコードをキーワードテーブル（ＫＴ）２１０から選択する。そして、キーワード範囲内有無判定部１２３は、選択されたレコードから判定対象のキーワード（ｋｗ＿ｉ）の出現位置（ｐｏｓ＿ｉ）およびハッシュ値（Ｈ＿ｉ）を抽出する（Ｓ３３）。
【０１３５】
また、キーワード範囲内有無判定部１２３は、判定対象のキーワードより出現位置が後方の他のキーワード（ｋｗ＿ｊ）に対するレコードをキーワードテーブル（ＫＴ）から選択する。そして、キーワード範囲内有無判定部１２３は、選択したレコードから他のキーワード（ｋｗ＿ｊ）の出現位置（ｐｏｓ＿ｊ）およびハッシュ値（Ｈ＿ｊ）を抽出する（Ｓ３４）。
【０１３６】
そして、キーワード範囲内有無判定部１２３は、他のキーワード（ｋｗ＿ｊ）の出現位置（ｐｏｓ＿ｊ）が判定対象のキーワードの出現位置（ｐｏｓ＿ｉ）から所定文字数の範囲内であるか否かを判定する（Ｓ３５）。
【０１３７】
その結果、キーワード範囲内有無判定部１２３は、他のキーワード（ｋｗ＿ｊ）の出現位置（ｐｏｓ＿ｊ）が判定対象のキーワードの出現位置（ｐｏｓ＿ｉ）から所定文字数の範囲内にあると判定する場合には（Ｓ３５Ｙｅｓ）、判定対象のキーワード（ｋｗ＿ｉ）のハッシュ値（Ｈｉ）を列、他のキーワード（ｋｗ＿ｊ）のハッシュ値（Ｈｊ）を行に対応付けた行列要素を特徴素行列作成部１２４に出力する。そして、特徴素行列作成部１２４は、特徴素行列（ＣＭ）の行列要素を特定値「１」に設定する（Ｓ３６）。
【０１３８】
そして、特徴素行列作成部１２４は、他のキーワード（ｋｗ＿ｊ）に対するレコードがキーワードテーブル（ＫＴ）２１０の最大レコードであるか否かを判定し（Ｓ３７）、最大レコードでないと判定する場合には（Ｓ３７Ｎｏ）、次の他のキーワードを含むレコードを選択させるためにＳ３４に移行する。
【０１３９】
一方、特徴素行列作成部１２４は、他のキーワード（ｋｗ＿ｊ）の出現位置（ｐｏｓ＿ｊ）が判定対象のキーワードの出現位置（ｐｏｓ＿ｉ）から所定文字数の範囲内にないと判定する場合（Ｓ３５Ｎｏ）、または、他のキーワード（ｋｗ＿ｊ）に対するレコードが最大レコードであると判定する場合には（Ｓ３７Ｙｅｓ）、判定対象のキーワード（ｋｗ＿ｉ）に対するレコードがキーワードテーブル（ＫＴ）２１０の最大レコードであるか否かを判定する（Ｓ３８）。
【０１４０】
そして、特徴素行列作成部１２４は、判定対象のキーワード（ｋｗ＿ｉ）に対するレコードがキーワードテーブル（ＫＴ）２１０の最大レコードでないと判定する場合には（Ｓ３８Ｎｏ）、次の判定対象のキーワードを含むレコードを選択させるためにＳ３３に移行する。
【０１４１】
一方、判定対象のキーワード（ｋｗ＿ｉ）に対するレコードがキーワードテーブル（ＫＴ）２１０の最大レコードであると判定する場合には（Ｓ３８Ｙｅｓ）、特徴素行列作成部１２４は、特徴素行列（Ｄ）の生成を完了して、特徴素行列（Ｄ）を特徴素行列抽出部１２０に返却する（Ｓ３９）。
【０１４２】
次に、図１１に示すＳ３２の処理手順について、図１２を用いて説明する。図１２は、実施例１に係るキーワードテーブル作成処理の処理手順を示すフローチャートである。
【０１４３】
まず、キーワード出現位置抽出部１２１は、検査対象テキスト（Ｄ）を単語に分割する（Ｓ４１）。なお、キーワード出現位置抽出部１２１は、検査対象テキスト（Ｄ）を、言語で意味を持つ最小単位の文字列である単語に分割すれば良く、例えば形態素解析を行っても良い。
【０１４４】
そして、キーワード出現位置抽出部１２１は、分割したそれぞれの単語をキーワードとして、１つのキーワード（ｋｗ）を選択して（Ｓ４２）、選択したキーワード（ｋｗ）が不要語リスト２２０に含まれているか否かを判定する（Ｓ４３）。
【０１４５】
キーワード出現位置抽出部１２１が、キーワード（ｋｗ）が不要語リスト２２０に含まれていないと判定する場合には（Ｓ４３Ｎｏ）、検査対象テキスト（Ｄ）の先頭からのキーワード（ｋｗ）の出現位置（ｐｏｓ）を取得する（Ｓ４４）。
【０１４６】
また、キーワード出現位置抽出部１２１は、キーワード（ｋｗ）をハッシュ値算出部１２２に出力して、出力したキーワード（ｋｗ）に対するハッシュ値（Ｈ＿ｋｗ）をハッシュ値算出部１２２から取得する（Ｓ４５）。
【０１４７】
そして、キーワード出現位置抽出部１２１は、選択したキーワード（ｋｗ）、出現位置（ｐｏｓ）およびハッシュ値（Ｈ＿ｋｗ）を１つのレコードとして、キーワードテーブル（ＫＴ）２１０に追加する（Ｓ４６）。
【０１４８】
そして、キーワード出現位置抽出部１２１が、選択したキーワード（ｋｗ）をキーワードテーブル（ＫＴ）２１０に追加した後、または、キーワード（ｋｗ）が不要語リスト２２０に含まれていると判定した場合には（Ｓ４３Ｙｅｓ）、すべての単語が不要語判定を終了したか否かを判定する（Ｓ４７）。
【０１４９】
その結果、キーワード出現位置抽出部１２１が、すべての単語が不要語判定を終了していないと判定した場合には（Ｓ４７Ｎｏ）、次の単語を選択するためにＳ４２に移行する。一方、すべての単語が不要語判定を終了したと判定した場合には（Ｓ４７Ｙｅｓ）、キーワードテーブル（ＫＴ）２１０の生成を完了する（Ｓ４８）。
【０１５０】
次に、図１２に示すＳ４５の処理手順について、図１３を用いて説明する。図１３は、実施例１に係るハッシュ値算出部１２２の処理手順を示すフローチャートである。なお、図１３の例では、ハッシュ値算出部１２２は、ハッシュ値の算出方法として、キーワードを構成する文字のすべての文字コードを加算した値をハッシュ値の最大数で除算した結果、余りの値に１を加算する方法を採用するものとする。
【０１５１】
まず、キーワード出現位置抽出部１２１によりキーワード（ｋｗ）がハッシュ値算出部１２２に出力されると、ハッシュ値算出部１２２は、キーワード（ｋｗ）を文字単位（例えば、ｃ１、ｃ２、ｃ３、・・・、ｃＭ）に分割する（Ｓ５１）。
【０１５２】
そして、ハッシュ値算出部１２２は、文字コードを加算した結果値を示すカウント（Ｃ）を初期化するために０を設定する（Ｓ５２）。
【０１５３】
次に、ハッシュ値算出部１２２は、分割した文字のうち、１つの文字（ｃｉ）を選択する（Ｓ５３）。
【０１５４】
引き続き、ハッシュ値算出部１２２は、選択した文字（ｃｉ）の文字コードを取得する（Ｓ５４）。
【０１５５】
そして、ハッシュ値算出部１２２は、取得した文字コードをカウント（Ｃ）に加算する（Ｓ５５）。
【０１５６】
その後、ハッシュ値算出部１２２は、分割した全ての文字（ｃｉ（ｉ＝１〜Ｍ））に対する文字コードを加算したか否かを判定する（Ｓ５６）。そして、全ての文字に対する文字コードを加算していないと判定した場合には（Ｓ５６Ｎｏ）、次の文字を選択するために、Ｓ５３に移行する。
【０１５７】
一方、全ての文字に対する文字コードを加算したと判定した場合には（Ｓ５６Ｙｅｓ）、ハッシュ値算出部１２２は、カウント（Ｃ）をハッシュ値の最大数（ＭａｘＳ）で除算して、余りの値に＋１を加算した値を算出する（Ｓ５７）。その結果、算出された値がキーワード（ｋｗ）のハッシュ値となる。そして、ハッシュ値算出部１２２は、この算出したハッシュ値をキーワード出現位置抽出部１２１に返却する。
【０１５８】
次に、図１０に示すＳ２０の処理手順について、図１４を用いて説明する。図１４は、実施例１に係る類似算出部１６０の処理手順を示すフローチャートである。
【０１５９】
まず、共通行列作成部１６１は、社内ドメイン判定部１３０から取得される検査対象テキスト（Ｄ）の特徴素行列（Ｍｃ１）と、生成した機密文書の特徴素行列（Ｍｃ２）と、の論理積を算出して、共通行列（ＭＡ）を作成して（Ｓ６１）、作成した共通行列（ＭＡ）を共通要素数算出部１６２に出力する。
【０１６０】
次に、共通要素数算出部１６２は、取得した共通行列（ＭＡ）の各行列要素の中に含まれる共通要素である特定値「１」の個数（共通要素数）を数える（Ｓ６２）。その結果、共通要素数は、検査対象テキスト（Ｄ）および機密文書の共通するキーワードの対の数であるため、検査対象テキスト（Ｄ）および機密文書の共通するハッシュ値の対の数が決定されることになる。
【０１６１】
そして、共通要素数判定部１６３は、検査対象テキスト（Ｄ）および機密文書の共通するハッシュ値の対の数が所定値以上であるか否かを判定する（Ｓ６３）。そして、共通要素数判定部１６３は、ハッシュ値の数が所定値以上であると判定する場合には（Ｓ６３Ｙｅｓ）、機密文書と検査対象テキスト間の類似の可能性があるものと判断し、文書間に類似の可能性がある旨を３連続ハッシュ値数算出部１６４に出力する。一方、共通要素数判定部１６３は、ハッシュ値の数が所定値未満であると判定する場合には（Ｓ６３Ｎｏ）、検査対象テキスト（Ｄ）と機密文書間の類似の可能性がないものと判断し、文書間に類似の可能性がない旨を類似判定部１７０に通知する（Ｓ６６）。
【０１６２】
共通要素数判定部１６３から文書間に類似の可能性がある旨を取得した３連続ハッシュ値数算出部１６４は、共通行列（ＭＡ）に含まれる３連続ハッシュ値の数を数える（Ｓ６４）。
【０１６３】
そして、３連続ハッシュ値数判定部１６５は、３連続ハッシュ値の数が所定値以上であるか否かを判定する（Ｓ６５）。そして、３連続ハッシュ値数判定部１６５は、３連続ハッシュ値の数が所定値以上であると判定する場合には（Ｓ６５Ｙｅｓ）、文書間は類似している旨を類似判定部１７０に通知する（Ｓ６７）。
【０１６４】
一方、３連続ハッシュ値数判定部１６５は、３連続ハッシュ値の数が所定値未満であると判定する場合には（Ｓ６５Ｎｏ）、検査対象テキスト（Ｄ）と機密文書間の類似の可能性がないものと判断し、文書間に類似の可能性がない旨を類似判定部１７０に通知する（Ｓ６６）。
【０１６５】
次に、図１４に示すＳ６４の処理手順について、図１５を用いて説明する。図１５は、実施例１に係る３連続ハッシュ値数算出部１６４の処理手順を示すフローチャートである。
【０１６６】
まず、３連続ハッシュ値数算出部１６４は、３連続ハッシュ値数を示すカウント（Ｃｓｑ）を初期化するためにカウント（Ｃｓｑ）に０を設定する（Ｓ７１）とともに、共通行列（ＭＡ）の列の位置を示すｉに１を設定する（Ｓ７２）。なお、ｉによって示される列の位置（ｉ列）とは、判定対象のキーワードのハッシュ値と一致するものである。
【０１６７】
そして、３連続ハッシュ値数算出部１６４は、共通行列（ＭＡ）からｉ列に含まれている特定値「１」がある行の位置（例えば、ｐ１、ｐ２、ｐ３、・・・、ｐＭ）を取得する（Ｓ７３）。なお、行の位置は、判定対象のキーワードと組み合わされる他のキーワードのハッシュ値と一致するものである。
【０１６８】
引き続き、３連続ハッシュ値数算出部１６４は、ｉ列に含まれている特定値「１」の個数が２以上であるか否かを判定する（Ｓ７４）。
【０１６９】
そして、３連続ハッシュ値数算出部１６４は、特定値「１」の個数が２以上であると判定する場合には（Ｓ７４Ｙｅｓ）、判定対象のキーワードと他のキーワードとのハッシュ値の対の数が２以上あると判断し、３連続ハッシュ値であるか否かを判定するために、取得した行の位置を指すインデックスｊに１を設定する（Ｓ７５）。
【０１７０】
そして、３連続ハッシュ値数算出部１６４は、インデックスｊが指す行の位置（ｐｊ）を選択する（Ｓ７６）。また、３連続ハッシュ値数算出部１６４は、インデックスｋにｊ＋１を設定して（Ｓ７７）、インデックスｋが指す行の位置（ｐｋ）を選択する（Ｓ７８）。
【０１７１】
そして、３連続ハッシュ値数算出部１６４は、インデックスｊが指す行の位置（ｐｊ）を行、インデックスｋが指す行の位置（ｐｋ）を列とする共通行列（ＭＡ）の行列要素（ｐｊ、ｐｋ）が特定値「１」であるか否かを判定する（Ｓ７９）。
【０１７２】
そして、３連続ハッシュ値数算出部１６４は、行列要素（ｐｊ、ｐｋ）が特定値「１」であると判定する場合には（Ｓ７９Ｙｅｓ）、同一の判定対象に対する２つの他のキーワード同士もハッシュ値の対となっているため３連続ハッシュ値と判断し、カウント（Ｃｓｑ）に＋１加算する（Ｓ８０）。
【０１７３】
３連続ハッシュ値数算出部１６４は、カウント（Ｃｓｑ）に＋１加算した後、または、行列要素（ｐｊ，ｐｋ）が特定値「１」でないと判定する場合には（Ｓ７９Ｎｏ）、インデックスｊが指す行の位置（ｐｊ）を列、インデックスｋが指す行の位置（ｐｋ）を行とする共通行列（ＭＡ）の行列要素（ｐｋ、ｐｊ）が特定値「１」であるか否かを判定する（Ｓ８１）。
【０１７４】
そして、３連続ハッシュ値数算出部１６４は、行列要素（ｐｋ，ｐｊ）が特定値「１」であると判定する場合には（Ｓ８１Ｙｅｓ）、同一の判定対象に対する２つの他のキーワード同士もハッシュ値の対となっているため３連続ハッシュ値と判断し、カウント（Ｃｓｑ）に＋１加算する（Ｓ８２）。
【０１７５】
３連続ハッシュ値数算出部１６４は、カウント（Ｃｓｑ）に＋１加算した後、または、行列要素（ｐｋ，ｐｊ）が特定値「１」でないと判定する場合には（Ｓ８１Ｎｏ）、インデックスｋを＋１加算して（Ｓ８３）、インデックスｋが、取得した行の位置の最大数（Ｍ）以下であるか否かを判定する（Ｓ８４）。
【０１７６】
そして、３連続ハッシュ値数算出部１６４は、インデックスｋが、取得した行の位置の最大数（Ｍ）以下であると判断する場合には（Ｓ８４Ｙｅｓ）、次の行の位置を選択するためにＳ７８に移行する。
【０１７７】
一方、３連続ハッシュ値数算出部１６４は、インデックスｋが、取得した行の位置の最大数（Ｍ）より大きいと判断する場合には（Ｓ８４Ｎｏ）、インデックスｊを+１加算して（Ｓ８５）、インデックスｊが、取得した行の位置の最大数（Ｍ）より小さいか否かを判定する（Ｓ８６）。
【０１７８】
そして、３連続ハッシュ値数算出部１６４は、インデックスｊが、取得した行の位置の最大数（Ｍ）より小さいと判断する場合には（Ｓ８６Ｙｅｓ）、次の行の位置を選択するためにＳ７６に移行する。
【０１７９】
一方、３連続ハッシュ値数算出部１６４は、インデックスｊが、取得した行の位置の最大数（Ｍ）以上であると判断する場合には（Ｓ８６Ｎｏ）、インデックスｉを＋１加算して（Ｓ８７）、列の位置ｉが、共通行列ＭＡの列の最大数（ＭａｘＳ）以下であるか否かを判定する（Ｓ８８）。
【０１８０】
そして、３連続ハッシュ値数算出部１６４は、列の位置ｉが、共通行列ＭＡの列の最大数（ＭａｘＳ）以下であると判断する場合には（Ｓ８８Ｙｅｓ）、次の列に対して３連続ハッシュ値の判断を行うためにＳ７３に移行する。
【０１８１】
一方、３連続ハッシュ値数算出部１６４は、列の位置ｉが、共通行列ＭＡの列の最大数（ＭａｘＳ）より大きいと判断する場合には（Ｓ８８Ｎｏ）、３連続ハッシュ値数は算出されたため、カウント（Ｃｓｑ）の算出を完了する（Ｓ８９）。
【０１８２】
次に、図１０に示すＳ１６の処理手順について、図１６を用いて説明する。図１６は、実施例１に係るシリアライズ部１５０の処理手順を示すフローチャートである。
【０１８３】
まず、特徴素行列追加部１４０により特徴素行列（ＣＭ）がシリアライズ部１５０に出力されると、シリアライズ部１５０は、縮退ベクトル（Ｖ）を初期化する（Ｓ９１）。具体的には、シリアライズ部１５０は、特徴素行列（ＣＭ）が行数ＭａｘＳ且つ列数ＭａｘＳの正方行列であるため、例えばＭａｘＳビットの縮退ベクトル（Ｖ）を全て「０」に設定する。
【０１８４】
また、シリアライズ部１５０は、インデックスｉに１を設定する（Ｓ９２）。
【０１８５】
次に、シリアライズ部１５０は、特徴素行列（ＣＭ）のｉ番目の行またはｉ番目の列に特定値「１」が含まれているか否かを判定する（Ｓ９３）。
【０１８６】
そして、シリアライズ部１５０は、特徴素行列（ＣＭ）のｉ番目の行またはｉ番目の列に特定値「１」が含まれていると判定する場合には（Ｓ９３Ｙｅｓ）、縮退ベクトル（Ｖ）のｉ番目の要素を「１」に設定する（Ｓ９４）。
【０１８７】
シリアライズ部１５０は、縮退ベクトル（Ｖ）のｉ番目の要素を「１」に設定した後、または、特徴素行列（ＣＭ）のｉ番目の行およびｉ番目の列に特定値「１」が含まれていないと判定する場合には（Ｓ９３Ｎｏ）、インデックスｉを＋１加算する（Ｓ９５）。
【０１８８】
その後、シリアライズ部１５０は、インデックスｉが行数および列数の最大値ＭａｘＳ以下であるか否かを判定する（Ｓ９６）。
【０１８９】
そして、シリアライズ部１５０は、インデックスｉがＭａｘＳ以下であると判定する場合には（Ｓ９６Ｙｅｓ）、次のｉ番目の行またはｉ番目の列に特定値「１」が含まれているか否かを判定するためにＳ９３に移行する。
【０１９０】
一方、シリアライズ部１５０は、インデックスｉがＭａｘＳより大きいと判定する場合には（Ｓ９６Ｎｏ）、縮退ベクトル（Ｖ）をシリアライズするために、縮退ベクトル（Ｖ）の開始位置から４要素ずつを１６進に変換して、シリアライズした結果（Ｓ１）を算出する（Ｓ９７）。
【０１９１】
引き続き、シリアライズ部１５０は、縮退ベクトル（Ｖ）の要素が「１」である位置の行および列を特徴素行列（ＣＭ）から取り出して、縮退行列（ＣＭ＿Ｒ）を作成する（Ｓ９８）。
【０１９２】
そして、シリアライズ部１５０は、作成した縮退行列（ＣＭ＿Ｒ）の各行をつなげたベクトル（Ｖ２）を作成する（Ｓ９９）。
【０１９３】
そして、シリアライズ部１５０は、縮退行列（ＣＭ＿Ｒ）をシリアライズするために、作成したベクトル（Ｖ２）の開始位置から４要素ずつを１６進に変換して、シリアライズした結果（Ｓ２）を算出する（Ｓ１００）。
【０１９４】
そして、シリアライズ部１５０は、縮退ベクトル（Ｖ）をシリアライズした結果（Ｓ１）と縮退行列（ＣＭ＿Ｒ）をシリアライズした結果（Ｓ２）とから特徴素行列（ＣＭ）のシリアライズ値（Ｓ１／Ｓ２）を取得して、取得したシリアライズ値を特徴素行列追加部１４０に返却する（Ｓ１０１）。
【０１９５】
以上のように本実施例１によれば、文書検査装置１は、文書の類似性を判定する際に比較対象となる機密文書を含む検査対象テキストからキーワードおよびそのキーワードの出現位置を抽出する。そして、文書検査装置１は、抽出されたキーワードの出現位置ごとのキーワードを判定対象として、その判定対象のキーワード前後に関わる所定文字数の範囲内に抽出された他のキーワードがあるか否かを判定する。さらに、文書検査装置１は、他のキーワードがあると判定するとき、判定対象のキーワードおよび他のキーワードを各キーワードの出現位置の前後情報に対応付けて組み合わせたキーワードの対を生成する。そして、文書検査装置１は、生成された検査対象テキストの複数のキーワードの対と、機密文書の複数のキーワードの対と、を比較して、検査対象テキストの複数のキーワードの対のうち、機密文書のキーワードの対と一致するキーワードの対の数が類似判定数以上であるか否かを判定して、その判定結果に基づき検査対象テキストと機密文書との類似性を判定する。
【０１９６】
かかる構成によれば、文書検査装置１は、例えば検査対象テキストが機密文書の一部を部分的にコピーしたものや一部変更したものであっても、コピーした部分のキーワードの対が共通するため、所定文字数の範囲内にある共通するキーワードの対によって文書間の類似性を判定することができることとなり、検査対象テキストと機密文書との類似性を高精度に判断することができる。
【０１９７】
また、文書検査装置１は、例えば検査対象テキストが機密文書の文の「てにをは」を変更したり、いくつかのキーワードを削除したり、構造を変えて編集した場合であっても、キーワードの出現位置は変わっても多くのキーワードの対は共通するため、所定文字数の範囲内にある共通するキーワードの対によって文書間の類似性を判定することができることとなり、検査対象テキストと機密文書との類似性を高精度に判断することができる。
【０１９８】
その結果、文書検査装置１は、検査対象テキストが例えばメール等のような送信対象文書の場合、送信対象文書と機密文書との類似性があると判断したとき、送信対象文書を外部に送信することを拒否すれば、機密漏えいを防止することができる。
【０１９９】
また、文書検査装置１は、検査対象テキストが外部に送信する送信対象文書の場合、機密文書から作成された機密性の高い送信対象文書を誤って送信することを防止することができる。
【０２００】
また、複数のキーワードが同一のハッシュ値を持つように特徴素行列を構成した場合、特徴素行列の情報からは元の機密文書のキーワードの対を復元することはできないため、例え特徴素行列ＤＢ２４０の内容が外部に漏えいしたとしても、元の機密文書に含まれる個人情報などの内容が漏えいしない。
【０２０１】
なお、上記実施例１では、検査対象テキストおよび機密文書の各特徴素行列におけるキーワードの対に対応する行列要素を、特定値「１」に設定して、類似性検査１によって、２つの特徴素行列に共に特定値「１」が設定されている同一の行列要素の数が所定値以上であれば文書間に類似の可能性があるものとして説明した。本発明は、これに限定されるものではなく、検査対象テキストおよび機密文書の各特徴素行列におけるキーワードの対に対応する行列要素を、対となったキーワード間の文字列数に設定して、類似性検査１によって、２つの特徴素行列に共に同値が設定されている同一の行列要素の数が所定値以上であれば文書間に類似の可能性があるものとしても良い。これにより、機密文書を流用する場合には、機密文書から検査対象テキストにキーワード間の文字列数を変更しないでそのまま部分的にコピーすることが多いため、文書検査装置１は、共通するキーワードの対が共通する文の中に含まれている可能性を高い確率で検知することができ、類似性検査１によって文書間の類似性をさらに高精度に判断することができる。
【０２０２】
また、検査対象テキストおよび機密文書の各特徴素行列におけるキーワードの対に対応する行列要素を、各キーワードの対の出現個数に設定して、類似性検査１によって、２つの特徴素行列の同一の行列要素が共に１以上の行列要素について、検査対象テキスト側の行列要素の値の和が所定値以上であれば文書間に類似の可能性があるものとしても良い。これにより、機密文書を流用する場合には、機密文書から検査対象テキストに部分的に何度もコピーしたり改訂したりすることが多いため、文書検査装置１は、共通するキーワードの対を用いて編集されている可能性を高い確率で検知することができ、類似性検査１によって文書間の類似性をさらに高精度に判断することができる。
【実施例２】
【０２０３】
ところで、実施例１に係る文書検査装置１では、検査対象テキストと機密文書との共通するハッシュ値の対の数が所定値以上であるか否かを判定することにより、双方の文書の類似性を判断した（「類似性検査１」）。さらに、文書検査装置１では、「類似性検査１」によって類似の可能性があると判断した場合には、３連続ハッシュ値の数が所定値以上であるか否かを判定することにより、双方の文書の類似性を判断した（「類似性検査２」）。しかしながら、文書検査装置１は、これに限定されるものではなく、「類似性検査１」によって類似の可能性があると判断した場合には、検査対象テキストの中の機密文書との類似箇所を特定するようにしても良い。
【０２０４】
［実施例２に係る文書検査装置の構成］
そこで、実施例２では、文書検査装置２が、「類似性検査１」によって類似の可能性があると判断した場合には、検査対象テキストの中の機密文書との類似箇所を特定する場合を説明する。図１７は、実施例２に係る文書検査装置２の構成を示す機能ブロック図である。なお、図２に示す文書検査装置１と同一の構成については同一符号を示すことで、その重複する構成および動作の説明について省略する。実施例１と実施例２とが異なるところは、類似算出部１６０内の３連続ハッシュ値数算出部１６４および３連続ハッシュ値数判定部１６５の代わりに、類似箇所判定部３６４および類似箇所特定部３６５を追加した点にある。さらに、実施例１と実施例２とが異なるところは、ハッシュ値算出部１２２をハッシュ値算出部３２２へ変更し、キーワードテーブル２１０の構成内容を変更し、キーワードテーブル４１とした点にある。
【０２０５】
キーワードテーブル４１０のデータ構造の一例について図１８を参照して説明する。図１８は、実施例２に係るキーワードテーブル４１０のデータ構造の一例を示す図である。図１８に示すように、キーワードテーブル４１０は、出現位置４１０ｃ毎に、ワード位置４１０ａ、キーワード４１０ｂ、ハッシュ値４１０ｄおよび類似度４１０ｅを対応付けて記憶する。ワード位置４１０ａとは、検査対象テキスト内に出現するキーワード４１０ｂの出現位置４１０ｃの最前方から連番で割り当てられた数値である。例えば、キーワード４１０ｂ「Ａ」、「Ｂ」および「Ｃ」の各ワード位置は、出現位置４１０ｃの最前方からそれぞれ「１」、「２」、「２２」と割り当てられる。
【０２０６】
類似度４１０ｅは、対応するキーワードが検査対象テキストの中で機密文書と類似する類似箇所に含まれるか否かを示す。例えば、類似度４１０ｅには、対応するキーワードが検査対象テキストの中で機密文書との類似箇所に含まれる場合には、類似箇所を示す「１」が設定される。一方、対応するキーワードが検査対象テキストの中で機密文書との類似箇所に含まれない場合には、非類似箇所を示す「０」が設定される。
【０２０７】
ハッシュ値算出部３２２は、キーワード出現位置抽出部１２１からキーワードを取得すると、取得したキーワードからハッシュ値を算出し、算出したハッシュ値をキーワード出現位置抽出部１２１に出力する。具体的には、ハッシュ値算出部３２２は、キーワードを構成する全ての文字の文字コードのうち、キーワードの開始桁にある文字と最終桁にある文字の各文字コードを乗算する。そして、ハッシュ値算出部３２２は、乗算した値に開始桁と最終桁を除外した残りの桁にある文字の文字コードを加算する。さらに、ハッシュ値算出部３２２は、加算した値をハッシュ値の最大数で除算し、その除算結果の剰余値に１を加算した値を、キーワード出現位置抽出部１２１から取得したキーワードのハッシュ値とする。
【０２０８】
類似箇所判定部３６４は、共通要素数判定部１６３によって共通要素数が所定値以上であると判定されたとき、検査対象テキストの中でキーワードの対（ハッシュ値の対）に含まれるキーワードの出現密度が基準値より高いか否かを判定する。具体的には、類似箇所判定部３６４は、共通行列作成部１６１から共通行列を取得すると、取得した共通行列からキーワードの対（ハッシュ値の対）を抽出する。また、類似箇所判定部３６４は、抽出した全てのキーワードの対（ハッシュ値の対）に該当するキーワードのワード位置４１０ａをキーワードテーブル４１０から抽出し、一時的にメモリ領域（図示せず）に保持する。
【０２０９】
例えば、共通行列には、ハッシュ値の対を示す行列要素（５、１４）に特定値「１」が設定されているとする。類似箇所判定部３６４は、この共通行列から特定値「１」が設定されている行列要素（５、１４）を抽出する。すなわち、類似箇所判定部３６４は、ハッシュ値「５」と「１４」からなるハッシュ値の対を抽出する。そして、類似箇所判定部３６４は、２つのハッシュ値「５」および「１４」に対応する各キーワードの出現位置４１０ｃが所定文字数（例えば「１００」）の範囲内にあるワード位置４１０ａをキーワードテーブル４１０から探索する。ここでは、ハッシュ値「５」および「１４」に対応するキーワードの出現位置４１０ｃがそれぞれ「１３５」、「１６３」であるとする。類似箇所判定部３６４は、各キーワードの出現位置４１０ｃが「１００」文字数の範囲内にあるので、探索結果としてワード位置４１０ａ「２２」、「２４」を取得する。そして、類似箇所判定部３６４は、探索したワード位置４１０ａである「２２」、「２４」をメモリ領域に保持する。
【０２１０】
類似箇所判定部３６４は、検査対象テキストに含まれる連続する所定数のキーワードを判定箇所とし、当該判定箇所の中に、キーワードの対（ハッシュ値の対）に含まれるキーワードの数が基準値以上であるか否かを判定する。さらに具体的には、類似箇所判定部３６４は、キーワードテーブル４１０に記憶された連続する所定数のワード位置４１０ａを判定箇所とする。そして、類似箇所判定部３６４は、この判定箇所の中に、メモリ領域に保持されたワード位置と一致するワード位置が基準値以上あるか否かを判定する。すなわち、類似箇所判定部３６４は、判定箇所の中に、キーワードの対（ハッシュ値の対）に該当するワード位置が基準値以上あるか否かを判定する。
【０２１１】
類似箇所判定部３６４は、後述する類似箇所特定部３６５によって判定箇所を類似箇所として特定されたとき、特定された類似箇所の最後のワード位置４１０ａより後方のワード位置であってキーワードの対に含まれる最初のキーワードのワード位置を求める。そして、類似箇所判定部３６４は、求めたワード位置に至るまでの連続する所定数のワード位置を次の判定箇所とする。そして、類似箇所判定部３６４は、この判定箇所の中に、メモリ領域に保持されたワード位置と一致するワード位置が基準値以上あるか否かを判定する。
【０２１２】
一方、類似箇所判定部３６４は、類似箇所特定部３６５によって判定箇所を類似箇所として特定されなかったとき、１つ後方のキーワードのワード位置を求める。そして、類似箇所判定部３６４は、求めたワード位置に至るまでの連続する所定数のワード位置を次の判定箇所とする。そして、類似箇所判定部３６４は、この判定箇所の中に、メモリ領域に保持されたワード位置と一致するワード位置が基準値以上あるか否かを判定する。なお、類似箇所判定部３６４は、類似箇所特定部３６５によって判定箇所を類似箇所として特定されたときであっても、１つ後方のキーワードのワード位置に至るまでの所定数のワード位置を次の判定箇所としても良い。
【０２１３】
類似箇所特定部３６５は、類似箇所判定部３６４によって検査対象テキストの中でキーワードの対（ハッシュ値の対）に含まれるキーワードの出現密度が基準値より高いと判定されたとき、出現密度が高いと判定された箇所を類似箇所として特定する。具体的には、類似箇所特定部３６５は、キーワードテーブル４１０に記憶された連続する所定数のワード位置４１０ａ（判定箇所）の中に、メモリ領域に保持されたキーワードの対（ハッシュ値の対）のワード位置の数が基準値以上であるとき、その判定箇所を特定する。かかる特定された判定箇所が、検査対象テキスト内の機密文書と類似する類似箇所（以降、「類似ブロック」と同義）となる。そして、類似箇所特定部３６５は、類似ブロックに含まれるワード位置に対応する、キーワードテーブル４１０の類似度４１０ｅに「１」を格納する。さらに、類似箇所特定部３６５は、検査対象テキストと機密文書との文書間は類似している旨の文書類似メッセージを類似判定部１７０に通知する。
【０２１４】
一方、類似箇所特定部３６５は、判定箇所の中に、メモリ領域に保持されたキーワードの対のワード位置の数が基準値未満であるとき、その判定箇所を「非類似ブロック」とする。そして、類似箇所特定部３６５は、検査対象テキストと機密文書との文書間に類似の可能性がない旨の文書非類似メッセージを類似判定部１７０に通知する。
【０２１５】
ここで、類似箇所特定方法について、図１９を参照しながら説明する。図１９は、実施例２に係る類似箇所特定方法の一例を示す図である。図１９に示すように、検査対象テキスト内のキーワードが表され、これらキーワードのワード位置が昇順に表されている。なお、中黒のキーワードは、共通行列から抽出されたキーワードの対（ハッシュ値の対）のどちらか一方のキーワードを示す。また、矢印で示される２つのキーワードは、キーワードの対（ハッシュ値の対）を指す。
【０２１６】
まず、類似箇所判定部３６４は、検査対象テキスト内のワード位置「１」から連続する所定数のキーワード（判定箇所）の中に、キーワードの対（ハッシュ値の対）に含まれるキーワードの数が基準値以上であるか否かを判定する。なお、説明の便宜上、図１９の説明では、所定数を「５」、基準値を「３」とする。類似箇所判定部３６４は、検査対象テキスト内のワード位置「１」から「５」までの連続するキーワードの中に、キーワードの対に含まれるキーワードの数が２個しかないので、当該数が「３」以上でないと判定する。そして、類似箇所特定部３６５は、ワード位置「１」から「５」までを非類似ブロックとする。
【０２１７】
また、類似箇所判定部３６４は、検査対象テキスト内のワード位置「２」から連続する「５」個のキーワードの中に、キーワードの対（ハッシュ値の対）に含まれるキーワードの数が「３」個以上であるか否かを判定する。しかしながら、検査対象テキスト内のワード位置「２」から「６」までの連続するキーワードの中に、キーワードの対に含まれるキーワードの数が１個しかないので、類似箇所判定部３６４は、当該数が「３」個以上でないと判定する。そして、類似箇所特定部３６５は、ワード位置「２」から「６」までを非類似ブロックとする。
【０２１８】
また、類似箇所判定部３６４は、連続する５個のワード位置を示す判定箇所のうち先頭のワード位置を順次後方へ移動し、新たに先頭となったワード位置から連続する５個のキーワードのワード位置を次の判定箇所とし、判定動作を繰り返す。そして、類似箇所判定部３６４は、例えば、検査対象テキスト内のワード位置「２２」から連続する「５」個のキーワードの中に、キーワードの対（ハッシュ値の対）に含まれるキーワードの数が「３」個以上であるか否かを判定する。その結果、類似箇所判定部３６４は、検査対象テキスト内のワード位置「２２」から「２６」までの連続するキーワードの中に、キーワードの対に含まれるキーワードの数が「２２」、「２３」、「２４」および「２６」の４個あるので、当該数が「３」以上であると判定する。そして、類似箇所特定部３６５は、ワード位置「２２」から「２６」までを類似ブロックとして特定する。
【０２１９】
また、類似箇所判定部３６４は、類似箇所特定部３６５によって類似ブロックが特定されたので、類似ブロックの最後のワード位置「２６」より後方にある最初のキーワードの対に含まれるキーワードのワード位置を求める。ここでは、類似箇所判定部３６４は、ワード位置「２８」を取得する。そして、類似箇所判定部３６４は、取得したワード位置「２８」までの連続する「５」個のキーワードに関し、類似ブロックであるか否かを判定する。すなわち、類似箇所判定部３６４は、検査対象テキスト内のワード位置「２４」から連続する「５」個のキーワードの中に、キーワードの対（ハッシュ値の対）に含まれるキーワードの数が「３」個以上であるか否かを判定する。その結果、類似箇所判定部３６４は、検査対象テキスト内のワード位置「２４」から「２８」までの連続するキーワードの中に、キーワードの対に含まれるキーワードの数が「２４」、「２６」および「２８」の３個あるので、当該数が「３」個以上であると判定する。そして、類似箇所特定部３６５は、ワード位置「２４」から「２８」までを類似ブロックとして特定する。その結果、類似箇所特定部３６５は、先行して類似ブロックとして特定された「２２」から「２６」までと合わせて、「２２」から「２８」までを連続する類似ブロックＳ１として特定する。
【０２２０】
また、類似箇所判定部３６４は、類似箇所特定部３６５によって類似ブロックが特定されたので、類似ブロックの最後のワード位置「２８」より後方にあるキーワードであってキーワードの対に含まれる最初のキーワードのワード位置を求める。ここでは、類似箇所判定部３６４は、ワード位置「３４」を取得する。そして、類似箇所判定部３６４は、取得したワード位置「３４」までの連続する「５」個のキーワードに関し、類似ブロックであるか否かを判定する。すなわち、類似箇所判定部３６４は、検査対象テキスト内のワード位置「３０」から連続する「５」個のキーワードの中に、キーワードの対（ハッシュ値の対）に含まれるキーワードの数が「３」個以上であるか否かを判定する。しかしながら、検査対象テキスト内のワード位置「３０」から「３４」までの連続するキーワードの中に、キーワードの対に含まれるキーワードの数が１個しかないので、類似箇所判定部３６４は、当該数が「３」個以上でないと判定する。そして、類似箇所特定部３６５は、ワード位置「３０」から「３４」までを非類似ブロックとする。
【０２２１】
その結果、類似箇所特定部３６５は、類似ブロックをワード位置「２２」から「２８」として特定する。このように、類似箇所特定方法によって、類似箇所特定部３６５は、検査対象テキスト内の機密文書と類似する類似箇所を特定する。
【０２２２】
図１７に戻って、類似判定部１７０は、共通要素数判定部１６３および類似箇所特定部３６５から各種通知を取得すると、取得した通知に応じて、検査対象テキストおよび機密文書間が類似しているか否かを機密文書ごとに順次判定する。
【０２２３】
具体的には、類似判定部１７０は、文書非類似メッセージを取得すると、検査対象テキストとの類似を判断していない機密文書がある場合には、次の機密文書を選択する旨を共通行列作成部１６１に通知する。また、類似判定部１７０は、文書類似メッセージを取得すると、検査対象テキストとの類似を判断していない機密文書がない場合には、メールの送信要求をメール送信部１９０に通知する。一方、類似判定部１７０は、類似箇所特定部３６５から文書類似メッセージを取得すると、メールの類似確認要求を類似警告部３６６に通知する。
【０２２４】
類似警告部３６６は、類似判定部１７０からメールの類似確認要求を取得すると、検査対象テキスト内の類似ブロックを編集した警告画面を、例えば文書検査装置２に接続されたモニターに表示する。具体的には、類似警告部３６６は、検査対象テキスト内の、キーワードテーブル４１０の類似度４１０ｅに「１」が記憶されたキーワードの出現位置４１０ｃの範囲を含む警告画面を編集する。そして、類似警告部３６６は、編集した警告画面をモニターに表示する。すなわち、例えばクライアントが過失または故意で機密文書を含んだ文書を社内ドメインでない社外宛先に送信しようとした場合に、類似警告部３６６は、機密文書との類似箇所等を警告画面に表示し、メールを送信したクライアントに送信メールの確認を促す。そして、類似警告部３６６は、送信メールの送信が許可された場合には、メールの送信要求をメール送信部１９０に通知する。一方、類似警告部３６６は、送信メールの送信が拒否された場合には、メールの送信拒否要求をメール送信拒否部１８０に通知する。
【０２２５】
ここで、類似警告部３６６によって表示される警告画面について、図２０を参照しながら説明する。図２０は、警告画面の一例を示す図である。図２０に示すように、警告画面には、クライアントＰＣから送信されたメール（検査対象テキスト）内の機密文書と類似した類似箇所Ｚ２が表示されている。また、警告画面には、クライアントＰＣから送信されたメールの送信先のうち組織内および組織外のメールアドレスが表示されている。
【０２２６】
具体的には、類似警告部３６６は、送信メール内の類似箇所Ｚ２および組織外の送信先を表示し、それぞれチェックボックス（Ｋ１、Ｋ２）を表示する。このとき、類似警告部３６６は、メールの送信要求を起動する送信ボタンＶ２を、送信要求が起動できないように非表示にする。
【０２２７】
また、類似箇所のチェックボックスＫ１および組織外の送信先のチェックボックスＫ２にチェックがされた場合には、類似警告部３６６は、送信ボタンＶ２を表示する。そして、送信ボタンＶ２のボタン操作に対応して、類似警告部３６６は、送信メールの送信許可に応じて、メールの送信要求をメール送信部１９０に通知する。一方、送信拒否ボタンＶ１のボタン操作に対応して、類似警告部３６６は、送信メールの送信拒否に応じて、メールの送信拒否要求をメール送信拒否部１８０に通知する。
【０２２８】
図１７に戻って、メール送信拒否部１８０は、類似判定部１７０または類似警告部３６６からメールの送信拒否要求を取得すると、メール受信部１１０から取得したメールの送信をブロックする。メール送信部１９０は、特徴素行列追加部１４０、類似判定部１７０または類似警告部３６６からメールの送信要求を取得すると、メール受信部１１０から取得したメールを、メールの送信先に送信する。
【０２２９】
［実施例２に係る類似箇所特定方法のアルゴリズム］
ここで、実施例２に係る類似箇所特定方法のアルゴリズムについて、図２１を参照しながら説明する。図２１は、実施例２に係る類似箇所特定方法のアルゴリズムを説明する図である。図２１に示すように、検査対象テキスト内のキーワードが表され、これらキーワードのワード位置が昇順に表されている。白丸または黒丸がキーワードであり、丸の上部の数字がワード位置を表す。また、黒丸は、キーワードの対（ハッシュ値の対）のどちらか一方のキーワード（ここでは、「類似ワード」という。）を示す。
【０２３０】
第１回目では、類似箇所判定部３６４は、検査対象テキストに含まれる連続する所定数のキーワードを判定箇所として、判定箇所の中に、「類似ワード」の数が基準値以上であるか否かを判定する。すなわち、類似箇所判定部３６４は、検査対象テキストと機密文書との共通の類似ワードの数が判定箇所の中に基準値以上であるか否かを判定する。そして、類似箇所判定部３６４は、共通の類似ワードの数が判定箇所の中に基準値以上であると判定した場合に、検査対象テキスト内の当該判定箇所では類似ワードの出現密度が高いと判断する。
【０２３１】
ここでは、所定数を「５」、基準値を「３」とし、判定箇所は連続する「５」個のキーワードのワード位置とする。そして、類似箇所判定部３６４は、判定箇所単位で判定箇所を後方に移動することで順次判定処理を行う。
【０２３２】
まず、類似箇所判定部３６４は、検査対象テキスト内のワード位置「１」から「５」までの連続するキーワードを判定箇所とし、判定箇所の中に、「類似ワード」の数が「３」個以上であるか否かを判定する。図２１の例では、判定箇所の中に、類似ワードの数が「３」個（ワード位置「２」〜「４」のキーワード）ある。そのため、類似箇所判定部３６４は、該当するキーワードの数が「３」個以上であると判定した場合、ワード位置「１」から「５」までの判定箇所での出現密度が高いと判断する。そして、類似箇所特定部３６５は、ワード位置「１」から「５」までの判定箇所を類似ブロックとして特定する。
【０２３３】
次に、第２回目では、類似箇所判定部３６４は、現在の判定箇所が類似ブロックと特定すると、現在の判定箇所の右端のワード位置より後方にある最初の「類似ワード」まで判定箇所を移動する。図２１の例では、現在の判定箇所の右端のワード位置「５」より後方にある最初の「類似ワード」のワード位置は「７」であるので、類似箇所判定部３６４は、ワード位置「３」から「７」までの計５個のワード位置を判定箇所とする。そして、類似箇所判定部３６４は、判定箇所の中に、「類似ワード」の数が「３」個以上であるか否かを判定する。図２１の例では、判定箇所の中に、類似ワードの数が「３」個（ワード位置「３」、「４」、「７」のキーワード）ある。そのため、類似箇所判定部３６４は、該当するキーワードの数が「３」個以上であると判定した場合、ワード位置「３」から「７」までの判定箇所での出現密度が高いと判断する。そして、類似箇所特定部３６５は、ワード位置「３」から「７」までの判定箇所を類似ブロックとして特定する。
【０２３４】
次に、第３回目では、類似箇所判定部３６４は、現在の判定箇所が類似ブロックと特定すると、現在の判定箇所の右端のワード位置より後方にある最初の「類似ワード」まで判定箇所を移動する。図２１の例では、現在の判定箇所の右端のワード位置「７」より後方にある最初の「類似ワード」のワード位置は「１２」であるので、類似箇所判定部３６４は、ワード位置「８」から「１２」までの計５個のワード位置を判定箇所とする。そして、類似箇所判定部３６４は、判定箇所の中に、「類似ワード」の数が「３」個以上であるか否かを判定する。図２１の例では、判定箇所の中に、類似ワードの数が「１」個（ワード位置「１２」）ある。そのため、類似箇所判定部３６４は、該当するキーワードの数が「３」個以上でないと判定した場合、ワード位置「８」から「１２」までの判定箇所での出現密度が高くないと判断する。そして、類似箇所特定部３６５は、ワード位置「８」から「１２」までの判定箇所を非類似ブロックとする。
【０２３５】
次に、第４回目では、類似箇所判定部３６４は、現在の判定箇所が非類似ブロックであると、現在の判定箇所の右端を１つだけ右に移動する。図２１の例では、現在の判定箇所の右端のワード位置「１２」を１つだけ右に移動すると、類似箇所判定部３６４は、ワード位置「９」から「１３」までの計５個のワード位置を判定箇所とする。そして、類似箇所判定部３６４は、判定箇所の中に、「類似ワード」の数が「３」個以上であるか否かを判定する。図２１の例では、判定箇所の中に、類似ワードの数が「１」個（ワード位置「１２」）ある。そのため、類似箇所判定部３６４は、該当するキーワードの数が「３」個以上でないと判定した場合、ワード位置「９」から「１３」までの判定箇所での出現密度が高くないと判断する。そして、類似箇所特定部３６５は、ワード位置「９」から「１３」までの判定箇所を非類似ブロックとする。
【０２３６】
同様にして、類似箇所判定部３６４および類似箇所特定部３６５は、判定箇所の右端が検査対象テキストの最終ワード位置を超えるまで、類似箇所特定方法を繰り返し、検査対象テキストの中の類似ブロックを特定する。このようにして、上記のアルゴリズムを用いて、検査対象テキスト内の機密文書と類似する類似ブロックを特定する。
【０２３７】
［実施例２に係る文書検査装置の文書検査処理］
次に、実施例２に係る文書検査装置２の文書検査処理について説明する。なお、実施例２に係る文書検査装置２の文書検査処理手順のうち、実施例１に係る文書検査装置１による処理手順（図１０〜図１６）と同じ処理手順については、同一符号を付すことで、その重複する手順の説明を省略する。
【０２３８】
そこで、図１２に示すキーワードのハッシュ値を算出するＳ４５の処理手順について、図２２を用いて説明する。図２２は、実施例２に係るハッシュ値算出部３２２の処理手順を示すフローチャートである。まず、ハッシュ値算出部３２２は、キーワード出現位置抽出部１２１によって抽出されたキーワード（ｋｗ）を文字単位（例えば、ｃ１、ｃ２、ｃ３、・・・、ｃＭ）に分割する（Ｓ２０１）。
【０２３９】
そして、ハッシュ値算出部３２２は、分割した全ての文字（ｃｉ）の文字コード（ａｉ）を取得する（Ｓ２０２）。
【０２４０】
次に、ハッシュ値算出部３２２は、キーワードの１文字目（開始桁）にある文字（ｃ１）とＭ文字目（最終桁）にある文字（ｃＭ）の各文字コードを乗算し、乗算値をカウント（Ｃ）に設定する（Ｓ２０３）。
【０２４１】
次に、ハッシュ値算出部３２２は、分割した文字のうち、２桁目の文字（ｃ２）から（Ｍ−１）桁目の文字（ｃＭ）の文字コード（ａｉ）を、順次選択する（Ｓ２０４）。
【０２４２】
引き続き、ハッシュ値算出部３２２は、選択した文字（ｃｉ）の文字コード（ａｉ）をカウント（Ｃ）に設定された値に加算し、加算結果をカウント（Ｃ）に設定する（Ｓ２０５）。
【０２４３】
その後、ハッシュ値算出部３２２は、分割した全ての文字に対する文字コード（ａｉ（ｉ＝２〜Ｍ−１））の加算が完了したか否かを判定する（Ｓ２０６）。そして、全ての文字に対する文字コードの加算が完了していない場合には（Ｓ２０６Ｎｏ）、次桁の文字を選択するために、Ｓ２０４に移行する。
【０２４４】
一方、全ての文字に対する文字コードの加算が完了した場合には（Ｓ２０６Ｙｅｓ）、ハッシュ値算出部３２２は、カウント（Ｃ）に設定された値をハッシュ値の最大数（ＭａｘＳ）で除算し、その除算結果の剰余値に＋１を加算した値を算出する（Ｓ２０７）。その結果、算出された値がキーワード（ｋｗ）のハッシュ値となる。そして、ハッシュ値算出部３２２は、この算出したハッシュ値をキーワード出現位置抽出部１２１に返却する。
【０２４５】
次に、図１０に示す検査対象テキスト（Ｄ）の特徴素行列と機密文書の特徴素行列との類似性を算出するＳ２０の処理手順について、図２３を用いて説明する。図２３は、実施例２に係る類似算出部１６０の処理手順を示すフローチャートである。なお、図２３において、実施例１に係る類似算出部１６０の処理手順(図１４)と同一の手順については、同一の符号を付すことで、その重複する説明については省略する。
【０２４６】
まず、共通行列作成部１６１は、社内ドメイン判定部１３０から取得される検査対象テキスト（Ｄ）の特徴素行列（Ｍｃ１）と、生成した機密文書の特徴素行列（Ｍｃ２）との論理積を算出し、共通行列（ＭＡ）を作成する（Ｓ６１）。そして、共通行列作成部１６１は、作成した共通行列（ＭＡ）を共通要素数算出部１６２に出力する。
【０２４７】
次に、共通要素数算出部１６２は、取得した共通行列（ＭＡ）の各行列要素の中に含まれる共通要素である特定値「１」の個数（共通要素数）をカウントする（Ｓ６２）。その結果、共通要素数は、検査対象テキスト（Ｄ）および機密文書の共通するキーワードの対の数であるため、検査対象テキスト（Ｄ）および機密文書の共通するハッシュ値の対の数が決定されることになる。
【０２４８】
そして、共通要素数判定部１６３は、検査対象テキスト（Ｄ）および機密文書の共通するハッシュ値の対の数が所定値以上であるか否かを判定する（Ｓ６３）。そして、共通要素数判定部１６３は、ハッシュ値の数が所定値以上であると判定した場合には（Ｓ６３Ｙｅｓ）、機密文書と検査対象テキスト間の類似の可能性があるものと判断し、文書間に類似の可能性がある旨を類似箇所判定部３６４に通知する。一方、共通要素数判定部１６３は、ハッシュ値の数が所定値以上でない、すなわち未満であると判定した場合には（Ｓ６３Ｎｏ）、検査対象テキスト（Ｄ）と機密文書間の類似の可能性がないものと判断し、文書間に類似の可能性がない旨を類似判定部１７０に通知する（Ｓ６６）。
【０２４９】
続いて、類似箇所判定部３６４は、共通要素数判定部１６３から文書間に類似の可能性がある旨を受信すると、検査対象テキスト（Ｄ）に含まれる連続する所定数のキーワードを判定箇所とする。そして、類似箇所判定部３６４は、この判定箇所の中に、キーワードの対（ハッシュ値の対）に含まれるキーワードの数が基準値以上であるか否かを判定する。そして、類似箇所特定部３６５は、類似箇所判定部３６４によってキーワードの対（ハッシュ値の対）に含まれるキーワードの数が基準値以上であると判定されたとき、当該判定箇所を類似箇所として特定する（Ｓ２１１）。なお、かかる処理を後述する「類似箇所特定処理」という。
【０２５０】
そして、類似箇所特定部３６５は、検査対象テキスト（Ｄ）の機密文書との間の類似箇所があるか否かを判定する（Ｓ２１２）。すなわち、類似箇所特定部３６５は、検査対象テキスト（Ｄ）の特徴素行列（Ｍｃ１）と機密文書の特徴素行列（Ｍｃ２）とが類似であるか否かを判定する。具体的には、類似箇所特定部３６５は、キーワードテーブル４１０の類似度４１０ｅに類似箇所を示す「１」が設定されているか否かに基づき、類似箇所があるか否かを判定する。
【０２５１】
そして、類似箇所特定部３６５は、検査対象テキスト（Ｄ）の機密文書との間の類似箇所があると判定した場合、すなわちＭｃ１とＭｃ２とが類似であると判定する場合には（Ｓ２１２Ｙｅｓ）、文書類似メッセージを類似判定部１７０に通知する（Ｓ６７）。
【０２５２】
一方、類似箇所特定部３６５は、検査対象テキスト（Ｄ）の機密文書との間の類似箇所がないと判定した場合には（Ｓ２１２Ｎｏ）、検査対象テキスト（Ｄ）と機密文書間の類似の可能性がないものと判断し、文書非類似メッセージを類似判定部１７０に通知する（Ｓ６６）。
【０２５３】
次に、図２３に示す類似箇所特定処理Ｓ２１１の処理手順について、図２４を用いて説明する。図２４は、実施例２に係る類似箇所特定処理の処理手順を示すフローチャートである。なお、図２４では、キーワードテーブル（ＫＴ）４１０に記憶されたキーワード４１０ｂの総数は、Ｗワードであるものとする。また、ワード位置４１０ａがｉ（ｉは、自然数）番目のハッシュ値を関数ｈａｓｈ（ｉ）で表すものとし、ワード位置４１０ａがｉ番目の類似度を関数ｓｉｍ（ｉ）で表すものとする。さらに、検査対象テキスト（Ｄ）内の連続するＭ個のワード位置を判定箇所とし、基準値をＮとする。
【０２５４】
まず、類似箇所判定部３６４は、キーワードテーブル（ＫＴ）４１０の類似度４１０ｅを初期化する（Ｓ２２１）。具体的には、類似箇所判定部３６４は、キーワードテーブル（ＫＴ）４１０のすべてのワード位置４１０ａに対応する類似度４１０ｅを初期値「０」に設定する。そして、類似箇所判定部３６４は、共通行列（ＭＡ）から全てのキーワードの対（ハッシュ値の対）を抽出し、抽出したキーワードの対（ハッシュ値の対）に該当するキーワードのワード位置４１０ａをキーワードテーブル（ＫＴ）４１０から抽出する。そして、類似箇所判定部３６４は、抽出したワード位置４１０ａに対応する類似度４１０ｅに類似箇所を示す「１」を設定する。例えば、類似箇所判定部３６４は、ワード位置４１０ａをｉ番目とするハッシュ値ｈ（ｈ＝ｈａｓｈ（ｉ））と一致する共通行列（ＭＡ）の行または列に特定値「１」を含む場合、ワード位置４１０ａをｉ番目とする類似度４１０ｅに「１」（１＝ｓｉｍ（ｉ））を設定する。
【０２５５】
引き続き、類似箇所判定部３６４は、開始ワード位置を示すインデックスｉに、キーワードテーブル（ＫＴ）４１０のワード位置４１０ａの最小値「１」を設定する（Ｓ２２２）。なお、キーワードテーブル（ＫＴ）４１０は、ワード位置４１０ａの値によって昇順にソートされているものとする。
【０２５６】
そして、類似箇所判定部３６４は、検査対象テキスト（Ｄ）に含まれる連続するＭ個のキーワードの中で、キーワードの対（ハッシュ値の対）に含まれるキーワードの数を求める。具体的には、類似箇所判定部３６４は、式（１）のように、インデックスｉに示される開始ワード位置から連続するＭ個のワード位置４１０ａに対する類似度４１０ｅの値を加算し、類似数ｎを求める（Ｓ２２３）。
ｎ＝ｓｉｍ（ｉ）＋ｓｉｍ（ｉ＋１）＋・・・＋ｓｉｍ（ｉ＋Ｍ−１）・・・式（１）
【０２５７】
そして、類似箇所判定部３６４は、類似数ｎが基準値Ｎ以上であるか否かを判定する（Ｓ２２４）。類似箇所判定部３６５によって類似数ｎが基準値Ｎ以上でない、すなわち未満であると判定された場合には（Ｓ２２４Ｎｏ）、類似箇所特定部３６５は、インデックスｉに示される開始ワード位置に対する類似度４１０ｅをｓｉｍ（ｉ）「０」に設定する（Ｓ２２５）。そして、類似箇所判定部３６４は、次の開始ワード位置を示すインデックスｉを＋１加算する（Ｓ２２６）。
【０２５８】
一方、類似箇所判定部３６４によって類似数ｎが基準値Ｎ以上であると判定された場合には（Ｓ２２４Ｙｅｓ）、類似箇所特定部３６５は、開始ワード位置を示すインデックスｉから連続するＭ個のワード位置を類似箇所として特定する。具体的には、類似箇所特定部３６５は、式（２）のように、開始ワード位置を示すｉから連続するＭ個のワード位置４１０ａに対する類似度４１０ｅを「１」に設定する（Ｓ２２７）。
ｓｉｍ（ｉ）＝ｓｉｍ（ｉ＋１）＝・・・＝ｓｉｍ（ｉ＋Ｍ−１）＝１・・・式（２）
【０２５９】
引き続き、類似箇所判定部３６４は、次の開始ワード位置を示すインデックスｉを設定するために、ワード位置（ｉ＋Ｍ）をインデックスｊに設定する（Ｓ２２８）。そして、類似箇所判定部３６４は、ワード位置４１０ａがｊ番目の類似度４１０ｅが「１」であるか否かを、式（３）のように判定する（Ｓ２２９）。
ｓｉｍ（ｊ）＝１・・・式（３）
【０２６０】
そして、類似箇所判定部３６４は、ワード位置４１０ａがｊ番目の類似度４１０ｅが「１」であると判定した場合には（Ｓ２２９Ｙｅｓ）、次の開始ワード位置を示すインデックスｉを（ｊ−Ｍ＋１）に設定する（Ｓ２３０）。そして、類似箇所判定部３６４は、Ｓ２２３に移行する。すなわち、類似箇所判定部３６４は、類似箇所が特定された場合には、類似箇所の最後のワード位置（ｉ＋Ｍ−１）より後方にあって類似度４１０ｅが「１」と設定された最初のキーワードのワード位置（ｊ）を求める。そして、類似箇所判定部３６４は、求めたワード位置（ｊ）を、連続するＭ個のワード位置の終了ワード位置とする次の開始ワード位置を求める。
【０２６１】
一方、類似箇所判定部３６４が、ワード位置４１０ａがｊ番目の類似度４１０ｅが「１」であると判定しなかった場合には（Ｓ２２９Ｎｏ）、インデックスｊを＋１加算する（Ｓ２３１）。そして、類似箇所判定部３６４は、インデックスｊがキーワード総数Ｗより大きいか否かを判定する（Ｓ２３２）。類似箇所特判定部３６４が、インデックスｊがキーワード総数Ｗより大きくないと判定した場合には（Ｓ２３２Ｎｏ）、Ｓ２２９に移行する。一方、類似箇所判定部３６４が、インデックスｊがキーワード総数Ｗより大きいと判定した場合には（Ｓ２３２Ｙｅｓ）、類似箇所特定処理を終了する。
【０２６２】
［実施例２の効果］
以上のように実施例２によれば、文書検査装置２では、共通要素数判定部１６３が、検査対象テキストの複数のキーワードの対と、機密文書の複数のキーワードの対とを比較する。そして、共通要素数判定部１６３が検査対象テキストの複数のキーワードの対のうち、機密文書のキーワードの対と一致するキーワードの対の数が所定値以上であるか否かを判定する。類似箇所判定部３６４は、機密文書のキーワードの対と一致するキーワードの対の数が所定値以上であると判定されたとき、検査対象テキストの中でキーワードの対に含まれるキーワードの出現密度が基準値より高いか否かを判定する。検査対象テキストの中でキーワードの対に含まれるキーワードの出現密度が基準値より高いと判定されたとき、類似箇所特定部３６５が、出現密度が高いと判定された箇所を、検査対象テキスト内の機密文書と類似する類似箇所として特定する。
【０２６３】
かかる構成によれば、文書検査装置２では、機密文書と共通するキーワードの対に含まれるキーワードの出現密度に応じて、検査対象テキスト内の機密文書と類似する類似箇所を特定するので、機密文書との類似性をさらに高精度に判断できる。特に、検査対象テキストに機密文書内の一部のブロックがコピーされた場合には、コピーされたブロックに含まれるキーワードの対が機密文書と共通する。そのため、文書検査装置２は、コピーされたブロックにおいて機密文書と共通するキーワードの出現密度が高くなり、検査対象テキスト内のコピーブロックを機密文書と類似する類似箇所として確実に特定できる。
【０２６４】
また、実施例２によれば、文書検査装置２では、類似箇所判定部３６４が、検査対象テキストに含まれる連続する所定数のキーワードを判定箇所とし、この判定箇所の中に、キーワードの対に含まれるキーワードの数が基準値以上であるか否かを判定する。そして、類似箇所特定部３６５は、キーワードの対に含まれるキーワードの数が基準値以上であると判定されたとき、この判定箇所を、検査対象テキスト内の機密文書と類似する類似箇所として特定する。かかる構成によれば、文書検査装置２は、検査対象テキストに含まれる連続する所定数のキーワードの中に、機密文書と共通するキーワードの対に含まれるキーワードが基準値以上ある箇所を類似箇所とする。その結果、文書検査装置２は、検査対象テキストと機密文書との類似箇所を容易に特定できる。
【０２６５】
また、実施例２によれば、文書検査装置２では、類似箇所判定部３６４は、機密文書との類似箇所が特定されなかったとき、１つ後方のキーワードに至るまでの所定数のキーワードを次の判定箇所とする。一方、類似箇所判定部３６４は、機密文書との類似箇所が特定されたとき、特定された類似箇所の最後のキーワードより後方のキーワードであってキーワードの対に含まれる最初のキーワードを探索する。そして、類似箇所判定部３６４は、探索したキーワードに至るまでの連続する所定数のキーワードを次の判定箇所とする。さらに、類似箇所判定部３６４は、この判定箇所の中に、キーワードの対に含まれるキーワードの数が基準値以上であるか否かを判定する。かかる構成によれば、文書検査装置２は、類似箇所が特定されたとき、類似箇所後方のキーワードの対に含まれる最初のキーワードまで次の判定箇所を移動させるので、１つずつ後方に移動させるよりも検査対象テキスト内の類似箇所特定処理のスピードを高速にできる。
【０２６６】
また、実施例２によれば、文書検査装置２では、類似警告部３６６が、機密文書との類似箇所が特定されたとき、特定された類似箇所を、例えばモニターに出力する。かかる構成によれば、文書検査装置２は、仮に検査対象テキストがメール文書であるとすると、メール文書を送信しようとしたクライアントに類似箇所を明確に提示できる。そのため、クライアントは、検査対象テキストが機密文書と類似していることを容易に認識できる。その結果、文書検査装置２は、クライアントに対して送信前のチェックを容易に促すことができる。同様に、文書検査装置２は、悪意のあるクライアントに対しても送信前に注意を喚起できる。
【０２６７】
また、実施例２によれば、文書検査装置２では、ハッシュ値算出部３２２が、キーワードを構成する全ての文字の文字コードのうち、当該キーワードの開始桁と最終桁にある文字の各文字コードを乗算する。そして、ハッシュ値算出部３２２が、乗算値に開始桁と最終桁を除外した残りの桁にある文字の各文字コードを加算し、加算した値をハッシュ値の最大数で除算する。そして、ハッシュ値算出部３２２が、除算結果の剰余値に１を加算した値をハッシュ値とする。かかる構成によれば、キーワードの開始桁と最終桁以外の中間桁にある文字の順序が悪意またはタイプミス等により入れ替えられても、文書検査装置２は、異なった文字列によってハッシュ値が変わることから防止できる。例えば、キーワードの正規の文字列が「じゅんばん」である場合に、「じばんゅん」または「じんばゅん」のように中間桁にある文字の順序が入れ替えられるとする。入れ替えられた文字列のハッシュ値は正規の文字列のハッシュ値と同値となるので、文書検査装置２は、文字列によってハッシュ値が変わることから防止できる。
【実施例３】
【０２６８】
ところで、実施例１に係る文書検査装置１では、メール文書の検査対象テキストと機密文書との共通するハッシュ値の対の数が所定値以上あるか否かを判定することにより、双方の文書の類似性を判断した（「類似性検査１」）。そして、文書検査装置１では、「類似性検査１」によって類似の可能性があると判断した場合には、３連続ハッシュ値の数が所定値以上あるか否かを判定することにより、双方の文書の類似性を判断した（「類似性検査２」）。また、実施例２に係る文書検査装置２では、「類似性検査１」によって類似の可能性があると判断した場合には、検査対象テキスト内の機密文書と類似する類似箇所を特定した。しかしながら、文書検査装置２は、メール文書に限定されるものではなく、文書画像を光学式文字認識（ＯＣＲ：Optical  Character  Recognition）して得た検査対象テキスト内の機密文書と類似する類似箇所を特定するようにしても良い。
【０２６９】
［実施例３に係る文書検査装置の構成］
そこで、実施例３では、文書画像を光学式文字認識して得た検査対象テキスト内の機密文書と類似する類似箇所を特定する文書検査装置３について説明する。図２５は、実施例３に係る文書検査装置３の構成を示す機能ブロック図である。なお、図１７に示す文書検査装置２と同一の構成については同一符号を付すことで、その重複する構成および動作の説明については省略する。実施例２と実施例３とが異なるところは、ＯＣＲ部５１０および特徴素受信部５５０を追加した点にある。さらに、実施例２と実施例３とが異なるところは、社内ドメイン判定部１３０、特徴素行列追加部１４０、シリアライズ部１５０、社内ドメイン定義２３０および類似箇所警告部３６６を削除した点にある。さらに、メール受信部１１０、メール着信拒否部１８０およびメール送信部１９０をそれぞれ電子文書受信部５２０、機密部分削除部５３０および電子文書送信部５４０に変更した点にある。
【０２７０】
ＯＣＲ部５１０は、文書画像を光学的に文字認識し、認識した文字を抽出し、抽出した文字を検査対象テキストとして、電子文書受信部５２０に送信する。例えば、ＯＣＲ部５１０は、文書画像をコピーをする際、スキャナで読み取る際、またはファクシミリ（ＦＡＸ）送信する際に、その文字画像を受信し、受信した文字画像を光学式に文字認識する。さらに、ＯＣＲ部５１０は、認識した文字を抽出し、抽出した文字を検査対象テキストとする。そして、ＯＣＲ部５１０は、検査対象テキストを電子文書受信部５２０に送信する。
【０２７１】
電子文書受信部５２０は、ＯＣＲ部５１０を通じて検査対象テキストを受信すると、検査対象テキストをキーワード出現位置抽出部１２１に通知する。また、電子文書受信部５２０は、受信した検査対象テキストを機密部分削除部５３０および電子文書送信部５４０に通知する。
【０２７２】
類似判定部１７０は、共通要素数判定部１６３または類似箇所特定部３６５から各種通知を取得すると、取得した通知に応じて、検査対象テキストおよび機密文書間が類似しているか否かを機密文書ごとに順次判定する。具体的には、類似判定部１７０は、文書非類似メッセージを取得すると、類似を判断していない機密文書がある場合には、次の機密文書を選択する旨を共通行列作成部１６１に通知する。
【０２７３】
また、類似判定部１７０は、文書非類似メッセージを取得すると、検査対象テキストとの類似を判断していない機密文書がない場合には、検査対象テキストの送信要求を電子文書送信部５４０に通知する。一方、類似判定部１７０は、類似箇所特定部３６５から文書類似メッセージを取得すると、類似箇所の削除要求を機密部分削除部５３０に通知する。
【０２７４】
機密部分削除部５３０は、検査対象テキスト内の機密文書との類似箇所を削除する。具体的には、機密部分削除部５３０は、類似判定部１７０から類似箇所の削除要求を取得すると、キーワードテーブル４１０の類似度４１０ｅに「１」が記憶されたキーワードの出現位置４１０ｃの範囲を含む類似箇所を検査対象テキストから削除する。そして、機密部分削除部５３０は、類似箇所を削除した検査対象テキストを電子文書送信部５４０に送信する。
【０２７５】
電子文書送信部５４０は、機密部分削除部５３０から検査対象テキストを取得すると、取得した検査対象テキストを、送信先に送信する。また、電子文書送信部５４０は、特徴素行列追加部１４０または類似判定部１７０から検査対象テキストの送信要求を取得すると、電子文書受信部５２０から取得した検査対象テキストを、送信先に送信する。
【０２７６】
特徴素受信部５５０は、機密文書を管理する電子計算機から機密文書の特徴素（シグネチャ）を受信し、受信した機密文書ごとの特徴素を特徴素行列ＤＢ２４０に格納する。例えば、特徴素受信部５５０は、機密文書ごとの特徴素行列をシリアライズ化した結果を機密文書ごとに受信し、受信した機密文書ごとのシリアライズ結果を特徴素行列ＤＢ２４０に格納する。
【０２７７】
なお、実施例３に係る類似箇所特定処理の処理手順は、実施例２（図２３および図２４）と同様であるので、その説明については省略する。
【０２７８】
［実施例３に係る文書検査装置の用途］
ここで、実施例３に係る文書検査装置３の用途の一例を、図２６を参照して説明する。図２６は、実施例３に係る文書検査装置の用途の一例を説明する図である。図２６に示すように、文書検査装置３は、機密文書管理サーバ９とともに、コピー機と印刷機とを複合したプリンタ装置４に用いられる。
【０２７９】
機密文書管理サーバ９は、機密文書を管理するサーバであり、機密文書ファイル９ａ、特徴素生成装置９ｂ、特徴素配信装置９ｃおよび特徴素行列ＤＢ９ｄを備える。機密文書ファイル９ａは、管理者またはネットワークから取得された機密文書Ｔ６を記憶する。特徴素生成装置９ｂは、機密文書ファイル９ａから各機密文書を取り出して、機密文書ごとの特徴素（シグネチャ）を生成し、生成した特徴素を保持する。ここでは、特徴素生成装置９ｂは、機密文書ごとの特徴素行列を生成し、生成した特徴素行列をシリアライズ化した結果を特徴素行列ＤＢ９ｄに格納する。特徴素配信装置９ｃは、所定のタイミングで機密文書の特徴素の差分を文書検査装置３に配信する。なお、所定のタイミングとは、新たに機密文書を取得したタイミングや機密文書を削除したタイミングであっても良いし、予め定められたタイミングであれば良い。
【０２８０】
プリンタ装置４は、文書検査装置３、紙スキャン装置４ａおよび印刷装置４ｂを備える。紙スキャン装置４ａは、コピーやＦＡＸ等により文書画像Ｔ４が描画された紙媒体から文書画像をスキャンし、その文書画像を電子化する。文書検査装置３は、紙スキャン装置４ａまたはクライアントＰＣｃから電子化された文書画像Ｔ５を受信し、受信した文書画像を光学的に文字認識し、その文字認識した文書画像を検査対象テキストに変換する。
【０２８１】
文書検査装置３は、類似箇所特定方法によって検査対象テキスト内の機密文書と類似する類似箇所を特定する。すなわち、文書検査装置３は、検査対象テキストの特徴素行列と機密文書の特徴素行列とから共通行列を作成し、作成した共通行列を用いて、検査対象テキスト内に機密文書と類似する類似箇所があるか否かを判定する。そして、文書検査装置３は、検査対象テキスト内に機密文書と類似する類似箇所があると判定した場合には、類似箇所を特定する。そして、文書検査装置３は、特定した類似箇所を検査対象テキストから削除し、類似箇所の文字を削除した検査対象テキストを印刷装置４ｂに送信する。
【０２８２】
印刷装置４ｂは、文書検査装置３から検査対象テキストを受信すると、受信した検査対象テキストを印刷し、印刷文書Ｔ７を出力する。すなわち、検査対象テキストが機密文書と類似する類似箇所がある場合には、印刷装置４ｂは、類似箇所の文字が削除された検査対象テキストを印刷し、そのテキストを印刷文書Ｔ７として印刷出力する。
【０２８３】
例えば、実施例３に係るプリンタ装置４を用いて印刷された印刷文書を、図２７を参照して説明する。図２７は、実施例３に係るプリンタ装置を用いた印刷結果の一例を説明する図である。図２７に示すように、紙スキャン装置４ａは、紙媒体の文書画像Ｓ１をスキャンする。そして、文書検査装置３は、スキャンされた文書画像Ｓ１をＯＣＲ部５１０によって検査対象テキストＳ２に変換する。この際、文書検査装置３は、ＯＣＲ部５１０による文字認識に失敗する場合がある。図２７の例では、検査対象テキストＳ２内の黒丸の部分が、ＯＣＲ部５１０による文字認識に失敗した部分である。
【０２８４】
文書検査装置３は、検査対象テキストＳ２内に機密文書Ｓ３と類似する類似箇所があるか否かを判定する。図２７の例では、文書検査装置３は、検査対象テキストＳ２内の符号Ｓ２ａで示される破線箇所が機密文書Ｓ３と類似し、類似箇所があると判定する。そして、文書検査装置３は、符号Ｓ２ａで示される破線箇所を類似箇所と特定する。さらに、印刷装置４ｂは、検査対象テキストＳ２から文書検査装置３によって特定された類似箇所Ｓ２ａを白塗りにし、印刷文書Ｓ４を印刷する。
【０２８５】
［実施例３の効果］
以上のように実施例３によれば、文書検査装置３では、ＯＣＲ部５１０が、文書画像を光学的に文字認識し、文字認識した文字を抽出し、抽出した文字を検査対象テキストとするようにした。かかる構成によれば、文書検査装置３は、文書画像を光学的に正確に文字認識できない場合であっても、正確に文字認識できた文字から類似箇所を特定できるので、機密文書から作成された機密性の高い文書画像を容易にみつけることができる。
【０２８６】
［その他］
なお、実施例２および実施例３では、ハッシュ値算出部３２２は、キーワードを構成する開始桁と最終桁の各文字コードを乗算し、乗算した値にそれ以外の桁の各文字コードを加算した値をハッシュ値の最大数で除算し、その剰余値に１を加算するとして説明した。しかしながら、ハッシュ値算出部３２２は、例えば、実施例１によって説明したキーワードを構成する文字のすべての文字コードを加算した値をハッシュ値の最大数で除算し、その剰余値に１を加算しても良い。
【０２８７】
また、実施例２および実施例３では、第１に、共通要素数判定部１６３が、検査対象テキストと機密文書との共通するハッシュ値の対の数が所定値以上あるか否かを判定することにより、双方の文書の類似性を判断した（「類似性検査１」）。そして、第２に、「類似性検査１」によって類似の可能性があると判断された場合には、類似箇所判定部３６４が、検査対象テキストの中でキーワードの対に含まれるキーワードの出現密度が基準値より高いか否かを判定する。そして、出現密度が高いと判定された場合には、類似箇所特定部３６５は、出現密度が高いと判定された箇所を類似箇所と特定するとして説明した。しかし、これに限定されず、「類似性検査１」によって類似の可能性があると判断した場合には、実施例１によって説明した「類似性検査２」と併用するようにしても良い。
【０２８８】
また、文書検査装置１〜３は、既知のパーソナルコンピュータ、ワークステーション等の情報処理装置に、上記した制御部１０および記憶部２０の各機能を搭載することによって実現することができる。
【０２８９】
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、特徴素行列追加部１４０とシリアライズ部１５０とを１つの部として統合しても良く、一方、類似箇所判定部３６４を、類似箇所であるか否かを判定する判定部と、判定箇所を求める判定箇所探索部とに分散しても良い。また、記憶部２０または特徴素行列抽出部１２０を別の装置がそれぞれ有し、ネットワーク接続されて協働することで、上記した文書検査装置１〜３の機能を実現するようにしても良い。また、ＯＣＲ部５１０または機密部分削除部５３０を文書検査装置３の外部装置としてプリンタ装置４に内蔵するようにしても良いし、ネットワーク経由で接続するようにしても良い。
【０２９０】
以上、本発明の実施例について説明したが、本実施例によって本発明の技術的思想の範囲が限定されるものではなく、特許請求の範囲に記載した技術的範囲を逸脱しない限り、各種様々な実施例が実施可能であることは言うまでもない。また、本実施例に記載した効果は、これに限定されるものではない。
【０２９１】
また、図示した文書検査装置１〜３の各構成要素は機能概念的に記載したものであって、必ずしも物理的に図示のように構成されるものではなく、その文書検査装置１の具体的な態様は図示のものに限縮されるものでは到底ないことは言うまでもない。
【０２９２】
なお、文書検査装置１〜３にて行われる各処理機能は、その全部または任意の一部が、ＣＰＵ（Central Processing Unit）（またはＭＰＵ（Micro Processing Unit）、ＭＣＵ（Micro Controller Unit）などのマイクロ・コンピュータ）および当該ＣＰＵ（またはＭＰＵ、ＭＣＵなどのマイクロ・コンピュータ）にて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現されても良い。
【０２９３】
以上の実施例に係る実施形態に関し、さらに以下の付記を開示する。
【０２９４】
（付記１）文書の類似性を判定する際に比較対象となる特定文書を含む判定対象文書からキーワードおよび該キーワードの出現位置を抽出する抽出手段と、
前記抽出手段によって抽出されたキーワードの出現位置ごとのキーワードを判定対象として、当該判定対象のキーワード前後に関わる所定範囲内に前記抽出手段によって抽出された他のキーワードがあるか否かを判定する判定手段と、
前記判定手段によって他のキーワードがあると判定されたとき、前記判定対象のキーワードおよび前記他のキーワードを各キーワードの出現位置の前後情報に対応付けて組み合わせた組み合わせ情報を生成する生成手段と、
前記生成手段によって生成された前記判定対象文書の複数の組み合わせ情報と、前記特定文書の複数の組み合わせ情報とを比較して、前記判定対象文書の複数の組み合わせ情報のうち、前記特定文書の組み合わせ情報と一致する組み合わせ情報の数が第１の類似判定数以上であるか否かを判定して、その判定結果に基づき前記判定対象文書と前記特定文書との類似性を判定する比較判定手段と
を備えることを特徴とする文書検査装置。
【０２９５】
（付記２）前記比較判定手段は、
前記判定対象文書の複数の組み合わせ情報のうち、前記特定文書の組み合わせ情報と一致する組み合わせ情報の数が第１の類似判定数以上であると判定されたとき、同一の所定範囲内に出現する少なくとも３つ以上のキーワードから組み合わされる組み合わせ情報の群が第２の類似判定数以上あるか否かを判定する類似判定手段を含むことを特徴とする付記１に記載の文書検査装置。
【０２９６】
（付記３）前記類似判定手段は、
同一の所定範囲内に出現する少なくとも３つ以上のキーワードから組み合わされる組み合わせ情報の群が第２の類似判定数以上あると判定されたとき、前記判定対象文書の送信許可相手以外の他の送信相手への送信を拒否する送信拒否手段をさらに備えることを特徴とする付記２に記載の文書検査装置。
【０２９７】
（付記４）前記判定対象文書が送信許可相手に送信するものである場合、前記生成手段によって生成された組み合わせ情報を前記特定文書の組み合わせ情報として記憶する記憶手段をさらに備えることを特徴とする付記１から付記３のいずれか１つに記載の文書検査装置。
【０２９８】
（付記５）前記生成手段は、
前記判定対象のキーワードのハッシュ値および前記他のキーワードのハッシュ値を、各キーワードの出現位置の前後情報を行情報および列情報に対応付けて組み合わせた行列要素を特定値に設定した行列情報を複数の組み合わせ情報として生成し、
前記比較判定手段は、
前記生成手段によって生成された前記判定対象文書および前記特定文書のいずれの行列情報にも特定値が設定されている同一の行列要素に対応する行列要素を特定値に設定される共通行列情報を生成する共通情報生成手段を含み、
前記類似判定手段は、
前記共通情報生成手段によって生成された共通行列情報から同一の列情報ごとに複数の特定値が設定されている行情報を抽出し、抽出された行情報のうち互いに異なる２つの行情報を組み合わせた行列要素であって特定値が設定されている行列要素の数が第２の類似判定数以上であるか否かを判定することを特徴とする付記２または付記３に記載の文書検査装置。
【０２９９】
（付記６）前記キーワードを構成する全ての文字の文字コードのうち、前記キーワードの開始桁と最終桁にある文字の各文字コードを乗算し、乗算した値に開始桁と最終桁を除外した残りの桁にある文字の各文字コードを加算し、加算した値をハッシュ値の最大数で除算し、その除算結果の剰余値に１を加算した値をハッシュ値とするハッシュ値算出手段を有することを特徴とする付記５に記載の文書検査装置。
【０３００】
（付記７）前記比較判定手段は、
前記判定対象文書の複数の組み合わせ情報のうち、前記特定文書の組み合わせ情報と一致する組み合わせ情報の数が第１の類似判定数以上であると判定されたとき、前記判定対象文書の中で前記組み合せ情報に含まれるキーワードの出現密度が基準値より高いか否かを判定する類似箇所判定手段と、
前記類似箇所判定手段によって前記判定対象文書の中で前記組み合せ情報に含まれるキーワードの出現密度が基準値より高いと判定されたとき、出現密度が高いと判定された箇所を、前記判定対象文書内の前記特定文書と類似する類似箇所として特定する類似箇所特定手段と
を有することを特徴とする付記１に記載の文書検査装置。
【０３０１】
（付記８）前記類似箇所判定手段は、
前記判定対象文書に含まれる連続する所定数のキーワードを判定箇所とし、当該判定箇所の中に、前記組み合わせ情報に含まれるキーワードの数が、前記基準値以上であるか否かを判定し、
前記類似箇所特定手段は、
前記類似箇所判定手段によって前記組み合わせ情報に含まれるキーワードの数が、前記基準値以上であると判定されたとき、前記判定箇所を、前記判定対象文書内の前記特定文書と類似する類似箇所として特定することを特徴とする付記７に記載の文書検査装置。
【０３０２】
（付記９）前記類似箇所判定手段は、
前記類似箇所特定手段によって前記類似箇所が特定されなかったとき、１つ後方のキーワードに至るまでの所定数のキーワードを次の判定箇所とし、前記類似箇所特定手段によって前記類似箇所が特定されたとき、特定された類似箇所の最後のキーワードより後方のキーワードであって組み合わせ情報に含まれる最初のキーワードに至るまでの所定数のキーワードを次の判定箇所とし、前記判定箇所の中に、前記組み合わせ情報に含まれるキーワードの数が、前記基準値以上であるか否かを判定することを特徴とする付記８に記載の文書検査装置。
【０３０３】
（付記１０）前記類似箇所特定手段によって特定された類似箇所を出力する出力手段を有することを特徴とする付記７から付記９のいずれか１つに記載の文書検査装置。
【０３０４】
（付記１１）文書画像を光学的に文字認識し、認識した文字を抽出し、抽出した文字を判定対象文書とする光学式文字認識手段を有することを特徴とする付記７から付記９のいずれか１つに記載の文書検査装置。
【０３０５】
（付記１２）文書の類似性を判定する際に比較対象となる特定文書を含む判定対象文書からキーワードおよび該キーワードの出現位置を抽出する抽出手順と、
前記抽出手順によって抽出されたキーワードの出現位置ごとのキーワードを判定対象として、当該判定対象のキーワード前後に関わる所定範囲内に前記抽出手順によって抽出された他のキーワードがあるか否かを判定する判定手順と、
前記判定手順によって他のキーワードがあると判定されたとき、前記判定対象のキーワードおよび前記他のキーワードを各キーワードの出現位置の前後情報に対応付けて組み合わせた組み合わせ情報を生成する生成手順と、
前記生成手順によって生成された前記判定対象文書の複数の組み合わせ情報と、前記特定文書の複数の組み合わせ情報とを比較して、前記判定対象文書の複数の組み合わせ情報のうち、前記特定文書の組み合わせ情報と一致する組み合わせ情報の数が第１の類似判定数以上であるか否かを判定して、その判定結果に基づき前記判定対象文書と前記特定文書との類似性を判定する比較判定手順と
を含む文書検査プログラムをコンピュータに実行させることを特徴とするコンピュータ読み取り可能な記録媒体。
【０３０６】
（付記１３）前記比較判定手順は、
前記判定対象文書の複数の組み合わせ情報のうち、前記特定文書の組み合わせ情報と一致する組み合わせ情報の数が第１の類似判定数以上であると判定されたとき、同一の所定範囲内に出現する少なくとも３つ以上のキーワードから組み合わされる組み合わせ情報の群が第２の類似判定数以上あるか否かを判定する類似判定手順を含むことを特徴とする付記１２に記載のコンピュータ読み取り可能な記録媒体。
【０３０７】
（付記１４）前記生成手順は、
前記判定手順のキーワードのハッシュ値および前記他のキーワードのハッシュ値を、各キーワードの出現位置の前後情報を行情報および列情報に対応付けて組み合わせた行列要素を特定値に設定した行列情報を複数の組み合わせ情報として生成し、
前記比較判定手順は、
前記生成手順によって生成された前記判定対象文書および前記特定文書のいずれの行列情報にも特定値が設定されている同一の行列要素に対応する行列要素を特定値に設定される共通行列情報を生成する共通情報生成手順を含み、
前記類似判定手順は、
前記共通情報生成手順によって生成された共通行列情報から同一の列情報ごとに複数の特定値が設定されている行情報を抽出し、抽出された行情報のうち互いに異なる２つの行情報を組み合わせた行列要素であって特定値が設定されている行列要素の数が第２の類似判定数以上あるか否かを判定することを特徴とする付記１３に記載のコンピュータ読み取り可能な記録媒体。
【０３０８】
（付記１５）前記比較判定手順は、
前記判定対象文書の複数の組み合わせ情報のうち、前記特定文書の組み合わせ情報と一致する組み合わせ情報の数が第１の類似判定数以上であると判定されたとき、前記判定対象文書の中で前記組み合せ情報に含まれるキーワードの出現密度が基準値より高いか否かを判定する類似箇所判定手順と、
前記類似箇所判定手順によって前記判定対象文書の中で前記組み合せ情報に含まれるキーワードの出現密度が基準値より高いと判定されたとき、出現密度が高いと判定された箇所を、前記判定対象文書内の前記特定文書と類似する類似箇所として特定する類似箇所特定手順と
を含むことを特徴とする付記１２に記載のコンピュータ読み取り可能な記録媒体。
【０３０９】
（付記１６）文書の類似性を判定する際に比較対象となる特定文書を含む判定対象文書からキーワードおよび該キーワードの出現位置を抽出する抽出工程と、
前記抽出工程によって抽出されたキーワードの出現位置ごとのキーワードを判定対象として、当該判定対象のキーワード前後に関わる所定範囲内に前記抽出工程によって抽出された他のキーワードがあるか否かを判定する判定工程と、
前記判定工程によって他のキーワードがあると判定されたとき、前記判定対象のキーワードおよび前記他のキーワードを各キーワードの出現位置の前後情報に対応付けて組み合わせた組み合わせ情報を生成する生成工程と、
前記生成工程によって生成された前記判定対象文書の複数の組み合わせ情報と、前記特定文書の複数の組み合わせ情報とを比較して、前記判定対象文書の複数の組み合わせ情報のうち、前記特定文書の組み合わせ情報と一致する組み合わせ情報の数が第１の類似判定数以上であるか否かを判定して、その判定結果に基づき前記判定対象文書と前記特定文書との類似性を判定する比較判定工程と
を含むことを特徴とする文書検査方法。
【０３１０】
（付記１７）前記比較判定工程は、
前記判定対象文書の複数の組み合わせ情報のうち、前記特定文書の組み合わせ情報と一致する組み合わせ情報の数が第１の類似判定数以上であると判定されたとき、前記判定対象文書の中で前記組み合せ情報に含まれるキーワードの出現密度が基準値より高いか否かを判定する類似箇所判定工程と、
前記類似箇所判定工程によって前記判定対象文書の中で前記組み合せ情報に含まれるキーワードの出現密度が基準値より高いと判定されたとき、出現密度が高いと判定された箇所を、前記判定対象文書内の前記特定文書と類似する類似箇所として特定する類似箇所特定工程と
を含むことを特徴とする付記１６に記載の文書検査方法。
【符号の説明】
【０３１１】
１、２、３  文書検査装置
１０  制御部
２０  記憶部
１１０  メール受信部
１２０  特徴素行列抽出部
１２１  キーワード出現位置抽出部
１２２、３２２  ハッシュ値算出部
１２３  キーワード範囲内有無判定部
１２４  特徴素行列作成部
１３０  社内ドメイン判定部
１４０  特徴素行列追加部
１５０  シリアライズ部
１６０  類似算出部
１６１  共通行列作成部
１６２  共通要素数算出部
１６３  共通要素数判定部
１６４  ３連続ハッシュ値数算出部
１６５  ３連続ハッシュ値数判定部
１７０  類似判定部
１８０  メール送信拒否部
１９０  メール送信部
２１０、４１０  キーワードテーブル
２２０  不要語リスト
２３０  社内ドメイン定義
２４０  特徴素行列ＤＢ
２５０  ワーク行列
３６４  類似箇所判定部
３６５  類似箇所特定部
３６６  類似警告部
５１０  ＯＣＲ部
５２０  電子文書受信部
５３０  機密部分削除部
５４０  電子文書送信部
５５０  特徴素受信部
【図１】
2010231766.tif 000003
【図２】
2010231766.tif 000004
【図３】
2010231766.tif 000005
【図４】
2010231766.tif 000006
【図５】
2010231766.tif 000007
【図６】
2010231766.tif 000008
【図７】
2010231766.tif 000009
【図８−１】
2010231766.tif 000010
【図８−２】
2010231766.tif 000011
【図９−１】
2010231766.tif 000012
【図９−２】
2010231766.tif 000013
【図９−３】
2010231766.tif 000014
【図１０】
2010231766.tif 000015
【図１１】
2010231766.tif 000016
【図１２】
2010231766.tif 000017
【図１３】
2010231766.tif 000018
【図１４】
2010231766.tif 000019
【図１５】
2010231766.tif 000020
【図１６】
2010231766.tif 000021
【図１７】
2010231766.tif 000022
【図１８】
2010231766.tif 000023
【図１９】
2010231766.tif 000024
【図２０】
2010231766.tif 000025
【図２１】
2010231766.tif 000026
【図２２】
2010231766.tif 000027
【図２３】
2010231766.tif 000028
【図２４】
2010231766.tif 000029
【図２５】
2010231766.tif 000030
【図２６】
2010231766.tif 000031
【図２７】
2010231766.tif 000032