以下、本発明の実施形態を図面を参照して説明する。
実施形態1.
図1は、本発明の第1の実施形態の文書検索システムの例を示すブロック図である。本実施形態の文書検索システムは、インデックス作成部11と、単語インデックス記憶部14と、タグ位置管理テーブル記憶部12と、タグ文書番号記憶部13と、文書検索部15とを備える。そして、文書検索部15は、問い合わせ表作成手段151と、問い合わせ実行手段152とを含む。
単語インデックス記憶部14は、単語に関する転置インデックスを記憶する。転置インデックスは、タグや単語の登場頻度および文書における登場位置のリストを示す情報であり、単語に関する転置インデックスは、単語をキーとし、その単語が登場する文書の文書番号と、その文書内での登場位置の集合を参照可能とする情報である。具体的には、単語に関する転置インデックスは、単語と、その単語を含む文書の文書番号と、その文書中でのその単語の位置を示す単語位置情報とを含む。文書中における文字列の位置を示す位置情報であって、単語の文書中での位置を示す位置情報を単語位置情報と記す。本例では、単語インデックス記憶部14に単語位置情報として、単語の開始位置を示す情報が記憶されている場合を例にする。単語位置情報は、後述の問い合わせタスク作成時に単語インデックス記憶部14から読み出され、次開始位置(終了位置)が付加される。以下、単語インデックス記憶部14に記憶された状態の単語位置情報を単語開始位置情報と記す。キーとなる単語がある文書において複数回登場するならば、単語開始位置情報は、それぞれの開始位置を示す。また、単語に関する転置インデックス中に、キーとなる単語の頻度(キーとなる単語が登場する文書の数)の情報が含まれていてもよい。以下、単語に関する転置インデックスを単語転置インデックスと記す。
図2は、単語インデックス記憶部14が記憶する単語転置インデックスの例を示す説明図である。本実施形態では、キーとなる単語、頻度、単語を含む文書の文書番号のリストが単語転置インデックスに含まれる。また、文書番号に続くかっこ書きは、キーとなる単語が文書中で登場する回数および単語開始位置情報を示している。図2に例では、「運動会」という単語をキーとし、「運動会」という単語が454個の文書に登場していることを表している。そして、文書番号“543”の文書では「運動会」という単語が1回登場し、その登場位置が第2位置であり、文書番号“894”の文書では「運動会」という単語が1回登場し、その登場位置が第0位置であり、文書番号“3588”の文書では「運動会」という単語が2回登場し、その登場位置が第0位置および第20位置であること等を示している。既に説明したように、第n位置とは、文字同士の間に順番に割り当てた位置情報である。具体的には、第n位置とは、n文字目とn+1文字目との間の位置を表し、第0位置は一文字目の直前を意味する。
単語インデックス記憶部14に単語転置インデックスを記憶させる処理は、インデックス作成部11が行う。また、単語インデックス記憶部14は、問い合わせ表作成手段151から、少なくとも一つの単語から成るクエリを受け取ると、その単語の登場位置リストを返却する。
タグ位置管理テーブル記憶部12は、タグ位置管理テーブルを記憶する。タグ位置管理テーブルは、少なくとも一つ以上のタグに関し、タグと、そのタグに該当する単語の文書中での位置を示すタグ位置情報と、そのタグに該当する単語を含む文書の文書番号のリストへのポインタと、文書番号サンプルデータとを含む情報である。文書中における文字列の位置を示す位置情報であって、タグに該当する単語の文書中での位置を示す位置情報をタグ位置情報と記す。タグ位置管理テーブルにおいて、タグはタグ名で表される。また、文書番号サンプルデータは、タグに該当する単語を含む文書の文書番号のリストに列挙された文書番号のうち、少なくとも最小の文書番号と最大の文書番号を含む複数の文書番号を、リストにおける文書番号の順位とともに記述した情報である。リストにおける文書番号の順位とは、文書番号の値の大きさの順位を意味し、以下の説明では、最も値の小さい文書番号がリストにおける1番目であり、最も値の大きい文書番号がリストにおける最後の文書番号である場合を例にして説明する。タグ位置管理テーブルに示されているポインタに応じた文書番号のリストは、タグ文書番号記憶部13が記憶している。
タグ位置管理テーブルは、メモリ等の高速に情報を参照可能な記憶装置に記憶される。
図3は、タグ位置管理テーブル記憶部12が記憶するタグ位置管理テーブルの例を示す説明図である。以下の説明では、タグ位置情報が、タグに該当する単語の文書中における開始位置および次開始位置で表される場合を例にして説明する。図3では、タグ名、開始位置、次開始位置、文書リストへのポインタ、文書番号サンプルデータを、それぞれ、TAG、P、NP、REF、SAMPの記号で示している。
開始位置Pは、文書中における、タグに該当する単語の開始位置である。次開始位置NPは、タグに該当するその単語の終了位置であり、次の単語の開始位置と等しい。開始位置Pおよび次開始位置NPは、例えば、文書の先頭からの距離(文字数あるいはビット長など)で表される。本例では、文字同士の間の位置に文書の先頭から順に番号を割り当て、その番号で開始位置Pおよび次開始位置NPを表す場合を例にして説明する。また、文書の一文字目の直前の位置を第0位置とし、n文字目とn+1文字目の間を第n位置とする。図3に示す最初のタグ(名詞)を例にすると、開始位置Pが0(第0位置)であり、次開始位置NPが3(第3位置)となっているので、タグに該当する単語の位置が、一文字目から三文字目までであることを表している。
ポインタREFは、その位置に、タグに該当する単語を含んでいる文書の文書番号のリストへのポインタである。このリストは、タグ文書番号記憶部13に記憶されている。
文書番号サンプルデータは、タグに該当する単語を含む文書の文書番号のリストに列挙された文書番号のうちの数個を、リスト内における順位とともに記述している。図3に示す例では、リスト内における順位と文書番号とをコロン(:)で繋げて記述し、その「順位:文書番号」の組をカンマ(,)で区切って並べている。図3に示す最初のタグのSAMPを例に説明すると、「名詞」に該当する単語が第0位置から第3位置に登場する文書のリストにおいて、1番目の文書番号が「5」となっていて、250番目の文書番号が「894」となっていることを表している。
タグ位置管理テーブルは、問い合わせ表作成手段151によって参照され、問い合わせ情報の作成に使用される。問い合わせ情報は、タグ文書番号記憶部13に対してどのように問い合わせを行うかを示す情報である。問い合わせ情報については後述する。
タグ文書番号記憶部13は、文書の文書番号のリストを、そのリストを示すポインタと関連付けて記憶する。タグ文書番号記憶部13が記憶する文書番号の個々のリストは、同じタグに該当する単語が共通の位置に登場する文書番号のリストであり、その位置の位置情報(本例では開始位置Pおよび次開始位置NP)およびそのリストへのポインタがタグ位置管理テーブルに示されている。タグ文書番号記憶部13は、例えば、ポインタが示すアドレスから文書番号のリストを記憶する。あるいは、個々のリストの識別子としてポインタを作成してもよい。
以下、ポインタに関連付けて記憶される文書番号のリストを、文書リストと記す。図4は、タグ文書番号記憶部13が記憶する文書リストの例を示す説明図である。図4に示す例では、「n0001」というポインタに対する文書リストが、「5,6,18,・・・」という文書番号のリストであることを示している。
問い合わせ実行手段152は、ポインタと文書リストにおける順位の範囲とから定まる文書番号をタグ文書番号記憶部13から読み込む。文書を特定する情報として、あるポインタおよび順位の範囲(例えば「10−20」)が分かっている場合、問い合わせ実行手段152は、そのポインタが示す文書リストにおける10番目から20番目までの文書番号を読み込むことができる。
インデックス作成部11は、外部のシステムあるいはユーザによって実行され、一つ以上のタグの集合が入力され、タグ位置管理テーブルと、タグ文書番号記憶部13が記憶する文書リストを更新する。インデックス作成部11には、タグ名がタグとして入力され、そのタグとともに、そのタグに該当する単語が登場する文書の文書番号と、その開始位置および終了位置の情報も入力される。
文書検索部15には、タグを含むクエリが入力される。クエリは、タグの他に単語を含んでいてもよい。以下、クエリがタグと単語とを含む場合を例にして説明する。文書検索部15は、外部のシステムあるいはユーザによって実行され、クエリが入力されると、単語インデックス記憶部14、タグ位置管理テーブル記憶部12およびタグ文書番号記憶部13が記憶する情報を参照し、クエリに該当する文字列(フレーズ)を含む文書の文書番号とそのフレーズの登場位置のリストを特定する。本実施形態では、フレーズ位置情報を、そのフレーズの開始位置および終了位置で表す。文書中における文字列の位置を示す位置情報であって、クエリに該当する文字列(フレーズ)の文書中での位置を示す位置情報をフレーズ位置情報と記す。
文書検索部15に含まれる問い合わせ表作成手段151は、外部のシステムあるいはユーザによって実行され、クエリが入力されると、タグ位置管理テーブルや、単語インデックス記憶部14が記憶する単語転置インデックスを参照し、タグ文書番号記憶部13に対してどのように問い合わせを行うかを示す問い合わせ情報を作成する。
問い合わせ情報は、フレーズ(クエリに該当する文字列)の文書中での位置(より具体的には、クエリに該当する文字列が文書中で登場する可能性のある位置)と、クエリに含まれるそれぞれのタグ毎に、タグに関する検索対象を定めた情報である。また、クエリにタグおよび単語が含まれる場合には、問い合わせ情報には、クエリに含まれるそれぞれの単語について、単語に関する検索対象も含まれる。タグに関する検索対象および単語に関する検索対象によって文書番号が特定される。タグに関する検索対象および単語に関する検索対象を決定する方法については、後述する。ここでは、問い合わせ情報が表構造で表される情報である場合を例に説明し、問い合わせ情報を問い合わせ表と記す。
ここで、検索対象とは、読み込むべき文書番号を特定する情報である。すなわち、タグに関する検索対象とは、タグに関する条件を満たしているものとして読み込むべき文書番号を特定する情報であり、本実施形態では、文書リストを指定するポインタおよびその文書リスト内での文書番号の順位で表される。また、単語に関する検索対象とは、単語に関する条件を満たしているものとしてして読み込むべき文書番号を特定する情報であり、本実施形態では文書番号によって直接表される。
問い合わせ表により、問い合わせ表が示す開始位置から終了位置までの範囲にフレーズが登場する文書の文書番号が特定される。
本発明の文書検索システムは、タグ位置管理テーブル記憶部12とタグ文書番号記憶部13とにより、タグを文書内における位置毎に分類して、各タグに対応する文書番号のリストを記憶している。この「文書内における位置」は、具体的には、開始位置と次開始位置との組で表される。そして、問い合わせ表では、タグに対応する文書番号のうち所定の条件に合致する文書番号を特定するためのポインタ等によってタグに関する検索対象が表されている。また、クエリ内の単語に対応する文書番号を、その単語に関する検索対象としている。
ここで、問い合わせ表作成手段151は、タグ位置管理テーブル記憶部12や単語インデックス記憶部14に記憶された情報を参照して、文書検索システムに入力されるクエリに含まれるタグや単語の並びと同じ並びのフレーズとなるタグや単語の組み合わせを特定し、その組み合わせが文書中に登場する位置を示す情報を問い合わせ表内の位置情報として保持する。タグや単語は、タグ位置管理テーブル記憶部12や単語インデックス記憶部14において、登場位置毎に分類して管理されるので、クエリに含まれるタグや単語の並びと同じ並びのフレーズとなるタグや単語の組み合わせは、位置が異なるものとして複数種類定められることがある。この場合、それぞれの位置毎に、タグや単語に関する検索対象が定められる。
図5は、問い合わせ表の例を示す説明図である。図5に示すように、問い合わせ表には、文書中における位置を示す位置情報として、フレーズの開始位置および終了位置が含まれている。問い合わせ表における開始位置および終了位置は、入力されたクエリに該当する文字列が存在している可能性のある位置を表している。また、問い合わせ表には、入力されたクエリ内の単語に関する検索対象として、文書番号が列挙され、タグに関する検索対象として、文書リストのポインタとその文書リストにおける文書番号の順位とが含まれている。文書リストにおける文書番号の順位は、何番目から何番目という順位の範囲を示す数の組によって表される。
図5では、「運動会[助詞][形容詞]」というクエリに対して作成される問い合わせ表の例を示している。例えば、図5に示す1行目は、「運動会[助詞][形容詞]」というクエリに該当するフレーズが第0位置から第6位置に登場する文書の集合を検索するために、「運動会」という単語や、[助詞]、[形容詞]という各タグ毎の検索対象を示している。「運動会」という単語に関しては、第0位置から「運動会」という単語が登場する文書の文書番号として、「894」,「3588」,「8600」等の文書番号が直接表されている。[助詞]というタグに関する検索対象は、「p0001」というポインタとともに、そのポインタで指定される文書リストにおける順位の範囲を示す数の組として、「5−7」、「13−15」が示されている。よって、[助詞]というタグに関する検索対象は、ポインタ「p0001」で指定される文書リストにおける5番目から7番目までの文書番号および13番目から15番目までの文書番号である。同様に、[形容詞]というタグに関する検索対象は、ポインタ「v0001」で指定される文書リストにおける1番目から87番目までの文書番号および175番目から262番目までの文書番号である。
また、「運動会」という単語は、文書中において登場する位置毎に単語インデックス記憶部14に文書番号が記憶されている。[助詞]、[形容詞]というタグも、文書中において登場する位置毎に分類され、その位置毎にポインタ等が定められている。従って、「運動会[助詞][形容詞]」という並びに該当するフレーズの登場位置として、第0位置から第6位置に応じた組み合わせだけでなく、他の位置における「運動会[助詞][形容詞]」という組み合わせも見つかる場合がある。このような場合、それぞれの位置毎に、タグや単語に関する検索対象が定められる。図5に示す例では、第0位置から第6位置にフレーズが登場する場合(図5に示す1行目)だけでなく、第2位置から第9位置に登場するとした場合の検索対象も示している(図5に示す2行目)。
問い合わせ実行手段152は、入力されたクエリに応じた文書の文書番号を、問い合わせ表作成手段151が作成した問い合わせ表を用いて特定する。問い合わせ実行手段152は、タグに関する検索対象となる文書番号をタグ毎に特定し、各単語および各タグで共通の文書番号を検索結果とする。問い合わせ実行手段152は、この検索結果を定める処理を、問い合わせ表内の各行に対して行う。また、問い合わせ実行手段152は、検索結果を問い合わせ表内の開始位置および終了位置とともに出力する。
タグ位置管理テーブル記憶部12と、タグ文書番号記憶部13と、単語インデックス記憶部14は、例えば、コンピュータが備える記憶装置によって実現されていてもよい。また、インデックス作成部11と、文書検索部15が備える問い合わせ表作成手段151および問い合わせ実行手段152は、例えば、プログラム(文書検索プログラム)に従って動作するCPUによって実現されてもよい。すなわち、コンピュータのCPUが、プログラムを読み込み、そのプログラムに従って、インデックス作成部11、文書検索部15が備える問い合わせ表作成手段151および問い合わせ実行手段152として動作してもよい。
次に、動作について説明する。本発明の動作は、主にインデックス作成プロセスと、検索プロセスとに分けられる。インデックス作成プロセスは、タグ位置管理テーブル記憶部12、タグ文書番号記憶部13に情報を記憶させる動作である。検索プロセスは、入力されたクエリに応じた文書番号を検索する動作である。
最初に、インデックス作成プロセスについて説明する。インデックス作成プロセスは、外部のシステムあるいはユーザによって一つ以上のタグがインデックス作成部11に入力されることで開始する。既に説明したように、タグ名がタグとして入力され、そのタグとともに、そのタグに該当する単語が登場する文書の文書番号と、その開始位置および終了位置の情報も入力される。
インデックス作成部11は、上記のように一つ以上のタグが入力されると、タグとともに入力された文書番号を、「タグ名」、「開始位置」、「終了位置」の組み合わせ毎に分類する。すなわち、「タグ名」、「開始位置」、「終了位置」の組み合わせが同一であれば、タグとともに入力された文書番号をその組み合わせに対応する文書番号のグループとして一つにまとめ、「タグ名」、「開始位置」、「終了位置」の組み合わせが異なっているタグについては、それらのタグとともに入力された文書番号が別々のグループとなるように文書番号をグループ分けする。
次に、インデックス作成部11は、入力されたタグに関する「タグ名」、「開始位置」、「終了位置」の組み合わせ毎に、タグ位置管理テーブル記憶部12に記憶されたタグ位置管理テーブルを参照し、その「タグ名」、「開始位置」、「終了位置」に対応するポインタを特定する。そして、インデックス作成部11は、タグ文書番号記憶部13においてそのポインタに関連付けられて記憶されている文書リストに、上記の「タグ名」、「開始位置」、「終了位置」の組み合わせに対応するグループとしてグループ分けした文書番号の集合を追加して記憶させる。
次に、インデックス作成部11は、「タグ名」、「開始位置」、「終了位置」の組み合わせがタグ位置管理テーブルになければ、文書番号を新たな文書リストとしてタグ文書番号記憶部13に記憶させて新たにポインタを定め、タグ名、開始位置、終了位置、およびポインタをタグ位置管理テーブルに追加すればよい。
次に、インデックス作成部11は、新たに文書番号を追加した文書リストの中から文書番号をサンプリングし、「タグ名」、「開始位置」、「終了位置」の組み合わせに対応する文書番号サンプルデータを更新する。すなわち、文書番号を追加した文書リストから、文書番号およびその文書番号のリスト内における順位を抽出し直し、タグ位置管理テーブル中の文書番号サンプルデータを書き換える。
文書リストから文書番号をサンプリングする処理では、インデックス作成部11は、少なくとも、文書における1番目の文書番号(値が最小の文書番号)および最後の文書番号(値が最大の文書番号)を抽出する。最小の文書番号および最大の文書番号の他にさらに別の文書番号を抽出してもよい。このように文書番号を抽出する方法は、特定の方法に限定されない。以下にこの方法の例を示す。
例えば、インデックス作成部11は、文書リストを前方からX個の文書番号毎に均等に分割し、分割して得られたそれぞれの文書番号の集合における最初の文書番号とリスト中におけるその順位とを特定するとともに、文書リストの最後の文書番号およびその順位を特定し、文書番号およびその順位の組み合わせを文書番号サンプルデータとしてもよい。
また、例えば、インデックス作成部11は、文書リスト中における順位がある値(Yとする)の倍数となっている文書番号およびその順位と特定するとともに、文書リストの最初および最後の文書番号およびその順位を特定し、文書番号およびその順位の組み合わせを文書番号サンプルデータとしてもよい。
また、例えば、インデックス作成部11は、文書リスト中の文書番号を前方から2個ずつ調べ、文書番号の差が閾値Z以上であるときに、その2個の文書番号およびその順位を特定していき、文書番号およびその順位の組み合わせを文書番号サンプルデータとしてもよい。ただし、文書リストの最初および最後の文書番号およびその順位については、隣接する文書番号との差がZ以上であるか否かによらず、文書番号サンプルデータに含める。
例示した方法以外の方法で、インデックス作成部11がサンプルデータを作成してもよい。
次に、検索プロセス処理について説明する。検索プロセスは、外部のシステムあるいはユーザによってクエリが入力されることで開始する。図6は、検索プロセスの例を示すフローチャートである。以下の説明では、入力されたクエリに含まれる単語およびタグの数をn個としたときに、クエリ内のi番目の単語またはタグをQ(i)と記す。ここで、iは、0≦i<nとする。
文書検索部15の問い合わせ表作成手段151は、クエリが入力されると、そのクエリをタグと単語とに分ける(ステップS201)。問い合わせ表作成手段151は、クエリに対して予め定められた構文を解釈することでタグとなる部分をクエリから取り出し、残った文字列の部分に対して形態素解析やNグラムによる分割を行って単語を特定すればよい。本実施形態では、クエリ内において「[」と「]」で囲まれる部分がタグである場合を例にする。この場合、問い合わせ表作成手段151は、クエリ内で「[」と「]」で囲まれる部分をそれぞれタグとして取り出せばよい。
次に、問い合わせ表作成手段151は、ステップS201で取り出した各タグ毎に、タグ位置管理テーブルを参照して、タグに対応する開始位置Pと、次開始位置NPと、ポインタREFと、文書番号サンプルデータSAMPとを抽出する(ステップS202a)。それぞれのタグ毎に抽出されたP,NP,REF,SAMPの組をタグの参照データと記す。
例えば、問い合わせ表作成手段151は、入力されたクエリ中のタグおよび単語の並びにおけるk番目のタグQ(k)に関して、タグ位置管理テーブルの中から、タグ名(TAG)のフィールドがQ(k)と等しい行のP,NP,REF,SAMPを読み込めばよい。また、あるタグQ(k)のP,NP,REF,SAMPの組は一つとは限らず、PおよびNPの組み合わせが異なっていれば、その組み合わせ毎に存在する。問い合わせ表作成手段151は、Q(k)は、P,NP,REF,SAMPの組をそれぞれ個々に参照データとして抽出する。図3を例にして説明すると、Q(k)が「名詞」である場合、図3に示す1行目のP,NP,REF,SAMPと、2行目のP,NP,REF,SAMPとをそれぞれ抽出する。
また、問い合わせ表作成手段151は、ステップS201で取り出した各単語毎に、単語インデックス記憶部14から、その単語をキーとする文書番号および単語開始位置情報を読み込む。そして、問い合わせ表作成手段151は、その読み込んだ情報から、単語の参照データを作成する(ステップS202b)。単語の参照データは、文書中におけるその単語の開始位置および次開始位置と、その開始位置および次開始位置の間にその単語が登場する文書の文書番号のリストとを含む情報である。単語の参照データにおける開始位置および次開始位置も、タグに関する場合と同様にP,NPの記号で表す。また、単語の参照データにおける文書番号のリストを記号DOCで表す。
図7は、図2に例示する単語転置インデックスから作成される、「運動会」という単語の参照データの例を示している。単語の参照データにおける開始位置Pは、文書中での単語の開始位置を示す。また、単語の参照データにおける次開始位置NPは、文書中でのその単語の終了位置であり、文書内の次の単語の開始位置と等しい。このP,NPは、タグ位置管理テーブルにおけるP,NPと同様に、文字同士の間の位置に文書の先頭から順に番号を割り当て、その番号で表す。
ステップS202bにおいて、問い合わせ表作成手段151は、例えば、以下に示すように単語の参照データを作成すればよい。問い合わせ表作成手段151は、単語インデックス記憶部14に記憶されている単語転置インデックスから、文書番号と、単語開始位置情報の組を抜き出す。例えば、図2に示す単語転置インデックスを例にすると、文書番号「543」と開始位置「2」の組、文書番号「894」と開始位置「0」の組等をそれぞれ抽出する。同様に、文書番号「3588」と開始位置「0」の組、および文書番号「3588」と開始位置「20」の組も同様に抽出される。
そして、問い合わせ表作成手段151は、抽出した文書番号と開始位置との組の集合を、開始位置の順にソートし、開始位置が共通である文書番号を同一の文書番号のリストとしてまとめる。例えば、上記の例のような各組を抽出したとする。このとき、文書番号「894」と開始位置「0」の組、および、文書番号「3588」と開始位置「0」の組では、開始位置が等しいので、問い合わせ表作成手段151は、文書番号「894」、「3588」を同一のリストに含める。
次に、問い合わせ表作成手段151は、ソートした開始位置それぞれについて、開始位置を示す値に、単語の文字列長を加算した値を次開始位置として定める。例えば、「運動会」は3文字であるので、開始位置「0」に関しては、0に3を加算した結果である「3」を次開始位置とする。また、単語インデックス記憶部14では、単語位置情報として単語開始位置情報が記憶されていたが、このように次開始位置も定められ、単語位置情報として開始位置および次開始位置が用いられる。
問い合わせ表作成手段151は、各開始位置毎に、開始位置、文書番号のリスト、および次開始位置をまとめて一つの参照データとする。この結果、ある単語の参照データは、開始位置の種類毎に作成される。図7に示す例では、運動会という1つの単語について3種類(3行分)の参照データが作成されたことを表している。
なお、本実施形態では、単語インデックス記憶部14が、図2に例示する形式の単語転置インデックスを記憶していて、上記のステップS202b(単語の参照データ作成)を検索時に行う場合を示している。このような態様の他、単語インデックス記憶部14においてキーとなっている全ての単語に対して、予め単語の参照データを作成し、記憶装置に記憶させておいてもよい。あるいは、図2に例示するような文書番号順に開始位置を列挙する形式の単語転置インデックスではなく、開始位置順に、その開始位置で単語が登場する文書番号をまとめて列挙した形式の単語転置インデックスを用意しておいてもよい。この場合、開始位置順にソートし、開始位置が共通である文書番号をまとめる処理までを省略してよい。
また、単語インデックス記憶部14は、タグに関するステップS202aの処理と、単語に関するステップS202bの処理のどちらを先に行ってもよい。また、ステップS202a,S202bを並列に同時に行ってもよい。
タグの参照データを抽出し、単語の参照データを作成した後、問い合わせ表作成手段151は、参照データにおける位置情報(開始位置Pおよび次開始位置NP)の連結性による各参照データの並びが、入力されたクエリ内におけるタグおよび単語の並びと一致するように、クエリ内におけるタグおよび単語に対応する参照データを一つずつ取り出し、問い合わせタスクを生成する(ステップS203)。問い合わせタスクは、タグ位置情報で示される並びがクエリ内のタグの並びと一致しているそれぞれのタグに対応するポインタおよび文書番号サンプルデータを含むとともに、フレーズ(クエリに該当する文字列)の文書中での位置を示す位置情報を含む情報である。この位置情報は、例えば、フレーズの開始位置および終了位置で表される。また、クエリに単語が含まれる場合、問い合わせタスクは、タグ位置情報および単語位置情報で示される並びがクエリ内のタグおよび単語と一致しているそれぞれのタグに対応するポインタおよび文書番号サンプルデータを含み、また、タグ位置情報および単語位置情報で示される並びがクエリ内のタグおよび単語と一致しているそれぞれの単語に対応する文書番号を含み、さらに、フレーズの文書中での位置(開始位置および次開始位置)を示す位置情報を含む。
入力されたクエリ内の単語およびタグの個数をnとすると、各単語およびタグに対応する参照データ(単語の参照データ、タグの参照データ)がn個含まれ、クエリに該当する文字列の開始位置および終了位置が含まれることになる。
クエリ内のそれぞれの単語またはタグQ(k)(0≦k<n)に対する参照データのリストをSL(k)と記す。そして、0≦k<n−1の各kにおいて、SL(k)からそれぞれ一つずつ参照データを取り出したと仮定する。取り出した参照データをS(k)と記す。n個の参照データS(k)に関し、以下に示す式(1)が成立しているかどうかで、そのn個の参照データの並びがクエリ内の単語およびタグの並びと一致しているか否かが判定される。換言すれば、式(1)が成立しているかどうかで、参照データのリストがクエリと同じ連結性を持っているかどうかが判定される。
S(k).NP=S(k+1).P (0≦k<n−1) 式(1)
なお、S(k).NPは、参照データS(k)内の次開始位置NPを意味し、S(k).Pは、参照データS(k)内の開始位置Pを意味する。
このような判定にもとづいて、クエリと同じ連結性を持つ参照データの組み合わせを特定する動作を説明する。図8は、この動作の例を示す説明図である。以下に示す説明において、変数posは、クエリに該当する文字列が文書内のどの位置に存在するのかを表す。すなわち、文書内における位置を表す。また、変数kは、クエリ内のタグおよび単語の順番を表す。変数taskは、問い合わせタスクを意味する。MAX_LENは、検索の対象とされる文書集合において各文書の文書長(文書を構成する文字列長)の最大値である。
問い合わせ表作成手段151は、文書内の位置を表す変数posの値を0に設定することで、クエリのフレーズが第0位置に登場する場合の参照データの組み合わせ作成を開始する(ステップS2031)。
次に、問い合わせ表作成手段151は、クエリ内における順番を表す変数kの値を0とし、変数taskの中身を空に設定する(ステップS2032)。k=0は、クエリにおける先頭のタグまたは単語に着目することを意味する。
ステップS2032の後、クエリにおけるk番目のタグまたは単語に関する参照リストの選択処理(ステップS2032)を開始する。ステップS2032の処理は、再帰的な処理である。
ステップS2032において、問い合わせ表作成手段151は、kがnと等しいか否かを判定する(ステップS2034)。k=nであれば(ステップS2034におけるYES)、その時点で作成されているtaskを、参照データの組み合わせとして決定する(ステップS2035)。なお、k=nであるこということは、一番後ろのタグまたは単語までステップS2036以降の処理が済んでいることを意味する。
k≠nであれば(ステップS2034におけるNO)、問い合わせ表作成手段151は、k番目のタグまたは単語についての参照データのリストSL(k)の中から、開始位置Pが変数posの値と等しい参照データの集合を抽出する(ステップS2036)。ステップS2036で抽出した各参照データは、いずれも目的とする参照データの組み合わせに含まれる可能性がある。
ステップS2036の後、問い合わせ表作成手段151は、抽出した参照データを順に調べる処理を行う(ステップS2037)。ステップS2037において、問い合わせ表作成手段151は、抽出したそれぞれの参照データごとに、その後に続く参照データを調べる。具体的には、ステップS2037において、問い合わせ表作成手段151は、以下の処理を行う。問い合わせ表作成手段151は、ステップS2036で抽出した各参照データ毎に、taskに参照データを追加する処理を行う(ステップS2038)。そして、ステップS2036で抽出した各参照データ毎に、kを1加算し、参照データの次開始位置NPを次のタグまたは単語の開始位置として、ステップS2033の処理を再帰的に行う(ステップS2039)。なお、再帰的に開始したステップS2033におけるステップS2036では、その開始位置と等しい開始位置を有する参照データの集合を抽出する。
この処理により、それまで着目していたタグまたは単語における次開始位置と等しい開始位置を持つ参照データを取り出すことができる。この処理を再帰的にk=nとなるまで繰り返すことで、クエリと同じ連結性を持つ参照データの組み合わせを特定することができる。問い合わせ表作成手段151は、この参照データの組み合わせを問い合わせタスクとする。
ステップS2033を再帰的に行う処理を全て終えると、問い合わせ表作成手段151は、変数posの値を1加算する(ステップS2040)。そして、変数posの値がMAX_LEN未満であるか否かを判定する。変数posの値がMAX_LEN以上であれば処理を終了する。posの値がMAX_LEN未満であれば、ステップS2032以降の処理を繰り返す。この結果、ステップS2040で更新されたposが示す位置を、クエリの先頭のタグまたは単語の開始位置として、参照データの組み合わせを生成していくことになる。
次に、問い合わせ表作成手段151は、以上の処理で求めた参照データのそれぞれの組み合わせにおいて、最初の参照データS(0)における開始位置Pと、最後の参照データS(n−1)における次開始位置NPを、クエリに該当する文字列の開始位置、終了位置とする。問い合わせ表作成手段151は、この開始位置および終了位置とを、参照データの組み合わせに追加する。この結果、問い合わせタスクが完成する。
図9は、問い合わせタスクの例を示す説明図である。図9では、図3に例示するタグ位置管理テーブルと、「運動会[助詞][形容詞]」というクエリとに基づいて作成された問い合わせタスクの例を示している。なお、図9に例示する問い合わせタスクでは、運動会、[助詞]、[形容詞]に関する参照データに含まれる開始位置Pおよび次開始位置NPの図示を省略している。
ステップS203で問い合わせタスクを生成した後、問い合わせ表作成手段151は、問い合わせタスク内のタグに関し、検索対象を限定して、問い合わせ表を作成する(ステップS205)。図10は、問い合わせ表作成動作の例を示す説明図である。問い合わせ表作成手段151は、ステップS203(図6参照)で生成された個々の問い合わせタスクそれぞれに対して以下に示す処理を行い、問い合わせ表を作成する。
以下の説明において、クエリ内のi番目(0≦i<nとする。)のタグまたは単語の参照データであって、上記のように作成された問い合わせタスクに含まれている参照データをS(i)と記す。
個々の問い合わせタスクにおいて、問い合わせ表作成手段151は、0以上n未満の各kの値について、以下の処理を行う。kは、クエリ内のタグおよび単語の順番を表す。k=0の場合、クエリ内の先頭のタグまたは単語を表し、k=n−1の場合、クエリ内の最後のタグまたは単語を表す。すなわち、0番目が先頭を意味し、n−1番目が最後を意味する。問い合わせ表作成手段151は、kによって指定されるQ(k)がタグであるか否かを判定する(ステップS2501)。すなわち、クエリ内のタグおよび単語の並びにおけるk番目がタグとなっているか否かを判定する。
Q(k)がタグであることを条件に、ステップS2052の処理を行う。ステップS2052において、問い合わせ表作成手段151は、問い合わせタスクに含まれているタグQ(k)の参照データS(k)の文書番号サンプルデータを取り出す(ステップS2052)。
ステップS2052の次に、問い合わせ表作成手段151は、その文書番号サンプルデータの先頭から、文書番号および文書リストにおけるその文書番号の順位の組を二つずつ取り出し、文書リスト中におけるその二つの順位の間の範囲をタグに関する検索対象に含めるか否かを判定する(ステップS2053)。
以下に示す変数iは、文書番号サンプルデータでの、「文書番号および文書リスト内におけるその文書番号の順位」の組の順番を表す。i=0(すなわち0番目)の組は、文書番号サンプルデータにおける先頭の組である。
ステップS2053において、問い合わせ表作成手段151は、i=0とし、i番目(この場合は先頭)の組と、その次の組(i+1番目の組)を取り出す。
問い合わせ表作成手段151は、取り出した二つの組(i番目およびi+1番目の組)が示す「文書リスト内におけるその文書番号の順位」の間の範囲を検索対象に含めるか否かを判定する(ステップS2054)。すなわち、その範囲の文書番号を、検索時に読み込むべき文書番号とするか否かを判定する。このステップS2054の判定処理については後述する。
問い合わせ表作成手段151は、検索対象とすべきと判定したことを条件に、その範囲(文書リストにおける文書番号の順位の範囲)を、クエリにおいてk番目に位置するタグの検索対象として記憶していく(ステップS2055)。例えば、i番目の組における「文書番号の順位」がaであり、i+1番目の組における「文書番号の順位」がbであり、ステップS2054において文書リストにおけるa番目からb番目までを検索対象とすべきと判定したならば「a番目からb番目まで」という情報を検索対象として記憶する。
そして、iの値を1加算して、ステップS2054以降の処理を繰り返す。このようにして、問い合わせ表作成手段151は、文書番号サンプルデータにおける0番目の組と1番目の組、1番目の組と2番目の組、2番目の組と3番目の組等のように、順番にステップS2054以降の処理を繰り返す。問い合わせ表作成手段151は、文書番号サンプルデータの最後の2組についての処理が完了するまで、この処理を繰り返す。この繰り返し処理で、クエリにおいてk番目に位置するタグに関する検索対象が蓄積されていく。
この結果、文書番号サンプルデータの最後の2組についての処理が完了すると、問い合わせ表作成手段151は、蓄積した文書番号の順位の範囲に、参照データS(k)に含まれるポインタREFを追加する。この結果、クエリでk番目に位置するタグに関する検索対象が定まる。すなわち、ポインタによって指定される文書リストのうちのどの範囲の文書番号を読み込むべきかが定まる。
また、ステップS2051において、Q(k)がタグでないと判定した場合、Q(k)は単語であり、問い合わせ表作成手段151は、問い合わせタスク中のその単語の参照データに含まれる文書番号を、クエリでk番目に位置する単語に関する検索対象とする。
問い合わせ表作成手段151は、以上のように定めたタグに関する検索対象および単語に関する検索対象に、クエリに該当する文字列の開始位置および終了位置を追加する。この開始位置および終了位置は問い合わせタスクにおける開始位置および終了位置である。
ステップS203で作成した各問い合わせタスク毎に上記の処理を行うことで、問い合わせ表が得られる。
次に、ステップS2054の判定処理について説明する。ステップS2054では、文書番号サンプルデータから、「文書番号および文書リスト内におけるその文書番号の順位」の組を二つずつ取り出している。「文書番号および文書リスト内におけるその文書番号の順位」は、例えば、「1:5」、「3:358」のように整数の組で表される。本例では、「x:y」のような整数の組において、前者の整数xが順位であり、後者の整数yが文書番号であるものとする。また、このような「順位:文書番号」の二組のうち、最初の方の組をサンプルデータ1と記し、後の方の組をサンプルデータ2と記す。また、サンプルデータ1における順位、文書番号をそれぞれ「順位1」、「文書番号1」と記す。同様に、サンプルデータ2における順位、文書番号をそれぞれ「順位2」、「文書番号2」と記す。この場合、「文書番号1<文書番号2」である。そして、「順位1:文書番号1」および「順位2:文書番号2」という二つの組に対して処理を行うものとして説明する。
問い合わせ表作成手段151は、「順位1:文書番号1」および「順位2:文書番号2」における二つの文書番号の範囲が、入力されたクエリ内の他のタグに対応する文書番号サンプルデータにおける文書番号の最小値と最大値の範囲内であり、その二つの文書番号の範囲内にクエリ内の単語に対応する文書番号が属していることを条件に、文書リスト中におけるその二つの文書番号の順位(上記の「順位1」および「順位2」)の間の範囲をタグに対する検索対象とすべきと判定する。すなわち、検索対象として定める。
問い合わせ表作成手段151は、以下に示す第1から第4のルールに基づいて、この判定を行う。なお、入力されたクエリをQとする。また、以下のルールにおいて、「False」は、検索対象としないということを意味し、「True」は、検索対象とするということを意味する。
第1のルールは、「入力されたクエリQ内に単語Q(w)があり(すなわち、単語に関する検索条件があり)、その単語の参照データS(w)の文書番号のリストDOC内に、『文書番号1≦T≦文書番号2』を満たす文書番号Tが存在しない場合、Falseと判定する。」というルールである。
第2のルールは、「入力されたクエリQ内に他のタグQ(t)があり(すなわち、タグに関する検索条件があり)、そのタグの参照データS(t)の文書番号サンプルデータの最小値Min(最小文書番号)が『文書番号2<Min』という条件を満たす場合、Falseと判定する。」というルールである。
第3のルールは、「入力されたクエリQ内に他のタグQ(t)があり(すなわち、タグに関する検索条件があり)、そのタグの参照データS(t)の文書番号サンプルデータの最大値Max(最大文書番号)が『Max<文書番号1』という条件を満たす場合、Falseと判定する。」というルールである。
第4のルールは、「第1のルールから第3のルールまでのいずれのルールにも当てはまらない場合、Trueと判定する。」というルールである。
問い合わせ表作成手段151は、「順位1:文書番号1」および「順位2:文書番号2」における二つの文書番号1および文書番号2に関し、第1のルールから第3のルールまでのいずれかに該当するか否かを判定し、いずれかに該当するならば、「順位1」から「順位2」までの範囲を検索対象としない。また、二つの文書番号1および文書番号2に関し、第1のルールから第3のルールまでのいずれのルールにも該当しない場合、第4のルールにより、「順位1」から「順位2」までの範囲を検索対象と定める。
上記のようにタグの検索対象を限定して問い合わせ表を作成する処理(ステップS205)により、例えば、図5に例示するような問い合わせ表が得られる。図5に例示する問い合わせ表における個々の行が、それぞれ個々の問い合わせタスクから得られる。
ステップS205の次に、問い合わせ実行手段152は、問い合わせ表を基にして文書番号の読み込みを行うことにより、入力されたクエリに応じた文書の文書番号を特定する(ステップS206)。
問い合わせ実行手段152は、ステップS206において、問い合わせ表内を参照し、位置(開始位置および終了位置)に対応する各単語および各タグの検索対象に対して、以下の処理を行う。すなわち、図5に例示するような問い合わせ表の各行に対して以下の処理を行う。
まず、問い合わせ実行手段152は、位置(開始位置および終了位置、図5参照)に応じた検索対象の中に、タグの検索対象(ポインタおよび文書リスト内での順位の範囲)が含まれている場合、その検索対象が示す文書番号を読み込む。すなわち、問い合わせ実行手段152は、タグ文書番号記憶部13に記憶されている、ポインタに対応する文書リストの中から、検索対象として示された順位の範囲内の文書番号を読み込む。例えば、図5に示す[助詞]というタグの検索対象(p0001:5−7,13−15)を例にすると、ポインタ「p0001」に対応する文書リストにおける5番目から7番目までの文書番号および13番目から15番目までの文書番号をそれぞれ読み込む。問い合わせ実行手段152は、位置(開始位置および終了位置、図5参照)が共通であるそれぞれのタグに関し、同様に文書番号を読み込む。
そして、問い合わせ実行手段152は、位置(開始位置および終了位置、図5参照)が共通である各タグおよび各単語の文書番号の積集合をとる。すなわち、上記のように読み取ったそれぞれのタグ毎の文書番号と、単語毎の文書番号(問い合わせ表内に含まれている)との積集合をとる。このようして、各タグ毎および各単語毎の文書番号のうち、共通の文書番号を選択する。積集合として得られた文書番号は、入力されたクエリに該当する文字列を含む文書の文書番号であり、クエリに対する検索結果である。
問い合わせ実行手段152は、各タグ毎および各単語毎の積集合として得た文書番号を、開始位置および終了位置とともに出力する。
なお、タグに関しての文書番号の読み込み処理は、バッファを用いて任意のタイミングで行ってもよい。例えば、問い合わせ表の各タグに関して文書番号を読み込む処理をまとめて行い、バッファに保持しておき、読み込み処理を高速化することができる。行毎に読み込む場合には、繰り返し同じ範囲の文書番号を読み込むケースが生じ得るが、それらをまとめて読み込むことで読み込み処理を高速化できる。
また、クエリとして入力されたタグおよび単語のつらなり(後述のN連結パターン)をタグと同様にみなし、クエリに対する検索結果をタグ文書番号記憶部13に記憶させ、クエリとして入力されたN連結パターンに関する位置、ポインタおよび文書番号サンプルデータをタグ位置管理テーブルと同様に管理してもよい。この場合の構成については、第3の実施形態として後述する。
次に、本実施形態の動作の例を示す。まず、インデックス作成プロセスの例を示す。図11は、インデックス作成プロセスで入力されるタグの例を示す説明図である。インデックス作成部11に、図11に例示するタグの集合が入力されたとする。すなわち、図11に例示するタグ名、文書番号、開始位置および終了位置が入力されたとする。
インデックス作成部11は、入力されたデータを「タグ名」、「開始位置」、「終了位置」の組み合わせ毎に分類する。図12は、この分類結果の例を示す説明図である。図11に示す入力データのうち、文書番号「25」および「35」は、タグ名、開始位置および終了位置が共通である。従って、図12に示すように、文書番号「25,35」は一つのグループにまとめられる。他の文書番号「15」、「29」に関しては、「タグ名」、「開始位置」、「終了位置」の組み合わせが他と共通でないので、それぞれ別のグループに分類される。
そして、インデックス作成部11は、タグ位置管理テーブルを参照し、各グループ毎に、文書番号、開始位置および終了位置の組み合わせに対応するポインタを特定し、そのポインタに対応する文書リストに、文書番号を追加する。例えば、図12に示す1行目の「名詞、1,3」という組み合わせに対応するポインタが「n0001」であるとすると、「n0001」から特定される文書リストに、文書番号「25,31」を追加する。
そして、インデックス作成部11は、文書番号を追加した文書リストから文書番号をサンプリングし、タグ位置管理テーブル内の文書番号サンプルデータを更新する。
次に、検索プロセスの例を示す。本例では、入力されるクエリの構文として、タグは「[」と「]」で囲まれ、タグ以外の部分は自然言語で記述されると定められているとする。そして、「運動会[助詞][形容詞]」というクエリが入力されたとする。この場合、文書検索部15は、以下のように動作する。なお、タグ位置管理テーブル記憶部12には、図3に示すタグ位置管理テーブルが記憶されているものとする。
文書検索部15の問い合わせ表作成手段151は、入力されたクエリを単語「運動会」と、各タグ[助詞]、[形容詞]に分ける(ステップS201)。そして、各タグ([助詞]、[形容詞])の参照データをそれぞれ抽出し、また、単語「運動会」の参照データを抽出する(ステップS202a,S202b)。問い合わせ表作成手段151は、問い合わせタスクを生成する。本例では、図9に示す問い合わせタスクが生成される。
次に、問い合わせ表作成手段151は、問い合わせタスク(図9参照)の[助詞]および[形容詞]の文書番号サンプルデータの範囲を限定して、問い合わせ表を作成する(ステップS205)。図13は、単語に対応する文書番号およびタグに対応する文書番号サンプルデータの例を示す。図13を例にして、「文書リスト内における文書番号の順位」の間の範囲を検索対象に含めるか否かを判定するステップS2054について説明する。以下に例示するようにして、文書番号サンプルデータの範囲を絞り込む。
図13では、「運動会」という単語から得た文書番号の例を番号順に示している。また、[助詞]および[形容詞]というタグの文書番号サンプルデータを、順番に示している。図13に示す楕円内の番号は文書番号である。[助詞]および[形容詞]の文書番号の下に示す値は、文書リスト内での順位を表している。問い合わせ表作成手段151は、[助詞]の文書番号サンプルデータにおける「1番目:文書番号5」と、「3番目:文書番号358」に関しては、第1のルールによりFalseと判定し、1番目から3番目までの範囲を検索対象から除外する。クエリ内に単語「運動会」があるが「運動会」の文書番号の中に「5以上358以下」の文書番号がないためである。「3番目:文書番号358」と「5番目:文書番号891」とに関しても同様であり、結果的に1番目から5番目までは検索対象に含まれない。また、同様に、[形容詞]における「87番目:940」と「175番目:2854」とに関しても、第1のルールにより、87番目から175番目までの範囲は、検索対象に含めない。
また、仮に、クエリ内に「運動会」という単語がなく「[助詞][形容詞]」というクエリに対して問い合わせタスクを生成したとする。この場合にも、[助詞]、[形容詞]の文書番号サンプルデータとして図13に例示するデータが得られたとする。本例では、図13に示す「運動会」の文書番号は無視する。問い合わせ表作成手段151は、[助詞]の「1番目:文書番号5」と、「3番目:文書番号358」に関して、第2のルールによりFalseと判定し、1番目から3番目までの範囲を検索対象から除外する。大きい方の文書番号「358」が、他のタグ[形容詞]の文書番号サンプルデータでの最小値「367」未満であるためである。
以上のような範囲の限定により、問い合わせ表が作成される。図5に示す1行目は、図13に例示する文書番号サンプルデータから導いた結果である。
問い合わせ表が作成された後、問い合わせ実行手段152は、問い合わせ表におけるタグ[助詞]、[形容詞]の検索対象に該当する文書番号をタグ文書番号記憶部13から読み込み、単語「運動会」の文書番号、タグ[助詞]の文書番号、[形容詞]の文書番号で共通の文書番号を取り出す。すなわち、各単語および各タグの文書番号の積集合を求める。この処理は問い合わせ表における開始位置および終了位置(図5参照)の組毎に行う。問い合わせ実行手段152は、積集合として求めた文書番号を、開始位置および終了位置とともに検索結果として出力する。
本実施形態では、タグに関する文書番号サンプルデータおよびポインタを文書内における位置とともに含むタグ位置管理テーブルを記憶しておく。そして、クエリ内のタグに関して、クエリ内におけるそのタグの並びと一致するタグのデータとして記憶されているポインタおよび文書番号サンプルデータを取り出し、クエリ内の他のタグや単語に関する文書番号との関係で、検索対象とすべき範囲を定める。このように、タグに関して検索対象となる範囲を絞り込んだ上で、各タグの検索対象に該当する文書番号を読み込み、それぞれのタグについての文書番号およびそれぞれの単語についての文書番号で共通の文書番号を検索結果とするので、文書番号の読み込み量を削減できるため、高速な検索を実現することができる。
また、以上の説明では、クエリに単語およびタグが含まれている場合を例に説明したが、単語を含めずにタグを連ねたクエリが入力されることを前提とする文書検索システムであってもよい。その場合、文書検索システムは、単語インデックス記憶部14を備えていなくてもよい。また、問い合わせ表作成手段151は、ステップS201では、入力されたクエリを各タグに分け、その後、ステップS202bについては実行せず、ステップS202aを行った後にステップS203に移行すればよい。
また、ステップS2054の判定処理では、文書番号サンプルデータの先頭から順番に二組ずつ取り出す「順位1:文書番号1」および「順位2:文書番号2」に対して、第2のルールと第3のルールのいずれかに該当するか否かを判定し、いずれかに該当するならば「順位1」から「順位2」までの範囲を検索対象とせず、第2のルールと第3のルールのいずれにも該当しない場合には「順位1」から「順位2」までの範囲を検索対象と定めればよい。
このようにして、問い合わせ表作成手段151は、「順位1:文書番号1」および「順位2:文書番号2」における二つの文書番号の範囲が、入力されたクエリ内の他のタグに対応する文書番号サンプルデータにおける文書番号の最小値と最大値の範囲内であることを条件に、文書リスト中におけるその二つの文書番号の順位(上記の「順位1」および「順位2」)の間の範囲をタグに対する検索対象と定める。
この場合であっても、クエリに含まれる隣接したタグの関係性に基づいて、文書リストの読み込み量を削減でき、高速な検索を実現できる。
実施形態2.
図14は、本発明の第2の実施形態の文書検索システムの例を示すブロック図である。第1の実施形態と同様の構成要素については、図1と同一の符号を付し、詳細な説明を省略する。本実施形態の文書検索システムは、インデックス作成部11と、単語インデックス記憶部14と、タグ位置管理テーブル記憶部12と、タグ文書番号記憶部13と、文書検索部15と、タグ管理テーブル記憶部16と、タグ転置インデックス記憶部17とを備える。文書検索部15は、第1の実施形態と同様に、問い合わせ表作成手段151と、問い合わせ実行手段152とを含む。
タグ転置インデックス記憶部17は、タグに関する転置インデックスを記憶する。タグに関する転置インデックスは、キーとなるタグと、そのタグに該当する単語が登場する文書の文書番号と、その文書内でのそのタグに該当する単語が登場するタグ位置情報とを含む。キーとなるタグに該当する単語がある文書で複数回登場するならば、タグ位置情報はそれぞれの位置を示す。また、タグに関する転置インデックス中に、文書集合内でタグに該当する単語が登場する回数を示すタグの頻度が含まれていてもよい。以下、タグに関する転置インデックスをタグ転置インデックスと記す。
図15は、タグ転置インデックスの例を示す説明図である。図15に例示するタグ転置インデックスは、キーとなるタグとしてタグ名を含み、また、頻度と、タグ(本例では人名)に該当する単語を含む文書番号のリストとを含んでいる。また、文書番号に続くかっこ書きは、タグ位置情報に該当する開始位置および終了位置(次開始位置)を示している。図15に示す例では、[人名]というタグをキーとし、人名に該当する単語が文書集合内に10001回登場し、文書番号「333」の文書では第7位置から第10位置までの範囲に登場することを示している。
タグ位置管理テーブル記憶部12およびタグ文書番号記憶部13が記憶する情報は、第1の実施形態と同様である。従って、タグに該当する単語が登場する文書の文書番号のリスト(文書リスト)の参照方法として、タグ位置管理テーブル記憶部12に記憶されたポインタを基にタグ文書番号記憶部13に記憶された文書番号を参照する方法と、タグ転置インデックス記憶部17に記憶されたタグ転置インデックスを参照する方法とがある。タグ文書番号記憶部13に文書リストを記憶させておき、タグ位置管理テーブル内のポインタに基づいて文書リストを参照して、第1の実施形態と同様に問い合わせ表を作成して検索速度を高速化する効果は、特に、タグに該当する単語の登場頻度が多い場合に大きい。従って、例えば、文書中での登場頻度が多いタグに関しては、タグ位置管理テーブルを用意して、文書リストをタグ文書番号記憶部13に記憶させ、登場頻度が低いタグに関しては、タグ転置インデックスをタグ転置インデックス記憶部17に記憶させてもよい。
タグ管理テーブル記憶部16は、タグ管理テーブルを記憶する。タグ管理テーブルは、各タグ毎に、タグ名と、そのタグに該当する単語を含む文書の文書リストがタグ文書番号記憶部13に記憶されているのかタグ転置インデックス記憶部17に記憶されているのかを示す情報(以下、インデックス種と記す。)とを含む情報である。タグ管理テーブルは、タグに該当する単語を含む文書の文書番号がタグ文書番号記憶部13とタグ転置インデックス記憶部17のどちらに記憶されているのかを定めたタグ種別情報であるということができる。
図16は、タグ管理テーブルの例を示す説明図である。インデックス種の種類は2種類あり、図16ではその2種類を「通常」および「位置管理」と示している。「通常」というインデックス種は、タグに該当する単語を含む文書の文書リストがタグ転置インデックスとしてタグ転置インデックス記憶部17に記憶されていることを意味する。また、「位置管理」というインデックス種は、タグに該当する単語を含む文書の文書リストが、タグ文書番号記憶部13に記憶され、その文書リストへのポインタがタグ位置管理テーブルに含まれていることを意味している。
問い合わせ表作成手段151は、タグ管理テーブルを参照して、入力されたクエリ内のタグのインデックス種を判定する。すなわち、文書リストがタグ転置インデックス記憶部17とタグ文書番号記憶部13のいずれに記憶されているのかを判定する。そして、文書リストがタグ転置インデックス記憶部17に記憶されているタグ(インデックス種が「通常」のタグ)に関しては、タグ転置インデックス記憶部17に記憶されている文書番号を検索対象とする。
例えば、問い合わせ表作成手段151は、インデックス種が「通常」のタグに関しては、問い合わせタスクを作成する際、タグ転置インデックス記憶部17に記憶されているタグ転置インデックスのうち、そのタグに対応するタグ転置インデックス内の文書番号と開始位置および終了位置を抽出し、開始位置および終了位置と、その位置に、タグに該当する単語が登場する文書番号の集合とを参照データとして作成する。そして、その参照データにおける文書番号の集合を、そのタグに関する検索対象として、問い合わせ表にそのまま移せばよい。
次に、第2の実施形態の動作について説明する。まず、インデックス作成プロセスについて説明する。インデックス作成プロセスは、外部のシステムあるいはユーザによって一つ以上のタグがインデックス作成部11に入力されることで開始する。第1の実施形態と同様に、タグ名がタグとして入力され、そのタグとともに、文書番号、開始位置および終了位置が入力される。
インデックス作成部11は、一つ以上のタグが入力されると、タグ管理テーブルを参照して、各タグのインデックス種を判定する。インデックス種が「位置管理」であるタグは、タグ位置管理テーブルとタグ文書番号記憶部13で管理されるタグであり、そのタグに関する処理は、第1の実施形態のインデックス作成プロセスと同様である。
入力されたタグのうち、インデックス種が「通常」であるタグについては、インデックス作成部11は、入力されたタグ名に対応するタグ転置インデックスに文書番号、開始位置、終了位置を追加する。
次に、検索プロセスについて説明する。
問い合わせ表作成手段151は、クエリが入力されると、そのクエリをタグと単語とに分ける(ステップS201、図6参照)。ステップS201後のステップS202bの動作は、第1の実施形態と同様である。
ステップS201の後のステップS202aにおいて、問い合わせ表作成手段151は、タグの参照データを抽出するが、第2の実施形態では、以下に示すように参照データを抽出する。まず、問い合わせ表作成手段151は、ステップS201で取り出した各タグについて、タグ管理テーブルを参照し、インデックス種が「通常」であるか「位置管理」であるかを判定する。そして、インデックス種が「位置管理」であるタグについては、第1の実施形態と同様に参照データを抽出する。
また、インデックス種が「通常」であるタグについては、問い合わせ表作成手段151は、タグ毎に、そのタグをキーとする文書番号およびタグ位置情報(開始位置および終了位置)を、タグ転置インデックス記憶部17から読み込む。問い合わせ表作成手段151は、その文書番号、開始位置および終了位置の組の集合を、開始位置の順にソートし、開始位置および終了位置が共通である文書番号を同一の文書番号のリストとしてまとめ、開始位置および終了位置と文書番号のリストとを一つの参照データとする。この結果、単語の参照データ(図7参照)と同様の参照データが得られる。
次に、問い合わせ表作成手段151は、各タグ毎および各単語の参照データに基づいて問い合わせタスクを作成する(ステップS203)。この処理は、第1の実施形態と同様である。
次に、問い合わせ表作成手段151は、問い合わせ表作成処理(ステップS205)を行う。この処理の流れは、以下の点を除き、第1の実施形態と同様である(図10参照)。本実施形態では、ステップS2051において、kによって指定されるQ(k)がタグであり、かつ、そのタグのインデックス種が「位置管理」であるか否かを判定する。Q(k)がタグであり、かつ、そのタグのインデックス種が「位置管理」であることを条件に、ステップS2052以降の処理を行う。
また、ステップS2051において、Q(k)がタグでないと判定した場合、Q(k)は単語であり、問い合わせ表作成手段151は、問い合わせタスク中のその単語の参照データに含まれる文書番号を、クエリでk番目に位置する単語に関する検索対象とする。
また、ステップS2051において、Q(k)はタグであるが、そのインデックス種が「通常」である場合、問い合わせタスク中のその単語の参照データに含まれる文書番号を、クエリでk番目に位置する単語に関する検索対象とする。すなわち、タグ転置インデックスから作成された参照データ内の文書番号をそのまま検索対象とする。
問い合わせ表作成後、問い合わせ実行手段152は、問い合わせ表を基にして文書番号の読み込みを行い、クエリに応じた文書の文書番号を特定する(ステップS206)。この処理は、第1の実施形態と同様である。ただし、インデックス種が「通常」であるタグに関しては、文書番号が直接、問い合わせ表に含まれていて、ポインタはない。よって、そのタグに関しては、タグ文書番号記憶部13から文書番号を読み込まなくてもよい。そして、各タグおよび各単語の文書番号の積集合をとる。その他については、第1の実施形態と同様である。
以下、本実施形態における問い合わせ表の具体例を示す。例えば、クエリとして「[人名]の[名詞]」が入力されたとする。また、図16に例示するように、[人名]と[名詞]の各タグのインデックス種がそれぞれ「通常」、「位置管理」であるとする。この場合、問い合わせ表作成手段151は、[人名]に関しては、例えば図15に例示するタグ転置インデックスから、文書番号、開始位置、終了位置の組を全て抽出し、開始位置および終了位置の組毎に文書番号を分類し、参照データとする。また、[名詞]に関しては、タグ位置管理テーブルから参照データ(P,NP,REF,SAMP)を読み込み、参照データとする。また、「の」という単語については、単語インデックス記憶部14に記憶された単語インデックスを基に単語の参照データを作成する。問い合わせ表作成手段151は、その参照データを用いて、問い合わせタスクを作成し、さらに問い合わせ表を作成する。図17は、本実施形態における問い合わせ表の例を示す。本実施形態では、インデックス種が「通常」のタグに関する検索対象は文書番号であり、インデックス種が「位置管理」のタグに関する検索対象は、ポインタおよびリストにおける順位の範囲として表される。
第2の実施形態によれば、タグの管理方法を分けることができ、例えば、出現頻度が高いタグに関しては、そのようなタグの管理に適したタグ位置管理テーブルを用いて管理して、他のタグに関してはタグ転置インデックスで管理することができる。そして、タグの管理方法を分けることにより、登場頻度が少ないタグに関して、第1の実施形態より第2の実施形態の方が検索速度の低下を防止できる。
実施形態3.
図18は、本発明の第3の実施形態の文書検索システムの例を示すブロック図である。第1の実施形態と同様の構成要素については、図1と同一の符号を付し、詳細な説明を省略する。本実施形態の文書検索システムは、インデックス作成部11と、単語インデックス記憶部14と、タグ位置管理テーブル記憶部12と、タグ文書番号記憶部13と、文書検索部15と、N連結位置管理テーブル記憶部19とを備える。文書検索部15は、第1の実施形態と同様に、問い合わせ表作成手段151と、問い合わせ実行手段152と、結果登録手段153とを含む。
N連結位置管理テーブル記憶部19は、N連結位置管理テーブルを記憶する。以下の説明において、二つ以上の連続するタグまたは単語の組み合わせをN連結パターンと記す。N連結位置管理テーブルは、N連結パターンと、そのN連結パターンに該当する文字列の文書中での位置を示す連結パターン位置情報と、そのN連結パターンに該当する文字列を含む文書の文書番号のリストへのポインタと、文書番号サンプルデータとを含む情報である。すなわち、N連結位置管理テーブルは、タグまたは単語の組み合わせに関して、タグ位置管理テーブルと同様の情報を含んでいる。なお、文書中における文字列の位置を示す位置情報であって、N連結パターンに該当する文字列の文書中での位置を示す位置情報を連結パターン位置情報と記す。
図19は、N連結位置管理テーブルの例を示す説明図である。N連結位置管理テーブルにおいて、N連結パターンはタグ名や単語の組み合わせで表される。図19では、「[助詞][形容詞]」というN連結パターンを例示している。また、本例では、連結パターン位置情報が、そのN連結パターンに該当する文字列の文書中における開始位置および終了位置で表される場合を例にして説明する。開始位置および終了位置の表し方は、タグ位置管理テーブルと同様である。文書番号サンプルデータおよびポインタも、タグ位置管理テーブルにおける文書番号サンプルデータおよびポインタと同様である。N連結位置管理テーブルにおけるポインタは、N連結パターンに該当する文字列を含む文書番号のリスト(文書リスト)へのポインタである。その文書リストは、タグ文書番号記憶部13に記憶されている。文書番号サンプルデータは、N連結パターンに該当する文字列を含む文書の文書番号のリストに列挙された文書番号のうち、少なくとも最小の文書番号と最大の文書番号を含む複数の文書番号を、リストにおける文書番号の順位とともに記述した情報である。図19では、N連結パターンを記号PTで表し、他の要素についてはタグ位置管理テーブルの場合と同様に、P,NP,REF,SAMPの記号で示している。
図19に示す1行目の例では、「[助詞][形容詞]」というタグの連なりに該当する文字列(フレーズ)が第3位置から第6位置までに登場する文書の文書リストへのポインタが「nv0002」であることを示している。また、その文書リストにおいて、1番目の文書番号が「368」であり、100番目が「1310」であること等を示している。
問い合わせ表作成手段151は、入力されたクエリをN連結パターンと、N連結パターンに属さないタグと、N連結パターンに属さない単語とに分割する。そして、問い合わせ表作成手段151は、参照データにおける位置情報(開始位置Pおよび次開始位置NP)の連結性による各参照データの並びが、入力されたクエリ内におけるN連結パターンとそのN連結パターンに属さないタグおよび単語との並びと一致するように、クエリ内のN連結パターン、タグおよび単語に対応する参照データを一つずつ取り出し、問い合わせタスクを生成する。N連結パターンの参照データは、P,NP,REF,SAMPの組である。
問い合わせ表作成手段151は、N連結パターン、タグおよび単語の参照データから作成した問い合わせタスクを用いて、問い合わせ表を作成する。この結果、問い合わせ表には、N連結パターンに対応するポインタおよび検索対象と、N連結パターンに属さないタグに対応するポインタおよび検索対象と、単語に対応する文書番号の集合が記述される。
問い合わせ実行手段152は、その問い合わせ表に基づいて、クエリに応じた文書番号を求める。
結果登録手段153は、入力されたクエリがN連結パターンとして再利用できる可能性が高いか否かを判定し、再利用性が高いと判定した場合、そのクエリをN連結パターンとしてN連結位置管理テーブルを更新し、検索結果となった文書番号の集合を新たな文書リストとしてタグ文書番号記憶部13に記憶させる。
次に、本実施形態の動作について説明する。図20は、第3の実施形態の検索プロセスの例を示すフローチャートである。第1の実施形態と同様の動作については、同一の符号を付す。
問い合わせ表作成手段151は、クエリが入力されると、そのクエリをN連結パターンと、N連結パターンに属さないタグおよび単語とに分ける(ステップS201’)。問い合わせ表作成手段151は、ステップS201’において、入力されたクエリを単語とタグに分割する。そして、問い合わせ表作成手段151は、その分割したタグおよび単語のうち、隣接するタグまたは単語の組み合わせの中に、N連結位置管理テーブル内のN連結パターンPTと一致する組み合わせがあるか否かを判定し、一致する組み合わせがあれば、そのタグまたは単語の組み合わせを一つのN連結パターンとする。問い合わせ表作成手段151は、最長一致でこの処理を行い、より長いN連結パターンを優先的に作成する。この結果、クエリは、N連結パターンと、N連結パターンに属さないタグ(以下、単にタグと記す。)と、N連結パターンに属さない単語(以下、単に単語と記す。)とに分けられる。以下の説明では、入力されたクエリ内のN連結パターン、タグ、単語の数をN個としたときに、クエリ内のk番目のN連結パターン、タグ、または単語をQ(i)とする。ここで、0≦i<nである。
ステップS201’の次に、問い合わせ表作成手段151は、タグの参照データ抽出(ステップS202a)、および単語の参照データ抽出(ステップS202b)を行う。これらの動作は、第1の実施形態と同様である。
また、問い合わせ表作成手段151は、N連結パターンの参照データの抽出を行う(ステップS202c)。問い合わせ表作成手段151は、N連結位置管理テーブルから、PTがN連結パターンと等しい行の開始位置P、次開始位置NP、ポインタREF、および文書番号サンプルデータSAMPを読み込む。このP,NP,REF,SAMPの組がN連結パターンの参照データである。なお、この処理は、ステップS201’において、N連結位置管理テーブルを特定する際に同時に行ってもよい。
続いて、問い合わせ表作成手段151は、参照データにおける位置情報(開始位置Pおよび次開始位置NP)の連結性による各参照データの並びが、入力されたクエリ内におけるN連結パターン、タグ、および単語の並びと一致するように、クエリ内におけるN連結パターン、タグ、および単語に対応する参照データを一つずつ取り出し、問い合わせタスクを生成する(ステップS203)。この処理は、第1の実施形態で説明したステップS203の処理と同様であり、具体的には、ステップS2031以降の処理(図8参照)を行えばよい。
次に、問い合わせ表作成手段151は、問い合わせタスク内のN連結パターンおよびタグに関し、検索対象を限定して、問い合わせ表を作成する(ステップS205’)。この処理は、第1の実施形態における問い合わせ表作成処理と同様に図10に例示するフローに従って処理を行えばよいが、以下の点が第1の実施形態における問い合わせ表作成処理と異なる。
第1の実施形態では、ステップS2051でQ(k)がタグであるか否かを判定を判定していたが、本実施形態では、kによって指定されるQ(k)がN連結パターンまたはタグのいずれかに該当するか、あるいは、単語に該当するかを判定する。そして、Q(k)がN連結パターンまたはタグのいずれかに該当することを条件に、ステップS2052に移行する。
また、ステップS2054では、N連結パターンやタグの文書番号サンプルデータから取り出した二つの組(i番目およびi+1番目の組)の示す「文書リスト内におけるその文書番号の順位」の間の範囲を検索対象に含めるか否かを判定するが、この処理は、以下に示すルールによって行う。第1の実施形態で説明した場合と同様に、文書番号サンプルデータから二組ずつ取り出す「順位:文書番号」のうち、最初の方の組をサンプルデータ1と記し、後の方の組をサンプルデータ2と記す。また、サンプルデータ1における順位、文書番号をそれぞれ「順位1」、「文書番号1」と記す。同様に、サンプルデータ2における順位、文書番号をそれぞれ「順位2」、「文書番号2」と記す。
問い合わせ表作成手段151は、「順位1:文書番号1」および「順位2:文書番号2」における二つの文書番号の範囲が、入力されたクエリ内の他のタグまたはN連結パターンに対応する文書番号サンプルデータにおける文書番号の最小値と最大値の範囲内であり、その二つの文書番号の範囲内にクエリ内の単語に対応する文書番号が属していることを条件に、文書リスト中におけるその二つの文書番号の順位(上記の「順位1」および「順位2」)の間の範囲をタグや連結パターンに対する検索対象とすべきと判定する。
問い合わせ表作成手段151は、第1の実施形態で示した第1から第4までのルールと同様のルールによって、この判定を行うが、本実施形態では、第2および第3のルールとして、以下のルールを用いる。
すなわち、本実施形態における第2のルールは、「入力されたクエリQ内に他のタグまたはN連結パターンQ(t)があり、そのタグまたはN連結パターンの参照データS(t)の文書番号サンプルデータの最小値Min(最小文書番号)が『文書番号2<Min』という条件を満たす場合、Falseと判定する。」というルールである。
また、本実施形態における第3のルールは、「入力されたクエリQ内に他のタグまたはN連結パターンQ(t)があり、そのタグまたはN連結パターンの参照データS(t)の文書番号サンプルデータの最大値Max(最大文書番号)が『Max<文書番号1』という条件を満たす場合、Falseと判定する。」というルールである。
問い合わせ表作成処理に関し、他の点については第1の実施形態と同様である。
問い合わせ表作成後、問い合わせ実行手段152は、問い合わせ表を基にして文書番号の読み込みを行うことにより、入力されたクエリに応じた文書の文書番号を特定する(ステップS206’)。問い合わせ実行手段152は、問い合わせ表における位置(開始位置および終了位置)に応じた検索対象の中にタグまたはN連結パターンの検索対象(ポインタおよび文書リスト内での順位の範囲)が含まれている場合、その検索対象が示す文書番号を読み込む。問い合わせ表における開始位置および終了位置の組が共通である各タグおよび各N連結パターン毎に文書番号を読み込んだならば、開始位置および終了位置の組が共通である単語、タグ、N連結パターンそれぞれの文書番号の積集合をとり、その文書番号の積集合を検索結果として、開始位置および終了位置とともに出力する。この処理を、問い合わせ表の各行毎に行えばよい。
クエリに対する検索結果として文書番号が特定された後、結果登録手段153は、検索結果をタグ文書番号記憶部13に記憶させるとともにそのクエリを新たなN連結パターンとしてN連結位置管理テーブルを更新するか否かを判定する(ステップS208)。クエリのN連結パターンとしての再利用性が高い場合には、タグ文書番号記憶部13およびN連結位置管理テーブル記憶部19の更新を行うこととすればよいが、具体的な判定基準は特に限定されない。以下に、この判定処理の例を示す。ただし、以下に例示する判定処理において、N連結パターンに属するか否かを問わずにクエリ内の要素をタグ、単語として記す。
結果登録手段153は、入力されたクエリがタグのみで構成されるクエリであることを条件に、タグ文書番号記憶部13およびN連結位置管理テーブル記憶部19を更新すると判定してもよい。
また、結果登録手段153は、入力されたクエリに含まれるタグまたは単語の長さ(個数)が閾値(例えば、2など)以下であることを条件に、タグ文書番号記憶部13およびN連結位置管理テーブル記憶部19を更新すると判定してもよい。
また、結果登録手段153は、検索結果における登場位置リスト内の登場リストの数(検索された文書番号数)が閾値(例えば、100000件など)以上であることを条件に、タグ文書番号記憶部13およびN連結位置管理テーブル記憶部19を更新すると判定してもよい。
また、結果登録手段153は、検索にかかった時間を計測しておき、検索時間(例えば、クエリの入力から検索結果出力までの時間)が閾値(例えば100秒以上)であることを条件に、タグ文書番号記憶部13およびN連結位置管理テーブル記憶部19を更新すると判定してもよい。
タグ文書番号記憶部13およびN連結位置管理テーブル記憶部19を更新すると判定した場合、結果登録手段153は、検索に用いた問い合わせ表における開始位置および終了位置の組毎に、検索結果として得た文書番号の集合をタグ文書番号記憶部13に記憶させ、新たにポインタを定める。ここで記憶された文書番号の集合が文書リストとなる。結果登録手段153は、その文書リストの中から文書番号をサンプリングし、文書番号サンプルデータを作成する。文書リストにおける文書番号の最小値および最大値は文書番号サンプルデータに含まれる。このサンプリング方法は、例えば、第1の実施形態で例示したインデックス作成部11によるサンプリング方法と同様である。結果登録手段153は、クエリ、開始位置、終了位置(次開始位置)、ポインタ、および文書番号サンプルデータをそれぞれPT,P,NP,REF,SAMPとしてN連結位置管理テーブル記憶部19に記憶させる。
また、以上の説明では、N連結パターンがタグまたは単語の組み合わせである場合を例にして説明したが、N連結パターンに単語が含まれず、タグの組み合わせをN連結パターンとしてもよい。その場合、文書検索システムは、単語インデックス記憶部14を備えていなくてもよい。また、問い合わせ表作成手段151は、ステップS201’では、入力されたクエリをタグに分け、その分割したタグのうち、隣接するタグの組み合わせの中にN連結位置管理テーブル内のN連結パターンPTと一致する組み合わせがあるか否かを判定し、一致する組み合わせがあれば、そのタグの組み合わせを一つのN連結パターンとすればよい。この結果、クエリは、N連結パターンと、N連結パターンに属さないタグとに分けられる。また、この場合、ステップS202bの処理は行わずに、ステップS202a,S202cを行った後にステップS203に移行すればよい。
また、ステップS2054の判定処理では、文書番号サンプルデータの先頭から順番に二組ずつ取り出す「順位1:文書番号1」および「順位2:文書番号2」に対して、第3の実施形態で述べた第2のルールと第3のルールのいずれかに該当するか否かを判定し、いずれかに該当するならば「順位1」から「順位2」までの範囲を検索対象とせず、第2のルールと第3のルールのいずれにも該当しない場合には「順位1」から「順位2」までの範囲を検索対象と定めればよい。
このようにして、問い合わせ表作成手段151は、「順位1:文書番号1」および「順位2:文書番号2」における二つの文書番号の範囲が、入力されたクエリ内の他のタグまたはN連結パターンに対応する文書番号サンプルデータにおける文書番号の最小値と最大値の範囲内であることを条件に、文書リスト中におけるその二つの文書番号の順位(上記の「順位1」および「順位2」)の間の範囲をタグに対する検索対象と定める。
他の点については、N連結パターンに単語が含まれる場合と同様である。
以下に本実施形態の処理の具体例を示す。本例では、N連結位置管理テーブルに何も登録されていない場合を例にする。「[助詞][形容詞]」というクエリが入力されたとする。この場合、クエリからN連結パターンが得られることはなく、問い合わせ表作成手段151および問い合わせ実行手段152は第1の実施形態と同様に検索結果を導く。また、クエリがタグのみからなることにより、結果登録手段153が、タグ文書番号記憶部13およびN連結位置管理テーブル記憶部19を更新すると判定したとする。
結果登録手段153は、検索時に作成された問い合わせ表の開始位置および終了位置の組毎に、文書番号の集合(文書リスト)をタグ文書番号記憶部13に記憶させてポインタを定め、また、文書番号サンプルデータを作成する。そして、「[助詞][形容詞]」、開始位置、終了位置(次開始位置)、ポインタ、文書番号サンプルデータをN連結位置管理テーブル記憶部19に記憶させる。この結果、図19に例示するN連結位置管理テーブルが記憶されたとする。
また、図19に例示するN連結位置管理テーブルが作成されたのち、「運動会[助詞][形容詞][名詞]」というタグが入力されたとする。このクエリのうち「[助詞][形容詞]」の部分は、N連結位置管理テーブルに登録されている。従って、問い合わせ表作成手段151は、入力されたクエリを「運動会」と、「[助詞][形容詞]」と、「[名詞]」とに分解する。問い合わせ表作成手段151は、「運動会」の参照データを単語インデックス記憶部14に記憶された単語転置インデックスから抽出し、「[助詞][形容詞]」の参照データをN連結位置管理テーブルから抽出し、「[名詞]」の参照データをタグ位置管理テーブルから抽出し、問い合わせタスク、問い合わせ表を作成する。そして、問い合わせ実行手段152がその問い合わせ表で検索結果を導く。
本実施形態では、一般的に利用されることが多いパターン(上記の例における[助詞][形容詞]等)について検索を行ったときに、検索で得られた文書リストをタグ文書管理記憶部13に記憶させるとともに、検索時のクエリ、連結パターン位置情報(開始位置および終了位置)、ポインタ、文書番号サンプルデータをN連結位置管理テーブルに登録する。そして、次回の検索時に、そのN連結パターンを含むクエリが入力されたときには、そのパターンに対応する参照データを抽出し、問い合わせタスクおよび問い合わせ表を生成する。従って、N連結パターン内の単語やタグ毎に参照データを抽出する必要がなく、また、検索時の文書番号の読み込み量を少なくすることができる。よって、検索処理を高速化することができる。
また、第3の実施形態に、第2の実施形態を適用し、タグ管理テーブル記憶部16およびタグ転置インデックス記憶部17(図14参照)を備える構成としてもよい。そして、タグ毎にインデックス種を定め、N連結パターンに属さないタグの参照データ抽出をインデックス種に応じて行ってもよい。
次に、本発明の概要について説明する。図21は、本発明の概要を示すブロック図である。本発明の文書検索システムは、文書番号記憶手段91と、タグ位置管理手段92と、タグを含むクエリに応じて文書を検索する検索手段93とを備える。
文書番号記憶手段91(例えば、タグ文書番号記憶部13)は、文書の文書番号のリストを、そのリストを示すポインタと関連付けて記憶する。
タグ位置管理手段92(例えば、タグ位置管理テーブル記憶部12)は、文書中の単語の属性を示すタグと、そのタグに該当する単語の文書中での位置を示す位置情報と、そのタグに該当する単語を含む文書の文書番号のリストへのポインタと、その文書番号のリストのうち少なくとも最小文書番号および最大文書番号を含む複数の文書番号をリストにおける文書番号の順位とともに記述した文書番号サンプルデータとを記憶する。
また、検索手段93(例えば、文書検索部15)は、問い合わせ情報生成手段94と、検索実行手段95とを備える。
問い合わせ情報生成手段94(例えば、問い合わせ表作成手段151)は、文書番号記憶手段91およびタグ位置管理手段92が記憶している情報に基づいて、クエリに該当する文字列の文書中での位置と、クエリ中の各タグに関する検索対象とを含む情報である問い合わせ情報(例えば、問い合わせ表)を生成する。
検索実行手段95は、問い合わせ情報で定められた各タグ毎の検索対象の積集合を求める。
また、問い合わせ情報生成手段94が、タグを含むクエリに対して、クエリ内のタグ毎に、タグに対応する位置情報、ポインタ、および文書番号サンプルデータをタグ位置管理手段92から読み込み、位置情報で示される並びがクエリ内のタグの並びと一致しているそれぞれのタグに対応するポインタおよび文書番号サンプルデータを含むとともにクエリに該当する文字列の文書中での位置を含む問い合わせタスクを生成し、問い合わせタスク中のタグ毎に、文書番号サンプルデータが示す文書番号を番号順に二つずつ取り出し、その二つの文書番号の範囲が他のタグに対応する文書番号サンプルデータにおける最小文書番号と最大文書番号の範囲内であることを条件に、二つの文書番号のリスト中における順位の間の範囲をタグに関する検索対象として定め、クエリに該当する文字列の文書中での位置とタグ毎の検索対象とを含む問い合わせ情報を生成する構成であってもよい。
単語と、単語を含む文書の文書番号と、文書中での単語の位置を示す位置情報とを記憶する単語インデックス記憶手段(例えば、単語インデックス記憶部14)を備え、問い合わせ情報生成手段94が、タグおよび単語を含むクエリに対して、クエリ内のタグ毎に、タグに対応する位置情報、ポインタ、および文書番号サンプルデータをタグ位置管理手段92から読み込み、クエリ内の単語毎に、文書番号および位置情報を単語インデックス記憶手段から読み込み、位置情報で示される並びがクエリ内のタグおよび単語の並びと一致しているそれぞれのタグに対応するポインタおよび文書番号サンプルデータを含み、位置情報で示される並びがクエリ内のタグおよび単語の並びと一致しているそれぞれの単語に対応する文書番号を含むとともにクエリに該当する文字列の文書中での位置を含む問い合わせタスクを生成し、問い合わせタスク中のタグ毎に、文書番号サンプルデータが示す文書番号を番号順に二つずつ取り出し、その二つの文書番号の範囲が他のタグに対応する文書番号サンプルデータにおける最小文書番号と最大文書番号の範囲内であり、その二つの文書番号の範囲内にクエリ内の単語に対応する文書番号が属していることを条件に、二つの文書番号のリスト中における順位の間の範囲をタグに関する検索対象として定め、クエリに該当する文字列の文書中での位置と各タグ毎の検索対象とを含み、問い合わせタスクでそれぞれの単語に対応する文書番号として定められた文書番号をそれぞれの単語に関する検索対象として含む問い合わせ情報を生成し、検索実行手段95が、タグおよび単語を含むクエリに対して、問い合わせ情報で定められた各タグおよび各単語毎の検索対象の積集合を求める構成であってもよい。
二つ以上の連続するタグまたは単語の組み合わせである連結パターン(例えば、第3の実施形態におけるN連結パターン)と、連結パターンに該当する文字列の文書中での位置を示す位置情報と、連結パターンに該当する文字列を含む文書の文書番号のリストへのポインタと、文書番号のリストのうち少なくとも最小文書番号および最大文書番号をリストにおける文書番号の順位とともに記述した文書番号サンプルデータとを記憶するN連結位置管理手段(例えば、N連結位置管理テーブル記憶部19)を備え、問い合わせ情報生成手段94が、N連結位置管理手段が記憶する連結パターンを含むクエリを、連結パターンと、連結パターンに属さないタグと、連結パターンに属さない単語とに分解し、連結パターンに対応する位置情報、ポインタ、および文書番号サンプルデータをN連結位置管理手段から読み込み、連結パターンに属さないタグ毎に、タグに対応する位置情報、ポインタ、および文書番号サンプルデータをタグ位置管理手段92から読み込み、連結パターンに属さない単語毎に、文書番号および位置情報を単語インデックス記憶手段から読み込み、位置情報で示される並びがクエリ内のタグと単語と連結パターンの並びと一致しているそれぞれの連結パターンに対応するポインタおよび文書番号サンプルデータと、位置情報で示される並びがクエリ内のタグと単語と連結パターンの並びと一致しているそれぞれのタグに対応するポインタおよび文書番号サンプルデータと、位置情報で示される並びがクエリ内のタグと単語と連結パターンの並びと一致しているそれぞれの単語に対応する文書番号とを含むとともにクエリに該当する文字列の文書中での位置を含む問い合わせタスクを生成し、問い合わせタスク中の連結パターンおよび連結パターンに属さないタグ毎に、文書番号サンプルデータが示す文書番号を番号順に二つずつ取り出し、その二つの文書番号の範囲が他のタグまたは連結パターンに対応する文書番号サンプルデータにおける最小文書番号と最大文書番号の範囲内であり、その二つの文書番号の範囲内にクエリ内の単語に対応する文書番号が属していることを条件に、二つの文書番号のリスト中における順位の間の範囲を連結パターンまたはタグに関する検索対象と定め、クエリに該当する文字列の文書中での位置と各タグおよび各連結パターンの検索対象とを含み、問い合わせタスクでそれぞれの単語に対応する文書番号として定められた文書番号をそれぞれの単語に関する検索対象として含む問い合わせ情報を生成し、検索実行手段95が、タグと単語と連結パターンとを含むクエリに対して、問い合わせ情報で定められた各タグ、各単語および各連結パターン毎の検索対象の積集合を求める構成であってもよい。そのような構成によれば、検索実行手段95が文書番号を読み込むタグ等が連結パターンとしてまとめられるので、検索処理を高速化することができる。
また、タグを組み合わせた連結パターン(例えば、N連結パターン)と、連結パターンに該当する文字列の文書中での位置を示す位置情報と、連結パターンに該当する文字列を含む文書の文書番号のリストへのポインタと、文書番号のリストのうち少なくとも最小文書番号および最大文書番号をリストにおける文書番号の順位とともに記述した文書番号サンプルデータとを記憶するN連結位置管理手段(例えば、N連結位置管理テーブル記憶部19)を備え、問い合わせ情報生成手段94が、N連結位置管理手段が記憶する連結パターンを含むクエリを、連結パターンと、連結パターンに属さないタグとに分解し、連結パターンに対応する位置情報、ポインタ、および文書番号サンプルデータをN連結位置管理手段から読み込み、連結パターンに属さないタグ毎に、タグに対応する位置情報、ポインタ、および文書番号サンプルデータをタグ位置管理手段92から読み込み、位置情報で示される並びがクエリ内のタグと連結パターンの並びと一致しているそれぞれの連結パターンに対応するポインタおよび文書番号サンプルデータと、位置情報で示される並びがクエリ内のタグと連結パターンの並びと一致しているそれぞれのタグに対応するポインタおよび文書番号サンプルデータとを含むとともにクエリに該当する文字列の文書中での位置を含む問い合わせタスクを生成し、問い合わせタスク中の連結パターンおよび連結パターンに属さないタグ毎に、文書番号サンプルデータが示す文書番号を番号順に二つずつ取り出し、その二つの文書番号の範囲が他のタグまたは連結パターンに対応する文書番号サンプルデータにおける最小文書番号と最大文書番号の範囲内であることを条件に、その二つの文書番号のリスト中における順位の間の範囲を連結パターンまたはタグに関する検索対象と定め、そのクエリに該当する文字列の文書中での位置と各タグおよび各連結パターンの検索対象を含む問い合わせ情報を生成し、検索実行手段95が、タグと連結パターンとを含むクエリに対して、問い合わせ情報で定められた各タグおよび各連結パターン毎の検索対象の積集合を求める構成であってもよい。
また、クエリに対する検索結果である文書番号のリストを、リストを示すポインタと関連付けて文書番号記憶手段91に記憶させ、クエリと、クエリに該当する文字列の文書中での位置を示す位置情報と、ポインタと、リストに関する文書番号サンプルデータとをN連結位置管理手段に記憶させる検索結果登録手段(例えば、結果登録手段153)を備える構成であってもよい。
また、タグと、タグに該当する単語を含む文書の文書番号と、文書中でのタグに該当する単語の文書中での位置を示す位置情報とを記憶するタグ転置インデックス記憶手段(例えば、タグ転置インデックス記憶部17)と、タグに該当する単語を含む文書の文書番号がタグ転置インデックス記憶手段に記憶されているか文書番号記憶手段91に記憶されているかをタグ毎に定めたタグ種別情報(例えば、タグ管理テーブル)を記憶する種別記憶手段(例えば、タグ管理テーブル記憶部16)とを備え、問い合わせ情報生成手段94は、クエリ内のタグのうち、タグに該当する単語を含む文書の文書番号がタグ転置インデックス記憶手段に記憶されているタグをタグ種別情報によって判定し、タグに関する検索対象として、タグ転置インデックス記憶手段に記憶されているタグに該当する単語を含む文書の文書番号を定める構成であってもよい。そのような構成によれば、タグの管理方法を分けることができる。