(57)【要約】  本発明は、データの類似性に基づく演算を行う際に、データの任意のサブセットに関する類似インデックスの再構築を容易にする。  類似インデックス記憶部１１は、データの類似性に関わる属性値を格納したノードが、データ間の類似関係を表すよう階層的に構成された類似インデックスを記憶する。ラベル生成部１２は、データ毎に、類似インデックスにおいて類似性に関わる属性値が格納されたノードの位置を示すパスに基づくラベルを生成する。データ記憶部１３は、データ毎に、類似性に関わる属性値およびラベルを関連付けた情報を記憶する。類似演算部１４は、データ記憶部１３に記憶された全てまたは一部の情報が示すデータについて、ラベルに基づき類似インデックスを再構成し、再構成した類似インデックスを用いて全てまたは一部のデータを対象とする類似性に基づく演算を実行する
2017221857.tif 000002
【特許請求の範囲】
【請求項１】
データの類似性に関わる属性値を格納したノードが、前記データ間の類似関係を表すよう階層的に構成された類似インデックスを記憶した類似インデックス記憶手段と、
前記データ毎に、前記類似インデックスにおいて前記属性値が格納されたノードの位置を示すパスに基づくラベルを生成するラベル生成手段と、
前記データ毎に、前記属性値および前記ラベルを関連付けた情報を記憶するデータ記憶手段と、
前記データ記憶手段に記憶された全てまたは一部の情報が示すデータについて、前記ラベルに基づき前記類似インデックスを再構成し、再構成した前記類似インデックスを用いて前記全てまたは一部のデータを対象とする類似性に基づく演算を実行する類似演算手段と、
を備えた類似演算装置。
【請求項２】
前記データ記憶手段が、前記属性値および前記ラベルを関連付けた情報を、複数のブロックに分散して記憶するとき、
前記類似演算手段は、前記ラベルのプリフィックスに基づいて、前記属性値および前記ラベルを関連付けた情報を複数のブロックに再分散して前記データ記憶手段に記憶させ、再分散された各ブロックに記憶された情報が示すデータについて、前記ラベルに基づき再構成した前記類似インデックスを用いて、前記類似性に基づく演算を実行することを特徴とする請求項１に記載の類似演算装置。
【請求項３】
前記類似インデックス記憶手段は、前記類似インデックスにおいて任意のノード以下に、そのノードに格納された前記データの前記属性値に対する類似性が類似閾値以上の他の前記データの前記属性値を格納するよう構成された前記類似インデックスを記憶し、
前記ラベル生成手段は、前記ラベルに、前記データの前記属性値が格納されたノードの位置を示すパスにおいて適用された前記類似閾値を表す情報をさらに含め、
前記類似演算手段は、前記ラベルに含まれる前記類似閾値を表す情報に基づいて、前記再分散の際に用いるプリフィックスを決定することを特徴とする請求項２に記載の類似演算装置。
【請求項４】
前記データ記憶手段は、前記データ毎に、前記類似性に関わる属性値以外の他の属性値に基づく選択を可能にするための情報をさらに記憶し、
前記類似演算手段は、前記他の属性値に関する選択条件を満たすデータについて、前記ラベルに基づき再構成した前記類似インデックスを用いて前記類似性に基づく演算を実行することを特徴とする請求項１から請求項３のいずれか１項に記載の類似演算装置。
【請求項５】
コンピュータ装置が、
データの類似性に関わる属性値を格納したノードが、前記データ間の類似関係を表すよう階層的に構成された類似インデックスを用いて、
前記データ毎に、前記類似インデックスにおいて前記属性値が格納されたノードの位置を示すパスに基づくラベルを生成し、
前記データ毎に、前記属性値および前記ラベルを関連付けた情報をデータ記憶手段に記憶し、
前記データ記憶手段に記憶された全てまたは一部の情報が示すデータについて、前記ラベルに基づき前記類似インデックスを再構成し、再構成した前記類似インデックスを用いて前記全てまたは一部のデータを対象とする類似性に基づく演算を実行する方法。
【請求項６】
データの類似性に関わる属性値を格納したノードが、前記データ間の類似関係を表すよう階層的に構成された類似インデックスを用いて、
前記データ毎に、前記類似インデックスにおいて前記属性値が格納されたノードの位置を示すパスに基づくラベルを生成するラベル生成ステップと、
前記データ毎に、前記属性値および前記ラベルを関連付けた情報をデータ記憶手段に記憶するデータ記憶ステップと、
前記データ記憶手段に記憶された全てまたは一部の情報が示すデータについて、前記ラベルに基づき前記類似インデックスを再構成し、再構成した前記類似インデックスを用いて前記全てまたは一部のデータを対象とする類似性に基づく演算を実行する類似演算ステップと、
をコンピュータ装置に実行させるプログラムを記憶した記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データに対して類似性に基づく演算を行う技術に関する。
【背景技術】
【０００２】
データに対して類似性に基づく演算を行う技術がある。類似性に基づく演算の一例としては、例えば、類似結合が知られている。類似結合とは、データセットにおいてある２つのデータが所定の類似範囲内にある際に、それらのデータを１つにまとめる演算である。例えば、顔画像が２枚あった場合、類似結合は、それらの顔が同一人物とみなせるほど類似している場合に１つにまとめ、そうでなければ別の人物として分けるような演算を行う。【０００３】
一般的にデータセットの規模が増大するほど、類似性に基づく演算のコストが大きくなる。そこで、データセットを分割し、複数のプロセッサで類似性に基づく演算を実行する手段がとられる。この時に問題となるのは、データセットをどのように分割するか、そして、分割したサブデータセットにまたがるデータ間での類似性に基づく演算をどのように実現するかである。【０００４】
上述の問題に関連する技術の一例が、特許文献１に記載されている。この関連技術は、対象とするデータの属性が多次元値であり、かつ、各次元の値を参照できることを前提とする。この前提の下に、この関連技術は、ε−ｋ−ｄツリーという類似インデックスを構築する。ε−ｋ−ｄツリーは、ツリーの各段をデータの各次元に対応させている。例えば、ルートノードの子ノードである第１段目のノードは、第１次元に対応し、その子ノードである第２段目のノード群は第２次元に対応する。そして、各段において、その段に対応する次元の値でデータをソートした順で、データが入るべきノードが決められる。各段である次元の値でデータがソートされているので、類似結合は、ノード内のデータおよび隣り合うノード間のデータだけを対象とすればよい。この関連技術は、ε−ｋ−ｄツリーのこの性質を用い、ε−ｋ−ｄツリーにおけるある段以下のサブツリーごとに、データセットを分割する。そして、この関連技術は、サブツリー内で類似結合を実行するとともに、隣り合うサブツリー間でそれぞれの最左と最右のノードにあるデータを類似結合する。【０００５】
また、上述の問題に関連する技術の他の一例が、特許文献２に記載されている。この関連技術は、類似性に基づく演算として、与えられたデータに類似するデータの検索を、分類検索ツリーを用いて実行する。具体的には、この関連技術は、データに自動または手動でタグ付けされたキーワードを基に、分類検索ツリーを生成する。分類検索ツリーは、データを分類する分類器がツリー上に構成されたものである。そして、この関連技術は、与えられたデータを分類検索ツリーの分類器により分類し、続けて、下位の分類器により分類していくことにより、類似するデータを検索する。このように、この関連技術は、与えられたデータに類似するデータの検索処理を、分類検索ツリーの枝に沿う範囲に制限することにより、検索処理を効率化する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１１−２４２６８８号公報
【特許文献２】特開２０１４−１９７４１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述の関連技術には、以下の課題がある。【０００８】
データの類似性に基づく演算を行う際には、与えられたデータセット全てを対象とせずに、任意のサブセットに対して行いたい場合がある。【０００９】
ところが、特許文献１に記載された関連技術では、複数のプロセッサのそれぞれが、ε−ｋ−ｄツリーにおけるある段以下のサブツリーを、ローカルな類似インデックスとしてメモリに記憶し、演算の対象とする。したがって、ローカルな類似インデックスが表すサブセットとは異なる任意のサブセットに対して類似性に基づく演算を行いたい場合、この関連技術は、各プロセッサによって参照されるメモリにあるローカルな類似インデックスを１つに統合する必要が生じる。ローカルな類似インデックスの構造はそれらに挿入されたデータに大きく依存するため、この統合操作に係るコストは、新規に類似インデックスを構築するコストとほぼ等価になる。特に、複数のプロセッサおよびメモリが分散環境に配置されていることを想定する場合、この統合操作は、一か所に該当するデータを集約して、類似インデックスを再構築することになるため、著しく性能を低下させる要因となる。【００１０】
また、特許文献２に記載された関連技術は、データセットについて構築した分類検索ツリーに沿って類似するデータの検索を行うものの、その任意のサブセットを対象として類似するデータの検索を行うことについては記載がない。したがって、この場合、この関連技術は、任意のサブセットについて分類検索ツリーを再構築する必要があり、性能を低下させる要因となる。【００１１】
本発明は、上述の課題を解決するためになされたものである。すなわち、本発明は、データの類似性に基づく演算を行う際に用いられる類似インデックスにおいて、任意のデータのサブセットに関する類似インデックスの再構築を容易にする技術を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するために、本発明の類似演算装置は、データの類似性に関わる属性値を格納したノードが、前記データ間の類似関係を表すよう階層的に構成された類似インデックスを記憶した類似インデックス記憶手段と、前記データ毎に、前記類似インデックスにおいて前記属性値が格納されたノードの位置を示すパスに基づくラベルを生成するラベル生成手段と、前記データ毎に、前記属性値および前記ラベルを関連付けた情報を記憶するデータ記憶手段と、前記データ記憶手段に記憶された全てまたは一部の情報が示すデータについて、前記ラベルに基づき前記類似インデックスを再構成し、再構成した前記類似インデックスを用いて前記全てまたは一部のデータを対象とする類似性に基づく演算を実行する類似演算手段と、を備える。【００１３】
また、本発明の方法は、コンピュータ装置が、データの類似性に関わる属性値を格納したノードが、前記データ間の類似関係を表すよう階層的に構成された類似インデックスを用いて、前記データ毎に、前記類似インデックスにおいて前記属性値が格納されたノードの位置を示すパスに基づくラベルを生成し、前記データ毎に、前記属性値および前記ラベルを関連付けた情報をデータ記憶手段に記憶し、前記データ記憶手段に記憶された全てまたは一部の情報が示すデータについて、前記ラベルに基づき前記類似インデックスを再構成し、再構成した前記類似インデックスを用いて前記全てまたは一部のデータを対象とする類似性に基づく演算を実行する。【００１４】
また、本発明の記憶媒体は、データの類似性に関わる属性値を格納したノードが、前記データ間の類似関係を表すよう階層的に構成された類似インデックスを用いて、前記データ毎に、前記類似インデックスにおいて前記属性値が格納されたノードの位置を示すパスに基づくラベルを生成するラベル生成ステップと、前記データ毎に、前記属性値および前記ラベルを関連付けた情報をデータ記憶手段に記憶するデータ記憶ステップと、前記データ記憶手段に記憶された全てまたは一部の情報が示すデータについて、前記ラベルに基づき前記類似インデックスを再構成し、再構成した前記類似インデックスを用いて前記全てまたは一部のデータを対象とする類似性に基づく演算を実行する類似演算ステップと、をコンピュータ装置に実行させるプログラムを記憶している。
【発明の効果】
【００１５】
本発明は、データの類似性に基づく演算を行う際に用いられる類似インデックスにおいて、任意のデータのサブセットに関する類似インデックスの再構築を容易にする技術を提供することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の第１の実施の形態としての類似演算装置の構成を示すブロック図である。
【図２】本発明の第１の実施の形態としての類似演算装置のハードウェア構成の一例を示す図である。
【図３】本発明の第１の実施の形態としての類似演算装置がデータ記憶部に情報を記憶する動作を説明するフローチャートである。
【図４】本発明の第１の実施の形態としての類似演算装置が類似性に基づく演算を実行する動作を説明するフローチャートである。
【図５】本発明の第１の実施の形態の具体例における類似インデックスを模式的に説明する図である。
【図６】本発明の第２の実施の形態としての類似演算装置の構成を示すブロック図である。
【図７】本発明の第２の実施の形態としての類似演算装置が類似性に基づく演算を実行する動作を説明するフローチャートである。
【図８】本発明の第２の実施の形態の具体例における類似インデックスを模式的に説明する図である。
【図９】本発明の第３の実施の形態としての類似演算装置の構成を示すブロック図である。
【図１０】本発明の第３の実施の形態としての類似演算装置がデータ記憶部に情報を記憶する動作を説明するフローチャートである。
【図１１】本発明の第３の実施の形態としての類似演算装置が類似性に基づく演算を実行する動作を説明するフローチャートである。
【図１２】本発明の第３の実施の形態における類似インデックスの具体例を模式的に説明する図である。
【図１３】本発明の第３の実施の形態の具体例において付与されるラベルを模式的に説明する図である。
【図１４】本発明の第３の実施の形態の具体例において共通のプリフィックスを有するデータを模式的に説明する図である。
【図１５】本発明の第４の実施の形態としての類似演算装置の構成を示すブロック図である。
【図１６】本発明の第４の実施の形態としての類似演算装置が類似性に基づく演算を実行する動作を説明するフローチャートである。
【図１７】本発明の第４の実施の形態の具体例においてデータ記憶部に格納される情報を説明する図である。
【図１８】本発明の第４の実施の形態の具体例においてデータ記憶部に格納される情報の他の例を説明する図である。
【発明を実施するための形態】
【００１７】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。
【００１８】
（第１の実施の形態）
本発明の第１の実施の形態としての類似演算装置１の機能ブロック構成を図１に示す。図１において、類似演算装置１は、類似インデックス記憶部１１と、ラベル生成部１２と、データ記憶部１３と、類似演算部１４とを備える。
【００１９】
ここで、類似演算装置１は、図２に示すようなハードウェア要素によって構成可能である。図２において、類似演算装置１は、ＣＰＵ（Central Processing Unit）１００１、メモリ１００２、出力装置１００３、および、入力装置１００４を含む。メモリ１００２は、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、補助記憶装置（ハードディスク等）等によって構成される。出力装置１００３は、ディスプレイ装置やプリンタ等のように、情報を出力する装置によって構成される。入力装置１００４は、キーボードやマウス等のように、ユーザ操作の入力を受け付ける装置によって構成される。この場合、類似インデックス記憶部１１およびデータ記憶部１３は、メモリ１００２によって構成される。また、ラベル生成部１２および類似演算部１４は、メモリ１００２に格納されるコンピュータ・プログラムを読み込んで実行するとともに出力装置１００３や入力装置１００４等の各部を制御するＣＰＵ１００１によって構成される。なお、類似演算装置１およびその各機能ブロックのハードウェア構成は、上述の構成に限定されない。
【００２０】
類似インデックス記憶部１１は、類似インデックスを記憶している。類似インデックスとは、データの類似性に関わる属性値を格納したノードが、データ間の類似関係を表すよう階層的に構成された情報である。なお、類似インデックスは、ノードに、データの類似性に関わる属性値自体を格納してもよいし、類似性に関わる属性値への参照情報を格納してもよい。
【００２１】
例えば、類似インデックスは、あるノードに格納されたあるデータの類似性に関わる属性値に対して類似性を有すると判定される他のデータの類似性に関わる属性値が、そのノードにおけるそのデータの配下のノードに格納されるよう構成されていてもよい。また、この場合、各ノードには、１つまたは複数のデータについてその類似性に関わる属性値が格納される。また、このとき、類似性を有するか否かの判定条件として、下の階層になるほどより類似性が高いことを示す条件を適用することにより、各ノードは、下の階層になるほど、より類似する１つ以上のデータについてその類似性に関わる属性値を格納することになる。また、各ノードにおいて、格納される１つ以上のデータの類似性に関わる属性値は、親のノードにおけるデータとの類似性の順に配置されてもよい。
【００２２】
ラベル生成部１２は、データ毎に、類似インデックスにおいて類似性に関わる属性値が格納されたノードの位置を示すパスに基づくラベルを生成する。そして、ラベル生成部１２は、データの類似性に関わる属性値と、生成したラベルとを関連付けた情報を、後述のデータ記憶部１３に記憶させる。
【００２３】
ここで、パスは、ルートノードから、該当するデータの類似性に関わる属性値が格納されるノードまでのノードの並びによって表される。例えば、ラベルは、パスに含まれるノードを識別する情報を、パスにおける並び順に文字列として連結したものであってもよい。また、前述のように、各ノードにおいて、格納される１つ以上のデータの類似性に関わる属性値が、親のノードにおけるデータとの類似性の順に配置されているとする。この場合、パスは、ルートノードから該当するノードまでの、ノードおよび該ノード内での配置順序を表す情報の並びによって表される。この場合、ラベルは、パスに含まれるノードおよびその配置順序を表す情報を、パスにおける並び順に文字列として連結したものであってもよい。
【００２４】
例えば、ラベル生成部１２は、対象となるデータの類似性に関わる属性値を入力として取得する。そして、ラベル生成部１２は、取得した類似性に関わる属性値を類似インデックスのいずれのノードに格納するかを決定し、決定したノードに格納すればよい。このとき、ラベル生成部１２は、取得した類似性に関わる属性値を格納可能なノードが既に類似インデックスに含まれていれば、そのノードにその類似性に関わる属性値を格納する。また、ラベル生成部１２は、取得した類似性に関わる属性値を格納可能なノードが未だ類似インデックスに含まれていなければ、新たにノードを生成してそのノードに類似性に関わる属性値を格納する。以降、「類似インデックスにおいて既存または新規のノードに、データの類似性に関わる属性値を格納する」ことを、「類似インデックスのノードに、データの類似性に関わる属性値を挿入する」とも記載する。そして、ラベル生成部１２は、類似インデックスにおいて、ルートノードから挿入したノードまでのパスを求め、求めたパスに基づいて、ラベルを生成すればよい。
【００２５】
データ記憶部１３は、データ毎に、類似性に関わる属性値およびラベルを関連付けて記憶する。例えば、データ記憶部１３は、データ毎に、類似性に関わる属性値を格納するレコードに、ラベルを格納するカラムを設けてもよい。なお、データ記憶部１３は、データの類似性に関わる属性値と、ラベルとの関連性が特定できる手法であれば、どのような形式でデータを格納してもよい。またデータ記憶部１３は、各データの類似性に関わる属性値およびラベルを関連付けた情報を、複数のブロックに分散して記憶してもよい。また、その場合、各ブロックは、物理的に異なる複数の装置（例えば、複数のメモリ１００２）に分散されていてもよい。
【００２６】
類似演算部１４は、データ記憶部１３に記憶された全てまたは一部のデータについて、ラベルを用いて類似インデックスを再構成する。そして、類似演算部１４は、再構成した類似インデックスを用いて、全てまたは一部のデータを対象として類似性に基づく演算を実行する。例えば、類似演算部１４は、演算の条件を、入力として取得してもよい。そして、類似演算部１４は、取得した演算の条件に基づいて、再構成した類似インデックスを用いて類似性に基づく演算を実行してもよい。
【００２７】
具体的には、類似演算部１４は、データ記憶部１３に記憶された全てまたは一部のデータを対象として、ラベルに基づいてソートを行う。ラベルは、類似インデックスにおけるパスを表しているので、ソートにより、類似インデックスが再構成される。
【００２８】
また、例えば、類似性に基づく演算とは、類似結合であってもよい。この場合、類似演算部１４は、類似結合の条件を入力として取得し、再構成された類似インデックスにおいて、類似結合の条件を用いて類似結合の演算を実施してもよい。なお、類似結合には、類似インデックスを用いて類似結合を実現する公知の技術を適用可能である。
【００２９】
以上のように構成された類似演算装置１の動作について、図面を参照して説明する。
【００３０】
まず、類似演算装置１がデータ記憶部１３に情報を記憶する動作を図３に示す。
【００３１】
図３では、まず、ラベル生成部１２は、対象となるデータの類似性に関わる属性値を取得する（ステップＡ１）。
【００３２】
次に、ラベル生成部１２は、取得した類似性に関わる属性値を、類似インデックス記憶部１１に記憶された類似インデックスのノードに挿入する（ステップＡ２）。
【００３３】
次に、ラベル生成部１２は、類似性に関わる属性値を挿入したノードを示すパスに基づいて、ラベルを生成する（ステップＡ３）。
【００３４】
次に、ラベル生成部１２は、生成したラベルと、取得した類似性に関わる属性値とを関連付けた情報を、データ記憶部１３に記憶させる（ステップＡ４）。
【００３５】
以上で、類似演算装置１は、データ記憶部１３に情報を記憶する動作を終了する。
【００３６】
次に、類似演算装置１が類似性に基づく演算を行う動作を図４に示す。
【００３７】
図４では、まず、類似演算部１４は、データ記憶部１３に記憶された情報が示すデータのうち演算の対象となるデータについて、ラベルを用いて類似インデックスを再構成する（ステップＢ１）。なお、対象となるデータは、データ記憶部１３に記憶された全ての情報が示すデータであってもよいし、一部の情報が示すデータであってもよい。
【００３８】
次に、類似演算部１４は、再構成した類似インデックスを用いて、演算対象のデータのセットについて、類似性に基づく演算を実行する（ステップＢ２）。
【００３９】
例えば、前述のように、類似演算部１４は、入力として取得した演算の条件に基づいて、類似性に基づく演算を行ってもよい。また、前述のように、類似演算部１４は、類似性に基づく演算として、類似結合を行ってもよい。
【００４０】
以上で、類似演算装置１は、類似性に基づく演算を行う動作を終了する。
【００４１】
次に、類似演算装置１による動作を具体例で示す。ここでは、類似性に関する演算として、類似結合が適用された例について説明する。
【００４２】
また、この具体例では、類似インデックス記憶部１１は、図５に示す類似インデックスを記憶しているものとする。図５において、矩形が連結された長方形は、ノードを表す。例えば、Ａ１〜Ａｎの矩形が連結された長方形は、ノードＡを表す。また、それぞれの矩形は、そのノードに格納された各データの類似性に関わる属性値を表す。また、矩形に囲まれたＡ１、Ｂ１等の文字列は、ノードおよびそのノード内での配置順序を表している。例えば、Ａ１は、ノードＡにおける配置順序が１番目であることを表している。以降、ノードＡにおいて配置順序が１番目であることを、ノードＡ１とも記載する。なお、図５では、各ノードにｎ（ｎは１以上の整数）個ずつのデータが格納される例が示されているが、あるノードに格納されるデータの数は、他のノードに格納されるデータの数と必ずしも同一であるとは限らない。
【００４３】
まず、この具体例において、データ記憶部１３に情報が記憶される動作について説明する。
【００４４】
ここでは、ラベル生成部１２は、対象となるデータの類似性に関わる属性値を取得し（ステップＡ１）、類似インデックス記憶部１１に記憶された類似インデックスのノードに挿入する（ステップＡ２）。ここでは、ノードＣ１に、取得した類似性に関わる属性値が挿入されたとする。
【００４５】
次に、ラベル生成部１２は、ルートノードから挿入したノードＣ１までのパスに基づいてラベルを生成する（ステップＡ３）。ここでは、ノードＣ１へのパスは、Ａ１、Ｂ１、Ｃ１という、ノードおよび配置順序を表す情報の並びによって表される。そこで、ラベル生成部１２は、これらのノードおよび配置順序を表す情報をその並びの順に文字列として連結することにより、「Ａ１−Ｂ１−Ｃ１」というラベルを生成する。なお、ここでは、連結する文字列として、「−」（ハイフン）を用いている。
【００４６】
次に、ラベル生成部１２は、生成したラベル「Ａ１−Ｂ１−Ｃ１」と、このデータの類似性に関わる属性値とを関連付けた情報を、データ記憶部１３に記憶させる（ステップＡ４）。
【００４７】
以上で、データ記憶部１３に情報が記憶される動作の具体例の説明を終了する。
【００４８】
次に、この具体例で類似結合を行う動作について説明する。この具体例では、データ記憶部１３は、類似性に関わる属性値およびラベルを関連付けた情報を、複数のブロックに分散して記憶するものとする。また、ここでは、ブロック内で類似結合が行われる例について説明する。
【００４９】
まず、類似演算部１４は、データ記憶部１３に記憶された情報を、ブロック毎にラベルを用いてソートすることにより、類似インデックスを再構成する（ステップＢ１）。
【００５０】
具体的には、類似演算部１４は、データ記憶部１３に記憶された情報を、ラベルの文字列の昇順にソートする。このようにソートされた情報の並びでは、ラベルの長さが類似インデックスにおける階層の深さを表す。また、同じ長さのラベルで前後に続くデータは、同一の部分木において隣り合うノードを表す。したがって、類似演算部１４は、データ記憶部１３に記憶された情報をラベルでソートすることにより、類似インデックスを再構成できる。
【００５１】
次に、類似演算部１４は、再構成した類似インデックスを用いて、ブロック毎に類似結合を実行する（ステップＢ２）。例えば、類似演算部１４は、再構成した類似インデックスにおいて、隣り合うノードを類似結合してもよい。
【００５２】
このように、本実施の形態の具体例では、類似演算装置１は、データのサブセットであるブロック毎のデータについて、容易に類似インデックスを再構成することができる。
【００５３】
以上で、具体例の説明を終了する。
【００５４】
次に、本発明の第１の実施の形態の効果について述べる。
【００５５】
本発明の第１の実施の形態としての類似演算装置は、データの類似性に基づく演算を行う際に用いられる類似インデックスにおいて、任意のデータのサブセットに関する類似インデックスの再構築を容易にすることができる。
【００５６】
その理由について説明する。本実施の形態では、類似インデックス記憶部が、データの類似性に関わる属性値を格納したノードが、データ間の類似関係を表すよう階層的に構成された類似インデックスを記憶している。そして、ラベル生成部が、データ毎に、類似インデックスにおいてその類似性に関わる属性値が格納されたノードの位置を示すパスに基づくラベルを生成する。そして、ラベル生成部が、データ毎に、類似性に関わる属性値とラベルとを関連付けた情報を、データ記憶部に記憶させる。また、類似演算部が、データ記憶部に記憶された全てまたは一部の情報が示すデータについて、ラベルを用いて類似インデックスを再構成する。そして、類似演算部が、再構成した類似インデックスを用いて、全てまたは一部のデータを対象とする類似性に基づく演算を実行するからである。
【００５７】
このように、本実施の形態は、データ記憶部に記憶されたラベルを参照することにより、類似インデックス記憶部の類似インデックスを参照することなく、類似インデックスを容易に再構成することができる。
【００５８】
（第２の実施の形態）
次に、本発明の第２の実施の形態について図面を参照して詳細に説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第１の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
【００５９】
まず、本発明の第２の実施の形態としての類似演算装置２の機能ブロック構成を、図６に示す。図６において、類似演算装置２は、本発明の第１の実施の形態としての類似演算装置１に対して、データ記憶部１３に替えてデータ記憶部２３と、類似演算部１４に替えて類似演算部２４とを含む点が異なる。なお、類似演算装置２およびその各機能ブロックは、図２を参照して説明した本発明の第１の実施の形態と同一のハードウェア要素によって構成可能である。ただし、類似演算装置２およびその各機能ブロックのハードウェア構成は、上述の構成に限定されない。
【００６０】
データ記憶部２３は、データの類似性に関わる属性値およびラベルを関連付けた情報を、複数のブロックに分散して記憶する。複数のブロックへの分散手法については、公知の技術を適用可能である。
【００６１】
類似演算部２４は、ラベルにおけるプリフィックスに基づいて、データの類似性に関わる属性値およびラベルを関連付けた情報を、複数のブロックに再分散する。つまり、類似演算部２４は、同一のプリフィックスを有するラベルに関連付けられたデータを１つ以上のブロックから取得し、取得したデータを、同一のブロックに記憶させればよい。例えば、プリフィックスとしては、ラベルの文字列のうち類似インデックスにおいて所定の階層までのパスを表す文字列が適用されてもよい。
【００６２】
そして、類似演算部２４は、各ブロックに格納された情報が示すデータについて、ラベルに基づいて類似インデックスを再構成する。また、類似演算部２４は、各ブロックに格納された情報が示すデータについて、それぞれの類似インデックスを用いて、類似性に基づく演算を実行する。なお、類似演算部２４が、複数のＣＰＵ１００１により構成される場合、各ＣＰＵ１００１が、対応するブロックについて類似インデックスを再構成し、再構成した類似インデックスを用いて類似性に基づく演算を行ってもよい。
【００６３】
以上のように構成された類似演算装置２の動作について、図面を参照して説明する。なお、類似演算装置２がデータ記憶部２３に情報を記憶する動作については、図３を参照して説明した本発明の第１の実施の形態の動作と同様であるため、本実施の形態における説明を省略する。
【００６４】
ここでは、類似演算装置２が類似性に基づく演算を行う動作を図７に示す。
【００６５】
図７では、まず、類似演算部２４は、データ記憶部２３に記憶された情報を、プリフィックスに基づき複数のブロックに再分散する（ステップＢ２１）。
【００６６】
次に、類似演算部２４は、各ブロックに記憶された情報が示すデータについて、ラベルを用いて類似インデックスを再構成する（ステップＢ２２）。
【００６７】
次に、類似演算部２４は、各ブロックに記憶された情報が示すデータについて、再構成した類似インデックスを用いて、類似性に基づく演算を実行する（ステップＢ２３）。
【００６８】
以上で、類似演算装置２は、類似性に基づく演算を行う動作を終了する。
【００６９】
次に、類似演算装置２の動作を具体例で示す。ここでは、類似性に関する演算として、類似結合が適用された例について説明する。
【００７０】
この具体例では、データ記憶部２３は、任意の分割手法を用いて、データおよびラベルを関連付けた情報を、複数のブロックに分散して記憶しているものとする。このとき、分散配置されたブロックにまたがって、類似結合を行う場合について述べる。また、類似インデックス記憶部１１には、図５を参照して説明した本発明の第１の実施の形態の具体例と同様の類似インデックスが記憶されているとする。
【００７１】
この場合、類似演算部２４は、データ記憶部２３に記憶された情報に対して、ラベルのプリフィックスをキーにしたハッシュ結合を実施する（ステップＢ２１）。
【００７２】
例えば、図５の類似インデックスにおいて、ラベルのプリフィックスとして３階層目のノードまでのパスを適用した例を、図８に示す。図８において、ノードＣ１以下の部分木に格納されるデータの類似性に関わる属性値は、プリフィックス「Ａ１−Ｂ１−Ｃ１」を持つラベルに関連付けられている。また、ノードＪ１以下の部分木に格納されるデータの類似性に関わる属性値は、プリフィックス「Ａｎ−Ｉ１−Ｊ１」を持つラベルに関連付けられている。そこで、類似演算部２４は、プリフィックス「Ａ１−Ｂ１−Ｃ１」や、プリフィックス「Ａｎ−Ｉ１−Ｊ１」等を再分散キーとして、ハッシュ結合を実施する。したがって、ハッシュ結合により、同一のプリフィックスを持つラベルに関連付けられたデータの類似性に関わる属性値は、同じブロックに集められる。
【００７３】
その後、類似演算部２４は、各ブロックにおいて、ラベルを用いて類似インデックスを再構成し（ステップＢ２２）、再構成した類似インデックスを用いてブロック内の類似結合を行えばよい（ステップＢ２３）。
【００７４】
以上で、具体例の説明を終了する。
【００７５】
次に、本発明の第２の実施の形態の効果について述べる。
【００７６】
本発明の第２の実施の形態としての類似演算装置は、複数のブロックに分散して記憶されたデータの類似性に関わる属性値を用いて、ブロックにまたがった類似性に基づく演算を、効率的に実行することができる。
【００７７】
その理由について説明する。本実施の形態では、データ記憶部が、データの類似性に関わる属性値およびラベルを関連付けた情報を、複数のブロックに分散して記憶している。そして、類似演算部が、データの類似性に関わる属性値およびラベルを関連付けた情報を、プリフィックスに基づき複数のブロックに再分散し、各ブロックに記憶された情報が示すデータについて、ラベルを用いて類似インデックスを再構成する。そして、類似演算部が、各ブロックに記憶された情報が示すデータについて、再構成した類似インデックスを用いて、類似性に基づく演算を実行するからである。
【００７８】
なお、本実施の形態において、データ記憶部は、複数のブロックを、物理的に異なる複数の記憶装置にそれぞれ記憶させてもよい。その場合、本実施の形態は、ラベルのプリフィックスを再分散のためのキーとして用いることにより、効率的なハッシュ結合アルゴリズムを適用して、再分散を行うことができる。その結果、本実施の形態は、効率的に、類似性に基づく演算の対象となるデータを同一の記憶装置に集めることができる。これにより、本実施の形態は、分散環境下での類似性に基づく演算を効率化することができる。
【００７９】
（第３の実施の形態）
次に、本発明の第３の実施の形態について図面を参照して詳細に説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第１および第２の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
【００８０】
まず、本発明の第３の実施の形態としての類似演算装置３の機能ブロック構成を図９に示す。類似演算装置３は、本発明の第２の実施の形態の類似演算装置２に対して、類似インデックス記憶部１１に替えて類似インデックス記憶部３１と、ラベル生成部１２に替えてラベル生成部３２と、類似演算部２４に替えて類似演算部３４とを備える点が異なる。
【００８１】
なお、類似演算装置３およびその各機能ブロックは、図２を参照して説明した本発明の第１の実施の形態と同一のハードウェア要素によって構成可能である。ただし、類似演算装置３およびその各機能ブロックのハードウェア構成は、上述の構成に限定されない。
【００８２】
類似インデックス記憶部３１は、類似インデックスを格納する。類似インデックスは、任意のノード以下に、そのノードに格納されたデータの類似性に関わる属性値に対する類似性が類似閾値以上の他のデータの類似性に関わる属性値が格納されるよう構成される。つまり、このような類似インデックスでは、あるノードに格納されたデータの類似性に関わる属性値と、その子のノードとの関係性に、類似閾値が設定されている。類似閾値としては、例えば、下の階層になるほどより類似度が高いことを表す値が設定されていてもよい。
【００８３】
ラベル生成部３２は、ラベルに、データの類似性に関わる属性値が格納されたノードの位置を示すパスにおいて適用された類似閾値を表す情報をさらに含める。例えば、ラベルは、ルートノードから該当するノードまでのパスに含まれる各ノードについて、ノード、ノード内での配置順序、および、子のノードとの関係性に設定された類似閾値の組を表す情報を、パスにおける並び順に連結した文字列であってもよい。
【００８４】
類似演算部３４は、ラベルに含まれる類似閾値を表す情報に基づいて、再分散の際に用いるプリフィックスを決定する。例えば、前述のように、類似閾値として、下の階層になるほどより類似度が高いことを表す値が設定されているとする。また、類似閾値は、値が大きいほど類似度が高いものとする。この場合、類似演算部３４は、ラベルの文字列において、所定の値以上の類似閾値が適用されたノードまでのパスを表す文字列をプリフィックスとして適用してもよい。そして、類似演算部３４は、決定したプリフィックスを用いて、本発明の第２の実施の形態における類似演算部２４と同様に、情報の再分散および類似性に基づく演算を実行する。
【００８５】
以上のように構成された類似演算装置３の動作について、図面を参照して説明する。
【００８６】
まず、類似演算装置３がデータ記憶部２３に情報を記憶する動作を図１０に示す。
【００８７】
図１０では、類似演算装置３は、ステップＡ１〜Ａ２まで、本発明の第１の実施の形態と同様に動作する。これにより、新たに取得されたデータの類似性に関わる属性値が、類似インデックス記憶部３１に記憶された類似インデックスのノードに挿入される。
【００８８】
次に、ラベル生成部３２は、ルートノードから挿入したノードまでのパスと、そのパスにおいて適用された類似閾値とに基づいて、ラベルを生成する（ステップＡ３３）。
【００８９】
以降、類似演算装置３は、ステップＡ４を、本発明の第１の実施の形態と同様に実行する。これにより、生成された類似閾値を含むラベルと、対象となるデータの類似性に関わる属性値とが関連付けられて、データ記憶部２３に記憶される。
【００９０】
以上で、類似演算装置３は、データ記憶部２３に情報を記憶する動作を終了する。
【００９１】
次に、類似演算装置３が類似性に基づく演算を行う動作を図１１に示す。
【００９２】
図１１では、まず、類似演算部３４は、類似閾値に基づいて、再分散に用いるプリフィックスを決定する（ステップＢ３１）。
【００９３】
例えば、類似演算部３４は、類似インデックスをルートからたどる各パスにおいて、類似閾値が所定の値を超えるまでのパスを表す文字列を、プリフィックスとして決定してもよい。
【００９４】
以降、類似演算装置３は、ステップＢ２１〜Ｂ２３まで、本発明の第２の実施の形態と同様に動作する。これにより、ステップＢ３１で決定されたプリフィックスに基づき再分散されたブロック毎に、類似インデックスが再構成され、類似性に基づく演算が実行される。
【００９５】
以上で、類似演算装置３は、類似性に基づく演算を行う動作を終了する。
【００９６】
次に、類似演算装置３による類似性に基づく演算を具体例で示す。
【００９７】
この具体例では、類似性に関する演算として、類似結合が適用された例について説明する。また、類似結合の条件として、「類似度がδｑ以上」という条件が指定されているものとする。また、データ記憶部２３は、データの類似性に関わる属性値およびラベルを関連付けた情報を、複数のブロックに分散して記憶しているものとする。このとき、ブロック内で類似結合を行う場合について述べる。
【００９８】
また、この具体例では、類似インデックス記憶部３１は、図１２に示した情報を記憶しているものとする。このような類似インデックスの一例を示す関連技術が、次の公知文献に記載されている。
【００９９】
公知文献：「劉  健全、西村  祥治、荒木  拓也著“類似度の階層関係に基づく木構造索引を用いた効率的な類似検索”、第5回データ工学と情報マネジメントに関するフォーラム(第１１回日本データベース学会年次大会)  ＤＥＩＭ  ２０１３、２０１３／３／３、セッションＡ９−１、インターネット＜ＵＲＬ：http://db-event.jpn.org/deim2013/proceedings/index.html＞」
この公知文献に示された類似インデックスは、図１２に示すように、あるノード以下に、当該ノードに記憶された各データの類似性に関わる属性値に対して類似閾値（δx）以上となるデータの類似性に関わる属性値を格納する。つまり、ノードＡ１に格納されたデータの類似性に関わる属性値の下にある部分木にある全てのノードに格納されたデータは、ノードＡ１に格納されたデータとの類似度がδ１よりも大きいことを表す。
【０１００】
まず、この具体例でデータ記憶部２３に情報が記憶される動作について説明する。
【０１０１】
ここでは、ラベル生成部３２は、対象となるデータの類似性に関わる属性値を取得し（ステップＡ１）、類似インデックス記憶部３１に記憶された類似インデックスのノードに挿入する（ステップＡ２）。ここでは、ノードＣ１にこの類似性に関わる属性値が挿入されたとする。
【０１０２】
次に、ラベル生成部３２は、図１３に示すように、ルートノードであるノードＡ１から、データを挿入したノードＣ１までのパスと、そのパスにおいて適用された類似閾値とを文字列として連結してラベルを生成する。生成されたラベルは、図１３に示すように、「（Ａ１，δ１）−（Ｂ１，δ２）−Ｃ１」となる。
【０１０３】
次に、類似演算部３４は、類似インデックスのルートからの各パスにおいて、類似閾値がδｑをはじめて超える要素までの文字列をプリフィックス（すなわち、再分散キー）として決定する（ステップＢ３１）。例えば、図１４に示すように、ルートノードからリーフノードにたどった各パスにおいて、類似閾値がδｑを初めて超えるのが、δ３、δ１０、δ１１の３つであるとする。この場合、類似演算部３４は、再分散キーとして、（Ａ１，δ１）−（Ｂ１，δ２）−（Ｃ１，δ３）、（Ａｎ，δ８）−（Ｉ１，δ９）−（Ｊ１，δ１０）、（Ａｎ，δ８）−（Ｉ１，δ９）−（Ｊｎ，δ１１）を用いることを決定する。
【０１０４】
そして、類似演算部３４は、これらのプリフィックスを再分散キーとして用いて、データを再分散する。これにより、図１４において、破線で囲んだ部分木ごとにデータが再分散される（ステップＢ２１）。
【０１０５】
そして、類似演算部３４は、各ブロックにおいて、ラベルを用いて類似インデックスを再構成し（ステップＢ２２）、再構成した類似インデックスを用いてブロック内の類似結合を行えばよい（ステップＢ２３）。
【０１０６】
以上で、具体例の説明を終了する。
【０１０７】
次に、本発明の第３の実施の形態の効果について述べる。
【０１０８】
本発明の第３の実施の形態としての類似演算装置は、複数のブロックに分散して記憶されたデータに対して、ブロックにまたがった類似性に基づく演算を、さらに効率的に実行することができる。
【０１０９】
その理由について説明する。本実施の形態では、類似インデックス記憶部が、任意のノード以下に、そのノードに格納されたデータの類似性に関わる属性値に対する類似性が類似閾値以上のデータの類似性に関わる属性値が格納されるよう構成された類似インデックスを記憶している。そして、ラベル生成部は、データ毎に、類似インデックスにおいてそのデータが格納されたノードの位置を示すパスと、そのパスにおいて適用された類似閾値を表す情報とを含めたラベルを生成する。そして、類似演算部は、ラベルに含まれる類似閾値を表す情報に基づいて、再分散の際に用いるプリフィックスを決定するからである。
【０１１０】
つまり、本実施の形態は、ラベルに含まれる類似閾値を利用することにより、類似性に基づく演算のために行う再分散に、より適切なプリフィックスを決定することができる。
【０１１１】
（第４の実施の形態）
次に、本発明の第４の実施の形態について図面を参照して詳細に説明する。本実施の形態では、データが、類似性に関わる属性以外にも他の属性を有する場合に、他の属性に関する条件を満たすデータを対象に類似性に基づく演算を行う例について説明する。
【０１１２】
まず、このような場合において、背景技術で述べた特許文献１に記載の関連技術が抱える問題について説明する。上述した関連技術は、類似性に基づく演算の実行効率を著しく低下させる。例えば、データが、顔画像を含む映像であるとする。この場合、顔画像は、それに映っている顔に関する特徴量（多次元値の類似性に関わる属性）だけでなく、それが撮られた場所や時間などの情報（類似性に関わる属性以外の属性）を有している。この時、顔に関する特徴量だけを条件とした類似結合は、場所や時間に関する属性を用いないため、特許文献１に記載された類似インデックスを適用するだけで十分である。
【０１１３】
一方、場所と時間を絞り込んだ上で、顔に関する特徴量を条件として類似結合する場合を考える。この時、顔に関する特徴量による類似結合は、特許文献１に記載された類似インデックスを用いる場合、各データの場所や時間に関する属性が条件を満たすかどうかを判別しながら演算する必要がある。なぜなら、特許文献１に記載された類似インデックスは、顔に関する特徴量に関する操作を効率化するが、それ以外の属性に対する操作の効率化には寄与しないからである。そのため、特許文献１に記載された類似インデックスでは、個々のデータに関して他の属性に関する条件が個別に判別される必要があるためである。
【０１１４】
そこで、場所や時間に関する属性による絞り込みを効率化するように、場所や時間の範囲ごとにデータをブロックに分割したとする。このとき、それぞれの場所や時間の範囲内において、特許文献１に記載された類似インデックスを適用すれば、場所や時間に関する条件がその範囲内にある場合は、上記の問い合わせを効率的に実行ができる。なぜなら、場所や時間の条件を満たすブロックを参照するだけで、他の属性により絞り込んだデータに対して類似結合を実行できるからである。しかしながら、場所や時間に関する属性に対する条件が、ブロックの範囲をまたぐ場合、特許文献１に記載された関連技術は、顔に関する特徴量による類似結合を非効率にする。なぜなら、場所や時間に関する属性に対する条件を満たしたそれぞれのブロックにある類似インデックスを１つに統合する必要があるからである。個々のブロックの類似インデックスによって作られた構造はそれらに挿入されたデータに大きく依存するため、この統合操作は、新規に類似インデックスと構築するのとほぼ等価になる。特に、分散環境を想定する場合、一か所に該当するデータを集約して、類似インデックスを再構築することになるため、著しく性能が低下する要因となる。
【０１１５】
以下、本実施の形態では、データが類似性に関わる属性以外にも他の属性を有する場合に、特許文献１に記載された関連技術における上述の問題を解決する例について述べる。
【０１１６】
なお、本実施の形態の説明において参照する各図面において、本発明の第１〜第３の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
【０１１７】
まず、本発明の第４の実施の形態としての類似演算装置４の機能ブロック構成を図１５に示す。類似演算装置４は、本発明の第２の実施の形態の類似演算装置２に対して、データ記憶部２３に替えてデータ記憶部４３と、類似演算部２４に替えて類似演算部４４とを備える点が異なる。
【０１１８】
なお、類似演算装置４およびその各機能ブロックは、図２を参照して説明した本発明の第１の実施の形態と同一のハードウェア要素によって構成可能である。ただし、類似演算装置４およびその各機能ブロックのハードウェア構成は、上述の構成に限定されない。
【０１１９】
データ記憶部４３は、データの類似性に関わる属性値およびラベルを関連付けた情報に加えて、さらに、それらのデータについて、類似性に関わる属性値以外の他の属性値に基づく選択を可能にする情報を記憶する。例えば、データ記憶部４３は、データ毎に、類似性に関わる属性値と、ラベルと、他の属性値とを関連付けた情報を記憶してもよい。
【０１２０】
類似演算部４４は、データ記憶部４３から、他の属性値に関する選択条件を満たす情報を抽出する。そして、類似演算部４４は、抽出した情報を用いて、ラベルに基づき再構成した類似インデックスを用いて類似性に基づく演算を実行する。
【０１２１】
以上のように構成された類似演算装置４の動作について、図面を参照して説明する。なお、類似演算装置４がデータ記憶部４３に情報を記憶する動作については、図３を参照して説明した本発明の第１の実施の形態の動作と同様であるため、本実施の形態における説明を省略する。ただし、データ記憶部４３には、ラベル生成部１２によって類似性に関わる属性値およびラベルを関連付けた情報が追加される際に、該データが有する他の属性値に関する情報も併せて関連付けて追加されるものとする。
【０１２２】
ここでは、類似演算装置４が類似性に基づく演算を行う動作を図１６に示す。
【０１２３】
図１６では、まず、類似演算部４４は、データ記憶部４３に記憶された情報のうち、選択条件を満たす情報を抽出する（ステップＢ４１）。
【０１２４】
以降、類似演算装置４は、抽出された情報を用いて、本発明の第１の実施の形態と同様にステップＢ１〜Ｂ２を実行する。これにより、ステップＢ４１で抽出された情報が示すデータについて、類似インデックスが再構成され、類似性に基づく演算が実行される。
【０１２５】
以上で、類似演算装置４は、類似性に基づく演算を行う動作を終了する。
【０１２６】
次に、類似演算装置４の動作を具体例で示す。
【０１２７】
ここでは、類似性に関する演算として、類似結合が適用された例について説明する。また、データは、特徴量および時刻という２つの属性を有するものとする。特徴量は、類似性に関わる属性値である。時刻は、類似性に関わる属性値以外の他の属性値である。
【０１２８】
また、図３の動作が実行されることにより、データ記憶部４３には、図１７のように情報が記憶されているとする。図１７において、各行は、各データについて、特徴量の類似インデックスに基づき生成されたラベルと、そのデータの時刻とを関連付けた情報を表している。なお、各行には、さらに特徴量を表す情報またはその参照情報が含まれるが、図示が省略されている。
【０１２９】
このとき、類似演算部４４は、図１７に示した情報のうち、時刻に基づく選択条件を満たすデータを抽出する。もし、選択条件が、「時刻が１１：００〜１２：００の範囲」という条件であれば、類似演算部４４は、５〜８行目の情報を抽出する（ステップＢ４１）。
【０１３０】
そして、類似演算部４４は、５〜８行目の情報について、ラベルを用いて類似インデックスを再構成する（ステップＢ１）。
【０１３１】
そして、類似演算部４４は、再構成した類似インデックスを用いて、類似結合を実行する（ステップＢ２）。
【０１３２】
また、他の具体例について述べる。この例では、データ記憶部４３は、図１８に示すように、データを、時刻に関する属性の範囲でブロックに分割して記憶している。
【０１３３】
この場合、類似演算部４４は、ステップＢ４１において、時刻に関して与えられた選択条件を満たすブロックの情報を取得する。そして、類似演算部４４は、取得したブロックのデータについて、ラベルに基づき類似インデックスを再構成し、類似結合を実行すればよい。このように、他の属性値に基づく選択条件があらかじめ想定される場合は、データ記憶部４３は、他の属性値に基づき複数のブロックにデータを分散して記憶していてもよい。
【０１３４】
以上で、具体例の説明を終了する。
【０１３５】
次に、本発明の第４の実施の形態の効果について述べる。
【０１３６】
本発明の第４の実施の形態としての類似演算装置は、データの類似性に基づく演算を行う際に、類似インデックスと任意の他のインデックスとを容易に共存させることができる。
【０１３７】
その理由について説明する。本実施の形態では、本発明の第１の実施の形態と同様の構成に加えて、データ記憶部が、類似性に関わる属性値以外の他の属性値に基づいてデータの選択を可能にする情報をさらに記憶している。そして、類似演算部が、他の属性値に関する選択条件を満たすデータについて、ラベルに基づき再構成した類似インデックスを用いて、類似性に基づく演算を実行するからである。
【０１３８】
このように、本実施の形態は、本発明の第１の実施の形態と同様に生成したラベルにより、他の属性値に基づく選択条件を満たすようなデータのサブセットについて、類似インデックスの再構成を容易にする。つまり、本実施の形態は、類似性に関わる属性値による類似インデックスと、他の手法のインデックスとの組み合わせを可能にする。その結果、本実施の形態は、他の属性値に基づく選択条件を満たすデータのサブセットについて、再構成した類似インデックスにおける類似性を容易に判定でき、類似性に基づく演算を容易にする。
【０１３９】
これにより、本実施の形態は、データセットの規模が大きく、分散して配置される場合であって、類似性に関わる属性以外の他の属性に関する条件を含むような複雑な類似性に関わる演算が必要な場合に、類似性に関わる演算を効率化することができる。
【０１４０】
なお、上述した本発明の各実施の形態において、類似インデックス記憶部が、木構造の類似インデックスを記憶する例を中心に説明した。これに限らず、類似インデックス記憶部が記憶する類似インデックスは、木構造の集合であるフォレスト構造であってもよい。
【０１４１】
また、上述した本発明の各実施の形態において、ラベル生成部が、ラベルとして、ノードおよびそのノード内での配置順序を表す文字列を、パスに含まれる並びの順にハイフンで連結した文字列を生成する例を中心に説明した。これに限らず、ラベル生成部は、類似インデックスにおいて任意の部分木に挿入されたデータ同士が共通する接頭辞を持つようなラベルを生成すればよい。例えば、ラベルは、パスに含まれるノードにおける配置順序を連結したものであってもよい。例えば、ルートノード内で１番目に配置された属性値の子ノード内で３番目に配置された属性値の子ノード内で２番目に配置された属性値には、「１−３−２」というラベルが生成されてもよい。また、もし、類似インデックスがフォレスト構造である場合、ラベル生成部は、木に番号付けをし、その木の番号およびその木のルートノードからデータの挿入位置を示すパスに基づきラベルを生成すればよい。
【０１４２】
また、上述した本発明の各実施の形態において、類似演算部が、類似性に基づく演算として類似結合を実行する例を中心に説明した。ただし、類似性に基づく演算は、類似結合に限らず、類似インデックスを利用して行われる他の演算であってもよい。
【０１４３】
また、上述した本発明の各実施の形態において、類似演算装置の各機能ブロックが、メモリに記憶されたコンピュータ・プログラムを実行するＣＰＵによって実現される例を中心に説明した。これに限らず、各機能ブロックの一部、全部、または、それらの組み合わせが専用のハードウェアにより実現されていてもよい。
【０１４４】
また、上述した本発明の各実施の形態において、類似演算装置の機能ブロックは、複数の装置に分散されて実現されてもよい。
【０１４５】
また、上述した本発明の各実施の形態において、各フローチャートを参照して説明した類似演算装置の動作を、本発明のコンピュータ・プログラムとしてコンピュータ装置の記憶装置（記憶媒体）に格納しておく。そして、係るコンピュータ・プログラムを当該ＣＰＵが読み出して実行するようにしてもよい。そして、このような場合において、本発明は、係るコンピュータ・プログラムのコードあるいは記憶媒体によって構成される。
【０１４６】
また、上述した各実施の形態は、適宜組み合わせて実施されることが可能である。
【０１４７】
また、本発明は、上述した各実施の形態に限定されず、様々な態様で実施されることが可能である。
【０１４８】
以上、上述した実施形態を模範的な例として本発明を説明した。しかしながら、本発明は、上述した実施形態には限定されない。即ち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
【０１４９】
この出願は、２０１６年６月２１日に出願された日本出願特願２０１６−１２２５０９を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０１５０】
１、２、３、４    類似演算装置
１１、３１    類似インデックス記憶部
１２、３２    ラベル生成部
１３、２３、４３    データ記憶部
１４、２４、３４、４４  類似演算部
１００１  ＣＰＵ
１００２  メモリ
１００３  出力装置
１００４  入力装置
【図１】
2017221857.tif 000003
【図２】
2017221857.tif 000004
【図３】
2017221857.tif 000005
【図４】
2017221857.tif 000006
【図５】
2017221857.tif 000007
【図６】
2017221857.tif 000008
【図７】
2017221857.tif 000009
【図８】
2017221857.tif 000010
【図９】
2017221857.tif 000011
【図１０】
2017221857.tif 000012
【図１１】
2017221857.tif 000013
【図１２】
2017221857.tif 000014
【図１３】
2017221857.tif 000015
【図１４】
2017221857.tif 000016
【図１５】
2017221857.tif 000017
【図１６】
2017221857.tif 000018
【図１７】
2017221857.tif 000019
【図１８】
2017221857.tif 000020
【国際調査報告】
2017221857.tif 000021
2017221857.tif 000022
2017221857.tif 000023
2017221857.tif 000024