(57)【特許請求の範囲】
【請求項１】
メモリとＣＰＵを備えたコンピュータで動作する情報索引装置であって、文字列と該文字列を識別する識別子を対応させた複数のｓｕｆｆｉｘを前記メモリに記憶した文字列バッファと、複数のｓｕｆｆｉｘを構成する文字又は文字列を辞書順にならべるとともに、各ｓｕｆｆｉｘを構成する文字又は文字列は出現確率と累積確率を対応させて前記メモリに記憶された出現度表と、前記文字列バッファ中の各ｓｕｆｆｉｘに対して、該ｓｕｆｆｉｘに含まれる前記出現度表中のｓｕｆｆｉｘを構成する文字又は文字列に対応する出現確率と累積確率に基づいて分類番地を算出する番地算出部と、前記文字列バッファ中の各ｓｕｆｆｉｘに対して、前記番地算出部が算出した分類番地に該ｓｕｆｆｉｘの識別子を対応させて分類表として前記メモリに記憶させる分類部と、前記分類表中の分類番地をキーとして整列して索引表として前記メモリに記憶させる整列部とを有することを特徴とする情報索引装置。
【請求項２】
メモリとＣＰＵを備えたコンピュータで動作する情報索引装置であって、文字列と該文字列を識別する識別子を対応させた複数のｓｕｆｆｉｘを前記メモリに記憶した文字列バッファと、複数のｓｕｆｆｉｘを構成する文字又は文字列を辞書順にならべるとともに、各ｓｕｆｆｉｘを構成する文字又は文字列は出現確率と圧縮符号を対応させて前記メモリに記憶された圧縮符号表と、前記文字列バッファ中の各ｓｕｆｆｉｘに対して、該ｓｕｆｆｉｘに含まれる前記圧縮符号表中のｓｕｆｆｉｘを構成する文字又は文字列に対応する圧縮符号に基づいて分類番地を算出する番地算出部と、前記文字列バッファ中の各ｓｕｆｆｉｘに対して、前記番地算出部が算出した分類番地に該ｓｕｆｆｉｘの識別子を対応させて分類表として前記メモリに記憶させる分類部と、前記分類表中の分類番地をキーとして整列して索引表として記憶させる整列部とを有することを特徴とする情報索引装置。
【請求項３】
前記番地算出部は、前記文字列バッファ中のｓｕｆｆｉｘの内、ｓｕｆｆｉｘを構成する先頭の文字列が所定の文字列についてのみ分類番地を算出することを特徴とする請求項１又は２記載の情報索引装置。
【請求項４】
前記番地算出部は、前記文字列バッファ中のｓｕｆｆｉｘに対応させて算出した分類番地を番地バッファに記憶することを特徴とする請求項３記載の情報索引装置。
【請求項５】
前記文字列バッファに記憶する各ｓｕｆｆｉｘに分類コードを対応させて記憶させておき、前記分類コードに応じて前記文字列バッファ中のｓｕｆｆｉｘを複数のグループに分割する内容分割部を有し、前記グループ毎に前記索引表を作成することを特徴とする請求項１乃至４のいずれかに記載の情報索引装置。
【請求項６】
前記文字列バッファに記憶する各ｓｕｆｆｉｘに時系列の分類コードを対応させて記憶させておき、前記時系列の分類コードに応じて前記文字列バッファ中のｓｕｆｆｉｘを複数のグループに分割する時系列分割部を有し、前記グループ毎に前記索引表を作成することを特徴とする請求項１乃至４のいずれかに記載の情報索引装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、情報索引装置、より詳細には、情報検索システム、情報管理システム等において使用される情報検索技術に関する。
【０００２】
【従来の技術】
テキストや画像は文字コードまたは画素の系列として計算機中に表現することができる。これらの系列をここでは文字列と呼び、その最小構成単位を文字と呼ぶ。既知の文字列Ｓ１に対して、ある文字列Ｓ２が文字列Ｓ１中のどの位置に出現しているかを求めるために、従来より文字列Ｓ１から索引を構成し、この索引を利用することで時間的効率化が図られている。
【０００３】
Suffix array（Udi Manber,Gene Myers."Suffix Arrays:ＡNew Method for On-line String Searches",1st ACM-SLAM Symposium on Discrete Algorithms”，ｐｐ．３１９−２３７，１９９０）は上記の索引の一種である。以下に、例として、文字列“ａａ．ｂｂ．ｃｃｃｃ”に対してｓｕｆｆｉｘ  ａｒｒａｙを構成する様子を説明する。ただし、文字列の末尾を表す仮想文字として＃を用い、これを合わせた文字列“ａａ．ｂｂ．ｃｃｃｃ＃”を対象とする。また、この文字列は４つの文字｛ａ，ｂ，ｃ，．，＃｝により構成され、これらの文字を辞書順に整列すると“＃．ａｂｃ”となることを前提とする。
【０００４】
ｓｔｅｐ１：表１に示す文字列“ａａ．ｂｂ．ｃｃｃｃ”に対し、先頭から一文字づつ除いてできる部分文字列（ｓｕｆｆｉｘと呼ぶ）を得る。表１に示す例の場合、１０個のｓｕｆｆｉｘを得る。ただし、各ｓｕｆｆｉｘには、元の文字列中での出現位置（先頭からのオフセット）が対応づけられているものとする。例えば、ｓｕｆｆｉｘ“ｃｃ”は、元の文字列の先頭から７番めの位置に出現している。
【０００５】
【表１】
0004208326.tif 000002
【０００６】
ｓｔｅｐ２：表１に示したｓｕｆｆｉｘの集合を辞書順に整列して、表２を得る。
【０００７】
【表２】
0004208326.tif 000003
【０００８】
表２の先頭欄にある出現位置の列である表３が求めるｓｕｆｆｉｘ  ａｒｒａｙである。
【０００９】
【表３】
0004208326.tif 000004
【００１０】
元の文字列“ａａ．ｂｂ．ｃｃｃｃ”に対し文字列“ｂ”の出現位置を全て求める（つまり検索する）には、上記のｓｕｆｆｉｘ  ａｒｒａｙ上で二分探索を行えばよい。
【００１１】
【発明が解決しようとする課題】
ｓｕｆｆｉｘ  ａｒｒａｙは一次元配列という単純な構造、高速な情報検索を可能にする等の長所を持つが、上記ｓｔｅｐ２の文字列の整列に多大な計算時間と記憶量を要し、大規模な文字列については実用問題がある。
【００１２】
本発明は、上述のごとき実情に鑑みてなされたもので、上記問題のうち計算時間の問題、記憶量の負荷を軽減すること、索引更新の負荷を軽減することを解決することを課題とする。
【００１５】
【課題を解決するための手段】
請求項１の発明は、メモリとＣＰＵを備えたコンピュータで動作する情報索引装置であって、文字列と該文字列を識別する識別子を対応させた複数のｓｕｆｆｉｘを前記メモリに記憶した文字列バッファと、複数のｓｕｆｆｉｘを構成する文字又は文字列を辞書順にならべるとともに、各ｓｕｆｆｉｘを構成する文字又は文字列は出現確率と累積確率を対応させて前記メモリに記憶された出現度表と、前記文字列バッファ中の各ｓｕｆｆｉｘに対して、該ｓｕｆｆｉｘに含まれる前記出現度表中のｓｕｆｆｉｘを構成する文字又は文字列に対応する出現確率と累積確率に基づいて分類番地を算出する番地算出部と、前記文字列バッファ中の各ｓｕｆｆｉｘに対して、前記番地算出部が算出した分類番地に該ｓｕｆｆｉｘの識別子を対応させて分類表として前記メモリに記憶させる分類部と、前記分類表中の分類番地をキーとして整列して索引表として前記メモリに記憶させる整列部とを有することを特徴とする。
【００１７】
請求項２の発明は、メモリとＣＰＵを備えたコンピュータで動作する情報索引装置であって、文字列と該文字列を識別する識別子を対応させた複数のｓｕｆｆｉｘを前記メモリに記憶した文字列バッファと、複数のｓｕｆｆｉｘを構成する文字又は文字列を辞書順にならべるとともに、各ｓｕｆｆｉｘを構成する文字又は文字列は出現確率と圧縮符号を対応させて前記メモリに記憶された圧縮符号表と、前記文字列バッファ中の各ｓｕｆｆｉｘに対して、該ｓｕｆｆｉｘに含まれる前記圧縮符号表中のｓｕｆｆｉｘを構成する文字又は文字列に対応する圧縮符号に基づいて分類番地を算出する番地算出部と、前記文字列バッファ中の各ｓｕｆｆｉｘに対して、前記番地算出部が算出した分類番地に該ｓｕｆｆｉｘの識別子を対応させて分類表として前記メモリに記憶させる分類部と、前記分類表中の分類番地をキーとして整列して索引表として記憶させる整列部とを有することを特徴とする。
【００１９】
請求項３の発明は、請求項１又は２の発明において、前記番地算出部は、前記文字列バッファ中のｓｕｆｆｉｘの内、ｓｕｆｆｉｘを構成する先頭の文字列が所定の文字列についてのみ分類番地を算出することを特徴とする。
【００２１】
請求項４の発明は、請求項３の発明において、前記番地算出部は、前記文字列バッファ中のｓｕｆｆｉｘに対応させて算出した分類番地を番地バッファに記憶することを特徴とする。
【００２２】
請求項５の発明は、請求項１乃至３のいずれかの発明において、前記文字列バッファに記憶する各ｓｕｆｆｉｘに分類コードを対応させて記憶させておき、前記分類コードに応じて前記文字列バッファ中のｓｕｆｆｉｘを複数のグループに分割する内容分割部を有し、前記グループ毎に前記索引表を作成することを特徴とする。
【００２３】
請求項６の発明は、請求項１乃至４のいずれかの発明において、前記文字列バッファに記憶する各ｓｕｆｆｉｘに時系列の分類コードを対応させて記憶させておき、前記時系列の分類コードに応じて前記文字列バッファ中のｓｕｆｆｉｘを複数のグループに分割する時系列分割部を有し、前記グループ毎に前記索引表を作成することを特徴とする。
【００２５】
【発明の実施の形態】
（請求項１の発明）
図１は、請求項１の発明の情報索引装置の一実施形態を説明するための要部構成図で、図中、１は文字列集合を記憶する文字列バッファ、２は辞書順に文字列の出現度を記憶する出現度表、３は文字列バッファ１中の文字列に対して出現度表２から分類番地を算出する番地算出部、４は文字列バッファ１中の文字列を番地計算部３が算出した分類番地に従い分類表５中に対応づける分類部、５は文字列の分類に用いる分類表、６は分類表５中の文字列をその分類番地に従い辞書順に整列する整列部である。
【００２６】
図２は、図１に示した情報索引装置の動作説明をするためのフロー図で、以下のｓｔｅｐ１〜４からなる。
ｓｔｅｐ１：番地算出部３は、文字列バッファ１から文字列Ｓと、その識別子ｉを取り出す。
ｓｔｅｐ２：番地算出部３は、文字列Ｓと出現度表２から分類番地ｊを算出する。
ｓｔｅｐ３：分類部４は、分類表５中の分類番地ｊの位置に文字列Ｓの識別子ｉを格納する。以上の、ｓｔｅｐ１−ｓｔｅｐ３を文字列バッファ１中の全ての文字に対して繰り返す。
ｓｔｅｐ４：整列部６は、分類表５の先頭から末尾にかけて操作し、文字列の識別子を検出する度に、その識別子に対応する文字列バッファ中の文字列を出力する。
【００２７】
以上の動作ステップに沿った具体例として、文字列“ａａ．ｂｂ．ｃｃｃｃ”から得られるｓｕｆｆｉｘ（文字列）の集合を整列する場合の過程を示す。まず、この文字列は４つの文字｛ａ，ｂ，ｃ，．，＃｝により構成され、これらの文字を辞書順に整列すると“＃．ａｂｃ”となることを前提とし、表４に示すように、これらの文字の出現度が出現度表にそれらの辞書順に格納されているものとする。出現度として、予め定めた各文字の出現確率と、それを辞書順に累積して得られる累積確率を用いる。
【００２８】
【表４】
0004208326.tif 000005
【００２９】
上記の例では、文字の出現度を用いているが、一般には、隣接するｎ個の文字（つまり文字ｎ−ｇｒａｍ）等、文字列の出現度を用いても良い。また、文字列バッファ中に、表５に示すようにｓｕｆｆｉｘが格納されているものとする。最初の欄の番号が各ｓｕｆｆｉｘの識別子に相当する。また、ｓｕｆｆｉｘは元の文字列の末尾から先頭に向けた順番に格納している。
【００３０】
【表５】
0004208326.tif 000006
【００３１】
番地算出部３は、文字列バッファ１の先頭から順に各ｓｕｆｆｉｘを取り出し、その番地を算出する。最初はｓｕｆｆｉｘ“ｃ”が取り出され、その識別子は９である。
【００３２】
一般に、文字列Ｓの番地は、以下の式（１）から算出される。
文字列Ｓの番地＝文字列Ｓの相対番地×スケール            …式（１）
ここで、スケールとは分類表の大きさであり、この例では１００とする。以降、文字列Ｓ＝ｓｉ，ｓｉ＋１，‥ｓｊ（ｓｉは文字）をＳ［ｉ，ｊ］で表す。文字列Ｓ＝Ｓ［ｉ，ｎ］の相対番地は以下の式（２）から再帰的に算出される。ただし、文字ｓｉの出現確率をＰ（ｓｉ）、累積確率をＣ（ｓｉ）とする。また、Ｓ［ｎ，ｎ］の相対番地は０.０とする。
0004208326.tif 000007
【００３３】
よって、最初のｓｕｆｆｉｘ“ｃ”の番地は、
ｓｕｆｆｉｘ“ｃ”の相対番地＝０.６＋０.４×０＝０.６
ｓｕｆｆｉｘ“ｃ”番地＝０.６×１００＝６０.０
次のｓｕｆｆｉｘ“ｃｃ”の番地は、
ｓｕｆｆｉｘ“ｃｃ”の相対番地＝０.６＋０.４×０.６＝０.８４
ｓｕｆｆｉｘ“ｃｃ”番地＝０.８４×１００＝８４
のようになる。ただし、分類番地は分類表の位置であるので、上記のように算出された番地を、小数点以下を切り下げることで得た整数番地を実際には使用する。
【００３４】
表６に、全てのｓｕｆｆｉｘに対して算出される相対番号と整数化された分類番地を示す。分類部４は、番地算出部３が分類番地を算出する度に、分類表５の該当する番地にｓｕｆｆｉｘの識別子を格納する。ただし、分類表５の各要素は全体は予め−１に初期化されているものとする。よって、最終的に表７の分類表を得る（ただし、以下では初期値（−１）以外の値が格納されている部分のみを示す）。
【００３５】
【表６】
0004208326.tif 000008
【００３６】
【表７】
0004208326.tif 000009
【００３７】
整列部６は、分類表５を先頭から末尾にかけて走査し、初期値以外の値が格納されている場合は、その識別子を出力する。このように整列部６から出力された識別子は、ｓｕｆｆｉｘ  ａｒｒａｙの各要素に対応する（つまり対応する文字列の辞書順に整列されている）。また、この例では出現確率を用いているので、出現度が高いほど上記の相対番地の少数を表現するための桁数を消費せず、必要となる分類表の大きさ（スケール）の増大を最小限にできる。
【００３８】
図３は、情報索引装置の他の実施形態を説明するための要部構成図で、図中、１は文字列集合を記憶する文字列バッファ、２は辞書順に文字列の出現度を記憶する出現度表、３は文字列バッファ１中の文字列に対し出現度表２から分類番地を算出する番地算出部、４は文字列バッファ１中の文字列を番地算出部３が算出した分類番地に従い分類表５中に対応づける分類部、５は文字列の分類に用いる分類表、６は分類表５中の文字列をその分類番地に従い辞書順に整列する整列部、７は文字列の出現度を文字列バッファ中の文字列から算出する出現度算出部で、この発明は、図１に示した請求項１の発明に出現度算出部７を設けたものである。
【００３９】
図４は、図３に示した情報索引装置の動作説明をするためのフロー図で、以下のｓｔｅｐ０〜４からなる。
ｓｔｅｐ０：出現度算出部７は、文字列バッファ１中の文字列から文字列の出現度を算出し出現度表２に格納する。
ｓｔｅｐ１：番地算出部３は、文字列バッファ１から文字列Ｓと、その識別子ｉを取り出す。
ｓｔｅｐ２：番地算出部３は、文字列Ｓと出現度表２から分類番地ｊを算出する。
ｓｔｅｐ３：分類部４は、分類表５中の分類番地ｊの位置に文字列のＳの識別子ｉを格納する。以上の、ｓｔｅｐ１−ｓｔｅｐ３を文字列バッファ１中の全ての文字に対して繰り返す。
ｓｔｅｐ４：整列部６は、分類表５の先頭から末尾にかけて操作し、文字列の識別子を検出する度に、その識別子に対応する文字列バッファ１中の文字列を出力する。
【００４０】
ｓｔｅｐ１以降は、請求項１の発明と同様の動作となる。出現度表２の出現度は、処理対象となる文字列バッファ１中の文字列集合から算出した方が前述のスケール（つまり分類表の大きさ）を小さくでき、記憶量を節約できる。ｓｔｅｐ０は、文字列バッファ１中の文字列を一つずつ取り出し、それを構成する文字の頻度及び全文字数を計算し、最終的に前述した出現度表２の値を求める。すなわち、出現確率は、各文字の出現頻度を全文字数で割ることで得られる。
【００４１】
（請求項２の発明）
図５は、請求項２の情報索引装置の一実施形態を説明するための要部構成図で、図中、１は文字列集合を記憶する文字列バッファ、８は辞書順に文字列の圧縮符号を記憶する圧縮符号表、３は文字列バッファ１中の文字列に対し圧縮符号表８から分類番地を算出する番地算出部、４は文字列バッファ１中の文字列を番地算出部３が算出した分類番地に従い分類表５中に対応づける分類部、５は文字列の分類に用いる分類表、６は分類表５中の文字列をその分類番地に従い辞書順に整列する整列部で、この発明は、図１に示した実施例における出現度表２に代わって圧縮符号表８を用いたものである。
【００４２】
図６は、図５に示した情報索引装置の動作説明をするためのフロー図で、以下のｓｔｅｐ１〜４からなる。
ｓｔｅｐ１：番地算出部３は、文字列バッファ１から文字列Ｓと、その識別子ｉを取り出す。
ｓｔｅｐ２：番地算出部３は、文字列Ｓと圧縮符号表８から分類番地ｊを算出する。
ｓｔｅｐ３：分類部４は、分類表５中の分類番地ｊの位置に文字列のＳの識別子ｉを格納する。以上ｓｔｅｐ１−ｓｔｅｐ３を文字列バッファ１中の全ての文字に対して繰り返す。
ｓｔｅｐ４：整列部６は、分類表５の先頭から末尾にかけて操作し、文字列の識別子を検出する度に、その識別子に対応する文字列バッファ１中の文字列を出力する。
【００４３】
請求項１の発明との違いは、出現度表２の代わりに表８に例示する圧縮符号表を用いる点、および、それを用いた分類番地の求め方にある。前述の例における、圧縮符号表を表８に示す。
【００４４】
【表８】
0004208326.tif 000010
【００４５】
表８の圧縮符号は次のようにして求める。まず、表中に辞書順に並べた文字からなる集合を、集合中に含まれる文字の出現確率の和がなるべく均等になるように２つの集合に分割し、各々に０と１を圧縮符号として割り当てる。よって、まず、表９の圧縮符号を得る。
【００４６】
【表９】
0004208326.tif 000011
【００４７】
上記において、辞書順に並べた４つの文字からなる集合｛＃，．，ａ，ｂ，ｃ｝は、｛＃，．，ａ｝と｛ｂ，ｃ｝という２つの集合に分割される。各々の集合に属する文字の出現確率の和は０.５と０.５であり、他の分割方法に比べて最も均等している（例えば｛＃，．｝と｛ａ，ｂ，ｃ｝では０.３と０.７になり、上記の分割より均等していない）。
次に、各々分散された文字集合をさらに同様の方法で分割し、圧縮符号を割り当て、既に得られた圧縮符号と連結することで表１０を得る。
【００４８】
【表１０】
0004208326.tif 000012
【００４９】
表１０において、文字集合｛＃，．｝をさらに分割することで、前述の圧縮符号を得る。上記の圧縮符号化法は、いわゆるＳｈａｎｏｎ−Ｆａｎｏの符号化に類似しているが、本発明の方法では、分割対象となる文字を辞書順に並べておき、この順序を前提として文字列集合を分割してゆく点が異なる（Ｓｈａｎｏｎ−Ｆａｎｏの方法では文字は頻度が高い順に並べられる）。このようにすることで、圧縮前の文字の辞書順と、圧縮符号化された文字（またはそれにより構成される文字列）の辞書順を一致させることができる。
【００５０】
以上の方法で各文字に圧縮符号を対応させ、それを記憶した圧縮符号を用い番地算出部は以下のように分類番地を生成する。前述の通り、文字列バッファには以下のようにｓｕｆｆｉｘが格納されているものとする。
最初にｓｕｆｆｉｘ“ｃ＃”を取り出し、圧縮符号表中の“ｃ”と“＃”の圧縮符号を、この順番で連結することで“１１０００”を得る。次に、ｓｕｆｆｉｘ“ｃｃ”を取り出し、直前に得られた圧縮符号列“１１０００”に先頭文字“ｃ”の圧縮符号“１１”を前接することで“１１１１０００”を得る。以下、同様に圧縮符号を各ｓｕｆｆｉｘに対して求めることができる。
一方、分類表の大きさを表すスケールとして８を採用し、分類表の大きさを２8＝２５６とする。そして、圧縮符号をｂｉｔ列と見なした場合に、上位８ｂｉｔを取り分類番地とする。このようにして、各ｓｕｆｆｉｘに対して表１１の圧縮符号と分類番地を得る。
【００５１】
【表１１】
0004208326.tif 000013
【００５２】
実際には、ｓｕｆｆｉｘに対し、その分類番地を求めるのに必要なｂｉｔ数の圧縮符号を求めればよい。分類部は、番地算出部が分類番地を算出する度に、分類表の該当する番地にｓｕｆｆｉｘの識別子を格納する。例えば、上記ｓｕｆｆｉｘ“ｃ”の番地は二進法で１１００００００（１０進法で１９２）なので、分類表（大きさは２５６）の１９２番目の要素として、識別子９を格納する。以降の動作は、請求項１の発明と同じである。
【００５３】
図７は、情報索引装置の他の実施形態を説明するための要部構成図で、図中、１は文字列集合を記憶する文字列バッファ、８は辞書順に文字列の圧縮符号を記憶する圧縮符号表、９は文字列の圧縮符号を文字列バッファ１中の文字列から算出する圧縮符号算出部、３は文字列バッファ１中の文字列に対し圧縮符号表８から分類番地を算出する番地算出部、４は文字列バッファ１中の文字列を番地算出部３が算出した分類番地に従い分類表５中に対応づける分類部、５は文字列の分類に用いる分類表、６は分類表５中の文字列をその分類番地に従い辞書順に整列する整列部で、この発明は、図５に示した請求項３の発明に圧縮符号算出部９を設けたものである。
【００５４】
図８は、図７に示した情報索引装置の動作説明をするためのフロー図で、以下のｓｔｅｐ０〜４からなる。
ｓｔｅｐ０：圧縮符号算出部９は、文字列バッファ１中の文字列から文字列の圧縮符号を算出し圧縮符号表８に格納する。
ｓｔｅｐ１：番地算出部３は、文字列バッファ１から文字列Ｓと、その識別子ｉを取り出す。
ｓｔｅｐ２：番地算出部３は、文字列Ｓと圧縮符号表８から分類番地ｊを算出する。
ｓｔｅｐ３：分類部４は、分類表５中の分類番地ｊの位置に文字列Ｓの識別子ｉを格納する。以上ｓｔｅｐ１−ｓｔｅｐ３を文字列バッファ１中の全ての文字に対して繰り返す。
ｓｔｅｐ４：整列部６は、分類表５の先頭から末尾にかけて操作し、文字列の識別子を検出する度に、その識別子に対応する文字列バッファ１中の文字列を出力する。
【００５５】
ｓｔｅｐ１以降は、図５に示した請求項２の発明と同様の動作となる。圧縮符号表８の圧縮符号は、処理対象となる文字列バッファ中の文字列集合から算出した方が前述のスケール（つまり分類表の大きさ）を小さくでき、記憶量を節約できる。
ｓｔｅｐ０は、文字列バッファ１中の文字列を一つずつ取り出し、それを構成する文字の頻度および全文字数を計数し、最終的に前述した出現確率の値を求める。すなわち、出現確率は、各文字の出現頻度を全文字数で割ることで得られる。
【００５６】
（請求項３の発明）
請求項３の発明は、請求項１の発明に従属する発明で、請求項１の発明に従属する場合は、図１に示した請求項１の発明と同様の構成をとり、番地算出部３において、文字列バッファ１の文字列の内、一部の文字列についてのみ出現度表２から分類番地を算出するようにした点で、請求項１の発明と異なる。
【００５７】
上述のように、請求項３の発明は、図１或いは図３に示した請求項１の発明において、番地算出部３は、文字列バッファ１中の一部の文字列についてのみ出現度表２から番地を算出するようにしたものである。例えば、出現度表が表１２のように求められているとする。
【００５８】
【表１２】
0004208326.tif 000014
【００５９】
番地算出部３は、文字｛．，ａ｝という２つの文字を先頭とするｓｕｆｆｉｘに対してのみ、分類番地を算出する。よって、表１３の結果を得る。分類番地が算出されなかった場合を“−”で表している。
【００６０】
【表１３】
0004208326.tif 000015
【００６１】
そして、分類部４は番地が求められたｓｕｆｆｉｘのみ、分類表５に格納する。この例で必要となる分類表の大きさは２４となる（前述の例では大きさが９７必要）。また、スケールつまり分類表の大きさを２５０に設定することで、対象となるｓｕｆｆｉｘをより広い範囲に分散して格納できることから、異なるｓｕｆｆｉｘが同じ分類番地に格納される確率（衝突確率）を減少させることができる。以降の動作は、前述の請求項１の発明と同様である。
【００６２】
一回の整列の対象となるｓｕｆｆｉｘを上記のように限定することで、衝突確率を減少させることができる。そして、同様の整列を残りの文字列に対して行い、それらの結果（つまり整列部の出力）を連結することで、ｓｕｆｆｉｘ  ａｒｒａｙの全体を得ることができる。
【００６３】
（請求項３の他の発明）
請求項３の他の発明は、図５或いは図７に示した請求項２の発明に従属する発明で、請求項２の発明に従属する場合は、図５に示した請求項２の発明と同様の構成をとるが、番地算出部３において、文字列バッファ１中の文字列の内、一部の文字列についてのみ圧縮符号表８から分類番地を算出するようにした点で、請求項２の発明と異なる。
【００６４】
上述のように、請求項３の他の発明は、図５或いは図７に示した請求項２の発明において、請求項３の発明と同様、番地算出部３は文字列バッファ１中の一部の文字列についてのみ出現度表から番地を算出するもので、該番地算出部３は、文字｛．，ａ｝という２つの文字を先頭とするｓｕｆｆｉｘに対してのみ、分類番地を算出する場合、表１４の結果を得る。分類番地が算出されなかった場合は“−”を表している。ここで番地としては上位６ｂｉｔを用いる。必要な分類表の大きさは２6＝６４となる。
【００６５】
【表１４】
0004208326.tif 000016
【００６６】
（請求項４の発明）
図９は、請求項４の情報索引装置の一実施形態を説明するための図で、図中、１０は番地バッファで、この発明は請求項３の発明の構成に、文字列バッファ１中の文字列に対し番地算出部３が算出した番地を記憶する番地バッファ１０を加えたものである。而して、この発明においては、請求項４の情報索引装置で、ｓｕｆｆｉｘ  ａｒｒａｙを数回の整列に分けて得る場合、初回に番地算出部が算出した分類番地を番地バッファ１０に記憶し、二回目以降は、番地算出部は番地バッファ１０を参照して必要な番地を得る。
【００６７】
（請求項５の発明）
図１０は、請求項５に記載の情報索引装置の一実施形態を説明するための要部構成図で、図中、２０は請求項１乃至４に示した情報索引装置のいずれかに記載の装置、２１は内容分割部、２２1〜２２nは索引表で、この発明は、図示のように、前述の実施形態１〜４に示した請求項１〜４の発明２０に文字列が属する内容分類に応じて文字列集合を分割する内容分割部２１、辞書順に整列した文字列の識別番号を記憶する索引表２２1〜２２nを付加したものである。
【００６８】
図８に示した実施形態において、内容分割部２１は、入力される文字列の集合を各文字列に対応して入力される分類コードに基づいて分割する。この分類コード体系は、文字列の内容に応じて予め決定されているものとする。分割結果は文字列バッファ１に、分類コード毎に格納される文字列の集合として表現される。
請求項１〜４に対応する装置２０は各分類コード毎に、それに対応する文字列を整列する。その際、整列部は処理結果である辞書順に整列した文字列の識別番号を各分類コード毎に固有の索引表２２1〜２２nに格納する。
【００６９】
（請求項６の発明）
図１１は、請求項６の発明の一実施形態を説明するための要部構成図で、図中、２３は時系列分割部、２２1〜２２nは索引表で、この発明は、図示のように、前述の実施形態１〜４に示した請求項１〜４の発明２０に文字列が属する時系列分類に応じて文字列集合を分割する時系列分割部２３、辞書順に整列した文字列の識別番号を記憶する索引表２２1〜２２nを付加したものである。
【００７０】
図１１に示した実施形態において、時系列分類部２３は、入力される文字列の集合を各文字列に対応して入力される分類コードに基づいて分割する。この分類コード体系は、文字列が生成された日時など文字列間の時系列関係を表現するものとする。分割結果は文字列バッファに、分類コード毎に格納される文字列の集合として表現される。請求項１〜４に対応する装置２０は各分類コード毎に、それに対応する文字列を整列する。その際、整列部は処理結果である辞書順に整列した文字列の識別番号を各分類コード毎に固有の索引表２２1〜２２nに格納する。
【００７１】
図１２は、情報索引装置の例を説明するための要部構成図で、図中、３１は索引表、３２は対応表、３３は文字列構成部で、索引表３１は辞書順に整列した文字列の識別番号を記憶し、対応表３２は索引表中の識別番号と文字列の対応を記憶し、文字列構成部３３は索引表と対応表から文字列を構成する。
【００７２】
図１１に示した実施形態において、以下に、前述の例である文字列“ａａ．ｂｂ．ｃｃｃｃ”を用いてその動作例を説明する。この文字列に対する索引表であるｓｕｆｆｉｘ  ａｒｒａｙは、表１５となる。ｓｕｆｆｉｘ  ａｒｒａｙの各要素は文字列の識別子であり、それら文字列の先頭文字を取り出すと表１６のようになる。上記の対応関係が表１７に示す対応表に格納されているものとする。
【００７３】
【表１５】
0004208326.tif 000017
【００７４】
【表１６】
0004208326.tif 000018
【００７５】
【表１７】
0004208326.tif 000019
【００７６】
上記で、例えば文字ａに対応する行は、ｓｕｆｆｉｘ  ａｒｒａｙの２番めの要素を先頭とし３番めの要素を末尾とする識別子の列、すなわち“1，０”に対応する文字列の先頭文字がａであることを表す。文字列構成部３３は上記の索引表３１と対応表３２から、元の文字列を次のようにして文字配列Ｔ上に構成することができる。
・索引表と同じ大きさ（この場合１０）の文字配列Ｔを用意する。
・対応表の各行Ｌについて以下を行う。
行Ｌが文字Ｘに対応しているとき、行Ｌの先頭Ｂから末尾Ｅまでの索引表に格納されている識別子Ｉの各々に対し、文字配列ＴのＩ番目に文字Ｘを格納する。
【００７７】
【発明の効果】
請求項１の発明は、文字列の出現度を用いることで文字列のバケット整列を高速化できる。
【００７９】
請求項２の発明は、文字列の圧縮符号を用いることで文字列のバケット整列を高速化できる。
【００８１】
請求項３の発明は、請求項１又は２の発明において、必要とする計算量の負荷を軽減し、また、分類番地の衝突を抑制できる。
【００８３】
請求項４の発明は、請求項３の発明において、必要とする計算時間の負荷を軽減できる。
【００８５】
請求項５の発明は、請求項１乃至４のいずれかの発明において、索引表の更新問題を軽減できる。
また、更新の際に対象となる文字列集合が小規模になり、更新時の計算量が軽減されるとともに、検索時に、検索対象となる内容分類が予め限定できる場合には、その限定範囲内で検索を実施することで検索時間を高速化できるという副次的な作用効果が得られる。
【００８７】
請求項６の発明は、請求項１乃至４のいずれかの発明において、更新問題を軽減できる。
また、文字列の時系列分類別にｓｕｆｆｉｘ  ａｒｒａｙを構成するので、更新の際に対象となる文字列集合が小規模になり、更新時の計算量が軽減されるとともに、検索時に、検索対象となる時系列分類が予め限定できる場合（例えば最近の一年間に追加された文字列に限定する等）、その限定範囲内で検索を実施することで検索時間を高速化できるという副次的な作用効果が得られる。また最新の情報から古い情報の順に検索結果を提示することができる。
【図面の簡単な説明】
【図１】  請求項１の情報索引装置の一実施形態を説明するための要部構成図である。
【図２】  図１に示した情報索引装置の動作説明をするためのフロー図である。
【図３】  情報索引装置の一実施形態を説明するための要部構成図である。
【図４】  図３に示した情報索引装置の動作説明をするためのフロー図である。
【図５】  請求項２の情報索引装置の一実施形態を説明するための要部構成図である。
【図６】  図５に示した情報索引装置の動作説明をするためのフロー図である。
【図７】  情報索引装置の一実施形態を説明するための要部構成図である。
【図８】  図７に示した情報索引装置の動作説明をするためのフロー図である。
【図９】  請求項４の情報索引装置の一実施形態を説明するための図である。
【図１０】  請求項５に記載の情報索引装置の一実施形態を説明するための要部構成図である。
【図１１】  請求項６の発明の一実施形態を説明するための要部構成図である。
【図１２】  情報索引装置の例を説明するための要部構成図である。
【符号の説明】
１…文字列バッファ、２…出現度表、３…番地算出部、４…分類部、５…分類表、６…整列部、７…出現度算出部、８…圧縮符号表、９…圧縮符号算出部、１０…番地バッファ、２０…請求項１〜７の装置、２１…内容分割部、２２1〜２２n…索引表、２３…時系列分割部、３１…索引表、３２…対応表、３３…文字列構成部。
【図１】
0004208326.tif 000020
【図２】
0004208326.tif 000021
【図３】
0004208326.tif 000022
【図４】
0004208326.tif 000023
【図５】
0004208326.tif 000024
【図６】
0004208326.tif 000025
【図７】
0004208326.tif 000026
【図８】
0004208326.tif 000027
【図９】
0004208326.tif 000028
【図１０】
0004208326.tif 000029
【図１１】
0004208326.tif 000030
【図１２】
0004208326.tif 000031