(57)【要約】【課題】異なるキーワード同士のハッシュ値の衝突を回避して類似文書を検索する際の比較精度の向上を図る文書管理装置等を提供する。【解決手段】クライアントは、第２の算出部と、判定部と、リスト制御部とを有する。第２の算出部は、剰余演算の定数を用いて文書中の各キーワードのハッシュ値を算出する。判定部は、異なるキーワード同士でハッシュ値の衝突があるか否かを判定する。リスト制御部は、ハッシュ値の衝突がある場合に、衝突した一方のキーワードのハッシュ値を算出した剰余演算の定数を変更する。更に、リスト制御部は、変更した剰余演算の定数を用いて一方のキーワードのハッシュ値を第２の算出部に算出させ、ハッシュ値の衝突を回避できた剰余演算の定数及び当該一方のキーワードをルール情報として定義リスト内に登録する。【選択図】図１
2016042263.tif 000002
【特許請求の範囲】
【請求項１】
演算パラメータを用いて文書中の各キーワードのハッシュ値を算出する算出部と、
異なるキーワード同士でハッシュ値の衝突があるか否かを判定する判定部と、
前記ハッシュ値の衝突がある場合に、衝突した一方のキーワードのハッシュ値を算出した前記演算パラメータを変更する変更部と、
変更した前記演算パラメータを用いて前記一方のキーワードのハッシュ値を前記算出部に算出させ、前記ハッシュ値の衝突を回避できた前記演算パラメータ及び当該一方のキーワードをルール情報として登録して管理する制御部と
を有することを特徴とする文書管理装置。
【請求項２】
前記変更部は、
前記算出部で前記キーワードの文字コードにハッシュ関数で中間ハッシュ値を算出し、算出した中間ハッシュ値に対する剰余演算で当該キーワードのハッシュ値を算出する際に用いる前記剰余演算のハッシュ範囲を前記演算パラメータとして変更することを特徴とする請求項１に記載の文書管理装置。
【請求項３】
前記変更部は、
前記算出部で前記キーワードの文字コード及び条件キーの文字コードにハッシュ関数で当該キーワードのハッシュ値を算出する際に用いる前記条件キーのキー内容を前記演算パラメータとして変更することを特徴とする請求項１又は２に記載の文書管理装置。
【請求項４】
前記算出部は、
前記ルール情報を参照して前記文書中の複数のキーワードの内、前記ルール情報内のキーワードがある場合に、当該キーワードに対応する演算パラメータを用いて、当該キーワードのハッシュ値を算出することを特徴とする請求項１〜３の何れか一つに記載の文書管理装置。
【請求項５】
前記算出部は、
特定のキーワードを管理する記憶部を参照して前記文書中の複数のキーワードの内、前記特定のキーワードがある場合に、当該文書中の特定キーワードのハッシュ値を算出し、
前記判定部は、
前記記憶部内の異なる特定のキーワード同士でハッシュ値の衝突があるか否かを判定し、
前記変更部は、
前記ハッシュ値の衝突がある場合に、衝突した一方の特定のキーワードのハッシュ値を算出した前記演算パラメータを変更し、
前記制御部は、
前記変更した前記演算パラメータを用いて前記一方の特定のキーワードのハッシュ値を前記算出部に算出させ、前記ハッシュ値の衝突が回避できた前記演算パラメータ及び当該一方の特定のキーワードを前記ルール情報として登録することを特徴とする請求項１〜４の何れか一つに記載の文書管理装置。
【請求項６】
前記算出部は、
キーワードの種別を分類するカテゴリ毎に、特定のキーワードを管理する記憶部を参照して前記文書中の複数のキーワードの内、前記特定のキーワードがある場合に、当該文書中の特定のキーワードのハッシュ値を算出し、
前記判定部は、
前記記憶部内の同一カテゴリ内の異なる特定のキーワード同士でハッシュ値の衝突があるか否かを判定し、
前記変更部は、
前記ハッシュ値の衝突がある場合に、衝突した一方の特定のキーワードのハッシュ値を算出した前記演算パラメータを変更し、
前記制御部は、
前記変更した前記演算パラメータを用いて前記一方の特定のキーワードのハッシュ値を前記算出部に算出させ、前記ハッシュ値の衝突を回避できた前記演算パラメータ及び当該一方の特定のキーワードを前記ルール情報として登録することを特徴とする請求項１〜４の何れか一つに記載の文書管理装置。
【請求項７】
前記制御部は、
前記ルール情報を登録した場合に、前記ルール情報を、前記文書管理装置を収容するシステム内の他の文書管理装置に通知することを特徴とする請求項１〜６の何れか一つに記載の文書管理装置。
【請求項８】
コンピュータに、
演算パラメータを用いて文書中の各キーワードのハッシュ値を算出させ、
異なるキーワード同士でハッシュ値の衝突があるか否かを判定させ、
前記ハッシュ値の衝突がある場合に、衝突した一方のキーワードのハッシュ値を算出した前記演算パラメータを変更させ、
変更した前記演算パラメータを用いて前記一方のキーワードのハッシュ値を算出させ、前記ハッシュ値の衝突を回避できた前記演算パラメータ及び当該一方のキーワードをルール情報として登録して管理させる
処理を実行させることを特徴とする文書管理プログラム。
【請求項９】
コンピュータが、
演算パラメータを用いて文書中の各キーワードのハッシュ値を算出し、
異なるキーワード同士でハッシュ値の衝突があるか否かを判定し、
前記ハッシュ値の衝突がある場合に、衝突した一方のキーワードのハッシュ値を算出した前記演算パラメータを変更し、
変更した前記演算パラメータを用いて前記一方のキーワードのハッシュ値を算出させ、前記ハッシュ値の衝突を回避できた前記演算パラメータ及び当該一方のキーワードをルール情報として登録して管理する
処理を実行することを特徴とする文書管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文書管理装置、文書管理プログラム及び文書管理方法に関する。
【背景技術】
【０００２】
近年、企業では情報漏洩対策として様々なログを収集し、これら収集したログを用いて情報漏洩の原因調査を行っている。情報漏洩対策の中には、例えば、情報漏洩した情報に類似するファイルを検索し、情報漏洩の原因を調査するアプローチがある。
【０００３】
そこで、本出願人は、例えば、文書閲覧や保存等のファイル操作時に取得する操作ログに対応付けて、操作ファイルの文書を原文ではなく、原文の特徴を表すフィンガープリント（以下、単にＦＰと称する）で管理する文書管理装置を提案している。
【０００４】
ＦＰは、対象文書のテキストから各キーワードの並びを抽出し、テキスト内の特定範囲内の各キーワードの前後の並びを対象文書のコンテンツの特徴とし、各キーワードのハッシュ値を有向グラフで表現した情報である。
【０００５】
文書管理装置では、操作ログに対応付けた対象文書のＦＰから情報漏洩の検索対象文書のＦＰを検索し、検索対象文書のＦＰとファイル操作の文書のＦＰとの類似度から情報漏洩の検索対象文書に類似する文書の操作ログを検索する。その結果、情報漏洩の検索対象文書に類似する文書の操作ログを追跡し、情報漏洩の原因究明を図る。
【０００６】
また、ＦＰは、テキスト内の各キーワードをハッシュ関数で演算して中間ハッシュ値を算出し、その中間ハッシュ値に定数ｎの剰余演算を実行することでキーワードのハッシュ値を算出し、算出した各キーワードのハッシュ値をｎ×ｎの有向グラフで表現している。しかも、ＦＰは、キーワードの前後の並びを文書コンテンツの特徴としているため、テキスト内の異なるキーワード同士でハッシュ値の衝突が生じた場合でも、特徴に含まれるキーワードの組の両方のハッシュ値が同一文書の特徴と判断される確率は低い。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１０−２３１７６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、例えば、剰余演算の定数ｎの数値を“１００００”にしてキーワードをハッシュ化した場合には、ハッシュ範囲が“０”〜“９９９９”になるため、テキスト内の異なるキーワード同士でハッシュ値の衝突が生じる場合がある。例えば、“０”〜“９９９９”のハッシュ範囲で１００個のキーワードをハッシュ化した場合の衝突しない確率は、０．６０２４８０（９９９９／１００００×９９９８／１００００×…×９９００／１００００）であり、約４割の確率で衝突が生じることになる。
【０００９】
例えば、「Ａ株式会社の決算について」と「Ｂ株式会社の決算について」とを比較する際に、「Ａ株式会社」のハッシュ値と「Ｂ株式会社」のハッシュ値とが衝突し、「Ａ株式会社」と「Ｂ株式会社」とを区別できなくなる。その結果、類似文書を検索する際の比較精度が低下してしまう。
【００１０】
一つの側面では、異なるキーワード同士のハッシュ値の衝突を回避して類似文書を検索する際の比較精度の向上を図る文書管理装置、文書管理プログラム及び文書管理方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
一つの態様では、算出部と、判定部と、変更部と、制御部とを有する。算出部は、演算パラメータを用いて文書中の各キーワードのハッシュ値を算出する。判定部は、異なるキーワード同士でハッシュ値の衝突があるか否かを判定する。変更部は、前記ハッシュ値の衝突がある場合に、衝突した一方のキーワードのハッシュ値を算出した前記演算パラメータを変更する。制御部は、変更した前記演算パラメータを用いて前記一方のキーワードのハッシュ値を前記算出部に算出させ、前記ハッシュ値の衝突を回避できた演算パラメータ及び当該一方のキーワードをルール情報として登録して管理する。
【発明の効果】
【００１２】
一つの側面として、異なるキーワード同士のハッシュ値の衝突を回避して類似文書を検索する際の比較精度の向上が図れる。
【図面の簡単な説明】
【００１３】
【図１】図１は、実施例１の文書管理システムの一例を示す説明図である。
【図２】図２は、操作ログ及びＦＰの一例を示す説明図である。
【図３】図３は、重要リストのレコード構成の一例を示す説明図である。
【図４】図４は、定義リストのレコード構成の一例を示す説明図である。
【図５】図５は、ＦＰログＤＢのレコード構成の一例を示す説明図である。
【図６】図６は、実施例１の衝突回避の演算方式の一例を図式化した説明図である。
【図７】図７は、定義リスト登録処理に関わるクライアント内のＣＰＵの処理動作の一例を示すフローチャートである。
【図８】図８は、ＦＰ生成処理に関わるクライアント内のＣＰＵの処理動作の一例を示すフローチャートである。
【図９】図９は、類似検索処理に関わる文書管理システムの処理動作の一例を示すフローチャートである。
【図１０】図１０は、クライアント側の検索要求画面の一例を示す説明図である。
【図１１】図１１は、検索対象文書に類似した操作ログの検索結果画面の一例を示す説明図である。
【図１２】図１２は、実施例２の衝突回避の演算方式の一例を図式化した説明図である。
【図１３】図１３は、実施例３の文書管理システム内の重要リストのレコード構成の一例を示す説明図である。
【図１４】図１４は、実施例３の定義リスト登録処理に関わるクライアント内のＣＰＵの処理動作の一例を示すフローチャートである。
【図１５】図１５は、実施例３の衝突回避の演算方式の一例を図式化した説明図である。
【図１６】図１６は、文書管理プログラムを実行するコンピュータの一例を示す説明図である。
【発明を実施するための形態】
【００１４】
以下、図面に基づいて、本願の開示する文書管理装置、文書管理プログラム及び文書管理方法の実施例を詳細に説明する。尚、本実施例により、開示技術が限定されるものではない。また、以下に示す実施例は、矛盾を起こさない範囲で適宜組み合わせても良い。
【実施例１】
【００１５】
文書管理システム１は、複数のクライアント２と、監視サーバ３とを有する。クライアント２（２Ａ）は、社内情報機器側の文書ファイルに関するファイル操作のログを監視すると共に、ファイル操作の文書のＦＰを生成する。監視サーバ３は、各クライアント２からの操作ログ及び操作ログの文書のＦＰを登録して管理する。更に、監視サーバ３は、クライアント２（２Ｂ）からの検索要求に応じて検索対象文書のＦＰを取得すると、検索対象文書のＦＰに類似する管理文書のＦＰの操作ログを検索し、その検索結果を出力する。尚、検索対象文書は、クライアント２から監視サーバ３に対して検索を求める、例えば、情報漏洩の文書である。管理文書とは、監視サーバ３内で管理された操作ログの文書である。
【００１６】
クライアント２は、入力側インタフェース１１と、出力側インタフェース１２と、操作部１３と、表示部１４と、記憶部１５と、ＣＰＵ１６とを有する。入力側インタフェース１１は、例えば、図示せぬクライアント側と接続し、クライアント側のファイル操作を監視する通信インタフェースである。出力側インタフェース１２は、例えば、監視サーバ３と接続する出力側の通信インタフェースである。
【００１７】
操作部１３は、各種コマンドを入力する入力インタフェースである。表示部１４は、各種情報を画面表示する出力インタフェースである。記憶部１５は、各種情報を記憶する領域である。ＣＰＵ１６は、クライアント２全体を制御する。
【００１８】
記憶部１５は、重要リスト２１と、定義リスト２２とを有する。図３は、重要リスト２１のレコード構成の一例を示す説明図である。図３に示す重要リスト２１は、例えば、出現頻度が高く、ハッシュ値が衝突しては困る重要キーワードを登録しておく記憶領域である。尚、重要リスト２１内の重要キーワード２１Ａは、クライアント２の利用者の設定操作に応じて登録可能とする。
【００１９】
図４は、定義リスト２２のレコード構成の一例を示す説明図である。図４に示す定義リスト２２は、重要キーワード２２Ａと、演算パラメータ２２Ｂとを対応付けて管理する記憶領域である。演算パラメータ２２Ｂは、後述するが、重要リスト２１内の異なる重要キーワード同士でハッシュ値の衝突を回避できた演算パラメータである。尚、演算パラメータは、例えば、キーワードのハッシュ値を算出するための剰余演算の定数に相当する。
【００２０】
ＣＰＵ１６は、ＦＰ生成部３１と、ログ生成部３２と、リスト生成部３３と、検索要求部３４と、制御部３５とを有する。ＦＰ生成部３１は、対象文書のＦＰを生成する処理部である。ログ生成部３２は、クライアント側の文書ファイルのファイル操作を監視し、その操作ログを生成する処理部である。リスト生成部３３は、前述した重要リスト２１及び定義リスト２２の内容を更新登録する処理部である。検索要求部３４は、監視サーバ３に対して検索対象文書に類似する管理文書の操作ログの検索を要求する処理部である。制御部３５は、ＣＰＵ１６全体を制御する。
【００２１】
ＦＰ生成部３１は、抽出部３１Ａと、範囲判定部３１Ｂと、第１の算出部３１Ｃと、ＦＰ制御部３１Ｄとを有する。ＦＰ生成部３１は、例えば、クライアント側のファイル操作や、利用者の検索要求を検出すると、対象文書のＦＰを生成するＦＰ生成処理を起動する。抽出部３１Ａは、対象文書のファイルをテキストに変換し、変換したテキストからキーワード及び該キーワードの出現位置（並び）を抽出する。範囲判定部３１Ｂは、抽出部３１Ａによって抽出されたキーワードの出現位置毎のキーワードを判定対象として、当該判定対象のキーワード前後に関わるテキスト中の所定範囲内に抽出された他のキーワードがあるか否かを判定する。
【００２２】
第１の算出部３１Ｃは、キー付き暗号ハッシュ演算を用いて各キーワードの中間ハッシュ値を算出する。尚、キー付き暗号ハッシュ演算は、例えば、ＳＨＡ−２５６等である。第１の算出部３１Ｃは、キーワードを構成する文字列の文字コードと、条件キーとなる文字列の文字コードとをハッシュ関数で演算し、その演算結果としてキーワードの中間ハッシュ値を算出する。尚、中間ハッシュ値は、例えば、３２バイトのように大きい数値になる。更に、第１の算出部３１Ｃは、中間ハッシュ値を定数ｎで剰余演算（ｍｏｄ演算）し、その演算結果として、定数ｎに対応したハッシュ範囲内のキーワードのハッシュ値を算出する。尚、ハッシュ範囲は、剰余演算の定数ｎを“１００００”とした場合、“０”〜“９９９９”の範囲となる。その結果、キーワードのハッシュ値は、０〜９９９９までのパターンにコンパクト化できる。
【００２３】
ＦＰ制御部３１Ｄは、第１の算出部３１Ｃでキーワードのハッシュ値を算出する際に、重要リスト２１及び定義リスト２２の判定結果に基づき、第１の算出部３１の演算パラメータを制御する。ＦＰ制御部３１Ｄは、範囲判定部３１Ｂによって他のキーワードがある場合に、判定対象のキーワード及び他のキーワードを各キーワードの出現位置の前後情報に対応付けて組み合わせた組合せ情報（前後の並び）を生成する。ＦＰ制御部３１Ｄは、判定対象のキーワードのハッシュ値と、他のキーワードのハッシュ値とを各キーワードの出現位置の前後情報に対応付けて組み合わせた組合せ情報を有向グラフ化して対象文書のＦＰを生成する。
【００２４】
ログ生成部３２は、社内情報機器側のファイル操作を監視し、その監視結果としてファイル操作の操作ログを生成する。図２は、操作ログ及びＦＰの一例を示す説明図である。図２の（Ａ）に示す操作ログ３２０は、日時３２１と、種別３２２と、ホスト３２３と、アカウント３２４と、ファイル名３２５と、ファイル名３２６と、ログＩＤ３２７とを有する。日時３２１は、ファイル操作を実行した日時である。種別３２２は、例えば、印刷、複製、更新、削除や作成等のファイル操作の種別である。ホスト３２３は、ファイル操作を実行した社内情報機器を管理するホストを識別するホスト名である。アカウント３２４は、ファイル操作を実行した社内情報機器の操作者のアカウント名である。ファイル名３２５、３２６は、ファイル操作を実行した文書のファイル名である。ログＩＤ３２７は、操作ログを識別するＩＤである。図２の（Ｂ）に示すＦＰ３３０は、ログＩＤ３３１と、有向グラフ３３２とを有する。ログＩＤ３３１は、操作ログ３２０と有向グラフ３３２とを関連付ける操作ログの識別ＩＤである。
【００２５】
リスト生成部３３は、検出部３３Ａと、第２の算出部３３Ｂと、判定部３３Ｃと、リスト制御部３３Ｄとを有する。検出部３３Ａは、重要リスト２１から未検証のキーワードを抽出する。尚、未検証のキーワードとは、例えば、重要リスト２１内の他のキーワードとのハッシュ値の衝突判定有無を検証していない重要リスト２１内のキーワードである。第２の算出部３３Ｂは、未検証のキーワードを抽出した場合、抽出キーワードのハッシュ値を算出する。尚、第２の算出部３３Ｂは、第１の算出部３１Ｃと同一条件キーのキー付き暗号ハッシュ演算及び同一定数ｎの剰余演算を実行する。
【００２６】
第２の算出部３３Ｂは、抽出キーワードに対するキー付き暗号ハッシュ演算を実行し、抽出キーワードの中間ハッシュ値を算出する。更に、第２の算出部３３Ｂは、算出した中間ハッシュ値を定数ｎで剰余演算し、その演算結果として、抽出キーワードのハッシュ値を算出する。
【００２７】
判定部３３Ｃは、重要リスト２１内に抽出キーワードのハッシュ値と衝突するキーワードがあるか否かを判定する。リスト制御部３３Ｄは、重要リスト２１内に抽出キーワードのハッシュ値と衝突するキーワードがある場合、第２の算出部３３Ｂに設定する演算パラメータを変更する。リスト制御部３３Ｄは、例えば、剰余演算の定数ｎを＋１減算して“１００００”から“９９９９”に変更する。そして、第２の算出部３３Ｂは、変更した剰余演算の定数ｎ−１に基づき、“０”〜“９９９８”のハッシュ範囲内で、抽出キーワードの中間ハッシュ値からハッシュ値を算出する。その結果、剰余演算の定数ｎを＋１減算し、そのハッシュ範囲を狭くできるため、ハッシュ値の衝突を回避できる。
【００２８】
そして、判定部３３Ｃは、変更した演算パラメータに基づき算出した抽出キーワードのハッシュ値と衝突するキーワードが重要リスト２１内にあるか否かを再度判定する。リスト制御部３３Ｄは、第２の算出部３３Ｂの設定する演算パラメータを“９９９９”から“９９９８”に変更する。第２の算出部３３Ｂは、例えば、剰余演算の定数ｎを“９９９８”に基づき、“０”〜“９９９７”のハッシュ範囲内で抽出キーワードの中間ハッシュ値からハッシュ値を算出する。そして、リスト制御部３３Ｄは、抽出キーワードのハッシュ値と衝突するキーワードが重要リスト２１から無くなるまで、演算パラメータを変更してハッシュ値の再計算を繰り返すことになる。
【００２９】
リスト制御部３３Ｄは、抽出キーワードのハッシュ値と衝突するキーワードが重要リスト２１内にない場合、その抽出キーワード及び、そのハッシュ値を算出した、変更した演算パラメータを対応付けてルール情報として定義リスト２２に登録する。
【００３０】
検索要求部３４は、監視サーバ３に対して検索対象文書に類似する管理文書の操作ログを要求する検索要求操作を検出すると、検索対象文書のＦＰをＦＰ生成部３１に生成させ、その生成した検索対象文書のＦＰの検索要求を制御部３５に通知する。
【００３１】
制御部３５は、社内情報機器側の対象文書のファイル操作を検出すると、ＦＰ生成部３１に対象文書のＦＰの生成処理及び、ログ生成部３２にファイル操作の操作ログの生成処理を指示する。そして、制御部３５は、その生成した、図２の（Ａ）に示す操作ログ３２０及び図２の（Ｂ）に示すＦＰ３３０をＦＰログとして監視サーバ３に通知する。
【００３２】
制御部３５は、リスト生成部３３を通じて重要リスト２１又は定義リスト２２の更新を検出すると、重要リスト２１又は定義リスト２２の更新内容を、監視サーバ３を通じて各クライアント２に通知する。その結果、文書管理システム１内の各クライアント２は、重要リスト２１及び定義リスト２２の内容を同一内容で共有化できる。
【００３３】
更に、制御部３５は、検索要求部３４を通じて検索要求を検出すると、検索対象文書のＦＰを含む検索要求を監視サーバ３に通知する。
【００３４】
監視サーバ３は、入力側インタフェース４１と、出力側インタフェース４２と、記憶部４３と、ＣＰＵ４４とを有する。記憶部４３は、ＦＰログＤＢ５０を有する。図５は、ＦＰログＤＢ５０のレコード構成の一例を示す説明図である。ＦＰログＤＢ５０は、日時５１と、種別５２と、ホスト５３と、アカウント５４と、ファイル名５５と、ファイル名５６と、ログＩＤ５７と、有向グラフ５８とを有する。日時５１は、ファイル操作を実行した日時である。種別５２は、例えば、印刷、複製、更新、削除や作成等のファイル操作の種別である。ホスト５３は、ホスト名である。アカウント５４は、ファイル操作を実行した操作者のアカウント名である。ファイル名５５，５６は、ファイル操作を実行した文書のファイル名である。ログＩＤ５７は、操作ログを識別するＩＤである。有向グラフ５８は、ファイル操作の対象文書のテキスト内の各キーワードのハッシュ値の前後の並びの関係を表現したＦＰの内容である。
【００３５】
ＣＰＵ４４は、登録部６１と、検索部６２とを有する。登録部６１は、各クライアント２からファイル操作のＦＰログを検出すると、そのＦＰログ内の操作ログ及びＦＰをログＩＤに対応付けてＦＰログＤＢ５０に登録する。
【００３６】
検索部６２は、各クライアント２からの検索要求を検出すると、その検索要求内の検索対象文書のＦＰに類似するＦＰに対応した操作ログをＦＰログＤＢ５０から検索する。検索部６２は、第１の類似判定部６２Ａと、第２の類似判定部６２Ｂとを有する。
【００３７】
第１の類似判定部６２Ａは、検索対象文書のＦＰ内の複数の組合せ情報と、ＦＰログＤＢ５０内の複数の管理文書のＦＰの組合せ情報とを比較する。第１の類似判定部６２Ａは、検索対象文書のＦＰの複数の組合せ情報の内、管理文書のＦＰの組合せ情報と一致する組合せ情報の数が第１の類似判定数以上であるか否かを判定する。
【００３８】
第２の類似判定部６２Ｂは、管理文書の組合せ情報と一致する組合せ情報の数が第１の類似判定数以上と判定された場合に、同一の所定範囲内に出現する３個以上のキーワードから組み合わされる組合せ情報の群が第２の類似判定数以上あるか否かを判定する。
【００３９】
検索部６２は、第１の類似判定部６２Ａ及び第２の類似判定部６２Ｂの判定結果に基づき、検索対象文書と管理文書との類似性を示す類似度を算出する。その結果、検索部６２は、検索対象文書との類似度が所定閾値以上の管理文書に関わる操作ログを検索結果として、検索要求を発行したクライアント２に通知する。尚、類似度の所定閾値は、類似度の最高値を１．０とした場合、例えば、０．７とする。
【００４０】
次に、実施例１のリスト生成部３３の重要リスト２１内の衝突回避動作について説明する。図６は、実施例１の衝突回避の演算方式の一例を図式化した説明図である。第２の算出部３３Ｂは、第１の算出部３１Ｃと同一のキー付き暗号ハッシュ演算及び剰余演算を実行する。
【００４１】
図６において重要リスト２１には、例えば、“Ａ株式会社”、“Ｂ株式会社”及び“Ｃ株式会社”が登録されているものとする。先ず、第２の算出部３３Ｂは、重要リスト２１内の“Ａ株式会社”のハッシュ値“９９９９”を算出したとする。尚、第２の算出部３３Ｂは、“Ａ株式会社”の文字コードと、条件キー“ｋｅｙ”の文字コードとをハッシュ関数で演算し、その演算結果として中間ハッシュ値を算出する。そして、第２の算出部３３Ｂは、中間ハッシュ値に定数ｎ“１００００”の剰余演算を実行し、その演算結果としてハッシュ値“９９９９”を算出する。判定部３３Ｃは、“Ａ株式会社”のハッシュ値“９９９９”と衝突したキーワードが重要リスト２１内にあるか否かを判定し、初回の判定であるため、ハッシュ値と衝突する他のキーワードがないものと判断する。
【００４２】
次に、第２の算出部３３Ｂは、重要リスト２１内の、例えば、“Ｂ株式会社”のハッシュ値“９９９９”を算出したとする。この際、判定部３３Ｃは、重要リスト２１内に“Ｂ株式会社”のハッシュ値“９９９９”と衝突したキーワード“Ａ株式会社”があると判定することになる。その結果、リスト制御部３３Ｄは、第２の算出部３３Ｂの剰余演算の定数ｎを“１００００”から“９９９９”に変更し、その変更パラメータである定数ｎ“９９９９”を第２の算出部３３Ｂに設定する。
【００４３】
そして、第２の算出部３３Ｂは、“Ｂ株式会社”の中間ハッシュ値に変更パラメータの定数ｎ“９９９９”の剰余演算を実行し、“Ｂ株式会社”のハッシュ値“９９９８”を算出したとする。そして、リスト制御部３３Ｄは、重要リスト２１内に“Ｂ株式会社”のハッシュ値“９９９８”と衝突したキーワードがないため、衝突を回避できた変更パラメータである定数ｎ“９９９９”及び“Ｂ株式会社”を定義リスト２２内に登録する。
【００４４】
次に、第２の算出部３３Ｂは、重要リスト２１内の、例えば、“Ｃ株式会社”のハッシュ値“９９９９”を算出したとする。この際、判定部３３Ｃは、重要リスト２１内に“Ｃ株式会社”のハッシュ値“９９９９”と衝突したキーワード“Ａ株式会社”があると判定することになる。その結果、リスト制御部３３Ｄは、第２の算出部３３Ｂの剰余演算の定数ｎを“１００００”から“９９９９”に変更し、その変更パラメータである定数ｎ“９９９９”を第２の算出部３３Ｂに設定する。
【００４５】
そして、第２の算出部３３Ｂは、“Ｃ株式会社”の中間ハッシュ値に変更パラメータの定数ｎ“９９９９”の剰余演算を実行し、“Ｃ株式会社”のハッシュ値“９９９８”を算出したとする。この際、判定部３３Ｃは、重要リスト２１内に“Ｃ株式会社”のハッシュ値“９９９８”と衝突するキーワード“Ｂ株式会社”があると判定することになる。その結果、リスト制御部３３Ｄは、第２の算出部３３Ｂの剰余演算の定数ｎを“９９９９”から“９９９８”に変更し、その変更パラメータである定数ｎ“９９９８”を第２の算出部３３Ｂに設定する。
【００４６】
そして、第２の算出部３３Ｂは、“Ｃ株式会社”の中間ハッシュ値に変更パラメータの定数ｎ“９９９８”の剰余演算を実行し、“Ｃ株式会社”のハッシュ値“９９９７”を算出したとする。この際、判定部３３Ｃは、重要リスト２１内に“Ｃ株式会社”のハッシュ値“９９９７”と衝突したキーワードがないと判定することになる。リスト制御部３３Ｄは、重要リスト２１内に“Ｃ株式会社”のハッシュ値“９９９７”と衝突したキーワードがないため、衝突を回避できた変更パラメータである定数ｎ“９９９８”及び“Ｃ株式会社”を定義リスト２２内に登録する。
【００４７】
また、ＦＰ生成部３１のＦＰ制御部３１Ｄは、第１の算出部３１Ｃを通じて、抽出キーワードのハッシュ値を算出する場合、抽出キーワードが重要リスト２１内にあるか否かを判定する。ＦＰ制御部３１Ｄは、抽出キーワードが重要リスト２１内にない場合、第１の算出部３１Ｃを通じて、通常の演算パラメータを用いて抽出キーワードのハッシュ値を算出する。尚、通常の演算パラメータは、前述した通り、剰余演算の定数ｎ“１００００”である。
【００４８】
ＦＰ制御部３１Ｄは、抽出キーワードが重要リスト２１内にある場合、抽出キーワードが定義リスト２２内にあるか否かを判定する。ＦＰ制御部３１Ｄは、抽出キーワードが定義リスト２２内にない場合、第１の算出部３１Ｃを通じて、通常の演算パラメータを用いて抽出キーワードのハッシュ値を算出する。
【００４９】
更に、ＦＰ制御部３１Ｄは、抽出キーワードが定義リスト２２内にある場合、定義リスト２２内の抽出キーワードに対応する変更パラメータを用いて、第１の算出部３１Ｃを通じて抽出キーワードのハッシュ値を算出する。
【００５０】
次に実施例１の文書管理システム１の動作について説明する。図７は、定義リスト登録処理に関わるクライアント２内のＣＰＵ１６の処理動作の一例を示すフローチャートである。図７に示す定義リスト登録処理は、重要リスト２１内で異なる重要キーワード同士でハッシュ値の衝突が生じた場合に、その重要キーワードの演算パラメータを変更し、衝突を回避できた演算パラメータ及びキーワードを定義リスト２２内に登録する処理である。
【００５１】
ＣＰＵ１６内のリスト生成部３３内の検出部３３Ａは、重要リスト２１内に未検証のキーワードがあるか否かを判定する（ステップＳ１１）。検出部３３Ａは、重要リスト２１内に未検証のキーワードがある場合（ステップＳ１１肯定）、そのキーワードを抽出する（ステップＳ１２）。リスト生成部３３内の第２の算出部３３Ｂは、通常の演算パラメータに基づき抽出キーワードのハッシュ値を算出する（ステップＳ１３）。尚、通常の演算パラメータは、中間ハッシュ値を剰余演算する際に使用する定数ｎ、例えば、“１００００”である。リスト生成部３３内の判定部３３Ｃは、重要リスト２１内に、抽出キーワードのハッシュ値と衝突したキーワードがあるか否かを判定する（ステップＳ１４）。
【００５２】
判定部３３Ｃは、抽出キーワードのハッシュ値と衝突したキーワードがある場合（ステップＳ１４肯定）、通常の演算パラメータを変更し、その変更した演算パラメータを第２の算出部３３Ｂに設定する（ステップＳ１５）。尚、リスト制御部３３Ｄは、中間ハッシュ値を剰余演算する際に使用する定数ｎを変更の都度、＋１減算して変更する。第２の算出部３３Ｂは、変更した定数ｎの剰余演算で抽出キーワードのハッシュ値を算出する（ステップＳ１６）。
【００５３】
判定部３３Ｃは、重要リスト２１内に、抽出キーワードのハッシュ値と衝突したキーワードがあるか否かを判定する（ステップＳ１７）。リスト生成部３３内のリスト制御部３３Ｄは、抽出キーワードのハッシュ値と衝突したキーワードがある場合に（ステップＳ１７肯定）、再度、第２の算出部３３Ｂの演算パラメータを変更すべく、ステップＳ１５に移行する。
【００５４】
リスト制御部３３Ｄは、抽出キーワードのハッシュ値と衝突したキーワードがない場合（ステップＳ１７否定）、衝突を回避できた、その変更した演算パラメータ及び、その抽出キーワードを対応付けて定義リスト２２内に登録する（ステップＳ１８）。更に、リスト制御部３３Ｄは、抽出キーワード及び演算パラメータを定義リスト２２内に登録後、重要リスト２１内に未検証のキーワードがあるか否かを判定する（ステップＳ１９）。
【００５５】
検出部３３Ａは、重要リスト２１内に未検証のキーワードがある場合（ステップＳ１９肯定）、未検証のキーワードを抽出すべく、ステップＳ１２に移行する。更に、リスト制御部３３Ｄは、重要リスト２１内に未検証のキーワードがない場合（ステップＳ１９否定）、その重要リスト２１及び定義リスト２２の更新内容を出力し（ステップＳ２０）、図７に示す処理動作を終了する。尚、制御部３５は、重要リスト２１及び定義リスト２２の更新内容を、監視サーバ３を通じて文書管理システム１内の他のクライアント２に配信する。その結果、各クライアント２は、通知された更新内容に応じて重要リスト２１及び定義リスト２２の内容を更新する。
【００５６】
また、検出部３３Ａは、重要リスト２１内に未検証のキーワードがない場合（ステップＳ１１否定）、図７に示す処理動作を終了する。また、リスト制御部３３Ｄは、抽出キーワードのハッシュ値と衝突したキーワードがない場合（ステップＳ１４否定）、重要リスト２１内に未検証のキーワードがあるか否かを判定すべく、ステップＳ１９に移行する。
【００５７】
図７に示す定義リスト登録処理を実行するＣＰＵ１６は、重要リスト２１内に異なる重要キーワード同士でハッシュ値の衝突が生じた場合、一方の重要キーワードのハッシュ値を算出する際の演算パラメータを変更し、そのハッシュ値を再計算する。そして、ＣＰＵ１６は、ハッシュ値の衝突を回避した場合、その衝突を回避できた演算パラメータ及び、その重要キーワードを対応付けてルール情報として定義リスト２２内に登録する。その結果、重要リスト２１内の重要キーワード同士のハッシュ値の衝突を回避できる。
【００５８】
図８は、ＦＰ生成処理に関わるクライアント２内のＣＰＵ１６の処理動作の一例を示すフローチャートである。図８に示すＦＰ生成処理は、対象文書のＦＰを生成する処理である。図８においてＣＰＵ１６内のＦＰ生成部３１は、対象文書のファイルを入力したか否かを判定する（ステップＳ３１）。ＦＰ生成部３１内の範囲判定部３１Ｂは、対象文書のファイルを入力した場合（ステップＳ３１肯定）、対象文書をテキスト変換し（ステップＳ３２）、変換したテキストから未抽出のキーワードがあるか否かを判定する（ステップＳ３３）。
【００５９】
ＦＰ生成部３１内のＦＰ制御部３１Ｄは、未抽出のキーワードがある場合（ステップＳ３３肯定）、重要リスト２１内に、未抽出のキーワードがあるか否かを判定する（ステップＳ３４）。ＦＰ生成部３１内の抽出部３１Ａは、重要リスト２１内に、未抽出のキーワードがない場合（ステップＳ３４否定）、未抽出のキーワードを抽出する（ステップＳ３５）。ＦＰ制御部３１Ｄは、第１の算出部３１Ｃを通じて通常の演算パラメータを用いて抽出キーワードのハッシュ値を算出する（ステップＳ３６）。
【００６０】
範囲判定部３１Ｂは、抽出キーワードのハッシュ値を算出した後、テキスト内に未抽出のキーワードがあるか否かを判定する（ステップＳ３７）。抽出部３１Ａは、未抽出のキーワードがある場合（ステップＳ３７肯定）、その未抽出のキーワードを抽出すべく、ステップＳ３５に移行する。
【００６１】
ＦＰ制御部３１Ｄは、未抽出のキーワードがない場合（ステップＳ３７否定）、各キーワードのハッシュ値の前後並びの関係を有向グラフ化した対象文書のＦＰを生成する（ステップＳ３８）。そして、ＦＰ制御部３１Ｄは、その対象文書のＦＰを出力し（ステップＳ３９）、図８に示す処理動作を終了する。
【００６２】
ＦＰ制御部３１Ｄは、重要リスト２１内に、未抽出のキーワードがある場合（ステップＳ３４肯定）、未抽出のキーワードを抽出する（ステップＳ４０）。ＦＰ制御部３１Ｄは、抽出キーワードが定義リスト２２内にあるか否かを判定する（ステップＳ４１）。ＦＰ制御部３１Ｄは、抽出キーワードが定義リスト２２内にある場合（ステップＳ４１肯定）、第１の算出部３１Ｃを通じて、定義リスト２２内の抽出キーワードに対応する演算パラメータを用いて抽出キーワードのハッシュ値を算出する（ステップＳ４２）。その結果、対象文書のＦＰを生成する際に、重要リスト２１内の重要キーワードに関するハッシュ値の衝突を回避できる。範囲判定部３１Ｂは、テキスト内に未抽出のキーワードがあるか否かを判定すべく、ステップＳ３４に移行する。
【００６３】
ＦＰ制御部３１Ｄは、抽出キーワードが定義リスト２２内にない場合（ステップＳ４１否定）、第１の算出部３１Ｃを通じて通常の演算パラメータを用いて抽出キーワードのハッシュ値を算出する（ステップＳ４３）。そして、ＦＰ制御部３１Ｄは、重要リスト２１内に、未抽出のキーワードがあるか否かを判定すべく、ステップＳ３４に移行する。
【００６４】
図８に示すＦＰ生成処理を実行するＣＰＵ１６は、対象文書のテキスト内の各キーワードのハッシュ値を算出し、算出した各キーワードのハッシュ値の前後並びの関係を有向グラフ化し、対象文書のＦＰを生成する。その結果、対象文書を原文でなく、対象文書のＦＰにすることで、対象文書のデータ量を軽量化できる。
【００６５】
ＣＰＵ１６は、対象文書のテキスト内の抽出キーワードが定義リスト２２内にある場合、第１の算出部３１Ｃを通じて、定義リスト２２内の抽出キーワードに対応する演算パラメータを用いて抽出キーワードのハッシュ値を算出する。その結果、対象文書のＦＰを生成する際に、重要リスト２１内の重要キーワードに関するハッシュ値の衝突を回避できる。
【００６６】
図９は、類似検索処理に関わる文書管理システム１の処理動作の一例を示すフローチャートである。図９に示す類似検索処理は、クライアント２からの検索対象文書に類似する管理文書のＦＰに対応する操作ログをＦＰログＤＢ５０から検索し、その検索結果を出力する処理である。
【００６７】
図９においてクライアント２内のＣＰＵ１６の検索要求部３４は、検索対象文書に類似する文書の検索を要求する検索要求操作を検出したか否かを判定する（ステップＳ５１）。検索要求部３４は、検索要求操作を検出した場合（ステップＳ５１肯定）、検索対象文書のファイルの入力を検出したか否かを判定する（ステップＳ５２）。尚、検索対象文書のファイルとは、検索対象文書の原文の生データである。図１０は、クライアント２側の検索要求画面の一例を示す説明図である。クライアント２の利用者は、図１０に示す検索要求画面１４１の入力欄１４１Ａに検索対象文書のファイルを入力し、検索要求画面１４１上の検索ボタン１４１Ｂのボタン操作に応じてファイル入力を完了する。
【００６８】
検索要求部３４は、検索対象文書のファイル入力を検出した場合（ステップＳ５２肯定）、ＦＰ生成部３１を通じて検索対象文書のＦＰを生成するＦＰ生成処理を実行する（ステップＳ５３）。検索要求部３４は、検索対象文書のＦＰの生成が完了したか否かを判定する（ステップＳ５４）。
【００６９】
ＣＰＵ１６内の制御部３５は、検索対象文書のＦＰの生成が完了した場合（ステップＳ５４肯定）、検索対象文書のＦＰを含む検索要求を監視サーバ３に通知する（ステップＳ５５）。
【００７０】
監視サーバ３側のＣＰＵ４４内の検索部６２は、クライアント２からの検索対象文書のＦＰを含む検索要求を検出すると、検索対象文書のＦＰと同一の有向グラフを保持するＦＰの管理文書の操作ログをＦＰログＤＢ５０から検索する（ステップＳ５６）。検索部６２は、検索結果で得たＦＰの操作ログ毎の有向グラフ数（類似度）を集計し（ステップＳ５７）、操作ログ毎の集計結果に基づき、類似度が所定閾値以上の操作ログを検索出力し（ステップＳ５８）、図９に示す処理動作を終了する。尚、ステップＳ５８の類似度が所定閾値以上の操作ログの検索出力とは、例えば、検索要求を発行したクライアント２に当該操作ログを通知する処理である。クライアント２は、図１１に示すように検索対象文書に類似した管理文書の操作ログの検索結果画面１４２を表示部１４に表示出力する。図１１は、検索対象文書に類似した操作ログの検索結果画面１４２の一例を示す説明図である。図１１に示す検索結果画面１４２は、アカウント１４２Ａ、ファイル名１４２Ｂ、類似度１４２Ｃ、種別１４２Ｄ及び日付１４２Ｅを対応付けて出力した画面である。図１１に示す検索結果画面１４２では、例えば、１．０を類似度の最高とした場合、０．７以上の類似度を有する操作ログを検索結果として表示する。その結果、クライアント２の利用者は、検索結果画面１４２を見て類似度の高い操作ログを視認し、アカウント“四郎”が印刷して検索対象文書に類似した管理文書を持ち出した可能性が高いと認識できる。
【００７１】
図９に示す類似検索処理を実行する監視サーバ３は、クライアント２から検索対象文書のＦＰの検索要求を検出すると、検索対象文書のＦＰに類似する管理文書のＦＰの操作ログをＦＰログＤＢ５０から検索し、その検索結果を出力する。その結果、クライアント２側の調査者は、検索結果画面１４２を見て、検索対象文書に類似する管理文書の操作ログを認識できる。
【００７２】
実施例１のクライアント２は、重要リスト２１内の異なる重要キーワード同士でハッシュ値の衝突があるか否かを判定し、ハッシュ値の衝突がある場合に、衝突した重要キーワードのハッシュ値を算出する剰余演算の定数ｎを変更する。クライアント２は、変更した剰余演算の定数を用いて衝突した重要キーワードのハッシュ値を再計算し、ハッシュ値の衝突がない場合、その衝突を回避できた演算パラメータである剰余演算の定数及び重要キーワードをルール情報として定義リスト２２内に登録する。その結果、剰余演算の定数ｎを変更して重要リスト２１内の重要キーワード同士のハッシュ値の衝突を回避できる。
【００７３】
クライアント２は、定義リスト２２を参照して文書中の複数のキーワードの内、定義リスト２２内のキーワードがある場合に、当該キーワードに対応する剰余演算の定数ｎを用いて、当該キーワードのハッシュ値を算出する。その結果、重要リスト２１内の重要キーワード同士のハッシュ値の衝突を回避して類似文書を検索する際の比較精度の向上が図れる。
【００７４】
クライアント２は、定義リスト２２の内容を更新した場合、その定義リスト２２の更新内容を文書管理システム１内の他のクライアント２に通知する。その結果、文書管理システム１内の各クライアント２は、定義リスト２２の内容を同一内容で共有化できる。
【００７５】
尚、上記実施例１の定義リスト登録処理では、重要リスト２１内の抽出キーワードのハッシュ値を算出し、算出した抽出キーワードのハッシュ値と衝突するキーワードが重要リスト２１内にある場合に、剰余演算の定数ｎを変更した。しかしながら、ハッシュ値ではなく、その前処理の重要リスト２１内の抽出キーワードの中間ハッシュ値を算出し、その中間ハッシュ値を用いて衝突があるか否かを判定するようにしても良い。
【００７６】
定義リスト登録処理では、ハッシュ値の衝突が生じた場合、演算パラメータの変更として、剰余演算の定数ｎを＋１単位で減算した。しかしながら、定数ｎを＋１単位で減算することに限定されるものではなく、定数ｎを変更してハッシュ範囲を変更することでハッシュ値の衝突を回避できるのであれば、これらに限定されるものではない。
【００７７】
図８に示すＦＰ生成処理では、ステップＳ３４にて重要リスト２１内に、テキスト内で未抽出のキーワードがあるか否かを判定し、未抽出のキーワードがある場合に、抽出キーワードが定義リスト２２内にあるか否かを判定した。しかしながら、ステップＳ３４の処理の代わりに、定義リスト２２内に、テキスト内で未抽出のキーワードがあるか否かを判定するようにしても良い。そして、定義リスト２２内に未抽出のキーワードがある場合に、未抽出のキーワードを抽出し、変更パラメータを用いて抽出キーワードのハッシュ値を算出するステップＳ４２に移行するようにしても良い。更に、定義リスト２２内に未抽出のキーワードがない場合に、未抽出のキーワードを抽出すべく、ステップＳ３５に移行するようにしても良い。
【００７８】
上記実施例１のリスト生成部３３は、重要リスト２１内の重要キーワード同士でハッシュ値の衝突が生じた場合、剰余演算の定数ｎを変更し、変更した定数ｎの剰余演算を用いて衝突した重要キーワードのハッシュ値を再計算した。しかしながら、演算パラメータの変更として、剰余演算の定数ｎの変更に限定されるものではなく、次に説明するようにしても良く、この場合の実施の形態につき、実施例２として以下に説明する。
【実施例２】
【００７９】
図１２は、実施例２の衝突回避の演算方式の一例を図式化した説明図である。尚、実施例１の文書管理システム１と同一の構成には同一符号を付すことで、その重複する構成及び動作の説明については省略する。
【００８０】
リスト制御部３３Ｄは、重要リスト２１内に、重要キーワードのハッシュ値と衝突するキーワードがある場合、第２の算出部３３Ｂのキー付き暗号ハッシュ演算の演算パラメータである条件キーのキー内容を変更する。例えば、リスト制御部３３Ｄは、通常の条件キーが“ｋｅｙ”の場合、“ｋｅｙａｄｄ”のようにキー内容を変更する。
【００８１】
図１２において重要リスト２１には、例えば、“Ａ株式会社”及び“Ｂ株式会社”が登録されているものとする。先ず、第２の算出部３３Ｂは、重要リスト２１内の“Ａ株式会社”のハッシュ値“９９９９”を算出したとする。尚、第２の算出部３３Ｂは、“Ａ株式会社”の文字コードと、条件キー“ｋｅｙ”の文字コードとをハッシュ関数で演算し、その演算結果として中間ハッシュ値を算出する。そして、第２の算出部３３Ｂは、中間ハッシュ値に定数ｎ“１００００”の剰余演算を実行し、その演算結果としてハッシュ値“９９９９”を算出する。判定部３３Ｃは、“Ａ株式会社”のハッシュ値“９９９９”と衝突したキーワードが重要リスト２１内にあるか否かを判定し、初回の判定であるため、ハッシュ値と衝突する他のキーワードがないものと判断する。
【００８２】
次に、第２の算出部３３Ｂは、重要リスト２１内の、例えば、“Ｂ株式会社”のハッシュ値“９９９９”を算出したとする。この際、判定部３３Ｃは、重要リスト２１内に“Ｂ株式会社”のハッシュ値“９９９９”と衝突したキーワード“Ａ株式会社”があると判定することになる。その結果、リスト制御部３３Ｄは、第２の算出部３３Ｂのキー付き暗号ハッシュ演算の条件キーのキー内容を“ｋｅｙ”から“ｋｅｙａｄｄ”に変更し、その変更パラメータである条件キーのキー内容を第２の算出部３３Ｂに設定する。
【００８３】
そして、第２の算出部３３Ｂは、“Ｂ株式会社”の文字コードと、“ｋｅｙａｄｄ”の文字コードとをハッシュ関数で演算し、その演算結果として中間ハッシュ値を算出する。そして、第２の算出部３３Ｂは、中間ハッシュ値に定数ｎ“１００００”の剰余演算を実行し、その演算結果としてハッシュ値“９９９８”を算出したとする。そして、リスト制御部３３Ｄは、重要リスト２１内に“Ｂ株式会社”のハッシュ値“９９９８”と衝突したキーワードがないため、衝突を回避できた演算パラメータである条件キー２２Ｃの“ｋｅｙａｄｄ”及び“Ｂ株式会社”を定義リスト２２内に登録する。
【００８４】
上記実施例２のクライアント２では、重要リスト２１内の重要キーワード同士でハッシュ値の衝突が生じた場合、衝突した重要キーワードのハッシュ値を算出したキー付き暗号ハッシュ演算の条件キーのキー内容を変更する。クライアント２は、変更した条件キーのキー内容を用いて衝突した重要キーワードのハッシュ値を再計算し、ハッシュ値の衝突がない場合、衝突を回避できた演算パラメータの条件キーのキー内容及び重要キーワードをルール情報として定義リスト２２内に登録する。その結果、条件キーのキー内容を変更して重要リスト２１内の重要キーワード同士のハッシュ値の衝突を回避できる。
【００８５】
クライアント２は、定義リスト２２を参照して文書中の複数のキーワードの内、定義リスト２２内のキーワードがある場合に、当該キーワードに対応する条件キーのキー内容を用いて、当該キーワードのハッシュ値を算出する。その結果、重要リスト２１内の重要キーワード同士のハッシュ値の衝突を回避して類似文書を検索する際の比較精度の向上が図れる。
【００８６】
クライアント２は、定義リスト２２の内容を更新した場合、その定義リスト２２の更新内容を文書管理システム１内の他のクライアント２に通知する。その結果、文書管理システム１内の各クライアント２は、定義リスト２２の内容を同一内容に共有化できる。
【００８７】
上記実施例２では、キー付き暗号ハッシュ演算の条件キーのキー内容を変更すべく、“ｋｅｙ”を“ｋｅｙａｄｄ”に変更したが、このキー内容に限定されるものではなく、適宜変更可能である。
【００８８】
尚、上記実施例１及び２では、異なるキーワード同士でハッシュ値の衝突が生じた場合に、ハッシュ値を算出する際に使用する演算パラメータの内容を変更した。そこで、他の方策として、衝突した一方のキーワードのハッシュ値に所定加算値（−１）を加算してハッシュ値の衝突を回避し、そのハッシュ値の衝突を回避した加算値を当該キーワードに対応付けてルールとして登録することも想定できる。例えば、「Ａ株式会社」及び「Ｂ株式会社」がハッシュ値“９９９９”で衝突している場合に所定加算値（−１）を加え、「Ａ株式会社」を“９９９９”、「Ｂ株式会社」を“９９９８”にしてハッシュ値の衝突を回避できる。しかしながら、単純な加算値計算の場合、ハッシュ値から高確率で「Ａ株式会社」及び「Ｂ株式会社」のキーワードが推測されてしまう。これに対して、上記実施例１及び２では、剰余演算の定数ｎや条件キーのキー内容を変更し、キーワード推測が困難となる。
【００８９】
異なるキーワード同士のハッシュ値の衝突を回避するために、ハッシュ値の衝突が回避できるまで、そのキーワードのハッシュ値の再計算を繰り返し、その計算回数をキーワードに対応づけてルールとして登録することも想定できる。しかしながら、ハッシュ値の衝突が回避できるまでハッシュ値の再計算を繰り返す方法は、そのハッシュ計算に要する処理負担が非常に大きくなる。これに対して、上記実施例１及び２では、剰余演算の定数ｎや条件キーのキー内容を変更するため、衝突を回避できるまでに要するハッシュ計算の回数を抑制できるため、その処理負担を抑制できる。
【００９０】
上記実施例１及び２では、重要キーワードをハッシュ値が取り得る数値以上に増やすことができないといった課題がある。そこで、このような数値の上限を増やすため、重要キーワードをカテゴリ別に分類しても良く、この場合の実施の形態につき、実施例３として以下に説明する。尚、実施例２の文書管理システム１と同一の構成には同一符号を付すことで、その重複する構成及び動作の説明については省略する。
【実施例３】
【００９１】
図１３は、実施例３の重要リスト２１０のレコード構成の一例を示す説明図である。図１３に示す重要リスト２１０は、カテゴリ２１０Ａと、重要キーワード２１０Ｂとを対応付けて管理する。カテゴリ２１０Ａは、重要キーワードのカテゴリに相当し、例えば、企業名、商品名や地名や苗字等である。
【００９２】
ＣＰＵ１６内のリスト生成部３３は、重要キーワードをカテゴリ毎に分類し、同一カテゴリ内の重要キーワード同士でハッシュ値の衝突があった場合に、衝突したハッシュ値を算出する演算パラメータであるキー条件のキー内容を変更する。そして、リスト生成部３３は、変更した演算パラメータで衝突したキーワードのハッシュ値を再計算し、その衝突を回避できた演算パラメータである条件キーのキー内容及び重要キーワードを対応付けて定義リスト２２内に登録する。また、リスト生成部３３は、異なるカテゴリ内の重要キーワード同士でハッシュ値の衝突があった場合、衝突したハッシュ値の演算パラメータを変更しない。つまり、異なるカテゴリ内で重要キーワードのハッシュ値が衝突した場合には、ハッシュ値の衝突を許容する。その理由は、異なるカテゴリでは隣接するキーワードの分布が異なるため、ハッシュ値が衝突しても特徴として同一と判断される可能性が低く、ハッシュ値の衝突を回避しなくても、衝突の影響が小さいためである。
【００９３】
図１４は、実施例３の定義リスト登録処理に関わるクライアント２内のＣＰＵ１６の処理動作の一例を示すフローチャートである。定義リスト登録処理は、重要リスト２１０内の同一カテゴリ内の重要キーワード同士でハッシュ値の衝突が生じた場合に、重要キーワードの演算パラメータを変更し、衝突を回避できた演算パラメータ及び重要キーワードを定義リスト２１０内に登録する処理である。
【００９４】
図１４においてＣＰＵ１６内のリスト生成部３３内の検出部３３Ａは、重要リスト２１０内に未検証のキーワードがあるか否かを判定する（ステップＳ６１）。検出部３３Ａは、重要リスト２１０内に未検証のキーワードがある場合（ステップＳ６１肯定）、そのキーワードを抽出する（ステップＳ６２）。リスト生成部３３内の第２の算出部３３Ｂは、通常の演算パラメータで抽出キーワードのハッシュ値を算出する（ステップＳ６３）。尚、通常の演算パラメータは、中間ハッシュ値を算出する際の条件キー、例えば、“ｋｅｙ”である。リスト生成部３３内の判定部３３Ｃは、重要リスト２１０内の抽出キーワードのカテゴリ内に、抽出キーワードのハッシュ値と衝突したキーワードがあるか否かを判定する（ステップＳ６４）。
【００９５】
判定部３３Ｃは、抽出キーワードのカテゴリ内に、抽出キーワードのハッシュ値と衝突したキーワードがある場合（ステップＳ６４肯定）、通常の演算パラメータを変更し、その変更した演算パラメータを第２の算出部３３Ｂに設定する（ステップＳ６５）。尚、リスト制御部３３Ｄは、中間ハッシュ値を算出する際の条件キーのキー内容、例えば、“ｋｅｙ”から“ｋｅｙａｄｄ”に変更する。第２の算出部３３Ｂは、変更した演算パラメータの条件キーを用いて抽出キーワードのハッシュ値を算出する（ステップＳ６６）。
【００９６】
判定部３３Ｃは、重要リスト２１０内の抽出キーワードのカテゴリ内に、抽出キーワードのハッシュ値と衝突したキーワードがあるか否かを判定する（ステップＳ６７）。リスト生成部３３内のリスト制御部３３Ｄは、抽出キーワードのカテゴリ内に、抽出キーワードのハッシュ値と衝突したキーワードがある場合に（ステップＳ６７肯定）、再度、第２の算出部３３Ｂの演算パラメータを変更すべく、ステップＳ６５に移行する。
【００９７】
リスト制御部３３Ｄは、抽出キーワードのカテゴリ内に、抽出キーワードのハッシュ値と衝突したキーワードがない場合（ステップＳ６７否定）、衝突を回避できた演算パラメータ及び抽出キーワードを対応付けて定義リスト２２内に登録する（ステップＳ６８）。更に、リスト制御部３３Ｄは、抽出キーワード及び変更パラメータを定義リスト２２内に登録した後、重要リスト２１０内に未検証のキーワードがあるか否かを判定する（ステップＳ６９）。
【００９８】
検出部３３Ａは、重要リスト２１０内に未検証のキーワードがある場合（ステップＳ６９肯定）、未検証のキーワードを抽出すべく、ステップＳ６２に移行する。更に、リスト制御部３３Ｄは、重要リスト２１０内に未検証のキーワードがない場合（ステップＳ６９否定）、その重要リスト２１０及び定義リスト２２の更新内容を出力し（ステップＳ７０）、図１４に示す処理動作を終了する。尚、制御部３５は、ステップＳ７０にて、例えば、監視サーバ３を通じて各クライアント２に更新内容を通知する。その結果、各クライアント２は、通知された更新内容に応じて重要リスト２１０及び定義リスト２２の内容を更新する。
【００９９】
また、検出部３３Ａは、重要リスト２１０内に未検証のキーワードがない場合（ステップＳ６１否定）、図１４に示す処理動作を終了する。また、リスト制御部３３Ｄは、抽出キーワードのカテゴリ内に、抽出キーワードのハッシュ値と衝突したキーワードがない場合（ステップＳ６４否定）、重要リスト２１０内に未検証のキーワードがあるか否かを判定すべく、ステップＳ６９に移行する。
【０１００】
定義リスト登録処理を実行するＣＰＵ１６は、重要リスト２１０内の抽出キーワードのカテゴリ内で抽出キーワードと他の重要キーワードとの間でハッシュ値の衝突が生じた場合、抽出キーワードのハッシュ値を算出する際の演算パラメータを変更する。そして、ＣＰＵ１６は、演算パラメータを変更してハッシュ値を再計算し、その衝突を回避できた演算パラメータ及び、その重要キーワードを対応付けてルール情報として定義リスト２２内に登録する。その結果、重要リスト２１０内の抽出キーワードのカテゴリ内で抽出キーワードと他のキーワードとの間でハッシュ値の衝突を回避できる。
【０１０１】
ＣＰＵ１６は、重要リスト２１０内の抽出キーワードと異なるカテゴリ内で、抽出キーワードと他のキーワードとの間でハッシュ値の衝突が生じた場合、演算パラメータを変更せず、ハッシュ値の衝突を許容する。その結果、重要リスト２１０内の異なるカテゴリ内で重要キーワード同士のハッシュ値の衝突が生じた場合でも、カテゴリが異なるため、ハッシュ値の衝突を許容することで定義リスト２２内への無駄な登録を抑制できる。
【０１０２】
図１５は、実施例３の衝突回避の演算方式の一例を図式化した説明図である。リスト制御部３３Ｄは、重要リスト２１０内の同一カテゴリである“企業名”に、重要キーワードのハッシュ値と衝突するキーワードがある場合、第２の算出部３３Ｂのキー付き暗号ハッシュ演算の演算パラメータである条件キーのキー内容を変更する。尚、リスト制御部３３Ｄは、例えば、通常の条件キーが“ｋｅｙ”の場合、“ｋｅｙａｄｄ”のようにキー内容を変更する。
【０１０３】
重要リスト２１０には、例えば、“Ａ株式会社”及び“Ｂ株式会社”が登録されているものとする。先ず、第２の算出部３３Ｂは、重要リスト２１０内の“Ａ株式会社”のハッシュ値“９９９９”を算出したとする。尚、第２の算出部３３Ｂは、“Ａ株式会社”の文字コードと、条件キー“ｋｅｙ”の文字コードとをハッシュ関数で演算し、その演算結果として中間ハッシュ値を算出する。そして、第２の算出部３３Ｂは、中間ハッシュ値に定数ｎ“１００００”の剰余演算を実行し、その演算結果としてハッシュ値“９９９９”を算出する。判定部３３Ｃは、“Ａ株式会社”のハッシュ値“９９９９”と衝突したキーワードが重要リスト２１０の同一カテゴリ内にあるか否かを判定し、初回の判定であるため、ハッシュ値と衝突する他のキーワードがないものと判断する。
【０１０４】
次に、第２の算出部３３Ｂは、重要リスト２１０内の、例えば、“Ｂ株式会社”のハッシュ値“９９９９”を算出したとする。この際、判定部３３Ｃは、重要リスト２１０の同一カテゴリ“企業名”内に“Ｂ株式会社”のハッシュ値“９９９９”と衝突したキーワード“Ａ株式会社”があると判定することになる。その結果、リスト制御部３３Ｄは、第２の算出部３３Ｂのキー付き暗号ハッシュ演算の条件キーのキー内容を“ｋｅｙ”から“ｋｅｙａｄｄ”に変更し、その変更パラメータである条件キーのキー内容を第２の算出部３３Ｂに設定する。
【０１０５】
そして、第２の算出部３３Ｂは、“Ｂ株式会社”の文字コードと、“ｋｅｙａｄｄ”の文字コードとをハッシュ関数で演算し、その演算結果として中間ハッシュ値を算出する。そして、第２の算出部３３Ｂは、中間ハッシュ値に定数ｎ“１００００”の剰余演算を実行し、その演算結果としてハッシュ値“９９９８”を算出したとする。その結果、リスト制御部３３Ｄは、重要リスト２１０内に“Ｂ株式会社”のハッシュ値“９９９８”と衝突したキーワードがないため、衝突を回避できた演算パラメータである条件キー２２Ｃの“ｋｅｙａｄｄ”及び“Ｂ株式会社”を定義リスト２２内に登録する。
【０１０６】
また、重要リスト２１０には、カテゴリ“苗字”の“川崎”及びカテゴリ“地名”の“横浜”が登録されているとする。尚、カテゴリ“苗字”の“川崎”及びカテゴリ“地名”の“横浜”のハッシュ値が“５５５５”の同一ハッシュ値とする。この際、リスト生成部３３は、“苗字”の“川崎”と“地名”の“横浜”との間でハッシュ値が衝突しているものの、そのカテゴリが異なるため、これら“苗字”の“川崎”及び“地名”の“横浜”のハッシュ値の衝突を許容することになる。
【０１０７】
実施例３では、重要リスト２１０内の抽出キーワードのカテゴリ内で抽出キーワードと他のキーワードとの間のハッシュ値の衝突が生じた場合に、抽出キーワードのハッシュ値を算出する際の演算パラメータを変更する。そして、ＣＰＵ１６は、演算パラメータを変更してハッシュ値を再計算し、衝突を回避できた演算パラメータ及び抽出キーワードを対応付けてルール情報として定義リスト２２内に登録する。その結果、重要リスト２１０内の抽出キーワードのカテゴリ内で抽出キーワードと他のキーワードとの間でのハッシュ値の衝突を回避できる。
【０１０８】
実施例３では、重要リスト２１０内の抽出キーワードと異なるカテゴリ内で、抽出キーワードと他のキーワードとの間のハッシュ値の衝突が生じた場合、演算パラメータを変更せず、ハッシュ値の衝突を許容する。その結果、重要リスト２１０内の異なるカテゴリ内で重要キーワード同士のハッシュ値の衝突が生じた場合でも、カテゴリが異なるため、ハッシュ値の衝突を許容することで定義リスト２２内への無駄な登録を抑制できる。
【０１０９】
尚、上記実施例１乃至３では、重要リスト２１内の重要キーワード同士でハッシュ値の衝突が生じた場合に衝突したハッシュ値を算出する演算パラメータを変更してハッシュ値の衝突を回避したが、重要リスト２１内のキーワード同士に限定されるものではない。
【０１１０】
また、図示した各部の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各部の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
【０１１１】
更に、サーバ及びクライアントをそれぞれ構成する各コンピュータで行われる各種処理機能は、ＣＰＵ（Central  Processing  Unit）（又はＭＰＵ（Micro  Processing  Unit）、ＭＣＵ（Micro  Controller  Unit）等のマイクロ・コンピュータ）上で、その全部又は任意の一部を実行するようにしても良い。また、各種処理機能は、ＣＰＵ（又はＭＰＵ、ＭＣＵ等のマイクロ・コンピュータ）で解析実行するプログラム上、又はワイヤードロジックによるハードウェア上で、その全部又は任意の一部を実行するようにしても良いことは言うまでもない。
【０１１２】
ところで、本実施例で説明した各種の処理は、予め用意されたプログラムをコンピュータで実行することで実現できる。そこで、以下では、上記実施例と同様の機能を有するプログラムを実行するコンピュータの一例について説明する。図１６は、文書管理プログラムを実行するコンピュータ４００の一例を示す説明図である。
【０１１３】
図１６において文書管理プログラムを実行するコンピュータ４００では、通信部４１０と、操作部４２０と、ＲＯＭ４３０、ＲＡＭ４４０、ＣＰＵ４５０、バス４６０とを有する。
【０１１４】
そして、ＲＯＭ４３０には、上記実施例と同様の機能を発揮する文書管理プログラムが予め記憶されている。尚、ＲＯＭ４３０ではなく、図示せぬドライブで読取可能な記録媒体に文書管理プログラムが記録されていても良い。また、記録媒体としては、例えば、ＣＤ−ＲＯＭ、ＤＶＤディスク、ＵＳＢメモリ、ＳＤカード等の可搬型記録媒体、ＨＤＤ、フラッシュメモリ等の半導体メモリ等でも良い。文書管理プログラムとしては、算出プログラム４３０Ａ、判定プログラム４３０Ｂ、変更プログラム４３０Ｃ及び制御プログラム４３０Ｄである。尚、算出プログラム４３０Ａ、判定プログラム４３０Ｂ、変更プログラム４３０Ｃ及び出力プログラム４３０Ｄについては、適宜統合又は分散しても良い。
【０１１５】
そして、ＣＰＵ４５０は、これらのプログラム４３０Ａ、４３０Ｂ、４３０Ｃ及び４３０ＤをＲＯＭ４３０から読み出し、これら読み出された各プログラムを実行する。そして、ＣＰＵ４５０は、各プログラム４３０Ａ、４３０Ｂ、４３０Ｃ及び４３０Ｄを、算出プロセス４５０Ａ、判定プロセス４５０Ｂ、変更プロセス４５０Ｃ及び制御プロセス４５０Ｄとして機能させる。
【０１１６】
ＣＰＵ４５０は、演算パラメータを用いて文書中の各キーワードのハッシュ値を算出する。ＣＰＵ４５０は、異なるキーワード同士でハッシュ値の衝突があるか否かを判定する。ＣＰＵ４５０は、ハッシュ値の衝突がある場合に、衝突した一方のキーワードのハッシュ値を算出した演算パラメータを変更する。ＣＰＵ４５０は、変更した演算パラメータを用いて一方のキーワードのハッシュ値を算出させ、ハッシュ値の衝突を回避できた演算パラメータ及び当該一方のキーワードをルール情報として登録して管理する。その結果、異なるキーワード同士のハッシュ値の衝突を回避して類似文書を検索する際の比較精度の向上が図れる。
【符号の説明】
【０１１７】
１  文書管理システム
２  クライアント
３  監視サーバ
２１  重要リスト
２２  定義リスト
３１Ｃ  第１の算出部
３３Ｂ  第２の算出部
３３Ｃ  判定部
３３Ｄ  リスト制御部
２１０  重要リスト
【図１】
2016042263.tif 000003
【図２】
2016042263.tif 000004
【図３】
2016042263.tif 000005
【図４】
2016042263.tif 000006
【図５】
2016042263.tif 000007
【図６】
2016042263.tif 000008
【図７】
2016042263.tif 000009
【図８】
2016042263.tif 000010
【図９】
2016042263.tif 000011
【図１０】
2016042263.tif 000012
【図１１】
2016042263.tif 000013
【図１２】
2016042263.tif 000014
【図１３】
2016042263.tif 000015
【図１４】
2016042263.tif 000016
【図１５】
2016042263.tif 000017
【図１６】
2016042263.tif 000018