(57)【要約】      （修正有）【課題】互いに内容が類似しているファイルの組をより適確に検出できるようにする。【解決手段】各ファイルを所定数の構成セグメントに均等サイズに分ける切り分け位置を仮定し、仮の切り分け位置から前方または後方に連続するデータを読んで特定のパターンを検出した箇所を正式な切り分け位置として決定するとともに、その切り分け位置でファイルを切り分けてなる各構成セグメントのハッシュ値をそれぞれ算出する。一のファイルと他のファイルとの類否判断を行うにあたっては、一のファイルに係る構成セグメントの固有値と、他のファイルに係る構成セグメントの固有値とを各セグメント毎に順次比較し、固有値が一致する構成セグメントの個数または割合を計数する。固有値が一致する個数または割合が高いほど、類似の度合いが高いということになる。【選択図】図４
2010256951.tif 000002
【特許請求の範囲】
【請求項１】
格納しているデータ単位群の中から内容が類似しているデータ単位を発見するためのものであって、
データ単位を所定数または所定サイズの複数の構成セグメントに分ける切り分け位置を仮定し、その仮の切り分け位置から前方または後方に連続するデータを読んで特定のパターンを検出した箇所を正式な切り分け位置として決定するセグメント決定部と、
前記セグメント決定部で決定した切り分け位置でデータ単位を切り分けてなる複数の構成セグメントをそれぞれ所定の計算式に代入し、各セグメントの固有値を算定する固有値算定部と、
一のデータ単位に係る構成セグメントの固有値と、他のデータ単位に係る構成セグメントの固有値とを各セグメント毎に順次比較し、固有値が一致する構成セグメントの個数または割合を計数するセグメント比較部と、
前記セグメント比較部で計数した個数または割合の多寡に応じて一のデータ単位に対する他のデータ単位の類否を判断し、類似していると判断したデータ単位を指し示す情報を表示させる結果出力部と
を具備する類似データ検索装置。
【請求項２】
各データ単位は特定の種類のデータ要素と他の種類のデータ要素とを包含しているものであり、
前記セグメント決定部が、データ単位に含まれる特定の種類のデータ要素を抽出した上、これを所定数または所定サイズの複数の構成セグメントに分ける切り分け位置を仮定し、その仮の切り分け位置から前方または後方に連続するデータを読んで特定のパターンを検出した箇所を正式な切り分け位置として決定し、
前記固有値算定部が、前記セグメント決定部で決定した切り分け位置で前記特定の種類のデータ要素を切り分けてなる複数の構成セグメントをそれぞれ所定の計算式に代入し、各セグメントの固有値を算定する請求項１記載の類似データ検索装置。
【請求項３】
前記特定の種類のデータ要素がテキストである請求項２記載の類似データ検索装置。
【請求項４】
各データ単位について予め前記固有値算定部で算出した固有値を記憶する固有値記憶部をさらに具備し、
前記セグメント比較部が、前記固有値記憶部に記憶している他のデータ単位に係る構成セグメントの固有値を読み出してこれを一のデータ単位に係る構成セグメントの固有値と比較する請求項１記載の類似データ検索装置。
【請求項５】
格納しているデータ単位群の中から内容が類似しているデータ単位を発見するためのものであって、
データ単位を所定数または所定サイズの複数の構成セグメントに分ける切り分け位置を仮定し、その仮の切り分け位置から前方または後方に連続するデータを読んで特定のパターンを検出した箇所を正式な切り分け位置として決定するセグメント決定部と、
一のデータ単位を前記セグメント決定部で決定した切り分け位置で切り分けてなる複数の構成セグメントと、他のデータ単位を前記セグメント決定部で決定した切り分け位置で切り分けてなる複数の構成セグメントとを各セグメント毎に順次比較し、内容が一致する構成セグメントの個数または割合を計数するセグメント比較部と、
前記セグメント比較部で計数した個数または割合の多寡に応じて一のデータ単位に対する他のデータ単位の類否を判断し、類似していると判断したデータ単位を指し示す情報を表示させる結果出力部と
を具備する類似データ検索装置。
【請求項６】
各データ単位は特定の種類のデータ要素と他の種類のデータ要素とを包含しているものであり、
前記セグメント決定部が、データ単位に含まれる特定の種類のデータ要素を抽出した上、これを所定数または所定サイズの複数の構成セグメントに分ける切り分け位置を仮定し、その仮の切り分け位置から前方または後方に連続するデータを読んで特定のパターンを検出した箇所を正式な切り分け位置として決定し、
前記セグメント比較部が、一のデータ単位に含まれる特定の種類のデータ要素を前記セグメント決定部で決定した切り分け位置で切り分けてなる複数の構成セグメントと、他のデータ単位に含まれる特定の種類のデータ要素を前記セグメント決定部で決定した切り分け位置で切り分けてなる複数の構成セグメントとを各セグメント毎に順次比較する請求項５記載の類似データ検索装置。
【請求項７】
請求項１、２、３または４記載の類似データ検索装置を具現するために用いられるものであって、コンピュータを、
データ単位を所定数または所定サイズの複数の構成セグメントに分ける切り分け位置を仮定し、その仮の切り分け位置から前方または後方に連続するデータを読んで特定のパターンを検出した箇所を正式な切り分け位置として決定するセグメント決定部、
前記セグメント決定部で決定した切り分け位置でデータ単位を切り分けてなる複数の構成セグメントをそれぞれ所定の計算式に代入し、各セグメントの固有値を算定する固有値算定部、
一のデータ単位に係る構成セグメントの固有値と、他のデータ単位に係る構成セグメントの固有値とを各セグメント毎に順次比較し、固有値が一致する構成セグメントの個数または割合を計数するセグメント比較部、並びに、
前記セグメント比較部で計数した個数または割合の多寡に応じて一のデータ単位に対する他のデータ単位の類否を判断し、類似していると判断したデータ単位を指し示す情報を表示させる結果出力部
として機能させるプログラム。
【請求項８】
請求項５または６記載の類否データ検索装置を具現するために用いられるものであって、コンピュータを、
データ単位を所定数または所定サイズの複数の構成セグメントに分ける切り分け位置を仮定し、その仮の切り分け位置から前方または後方に連続するデータを読んで特定のパターンを検出した箇所を正式な切り分け位置として決定するセグメント決定部、
一のデータ単位を前記セグメント決定部で決定した切り分け位置で切り分けてなる複数の構成セグメントと、他のデータ単位を前記セグメント決定部で決定した切り分け位置で切り分けてなる複数の構成セグメントとを各セグメント毎に順次比較し、内容が一致する構成セグメントの個数または割合を計数するセグメント比較部、並びに、
前記セグメント比較部で計数した個数または割合の多寡に応じて一のデータ単位に対する他のデータ単位の類否を判断し、類似していると判断したデータ単位を指し示す情報を表示させる結果出力部
として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベース等に格納しているデータ単位群の中から内容が類似しているデータ単位を発見する類似データ検索装置に関する。
【背景技術】
【０００２】
無数のデータファイルを管理するシステムでは、時として、内容が同一または類似した複数のファイルを重複して格納していることがある。とりわけ、内容に修正を加えた新版のファイルと修正を加える前の旧版のファイルとが並存していると、業務において人為的過誤を引き起す要因となり得る。そのような事情もあって、管理しているデータファイルの中から内容が類似しているものを簡便に検索する機能が求められている。
【０００３】
下記特許文献１に、ある文書ファイルに類似した他の文書ファイルを検索することのできる装置が開示されている。この検索装置では、文書をページ毎に切り分けてなる複数のセグメントについてそれぞれハッシュ値を算出しておき、あるファイルと他のファイルとの類否判断の際に両ファイルの構成セグメントのハッシュ値を各セグメント毎に順次比較して、ハッシュ値が一致した個数を計数するようにしている。ハッシュ値が一致するセグメントの個数が多いほど、両ファイルの類似度は高いと判断される。
【０００４】
とは言え、上に述べた既知の検索装置では、修正後の新版ファイルと修正前の旧版ファイルとの類似関係を必ずしも適確に検出できないおそれがある。例えば、数文字ないし数行の加筆によりテキスト中の改ページ位置が後方にずれると、加筆箇所以降の全ページについてハッシュ値が変化してしまい、新版ファイルと旧版ファイルとを比較したときにハッシュ値が一致するセグメントの個数が顕著に減少する。さすれば、両者は非類似と判断されることとなる。
【０００５】
これに対し、ハッシュをとるセグメントをページ単位ではなく段落単位とする手法も考えられるが、段落を一つ丸々追加したり削除したりすることもしばしば行われるため、新版ファイルと旧版ファイルとの間で構成セグメントの順番がずれて、やはりハッシュ値が一致するセグメントの個数は少なくなる蓋然性が高い。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−２５７４４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、上記の問題に初めて着目してなされたものであって、互いに内容が類似しているデータ単位の組をより適確に検出できるようにすることを所期の目的としている。
【課題を解決するための手段】
【０００８】
本発明に係る類似データ検索装置は、格納しているデータ単位群の中から内容が類似しているデータ単位を発見するためのものであって、データ単位を所定数または所定サイズの複数の構成セグメントに分ける切り分け位置を仮定し、その仮の切り分け位置から前方または後方に連続するデータを読んで特定のパターンを検出した箇所を正式な切り分け位置として決定するセグメント決定部と、前記セグメント決定部で決定した切り分け位置でデータ単位を切り分けてなる複数の構成セグメントをそれぞれ所定の計算式に代入し、各セグメントの固有値を算定する固有値算定部と、一のデータ単位に係る構成セグメントの固有値と、他のデータ単位に係る構成セグメントの固有値とを各セグメント毎に順次比較し、固有値が一致する構成セグメントの個数または割合を計数するセグメント比較部と、前記セグメント比較部で計数した個数または割合の多寡に応じて一のデータ単位に対する他のデータ単位の類否を判断し、類似していると判断したデータ単位を指し示す情報を表示させる結果出力部とを具備する。
【０００９】
ここで、データ単位とは、個別に把握できるデータの塊を言い、ファイルシステムで扱われるデータファイル、ディレクトリや、データベースシステムで扱われるレコード等がこれに該当する。固有値とは、典型的には一方向性（ハッシュ値から原データを求める逆関数の計算が困難）及び衝突耐性（同じハッシュ値を生成する二つの原データを見出すことが困難）を有するハッシュ関数に原データを代入して計算するハッシュ値であるが、チェックサムや巡回符号（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）その他の誤り検出符号を固有値として採用することも不可能ではない。データ単位を指し示す情報とは、例えば、データ単位に付された名称その他の識別子、データ単位を指定するパス情報、ＵＲＩ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）等である。
【００１０】
本発明に係る類似データ検索装置では、比較をするべきデータ単位を、まずはデータの内実によらない一定のルール（即ち、セグメントの総数または各セグメントのサイズを所定とする）で複数のセグメントに切り分けようとする。しかし、その切り分け位置は不動ではなく、前記ルールに則って定めた仮の切り分け位置から前方または後方に連続するデータを読み、特定のパターンが出現した箇所を正式な切り分け位置とする。つまるところ、仮の切り分け位置の周辺にあるデータの内容に応じて、実際の切り分け位置を前方または後方に遷移させる。
【００１１】
この処理により、データ単位に一部修正が加えられた場合において、その修正箇所を含むセグメントのみを拡大または縮小させ、その余の部分のセグメントは修正の前後を通じて同一に保つことが可能となる。結果、修正後のデータ単位と修正前のそれとを比較したときに、固有値が一致するセグメントの個数または割合が多くなり、両者の類似関係が適確に検出されるようになる。
【００１２】
また、上に述べた既知の検索装置は専らテキスト主体の文書ファイルを処理対象としていたが、本発明に係る類似データ検索装置は、セグメントの切り分け位置を決定する特定のパターンを文字コードや改ページ記号等に依存しないものとすることにより、テキスト以外のデータをも処理することが可能である。
【００１３】
各データ単位が特定の種類のデータ要素と他の種類のデータ要素とを包含しているならば、前記セグメント決定部が、データ単位に含まれる特定の種類のデータ要素を抽出した上、これを所定数または所定サイズの複数の構成セグメントに分ける切り分け位置を仮定し、その仮の切り分け位置から前方または後方に連続するデータを読んで特定のパターンを検出した箇所を正式な切り分け位置として決定し、前記固有値算定部が、前記セグメント決定部で決定した切り分け位置で前記特定の種類のデータ要素を切り分けてなる複数の構成セグメントをそれぞれ所定の計算式に代入し、各セグメントの固有値を算定できるものとすることが好適である。これにより、重要性の高いデータ要素の内容に着目してデータ単位同士の類否判断を実施することが可能となる。
【００１４】
前記特定の種類のデータ要素は、例えばテキストとする。ＨＴＭＬ（ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）ファイルやＰＤＦ（Ｐｏｒｔａｂｌｅ  Ｄｏｃｕｍｅｎｔ  Ｆｏｒｍａｔ）ファイル、あるいはワードプロセッサ文書ファイル等は、テキストとともに当該テキスト本文の表示体裁を規定するデータ要素をも含んでいる。一般に、これらのファイルにおいて重要視される情報はテキストであり、フォントの種類や大きさ等といった体裁は二の次である。ファイルに含まれるデータ要素の全部を参照して類否判断を行うとすると、テキストは同一であるのに表示体裁が異なるために非類似であると判断され、ユーザのニーズに応えられないきらいがある。このような理由から、比較的重要なデータ要素であるテキストのみをまず抽出し、そのテキストをセグメントに分けて、セグメント毎に固有値の比較を実行することが好ましいと言える。
【００１５】
各データ単位について予め前記固有値算定部で算出した固有値を記憶する固有値記憶部をさらに具備し、前記セグメント比較部が、前記固有値記憶部に記憶している他のデータ単位に係る構成セグメントの固有値を読み出してこれを一のデータ単位に係る構成セグメントの固有値と比較するものとすれば、類否判断処理に際してデータ単位の構成セグメントの固有値を演算する処理負荷または所要時間を軽減することができる。
【００１６】
なお、以上では、一のデータ単位と他のデータ単位との類否判断にあたり、それぞれのデータ単位を構成するセグメントの固有値が一致するか否かを各々比較していたが、セグメント自体を比較するようにしても構わない。このときの類似データ検索装置は、データ単位を所定数または所定サイズの複数の構成セグメントに分ける切り分け位置を仮定し、その仮の切り分け位置から前方または後方に連続するデータを読んで特定のパターンを検出した箇所を正式な切り分け位置として決定するセグメント決定部と、一のデータ単位を前記セグメント決定部で決定した切り分け位置で切り分けてなる複数の構成セグメントと、他のデータ単位を前記セグメント決定部で決定した切り分け位置で切り分けてなる複数の構成セグメントとを各セグメント毎に順次比較し、内容が一致する構成セグメントの個数または割合を計数するセグメント比較部と、前記セグメント比較部で計数した個数または割合の多寡に応じて一のデータ単位に対する他のデータ単位の類否を判断し、類似していると判断したデータ単位を指し示す情報を表示させる結果出力部とを具備するものとする。
【００１７】
さらに、各データ単位が特定の種類のデータ要素と他の種類のデータ要素とを包含しているならば、前記セグメント決定部が、データ単位に含まれる特定の種類のデータ要素を抽出した上、これを所定数または所定サイズの複数の構成セグメントに分ける切り分け位置を仮定し、その仮の切り分け位置から前方または後方に連続するデータを読んで特定のパターンを検出した箇所を正式な切り分け位置として決定し、前記セグメント比較部が、一のデータ単位に含まれる特定の種類のデータ要素を前記セグメント決定部で決定した切り分け位置で切り分けてなる複数の構成セグメントと、他のデータ単位に含まれる特定の種類のデータ要素を前記セグメント決定部で決定した切り分け位置で切り分けてなる複数の構成セグメントとを各セグメント毎に順次比較できるものとすることが好適である。
【発明の効果】
【００１８】
本発明によれば、互いに内容が類似しているデータ単位の組をより適確に検出できるようになる。
【図面の簡単な説明】
【００１９】
【図１】本発明の一実施形態の類似データ検索装置を包有したシステムを示す図。
【図２】同実施形態の類似データ検索装置が具備するハードウェア資源を示す図。
【図３】同類似データ検索装置の機能ブロック図。
【図４】セグメントの仮の切り分け位置から正式な切り分け位置を決定する態様を例示する図。
【図５】記憶している各データ単位毎のセグメントの固有値の情報を例示する図。
【図６】内容の類似しているデータ単位を検索した結果を表示する態様を例示する図。
【図７】同類似データ検索装置がプログラムに従い実行する処理の手順を示すフローチャート。
【図８】同類似データ検索装置がプログラムに従い実行する処理の手順を示すフローチャート。
【図９】同類似データ検索装置がプログラムに従い実行する処理の手順を示すフローチャート。
【図１０】本発明の変形例の一を示す機能ブロック図。
【発明を実施するための形態】
【００２０】
本発明の一実施形態を、図面を参照して説明する。本実施形態の類似データ検索装置１は、図１に示すように、パーソナルコンピュータ、ワークステーション、ファイルサーバまたはウェブサーバ等を主体として構成される。類似データ検索装置１たるコンピュータは、図２に示すように、プロセッサ１ａ、メインメモリ１ｂ、補助記憶デバイス１ｃ、表示制御デバイス１ｄ、ディスプレイ１ｅ、操作入力デバイス１ｆ、通信インタフェース１ｇ等のハードウェア資源を備え、それらがコントローラ（システムコントローラ、Ｉ／Ｏコントローラ等）１ｈにより制御されて連携動作するものである。
【００２１】
補助記憶デバイス１ｃは、ハードディスクドライブ、フラッシュメモリ、光学ディスクドライブ、その他である。表示制御デバイス１ｄは、プロセッサ１ａより受けた描画指示をもとに表示させるべき画像を生成してディスプレイ１ｅに向けて送出するグラフィクスプロセッサ、画像データを一時的に格納しておくビデオメモリ等を要素とする。操作入力デバイス１ｆは、手指で操作可能な押下ボタン、キーボードや、マウス、トラックパッド、タッチパネル等のポインティングデバイスである。通信インタフェース１ｇは、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）やインターネットといった電気通信回線を介して接続している外部のコンピュータ２と情報通信を行うためのデバイスである。通信インタフェース１ｇは、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）や無線ＬＡＮトランシーバに代表されるが、これら以外にＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）、ＩＥＥＥ１３９４等のインタフェースを採用することもできる。
【００２２】
プロセッサ１ａによって実行されるべきプログラムは補助記憶デバイス１ｃに格納されており、プログラムの実行の際には補助記憶デバイス１ｃからメインメモリ１ｂに読み込まれ、プロセッサ１ａによって解読される。本実施形態では、既知のＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）プログラムやこれに付帯する各種デバイスドライバプログラムが予めインストールされ、他のプログラムによる前記ハードウェア資源の利用を仲介する。その上で、本発明の類似データ検索装置１を構成するために必要となるプログラムがインストールされており、プログラムに従い前記ハードウェア資源を作動して、図３に示すデータ格納部１０１、セグメント決定部１０２、固有値算定部１０３、固有値記憶部１０４、セグメント比較部１０５及び結果出力部１０６としての機能を発揮する。
【００２３】
データ格納部１０１は、メインメモリ１ｂまたは補助記憶デバイス１ｃの記憶領域を用いて、ＯＳが具現するファイルシステムで取り扱うデータ単位であるファイル及びディレクトリを格納、蓄積する。
【００２４】
セグメント決定部１０２は、データ格納部１０１に格納している個々のファイルについて、当該ファイルを複数のセグメントに分けるための切り分け位置を決定し、以て各ファイルの構成セグメントを決定する。
【００２５】
ファイルの切り分け位置の決定手法に関して詳記する。ファイルの切り分け位置を決定するにあたっては、まず、一定のルールに則ってファイルを分割することを考える。本実施形態では、ファイルを所定個数のセグメントに均等に分割するというルールに則り、仮の切り分け位置を決定する。セグメントの総数を１０個と定め、あるファイルのサイズが１００ｋバイトであるとすると、割算によりこのファイルを構成する各セグメントはそれぞれ１０ｋバイトのサイズとなる。そして、このファイルの先頭から１０ｋバイト毎に都合９個の切り分け位置を仮に定めることになる。セグメントの仮の切り分け位置は、ファイルの内実に依存しない。
【００２６】
次いで、ファイルにおいて仮に定めた各切り分け位置から後方に連続するデータを読み、特定のパターンを検出した箇所を正式な切り分け位置として決定する。ここに言う特定のパターンは種々考えられるが、本実施形態では、データを所定サイズずつ読み出して、その読み出したデータ値の増加／減少／一定の傾向を参照するものとする。具体的には、データをｎバイト（ｎは自然数）ずつ読み出し、直前のｎバイトのデータ値と現在のｎバイトのデータ値との大小を順次比較してゆく。その上で、
（ｉ）等しいデータ値が所定回数以上継続し、かつその後にデータ値が増加する立ち上がりまたは減少する立ち下がりが発生した箇所
（ii）データ値が減少する立ち下がり（または、増加する立ち上がり）が発生し、かつその後にデータ値が増加する立ち上がり（または、減少する立ち下がり）が発生した箇所
（iii）上記の（ｉ）、（ii）の何れも成立することなく遷移範囲の限界に到達した暁には、データの読み出しを開始した仮の切り分け位置から所定バイト後方に遷移した箇所
を、正式な切り分け位置として決定する。遷移範囲の限界は、データの読み出しを開始した仮の切り分け位置から一定のバイトの範囲とするか、あるいは、現在参照しているセグメントの終端（即ち、次のセグメントの仮の切り分け位置若しくはファイルの終端）とする。
【００２７】
正式な切り分け位置の決定の一例を、図４に示す。図４では、セグメントの仮の切り分け位置から２バイトずつ読み出しており、（ii）のパターンが出現した箇所を正式な切り分け位置と決定している。このように、セグメントの正式な切り分け位置は、ファイルの内実に応じて、仮の切り分け位置から後方に遷移し得る。
【００２８】
また、セグメント決定部１０２は、対象とするファイルがテキストを包含するものである場合、そのテキストだけを抽出してこれを複数のセグメントに分かつことができる。例えば、ＨＴＭＬファイルであれば、所定のタグ（＜ｔｉｔｌｅ＞タグ、＜ｐ＞タグ、＜ａ＞タグ、等々）に挟まれている部分だけを抽出してテキストを得る。そして、抽出したテキストのサイズを計数し、このテキストを所定個数のセグメントに均等に分割する仮の切り分け位置を定め、その後に上記の手法にて正式な切り分け位置を決定する。
【００２９】
固有値算定部１０３は、データ格納部１０１に格納している個々のファイルについて、セグメント決定部１０２で決定した切り分け位置で切り分けてなる複数の構成セグメントをそれぞれ所定の計算式に代入し、各セグメントの固有値を算定する。本実施形態では、固有値としてＭＤ５（Ｍｅｓｓａｇｅ  Ｄｉｇｅｓｔ  ａｌｇｏｒｉｔｈｍ  ５）、ＳＨＡ（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ）等のハッシュ値を採用しており、切り分けた各セグメントをそれらのハッシュ関数に代入して、セグメントと同数のハッシュ値を算出する。
【００３０】
既に述べた通り、対象とするファイルがテキストを包含するものである場合には、ファイルに含まれるテキストだけを抽出してセグメントに分けることができる。このときの固有値算定部１０３は、テキストを切り分けてなる各セグメントをハッシュ関数に代入して各セグメントのハッシュ値を算出する。つまり、テキストを包含するファイルからは、当該ファイルの全体に基づくハッシュ値と、当該ファイルの一部の要素であるテキストに基づくハッシュ値との二種類の固有値を得ることができる。以下、前者を全体セグメントハッシュ値、後者をテキストセグメントハッシュ値と呼称する。
【００３１】
固有値記憶部１０４は、メインメモリ１ｂまたは補助記憶デバイス１ｃの記憶領域を用いて、データ格納部１０１に格納している個々のファイルに係る構成セグメントのハッシュ値を記憶する。固有値記憶部１０４は、例えば、図５に示しているように、各ファイルから算出された所定個数の全体セグメントハッシュ値及び／またはテキストセグメントハッシュ値を、ファイル毎に、ファイルを識別する識別子、パス情報またはＵＲＩ等に関連づけて記憶する。
【００３２】
セグメント比較部１０５は、一のファイルの構成セグメントと他のファイルの構成セグメントとを比較する。セグメント比較部１０５は、固有値記憶部１０４に記憶している、一のファイルに係る構成セグメントのハッシュ値、他のファイルに係る構成セグメントのハッシュ値をそれぞれ読み出す。但し、対象となるファイルに係る構成セグメントのハッシュ値を固有値記憶部１０４が記憶していない、即ち当該ファイルに係る構成セグメントのハッシュ値を予め算出していないのであれば、当該ファイルに係る構成セグメントのハッシュ値を固有値算定部１０３に即時的に計算させてこれを用いる。
【００３３】
そして、両ファイルのハッシュ値をセグメント毎に順次比較して、ハッシュ値が一致するセグメントの個数または割合を計数する。本実施形態では、各ファイルを１０個のセグメントに分けるものとしている。そこで、比較する一のファイル及び他のファイルについて、ファイルの先頭から第１番目のセグメントのハッシュ値の比較、第２番目のセグメントのハッシュ値の比較、……、第９番目のセグメントのハッシュ値の比較、並びに最終となる第１０番目のセグメントのハッシュ値の比較を行い、両者が一致した回数を計数する。
【００３４】
比較する一のファイル及び他のファイルがともにテキストを包含するものである場合、これらファイルのハッシュ値として全体セグメントハッシュ値及びテキストセグメントハッシュ値の二種類が存在する。従って、全体セグメントハッシュ値を比較することもでき、テキストセグメントハッシュ値を比較することもできる。
【００３５】
結果出力部１０６は、セグメント比較部１０５で計数した個数または割合の多寡に応じて一のファイルに対する他のファイルの類否を判断し、類似していると判断したファイルを指し示す情報を表示させる。一般に、ハッシュ値の一致するセグメント数ｘとファイルを分割するセグメントの総数ｙとの比ｘ／ｙが大きいほど、両ファイルの類似度が高いと考えることができる。結果出力部１０６は、あるファイルとの比較の結果、比ｘ／ｙ（または、一致数ｘ）が所定の閾値を上回るファイルについて、当該ファイルを識別する識別子、パス情報またはＵＲＩ等を、類似データ検索装置１のディスプレイ１ｅまたは外部のコンピュータ２のディスプレイに表示させる。並びに、結果出力部１０６は、一のファイルに対する他のファイルの類似の度合いを表す値として、ｘ／ｙ（または、ｘ）をも表示させる。結果の表示例を、図６に示す。
【００３６】
比較する一のファイル及び他のファイルがともにテキストを包含するものである場合には、主としてテキストセグメントハッシュ値の一致数を両ファイルの類似度として扱う。これは、ファイルに含まれる他の種類のデータ要素に比して、テキストこそが情報として重要な要素であると推察されるからである。勿論、全体セグメントハッシュ値の一致数を両ファイルの類似度と見なしてもよい。あるいは、全体セグメントハッシュ値の一致数ｘ1とテキストセグメントハッシュ値の一致数ｘ2との重み付け和（ｗ1ｘ1＋ｗ2ｘ2）を両ファイルの類似度と見なしてもよい。この重み付け和では、テキストセグメントハッシュ値に対する重みｗ2を全体セグメントハッシュ値に対する重みｗ1よりも大きくすることが好ましい。
【００３７】
以降、本実施形態の類似データ検索装置１が実行する処理手順の例を、図７ないし図９のフローチャートを参照して述べる。類似データ検索装置１は予め、データ格納部１０１に格納している個々のファイルを読み出して固有値を算定しておく。即ち、ファイルのサイズをセグメント総数で割った値からセグメントの切り分け位置を仮に定め（ステップＳ１）、その仮の切り分け位置から連続するデータを読んで特定のパターンが出現した箇所を正式な切り分け位置として決定する（ステップＳ２）。そして、正式な切り分け位置で切り分けた各セグメントから全体セグメントハッシュ値を算出して（ステップＳ３）、ファイル毎の全体セグメントハッシュ値を固有値記憶部１０４に記憶させる（ステップＳ４）。
【００３８】
対象のファイルがテキストを包含しているのであれば（ステップＳ５）、そのテキストを抽出し（ステップＳ６）、抽出したテキストのサイズをセグメント総数で割った値からセグメントの切り分け位置を仮に定め（ステップＳ７）、その仮の切り分け位置から連続するテキストデータを読んで特定のパターンが出現した箇所を正式な切り分け位置として決定する（ステップＳ８）。そして、正式な切り分け位置で切り分けた各セグメントからテキストセグメントハッシュ値を算出して（ステップＳ９）、ファイル毎のテキストセグメントハッシュ値を固有値記憶部１０４に記憶させる（ステップＳ１０）。
【００３９】
上記のステップＳ１ないしＳ１０を、データ格納部１０１に格納している複数のファイルについて反復する（ステップＳ１１）。これらステップＳ１ないしＳ１１は、所定周期（例えば、一日）毎に実行する。但し、ファイルがデータ格納部１０１に書き込まれる際に、その書き込まれるファイルについてステップＳ１ないしＳ１０を実行するようにしてもよい。
【００４０】
しかして、類似データ検索装置１は、一のファイルと内容の類似している他のファイルを検索するべき旨の指令の入力を待ち受ける（ステップＳ１２）。この検索指令は、操作入力デバイス１ｆを介して手入力されることもあれば、電気通信回線を介して接続している外部のコンピュータ２から送信されてくることもある。通常、検索指令には、検索クエリとなる一のファイルを指し示す識別子、パス情報またはＵＲＩ等が含まれている。但し、一のファイルそれ自体が検索指令に含まれてアップロードされるということもあり得る。
【００４１】
類似データ検索装置１は、検索指令の手入力を受け付けまたは受信したとき、この検索指令に含まれた一のファイルの識別子、パス情報またはＵＲＩ等に関連づけられている全体セグメントハッシュ値を固有値記憶部１０４から読み出す（ステップＳ１３）。但し、一のファイルに係る全体セグメントハッシュ値が固有値記憶部１０４に記憶されていない場合には、ステップＳ１ないしＳ３に準じて、当該一のファイルをデータ格納部１０１から読み出しその全体セグメントハッシュ値を即時的に算出する。検索指令に一のファイル自体が含まれていた場合も、同様とする。
【００４２】
一のファイルがテキストを包含したものであり（ステップＳ１４）、当該一のファイルに係るテキストセグメントハッシュ値が固有値記憶部１０４に記憶されている場合には、このテキストセグメントハッシュ値を固有値記憶部１０４から読み出す（ステップＳ１５）。一のファイルに係るテキストセグメントハッシュ値が固有値記憶部１０４に記憶されていない場合には、ステップＳ６ないしＳ９に準じて、当該一のファイルをデータ格納部１０１から読み出しそのテキストセグメントハッシュ値を即時的に算出する。検索指令に一のファイル自体が含まれていた場合も、同様とする。
【００４３】
そして、類似データ検索装置１は、固有値記憶部１０４に記憶している、他のファイルに係る全体セグメントハッシュ値を読み出し（ステップＳ１６）、これを一のファイルに係る全体セグメントハッシュ値と比較して、ハッシュ値が一致するセグメントの個数を計数する（ステップＳ１７）。この一致数が所定の閾値を上回っていれば（ステップＳ１８）、当該他のファイルを指し示す識別子、パス情報またはＵＲＩ等並びに一致数を、メインメモリ１ｂまたは補助記憶デバイス１ｃに一時記憶する（ステップＳ１９）。
【００４４】
また、一のファイル及び他のファイルがともにテキストを包含したものであり（ステップＳ２０）、他のファイルに係るテキストセグメントハッシュ値が固有値記憶部１０４に記憶されている場合には、他のファイルに係るテキストセグメントハッシュ値を読み出し（ステップＳ２１）、これを一のファイルに係るテキストセグメントハッシュ値と比較して、ハッシュ値が一致するセグメントの個数を計数する（ステップＳ２２）。この一致数が所定の閾値を上回っていれば（ステップＳ２３）、当該他のファイルを指し示す識別子、パス情報またはＵＲＩ等並びに一致数を、メインメモリ１ｂまたは補助記憶デバイス１ｃに一時記憶する（ステップＳ２４）。
【００４５】
上記のステップＳ１６ないしＳ２４を、データ格納部１０１に格納している複数のファイルについて反復する（ステップＳ２５）。
【００４６】
その後、一時記憶した他のファイルの識別子、パス情報またはＵＲＩ等を、一のファイルに類似するファイルを指し示す情報として出力する（ステップＳ２６）。並びに、セグメントのハッシュ値の一致数を、類似の度合いを示す情報として出力する。ステップＳ２６では、検索結果の情報を類似データ検索装置１のディスプレイ１ｅに表示させるか、あるいは、電気通信回線を介して接続している他のコンピュータ２に送信してこのコンピュータ２のディスプレイに表示させる。
【００４７】
以上の処理手順は、ユーザが検索クエリとして指定した一のファイルに内容が類似しているファイルを探し出すものであったが、格納しているファイル群の中から互いに内容が類似しているファイルの組をおしなべて検出する処理を実施することも可能である。この場合には、データ格納部１０１に格納している個々のファイルを順次「一のファイル」としてステップＳ１３ないしＳ２５を反復的に実行し、その結果知得される内容が類似したファイルの組の情報（組をなす各ファイルを指し示す情報）を一覧表示する。
【００４８】
本類似データ検索装置１は、ファイル以外に、ディレクトリ同士を比較した類否判断を実行することもできる。ディレクトリ同士を比較する場合には、各ディレクトリに属する一または複数のファイル及びディレクトリを並べ連ねて一個のデータ単位と見なし、そのデータ単位をセグメント化して比較する。
【００４９】
本実施形態によれば、格納しているファイル群の中から内容が類似しているファイルを発見するためのものであって、ファイルを所定数または所定サイズの複数の構成セグメントに分ける切り分け位置を仮定し、その仮の切り分け位置から前方または後方に連続するデータを読んで特定のパターンを検出した箇所を正式な切り分け位置として決定するセグメント決定部１０２と、前記セグメント決定部１０２で決定した切り分け位置でファイルを切り分けてなる複数の構成セグメントをそれぞれ所定の計算式に代入し、各セグメントのハッシュ値を算定する固有値算定部１０３と、一のファイルに係る構成セグメントのハッシュ値と、他のファイルに係る構成セグメントのハッシュ値とを各セグメント毎に順次比較し、ハッシュ値が一致する構成セグメントの個数または割合を計数するセグメント比較部１０５と、前記セグメント比較部１０５で計数した個数または割合の多寡に応じて一のファイルに対する他のファイルの類否を判断し、類似していると判断したファイルを指し示す情報を表示させる結果出力部１０６とを具備する類似データ検索装置１を構成したため、ファイルに一部修正が加えられた場合において、その修正箇所を含むセグメントのみを拡大または縮小させ、その余の部分のセグメントは修正の前後を通じて同一に保つことが可能となる。結果、修正後のファイルと修正前のそれとを比較したときに、ハッシュ値が一致するセグメントの個数または割合が多くなり、両者の類似関係が適確に検出されるようになる。
【００５０】
また、本実施形態の類似データ検索装置１は、セグメントの切り分け位置を決定する特定のパターンを文字コードや改ページ記号等に依存しないものとしているため、テキスト以外のファイルをも処理することが可能である。
【００５１】
ファイルが特定の種類のデータ要素であるテキストとその他の種類のデータ要素とを包含している場合に、前記セグメント決定部１０２が、ファイルに含まれるテキストを抽出した上、これを所定数または所定サイズの複数の構成セグメントに分ける切り分け位置を仮定し、その仮の切り分け位置から前方または後方に連続するデータを読んで特定のパターンを検出した箇所を正式な切り分け位置として決定し、前記固有値算定部１０３が、前記セグメント決定部１０２で決定した切り分け位置で前記テキストを切り分けてなる複数の構成セグメントをそれぞれ所定の計算式に代入し、各セグメントのハッシュ値を算定することができるため、重要性の高いデータ要素であるテキストの内容に着目してファイル同士の類否判断を実施することが可能となる。
【００５２】
各ファイルについて予め前記固有値算定部１０３で算出したハッシュ値を記憶する固有値記憶部１０４をさらに具備し、前記セグメント比較部１０５が、前記固有値記憶部１０４に記憶している他のファイルに係る構成セグメントのハッシュ値を読み出してこれを一のファイルに係る構成セグメントのハッシュ値と比較するものとすれば、類否判断処理に際してファイルの構成セグメントのハッシュ値を演算する処理負荷または所要時間を軽減することができる。
【００５３】
なお、本発明は以上に詳述した実施形態に限られるものではない。上記実施形態では、セグメントの固有値としてハッシュ値を採用していたが、これに替えてチェックサムや巡回符号その他の誤り検出符号を固有値として採用してもよい。
【００５４】
上記実施形態では、セグメントの正式な切り分け位置を決定するときに、仮の切り分け位置から後方に連続するデータを読むようにしていたが、仮の切り分け位置から前方に連続するデータを読むようにしてもよい。この場合、セグメントの正式な切り分け位置は、仮の切り分け位置から前方に遷移し得る。
【００５５】
上記実施形態では、データ格納部１０１に格納しているファイルの構成セグメントの固有値を予め算定し記憶しておくこととしていたが、固有値を演算する処理負荷または所要時間を度外視すれば、類似ファイルの検索処理の都度、各ファイルに係る固有値を算定することも可能である。データ格納部１０１に多数のファイルが格納されていると、固有値記憶部１０４の容量も大きくならざるを得ないが、このようにすることで固有値記憶部１０４が消費する記憶領域を節約することができる。故に、固有値記憶部１０４は必須の構成要素ではない。
【００５６】
前記特定の種類のデータ要素は、テキストには限定されない。ファイルに含まれている画像データや音声データ、またはファイルに付随するメタデータ等を抽出してセグメント化し、各セグメントの固有値を算出して類否判断に用いるようにしてもよい。
【００５７】
ファイル（または、ファイルから抽出される特定の種類のデータ要素）をセグメント化する仮の切り分け位置の決定手法も、上述した態様に限定されない。個々のファイルに適用する切り分け方のルールが一定である限り、どのように仮の切り分け位置を決定しても構わない。例えば、ファイルの構成セグメントの総数を一定とするのではなく、各構成セグメントのサイズを一定とすることが考えられる。ファイルを１０ｋバイト単位のセグメントに分かつように仮の切り分け位置を定め、その仮の切り分け位置から前方または後方に連続するデータを読んで正式な切り分け位置を決定するようにしても、本発明ならではの顕著な効果を奏し得る。
【００５８】
また、仮の切り分け位置を決定する際に、全ての構成セグメントを均等なサイズに切り分けなくてもよい。ファイルを１０個のセグメントに分ける際に、後半５個のセグメントのサイズを前半５個のセグメントの倍のサイズとするようなことも可能である。
【００５９】
上記実施形態では、一のファイルと他のファイルとの類否判断の際に、それぞれのファイルを構成するセグメントの固有値が一致するか否かを各々比較していたが、セグメント自体を比較するようにしても構わない。このときの類似データ検索装置１は、図１０に示すように、ファイルを所定数または所定サイズの複数の構成セグメントに分ける切り分け位置を仮定し、その仮の切り分け位置から前方または後方に連続するデータを読んで特定のパターンを検出した箇所を正式な切り分け位置として決定するセグメント決定部１０２と、一のファイルを前記セグメント決定部１０２で決定した切り分け位置で切り分けてなる複数の構成セグメントと、他のファイルを前記セグメント決定部１０２で決定した切り分け位置で切り分けてなる複数の構成セグメントとを各セグメント毎に順次比較し、内容が一致する構成セグメントの個数または割合を計数するセグメント比較部１０５と、前記セグメント比較部１０５で計数した個数または割合の多寡に応じて一のファイルに対する他のファイルの類否を判断し、類似していると判断したファイルを指し示す情報を表示させる結果出力部１０６とを具備するものとする。
【００６０】
各ファイルが特定の種類のデータ要素と他の種類のデータ要素とを包含しているならば、前記セグメント決定部１０２が、ファイルに含まれる特定の種類のデータ要素を抽出した上、これを所定数または所定サイズの複数の構成セグメントに分ける切り分け位置を仮定し、その仮の切り分け位置から前方または後方に連続するデータを読んで特定のパターンを検出した箇所を正式な切り分け位置として決定し、前記セグメント比較部１０５が、一のファイルに含まれる特定の種類のデータ要素を前記セグメント決定部１０２で決定した切り分け位置で切り分けてなる複数の構成セグメントと、他のファイルに含まれる特定の種類のデータ要素を前記セグメント決定部１０２で決定した切り分け位置で切り分けてなる複数の構成セグメントとを各セグメント毎に順次比較できるものとする。
【００６１】
さらには、図３または図１０に示す各部の機能を複数のコンピュータに分散させ、それらの協働によって本発明に係る類似データ検索装置１を成立させることを妨げない。
【００６２】
その他、各部の具体的な構成や処理の手順等は、本発明の趣旨を逸脱しない範囲で種々変形が可能である。
【産業上の利用可能性】
【００６３】
本発明は、例えば、データ単位群の中から内容が類似しているデータ単位を発見するための検索装置として利用することができる。
【符号の説明】
【００６４】
１…類似データ検索装置
１０２…セグメント決定部
１０３…固有値算定部
１０４…固有値記憶部
１０５…セグメント比較部
１０６…結果出力部
【図１】
2010256951.tif 000003
【図２】
2010256951.tif 000004
【図３】
2010256951.tif 000005
【図４】
2010256951.tif 000006
【図５】
2010256951.tif 000007
【図６】
2010256951.tif 000008
【図７】
2010256951.tif 000009
【図８】
2010256951.tif 000010
【図９】
2010256951.tif 000011
【図１０】
2010256951.tif 000012