(57)【要約】  あるデータに類似するデータを高速に検索する技術を提供する。  データ取得部４１が対象データを取得すると、検索部４２が、対象データがデータベース６０に存在するか否かを検索する。データベース６０に存在しなければ、まず、要素数比較部４４が、対象データとの要素数の差が所定値以上であるデータを候補から除外する。次に、固有数値比較部４５が、対象データの固有数値を算出し、固有数値間の偽距離が所定値以上であるデータを候補から除外する。さらに、使用要素比較部４６が、対象データとの使用要素の差が所定値以上であるデータを候補から除外する。編集距離算出部４７は、絞り込まれたデータに対して、対象データとの間の編集距離を算出し、編集距離が所定値以下であるデータを類似するデータとして抽出する。候補提示部４８は、抽出された候補データをユーザに提示する。
2007132564.tif 000002
【特許請求の範囲】
【請求項１】
対象データがデータベースに格納されているか否かを検索する検索部と、
前記対象データが前記データベースに格納されていなかった場合に、前記対象データに類似する候補データを前記データベースから抽出する抽出部と、を備え、
前記抽出部は、
前記対象データと前記データベースに格納されたデータとの間の距離を算出し、前記距離が所定の上限よりも小さいデータを前記候補データとして抽出する距離算出部と、
前記距離算出部が前記距離を算出する前に、データの構成要素を複数のグループに分類したとき、それぞれのグループに属する構成要素が前記対象データに含まれるか否かを前記グループごとに表した固有数値を算出し、前記対象データの固有数値と前記データベースに格納されているデータの固有数値との間の偽距離を算出し、前記偽距離が前記所定の上限よりも大きいデータを、前記距離算出部が前記距離を算出する対象から除外する固有数値比較部と、
を含むことを特徴とするデータ処理装置。
【請求項２】
前記固有数値は、前記グループの数と同じ桁数の二進数であり、前記固有数値比較部は、それぞれの前記グループに対してビットを割り当て、グループに属する構成要素がデータに含まれる場合はそのグループに割り当てられたビットを「１」とし、含まれない場合はそのグループに割り当てられたビットを「０」として、前記固有数値を算出することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記固有数値比較部は、２つの固有数値の間の偽距離を算出するときに、一方の固有数値をビット反転した後に両者の論理積を演算したビット列に含まれる「１」の数と、他方の固有数値をビット反転した後に両者の論理積を演算したビット列に含まれる「１」の数とのうち大きい方を前記偽距離とすることを特徴とする請求項２に記載のデータ処理装置。
【請求項４】
前記固有数値比較部は、２つの固有数値の間の偽距離を算出するときに、２つの固有数値のビット列のうち「１」が多い方の固有数値をビット反転した後に両者の論理積を演算したビット列に含まれる「１」の数を前記偽距離とすることを特徴とする請求項２に記載のデータ処理装置。
【請求項５】
前記抽出部は、前記固有数値比較部が前記偽距離を算出する前に、構成要素数の差が前記所定の上限を超えるデータを、前記固有数値比較部が前記偽距離を算出する対象から除外する要素数比較部を更に含むことを特徴とする請求項１から４のいずれかに記載のデータ処理装置。
【請求項６】
前記抽出部は、前記距離算出部が前記距離を算出する前に、前記対象データに含まれ、かつ、前記データベースに格納されたデータに含まれない構成要素の数と、前記データベースに格納されたデータに含まれ、かつ、前記対象データに含まれない構成要素の数とを算出し、いずれかが前記所定の上限を超えるデータを、前記距離算出部が前記距離を算出する対象から除外する使用要素比較部を更に含むことを特徴とする請求項１から５のいずれかに記載のデータ処理装置。
【請求項７】
前記データベースは、前記データを、構成要素数ごと、かつ、前記固有数値ごとに分類して格納することを特徴とする請求項１から６のいずれかに記載のデータ処理装置。
【請求項８】
前記対象データ、前記候補データとして抽出されたデータ、又は前記候補データの中からユーザにより選択されたデータを、同じ固有数値を持つデータ群の中で上位に配置させる学習部を更に備えることを特徴とする請求項７に記載のデータ処理装置。
【請求項９】
前記対象データ、前記候補データとして抽出されたデータ、又は前記候補データの中からユーザにより選択されたデータと同じ固有数値を持つデータ群を、同じ構成要素数のデータ群の中で上位に配置させる学習部を更に備えることを特徴とする請求項７に記載のデータ処理装置。
【請求項１０】
前記距離算出部は、構成要素の挿入、削除、又は置換によって、一方のデータを他方のデータに変形するのに必要な手順の最小回数を算出して前記距離とすることを特徴とする請求項１から９のいずれかに記載のデータ処理装置。
【請求項１１】
データベースに格納するデータ群を取得し、取得したデータ群において、各データを構成する構成要素の使用頻度を算出する使用頻度算出部と、
前記使用頻度に基づいて、前記構成要素を複数のグループに分類する分類生成部と、
各データに対して、前記グループに属する構成要素がデータに含まれるか否かを前記グループごとに表した固有数値を算出する固有数値算出部と、
前記データ群に含まれるデータを、使用している要素数及び前記固有数値で分類して前記データベースに格納するデータソート部と、
を備えることを特徴とするデータ処理装置。
【請求項１２】
前記固有数値は、前記グループの数と同じ桁数の二進数であり、前記固有数値算出部は、それぞれの前記グループに対してビットを割り当て、グループに属する構成要素がデータに含まれる場合はそのグループに割り当てられたビットを「１」とし、含まれない場合はそのグループに割り当てられたビットを「０」として、前記固有数値を算出することを特徴とする請求項１１に記載のデータ処理装置。
【請求項１３】
対象データがデータベースに格納されているか否かを検索するステップと、
前記対象データが前記データベースに格納されていなかった場合に、前記対象データに類似する候補データを前記データベースから抽出するステップと、を備え、
前記抽出するステップは、
前記対象データと前記データベースに格納されたデータとの間の距離を算出し、前記距離が所定の上限よりも小さいデータを前記候補データとして抽出するステップと、
前記距離を算出する前に、データの構成要素を複数のグループに分類したとき、それぞれのグループに属する構成要素が前記対象データに含まれるか否かを前記グループごとに表した固有数値を算出し、前記対象データの固有数値と前記データベースに格納されているデータの固有数値との間の偽距離を算出し、前記偽距離が前記所定の上限よりも大きいデータを、前記距離を算出する対象から除外するステップと、
を含むことを特徴とするデータ処理方法。
【請求項１４】
対象データがデータベースに格納されているか否かを検索する機能と、
前記対象データが前記データベースに格納されていなかった場合に、前記対象データに類似する候補データを前記データベースから抽出する機能と、をコンピュータに実現させ、
前記抽出する機能は、
前記対象データと前記データベースに格納されたデータとの間の距離を算出し、前記距離が所定の上限よりも小さいデータを前記候補データとして抽出する機能と、
前記距離を算出する前に、データの構成要素を複数のグループに分類したとき、それぞれのグループに属する構成要素が前記対象データに含まれるか否かを前記グループごとに表した固有数値を算出し、前記対象データの固有数値と前記データベースに格納されているデータの固有数値との間の偽距離を算出し、前記偽距離が前記所定の上限よりも大きいデータを、前記距離を算出する対象から除外する機能と、
を含むことを特徴とするデータ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理技術に関し、特に、あるデータに類似するデータを検索する技術に関する。
【背景技術】
【０００２】
ワードプロセッサなどに設けられる機能の一つに、英単語のスペルミスや誤字脱字などを検出し、修正候補を提示するスペルチェッカーがある。従来のスペルチェッカーは、ユーザが陥りやすいミスのパターンなどをルール化し、スペルミスを検出したときには、ルールに基づいて修正候補を抽出して提示していた。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、ユーザが、必ずしもルール化されたパターンと同じミスをするとは限らないので、適切な修正候補を推測できない場合もある。より客観的で高速なアルゴリズムにより、類似するデータを抽出する技術が求められる。【０００４】
本発明はこうした状況に鑑みてなされたものであり、その目的は、あるデータに類似するデータを高速に検索する技術を提供することにある。
【課題を解決するための手段】
【０００５】
本発明のある態様は、データ処理装置に関する。このデータ処理装置は、対象データがデータベースに格納されているか否かを検索する検索部と、前記対象データが前記データベースに格納されていなかった場合に、前記対象データに類似する候補データを前記データベースから抽出する抽出部と、を備え、前記抽出部は、前記対象データと前記データベースに格納されたデータとの間の距離を算出し、前記距離が所定の上限よりも小さいデータを前記候補データとして抽出する距離算出部と、前記距離算出部が前記距離を算出する前に、データの構成要素を複数のグループに分類したとき、それぞれのグループに属する構成要素が前記対象データに含まれるか否かを前記グループごとに表した固有数値を算出し、前記対象データの固有数値と前記データベースに格納されているデータの固有数値との間の偽距離を算出し、前記偽距離が前記所定の上限よりも大きいデータを、前記距離算出部が前記距離を算出する対象から除外する固有数値比較部と、を含むことを特徴とする。【０００６】
この態様によると、データ間の距離を利用して、客観的に類似するデータを抽出することができる。また、データ間の距離を算出する前に、各データに定義された固有数値の間の偽距離を利用して計算の対象となるデータを絞り込むことにより、高速に類似するデータを抽出することができる。【０００７】
前記固有数値は、前記グループの数と同じ桁数の二進数であってもよく、前記固有数値比較部は、それぞれの前記グループに対してビットを割り当て、グループに属する構成要素がデータに含まれる場合はそのグループに割り当てられたビットを「１」とし、含まれない場合はそのグループに割り当てられたビットを「０」として、前記固有数値を算出してもよい。前記固有数値比較部は、２つの固有数値の間の偽距離を算出するときに、一方の固有数値をビット反転した後に両者の論理積を演算したビット列に含まれる「１」の数と、他方の固有数値をビット反転した後に両者の論理積を演算したビット列に含まれる「１」の数とのうち大きい方を前記偽距離としてもよい。前記固有数値比較部は、２つの固有数値の間の偽距離を算出するときに、２つの固有数値のビット列のうち「１」が多い方の固有数値をビット反転した後に両者の論理積を演算したビット列に含まれる「１」の数を前記偽距離としてもよい。【０００８】
前記抽出部は、前記固有数値比較部が前記偽距離を算出する前に、構成要素数の差が前記所定の上限を超えるデータを、前記固有数値比較部が前記偽距離を算出する対象から除外する要素数比較部を更に含んでもよい。前記抽出部は、前記距離算出部が前記距離を算出する前に、前記対象データに含まれ、かつ、前記データベースに格納されたデータに含まれない構成要素の数と、前記データベースに格納されたデータに含まれ、かつ、前記対象データに含まれない構成要素の数とを算出し、いずれかが前記所定の上限を超えるデータを、前記距離算出部が前記距離を算出する対象から除外する使用要素比較部を更に含んでもよい。これにより、更に高速に類似するデータを抽出することができる。【０００９】
前記データベースは、前記データを、前記構成要素数ごと、かつ、前記固有数値ごとに分類して格納してもよい。これにより、データベースの検索効率を向上させることができ、検索に要する時間を短縮することができる。また、同様に、類似するデータをデータベースから抽出する効率及び速度を向上させることができる。【００１０】
データ処理装置は、前記対象データ、前記候補データとして抽出されたデータ、又は前記候補データの中からユーザにより選択されたデータを、同じ固有数値を持つデータ群の中で上位に配置させる学習部を更に備えてもよい。前記対象データ、前記候補データとして抽出されたデータ、又は前記候補データの中からユーザにより選択されたデータと同じ固有数値を持つデータ群を、同じ構成要素数のデータ群の中で上位に配置させる学習部を更に備えてもよい。これにより、データベースの検索効率を向上させることができる。また、類似するデータの候補を提示するときに、よく使われるデータがより上位になるように表示順を最適化することができる。【００１１】
前記距離算出部は、構成要素の挿入、削除、又は置換によって、一方のデータを他方のデータに変形するのに必要な手順の最小回数を算出して前記距離としてもよい。【００１２】
本発明の別の態様も、データ処理装置に関する。このデータ処理装置は、データベースに格納するデータ群を取得し、取得したデータ群において、各データを構成する構成要素の使用頻度を算出する使用頻度算出部と、前記使用頻度に基づいて、前記構成要素を複数のグループに分類する分類生成部と、各データに対して、前記グループに属する構成要素が前記対象データに含まれるか否かを前記グループごとに表した固有数値を算出する固有数値算出部と、前記データ群に含まれるデータを、使用している要素数及び前記固有数値で分類して前記データベースに格納するデータソート部と、を備えることを特徴とする。【００１３】
前記固有数値は、前記グループの数と同じ桁数の二進数であってもよく、前記固有数値算出部は、それぞれの前記グループに対してビットを割り当て、グループに属する構成要素がデータに含まれる場合はそのグループに割り当てられたビットを「１」とし、含まれない場合はそのグループに割り当てられたビットを「０」として、前記固有数値を算出してもよい。【００１４】
本発明の更に別の態様は、データ処理方法に関する。このデータ処理方法は、対象データがデータベースに格納されているか否かを検索するステップと、前記対象データが前記データベースに格納されていなかった場合に、前記対象データに類似する候補データを前記データベースから抽出するステップと、を備え、前記抽出するステップは、前記対象データと前記データベースに格納されたデータとの間の距離を算出し、前記距離が所定の上限よりも小さいデータを前記候補データとして抽出するステップと、前記距離を算出する前に、データの構成要素を複数のグループに分類したとき、それぞれのグループに属する構成要素が前記対象データに含まれるか否かを前記グループごとに表した固有数値を算出し、前記対象データの固有数値と前記データベースに格納されているデータの固有数値との間の偽距離を算出し、前記偽距離が前記所定の上限よりも大きいデータを、前記距離を算出する対象から除外するステップと、を含むことを特徴とする。【００１５】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１６】
本発明によれば、あるデータに類似するデータを高速に検索する技術を提供することができる。
【図面の簡単な説明】
【００１７】
【図１】実施の形態に係るデータ処理装置の構成を示す図である。
【図２】構成要素の分類を示す図である。
【図３】データベースの内部データの例を示す図である。
【図４】要素数比較部により候補が絞り込まれたデータを示す図である。
【図５】固有数値比較部により候補が絞り込まれたデータを示す図である。
【図６】使用要素比較部により候補が絞り込まれたデータを示す図である。
【図７】編集距離算出部により抽出された候補データを示す図である。
【図８】実施の形態に係るデータ処理方法の手順を示すフローチャートである。
【符号の説明】
【００１８】
１０  データ処理装置、３０  データベース生成部、３１  使用頻度算出部、３２  分類生成部、３３  固有数値算出部、３４  データソート部、４１  データ取得部、４２  検索部、４３  候補抽出部、４４  要素数比較部、４５  固有数値比較部、４６  使用要素比較部、４７  編集距離算出部、４８  候補提示部、４９  学習部、６０  データベース。
【発明を実施するための最良の形態】
【００１９】
実施の形態に係るデータ処理装置は、対象データがデータベース中に存在するか否かを検索し、存在しない場合は、データベース中から類似するデータを抽出して提示する。例えば、英単語が登録された辞書データベースを用いて、英単語のスペルが正しいか否かをチェックし、正しくないと判定されたときには修正候補を提示するスペルチェッカー機能を提供することができる。また、ＤＮＡの塩基配列が登録されたＤＮＡデータベースを用いて、異なる生物種が持つ同様の遺伝子を同定したり、またそれらの距離を測ることで種が分岐してから経過した時間を推定したりする機能を提供することができる。さらに、画像や音楽等のデータベースを用いて、類似する画像や音楽等を抽出することができる。【００２０】
本実施の形態では、類似するデータを抽出するために、対象データと、データベースに登録されたデータの間の「距離」を算出し、距離が近いもの同士を類似していると判定する。データ間の距離は、データ間の差異を反映するものであればよく、例えば、ハミング距離（信号距離）、レーベンシュタイン距離（編集距離）など、既知の技術を利用可能である。また、スミス・ウォーターマンアルゴリズムなどを用いて、局所アライメントの類似度を計算してもよい。以下、編集距離を利用して英単語のスペルチェックを行う例について説明する。【００２１】
編集距離は、文字の挿入や削除、置換によって、一つの文字列を別の文字列に変形するのに必要な手順の最小回数であり、一般に、動的計画法によるアルゴリズムを用いて計算できる。しかし、スペルチェッカーの精度を向上させるために、辞書に多くの英単語を登録すればするほど、編集距離を計算する対象が増える。１つの英単語のスペルミスを検出するために、その単語に対して、辞書に登録された全ての英単語との間の編集距離を算出して修正候補を提示すると、修正候補を提示するまでに多くの時間を要し、かえってユーザの利便性を損なうおそれがある。【００２２】
本実施の形態では、編集距離を実際に計算する前に、類似度の低いものを予め計算の対象から除外し、対象を絞り込んでから編集距離を算出することにより、辞書の登録数が増加しても短時間で修正候補を抽出して提示する技術を提案する。本実施の形態では、各データに固有数値を定義して、固有数値間の偽距離を算出することによりデータ間のおおまかな距離を測定し、この偽距離が所定の上限を超えるものを予め除外する。【００２３】
図１は、実施の形態に係るデータ処理装置の構成を示す。データ処理装置１０は、データベース生成部３０、データ取得部４１、検索部４２、候補抽出部４３、候補提示部４８、学習部４９、データベース６０を含む。データベース生成部３０は、使用頻度算出部３１、分類生成部３２、固有数値算出部３３、データソート部３４を含む。候補抽出部４３は、要素数比較部４４、固有数値比較部４５、使用要素比較部４６、及び編集距離算出部４７を含む。これらの構成は、ハードウエアコンポーネントでいえば、任意のコンピュータのＣＰＵ、メモリ、メモリにロードされたプログラムなどによって実現されるが、ここではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックがハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者には理解されるところである。【００２４】
まず、英単語の辞書データを格納したデータベース６０を生成する手順について説明する。使用頻度算出部３１は、データベース６０に格納すべきデータの集合を取得し、データ集合の内部において、各要素がどの程度多くのデータに使用されているかを算出する。この例では、使用頻度算出部３１は、英単語のリストを取得すると、それらの英単語に使用されている文字の使用頻度を算出する。一つのデータに同じ要素が複数回使用されている場合には、本実施の形態では、使用頻度を１とカウントするが、データの内容によっては、使用されている要素の回数分カウントしてもよい。【００２５】
分類生成部３２は、データに使用される要素を複数のグループに分類する。このとき、分類生成部３２は、各分類に属する要素の使用頻度の合計がほぼ均一になるように要素を分類する。例えば、１０個の英単語のリストにおいて、「ａ」が８回、「ｂ」が４回、「ｃ」が６回、「ｄ」が１０回使用されている場合、「ａ」と「ｃ」、「ｂ」と「ｄ」の２つのグループに分類すると、各分類に属する文字の使用頻度の合計は、いずれも１４回となり、均一になる。分類生成部３２が、要素をいくつのグループに分類するかは、後述する検索や候補の抽出の効率を考慮して決定される。本実施の形態では、説明を簡略化するために、図２に示すように、２６文字のアルファベットを５つのグループに分類する。【００２６】
固有数値算出部３３は、それぞれのデータに対して、分類生成部３２により分類された分類の数と同じ桁数のビット列で構成される固有数値を算出する。固有数値算出部３３は、各分類に対して１つのビットを割り当て、その分類に属する要素がデータに使用されていれば、その分類に割り当てられたビットを「１」とし、使用されていなければ、その分類に割り当てられたビットを「０」とする。本実施の形態では、図２に示すように、アルファベットを５つのグループに分類しているので、固有数値は５ビットの２進数となる。英単語に、「ａ」、「ｂ」、「ｃ」、「ｄ」、「ｅ」のいずれかの文字が使用されていれば、最上位から「１」ビット目のビットを「１」とし、使用されていなければ「０」とする。同様に、英単語に、「ｆ」から「ｊ」のいずれかの文字が使用されていれば、最上位から「２」ビット目のビットを「１」とし、使用されていなければ「０」とする。このようにして、固有数値算出部３３は、リストに含まれる全ての英単語の固有数値を算出する。例えば、英単語「ｔｅｓｔ」の固有数値は「１００１０」となる。【００２７】
データソート部３４は、データ集合に含まれるデータを、使用している要素数でソートし、さらに、同じ要素数のデータ集合内で、同じ固有数値を持つデータをまとめる。すなわち、英単語のリストは、文字数によりソートされ、さらに、同じ文字数の英単語は、固有数値により分類される。このようにして、英単語の辞書データが生成される。生成された辞書データの例を図３に示す。【００２８】
つづいて、英単語のスペルをチェックする手順について説明する。データ取得部４１は、検索対象となるデータを取得する。ここでは、スペルチェックの対象となる英単語を取得する。検索部４２は、取得したデータがデータベース６０に存在するか否かを検索する。ここでは、前述したように、データベース６０に格納された辞書には英単語が文字数でソートされ、かつ、固有数値で分類されて格納されているので、検索部４２は、取得した英単語の文字数と固有数値を算出し、データベース６０中の該当するレコードを検索する。例えば、データ取得部４１が「ｔｅｓｔ」という英単語を取得した場合、検索部４２は、要素数が「４」で固有数値が「１００１０」であるレコードのみを検索すればよい。これにより、効率よくデータを検索することができる。【００２９】
取得したデータがデータベース６０に存在すれば、処理を終了する。存在しなければ、候補抽出部４３は、データベース６０に存在するデータの中で、取得したデータに類似するものを抽出する。スペルチェックの場合は、取得した英単語がデータベース６０に存在しなければ、スペルミスの可能性があるので、候補抽出部４３が修正候補を抽出する。候補抽出部４３は、データ間の距離に基づいて類似度を判定し、距離が所定の値よりも近いデータを候補として抽出する。以下、対象データ「ｔｅｗｔ」との編集距離が２以下である英単語を抽出する例について説明する。【００３０】
要素数比較部４４は、対象データの要素数を算出し、データベース６０中のデータと比較する。編集距離がｎ以下のデータを抽出する場合、要素数の差がｎ＋１以上であるデータは、編集距離を算出するまでもなく候補から除外される。したがって、要素数比較部４４は、対象データ「ｔｅｗｔ」の文字数が「４」であることから、文字数が「１」の英単語と、文字数が「７」以上の英単語を候補から除外する。これにより、図３に示したデータベース６０のデータは、要素数という大分類により、図４に示すように絞り込まれる。【００３１】
固有数値比較部４５は、対象データの固有数値を算出し、データベース６０中のデータと比較する。固有数値比較部４５は、対象データの固有数値と、データベース６０中のデータの固有数値との間の「偽距離」を以下のようにして算出し、算出された「偽距離」が、候補として抽出すべき編集距離の上限よりも大きいデータは候補から除外する。なお、以下で説明する固有数値間の偽距離は、距離公理のうち対称性を満たさないので、偽距離と呼んでいる。【００３２】
固有数値比較部４５は、一方の固有数値をビット反転した後に両者の論理積を演算したビット列に含まれる「１」の数と、他方の固有数値をビット反転した後に両者の論理積を演算したビット列に含まれる「１」の数とのうち大きい方を偽距離とする。例えば、対象データ「ｔｅｗｔ」の固有数値「１００１１」と、固有数値「００１００」との間の偽距離を算出すると、まず、前者「１００１１」の反転「０１１００」と後者「００１００」との論理積「００１００」の「１」の数は「１」である。また、後者「００１００」の反転「１１０１１」と前者「１００１１」との論理積「１００１１」の「１」の数は「３」である。したがって、「１」と「３」の大きい方である「３」が、固有数値「１００１１」と「００１００」の間の偽距離となる。【００３３】
固有数値間のハミング距離ではなく偽距離を計算するのは、データ間の編集距離を算出するときに、置換処理を「１」と数えるからである。データの削除、挿入のみを考慮する場合はハミング距離でもよいが、置換を考慮する場合は、固有数値間の排他的論理和から得られるハミング距離を編集距離の上限と比較してデータの候補を絞り込むと、編集距離が上限を超えていないデータまで除外してしまう可能性がある。例えば、文字列「ａｆｐ」の固有数値は「１１０１０」であり、文字列「ｕｐ」の固有数値は「０００１１」である。これらの排他的論理和は「１１００１」であるから、固有数値間のハミング距離は「３」である。しかし、「ａｆｐ」の「ａ」を「ｕ」に置換し、「ｆ」を削除すると、「ｕｐ」になることから、データ間の編集距離は「２」である。したがって、固有数値間のハミング距離は、データ間の編集距離よりも大きくなる可能性がある。それに対して、上述の偽距離を算出すると、「ａｆｐ」の固有数値の反転「００１０１」と「ｕｐ」の固有数値「０００１１」の論理積は「００００１」であり、後者の反転「１１１００」と前者「１１０１０」の論理積は「１１０００」であるから、固有数値間の偽距離は「２」である。このように、固有数値間の偽距離は、データ間の編集距離を超えないので、データの絞り込みに利用することができる。【００３４】
固有数値比較部４５は、２つの固有数値の間の偽距離を算出するときに、２つの固有数値のビット列のうち「１」が多い方の固有数値をビット反転した後に両者の論理積を演算したビット列に含まれる「１」の数を偽距離としてもよい。例えば、対象データ「ｔｅｗｔ」の固有数値「１００１１」と、固有数値「００１００」との間の距離を算出すると、まず、後者の固有数値の方が「１」の数が少ないのでこれをビット反転し、「１１０１１」を得る。これと「１００１１」の論理積を計算すると「１００１１」となり、「１」の数は「３」となる。これは、編集距離の上限「２」よりも大きいので、固有数値比較部４５は、固有数値が「１１０１１」である英単語を候補から除外する。これにより、図４に示した候補のデータは、固有数値という中分類により、さらに図５に示すように絞り込まれる。【００３５】
使用要素比較部４６は、対象データの構成要素と、データベース中のデータの構成要素とを比較する。使用要素比較部４６は、対象データに使用されている要素と、データベース６０中のデータに使用されている要素との違いを算出し、算出された違いが、候補として抽出すべき編集距離の上限よりも大きいデータは候補から除外する。使用要素比較部４６は、対象データが使用していて、データベース６０中のデータが使用していない要素の数と、データベース６０中のデータが使用していて、対象データが使用していない要素の数を算出し、いずれかが編集距離の上限を超えていれば、そのデータを候補から除外する。例えば、対象データ「ｔｅｗｔ」とデータ「ｗｏｒｄ」の使用要素の違いは次のようになる。対象データ「ｔｅｗｔ」に使用されていてデータ「ｗｏｒｄ」に使用されていない要素は、「ｔ」、「ｅ」の２つであり、データ「ｗｏｒｄ」に使用されていて対象データ「ｔｅｗｔ」に使用されていない要素は、「ｏ」、「ｒ」、「ｄ」の３つである。したがって、両者の使用要素の違いは「３」であり、編集距離の上限「２」よりも大きいので、データ「ｗｏｒｄ」は候補から除外される。これにより、図５に示した候補のデータは、さらに図６に示すように絞り込まれる。【００３６】
編集距離算出部４７は、以上のように絞り込まれた候補に対して、対象データとの間の編集距離を算出し、編集距離が所定の値よりも近いデータを候補として抽出する。編集距離算出部４７に代えて、信号距離やスミスウォーターマンアルゴリズムによる類似度など、他の方式でデータ間の距離や類似度を算出する構成を設けてもよい。一般に、距離は、データ間の類似性が高いほど小さい値となり、類似度は、データ間の類似性が高いほど大きい値となるが、ここでは、類似性が高いことを「距離が近い」と表現している。したがって、編集距離を算出する場合は、算出された値が所定の上限よりも小さいデータを抽出し、類似度を算出する場合は、算出された値が所定の下限よりも大きいデータを抽出する。以上の手順により、図７に示した候補データが抽出される。【００３７】
候補提示部４８は、候補抽出部４３により抽出された候補をユーザに提示する。候補提示部４８は、算出された距離が近いデータが上位になるように表示するのが好ましい。これにより、より類似性の高い候補を上位に表示することができる。候補提示部４８は、算出された距離の値とともに候補データを提示してもよい。これにより、ユーザが提示された候補データの中からデータを選択する際に、距離の値を参照して類似性を判断することができる。提示された候補データの中からユーザにより選択されたデータがワードプロセッサなどに対して出力される。【００３８】
学習部４９は、候補抽出部４３により抽出された候補データや、その後ユーザにより選択されたデータが、データベース６０の上位に配置されるようにデータを並び替えて、データベース６０を学習させる。学習部４９は、対象データ、候補データとして抽出されたデータ、又は候補データの中からユーザにより選択されたデータと同じ固有数値を持つデータ群を、同じ構成要素数のデータ群の中で上位に配置されるように移動させる。さらに、学習部４９は、対象データ、候補データとして抽出されたデータ、又は候補データの中からユーザにより選択されたデータを、同じ固有数値を持つデータ群の中で上位に配置されるように移動させる。これにより、使用されているデータや、使用されているデータに類似するデータとして抽出又は選択されたデータが、次回以降の検索において、より早く検索対象となるようにすることができ、検索の効率及び速度を向上させることができる。また、候補提示部４８が候補データを提示する際に、使用、抽出、又は選択される頻度の高いデータがより上位になるように表示順を最適化することができる。これにより、ユーザの利便性を向上させることができる。【００３９】
要素数、固有数値、使用要素を比較する処理は、編集距離を算出するよりも高速に行うことができるので、編集距離の算出に先立って、これらの処理により予め候補を絞り込むことで、類似するデータを抽出する処理を高速化することができる。要素数、固有数値、使用要素を比較する処理は、この順で処理時間が長くなるので、より高速な処理を先に実行することで、絞り込みの効率を向上させることができ、類似するデータを抽出する処理を更に高速化することができる。【００４０】
図８は、実施の形態に係るデータ処理方法の手順を示すフローチャートである。まず、データ取得部４１が対象データを取得すると（Ｓ１０）、検索部４２が、対象データがデータベース６０に存在するか否かを検索する（Ｓ１４）。データベース６０に存在しなければ（Ｓ１４のＮ）、候補抽出部４３が対象データに類似するデータをデータベース６０から抽出する。まず、要素数比較部４４が、対象データに使用されている要素の数を算出し、要素数の差が所定値以上であるデータを候補から除外して対象を絞り込む（Ｓ１６）。次に、固有数値比較部４５が、対象データの固有数値を算出し、固有数値間の偽距離が所定値以上であるデータを候補から除外して対象を絞り込む（Ｓ１８）。さらに、使用要素比較部４６が、対象データに使用されている要素とデータベース６０のデータに使用されている要素を比較して、所定値以上の差があるデータを候補から除外して対象を絞り込む（Ｓ２０）。編集距離算出部４７は、絞り込まれたデータに対して、対象データとの間の編集距離を算出し、編集距離が所定値以下であるデータを類似するデータとして抽出する（Ｓ２２）。候補提示部４８は、抽出された候補データをユーザに提示する（Ｓ２４）。データベース６０に対象データが存在していた場合は（Ｓ１４のＹ）、類似するデータを抽出する処理をスキップする。学習部４９は、対象データ、又は対象データに類似するデータとして抽出されたデータ、又は抽出されたデータの中からユーザにより選択されたデータが、データベース６０の上位に配置されるように、データベース６０における位置を移動させて、データベース６０を学習させる（Ｓ２６）。【００４１】
以上、本発明を実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【産業上の利用可能性】
【００４２】
本発明は、あるデータに類似するデータを抽出するデータ処理装置に利用可能である。
【図１】
2007132564.tif 000003
【図２】
2007132564.tif 000004
【図３】
2007132564.tif 000005
【図４】
2007132564.tif 000006
【図５】
2007132564.tif 000007
【図６】
2007132564.tif 000008
【図７】
2007132564.tif 000009
【図８】
2007132564.tif 000010
【国際調査報告】
2007132564.tif 000011
2007132564.tif 000012
2007132564.tif 000013
2007132564.tif 000014