(57)【特許請求の範囲】
【請求項１】
予め登録された文書の集合を対象として、指定された文字列を含む文書の検索を行なう文書検索システムにおける文書検索方法であって、
前記文書検索システムの備える単語境界識別手段により、登録する文書のテキストデータを対象として、該文書を特定するための識別情報である文書識別情報（文書識別子）を付与し、さらに単語の抽出処理を行い、該テキストデータ中の抽出した単語の先頭文字と末尾文字を識別し、先頭文字を示す単語の先頭境界識別情報を該抽出した単語の先頭文字に付加し、末尾文字を示す単語の末尾境界識別情報を該抽出した単語の末尾文字に付加した単語境界付きテキストデータを生成する単語境界識別ステップと、
前記文書検索システムの備える登録用ｎ−ｇｒａｍ抽出手段により、前記生成した単語境界付きテキストデータから所定長の部分文字列（ｎ−ｇｒａｍ）を抽出する登録用ｎ−ｇｒａｍ抽出ステップと、
前記文書検索システムの備える単語境界情報格納型ｎ−ｇｒａｍインデックス作成登録手段により、前記登録用ｎ−ｇｒａｍ抽出ステップで抽出した所定長の部分文字列（ｎ−ｇｒａｍ）（以下、抽出ｎ−ｇｒａｍという）について、前記付与した文書識別情報と、該単語境界付きテキストデータ中における該抽出ｎ−ｇｒａｍの出現位置情報を含む文字位置情報を抽出するとともに、該単語境界付きテキストデータにおいて該抽出ｎ−ｇｒａｍの先頭文字が単語の先頭文字であった場合には単語の先頭境界識別情報を、また該抽出ｎ−ｇｒａｍの末尾文字が単語の末尾文字であった場合には単語の末尾境界識別情報を夫々該単語境界付きテキストデータから抽出し、該抽出ｎ−ｇｒａｍについて該抽出した文書識別情報と文字位置情報と単語の先頭境界識別情報と単語の末尾境界識別情報を有する該抽出ｎ−ｇｒａｍに対応する検索用インデクスを生成し、登録する単語境界情報格納型ｎ−ｇｒａｍインデクス作成登録ステップとを有することを特徴とする文書検索方法。
【請求項２】
請求項１記載の文書検索方法において、
前記単語境界識別ステップは、単語の抽出処理において、形態素解析用の単語辞書と、漢字、カタカナ、ひらがな、数字、アルファベット、および記号のうち少なくとも２種類以上の文字種別情報と、所定長の部分文字列の前方および後方において文字種の変化点に現れる頻度を統計的に蓄積した文字種境界確率とのうち、少なくとも１つ以上を用いることを特徴とする文書検索方法。
【請求項３】
請求項１記載の文書検索方法において、
前記文書検索システムの備える検索用ｎ−ｇｒａｍ抽出手段により、指定された検索タームから所定長の部分文字列（ｎ−ｇｒａｍ）（以下、検索用ｎ−ｇｒａｍという）を抽出する検索用ｎ−ｇｒａｍ抽出ステップと、
前記文書検索システムの備える検索用インデクス抽出手段により、前記検索用ｎ−ｇｒａｍ抽出ステップにより抽出した検索用ｎ−ｇｒａｍ毎に、前記登録された検索用インデクスから前記抽出された検索用ｎ−ｇｒａｍを含む検索用インデクスを抽出する検索用インデクス抽出ステップと、
前記文書検索システムの備える単語識別検索手段により、前記検索用インデクス抽出ステップにおいて抽出された検索用インデクス中の文書識別情報と、出現位置情報と、単語の先頭境界識別情報と末尾境界識別情報を用いて、前記検索タームが、該検索タームとは異なる別単語中の部分文字列として含まれる文書をノイズとして排除して前記検索タームを含む文書を漏れなく検索する単語識別検索を行う単語識別検索ステップとを有することを特徴とする文書検索方法。
【請求項４】
請求項３記載の文書検索方法において、
前記文書検索システムの備える検索条件判定手段により、指定された検索条件が、前記検索タームを含む文書を漏れなく検索する任意語検索であるか、前記検索タームが別単語中の部分文字列として存在する文書を検索結果から排除する単語境界を意識した単語識別検索であるかを判定する検索条件判定ステップと、
前記文書検索システムの備える任意語検索手段により、前記検索条件判定ステップにおける判定結果が任意語検索の場合には、前記検索用インデクス抽出ステップにおいて抽出された検索用インデクス中の文書識別情報と出現位置情報基づき、前記検索タームを含む全ての文書を漏れなく検索する任意語検索を行う任意語検索ステップを有し、
前記検索条件判定ステップにおける判定結果が単語識別検索の場合には、前記単語識別検索ステップを実行することを特徴とする文書検索方法。
【請求項５】
予め登録された文書の集合を対象として、指定された文字列を含む文書の検索を行なう文書検索システムであって、
登録する文書のテキストデータを対象として、該文書を特定するための文書識別情報（文書識別子）を付与し、さらに単語の抽出処理を行い、該テキストデータ中の抽出した単語の先頭文字と末尾文字を識別し、先頭文字を示す単語の先頭境界識別情報を該抽出した単語の先頭文字に付加し、末尾文字を示す単語の末尾境界識別情報を該抽出した単語の末尾文字に付加した単語境界付きテキストデータを生成する単語境界識別手段と、
該生成した単語境界付きテキストデータから所定長の部分文字列（ｎ−ｇｒａｍ）を抽出する登録用ｎ−ｇｒａｍ抽出手段と、
該登録用ｎ−ｇｒａｍ抽出ステップで抽出した所定長の部分文字列（ｎ−ｇｒａｍ）（以下、抽出ｎ−ｇｒａｍという）について、前記付与した文書識別情報と、該単語境界付きテキストデータ中における該抽出ｎ−ｇｒａｍの出現位置情報を含む文字位置情報を抽出するとともに、該単語境界付きテキストデータにおいて該抽出ｎ−ｇｒａｍの先頭文字が単語の先頭文字であった場合には単語の先頭境界識別情報を、また該抽出ｎ−ｇｒａｍの末尾文字が単語の末尾文字であった場合には単語の末尾境界識別情報を夫々該単語境界付きテキストデータから抽出し、該抽出ｎ−ｇｒａｍについて該抽出した文書識別情報と文字位置情報と単語の先頭境界識別情報と単語の末尾境界識別情報を有する該抽出ｎ−ｇｒａｍに対応する検索用インデクスを生成し、登録する単語境界情報格納型ｎ−ｇｒａｍインデクス作成登録手段とを有することを特徴とする文書検索システム。
【請求項６】
請求項５記載の文書検索システムにおいて、
指定された検索タームから所定長の部分文字列（ｎ−ｇｒａｍ）（以下、検索用ｎ−ｇｒａｍという）を抽出する検索用ｎ−ｇｒａｍ抽出手段と、
該検索用ｎ−ｇｒａｍ抽出手段により抽出した検索用ｎ−ｇｒａｍ毎に、前記登録された検索用インデクスから前記抽出された検索用ｎ−ｇｒａｍを含む検索用インデクスを抽出する検索用インデクス抽出手段と、
指定された検索条件が、前記検索タームを含む文書を漏れなく検索する任意語検索であるか、前記検索タームが別単語中の部分文字列として存在する文書を検索結果から排除する単語境界を意識した単語識別検索であるかを判定する検索条件判定手段と、
前記検索条件判定手段による判定の結果が任意語検索の場合に、前記検索用インデクス抽出手段において抽出された検索用インデクス中の文書識別情報と出現位置情報基づき、前記検索タームを含む全ての文書を漏れなく検索する任意語検索を行う任意語検索手段と、
前記判定の結果が単語識別検索の場合に、前記検索用インデクス抽出手段において抽出された検索用インデクス中の文書識別情報と、出現位置情報と、単語の先頭境界識別情報と末尾境界識別情報を用いて、前記検索タームが、該検索タームとは異なる別単語中の部分文字列として含まれる文書をノイズとして排除して前記検索タームを含む文書を漏れなく検索する単語識別検索を行う単語識別検索手段とを有することを特徴とする文書検索システム。
【請求項７】
少なくとも、処理装置と、記憶装置と、入出力装置を備えたコンピュータに、予め登録された文書の集合を対象として指定された文字列を含む文書の検索を行わせる文書検索プログラムであって、前記コンピュータに、
入力された指定の単語を検索タームとし、該検索タームから所定長の部分文字列（ｎ−ｇｒａｍ）（以下、検索用ｎ−ｇｒａｍという）を抽出する検索用ｎ−ｇｒａｍ抽出手順と、
該検索用ｎ−ｇｒａｍ抽出手順により抽出した検索用ｎ−ｇｒａｍ毎に、前記記憶装置に登録されている検索用インデクスであって登録文書のテキストデータに割り当てられた文書識別情報（文書識別子）と該テキストデータから抽出された該テキストデータにおける出現位置情報と単語の先頭境界識別情報と単語の末尾境界識別情報を有する検索用インデクス、から前記抽出された検索用ｎ−ｇｒａｍを含む検索用インデクスを抽出する検索用インデクス抽出手順と
入力された指定の検索条件が、前記検索タームを含む文書を漏れなく検索する任意語検索であるか、前記検索タームが別単語中の部分文字列として存在する文書を検索結果から排除する単語境界を意識した単語識別検索であるかを判定する検索条件判定手順と、
該判定の結果が任意語検索の場合に、前記検索用インデクス抽出手順において抽出された検索用インデクス中の文書識別情報と出現位置情報基づき、前記検索タームを含む全ての文書を漏れなく検索する任意語検索手順と、
前記判定の結果が単語識別検索の場合に、前記検索用インデクス抽出手順において抽出された検索用インデクス中の文書識別情報と、出現位置情報と、単語の先頭境界識別情報と末尾境界識別情報を用いて、前記検索タームが、該検索タームとは異なる別単語中の部分文字列として含まれる文書をノイズとして排除して前記検索タームを含む文書を漏れなく検索する単語識別検索手順と、を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、大規模な文書データベースの全文を対象として、指定した文字列の存在する文書を高速に検索するフルテキストサーチに係わり、データベース、文書管理システム、文書ファイリングシステムおよびＤＴＰ（Ｄｅｓｋ  Ｔｏｐ  Ｐｕｂｌｉｓｈｉｎｇ）システムなどに適用されるものである。
【０００２】
【従来の技術】
大規模な文書データベースから指定された検索文字列（以下、検索タームと呼ぶ）が含まれる文書を高速に探し出す方式として、ｎ−ｇｒａｍインデクス方式（以下、方式１と呼ぶ）がある。
ｎ−ｇｒａｍインデクス方式とは、文書の登録時に文書中の全てのｎ−ｇｒａｍ（連続するｎ文字からなる文字列）についてその出現位置情報をインデクスとして格納しておき、検索時には検索ターム中のｎ−ｇｒａｍに対しそのインデクスを参照し、検索ターム中の位置関係とインデクス中の位置関係が等しいかどうかを判定（以下、隣接判定と呼ぶ）することによって、検索タームが出現する文書を探し出す方式である。
【０００３】
図２に１−ｇｒａｍインデクス方式の例を示す。
本図に示すように、方式１では、文書の登録時に文書中の全てのｎ−ｇｒａｍ（図２の例ではｎ＝１）についてその出現位置情報をインデクスとして格納する。
例えば、“に”という１−ｇｒａｍは文書‘００１’の‘３’文字目に出現するので、その文書番号‘００１’と文字位置‘３’を“に”に対応するインデクス２００に格納する。
検索時には、指定された検索タームから抽出したｎ−ｇｒａｍ（図２の例ではｎ＝１）のインデクス間で出現位置情報の隣接判定を行うことにより、検索タームの出現位置情報を取得する。
例えば、“微生物”が検索タームとして指定された場合には、この検索タームからまず、１−ｇｒａｍ “微”、“生”および“物”を抽出する。
そして、“微”に対応するインデクス２０１、“生”に対応するインデクス２０２および“物”に対応するインデクス２０３の間で出現位置情報の隣接判定を行うことによって、“微生物”の出現位置情報を取得する。
本図の例では、“微”、“生”および“物”が文書番号‘００１’の‘９’文字目から、文書番号‘０５６’の‘５’文字目から隣り合っているので、それらの出現位置に“微生物”が存在することが分かる。
以上のように、方式１では、文書を走査することなしに、インデクスの読込みと出現位置情報の隣接判定だけで検索が行えるため、大規模な文書データベースに適用した場合でも高速なフルテキストサーチを実現できる可能性がある。
【０００４】
しかし、方式１では、ｎを１とすると、すなわち１−ｇｒａｍのインデクスを用いると、１−ｇｒａｍは全文書中（データベース中）における出現頻度が高いため、一つの１−ｇｒａｍに対する出現位置情報が増え、個々のインデクスの容量が大きくなる。
このためインデクスの読込みに時間が掛かるばかりでなく、出現位置情報による隣接判定の回数も増えるため、検索に時間が掛かるという問題が生じる。
検索を高速にするためにはｎの値を増やした容量の小さなインデクスを作成する必要があるが、短い検索タームが指定された場合でも検索が行えるようにｎの小さなインデクスも全て作成しておかなければならない。
その結果、総インデクス容量が増加することになる。
【０００５】
また、方式１のようなインデクス型の文書検索方法では、“キー探索技法−ＩＶ  トライとその応用”（青江順一著、情報処理Ｖｏｌ．３４、Ｎｏ．２、１９９３、ｐｐ．２４４−２５１）に記載されているトライのような木構造で文字列（方式１の場合はｎ−ｇｒａｍ）を管理する必要がある。
トライとは検索対象となる文字列すなわちキーワードの集合（以下、キー集合と呼ぶ）における各キーワード（以下、キーと呼ぶ）に共通な前方部分文字列を共通の節で括り出して作られる木構造である。
このトライは登録や検索の際に用いられ、登録する文字列あるいは検索ターム中の文字列でキーを辿ってトライを探索することにより、その文字列に対応するインデクスを指し示すポインタ情報を取得することができる。
トライの探索に掛かる時間はキーの数に依存しないため、大規模なデータベースに適用した場合でも、高速にキーワードを探索できるという特徴がある。
【０００６】
図３にキー集合｛ｂａｂｙ、ｂａｄｇｅ、ｂａｄｇｅｒ、ｊａｒ｝に対応するトライを示す。
このトライでは節１（３００）から節２（３０１）へ枝ラベルｂ（３０２）が定義され、二重丸で示すキーの末尾にあたる節にはそのキーに対するインデクスへのポインタ情報が設定されている。
例えば、検索タームとして“ｂａｂｙ”が指定された場合には、文字列“ｂａｂｙ”で本図のトライを探索することにより、節５（３０３）に設定されているポインタ情報Ｐｔ１が得られ、このポインタ情報Ｐｔ１が示す先に検索ターム“ｂａｂｙ”に対応するインデクスが格納されていることになる。
方式１において、このトライを用いてｎ−ｇｒａｍを管理する際、個々のインデクスの容量を小さくして検索を高速にするためにｎ−ｇｒａｍを長くしたインデクスを作成すると、ｎ−ｇｒａｍの種類が増え、トライの節が増えるため、トライ全体の規模が大きくなってしまうという問題がある。
【０００７】
この総インデクス容量とインデクスを管理する木構造の容量の増加という問題を解決するために「特開平８−１９４７１８号」（以下、公知例１と呼ぶ）で、インデクスの容量がある基準値（以下、基準インデクスサイズと呼ぶ）を超えたｎ−ｇｒａｍに対してのみ、ｎの値を増やして容量の小さなインデクスを作成することにより、常に容量の小さなインデクスの読込みと出現位置情報の隣接判定で済むようにして、高速な検索を実現するとともに、総インデクス容量およびインデクスを管理する木構造（以下、トライで説明する）の容量の増加を防ぐ方式が開示されている。
図４に公知例１に開示されているインクリメンタルｎ−ｇｒａｍインデクス方式の概要を示す。
本方式では、文書の登録時にｎ−ｇｒａｍに対応するインデクスを作成するともに、文書中の２文字の接続情報をトライ１２２に登録する。
そして、文書を登録していき、インデクスの容量が基準インデクスサイズを超えた場合には、対応するｎ−ｇｒａｍに１文字追加したｎ−ｇｒａｍ （以下、拡張ｎ−ｇｒａｍと呼ぶ）のインデクスを作成する。
以下、図４を用いてインデクスの作成方法を具体的に説明する。
ｎ−ｇｒａｍに１文字追加した拡張ｎ−ｇｒａｍを作成するためには、まずトライ１２２を参照してそのｎ−ｇｒａｍに続く可能性のあるｎ−ｇｒａｍを取得する。
そして、検出されたｎ−ｇｒａｍ（以下、接続ｎ−ｇｒａｍと呼ぶ）のインデクスと基準インデクスサイズより容量が大きくなったｎ−ｇｒａｍ（以下、基準インデクス超過ｎ−ｇｒａｍと呼ぶ）のインデクスの間で出現位置情報の隣接判定を行うことにより、拡張ｎ−ｇｒａｍのインデクスを作成する。
本図の例では、“生”という１−ｇｒａｍに対応するインデクスが基準インデクスサイズより大きくなっており、“生”が基準インデクス超過ｎ−ｇｒａｍとなる。
ここで、まず、“生”という文字でトライ１２２を探索し、“生”に続く接続ｎ−ｇｒａｍを取得する。
本図に示す例では、トライ１２２を探索することにより、“生”の後ろに“物”と“息”が続くことが分かる。
そこで、“生”と“物”、“生”と“息”のインデクスの間で出現位置情報の隣接判定を行うことにより、“生物”、“生息”といった“生”に１文字追加した拡張ｎ−ｇｒａｍのインデクス４００を作成する。
以上のように、公知例１を用いることにより、容量が大きく検索に時間が掛かるインデクスに対しては、そのｎ−ｇｒａｍに１文字追加した拡張ｎ−ｇｒａｍに対するインデクスを作成するため、常に容量の小さなインデクスの読込みと出現位置情報の隣接判定で済むようになるため、高速な検索を実現することができるようになる。
また、それ以外のインデクスに対しては、ｎ−ｇｒａｍの長さを増やしたインデクスを作成しないため、総インデクス容量およびｎ−ｇｒａｍを管理する木構造（トライ）の容量の増加を防ぐことができる。
【０００８】
【発明が解決しようとする課題】
以上説明したように、公知例１に開示されているｎ−ｇｒａｍ型のインデクス方式によると、基準インデクスサイズより容量が大きく検索に時間が掛かるインデクスに対しては、そのキーであるｎ−ｇｒａｍに１文字を追加した容量の小さなインデクスを作成することになるため、常に容量の小さなインデクスの読込みと出現位置情報の隣接判定で済むようになり、高速な検索を実現することが可能となる。
また、基準インデクスサイズより容量の小さなインデクスに対しては、それ以上ｎ−ｇｒａｍを長くしたインデクスを作成しないため、総インデクス容量およびｎ−ｇｒａｍを管理する木構造（トライ）の容量の増加を防ぐことが可能となる。
【０００９】
しかし、ｎ−ｇｒａｍ型のインデクス方式による全文検索では、検索対象に指定された検索タームが、検索タームの持つ本来の意味ではなく、別単語中の部分語として含まれるようなノイズ文書が検索されてしまうという問題がある。
例えば、登録対象文書中の全ての隣り合う２文字に対しインデクスを作成する２−ｇｒａｍインデクス方式では、登録対象文書中の“電気温水器”という文字列から“電気”、“気温”、“温水”および“水器”がインデクス作成対象文字列として抽出される。
そして、検索時に“気温”という検索タームが指定された場合には、“気温”に該当する２−ｇｒａｍインデクスを参照することにより検索結果を得る。
このため、検索ターム本来の“気温”としての意味ではなく、“電気”の部分文字“気”と“温水器”の部分文字“温”が隣接して現れた前記文書も、検索結果として抽出されてしまうことになる。
【００１０】
これに対し、指定された検索タームが別単語中の部分語として含まれるような文書をノイズ文書として排除する方法として、従来から形態素解析を用いた単語インデクス方式が用いられており、その概要が「鍵を握るインデクス処理」（日経バイト記事、1996年10月号、158ページ〜167ページ）」内の161ページ右（以下、公知例２と呼ぶ）に示されている。
この方式では、文書登録時に、登録対象文書中の文字列を品詞毎に分解し、その中から辞書を用いて有意語（単語）を抽出する形態素解析処理を行う。そして、これらの有意語に対し、検索用のインデクスを作成する。
【００１１】
本方式によると、先述した登録対象文書中の文字列“電気温水器”から、単語として“電気温水器”のみが抽出され、検索用のインデクスが作成される。
すなわち、“気温”は単語として抽出されないため、インデクスは作成されず、検索タームとして“気温”が指定された場合にも本文書は検索されることなく検索結果から排除されることになる。
しかし、単語インデクス方式では、逆に辞書に登録されていない語（新語、造語、略語、複合語など）は検索できないという問題がある。
すなわち、先ほどの例において辞書中に“電気温水器”が登録されていない場合には、“電気温水器”に対しインデクスが作成されず、その結果検索タームとして“電気温水器”が指定された場合に本文書が検索できないという問題がある。
【００１２】
このようにｎ−ｇｒａｍ型のインデクシング方式と形態素解析型の単語インデクシング方式には、互いに相反する問題点（辞書に未登録の語を含む任意語の検索を実現しようとすると、指定された検索タームが別単語中の部分語として含まれるノイズ文書が検索されてしまう）がある。
すなわち、検索時に検索目的に応じてこれらの検索機能を使い分けるためには、ｎ−ｇｒａｍ型のインデクシング方式と形態素解析型の単語インデクシング方式を併用する必要がある。
つまり、ｎ−ｇｒａｍと単語の両方についてインデクスを作成することになり、十分な検索性能を得るためにはインデクス容量が大きくなりシステムが高価になる、十分な登録性能が得られない、ならびに保守性に劣るという問題点があった。
【００１３】
すなわち、本発明が解決しようとする課題は、指定された検索タームを含む文書を漏れなく検索できる任意語での検索と、指定された検索タームが別単語中の部分文字列として存在する文書を検索結果から排除する単語境界を意識した検索を、検索目的に応じて使いわけることのできる、保守性に優れた検索システムを、高性能かつ安価に提供することである。
【００１４】
【課題を解決するための手段】
上記課題を解決するために、本発明は、
予め登録された文書の集合を対象として、指定された文字列を含む文書の検索を行なう文書検索システムにおける文書検索方法であり、
登録する文書のテキストデータを対象として単語の抽出処理を行い、該テキストデータ中の単語の先頭位置と末尾位置を識別し、先頭または末尾を示す識別情報をそれぞれ単語先頭文字または末尾文字に付加したテキストデータを生成する単語境界識別ステップと、
該生成したテキストデータから所定長の部分文字列（ｎ−ｇｒａｍ）を抽出する登録用ｎ−ｇｒａｍ抽出ステップと、
前記抽出ｎ−ｇｒａｍについて、該テキストデータのテキスト識別情報と該テキストデータにおける出現位置情報を含む文字位置情報を抽出するとともに、前記単語境界識別ステップの識別結果に基づき、該ｎ−ｇｒａｍの先頭文字が単語の先頭位置であった場合には単語の先頭境界識別情報を、また該ｎ−ｇｒａｍの末尾文字が単語の末尾位置であった場合には単語の末尾境界識別情報を抽出し、該抽出ｎ−ｇｒａｍについて抽出した情報を有する該抽出ｎ−ｇｒａｍに対応する検索用インデクスを生成し、記憶する単語境界情報格納型ｎ−ｇｒａｍインデクス作成登録ステップとを有するようにしている。
【００１５】
さらに、前記単語境界識別ステップは、単語の抽出処理において、形態素解析用の単語辞書と、漢字、カタカナ、ひらがな、数字、アルファベット、および記号のうち少なくとも２種類以上の文字種別情報と、所定長の部分文字列の前方および後方において文字種の変化点に現れる頻度を統計的に蓄積した文字種境界確率とのうち、少なくとも１つ以上を用いるようにしている。
【００１６】
また、予め登録された文書の集合を対象として、指定された文字列を含む文書の検索を行なう文書検索システムにおける文書検索方法であり、
指定された検索タームから、所定長の部分文字列（ｎ−ｇｒａｍ）を抽出する検索用ｎ−ｇｒａｍ抽出ステップと、
前記ｎ−ｇｒａｍに関するテキスト識別情報と該テキストデータにおける出現位置情報と単語の先頭境界識別情報と単語の末尾境界識別情報を有するインデクスデータを抽出する検索用インデクス抽出ステップと、
検索用インデクス抽出ステップにおいて抽出されたインデクス中のテキスト識別情報と、出現位置情報と、単語の先頭境界識別情報ないし末尾境界識別情報の少なくとも一つ以上とを用いて、別単語中の部分文字列として含まれる文書をノイズとして排除して指定された検索タームを含む文書を漏れなく検索する単語識別検索ステップとを有するようにしている。
【００１７】
さらに、指定された検索条件が、指定された検索タームを含む文書を漏れなく検索する任意語検索であるか、指定された検索タームが別単語中の部分文字列として存在する文書を検索結果から排除する単語境界を意識した単語識別検索であるかを判定する検索条件判定ステップと、
該検索条件判定ステップにおける判定結果が任意語検索の場合には、検索用インデクス抽出ステップにおいて抽出されたインデクス中のテキスト識別情報と出現位置情報基づき、指定された検索タームを含む全ての文書を漏れなく検索する任意語検索ステップを有し、
前記検索条件判定ステップにおける判定結果が単語識別検索の場合には、前記単語識別検索ステップを実行するようにしている。
【００１８】
また、予め登録された文書の集合を対象として、指定された文字列を含む文書の検索を行なう文書検索システムであり、
登録する文書のテキストデータを対象として単語の抽出処理を行い、該テキストデータ中の単語の先頭位置と末尾位置を識別し、先頭または末尾を示す識別情報をそれぞれ単語先頭文字または末尾文字に付加したテキストデータを生成する単語境界識別手段と、
該生成したテキストデータから所定長の部分文字列（ｎ−ｇｒａｍ）を抽出する登録用ｎ−ｇｒａｍ抽出手段と、
前記抽出ｎ−ｇｒａｍについて、該テキストデータのテキスト識別情報と該テキストデータにおける出現位置情報を含む文字位置情報を抽出するとともに、前記単語境界識別ステップの識別結果に基づき、該ｎ−ｇｒａｍの先頭文字が単語の先頭位置であった場合には単語の先頭境界識別情報を、また該ｎ−ｇｒａｍの末尾文字が単語の末尾位置であった場合には単語の末尾境界識別情報を抽出し、該抽出ｎ−ｇｒａｍについて抽出した情報を有する該抽出ｎ−ｇｒａｍに対応する検索用インデクスを生成し、記憶する単語境界情報格納型ｎ−ｇｒａｍインデクス作成登録手段とを有するようにしている。
【００１９】
また、予め登録された文書の集合を対象として、指定された文字列を含む文書の検索を行なう文書検索システムであり、
指定された検索タームから、所定長の部分文字列（ｎ−ｇｒａｍ）を抽出する検索用ｎ−ｇｒａｍ抽出手段と、
前記ｎ−ｇｒａｍに関するテキスト識別情報と該テキストデータにおける出現位置情報と単語の先頭境界識別情報と単語の末尾境界識別情報を有するインデクスデータを抽出する検索用インデクス抽出手段と、
指定された検索条件が、指定された検索タームを含む文書を漏れなく検索する任意語検索であるか、指定された検索タームが別単語中の部分文字列として存在する文書を検索結果から排除する単語境界を意識した単語識別検索であるかを判定する検索条件判定手段と、
該判定の結果が任意語検索の場合に、検索用インデクス抽出手段により抽出されたインデクス中のテキスト識別情報と出現位置情報基づき、指定された検索タームを含む全ての文書を漏れなく検索する任意語検索手段と、
前記判定の結果が単語識別検索の場合に、検索用インデクス抽出手段により抽出されたインデクス中のテキスト識別情報と、出現位置情報と、単語の先頭境界識別情報ないし末尾境界識別情報の少なくとも一つ以上とを用いて、別単語中の部分文字列として含まれる文書をノイズとして排除して指定された検索タームを含む文書を漏れなく検索する単語識別検索手段とを有するようにしている。
【００２０】
また、文書検索プログラムを記録したコンピュータ読み取り可能な記録媒体であり、
指定された検索タームから、所定長の部分文字列（ｎ−ｇｒａｍ）を抽出する手順と、
前記ｎ−ｇｒａｍに関するテキスト識別情報と該テキストデータにおける出現位置情報と単語の先頭境界識別情報と単語の末尾境界識別情報を有するインデクスデータを抽出する手順と、
指定された検索条件が、指定された検索タームを含む文書を漏れなく検索する任意語検索であるか、指定された検索タームが別単語中の部分文字列として存在する文書を検索結果から排除する単語境界を意識した単語識別検索であるかを判定する手順と、
該判定結果が任意語検索の場合に、前記抽出されたインデクス中のテキスト識別情報と出現位置情報基づき、指定された検索タームを含む全ての文書を漏れなく検索する手順と、
前記判定結果が単語識別検索の場合に、前記抽出されたインデクス中のテキスト識別情報と、出現位置情報と、単語の先頭境界識別情報ないし末尾境界識別情報の少なくとも一つ以上とを用いて、別単語中の部分文字列として含まれる文書をノイズとして排除して指定された検索タームを含む文書を漏れなく検索する手順とを有するようにしている。
【００２１】
【発明の実施の形態】
本発明による文書検索システムの第一の実施例の構成を図１に示す。
本図に示す文書検索システムは検索結果を表示するディスプレイ１０、登録および検索のコマンドを入力するキーボード２０、登録処理および検索処理を実行する中央演算処理装置ＣＰＵ３０、フロッピディスクからデータを読み出すフロッピディスクドライバ４０、データベースへ登録する文書データを格納したフロッピディスク５０、登録および検索用のプログラムならびにデータなどを一時的に格納する主メモリ６０、各種データおよびプログラムを格納する磁気ディスク７０およびこれらを接続するバス８０で構成される。
主メモリ６０にはシステム制御プログラム１００に加え、登録用のプログラムとして登録制御プログラム１１０、単語境界識別プログラム１１１、登録用ｎ−ｇｒａｍ抽出プログラム１１２および単語境界情報格納型ｎ−ｇｒａｍインデクス作成登録プログラム１１３が、また検索用のプログラムとして検索制御プログラム１２０、検索用ｎ−ｇｒａｍ抽出プログラム１２１、検索用インデクス抽出プログラム１２２、検索条件判定プログラム１２３、任意語検索プログラム１２４および単語識別検索プログラム１２５が磁気ディスク７０から読み出されるとともに、ワークエリア１３０が確保される。
また、磁気ディスク７０にはテキスト格納領域１４０、単語境界情報格納型ｎ−ｇｒａｍインデクス格納領域１４１、形態素解析用辞書格納領域１４２および各種プログラム格納領域１４３が確保されている。
以上が本文書検索システムの構成である。
【００２２】
次に、本実施例における本文書検索システムの文書登録時の処理の概要について説明する。
始めに、キーボード２０から入力される登録コマンドによりシステム制御プログラム１００は登録制御プログラム１１０を起動し、文書の登録処理を開始する。  文書登録時の処理を図５に示すPAD(Problem Analysis Diagram)を用いて説明する。
登録制御プログラム１１０は、フロッピディスク５０に格納されている全ての登録対象文書について、ステップ１００１からステップ１００５までに示す一連の処理を繰り返し実行する（ステップ１０００）。
まず、ステップ１００１ではフロッピディスクドライバ４０を通じてフロッピディスク５０に格納されている登録対象文書群から未処理の文書を１個選択し、主メモリ６０上のワークエリア１３０に読み出す。
次に、ステップ１００２で、ステップ１００１で読み込んだ登録対象文書に対し、文書データベース中で該当文書を一意に識別するための番号である文書識別子を割り当てる。また、登録対象文書を磁気ディスク７０上のテキスト格納領域１４０に格納する。
【００２３】
さらに、ステップ１００３において主メモリ６０上のワークエリア１３０に読み込まれた登録対象文書に対し、単語境界識別プログラム１１１を実行し、磁気ディスク７０上の形態素解析用辞書１４２を参照しながら形態素解析処理を行うことにより、単語の抽出処理を行い、単語の境界位置に識別記号を付加していく。
そして、ステップ１００４で登録用ｎ−ｇｒａｍ抽出プログラム１１２を実行し、登録対象文書中から所定長の部分文字列（ｎ−ｇｒａｍ）を検索用インデクス生成対象文字列として抽出する。
最後に、単語境界情報格納型ｎ−ｇｒａｍインデクス作成登録プログラム１１３を実行し、ステップ１００４において抽出されたｎ−ｇｒａｍの文字位置情報に加え、該当ｎ−ｇｒａｍの先頭文字が単語の先頭境界に当たる場合には先頭境界識別情報を、また該当ｎ−ｇｒａｍの末尾文字が単語の末尾境界に当たる場合には末尾境界識別情報を付加した検索用インデクスを作成する。
そして、これを磁気ディスク７０上の単語境界情報格納型ｎ−ｇｒａｍインデクス格納領域１４１に格納する。
以上が本実施例における登録処理の概要である。
【００２４】
次に、図５におけるステップ１００３、ステップ１００４およびステップ１００５の処理内容について簡単に説明を補足する。
まず、ステップ１００３における単語境界識別プログラムでは登録対象文書の内容を解析することにより単語を抽出し、各単語の先頭および末尾に識別記号を付与したテキストを生成しワークエリア１３０に出力する。
なお、本実施例における単語の抽出処理では公知例２に記載されている形態素解析技術に基づく方法も用いるものとする。
【００２５】
また、ステップ１００４における登録用ｎ−ｇｒａｍ抽出処理では、ステップ１００３によりワークエリア１３０上に生成された単語の先頭および末尾の識別記号を付与されたテキストから、所定長の部分文字列（ｎ−ｇｒａｍ）を抽出する。
ここで抽出するｎ−ｇｒａｍの文字長は検索性能および検索用インデクスの容量に大きく依存するが、説明の簡略化のため本実施例では登録対象文書中の全ての１文字を抽出する方法（１−ｇｒａｍインデクス方式）を用いるものとする。
そして、単語の先頭を表す識別記号直後および単語の末尾を表す識別記号直前の１−ｇｒａｍについては、それを識別するための符号を付与する。
【００２６】
さらに、ステップ１００５における単語境界情報格納型ｎ−ｇｒａｍインデクス作成登録プログラムでは、ステップ１００４で抽出した登録対象文書中の全ての１文字（１−ｇｒａｍ）について、登録対象文書における文書識別子と各１−ｇｒａｍが登録対象文書内の何文字目に現れたかを示す出現位置情報の組みを文字位置情報として生成する。
また、各１−ｇｒａｍが単語の先頭を表す識別記号直後の場合には単語の先頭境界識別情報を、単語の末尾を表す識別記号を直前の１−ｇｒａｍについては単語の末尾境界識別情報を付与した検索用インデクスを作成する。
【００２７】
以下、本プログラムの処理内容について図６に示すPADを用いて説明する。
まず、ステップ１１００では既に登録済みの文書があるか否かを判定する。
そして、その判定の結果、まだ登録された文書が存在しない場合にはステップ１１０１においてトライおよび検索用インデクス(単語境界情報格納型ｎ−ｇｒａｍインデクス)の初期化処理を行う。
次に、ステップ１１０２において該当文書の文書識別子を抽出した後、ステップ１１０３において、単語境界情報を付与したテキストデータの先頭から末尾に至るまでステップ１１０４からステップ１１０８に示す一連の処理を繰り返す。
すなわち、ステップ１１０４において登録用ｎ−ｇｒａｍとしてテキストデータから１文字（１−ｇｒａｍ）を読み込み、ステップ１１０５において該当文字がトライに登録済みであるか否かを判定する。
そして、トライ未登録の場合にはステップ１１０６において該当文字に関するインデクス格納領域をアロケートした後、ステップ１１０７でトライへの登録処理を行う。
そして、ステップ１１０８において該当文字に関するインデクス格納領域末尾に該当文書の文書識別子、文字位置を格納するとともに、該当文字が単語の先頭境界の場合には単語の先頭境界フラグに“１”を付与する。
また該当文字が単語の末尾境界の場合には単語の末尾境界識フラグに“１”を付与した検索用インデクス（単語境界情報格納型ｎ−ｇｒａｍインデクス）を生成し、これを磁気ディスク７０上の単語境界情報格納型ｎ−ｇｒａｍインデクス格納領域１４１に格納する。
以上が、本実施例におけるステップ１００３、１００４および１００５の処理内容である。
【００２８】
次に、本実施例における文書登録時の具体的な処理内容について、「新型の電気温水器を開発した。」という文書が登録された場合を例に説明する。
本例では、登録対象文書は１件であるため図５に示すPADにおけるステップ１０００の繰り返し処理は、本文書のみを対象として実行されることになる。
まず、図５に示すPADにおけるステップ１００１では、「新型の電気温水器を開発した。」というテキストデータを主メモリ６０上ワークエリア１３０に読み込む。
そして図５に示すPADにおけるステップ１００２において、本登録対象文書をデータベース中で一意に識別するための番号として文書識別子001を割り当てる。  次に、図５に示すPADにおけるステップ１００３では、形態素解析用辞書を参照することにより単語として“新型”、“電気温水器”および“開発”を識別する。
そして図７に示すように、それらの前方と末尾に、それぞれ単語の先頭を表わす識別記号“[TOW]”（TOWはTop Of Wordの略）およびそれぞれ単語の末尾を表わす識別記号“[EOW]”（EOWはEnd Of Wordの略）を付加して主メモリ６０上のワークエリア１３０に格納する。
【００２９】
さらにステップ１００４では、図８に示すようにステップ１００３において生成された単語の境界情報を付加したテキストデータから、登録対象となるｎ−ｇｒａｍとして該当文書中の全ての１文字“新”、“型”、“の”、“電”、“気”、“温”、“水”、“器”、“を”、・・・を抽出する。
そして、単語の先頭境界の直後の文字にあたる“新”、“電”および“開”に対し先頭境界情報を、また単語の末尾境界の直前の文字にあたる“型”、“器”および“発”に対し末尾境界情報を付与する。
【００３０】
最後にステップ１００５で、ステップ１００４において抽出したｎ−ｇｒａｍに対し該当文書の文書識別子（Did）および該当文書内での文字位置（Pos）を出現位置情報として格納するとともに、単語の境界フラグを付与した検索用インデクス（単語境界情報格納型ｎ−ｇｒａｍインデクス）およびトライを生成する。
【００３１】
すなわち、まずはじめに図６に示すPADのステップ１１００を実行するが、この時点では登録済みの文書が存在しないためステップ１１００での判定結果は“なし”となり、ステップ１１０１においてトライおよび単語境界情報格納型ｎ−ｇｒａｍインデクスの初期化処理を行う。
そして、ステップ１１０２において登録対象文書の文書識別子“001”を抽出する。
次にステップ１１０３における繰り返し処理の１回目の処理としてステップ１１０４で第一文字目の“新”を抽出する。
この時点では“新”は未だ登録されていないため、ステップ１１０５での判定結果は“未登録”であり、ステップ１１０６において“新”に関するインデクス領域をアロケートするとともにステップ１１０７において該当インデクス領域へのポインタ“Pt1”をトライに登録する。
そして、ステップ１１０８において文書識別子Didとして“001”を、文字位置Posとして“1”を格納するとともに単語の先頭境界フラグに“１”を、末尾境界フラグに“０”付与したインデクスを生成する。
次に、ステップ１１０３における繰り返し処理の２回目の処理としてステップ１１０４で第二文字目の“型”を抽出する。
この時点では“型”は未登録のため、ステップ１１０５での判定結果は“未登録”とあり、ステップ１１０６において“型”に関するインデクス領域をアロケートするとともにステップ１１０７において該当インデクス領域へのポインタ“Pt2”をトライに登録する。
そして、ステップ１１０８において文書識別子Didとして“001”を、文字位置Posとして“2”を格納するとともに単語の先頭境界フラグに“０”を、末尾境界フラグに“１”付与したインデクスを生成する。
以下、同様の処理を全てのテキストデータに対し繰り返すことにより図８に示すトライおよび検索用インデクス（単語境界情報格納型ｎ−ｇｒａｍインデクス）を生成する。
そして、これを磁気ディスク７０上の単語境界情報格納型ｎ−ｇｒａｍインデクス格納領域１４１に格納することにより登録処理を完了する。
以上が本実施例における登録時の処理例である。
【００３２】
次に、検索時の処理について説明する。
本実施例における文書検索システムに対してネットワークを介してユーザから検索コマンドが入力されると、システム制御プログラム１００は検索制御プログラム１２０を起動し、文書の検索処理を開始する。
文書検索時の処理を図９に示すPADを用いて説明する。
始めに、検索制御プログラム１２０はステップ２０００で検索用ｎ−ｇｒａｍ抽出プログラム１２１を実行し、指定された検索タームから全ての１文字（１−ｇｒａｍ）を抽出することにより検索用のｎ−ｇｒａｍを抽出する。
次に、ステップ２００１で検索用インデクス抽出プログラム１２２を実行し、ステップ２０００で抽出した全ての１−ｇｒａｍについて検索用インデクス（単語境界識別情報格納型ｎ−ｇｒａｍインデクス）を参照し、検索を実行するために必要となるインデクスデータを抽出する。
そして、ステップ２００２において検索条件判定プログラム１２３を実行し、指定された検索条件が単語の境界を意識しない任意語での検索であるか、単語の境界を意識した単語識別検索であるかを判定する。
そして、指定された検索条件が任意語検索の場合にはステップ２００３において任意語検索プログラム１２４を実行し、単語境界を意識しない任意語での検索を行う。
また、指定された検索条件が単語識別検索の場合には、ステップ２００４で単語識別検索プログラム１２５を実行し、単語境界を意識した検索を行う。
最後に、検索制御プログラム１２０は、以上の処理によって得られた検索結果をシステム制御プログラム１００を介して検索者に返送することにより検索処理を終了する。
以上が、本実施例における検索処理の概要である。
【００３３】
次に、図９におけるステップ２００３およびステップ２００４の処理内容について簡単に説明を補足する。
まず、ステップ２００３における任意語検索プログラム１２４では、単語の先頭および末尾境界フラグを参照することなく従来技術（例えば、公知例１）に示されているように指定された検索タームを含む文書の検索を行う。
すなわち、各ｎ−ｇｒａｍに関するインデクスデータとして格納されている文書識別子と文字位置を参照し、各ｎ−ｇｒａｍが同一文書中に存在し、かつ各ｎ−ｇｒａｍの並びが検索タームと同一である文書を抽出することにより検索を行う。
【００３４】
また、ステップ２００４における単語識別検索プログラム１２５では、上述したステップ２００３における任意語検索処理に加え、単語の先頭および末尾境界フラグを利用した判定処理を行う。
ここで想定している単語識別検索としては単語の前方一致検索（例えば検索タームとして“気温”を指定した場合に“気温差”、“気温変化”などを含む文書を検索）、後方一致検索（例えば検索タームとして“気温”を指定した場合に“外気温”、“平均気温”などを含む文書を検索）、ならびに完全一致検索（例えば検索タームとして“気温”を指定した場合に“気温”そのものを含む文書のみを検索）がある。
そして、これらのそれぞれに対し、前方一致検索の場合には検索タームの先頭から抽出したｎ−ｇｒａｍに関する単語の先頭境界フラグに“１”が設定されているものだけを、後方一致検索の場合には検索タームの末尾から抽出したｎ−ｇｒａｍに関する単語の末尾境界フラグに“１”が設定されているものだけを、また完全一致検索の場合にはこれらの両方に“１”が設定されているものだけを抽出することにより単語境界を意識した検索を実行する。
以上が検索時処理の処理内容である。
【００３５】
次に、各種検索条件が指定された場合について、具体的な検索処理の内容を例を挙げて説明する。
まず、図８に示すトライおよび検索用インデクスを対象として検索ターム“電気温水器”で任意語検索を行った場合の処理例について図１０を用いて説明する。
まず、図９に示すPADのステップ２０００において検索用ｎ−ｇｒａｍ抽出処理を実行することにより、検索ターム中“電気温水器”中の全ての１−ｇｒａｍ“電”、“気”、“温”、“水”および“器”を抽出する。
そしてステップ２００１において検索用インデクス抽出処理を実行することにより図８に示すトライおよび検索用インデクスから“電”、“気”、“温”、“水”および“器”に該当するインデクスデータを抽出する。
そして、本例では検索条件は任意語検索であるため、ステップ２００２における判定結果は“任意語検索”となり、ステップ２００３の任意語検索処理を実行する。
すなわち、本処理では“電”、“気”、“温”、“水”および“器”に関するインデクスデータが同一の文書識別子（Did）を持ち、かつ文字位置（Pos）が１ずつ異なって連続しているか否かを判定することにより、文書識別子Didが001である文書の文字位置4に指定された検索タームが存在することが分かる。
【００３６】
次に、先ほどと同様に図８に示すトライおよび検索用インデクスを対象として検索ターム“電気温水器”で単語の完全一致検索を行った場合の処理例について図１１を用いて説明する。
まず、図９に示すPADのステップ２０００およびステップ２００１においては、先ほどの例と同一の処理を行うことにより、図８に示すトライおよび検索用インデクスから“電”、“気”、“温”、“水”および“器”に該当するインデクスデータを抽出する。
次に、ステップ２００２で検索条件の判定処理を行うが、本例では検索条件は単語の完全一致検索（単語識別検索）であるため、判定結果は“単語識別検索”となり、ステップ２００４の単語識別検索処理を実行する。
すなわち、本処理では“電”、“気”、“温”、“水”および“器”に関するインデクスデータが同一の文書識別子（Did）を持ち、かつ文字位置（Pos）が１ずつ異なって連続しているか否かを判定することにより、文書識別子Didが001である文書の文字位置4に指定された検索タームが存在することが分かる。
さらに単語の境界判定処理を行うことにより、検索ターム“電気温水器”から抽出した先頭のｎ−ｇｒａｍ“電”の先頭境界フラグが“１”であり、かつ末尾のｎ−ｇｒａｍ“器”の末尾境界フラグが“１”であるものを抽出することにより、検索結果として文書識別子Didが001である文書の文字位置4を検索結果として出力する。
【００３７】
さらに、先ほどと同様に図８に示すトライおよび検索用インデクスを対象として検索ターム“気温”で単語の完全一致検索を行った場合の処理例について図１２を用いて説明する。
まず、図９に示すPADのステップ２０００およびステップ２００１において、検索用ｎ−ｇｒａｍ抽出処理および検索用インデクス抽出処理を行うことにより、図８に示すトライおよび検索用インデクスから“気”および“温”に該当するインデクスデータを抽出する。
次に、ステップ２００２で検索条件の判定処理を行うが、本例では検索条件は単語の完全一致検索（単語識別検索）であるため、判定結果は“単語識別検索”となり、ステップ２００４の単語識別検索処理を実行する。
すなわち、本処理では“気”および“温”に関するインデクスデータが同一の文書識別子（Did）を持ち、かつ文字位置（Pos）が１ずつ異なって連続しているか否かを判定することにより、文書識別子Didが001である文書の文字位置5に指定された検索タームが存在することが分かる。
さらに単語の境界判定処理では、検索ターム“気温”から抽出した先頭のｎ−ｇｒａｍ“気”の先頭境界フラグが“１”であり、かつ末尾のｎ−ｇｒａｍ“温”の末尾境界フラグが“１”であるものを抽出するが、ここではこれらのフラグが共に“０”であるため検索結果として出力されない。
以上が本実施例における文書検索時の処理内容である。
【００３８】
このように、本発明によると文書の登録時に登録対象文書に対し形態素解析処理を行い単語の境界を識別するとともに、該当ｎ−ｇｒａｍが単語の先頭境界であったか否かを示す先頭境界フラグ、ならびに末尾境界であったか否かを示す末尾境界フラグを付加した検索用のインデクスを生成する。
そして、検索時に検索条件が単語の境界を意識した単語識別検索の場合には、検索タームの先頭から抽出したｎ−ｇｒａｍに関する先頭境界フラグおよび末尾から抽出したｎ−ｇｒａｍに関する末尾境界フラグから、単語識別検索（単語の前方一致検索、末尾一致検索、完全一致検索）を実現することが可能になる。
さらに、本例では図７における形態素解析用辞書に“電気温水器”が登録されていることを前提として説明を行った。
しかし、文書登録の時点で“電気”および“温水器”が辞書に登録されているが、その複合語である“電気温水器”が辞書に登録されていない場合にも、“電”が“電気温水器”を構成する単語“電気”の先頭境界であり、“器”が“電気温水器”を構成する単語“温水器”の末尾境界であることから、複合語である検索ターム“電気温水器”に対する単語一致検索を実現することが可能である。
【００３９】
なお、本実施例では登録対象１件毎に磁気ディスク７０におけるテキスト格納領域１４０ならびに単語境界情報格納型ｎ−ｇｒａｍインデクス格納領域１４１上のデータを更新していく方式について述べたが、全ての登録対象文書に対するテキストおよび単語境界情報格納型ｎ−ｇｒａｍインデクスを主メモリ６０上のワークエリア１８０に作成したあと、これらを一括して磁気ディスク７０に書き込む方式であっても構わない。
【００４０】
また、本実施例では単語境界識別プログラム１１１として公知例２に示されている形態素解析処理を行う方式について述べたが、文書の先頭から順次単語辞書を機械的に参照しながら文字列を抽出していく方法であっても構わないし、例えば漢字、カタカナやアルファベットなどの連続した同一文字種文字列を単語として切り出すといったように、漢字、カタカナ、平仮名、数字、記号およびアルファベットといった文字種情報を用いて分割した単語を用いる方法であっても構わない。
また、特願平１０−１４８７２１に開示したように、テキストデータベースから抽出した各ｎ−ｇｒａｍ前後での文字種の区切れ目に着目し、全出現頻度に対してその前後に文字種の区切れ目が出現した確率（文字種境界確率）を用いて単語を抽出する処理であっても構わない。
すなわち、本方式に基づく文書検索方法では、所定の文書から抽出したｎ−ｇｒａｍに対し、該当ｎ−ｇｒａｍの出現回数を算出する。また、該当ｎ−ｇｒａｍの前に文字種の変化点が現れた回数および該当ｎ−ｇｒａｍの後方で文字種の変化点が現れた回数を計数することにより、各ｎ−ｇｒａｍの前方に文字種の変化点が現れる確率と各ｎ−ｇｒａｍの後方で文字種の変化点が現れる確率を算出し、それぞれを前方文字種境界確率および後方文字種境界確率としておく。
そして文書登録時には、登録文書内の各文字位置において、その前後のｎ−ｇｒａｍを抽出し、前方側のｎ−ｇｒａｍにおける後方文字種境界確率と後方ｎ−ｇｒａｍにおける前方文字種境界確率から、単語境界を判定する方式であっても構わない。
【００４１】
さらに、本実施例における登録用ｎ−ｇｒａｍ抽出プログラム１１２では登録対象文書から、また検索用ｎ−ｇｒａｍ抽出プログラム１２２では検索タームから全ての１文字を文字列を抽出する１−ｇｒａｍインデクス方式について述べたが、１文字以上の所定長の部分文字列に対して検索用インデクスを作成するｎ−ｇｒａｍインデクス方式一般について本発明に示す検索機能は適用可能であることは云うまでもない。
また、公知例１に示されているように、データベース中での出現頻度に応じてインデクス作成対象とする部分文字列長（ｎ−ｇｒａｍ長）を動的に変更するインクリメンタルｎ−ｇｒａｍインデクス方式に適用することも可能である。
【００４２】
そして、本実施例では検索用プログラムおよび登録用プログラムを磁気ディスク上７０上の各種プログラム格納領域１４３に格納したが、光磁気ディスク装置など他の二次記憶装置に格納する構成であっても構わない。
また、ＣＤ−ＲＯＭなどの可搬型の媒体に格納し、これらを必要に応じてＣＤ−ＲＯＭドライブ（図示せず）から読み出す構成であっても構わない。
また、上記実施例からも明らかなように、登録用のプログラムと検索用のプログラムは独立して動作することが可能であることから、これらを別々の媒体に格納することも可能であるし、別々のコンピュータシステムないしはＣＰＵで動作させることも可能である。
【００４３】
【発明の効果】
本発明によると、指定された検索タームを含む文書を漏れなく検索できる任意語での検索と、指定された検索タームが別単語中の部分文字列として存在する文書を検索結果から排除する単語境界を意識した検索を、検索目的に応じて使いわけることのできる、保守性に優れた検索システムを、高性能かつ安価に提供することが可能になる。
【図面の簡単な説明】
【図１】本発明の第一の実施例における構成を示す図である。
【図２】従来方式１（ｎ−ｇｒａｍインデクス方式）の概要を示す図である。
【図３】従来方式におけるトライの構成を示す図である。
【図４】公知例１の処理内容を示す図である。
【図５】実施例における登録処理のフローを示す図である。
【図６】実施例における単語境界情報格納型ｎ−ｇｒａｍインデクス作成登録プログラムの処理フローを示す図である。
【図７】実施例における登録処理（単語境界識別処理）の例を示す図である。
【図８】実施例における登録処理（登録用ｎ−ｇｒａｍ抽出処理および単語境界情報格納型ｎ−ｇｒａｍインデクス作成登録処理）の例を示す図である。
【図９】実施例における検索処理のフローを示す図である。
【図１０】実施例における検索処理の例（1）を示す図である。
【図１１】実施例における検索処理の例（2）を示す図である。
【図１２】実施例における検索処理の例（3）を示す図である。
【符号の説明】
１０  ディスプレイ
２０  キーボード
３０  中央演算処理装置ＣＰＵ
４０  フロッピディスクドライバ
５０  フロッピディスク
６０  主メモリ
７０  磁気ディスク
８０  バス
１００  システム制御プログラム
１１０  登録制御プログラム
１１１  単語境界識別プログラム
１１２  登録用ｎ−ｇｒａｍ抽出プログラム
１１３  単語境界情報格納型ｎ−ｇｒａｍインデクス作成登録プログラム
１２０  検索制御プログラム
１２１  検索用ｎ−ｇｒａｍ抽出プログラム
１２２  検索用インデクス抽出プログラム
１２３  検索条件判定プログラム
１２４  任意語検索プログラム
１２５  単語識別検索プログラム
１３０  ワークエリア
１４０  テキスト格納領域
１４１  単語境界情報格納型ｎ−ｇｒａｍインデクス格納領域
１４２  形態素解析用辞書格納領域
１４３  各種プログラム格納領域
【図１】
0003696745.tif 000002
【図２】
0003696745.tif 000003
【図３】
0003696745.tif 000004
【図４】
0003696745.tif 000005
【図５】
0003696745.tif 000006
【図６】
0003696745.tif 000007
【図７】
0003696745.tif 000008
【図８】
0003696745.tif 000009
【図９】
0003696745.tif 000010
【図１０】
0003696745.tif 000011
【図１１】
0003696745.tif 000012
【図１２】
0003696745.tif 000013