(57)【特許請求の範囲】
【請求項１】
語彙と文法を持つ言語の上の少なくとも１つのストリングに対してインデックス付けを行うための方法であって、
分割手段が、ストリングごとに、当該ストリングに対してパーズ処理を行うことにより、前記ストリングを、前記語彙の少なくとも１つの単語と前記文法上での前記単語間の関係と、を含んだ複数の構成部分に分割し、
第１のビットインデックス算出手段が、各構成部分について、各ビットがそれぞれ前記ストリング中に現れる前記語彙の各単語と前記文法上での前記関係とに対してそれぞれ一意に対応づけられたビットインデックスであって、当該構成部分に含まれる単語及び関係に対応する各ビットが第１の値にセットされ、他の各ビットが第２の値にセットされたビットインデックスを求め、
第２のビットインデックス算出手段が、複数の構成部分から構成される少なくとも１つの集合の各々について、その集合に含まれる各構成部分のビットインデックスのビットごとの論理和を求めることで、その集合のビットインデックスを求める、
方法。
【請求項２】
語彙と文法を持つ言語の上の少なくとも１つのストリングに対してインデックス付けを行うストリングインデックス付けシステムであって、
少なくとも１つのストリングの入力を受け、前記ストリングに対してパーズ処理を行うことにより、前記ストリングを、前記語彙の少なくとも１つの単語と前記文法上での前記単語間の関係とを含んだ少なくとも１つの構成部分に分割する分割手段と、
各構成部分に含まれる各単語及び各関係に対してそれぞれ一意なインデックス番号を割り当てるインデックス割当手段と、
各インデックス番号を、各ビットがそれぞれ前記各インデックス番号に対してそれぞれ一意に対応づけられたビットインデックスであって、当該インデックス番号に対応するビットが第１の値にセットされ他のビットが第２の値にセットされたビットインデックスに変換することにより、各単語及び各関係のビットインデックスを求めるインデックス変換手段と、
２以上のビットインデックスの入力を受け、それら２以上のビットインデックスのビットごとの論理和の演算結果を表すビットインデックスを出力する合併手段であって、前記各構成部分のビットインデックスを、それぞれ当該構成部分に含まれる各単語及び各関係に対応するビットインデックスのビットごとの論理和により求め、複数の構成部分から構成される集合のビットインデックスを、当該集合に含まれる各構成部分のビットインデックスのビットごとの論理和により求める合併手段と、
を備えるストリングインデックス付けシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、言語上のストリングを解析するためのシステム及び方法に関する。
【背景技術】
【０００２】
語彙と文法を有する言語上のストリング（列、記号列）の内部構造の各レベルを格納し、インデックス（索引語）付け（インデキシング）を行うためのシステム及び方法には多くの従来技術がある。最もよく知られているのは、インターネットで利用できる様々な「サーチエンジン」である。従来のサーチエンジンは、典型的には、ユーザにサーチストリングを入力させる。サーチストリングは、インターネットのコンテンツの全文や要約と比較される。従来のサーチエンジンは、２つの重大な設計上の制約、すなわち正確さとスピード、により制限されている。したがってその結果、例えば多くのサーチエンジンは、典型的には、サーチに要する時間を削減するために、そのサーチストリングに適合する全てのウェブページよりもはるかに少ない検索結果を返すに留まる。
【０００３】
多くの従来のサーチエンジンは、サーチストリングの語彙が適合する検索結果を返すに過ぎない。従来のサーチエンジンは、同じ単語群或いは同じ単語からなる列、を含んだ文書群を求めるものであって、サーチストリング中の単語間の文法上の関係は無視されている。その結果、検索条件に適合するものとして求められた多くの文書は、サーチストリング中に含まれる用語を無作為に並べた組合せを含むだけで、全体的な文脈では無関係である場合もある。
【０００４】
サーチエンジンの中には、サーチストリング中の単語同士の距離がユーザの定義した単語数までの場合にのみ文書を返すことにより、文書をサーチする間に、サーチストリング中に存在する文法的な関係の生の表現を保存しようとするものがあった。しかしながら、このシステムは、サーチストリングの単語間の許容可能な距離を規定するために複雑なオペレータ（演算子）を用いる必要があった。さらに、このシステムは、文法的な関係を単語同士の近さによって極めて粗く近似しようとするものにすぎない。
【０００５】
他の従来の、更に多少複雑なインデキシングシステムは、多重ベクトル(multi-vector)環境における軸を定めるために、「トークン」を用いている。「トークン」は、単一の単語、または複数語の表現である。各トークンは多重ベクトル環境ないでの軸を定める。文書はまずトークンのリストへと分解される。各トークンは、多次元軸表現におけるその文書の位置を示すベクトルを規定するのに用いられる。１つのベクトルの０でない値は、それぞれその文書中に実際に存在するトークンに対応する。ベクトルの値は、インデックス付け処理済みの全ての文においてトークンが現れる回数に対する、その文書においてトークンが現れる回数に基づき計算される。クエリ（検索要求）に対し、サーチにおいてある文書の集合が合致した場合、そのクエリに対するベクトルが計算される。そして、クエリと文書との近さの近似として、クエリのベクトルのコサインが、各文書のベクトルのコサインと比較される。
【０００６】
このようなベクトル利用のシステムの主たる欠点は、クエリと文書との間の類似度を近似する比較が文書全体についての計算(global calculus)によりなされている点である。文書全体の計算では、類似していると判定された各文書に対し、どの部分が合致しているのか個別に再解析しなければならない。さらに、ベクトルシステムは文書中の単語の間の文法的な関係を保持せずに、トークン・フレーズ（トークンの句）を文法的な関係を近似するものとして用いている。このようなトークン・フレーズは、サーチストリングの文法的な関係を正確に表現しないことがしばしばである。
【０００７】
【特許文献１】米国特許第６０２６３８８号明細書
【特許文献２】米国特許第５９６３９４０号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は、上記従来技術の問題点の解決を図るものである。
【課題を解決するための手段】
【０００９】
本発明の様々な態様では、語彙と文法を持つ言語の上のストリング（例えばテキスト文を含む文書）の内部構造に対し、そのストリングの内部的な文法構造を保持しながら、或いは高速サーチを可能としながら、或いはその両方を実現しながら、インデックス付けを行う。様々な実施例では、一回のサーチにおいて、単一のストリングのどの部分がサーチストリングに対し合致（マッチ）したのかを判定するためのその単一ストリングに対する再度のサーチを行うことなく、文書の全てのレベルに即座にアクセスできる。
【００１０】
また本発明の様々な実施例では、ストリングにインデックスがつけられると、そのインデックスは、そのストリングの構造単位群の構成上の表現を保持する。また本発明の様々な例では、インデックスは、文書中の言語に従った語彙の要素同士の間の文法的な関係を保持する。そしてストリングには、構成要素レベル(n-1)同士の文法的関係のうちのいくつかを無視することにより、複数の異なるレベル(n)についてのインデックス付けが行われる。
【００１１】
現代英語で書かれた文字文書は、語彙と文法を持つ言語の上のストリングの一例である。文書（ストリング）は語彙、例えば様々な文や段落を構成する英語の単語、と文法、例えば様々な単語の配置を規定する英文法規則、とを含んでいる。本発明に係るシステム及び方法の様々な実施例では、文書は言語の文法に従って多くのレベルにおいてインデックス付けされる。例えば、その文書全体の表現を含むインデックスもあれば、文書中の個々の段落の表現を含むインデックス、それら段落の中の個々の文の表現を含むインデックス、それら文についての文法的な関係の表現を含んだインデックスなどがあり得る。様々な実施例では、文書の各レベルのインデックスを維持することで、文書の構造が保存される。インデクックス付けされた文書の様々なレベルをサーチすることで、本発明の様々な実施例では、語彙だけでなく、単語同士の文法的関係又は構造的関係或いはその両方の関係をも用いて、正確な検索結果を求めることができる。
【００１２】
本発明の様々な実施例では、ストリングの語彙と文法の両方に対しインデックス付け又はサーチ又はその両方を行うのに、バイナリビットのベクトルを用いる。様々な実施例では、ストリングは、語彙の１又は複数の要素、及び文法上でのそれら要素同士の間の関係又は質(クオリティ)を表す小さい単位（まとまり単位:grouped unit）に分解される。そして、それらの単位は、各々対応する要素に分解される。１つの要素は、語彙の１又は複数の単語か、又は文法に従った１又は複数の関係である。
【００１３】
また、様々な実施例では、各要素はそれぞれビットベクトルにより表現される。要素に対するビットベクトルは、「まとまり単位」ごとに合併（論理和）される。すなわち、１つのまとまり単位の各要素に対する様々なビットベクトルは合併され、そのまとまり単位に対するビットベクトルが求められる。処理は更に続き、１つの文の中の各まとまり単位のビットベクトルを合併することにより、文に対するビットベクトルが求められ、段落内の各文のビットベクトルを合併することにより、段落に対するビットベクトルが求められ、更に文書中の各段落のビットベクトルを合併することにより、文書のビットベクトルが求められる。
【００１４】
また本発明の様々な実施例では、文書群のコーパスがサーチされる際、文書群はトップダウンの流れでサーチされる。まずサーチストリングが、インデックス付け済みの文書がビットベクトルに変換されるのと同様の方法で、ビットベクトルに変換される。それから、そのサーチストリングのビットベクトルが、コーパスの各文書の文書ビットベクトルと、共通部分算出演算（ＡＮＤ演算）される。文書のビットベクトルとサーチストリングのビットベクトルとの共通部分が、そのサーチストリングのビットベクトルと等しい場合、その文書はサーチ条件に合致するものである。次いで、文書中の段落が、同様の方法でサーチされる。すなわち、サーチストリングのビットベクトルと、各段落の段落ビットベクトルとの共通部分算出の演算がなされる。段落のビットベクトルとサーチストリングのビットベクトルとの共通部分が、そのサーチストリングのビットベクトルと等しい場合、その段落はサーチ条件に合致するものである。次いで、段落中の文が同様の方法でサーチされる。本発明に係るシステム及び方法の様々な実施例では、文書群のコーパスをサーチするのにビットベクトルを用い、トップダウン方式（すなわち上位レベルから下位レベルへと進むやりかた）で各文書を巡る１回のサーチでサーチを行う。サーチ処理がストリング（すなわちこの場合は文書）のある構成要素レベルへと進むのは、その前のレベルがサーチ条件（サーチストリング）に合致すると判定された場合にのみである。
【発明を実施するための最良の形態】
【００１５】
以下、図面を参照して、本発明を実施するための最良の形態（以下「実施形態」と呼ぶ）について説明する。
【００１６】
図１は、本発明に係る、語彙と文法とを備えた言語の上の文書やその他のテキスト文字列或いはその他のタイプのストリング（記号列:string）の内部構造の各レベルを格納し、それら各レベルにインデックス付けを行うための方法の例を示すフローチャートである。説明を簡単にするために、この実施形態では、ストリングは、テキスト文を含んだ文書であるとする。概略的には、ストリングは必ずしも文書であるとは限らないが、以下の説明では、このようなストリングのことを「文書」と呼ぶ。図１に示すように、この方法の処理手順は、ステップＳ１００から開始し、次のステップＳ１１０では新たな文書が入力される。説明の便宜上、この新たな文書（英文）は次の段落の記載を含んでいるものとする。
【００１７】
"Showers continued throughout the week in the Bahia cocoa zone, alleviating the drought since early January and improving prospects for the coming temporao, although normal humidity levels have not been restored, Commissary Smith said in its weekly review.  The dry period means the temporao will be late this year.  Arrivals for the week ended February 22 were 155,221 bags  of 60 kilos making a cumulative total for the season of 5.93 mln against 5.81 at the same stage last year. Again it seems that cocoa delivered earlier on consignment was included in the arrivals figures."
【００１８】
次にステップＳ１２０では、その新たな文書がパーズ処理（構文解析）され、複数の「まとまり単位」へと分けられる。１つのまとまり単位は、少なくとも１つの単語又は数又はその両方と、そのストリングの言語の中での、まとまり単位の中のそれら単語や数の文法的又はテキスト的な関係、すなわち「質」とを含んでいる。図３〜８は、上記文書例の各文に含まれるまとまり単位のうちのいくつかを表すリストを示している。例えば、"weekly review"という句に対しては、図３においてＬ６の行の"MOD (review, weekly)"というまとまり単位により、この言語での "review"と"weekly"という単語同士の間の修飾関係が示されている。ここでは、"weekly"は、名詞"review" に対する修飾形容詞である。同様に、"Commissary Smith said"については、図３のＬ２１の行において、"SUBJ (said, Smith)" が、 "Smith" と "said"という単語同士のこの言語における文法的な関係、すなわちこの言語では"Smith" は、動詞"said"の主語（SUBJで示されている）であるという関係、を表している。
【００１９】
文書がパーズ処理によりまとまり単位に分けられると、処理はステップＳ１３０に進み、各まとまり単位がそれぞれ構成要素に分解される。図３〜８を参照すると、各まとまり単位は少なくとも１つの単語又は数と、この言語における、それら単語や数の間の少なくとも１つの文法的すなわちテキスト的な関係、すなわち質、を含んでいる。１つのまとまり単位の中での単語や数は、そのグループ（まとまり単位）の１要素により表される。同様に、少なくとも１つの文法的又はテキスト的な関係すなわち質は、まとまり単位の中の１要素により表される。図９〜１４は、上述した新たな文書の例を構成する要素群を示した表を示す。処理はステップＳ１４０に進む。
【００２０】
ステップＳ１４０では、マスタ要素インデックスが存在するか否かが判定される。もし、例示した新たな文書の例が、同じインデックスを使って解析すべき文書群のコーパスにおいて、格納されインデックス付けされる最初の文書である場合は、以前に解析された文書群からの要素群を含んだマスタ要素インデックスは存在しない場合がある。マスタ要素インデックスが存在していない場合は、処理はステップＳ１５０に進む。そうでなければ処理はステップＳ１７０に飛ぶ。
【００２１】
ステップＳ１５０では、各構成要素に対し、異なるインデックス番号が割り当てられる。様々な実施例において、インデックス番号は、その新たな文書において各要素が現れる順序に従って、各文書に対して続き番号で割り当てられる整数である。図９〜１４に示したように、各要素には０〜２２４のインデックス番号が割り当てられる。続いてステップＳ１６０では、各構成要素とそれに対応するインデックス番号とがマスタ要素インデックスに記録される。図９〜１４に示した表は、マスタ要素インデックスの一例である。しかしながら、マスタ要素インデックスがこれ以外にもざまざまな適切な形態をとりうることは了解されたい。処理は続いてステップＳ２１０に飛ぶ。
【００２２】
一方、ステップＳ１７０では、上記新たな文書の構成要素が、既存のマスタ要素インデックス内の要素と比較される。ついでステップＳ１８０では、上記新たな文書の構成要素のうちマスタ要素インデックス内にすでに存在するものそれぞれに対し、マスタ要素インデックスから求められるその構成要素に対応するインデックス番号が割り当てられる。次にステップＳ１９０では、マスタ要素インデックスに存在しない各構成要素に対し、そのマスタ要素インデックスにないインデックス番号がそれぞれ割り当てられる。様々な実施例では、新たなインデックス番号もまた整数（概略的にいえば、これも続き番号として付与される）であり、マスタ要素インデックスに存在しない各構成要素に割り当てられ、マスタ要素インデックスに存在しない最も小さい整数から始まる。処理はステップＳ２００へと続く。
【００２３】
ステップＳ２００では、マスタ要素インデックスに存在しない構成要素とこれに対応する新たなインデックス番号は、マスタ要素インデックスに記録される。次に、ステップＳ２１０で、各構成要素のビットインデックスが求められる。ここでは、構成要素のビットインデックスは、ビットストリングのうちの、その構成要素のインデックス番号に対応する位置（ビットストリング上での位置）のビットをセットことにより、求められる。説明を簡単にするため、文書例は１６ビット長のビットストリングを用いて記述されるものとする。すなわち、各ビットストリングは、それぞれ、１６個の構成要素までを表現することができる。しかしながら、これは一例であり、もっと長いビットストリングを用いてももちろんよい。したがって、この文書例では、図１０のＬ１０４６の行における要素"improve" は、第３番目の１６ビット長ビットストリングの１４番目のビットが１にセットされたビットインデックスを持つ。
【００２４】
本質的には、要素に対するビットインデックスは、その要素のインデックス番号に１を足したものをｎ（ここでｎは各ビットストリングのビット数）で割ることで、特定のｎビット長ビットストリングの番号とそのビットストリング上で１にセットすべき特定のビット位置とを得ることにより、求められる。様々な実施例では、ビットストリング数は"Int ((i+1)/n) + 1"で求められる。ビット位置は、様々な実施例では、Ｍｏｄn(i+1)で求められる。ここで、ｉは要素のインデックス番号であり、ｎは各ビットストリングのビット数である。 "improve"は、４６番目の要素でありインデックス番号が４５なので、"Int ((45+1)/16) + 1"の演算、すなわち（４５＋１）を１６で割って１を加える計算の結果は３となり、Ｍｏｄ16(45+1)は１４となる。したがって、最初の２つのビットストリングはすべて０で埋められ、第３番目のビットストリングの１４番目のビットが１にセットされる。ここでインデックス番号に１を加える必要があることに留意されたい。これはインデックス番号が０から始まるためである。この代わりにインデックス番号を１から始めるのであれば、上述の各演算においてインデックス番号ｉに１を足す必要はない。
【００２５】
この実施形態では、後に図１５〜２０を参照して説明するように、１６ビット長のビットストリングは、ランクによって参照されるようになっている。様々な実施例では、第１番目のビットストリングはランク０であり、第２番目のビットストリングはランク１、第３番目のビットストリングはランク２となる。以下同様である。したがって、１６ビット長のビットストリングの場合、要素"improve" は、ランク２のビットストリングの１４番目のビットによりインデックス付けされることになる。ここでランクの値２は、Int ((i+1)/n)で求められる。ここでｉは要素のインデックス番号であり、ｎは各ビットストリングのビット数である。同様に、図１２のＬ１１６０の行の要素"mean"は、ランク９のビットストリングの１５番目のビットに格納される。処理は、次にステップＳ２２０に進む。
【００２６】
ステップＳ２２０では、各まとまり単位ごとに、そのまとまり単位の中の各要素のビットインデックスを合併(union:ビットごとの論理和演算)することにより、上に例示した新たな文書のまとまり単位に対しビットインデックス値が割り当てられる。例えば、図３を参照すると、行Ｌ７のまとまり単位 "MOD (zone, Bahia)"は、要素"MOD"、要素"zone" 及び要素"Bahia"のそれぞれのビットインデックスの合併演算結果である。したがって、ユニット "MOD (zone, Bahia)" についてのビットインデックスは、ランク０のビットストリングの第１番目のビット、ランク３のビットストリングの第５及び第６番目のビットを合併したものである。次に、ステップＳ２３０では、各まとまり単位についてのビットインデックスがマスタビットインデックスに記録される。この記録では、各まとまり単位は、そのユニットが属する文、段落、及び文書に関連づけられる。次にステップＳ２４０では、文中の各まとまり単位のビットインデックスを合併することにより、上記新たな文書の各文のビットインデックスが求められる。次にステップＳ２５０では、上記新たな文書の各文のビットインデックスがマスタビットインデックスに記録される。この記録では、各文は、その文が属する段落及び文書に関連づけられる。処理は次にステップＳ２６０に進む。
【００２７】
ステップＳ２６０では、各段落ごとに、その段落の中の各文のビットインデックスを合併することにより、その段落に対するビットインデックスが求められる。そしてステップＳ２７０では、上記新たな文書の各段落のビットインデックスがマスタビットインデックスに記録される。この記録では、各段落はそれが属する文書に関連づけられる。次にステップＳ２８０では、上記新たな文書の各段落のビットインデックスの合併演算により、その新たな文書のビットインデックスが求められる。更にステップＳ２９０では、その新たな文書に対するビットインデックスがマスタビットインデックスに記録される。そして処理はステップＳ３００に進み、本方法の処理は終了する。
【００２８】
図１５〜２０は、例示した上記新たな文書の各文、その新たな文書の各段落、及びその新たな文の全体、のそれぞれについてのビットインデックスを示した図である。注意していただきたいのは、例示した上記文書は１段落しかないので、文書のビットインデックスと段落のビットインデックスは同一であることである。また、この実施形態では、上記新たな文書は、インデックス付けされた唯一の文書なので、文書インデックスと段落インデックスの両方が、インデックス内にすべての要素を含んでいる。したがって、最初の１４個のビットのストリングはすべて１にセットされ、１５番目のビットストリング（ランク１４）の最初のビットが１にセットされる。ビットインデックス全体では２２５要素（（１６×１４）＋１）あるからである。なお、他の文書をインデックス付けしたあと当該文書をインデックス付けした場合、他の文書が含む要素の中には当該文書には現れてこない要素もあるので、文書のビットインデックスや段落のビットインデックスには途中に０が現れることがある。
【００２９】
図１５〜２０に示されるように、各文書、各段落、及び各文書に対するビットインデックスは、それぞれ、段落や文がそのファイルすなわち文書に属しているかを示すＩＤファイル欄、文がどの段落に属しているかを示すＩＤ段落欄、文書の番号を示すＩＤ文欄、各リミットのおけるビットインデックス内の各ビットストリングのランクを示すランク欄、及び各ビットストリングのバイナリ表現に対応する十進値を示す値欄を含む。わかりやすくするために、図１５〜２０には、各ビットストリングのバイナリデータを示すためのバイナリ欄が追加されている。
【００３０】
しかしながら、様々な実施例では、バイナリデータ自体は格納されない。それよりも、そのバイナリのビットストリングの十進値のみが記録される。例示のために、第１番目の文は、ランク０から９までの１０個のビットストリングにわたってインデックス付けされている。最初の９個の１６ビット長ビットストリング内の各ビットは１にセットされる。従って、それら１６ビット長ビットストリングそれぞれの十進値は６５５３５（すなわち２16−１）である。１０番目の１６ビット長ビットストリング、すなわち、ランク９のビットストリングは、最初の３つのビットのみが１にセットされており、十進値では７（２3−１）となる。第１番目の文のビットインデックスから推測できるように、その第１番目の文は上記新たな文書の最初の１４６個の要素を含んでいる。最初から９個の１６ビット長ビットストリングは、０から１４３（すなわち（１６×９）−１）までのインデックス番号を持つ要素を表し、第１０番目の１６ビット長ビットストリングはインデックス番号１４４，１４５及び１４６の要素を表す。
【００３１】
同様に、第２番目の文は、マスタビットインデックスの最初から１１個の１６ビット長ビットストリングの中の要素を含んでいる、図１７及び図１８から推測できるように、第２番目の文は第１番目の文と同じ要素をかなりの数含んでおり、最初から１０個の１６ビット長ビットストリングのビットのうちの多くは１にセットされている。しかし、第２番目の文は全ての要素を含んでいるわけではなく、最初から１０個の１６ビット長ビットストリングのビットのうちの多くは０にセットされている。さらに、第２の文はインデックス番号１４７〜１６１を持つ新たな要素を含んでいる。これらの要素はランク９のビットストリングの４番目から１６番目のビットと、ランク１０のビットストリングの最初の２ビットに格納される。第３及び第４番目の文についてのビットインデックスも同様に構成される。図２０に示した表は、例示した文書の第４番目の文を表したものであるが、この第４番目の文にはランク１０のビットストリング内のインデックスが与えられた要素がないので、その表にはランク１０のビットストリングについての行を含まないことに留意されたい。
【００３２】
図２１は、ストリングインデックス付けシステム１００の一例の機能ブロック図である。このシステム１００は、語彙と文法とを持つ言語の上のストリングにインデックス付けをするのに用いることができるものである。図２１に示すように、ストリングインデックス付けシステム１００は、入出力インタフェース１１０、コントローラ１２０，メモリ１３０、パーズ処理回路、ルーチン又はアプリケーション１４０、分解回路、ルーチン又はアプリケーション１５０，比較回路、ルーチン又はアプリケーション１６０，要素インデックス割当回路、ルーチン又はアプリケーション１７０，インデックス変換回路、ルーチン又はアプリケーション１８０，及び合併回路、ルーチン又はアプリケーション１９０を備え、それらは１以上のデータバスやコントロールバス及び／又はアプリケーション・プログラミング・インタフェース（ＡＰＩ）１９５などにより相互接続されている。
【００３３】
この実施形態では、入出力インタフェース１１０はリンク２１０を介してデータ供給源２００に接続されている。データ供給源２００は、例えばローカル接続又はリモート接続されたラップトップコンピュータやパーソナルコンピュータ、ＰＤＡ(Personal Digital Assistant)、タブレットコンピュータ、有線や無線のネットワークのクライアントやサーバなどのようにデータの格納や送信又はその両方を行う各種装置、などである。ここでの有線や無線のネットワークには、イントラネットやエクストラネット、ローカルエリアネットワークやワイドエリアネットワーク、ストレージ・エリア・ネットワーク、インターネット（特にワールド・ワイド・ウェブ）などである。データ供給源２００は、入出力インタフェース１１０に対しストリングデータを供給可能なものであれば、既知の、又はこれから開発されるいかなる供給源でもよい。
【００３４】
この実施形態では、入出力インタフェース１１０は、１以上のリンク１０４を介して１以上の入力装置１０２に接続されている。入力装置１０２は、例えばキーボード、マウス、トラックボール、トラックパッド、タッチスクリーン、或いはデータや制御信号をストリングインデックス付けシステム１００に対して入力するための既存又はこれから開発される他のあらゆる装置であり、それらの複数でもよい。この実施形態では、入出力インタフェース１１０は１以上のリンク２３０を介して１以上のデータ出力先２２０に接続されている。データ出力先２２０は、例えばローカル接続又はリモート接続されたラップトップコンピュータやパーソナルコンピュータ、ＰＤＡ(Personal Digital Assistant)、タブレットコンピュータ、有線や無線のネットワークのクライアントやサーバなどのようにデータの受信や格納、送信又はそれらすべてを行う各種装置、などである。ここでの有線や無線のネットワークには、イントラネットやエクストラネット、ローカルエリアネットワークやワイドエリアネットワーク、ストレージ・エリア・ネットワーク、インターネット（特にワールド・ワイド・ウェブ）などである。データ出力先２２０は、１以上のリンク２３０から供給されるインデックス付けされたストリングデータを受信し、送信又は格納のうちの少なくとも１つを行うことができるものであればいかなる装置でもよい。
【００３５】
リンク１０４，２１０及び２３０は、入力装置１０２やデータ供給源２００、データ出力先２２０と、入出力インタフェース１１０とを接続するものであれば、既存の、或いはこれから開発されるいかなるものであってもよい。特にリンク１０４，２１０及び２３０は、それぞれ、直接的なケーブル接続、ワイドエリアネットワークやローカルエリアネットワークやストレージ・エリア・ネットワークを介する接続、イントラネットを介する接続、エクストラネットを介する接続、インターネットを介する接続、その他の分散処理ネットワーク又はシステムを介する接続、或いは赤外線や無線電波やその他の無線接続などのどれでもよく、それらのうちのいくつかの組合せでもよい。
【００３６】
図２１に示したように、メモリ１３０は複数のメモリ部分を含んでいる。メモリ部分には、例えば、マスタ要素インデックス部分１３１，マスタビットインデックス部分１３２，関連情報部分（associations portion）１３３，文書テキスト部分１３４，及び一時領域部分１３５などがある。メモリ１３０のマスタ要素インデックス部分１３１は、マスタ要素インデックスを格納する。メモリ１３０のマスタビットインデックス部分１３２は、マスタビットインデックスを格納する。メモリ１３０の関連情報部分１３３は、要素やまとまり単位、文、段落、文書全体、の相互間の関連を示す情報を格納する。メモリ１３０の文書テキスト部分１３４は、インデックス付け済みの各文書の本文テキストを格納する。最後に、一時領域部分１３５は、ストリングインデックス付けシステム１００の処理の中で必要な様々なデータを一時的に保存する。
【００３７】
図２１に示したメモリ１３０は、可変の揮発性又は不揮発性メモリ、非可変の、すなわち固定のメモリなどの様々なメモリやその組合せとして実装することができる。可変メモリは、揮発性であれ不揮発性であれ、ＳＲＡＭ(static random access memory)やＤＲＡＭ(dynamic random access memory)、フレキシブルディスクとそのディスクドライブ、書込又は書換可能な光学ディスクとそのディスクドライブ、ハードディスクドライブ、フラッシュメモリ等、或いはそれらのうちの複数のものの組合せをもちいて実装することができる。同様に、非可変すなわち固定のメモリは、ＲＯＭ(read only memory)、ＰＲＯＭ(programmable ROM)、ＥＰＲＯＭ(erasable programmable ROM)、ＥＥＰＲＯＭ(electrically erasable programmable ROM)、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭなどのような光ＲＯＭディスクとそのディスクドライブ等、或いはそれらのうちの複数の組合せを用いて実装することもできる。
【００３８】
パーズ処理回路、ルーチン又はアプリケーション１４０は、文書や他のストリングを受け取り、その文書又はストリングのまとまり単位群を出力する。分解回路、ルーチン又はアプリケーション１５０は、１以上のまとまり単位を受け取り、それら各まとまり単位をそれを構成する要素へと分解する。比較回路、ルーチン又はアプリケーション１６０は、まとまり単位の要素又は要素群を受け取り、その群の各要素がマスタ要素インデックスにあるかどうかを判定する。要素インデックス割当回路、ルーチン、又はアプリケーション１７０は、比較回路、ルーチン又はアプリケーション１６０によりマスタ要素インデックスにないと判定された要素や要素群を受け取り、それら各要素に対し適切なインデックスにおけるインデックス番号をそれぞれ割り当てる。インデックス変換回路、ルーチン又はアプリケーション１８０は、要素のインデックス又はインデックス群を受け取り、各要素のインデックスをビットストリングにおいてそのインデックスに対応するビット、すなわちビットインデックスに変換する。最後に、合併回路、ルーチン又はアプリケーション１９０は、２以上のビットインデックスを受け取り、それら入力されたビットインデックスの合併（ビットごとの論理和の結果）を示すビットインデックスを出力する。
【００３９】
処理では、図２１に示したストリングインデックス付けシステム１００は、データ供給源２００からリンク２１０を通し入出力インタフェース１１０を介して新たな文書がカレントの文書として入力されることにより動作する。再び、説明の便宜上、この実施形態では、語彙と文法とを持つ言語の上のストリングは、テキスト本文を含んだ文書であるとする。以下、特に言及しなくても、インデックス付けシステム１００内のすべての動作はコントローラ１２０の制御下で行われるものと了解されたい。カレントの文書はメモリ１３０の文書テキスト部分１３４に格納される。そして、カレント文書はパーズ処理回路、ルーチン又はアプリケーション１４０に入力される。パーズ処理回路、ルーチン又はアプリケーション１４０は、カレント文書をパーズ（構文解析）して、複数のまとまり単位を求める。パーズ処理回路、ルーチン又はアプリケーション１４０は、それら求めたまとまり単位をメモリ１３０の一時領域部分１３５へと出力すると共に、各要素が属する文や段落、文書を表すデータをメモリ１３０の関連情報部分１３３に格納する。分解回路、ルーチン又はアプリケーション１５０は、パーズ処理回路、ルーチン又はアプリケーション１４０から直接に、又はメモリ１３０の一時領域部分１３５から、それらまとまり単位を受け取る。分解回路、ルーチン又はアプリケーション１５０は、それらまとまり単位を要素に分解する。分解回路、ルーチン又はアプリケーション１５０は、それら要素をメモリ１３０の一時領域部分１３５に、又は比較回路、ルーチン又はアプリケーション１６０に、或いはその両方に、出力する。
【００４０】
次にコントローラ１２０は、この文書のためのマスタ要素インデックスが既に存在しているかどうかを判定する。そのようなマスタ要素インデックスが既に存在していれば、比較回路、ルーチン又はアプリケーション１６０がその既存のマスタ要素インデックスをマスタ要素インデックス部分１３１から受け取る。そして、比較回路、ルーチン又はアプリケーション１６０は、メモリ１３０の一時領域部分１３５に格納された要素群を受け取る。
【００４１】
比較回路、ルーチン又はアプリケーション１６０は、入力されたマスタ要素インデックスの中の要素と、メモリ１３０の一時領域部分１３５から入力された要素とを比較する。メモリ１３０の一時領域部分１３５に格納されているがメモリ１３０のマスタ要素インデックス部分１３１内の要素とは合致しない要素は、この比較回路、ルーチン又はアプリケーション１６０により、要素インデックス割当回路、ルーチン又はアプリケーション１７０に対し直接的に又は間接的に出力される。要素インデックス割当回路、ルーチン又はアプリケーション１７０は、それら各要素に対し、メモリ１３０のマスタ要素インデックス部分１３１内にない異なる要素インデックス番号をそれぞれ割り当てる。要素インデックス割当回路、ルーチン又はアプリケーション１７０は、要素と要素インデックス番号とを、メモリ１３０のマスタ要素インデックス部分１３１に格納されたマスタ要素インデックスに追加する。
【００４２】
一方、例えばメモリ１３０のマスタ要素インデックス部分１３１内に未だかつてデータが格納されたことがないなどの理由でマスタ要素インデックスが存在しない場合、要素インデックス割当回路、ルーチン又はアプリケーション１７０はメモリ１３０の一時領域部分１３５に格納されている全ての要素を受け取る。要素インデックス割当回路、ルーチン又はアプリケーション１７０は、各要素に異なるインデックス番号を割り当て、マスタ要素インデックスを作成し、これをマスタ要素インデックス部分１３１に格納し、それら各要素とインデックス番号とをメモリ１３０のマスタ要素インデックス部分１３１に追加する。
【００４３】
次にインデックス変換回路、ルーチン又はアプリケーション１８０は、カレント文書の各要素とそれに対応するインデックス番号を受け取る。インデックス変換回路、ルーチン又はアプリケーション１８０は、各要素のインデックス番号をビットストリング上の対応ビット、すなわちその要素のビットインデックスへと変換する。対応するビットインデックス（これは実施形態ではインデックス番号に対応するランクとビットストリング内での位置とにより表されるが）は、図２１に示すように、インデックス変換回路、ルーチン又はアプリケーション１８０により、メモリ１３０のマスタビットインデックス部分１３２又は合併回路、ルーチン又はアプリケーション１９０或いはその両方へと出力される。
【００４４】
そして合併回路、ルーチン又はアプリケーション１９０は、カレント文書の各要素と、これに対応するメモリ１３０のマスタビットインデックス部分１３２からのビットインデックスと、メモリ１３０の関連情報部分１３３からの関連情報データとを受け取る。合併回路、ルーチン又はアプリケーション１９０は、上記新たな文書（すなわちカレント文書）の各まとまり単位に対してビットインデックスを割り当てる。この割当は、当該まとまり単位内の全ての要素の合併を、関連情報に従って求めることにより行う。そして、合併回路、ルーチン又はアプリケーション１９０は各まとまり単位についてのビットインデックスをメモリ１３０のマスタビットインデックス部分１３２に出力すると共に、それらまとまり単位に対するビットインデックスから、メモリ１３０の関連情報部分１３３に格納された関連する文、段落及び文書の情報への相互参照情報を出力する。
【００４５】
合併回路、ルーチン又はアプリケーション１９０は、メモリ１３０のマスタビットインデックス部分１３２から選ばれた文についてのまとまり単位のビットインデックスと、メモリ１３０の関連情報部分１３３からの関連情報データとを受け取る。選ばれた各文ごとに、合併回路、ルーチン又はアプリケーション１９０は、カレント文書中の当該選ばれた文に対してビットインデックスを割り当てる。この割当は、その文に含まれる各まとまり単位のビットインデックスの合併を、その関連情報データに従って求めることにより行われる。合併回路、ルーチン又はアプリケーション１９０はカレント文書の各文についてのビットインデックスをメモリ１３０のマスタビットインデックス部分１３２に出力すると共に、それら各文のビットインデックスからそれに関連する段落や文書への相互参照情報を、メモリ１３０の関連情報部分１３３へと出力する。
【００４６】
次に合併回路、ルーチン又はアプリケーション１９０は、メモリ１３０のマスタビットインデックス部分１３２からカレント文書中の選ばれた段落の各文書のビットインデックスを受け取り、メモリ１３０の関連情報部分１３３から関連情報データを受け取る。選ばれた段落ごとに、合併回路、ルーチン又はアプリケーション１９０は、カレント文書のその選ばれた段落に対するビットインデックスを割り当てる。この割当は、その段落内の全ての文のビットインデックスの合併を関連情報データに従って求めることにより行われる。それから、合併回路、ルーチン又はアプリケーション１９０は、カレント文書の各段落のビットインデックスをメモリ１３０のマスタビットインデックス部分１３２に出力すると共に、各段落からその段落を含む文書への相互参照情報をメモリ１３０の関連情報部分１３３に出力する。
【００４７】
最後に、合併回路、ルーチン又はアプリケーション１９０は、メモリ１３０のマスタビットインデックス部分１３２に格納された全ての段落のビットインデックスと、メモリ１３０の関連情報部分１３３に格納された関連情報データとを受け取る。合併回路、ルーチン又はアプリケーション１９０は、カレント文書の全ての段落のビットインデックスをその関連情報データに従って合併することにより、カレント文書に対しビットインデックスを割り当てる。そして合併回路、ルーチン又はアプリケーション１９０は、カレント文書のビットインデックスをメモリ１３０のマスタビットインデックス部分１３２に出力する。
【００４８】
図２１に示したストリングインデックス付けシステム１００の一例の処理の結果、メモリ１３０のマスタビットインデックス部分１３２は、カレント文書の完全なビットインデックスを有することになる。この完全なビットインデックスは、各要素とそれに対応するビットインデックスとを有し、これは当該要素が属するまとまり単位、当該要素が属する文、当該要素が属する段落、及び当該要素が属する文書、に対し適切に関連づけられている。同様に、マスタビットインデックスはカレント文書の各文のビットインデックスを有し、これはその文が属する段落、及びその文が属する文書に対し適切に関連づけられている。マスタビットインデックスはカレント文書の各段落のビットインデックスを有し、これはその文書に対して適切に関連づけられている。そしてメモリ１３０のマスタビットインデックス部分１３２は、カレント文書についてのビットインデックスを有する。
【００４９】
コストやその他の設計上の制約に応じ、適切ならば、ストリングインデックス付けシステム１００の上述の要素を１つ乃至複数組み合わせて１つの要素にしたり、或いは複数の要素に分けたりしてもよい。
【００５０】
図２２〜図２５は、少なくとも１つの文書などのストリングのコーパスをサーチするための本発明に係る方法を示すフローチャートである。図２２〜図２５に示すように、この方法の処理手順はステップＳ１０００から始まり、続くステップＳ１０１０では、サーチストリングが入力される。サーチストリングは、例えばサーチターム（検索語）、自然言語、ブール演算子により結合されたサーチターム、特定分野のクエリ、或いは語彙と文法を持つ特定の言語の要素に分解することができる既存或いはこれから開発されるサーチ技術、演算子、要素その他、或いはその言語の文法に従った単語間の関係など、或いはそれらの組合せなどである。
【００５１】
次にステップＳ１０２０では、サーチストリング内の各要素のビットインデックスが求められる。サーチストリングの要素は、サーチストリングの種類に応じた様々な方法で求めることができる。例えば、サーチストリングが自然言語要素を含んでいるならば、そのサーチストリングは、文書にインデックス付けするための上述と同様の方法で、パーズ処理によりまとまり単位に分けられ、更にそのまとまり単位は構成要素へと分解される。また、もしブール・サーチストリングが用いられる場合は、要素は、そのブール・サーチストリングに含まれる言語の語である。ステップＳ１０２０の様々な例では、マスタビットインデックスがそのサーチストリングの各要素についてサーチされる。サーチストリングの要素の位置がマスタビットインデックスから見つけられると、そのサーチストリングのその要素にはマスタビットインデックスにおけるその要素に対応するビットインデックスが割り当てられる。一方、その要素がマスタビットインデックスに存在しなければ、マスタビットインデックスにない一意的なビットインデックスがその要素に割り当てられる。様々な実施例では、割り当てられるビットインデックスは、インデックス中で既に１にセットされた部分ではない、次のビットとなる。例えば、図９〜図１４が全部のビットインデックスを表しているとすると、サーチストリングにおいてそのインデックス中に存在していないインデックス付けすべき次の要素は、２２５番の要素であり、ランク１４の整数の組の中の２番目のビットを１にセットすることにより表される。
【００５２】
次にステップＳ１０３０では、サーチストリングの各要素のビットインデックスを合併することによりそのサーチストリング全体についてのビットインデックスが求められる。ＯＲ演算子を含んだブール・サーチストリングが入力された場合、そのＯＲ演算子によりできる要素組合せごとに、その組合せを含んだビットインデックスが生成される。処理はステップＳ１０４０に進む。
【００５３】
ステップＳ１０４０では、第１の又は次の文書が文書コーパスの中からカレント文書として選択される。次にステップＳ１０５０では、サーチストリングのビットインデックスとカレント文書のビットインデックスとの共通部分（ビットごとの論理積）が求められる。次にステップＳ１０６０では、サーチストリングのビットインデックスとカレント文書のビットインデックスとの共通部分が、サーチストリングのビットインデックスと十分に等しいか否かを判定する。この結果、サーチストリングのビットインデックスとカレント文書のビットインデックスとの共通部分が、サーチストリングのビットインデックスと十分に等しい場合は、カレント文書はそのサーチストリングの各要素を含んでいることになる。従って処理はステップＳ１０７０に進む。一方、サーチストリングのビットインデックスとカレント文書のビットインデックスとの共通部分が、サーチストリングのビットインデックスと十分には等しくはない場合は、カレント文書はそのサーチストリングの各要素を含んでいないことになり、処理はステップＳ１２３０に飛ぶ。
【００５４】
ステップＳ１０７０では、その文書が（サーチストリングに対して）合致したものとして印付けされる。次にステップＳ１０８０では、そのカレント文書の第１番目の又は次の段落（処理ループの最初の回では「第１番目の段落」、それ以降の回では「次の段落」である）がカレント段落として選択される。次にＳ１０９０は、サーチストリングのビットインデックスとカレント段落のビットインデックスとの共通部分が求められる。次にステップＳ１１００では、サーチストリングのビットインデックスとカレント段落のビットインデックスとの共通部分が、そのサーチストリングのビットインデックスに十分に等しいか否かが判定される。サーチストリングのビットインデックスとカレント段落のビットインデックスとの共通部分が、そのサーチストリングのビットインデックスに十分に等しい場合は、その段落はサーチストリングの要素のすべてを含んでいることになる。この場合処理はステップＳ１１２０に進む。一方、サーチストリングのビットインデックスとカレント段落のビットインデックスとの共通部分が、そのサーチストリングのビットインデックスに十分には等しくない場合は、その段落はサーチストリングの要素の全部を含んでいるわけではないということなので、処理はステップＳ１１１０に進む。
【００５５】
ステップＳ１１１０では、カレント文書のすべての段落をカレント段落として選択し終わったかどうかが判定される。カレント文書のすべての段落を選択し終わっていない場合は、処理はステップＳ１０８０に戻り、次の段落がカレント段落として選択される。カレント文書のすべての段落をカレント段落として選択し終わった場合は、処理はステップＳ１２３０に飛ぶ。
【００５６】
ステップＳ１１２０では、カレント段落がサーチストリングに合致したものとして印付けされる。次にステップＳ１１３０では、そのカレント段落の第１番目又は次の文がカレントの文として選択される。次にＳ１１４０では、サーチストリングのビットインデックスとカレント文のビットインデックスとの共通部分が求められる。次にステップＳ１１５０では、サーチストリングのビットインデックスとカレント文のビットインデックスとの共通部分が、そのサーチストリングのビットインデックスに十分に等しいか否かが判定される。サーチストリングのビットインデックスとカレント文のビットインデックスとの共通部分が、そのサーチストリングのビットインデックスに十分に等しい場合は、その文はサーチストリングの要素のすべてを含んでいることになる。この場合処理はステップＳ１１７０に進む。一方、サーチストリングのビットインデックスとカレント文のビットインデックスとの共通部分が、そのサーチストリングのビットインデックスに十分には等しくない場合は、その文はサーチストリングの要素の全部を含んでいるわけではないということなので、処理はステップＳ１１６０に進む。
【００５７】
ステップＳ１１６０では、カレント段落のすべての文をカレント文として選択し終わったかどうかが判定される。カレント段落のすべての文を選択し終わっていない場合は、処理はステップＳ１１３０に戻り、次の文がカレント文として選択される。カレント段落のすべての文をカレント文として選択し終わった場合は、処理はステップＳ１１１０に戻り、カレント文書のすべての段落がカレント段落として選択済みであるかが判定される。
【００５８】
ステップＳ１１７０では、カレント文がサーチストリングに対し合致したものとして印付けされる。次にステップＳ１１８０では、そのカレント文の第１番目の又は次のまとまり単位がカレントのまとまり単位として選択される。次にＳ１１９０では、サーチストリングのビットインデックスとカレントのまとまり単位のビットインデックスとの共通部分が求められる。次にステップＳ１２００では、サーチストリングのビットインデックスとカレントのまとまり単位のビットインデックスとの共通部分が、そのサーチストリングのビットインデックスに十分に等しいか否かが判定される。サーチストリングのビットインデックスとカレントのまとまり単位のビットインデックスとの共通部分が、そのサーチストリングのビットインデックスに十分に等しい場合は、そのまとまり単位はサーチストリングの要素のすべてを含んでいることになる。この場合処理はステップＳ１２１０に進む。一方、サーチストリングのビットインデックスとカレントのまとまり単位のビットインデックスとの共通部分が、そのサーチストリングのビットインデックスに十分には等しくない場合は、そのまとまり単位はサーチストリングの要素の全部を含んでいるわけではないということなので、処理はステップＳ１２２０に進む。
【００５９】
ステップＳ１２１０では、カレントのまとまり単位がサーチストリングに合致したものとして印付けされる。次にステップＳ１２２０では、カレント文内のすべてのまとまり単位をカレントのまとまり単位として選択し終わったかどうかが判定される。カレント文のすべてのまとまり単位をカレントのまとまり単位として選択し終わっていない場合は、処理はステップＳ１１８０に戻り、次のまとまり単位がカレントのまとまり単位として選択される。カレント文のすべてのまとまり単位をカレントのまとまり単位として選択し終わった場合は、処理はステップＳ１１６０に戻り、カレント段落のすべての文がカレント文として選択済みであるかが判定される。
【００６０】
ステップＳ１２３０では、文書コーパス内のすべての文書がカレント文書として選択済みであるか否かが判定される。すべての文書をカレント文書として選択し終わっていない場合は、処理はステップＳ１０４０に戻り、次の文書がカレント文書として選択される。もしすべての文書をカレント文書として選択し終わった場合は、ステップＳ１２４０に進み、処理手順が終了する。
【００６１】
入力されたサーチストリングがＯＲ演算子やこれと同等のものを含んでいる場合には、そのサーチストリングは、ＯＲ演算子等により結ばれる要素のいずれを選択するかにより複数の組合せに分けることができ、それら各組合せがそれぞれ１つサーチストリングとなるので、サーチ処理は入力されたサーチストリングを分解してできるサーチストリングごとに独立に実行される。それら各サーチストリングのサーチ終わると、各々のサーチ結果は合併され、ブール・サーチストリング全体の処理結果となる。
【００６２】
図２６は、本発明に係る、インデックス付けされた文書等のコーパスの内部構造の各レベルをサーチするのに利用可能なストリングサーチシステム４００の一実施形態を示す。図２６に示したように、ストリングサーチシステム４００は、入出力インタフェース４１０，コントローラ４２０，メモリ４３０，ビットインデックス判定回路、ルーチン又はアプリケーション４４０，比較回路、ルーチン又はアプリケーション４６０，共通部分算出回路、ルーチン又はアプリケーション４７０，印付け回路、ルーチン又はアプリケーション４８０を備え、それらは１以上のデータバスやコントロールバス及び／又はアプリケーション・プログラミング・インタフェース（ＡＰＩ）４９５などにより適切に相互接続されている。入出力インタフェース４１０は、リンク２１０を介してデータ供給源２００に接続されている。データ供給源２００は、ネットワークのクライアントやサーバや、インターネット（特にワールド・ワイド・ウェブ）上の装置などのように、データの格納や送信又はその両方を行うことができるようなものであればどのような装置でもよい。データ供給源２００は、本実施形態の方法によりインデックス付けされた文書その他のコーパスについてのインデックスの情報を、本実施形態のストリングサーチシステム４００の入出力インタフェース４１０に対して供給できるようなものであれば、既知の又はこれから開発されるどのようなデータ供給源であってもよい。
【００６３】
入出力インタフェース４１０は、１以上のリンク４０４を介して１以上の入力装置４０２に接続されている。入力装置４０２は、例えばキーボード、マウス、トラックボール、トラックパッド、タッチスクリーン、或いはデータや制御信号をストリングサーチシステム４００に対して入力するための既存又はこれから開発される他のあらゆる装置であり、それらの複数でもよい。さらにこの実施形態では、入出力インタフェース４１０は１以上のリンク２３０を介して１以上のデータ出力先２２０に接続されている。データ出力先２２０は、例えばローカル接続又はリモート接続されたラップトップコンピュータやパーソナルコンピュータ、ＰＤＡ(Personal Digital Assistant)、タブレットコンピュータ、有線や無線のネットワークのクライアントやサーバなどのようにデータの受信や格納、送信又はそれらすべてを行う各種装置、などである。ここでの有線や無線のネットワークには、イントラネットやエクストラネット、ローカルエリアネットワークやワイドエリアネットワーク、ストレージ・エリア・ネットワーク、インターネット（特にワールド・ワイド・ウェブ）などである。データ出力先２２０は、１以上のリンク２３０から供給されるインデックス付けされたストリングデータを受信し、送信又は格納のうちの少なくとも１つを行うことができるものであればいかなる装置でもよい。
【００６４】
リンク４０４，２１０及び２３０は、入力装置４０２やデータ供給源２００、データ出力先２２０と、入出力インタフェース４１０とを接続するものであれば、既存の、或いはこれから開発されるいかなるものであってもよい。特にリンク４０４，２１０及び２３０は、それぞれ、直接的なケーブル接続、ワイドエリアネットワークやローカルエリアネットワークを介する接続、イントラネットを介する接続、エクストラネットを介する接続、インターネットを介する接続、その他の分散処理ネットワーク又はシステムを介する接続、或いは赤外線や無線電波やその他の無線接続などのどれでもよく、それらのうちのいくつかの組合せでもよい。
【００６５】
図２６に示したように、メモリ４３０は複数のメモリ部分を含んでいる。メモリ部分には、例えば、マスタ要素インデックス部分４３１，マスタビットインデックス部分４３２，関連情報部分４３３，文書テキスト部分４３４，サーチストリング部分４３５，及び結果部分４３６などがある。メモリ４３０のマスタ要素インデックス部分４３１は、マスタ要素インデックスを格納する。メモリ４３０のマスタビットインデックス部分４３２は、マスタビットインデックスを格納する。メモリ４３０の関連情報部分４３３は、要素やまとまり単位、文、段落、文書全体の間の関連を示す情報を格納する。メモリ４３０の文書テキスト部分４３４は、インデックス付け済みの各文書の本文テキストを格納する。メモリ４３０のサーチストリング部分４３５には、サーチストリングの本文とビットインデックスが格納される。最後に、結果部分４３６には、サーチ結果が格納される。
【００６６】
図２６に示したメモリ４３０は、可変の揮発性又は不揮発性メモリ、非可変の、すなわち固定のメモリなどの様々なメモリやその組合せとして実装することができる。可変メモリは、揮発性であれ不揮発性であれ、ＳＲＡＭやＤＲＡＭ、フレキシブルディスクとそのディスクドライブ、書込又は書換可能な光学ディスクとそのディスクドライブ、ハードディスクドライブ、フラッシュメモリ等、或いはそれらのうちの複数のものの組合せをもちいて実装することができる。同様に、非可変すなわち固定のメモリは、ＲＯＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭなどのような光ＲＯＭディスクとそのディスクドライブ等、或いはそれらのうちの複数の組合せを用いて実装することもできる。
【００６７】
ビットインデックス判定回路、ルーチン又はアプリケーション４４０は、サーチストリングを受け取り、そのサーチストリングのビットインデックスを求める。比較回路、ルーチン又はアプリケーション４６０は、少なくとも２つのビットインデックスを受け取り、それらビットインデックス同士が互いに十分に等しいか否か（すなわち１つのビットインデックスが他のビットインデックスに完全に含まれるかどうか）を判定する。共通部分算出回路、ルーチン又はアプリケーション４７０は、２以上のビットインデックスを受け取り、それらビットインデックス群の共通部分を計算する。最後に、印付け回路、ルーチン又はアプリケーション４８０は、まとまり単位、文、段落、或いは文書に対し、それがサーチストリングに適合したことを示す印を付ける。
【００６８】
処理では、図２６に示したストリングサーチシステム４００は、１以上の入力装置４０２からリンク４０４を介し入出力インタフェース４１０を通してサーチストリングを受け取る。またこの代わりに、データ供給源２００からリンク２１０を通し入出力インタフェース４１０を介してサーチストリングを受け取るようにしてもよい。以下、特に言及しなくても、ストリングサーチシステム４００内のすべての動作はコントローラ４２０の制御下で行われるものと了解されたい。サーチストリングはメモリ４３０のサーチストリング部分４３５に格納される。次にビットインデックス判定回路、ルーチン又はアプリケーション４４０がそのサーチストリングを受け取る。ビットインデックス判定回路、ルーチン又はアプリケーション４４０は、そのサーチストリングのビットインデックスを求める。次に、様々な例では、そのサーチストリングのビットインデックスは、メモリ４３０のサーチストリング部分４３５に格納される。
【００６９】
サーチストリングのビットインデックスが求められると、そのサーチストリングのビットインデックスが、メモリ４３０のサーチストリング部分４３５から、又はビットインデックス判定回路、ルーチン又はアプリケーション４４０から直接に、共通部分算出回路、ルーチン又はアプリケーション４７０に入力される。次にメモリ４３０のマスタビットインデックス部分４３２から第１番目の文書のビットインデックスがカレント文書ビットインデックスとして選ばれ、共通部分算出回路、ルーチン又はアプリケーション４７０に入力される。共通部分算出回路、ルーチン又はアプリケーション４７０は、サーチストリングのビットインデックスとカレント文書ビットインデックスとの共通部分を求める（すなわちビットごとの論理和を算出する）。
【００７０】
次に、サーチストリングのビットインデックスとカレント文書ビットインデックスとの共通部分が比較回路、ルーチン又はアプリケーション４６０に入力される。比較回路、ルーチン又はアプリケーション４６０は、サーチストリングのビットインデックスとカレント文書ビットインデックスとの共通部分が、サーチストリングのビットインデックスと十分に等しいかどうかを判定する。サーチストリングのビットインデックスとカレント文書ビットインデックスとの共通部分が、サーチストリングのビットインデックスと十分に等しいとは言えない場合は、メモリ４３０のマスタビットインデックス部分４３２から次の文書のビットインデックスがカレント文書ビットインデックスとして選ばれる。全ての文書のビットインデックスが選択済みになった場合、或いはマスタビットインデックス部分４３２が空になった場合は、サーチ処理は完了であり、印付けされたまとまり単位、文、段落、及び文書のすべてがメモリ４３０の結果部分４３６に格納されている。
【００７１】
サーチストリングのビットインデックスとカレント文書ビットインデックスとの共通部分が、サーチストリングのビットインデックスと十分に等しい場合は、印付け回路、ルーチン又はアプリケーション４８０は、メモリ４３０のマスタビットインデックス部分４３２内のカレント文書に対し、その文書がサーチストリングに合致することを示すように印付けを行う（すなわち、そのカレント文書がそのサーチストリングに合致したことを示す情報を例えばメモリ４３０に記憶する）。次に、コントローラ４２０の制御の下で、その合致した文書の第１番目の段落のビットインデックスが、カレント段落ビットインデックスとして選ばれ、メモリ４３０のマスタビットインデックス部分４３２から共通部分算出回路、ルーチン又はアプリケーション４７０に入力される。共通部分算出回路、ルーチン又はアプリケーション４７０は、サーチストリングのビットインデックスとカレント段落ビットインデックスとの共通部分を求める。
【００７２】
次に、サーチストリングのビットインデックスとカレント段落ビットインデックスとの共通部分が、比較回路、ルーチン又はアプリケーション４６０に入力される。比較回路、ルーチン又はアプリケーション４６０は、サーチストリングのビットインデックスとカレント段落ビットインデックスとの共通部分が、サーチストリングのビットインデックスと十分に等しいかどうかを判定する。サーチストリングのビットインデックスとカレント段落ビットインデックスとの共通部分が、サーチストリングのビットインデックスと十分に等しいとは言えない場合は、メモリ４３０のマスタビットインデックス部分４３２から次の段落のビットインデックスがカレント段落ビットインデックスとして選ばれる。カレント文書の全ての段落のビットインデックスが選択済みになった場合は、メモリ４３０のマスタビットインデックス部分４３２から次の文書のビットインデックスが上述のように選択される。
【００７３】
サーチストリングのビットインデックスとカレント段落ビットインデックスとの共通部分が、サーチストリングのビットインデックスと十分に等しい場合は、印付け回路、ルーチン又はアプリケーション４８０は、メモリ４３０のマスタビットインデックス部分４３２内のカレント段落について、その段落がサーチストリングに合致することを示すように印付けを行う。次に、コントローラ４２０の制御の下で、その合致した段落の第１番目の文のビットインデックスが、カレント文ビットインデックスとして選ばれ、メモリ４３０のマスタビットインデックス部分４３２から共通部分算出回路、ルーチン又はアプリケーション４７０に入力される。共通部分算出回路、ルーチン又はアプリケーション４７０は、サーチストリングのビットインデックスとカレント文ビットインデックスとの共通部分を求める。
【００７４】
次に、サーチストリングのビットインデックスとカレント文ビットインデックスとの共通部分が、比較回路、ルーチン又はアプリケーション４６０に入力される。比較回路、ルーチン又はアプリケーション４６０は、サーチストリングのビットインデックスとカレント文ビットインデックスとの共通部分が、サーチストリングのビットインデックスと十分に等しいかどうかを判定する。サーチストリングのビットインデックスとカレント文ビットインデックスとの共通部分が、サーチストリングのビットインデックスと十分に等しいとは言えない場合は、メモリ４３０のマスタビットインデックス部分４３２から次の文のビットインデックスがカレント文ビットインデックスとして選ばれる。カレント段落の全ての文のビットインデックスが選択済みになった場合は、メモリ４３０のマスタビットインデックス部分４３２から次の段落のビットインデックスが上述のように選択される。
【００７５】
サーチストリングのビットインデックスとカレント文ビットインデックスとの共通部分が、サーチストリングのビットインデックスと十分に等しい場合は、印付け回路、ルーチン又はアプリケーション４８０は、メモリ４３０のマスタビットインデックス部分４３２内のカレント文について、その文がサーチストリングに合致することを示すように印付けを行う。次に、コントローラ４２０の制御の下で、その合致した文の中の第１番目のまとまり単位のビットインデックスが、カレントまとまり単位ビットインデックスとして選ばれ、メモリ４３０のマスタビットインデックス部分４３２から共通部分算出回路、ルーチン又はアプリケーション４７０に入力される。共通部分算出回路、ルーチン又はアプリケーション４７０は、サーチストリングのビットインデックスとカレントまとまり単位ビットインデックスとの共通部分を求める。
【００７６】
次に、サーチストリングのビットインデックスとカレントまとまり単位ビットインデックスとの共通部分が、比較回路、ルーチン又はアプリケーション４６０に入力される。比較回路、ルーチン又はアプリケーション４６０は、サーチストリングのビットインデックスとカレントまとまり単位ビットインデックスとの共通部分が、サーチストリングのビットインデックスと十分に等しいかどうかを判定する。サーチストリングのビットインデックスとカレントまとまり単位ビットインデックスとの共通部分が、サーチストリングのビットインデックスと十分に等しいとは言えない場合は、メモリ４３０のマスタビットインデックス部分４３２から次のまとまり単位のビットインデックスがカレントまとまり単位ビットインデックスとして選ばれる。
【００７７】
サーチストリングのビットインデックスとカレントまとまり単位ビットインデックスとの共通部分が、サーチストリングのビットインデックスと十分に等しい場合は、印付け回路、ルーチン又はアプリケーション４８０は、メモリ４３０のマスタビットインデックス部分４３２内のカレントのまとまり単位について、そのまとまり単位がサーチストリングに合致することを示すように印付けを行う。次に、コントローラ４２０の制御の下で、合致したカレント文の中の次のまとまり単位のビットインデックスがカレントまとまり単位ビットインデックスに選ばれ、上述のようにサーチが行われる。カレント文の全てのまとまり単位のビットインデックスが選択済みになった場合は、メモリ４３０のマスタビットインデックス部分４３２から次の文のビットインデックスが上述のように選択される。
【００７８】
コストやその他の設計上の制約に応じ、適切ならば、ストリングインデックス付けシステム１００の上述の要素を１つ乃至複数組み合わせて１つの要素にしたり、或いは複数の要素に分けたりしてもよいことは了解されるであろう。
【００７９】
本発明に係るシステムや方法が上述の実施形態に限定されるものでないことを了解されたい。例えば、様々な実施例において、比較回路、ルーチン又はアプリケーションは、サーチストリングのビットインデックスとまとまり単位、文、段落又は文書のビットインデックスとの共通部分の１００％とそのサーチストリングのビットインデックスとが等しい場合（完全一致の場合）にのみ、そのまとまり単位、文、段落又は文書が十分に等しいと判定しても良い。この方式によれば正確なサーチ結果が得られる。しかしながら他の様々な実施例では、サーチストリングのビットインデックスとまとまり単位、文、段落又は文書のビットインデックスとの共通部分のうちの１００％未満の所定の割合（例えば確信度により決定される）が等しい場合でも、十分に等しいとすることもできる。これにより、正確さでは劣るがより多くの数のサーチ結果を得ることができる。
【００８０】
更に、本発明に係るシステムや方法がテキスト文を含む文書に限られる訳でないことを了解されたい。例えば、写真のようなグラフィック（図形的絵画的）文書も言語と文法とに適切に分解し、同様の方法でインデックス付けすることができる。例えば、画像の被写体、場所、背景、前景、色、その他の様々な特徴は上述の要素に対応するか、或いは要素を構成する。それら要素にはビットインデックスが割り当てられ、マスタビットインデックスに登録される。次にユーザが仮に"girl in Paris"（パリの少女）等のようなサーチストリングを入力すると、そのサーチストリングはgirl（少女），subject（被写体），Paris（パリ）, location（場所）又はbackground（背景）の合併を表すビットインデックスに変換される（関連する言語及び文法では、"girl"（少女）は写真の"subject"（被写体）であり、"Paris"（パリ）はその写真の"location"（場所）又は"background"（背景）であると想定した場合）。そして、この変形例の装置はパリの少女を含んだグラフィック文書をサーチストリングに合致したサーチ結果として出力する。
【００８１】
以上、本発明の好適な実施形態を説明したが、様々な変形例やバリエーション、改良、実質的に等価な構成が、既知のものか現在は予測できないものかに依らず、この技術分野の通常の知識を有する者には明らかであろう。したがって、上述の実施形態はあくまで例示的なものにすぎず、本発明が上記実施形態に限られるわけではない。本発明の範囲から逸脱することなく様々な変更が可能でる。したがって、本発明は、既知の或いはこれから開発される変形例やバリエーション、改良、実質的な等価物をすべて包含したものである。
【図面の簡単な説明】
【００８２】
【図１】文書例に対しインデックス付けする方法の一実施例の流れを示すフローチャートである。
【図２】文書例に対しインデックス付けする方法の一実施例の流れを示すフローチャートである。
【図３】文書例の第１番目の文のいくつかのまとまり単位の表現例を示す図である。
【図４】文書例の第１番目の文のいくつかのまとまり単位の表現例を示す図である。
【図５】文書例の第２番目の文のいくつかのまとまり単位の表現例を示す図である。
【図６】文書例の第３番目の文のいくつかのまとまり単位の表現例を示す図である。
【図７】文書例の第３番目の文のいくつかのまとまり単位の表現例を示す図である。
【図８】文書例の第４番目の文のいくつかのまとまり単位の表現例を示す図である。
【図９】文書例の要素群を示す図である。
【図１０】文書例の要素群を示す図である。
【図１１】文書例の要素群を示す図である。
【図１２】文書例の要素群を示す図である。
【図１３】文書例の要素群を示す図である。
【図１４】文書例の要素群を示す図である。
【図１５】文書例についてのビットインデックスと関連情報とを含んだ表を示す図である。
【図１６】文書例の段落についてのビットインデックスと関連情報とを含んだ表を示す図である。
【図１７】文書例の第１番目の文についてのビットインデックスと関連情報とを含んだ表を示す図である。
【図１８】文書例の第２番目の文についてのビットインデックスと関連情報とを含んだ表を示す図である。
【図１９】文書例の第３番目の文についてのビットインデックスと関連情報とを含んだ表を示す図である。
【図２０】文書例の第４番目の文についてのビットインデックスと関連情報とを含んだ表を示す図である。
【図２１】本発明に係るストリングインデックス付けシステムの一例を示すブロック図である。
【図２２】実施形態におけるインデックス付けされた文書のサーチのための方法の一例を示すフローチャートである。
【図２３】実施形態におけるインデックス付けされた文書のサーチのための方法の一例を示すフローチャートである。
【図２４】実施形態におけるインデックス付けされた文書のサーチのための方法の一例を示すフローチャートである。
【図２５】実施形態におけるインデックス付けされた文書のサーチのための方法の一例を示すフローチャートである。
【図２６】本発明に係る文書サーチシステムの一例を示すブロック図である。
【符号の説明】
【００８３】
１０２  入力装置、１１０  入出力インタフェース、１２０  コントローラ、１３０  メモリ、１３１  マスタ要素インデックス、１３２  マスタビットインデックス、１３３  関連情報、１３４  文書テキスト、１３５  一時領域、１４０  パーズ回路、ルーチン又はアプリケーション、１５０  分解回路、ルーチン又はアプリケーション、１６０  比較回路、ルーチン又はアプリケーション、１７０  要素インデックス割当回路、ルーチン又はアプリケーション、１８０  インデックス変換回路、ルーチン又はアプリケーション、１９０  合併回路、ルーチン又はアプリケーション、２００  データ供給源、２２０  データ出力先。
【図１】
0004639077.tif 000002
【図２】
0004639077.tif 000003
【図３】
0004639077.tif 000004
【図４】
0004639077.tif 000005
【図５】
0004639077.tif 000006
【図６】
0004639077.tif 000007
【図７】
0004639077.tif 000008
【図８】
0004639077.tif 000009
【図９】
0004639077.tif 000010
【図１０】
0004639077.tif 000011
【図１１】
0004639077.tif 000012
【図１２】
0004639077.tif 000013
【図１３】
0004639077.tif 000014
【図１４】
0004639077.tif 000015
【図１５】
0004639077.tif 000016
【図１６】
0004639077.tif 000017
【図１７】
0004639077.tif 000018
【図１８】
0004639077.tif 000019
【図１９】
0004639077.tif 000020
【図２０】
0004639077.tif 000021
【図２１】
0004639077.tif 000022
【図２２】
0004639077.tif 000023
【図２３】
0004639077.tif 000024
【図２４】
0004639077.tif 000025
【図２５】
0004639077.tif 000026
【図２６】
0004639077.tif 000027