JP3620968B2 - 文書検索方法及びその実施装置並びにその処理プログラムを記録した媒体 - Google Patents
文書検索方法及びその実施装置並びにその処理プログラムを記録した媒体 Download PDFInfo
- Publication number
- JP3620968B2 JP3620968B2 JP22182998A JP22182998A JP3620968B2 JP 3620968 B2 JP3620968 B2 JP 3620968B2 JP 22182998 A JP22182998 A JP 22182998A JP 22182998 A JP22182998 A JP 22182998A JP 3620968 B2 JP3620968 B2 JP 3620968B2
- Authority
- JP
- Japan
- Prior art keywords
- index
- search
- character string
- program
- partial character
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
【発明の属する技術分野】
本発明は新聞記事や特許明細書の様に日々増加していく大規模な文書データベースから所望の文書を探索する文書検索システムに関し、特に指定した文字列の存在を文書の全文を対象として探索するフルテキストサーチの為の文書検索システムに適用して有効な技術に関するものである。
【0002】
【従来の技術】
指定された検索文字列(以下、検索タームと呼ぶ)が含まれる文書を大規模な文書データベースから高速に探し出す方法として、n−gramインデクス方式(以下、方法1と呼ぶ)がある。
【0003】
n−gramインデクス方式とは、文書の登録時に文書中の全てのn−gram(連続するn文字からなる文字列)についてその出現位置情報をインデクスとして格納しておき、検索時には検索ターム中のn−gramに対してそのインデクスを参照し、検索ターム中の位置関係とインデクス中の位置関係が等しいかどうかを判定(以下、隣接判定と呼ぶ)することによって、検索タームが出現する文書を探し出す方法である。
【0004】
図20は従来の1−gramインデクス方式の一例を示す図である。本図に示す様に、方法1では、文書の登録時に文書中の全てのn−gram(図20の例ではn=1)についてその出現位置情報をインデクスとして格納する。例えば、“に”という1−gramは文書‘001’の‘3’文字目に出現するので、その文書番号‘001’と文字位置‘3’を“に”に対応するインデクス200に格納する。
【0005】
検索時には、指定された検索タームから抽出したn−gramのインデクス間で出現位置情報の隣接判定を行うことにより、検索タームの出現位置情報を取得する。例えば、“微生物”が検索タームとして指定された場合には、この検索タームからまず、1−gram“微”、“生”及び“物”を抽出する。そして、“微”に対応するインデクス201、“生”に対応するインデクス202及び“物”に対応するインデクス203の間で出現位置情報の隣接判定を行うことによって、“微生物”の出現位置情報を取得する。本図の例では、“微”、“生”及び“物”が文書番号‘001’の‘9’文字目からと、文書番号‘056’の‘5’文字目からとで隣り合っているので、それらの出現位置に“微生物”が存在することが分かる。
【0006】
以上の様に方法1では、文書を走査することなしにインデクスの読込みと出現位置情報の隣接判定だけで検索が行える為、大規模な文書データベースに適用した場合でも高速なフルテキストサーチを実現できる可能性がある。
【0007】
しかし方法1では、nを1とすると、すなわち1−gramのインデクスを用いると、1−gramは全文書中(データベース中)における出現頻度が高い為、一つの1−gramに対する出現位置情報が増え、個々のインデクスのサイズが大きくなる。この為インデクスの読込みに時間が掛かるばかりでなく、出現位置情報による隣接判定の回数も増える為、検索に時間が掛かるという問題が生じる。
【0008】
検索を高速にする為にはnの値を増やしたサイズの小さなインデクスを作成する必要があるが、短い検索タームが指定された場合でも検索が行える様にnの小さなインデクスも全て作成しておかなければならない。その結果、総インデクスサイズが膨大になってしまう。
【0009】
また、方法1の様なインデクス型の文書検索方法では、“キー探索技法−IVトライとその応用”(青江順一著、情報処理Vol.34、No.2、1993、pp.244−251)に記載されているトライの様な木構造で文字列(方法1の場合はn−gram)を管理する必要がある。
【0010】
トライとは検索対象となる文字列すなわちキーワードの集合(以下、キー集合と呼ぶ)における各キーワード(以下、キーと呼ぶ)に共通な前方部分文字列を共通の節で括り出して作られる木構造である。
【0011】
このトライは登録や検索の際に用いられ、登録する文字列或いは検索ターム中の文字列でキーを辿ってトライを探索することにより、その文字列に対応するインデクスを指し示すポインタ情報を取得することができる。トライの探索に掛かる時間はキーの数に依存しない為、大規模なデータベースに適用した場合でも、高速にキーワードを探索できるという特徴がある。
【0012】
図21は従来のキー集合{baby、badge、badger、jar}に対応するトライの構成を示す図である。このトライでは節1(300)から節2(301)へ枝ラベルb(302)が定義され、二重丸で示すキーの末尾にあたる節にはそのキーに対するインデクスへのポインタ情報が設定されている。
【0013】
例えば、検索タームとして“baby”が指定された場合には、文字列“baby”で本図のトライを探索することにより、節5(303)に設定されているポインタ情報Pt1が得られ、このポインタ情報Pt1が示す先に検索ターム“baby”に対応するインデクスが格納されていることになる。
【0014】
方法1において、このトライを用いてn−gramを管理する際、個々のインデクスのサイズを小さくして検索を高速にする為にn−gramを長くしたインデクスを作成すると、n−gramの種類が増え、トライの節が増える為、トライ全体の規模が膨大になってしまうという問題がある。
【0015】
以上説明した、検索時間の長大化と、総インデクスサイズとインデクスを管理する木構造サイズの巨大化という相反する問題を解決する為に、インデクスのサイズがある基準値(以下、基準インデクスサイズと呼ぶ)を超えたn−gramに対してのみ、nの値を増やしてサイズの小さなインデクスを作成することにより、常にサイズの小さなインデクスの読込みと出現位置情報の隣接判定で済む様にして、高速な検索を実現すると共に、総インデクスサイズ及びインデクスを管理する木構造(以下、トライで説明する)サイズの巨大化を防ぐ文書検索方法及び装置が特開平8−194718号公報(以下、公知例1と呼ぶ)に開示されている。
【0016】
図22は従来の公知例1の処理内容を示す図である。本方法では、文書の登録時にn−gramに対応するインデクスを作成する共に、文書中の2文字の接続情報をトライ401に登録する。そして、文書を登録していき、インデクスのサイズが基準インデクスサイズを超えた場合には、対応するn−gramに文字列を追加したn−gram(以下、拡張n−gramと呼ぶ)のインデクスを作成する。
【0017】
以下、図22を用いてインデクスの作成方法を具体的に説明する。n−gramに文字列を追加した拡張n−gramを作成する為には、まずトライ401を参照してそのn−gramに続く可能性のあるn−gramを取得する。
【0018】
そして、検出されたn−gram(以下、接続n−gramと呼ぶ)のインデクスと基準インデクスサイズよりサイズが大きくなったn−gram(以下、基準インデクス超過n−gramと呼ぶ)のインデクスの間で出現位置情報の隣接判定を行うことにより、拡張n−gramのインデクスを作成する。
【0019】
本図の例では、“生”という1−gramに対応するインデクスが基準インデクスサイズより大きくなっており、“生”が基準インデクス超過n−gramとなる。ここで、まず“生”という文字でトライ401を探索し、“生”に続く接続n−gramを取得する。本図に示す例では、トライ401を探索することにより、“生”の後ろに“物”と“息”が続くことが分かる。そこで、“生”と“物”、“生”と“息”のインデクスの間で出現位置情報の隣接判定を行うことにより、“生物”、“生息”といった“生”に文字列を追加した拡張n−gramのインデクス400を作成する。
【0020】
以上の様に、公知例1に開示されている文書検索方法及び装置を用いることにより、サイズが大きく検索に時間が掛かるインデクスに対しては、そのn−gramに文字列を追加した拡張n−gramに対するインデクスを作成する為、サイズの小さなインデクスの読込みと出現位置情報の隣接判定で済む様になり、高速な検索を実現することができる様になる。また、それ以外のインデクスに対しては、n−gramの長さを増やしたインデクスを作成しない為、総インデクスサイズ及びn−gramを管理する木構造(トライ)サイズの巨大化を防ぐことができる。
【0021】
【発明が解決しようとする課題】
以上説明した公知例1に開示されている文書検索方法及び装置によると、基準インデクスサイズよりサイズが大きく検索に時間が掛かるインデクスに対しては、そのキーであるn−gramに文字列を追加したサイズの小さなインデクスを作成することになる為、サイズの小さなインデクスの読込みと出現位置情報の隣接判定で済む様になり、高速な検索を実現することが可能となる。また、基準インデクスサイズよりサイズの小さなインデクスに対しては、それ以上n−gramを長くしたインデクスを作成しない為、総インデクスサイズ及びn−gramを管理する木構造(トライ)サイズの巨大化を防ぐことが可能となる。
【0022】
しかし、公知例1に開示されている文書検索方法及び装置では、インデクスのサイズのみに基づいてn−gramに文字列を追加した拡張n−gramのインデクスを作成している。その結果、実際には検索にあまり用いられることのないn−gram(例えば、助詞として用いられる平仮名等)に対してもインデクスサイズが大きくなった場合には、拡張n−gramのインデクスが作成されることになる。
【0023】
これらのn−gramは検索にあまり用いられることがない為、インデクスサイズというコストを支払っても、検索性能の高速化というメリットが得られないn−gramであり、無駄なインデクスになるという問題がある。
【0024】
本発明の目的は上記問題を解決し、検索性能の高速化を図ると共に総インデクスサイズの増加を最小限に抑えることが可能な技術を提供することにある。
【0025】
【課題を解決するための手段】
本発明は、特定の検索タームを含むテキストデータを検索する文書検索システムにおいて、テキストデータから作成した部分文字列に対応するインデクスのサイズが基準インデクスサイズより大きく、該インデクスに対応する部分文字列が検索される可能性が高い場合に、該部分文字列に文字列を追加した拡張部分文字列と該拡張部分文字列に対応するインデクスを作成するものである。
【0026】
本発明の文書検索システムでは、まずインデクス作成登録ステップで、文書情報を文字コードデータとして蓄積したテキストデータベースを対象として、登録対象テキストデータから所定の部分文字列と、該部分文字列の該対象テキストデータにおけるテキスト識別情報及び出現位置情報を含む位置情報とを抽出し、該位置情報をインデクスとして記憶し、前記部分文字列と前記インデクスの記憶位置を管理する為の部分文字列テーブルを更新する。
【0027】
特定の検索タームを含むテキストデータを検索する場合には、インデクス検索ステップにより、前記部分文字列テーブルを参照して検索タームから所定の部分文字列を抽出し、該当インデクスを読み出し、該検索タームにおける部分文字列と同じ位置関係を持つテキストデータの位置情報を抽出する。
【0028】
一方、インデクスサイズ比較ステップでは、テキストデータから作成した部分文字列に対応するインデクスのサイズと予め定められた基準インデクスサイズとを比較し、該インデクスのサイズが該基準インデクスサイズより大きい場合には、検索可能性判定ステップにより、該インデクスに対応する部分文字列が前記インデクス検索ステップで検索される可能性が高いかどうかを判定する。
【0029】
該部分文字列が前記インデクス検索ステップで検索される可能性が高い場合には、文字列インクリメントステップにより、該部分文字列に文字列を追加した拡張部分文字列と該拡張部分文字列に対応するインデクスを作成し、前記部分文字列テーブルを更新する。
【0030】
前記検索可能性判定ステップは、特定のインデクスに対応する部分文字列が前記インデクス検索ステップで検索される可能性が高いかどうかを、例えばインデクスに対応する参照頻度に応じて判定する。
【0031】
すなわち、前記インデクス検索ステップでインデクスの読み出しを行った際に、インデクスの読み出し回数を管理する参照頻度テーブルを参照頻度テーブル更新ステップにより更新し、前記検索可能性判定ステップである参照頻度比較ステップは、前記参照頻度テーブル内の該インデクスに対応する参照頻度と予め定められた基準参照頻度とを比較し、前記参照頻度テーブル内の該インデクスに対応する参照頻度が基準参照頻度より大きい場合には、該部分文字列に文字列を追加した拡張部分文字列と該拡張部分文字列に対応するインデクスを文字列インクリメントステップにより作成する。
【0032】
また前記検索可能性判定ステップは、特定のインデクスに対応する部分文字列が前記インデクス検索ステップで検索される可能性が高いかどうかを、ユーザが入力した重要語に応じて判定しても良い。
【0033】
すなわち、ユーザが入力した重要語を重要語登録ステップにより重要語テーブルに格納しておき、前記検索可能性判定ステップである重要文字列検索ステップは、該インデクスに対応する部分文字列が前記重要語テーブルに格納されている重要語に含まれるかどうかを調べる。該インデクスに対応する部分文字列が前記重要語テーブルの重要語に含まれている場合には、該部分文字列に文字列を追加した拡張部分文字列と該拡張部分文字列に対応するインデクスを文字列インクリメントステップにより作成する。
【0034】
また前記検索可能性判定ステップは、特定のインデクスに対応する部分文字列が前記インデクス検索ステップで検索される可能性が高いかどうかを、相互に関連のある語を予め関連付けた関連語に応じて判定しても良い。
【0035】
すなわち、相互に関連のある語を予め関連付けて格納した関連語ファイルを作成しておき、前記検索可能性判定ステップである展開語検索ステップは、該インデクスに対応する部分文字列が前記関連語テーブルに格納されている関連語に含まれるかどうかを調べる。該インデクスに対応する部分文字列が前記関連語テーブルの関連語に含まれている場合には、該部分文字列に文字列を追加した拡張部分文字列と該拡張部分文字列に対応するインデクスを文字列インクリメントステップにより作成する。
【0036】
なお前記関連語ファイルは、前記インデクス検索ステップで検索ターム及び関連語における部分文字列と同じ位置関係を持つテキストデータの位置情報を抽出する際に、検索ターム展開ステップにより用いられるファイルである。
【0037】
前記の様に本発明によれば、基準インデクスサイズよりインデクスサイズが大きい部分文字列に対して、そのインデクスへの参照頻度と予め定められた基準参照頻度とを比較し、基準参照頻度より多い場合にはその部分文字列に文字列を増やしたサイズの小さなインデクスを作成することにより、インデクスが大きく検索に時間が掛かり、かつ検索に用いられる可能性が高い部分文字列に対しては、検索を高速化することが可能となる。
【0038】
また、インデクスは大きいが、実際には検索にあまり用いられることのない部分文字列(例えば、助詞として用いられる平仮名等)に対しては、文字列を増やしたインデクスを作成しない為、総インデクスサイズを抑えることが可能となる。その結果、総インデクスサイズの最小限の増加で、検索性能の向上を図ることが可能な文書検索システムを実現することができる。
【0039】
以上の様に本発明の文書検索システムによれば、インデクスサイズが大きく検索に時間が掛かり、かつ検索に用いられる可能性が高い部分文字列に対してのみ、文字数を増やしたサイズの小さなインデクスを作成するので、検索性能の高速化を図ると共に総インデクスサイズの増加を最小限に抑えることが可能である。
【0040】
【発明の実施の形態】
(実施形態1)
以下にサイズが大きく参照頻度の高いインデクスについて、当該インデクスに対応するn−gramに文字列を追加した拡張n−gramと拡張n−gramに対応するインデクスを作成する実施形態1の文書検索システムについて説明する。
【0041】
図1は本実施形態の文書検索システムの概略構成を示す図である。本実施形態の文書検索システムは、ディスプレイ100、キーボード101、中央演算処理装置(CPU)102、テキスト107及びインデクス108を格納する二次記憶装置としての磁気ディスク装置106、フロッピディスクドライブ(FDD)104、主記憶装置109から構成される。また、バス103にはCPU102、磁気ディスク装置106、FDD104及び主記憶装置109が接続されている。
【0042】
フロッピディスク105に格納されている情報は、FDD104によりアクセスされる。主記憶装置109には、システム制御プログラム110、文書登録制御プログラム111、インクリメント制御プログラム112、検索制御プログラム113、インデクス作成登録プログラム114、インクリメントプログラム115、検索プログラム119が格納されると共にトライ格納テーブル122、参照頻度テーブル123及びワークエリア124が確保される。
【0043】
インクリメントプログラム115は、インデクスサイズ比較プログラム116、参照頻度比較プログラム117及びn−gramインクリメントプログラム118で構成される。検索プログラム119はインデクス検索プログラム120及び参照頻度テーブル更新プログラム121で構成される。
【0044】
以上のプログラムは磁気ディスク装置106、フロッピディスク105やCD−ROM等のコンピュータで読み書きできる記録媒体に格納することもできる。
【0045】
なおインデクス検索プログラム120は、検索タームの部分文字列に対応するインデクスにより、前記検索タームにおける部分文字列と同じ位置関係を持つテキストデータの位置情報を抽出するインデクス検索ステップの処理を行う。
【0046】
インデクスサイズ比較プログラム116は、テキストデータから作成した部分文字列に対応するインデクスのサイズと予め定められた基準インデクスサイズとを比較するインデクスサイズ比較ステップの処理を行う。
【0047】
参照頻度比較プログラム117は、該インデクスのサイズが該基準インデクスサイズより大きい場合に、参照頻度テーブル123内の該インデクスに対応する参照頻度と予め定められた基準参照頻度とを比較して、該インデクスに対応する部分文字列がインデクス検索プログラム120で検索される可能性が高いかどうかを判定する参照頻度比較ステップの処理を行う。
【0048】
n−gramインクリメントプログラム118は、該部分文字列がインデクス検索プログラム120で検索される可能性が高い場合に、該部分文字列に文字列を追加した拡張部分文字列と該拡張部分文字列に対応するインデクスを作成する文字列インクリメントステップの処理を行う。
【0049】
参照頻度テーブル更新プログラム121は、インデクスの読み出し回数を管理する参照頻度テーブル123を更新する参照頻度テーブル更新ステップの処理を行う。
【0050】
システム制御プログラム110はキーボード101からの指示を受け起動する。文書登録制御プログラム111はキーボード101からの文書登録指示により、システム制御プログラム110によって起動され、インデクス作成登録プログラム114の制御を行う。
【0051】
インクリメント制御プログラム112はキーボード101からのインクリメント指示により、システム制御プログラム110によって起動され、インクリメントプログラム115の制御を行う。検索制御プログラム113はキーボード101からの検索指示により、システム制御プログラム110によって起動され、検索プログラム119の制御を行う。
【0052】
以下、本実施形態における処理内容の概要を説明する。登録の際には、キーボード101からの文書登録指示により、システム制御プログラム110が文書登録制御プログラム111を起動する。そして、文書登録制御プログラム111はインデクス作成登録プログラム114を起動し、フロッピディスク105からテキストデータを読み込んでテキスト107として磁気ディスク装置106に格納すると共に、テキスト107における所定のn−gramの出現位置情報をインデクス108として磁気ディスク装置106に格納する。
【0053】
このインデクス作成登録プログラム114の処理内容は公知例1に開示されている方法と同様である。またテキストデータはフロッピディスク105を用いて入力するだけに限らず、通信回線やCD−ROM装置(図示せず)等を用いて他の装置から入力する様な構成をとることも可能である。
【0054】
検索の際には、キーボード101からの検索指示により、システム制御プログラム110が検索制御プログラム113を起動し、検索制御プログラム113が検索プログラム119を起動する。
【0055】
図2は本実施形態の検索プログラム119の処理内容を示す図である。検索プログラム119は、図2のPAD(Problem Analysis Diagram)図に示す様に、ステップ600でインデクス検索プログラム120を起動し、キーボード101から入力された検索タームのテキスト107における出現位置情報をインデクス108から取得する。このインデクス検索プログラム120の処理内容は方法1及び公知例1に開示されている方法と同様である。
【0056】
そして、ステップ601で参照頻度テーブル更新プログラム121を起動し、インデクス検索プログラム120で用いたインデクスに対応する参照頻度テーブル123内の該当参照頻度を更新する。
【0057】
インクリメントの際には、キーボード101からのインクリメント指示により、システム制御プログラム110がインクリメント制御プログラム112を起動し、インクリメント制御プログラム112がインクリメントプログラム115を起動する。
【0058】
図3は本実施形態のインクリメントプログラム115の処理内容を示す図である。図3に示す様にインクリメントプログラム115は、ステップ700で全てのインデクスに対してステップ701からステップ705までの一連の処理を繰り返す。
【0059】
この繰り返し処理中でインクリメントプログラム115は、まずステップ701でインデクスサイズ比較プログラム116を起動し、処理対象インデクスのサイズと予め定められた基準インデクスサイズを比較する。
【0060】
そして、ステップ702で処理対象インデクスが基準インデクスサイズより大きいと判断された場合には、ステップ703で参照頻度比較プログラム117を起動し、参照頻度テーブル123に格納されている処理対象インデクスの参照頻度と予め定められた基準参照頻度を比較する。
【0061】
そして、ステップ704で処理対象インデクスの参照頻度が基準参照頻度より多いと判断された場合には、ステップ705でn−gramインクリメントプログラム118を起動し、処理対象インデクスのキーであるn−gramに文字列を追加したサイズの小さなインデクスを作成する。このn−gramインクリメントプログラム118の処理内容は公知例1に開示されている方法と同様である。
【0062】
図4は本実施形態の文書検索システムの処理例を示す図である。以下、本実施形態の処理概要について図4を用いて説明する。インデクス作成登録プログラム114の処理は、公知例1に開示されている方法と同様なので省略する。
【0063】
まず、検索プログラム119の処理概要について説明する。インデクス検索プログラム120では、ユーザが入力した検索タームから、トライの様なn−gramテーブルを参照して所定のn−gramを抽出し、n−gramに対応するインデクスの記憶位置を取得する。そして、取得したn−gramに対応するインデクスの記憶位置からインデクスを読み出し、検索タームにおけるn−gramと同じ位置関係を持つ位置情報を抽出する。この位置情報取得ステップは方法1及び公知例1に開示されている方法と同様の処理になる。
【0064】
参照頻度テーブル更新プログラム121では、位置情報取得ステップで読み出したインデクスの参照頻度(読み出した回数)を更新する。図4の例では、検索タームとして、“微生物”と“生物”が用いられたので、“微”に対応する参照頻度を‘1’“生”に対応する参照頻度を‘2’“物”に対応する参照頻度を‘2’に更新する。ここで、“に”に対応するインデクスは検索に用いられていないので参照頻度は‘0’のままである。
【0065】
次に、インクリメントプログラム115の処理概要を説明する。インデクスサイズ比較プログラム116では、インデクス作成登録プログラム114によってテキストデータから作成したn−gramに対応するインデクスのサイズと予め定められた基準インデクスサイズとを比較する。
【0066】
インデクスサイズ比較プログラム116で、n−gramに対応するインデクスのサイズが予め定められた基準インデクスサイズより大きいと判断された場合には、参照頻度比較プログラム117でインデクスに対応する参照頻度を参照頻度テーブル123から取得し、予め定められた基準参照頻度と比較する。
【0067】
参照頻度比較プログラム117で、n−gramに対応するインデクスの参照頻度が予め定められた基準参照頻度よりも多いと判断された場合には、n−gramインクリメントプログラム118で該当インデクスに対応するn−gramに文字列を追加した拡張n−gramと拡張n−gramに対応するインデクスを作成する。
【0068】
インデクスサイズ比較プログラム116及びn−gramインクリメントプログラム118は公知例1に開示されている方法と同様の処理になる。図4に示す例の場合、“に”と“生”のインデクスが大きくなっており、インデクスサイズ比較プログラム116で基準インデクスサイズよりも大きいと判断される。その為、“に”と“生”に対して参照頻度比較プログラム117が実行される。
【0069】
参照頻度比較プログラム117では、“に”と“生”の参照頻度を参照頻度テーブル123から取得し、予め定められた基準参照頻度と比較する。図4に示す例の場合、基準参照頻度は‘1’である。この結果、“生”に対応する参照頻度のみが基準参照頻度より多いと判断され、n−gramインクリメントプログラム118が実行されることにより、“生”に文字列を追加した拡張n−gramに対応するインデクスが作成される。ここで“に”に対応する参照頻度は基準参照頻度より少ないので、インデクスが大きいにもかかわらず、拡張n−gramのインデクスは作成されない。
【0070】
以上の様に、本実施形態では、基準インデクスサイズよりインデクスが大きいn−gramに対して、そのインデクスへの参照頻度と予め定められた基準参照頻度とを比較し、基準参照頻度より多い場合にはそのn−gramに文字列を増やしたサイズの小さなインデクスを作成する。そして、基準参照頻度より参照頻度が少ない場合には、たとえインデクスが大きいとしても、そのn−gramに文字列を増やしたサイズの小さなインデクスを作成しない。
【0071】
こうすることにより、インデクスが大きく検索に時間が掛かり、かつ検索に用いられる可能性が高いn−gramに対しては、検索を高速化することができる。そして、インデクスは大きいが、実際には検索にあまり用いられることのないn−gram(例えば、助詞として用いられる平仮名等)に対しては、文字列を増やしたインデクスを作成しない為、総インデクスサイズを抑えることが可能となる。その結果、総インデクスサイズの最小限の増加で、検索性能の向上を図ることが可能となる。
【0072】
以下、本実施形態における処理内容のうち、公知例1に開示されている方法と異なる検索プログラム119及びインクリメントプログラム115の処理内容を具体例を用いて詳細に説明する。
【0073】
検索プログラム119の処理内容は図2に示す通りである。まずステップ600で、インデクス検索プログラム120を起動し、キーボード101から入力された検索タームのテキスト107における出現位置情報をインデクス108から取得する。本処理内容は図20(図20の例ではn=1)に示す様に方法1及び公知例1に開示されている方法と同様である。
【0074】
例えば“微生物”が検索タームとして指定された場合には、この検索タームからまず、1−gram“微”、“生”及び“物”を抽出する。そして“微”に対応するインデクス201、“生”に対応するインデクス202及び“物”に対応するインデクス203の間で出現位置情報の隣接判定を行うことによって“微生物”の出現位置情報を取得する。
【0075】
本図の例では、“微”、“生”及び“物”が文書番号‘001’の‘9’文字目から、文書番号‘056’の‘5’文字目から隣り合っているので、それらが示す位置に“微生物”が存在することが分かる。
【0076】
次にステップ601で、参照頻度テーブル更新プログラム121を起動し、インデクス検索プログラム120で用いたインデクスに対応する参照頻度テーブル123内の該当参照頻度を更新する。
【0077】
図5は本実施形態の更新前の参照頻度テーブル123の初期状態を示す図である。本図に示す様に、参照頻度テーブル123は、個々のインデクスに対応した参照頻度が格納されるエントリで構成される。
【0078】
図6は本実施形態の検索タームとして“微生物”が指定された場合の参照頻度テーブル123の更新結果を示す図である。インデクス検索プログラム120では、1−gram“微”、“生”及び“物”のインデクスを用いて、“微生物”の出現位置情報を取得する。その為、参照頻度テーブル更新プログラム121では、“微”、“生”及び“物”のインデクスに対応する参照頻度テーブル123の該当参照頻度を‘1’に増やす。このとき、“に”のインデクスに対応する個所は‘0’のままである。
【0079】
次に、検索タームとして“生物”が指定されたとする。このとき、インデクス検索プログラム120では、1−gram“生”及び“物”のインデクスを用いて、“生物”の出現位置情報を取得する。その為、参照頻度テーブル更新プログラム121では、“生”及び“物”のインデクスに対応する参照頻度テーブル123の該当参照頻度を‘1’増やす。
【0080】
図7は本実施形態の検索ターム“生物”における参照頻度テーブル更新プログラム121の処理内容を示す図である。“生”及び“物”のインデクスに対応する参照頻度は‘2’となり、“に”の参照頻度は‘0’、“微”の参照頻度は‘1’のままである。以上が、検索プログラム119の詳細な処理内容である。
【0081】
インクリメントプログラム115の処理内容は図3に示す通りである。まずステップ700で、テキスト107から作成された全てのインデクスに対してステップ701からステップ705までの一連の処理を繰り返す。
【0082】
この繰り返し処理では、まずステップ701で、インデクスサイズ比較プログラム116を起動し、処理対象インデクスのサイズと予め定められた基準インデクスサイズを比較する。図4に示した例では、“に”及び“生”のインデクスが基準インデクスサイズより大きくなっている。
【0083】
次に、ステップ702でインデクスが基準インデクスサイズより大きいと判断された場合には、ステップ703で参照頻度比較プログラム117を起動し、参照頻度テーブル123に格納されている処理対象インデクスの参照頻度と予め定められた基準参照頻度を比較する。
【0084】
そして、ステップ704で参照頻度が基準参照頻度より多いと判断された場合には、ステップ705でn−gramインクリメントプログラム118を起動し、処理対象インデクスのキーであるn−gramに文字列を追加したサイズの小さなインデクスを作成する。
【0085】
図4の例では、“に”及び“生”のインデクスが基準インデクスサイズより大きいと判断される為、これらのインデクスに対応する参照頻度と予め定められた基準参照頻度を比較する。
【0086】
図4の例では、基準参照頻度を1としている。そこで、参照頻度が‘2’である“生”のインデクスはn−gramインクリメントプログラム118の処理対象となるが、参照頻度が‘0’である“に”のインデクスはn−gramインクリメントプログラム118の処理対象とはならない。
【0087】
最後に、“生”に文字列を追加したサイズの小さなインデクスを作成して、インクリメントプログラム115の処理を終了する。n−gramインクリメントプログラム118の処理内容は図22に示す公知例1に開示されている方法と同様である。
【0088】
以上説明した様に、本実施形態では、基準インデクスサイズよりインデクスが大きいn−gramに対して、そのインデクスへの参照頻度と予め定められた基準参照頻度とを比較し、基準参照頻度より多い場合にはそのn−gramに文字列を増やしたサイズの小さなインデクスを作成する。
【0089】
そして、基準参照頻度より参照頻度が少ない場合には、たとえインデクスが大きいとしても、そのn−gramに文字列を増やしたサイズの小さなインデクスを作成しない。こうすることにより、インデクスが大きく検索に時間が掛かり、かつ検索に用いられる可能性が高いn−gramに対しては、検索を高速化することが可能となる。
【0090】
また、インデクスは大きいが、実際には検索にあまり用いられることのないn−gram(例えば、助詞として用いられる平仮名等)に対しては、文字列を増やしたインデクスを作成しない為、総インデクスサイズを抑えることが可能となる。
【0091】
以上により、新聞記事や特許明細書の様に日々件数が増大していく大規模な文書データベースにおいて、出現頻度が高い、すなわちインデクスが大きい検索タームが指定された場合でも、総インデクスサイズの最小限の増加で高速な検索が実現できることになる。
【0092】
以上説明した様に本実施形態の文書検索システムによれば、インデクスサイズが大きく検索に時間が掛かり、かつ検索に用いられる可能性が高い部分文字列に対してのみ、文字数を増やしたサイズの小さなインデクスを作成するので、検索性能の高速化を図ると共に総インデクスサイズの増加を最小限に抑えることが可能である。
【0093】
(実施形態2)
以下にインデクスサイズが大きく重要語に含まれるインデクスについて、当該インデクスに対応するn−gramに文字列を追加した拡張n−gramと拡張n−gramに対応するインデクスを作成する実施形態2の文書検索システムについて説明する。
【0094】
本実施形態は、基準インデクスサイズよりインデクスが大きいn−gramに文字列を追加したサイズの小さなインデクスを作成する際に、ユーザが指定した重要語にそのn−gramが含まれているかどうかを検索し、含まれている場合にのみ文字列を追加したサイズの小さなインデクスの作成を行う方法である。
【0095】
検索に良く用いると思われる重要語をユーザに指定してもらうことにより、インデクスが大きく検索に時間が掛かり、かつ検索に用いられる可能性が高いn−gramに対しての検索の高速化を、総インデクスサイズの最低限の増加で実現できることになる。
【0096】
本実施形態は基本的に実施形態1(図1)と同様の構成をとるが、その中の主記憶装置109内の構成が異なる。
【0097】
図8は本実施形態の主記憶装置109aの概略構成を示す図である。主記憶装置109aには、システム制御プログラム110a、文書登録制御プログラム111、インクリメント制御プログラム112、検索制御プログラム113、重要語登録制御プログラム1100、インデクス作成登録プログラム114、インクリメントプログラム115a、検索プログラム119a、重要語登録プログラム1102が格納されると共にトライ格納テーブル122、重要語テーブル1103及びワークエリア124が確保される。
【0098】
インクリメントプログラム115aはインデクスサイズ比較プログラム116、重要文字列検索プログラム1101及びn−gramインクリメントプログラム118で構成される。検索プログラム119aはインデクス検索プログラム120で構成される。以上のプログラムは磁気ディスク装置106、フロッピディスク105やCD−ROM等のコンピュータで読み書きできる記録媒体に格納することもできる。
【0099】
なお重要文字列検索プログラム1101は、該インデクスに対応する部分文字列が重要語テーブル1103に格納されている重要語に含まれるかどうかを調べ、該インデクスに対応する部分文字列がインデクス検索プログラム120で検索される可能性が高いかどうかを判定する重要文字列検索ステップの処理を行う。また重要語登録プログラム1102は、ユーザが入力した重要語を重要語テーブル1103に格納する重要語登録ステップの処理を行う。
【0100】
システム制御プログラム110aはキーボード101からの指示を受け起動する。文書登録制御プログラム111はキーボード101からの文書登録指示により、システム制御プログラム110aによって起動され、インデクス作成登録プログラム114の制御を行う。
【0101】
インクリメント制御プログラム112はキーボード101からのインクリメント指示により、システム制御プログラム110aによって起動され、インクリメントプログラム115aの制御を行う。検索制御プログラム113はキーボード101からの検索指示により、システム制御プログラム110aによって起動され、検索プログラム119aの制御を行う。重要語登録制御プログラム1100はキーボード101からの検索指示により、システム制御プログラム110aによって起動され、重要語登録プログラム1102の制御を行う。
【0102】
以下、実施形態1と異なる検索プログラム119a、重要語登録プログラム1102及びインクリメントプログラム115aの処理概要を説明する。
【0103】
検索の際には、キーボード101からの検索指示により、システム制御プログラム110aが検索制御プログラム113を起動し、検索制御プログラム113が検索プログラム119aを起動する。
【0104】
検索プログラム119aは、インデクス検索プログラム120を起動し、キーボード101から入力された検索タームのテキスト107における出現位置情報をインデクス108から取得する。このインデクス検索プログラム120の処理内容は方法1及び公知例1に開示されている方法と同様である。
【0105】
重要語を登録する際には、キーボード101からの重要語登録指示により、システム制御プログラム110aが重要語登録制御プログラム1100を起動し、重要語登録制御プログラム1100が重要語登録プログラム1102を起動する。重要語登録プログラム1102は、キーボード101から入力された重要語を重要語テーブル1103に格納する。
【0106】
インクリメントの際には、キーボード101からのインクリメント指示により、システム制御プログラム110aがインクリメント制御プログラム112を起動し、インクリメント制御プログラム112がインクリメントプログラム115aを起動する。
【0107】
図9は本実施形態のインクリメントプログラム115aの処理内容を示す図である。インクリメントプログラム115aは、図9に示す様に、ステップ1200で、テキスト107から作成された全てのインデクスに対してステップ1201からステップ1205までの一連の処理を繰り返す。
【0108】
この繰り返し処理では、まずステップ1201で、インデクスサイズ比較プログラム116を起動し、処理対象インデクスのサイズと予め定められた基準インデクスサイズを比較する。
【0109】
そして、ステップ1202で処理対象インデクスが基準インデクスサイズより大きいと判断された場合には、ステップ1203で重要文字列検索プログラム1101を起動し、処理対象n−gramで、重要語テーブル1103に格納されている重要語を検索する。
【0110】
そして、ステップ1204で処理対象n−gramが重要語テーブル1103に格納されている重要語の一部を構成していると判断された場合には、ステップ1205でn−gramインクリメントプログラム118を起動し、処理対象インデクスのキーであるn−gramに文字列を追加したサイズの小さなインデクスを作成する。このn−gramインクリメントプログラム118の処理内容は公知例1に開示されている方法と同様である。以上が本実施形態における処理内容の概要である。
【0111】
以下、本実施形態における処理内容のうち、方法1、公知例1に開示されている方法及び実施形態1と異なる重要語登録プログラム1102及びインクリメントプログラム115aの処理内容を具体例を用いて詳細に説明する。
【0112】
重要語登録プログラム1102では、キーボード101から入力された重要語を重要語テーブル1103に格納する。
【0113】
図10は本実施形態の重要語テーブル1103の一例を示す図である。本図に示す例では、ユーザは“微生物”に関する文書でデータベースを構築しており、頻繁に検索に用いる単語である“ウイルス”、“バクテリア”、“かび”、“酵母”、“細菌”、“単細胞生物”、“微生物”、…をキーボード101から入力した。重要語登録プログラム1102はこれら入力された文字列を重要語として重要語テーブル1103に格納する。
【0114】
インクリメントプログラム115aの処理内容は図9に示す通りである。まずステップ1200で、テキスト107から作成された全てのインデクスに対してステップ1201からステップ1205までの一連の処理を繰り返す。
【0115】
この繰り返し処理では、まずステップ1201で、インデクスサイズ比較プログラム116を起動し、処理対象インデクスのサイズと予め定められた基準インデクスサイズを比較する。このインデクスサイズ比較プログラム116の処理内容は実施形態1と同様である。
【0116】
図11は本実施形態のインクリメントプログラム115aの処理内容の例を示す図である。本図に示す例では、“に”及び“生”のインデクスが基準インデクスサイズより大きくなっている。
【0117】
次に、ステップ1202で処理対象インデクスが基準インデクスサイズより大きいと判断された場合には、ステップ1203で重要文字列検索プログラム1101を起動し、処理対象n−gramで、重要語テーブル1103に格納されている重要語を検索する。
【0118】
そして、ステップ1204で処理対象n−gramが重要語テーブル1103に格納されている重要語の一部を構成していると判断された場合には、ステップ1205でn−gramインクリメントプログラム118を起動し、処理対象インデクスのキーであるn−gramに文字列を追加したサイズの小さなインデクスを作成する。
【0119】
図11の例では、“に”及び“生”のインデクスが基準インデクスサイズより大きいと判断される為、“に”及び“生”で、重要語テーブル1103に格納されている重要語を検索する。
【0120】
図11の例では、“生”は重要語“単細胞生物”及び“微生物”に含まれるが、“に”を含む重要語は存在しない。そこで、“生”のインデクスはn−gramインクリメントプログラム118の処理対象となるが、“に”のインデクスはn−gramインクリメントプログラム118の処理対象とはならない。
【0121】
最後に、“生”に文字列を追加したサイズの小さなインデクスを作成して、インクリメントプログラム115aの処理を終了する。n−gramインクリメントプログラム118の処理内容は図22に示す公知例1に開示されている方法と同様である。
【0122】
以上説明した様に、本実施形態では、基準インデクスサイズよりインデクスが大きいn−gramに対して、そのn−gramがユーザが指定した重要語に含まれているかどうかを検索し、含まれている場合にはそのn−gramに文字列を増やしたサイズの小さなインデクスを作成する。
【0123】
そして、n−gramがユーザが指定した重要語に含まれていない場合には、たとえインデクスが大きいとしても、そのn−gramに文字列を増やしたサイズの小さなインデクスを作成しない。
【0124】
検索に良く用いると思われる重要語をユーザに指定してもらうことにより、インデクスが大きく検索に時間が掛かり、かつ検索に用いられる可能性が高い重要語に含まれるn−gramに対しては、検索を高速化することが可能となる。
【0125】
また、インデクスは大きいが、ユーザが検索にあまり用いないn−gramに対しては、文字列を増やしたインデクスを作成しない為、総インデクスサイズを抑えることが可能となる。
【0126】
以上により、新聞記事や特許明細書の様に日々件数が増大していく大規模な文書データベースにおいて、出現頻度が高い、すなわちインデクスが大きい検索タームが指定された場合でも、総インデクスサイズの最小限の増加で高速な検索が実現できることになる。
【0127】
(実施形態3)
以下にインデクスサイズが大きく関連語に含まれるインデクスについて、当該インデクスに対応するn−gramに文字列を追加した拡張n−gramと拡張n−gramに対応するインデクスを作成する実施形態3の文書検索システムについて説明する。
【0128】
ユーザがある検索タームを指定し、その検索タームと同じ意味を持つ語(以下、同義語)の検索も同時に行うことを指定した場合には、ユーザが指定した検索タームが一つであったとしても、実際に検索を行う検索タームの数は多くなり、検索に時間が掛かることになる。
【0129】
そこで、本実施形態では、基準インデクスサイズよりインデクスが大きいn−gramに文字列を追加したサイズの小さなインデクスを作成する際に、同義語展開用の辞書やルールを参照して、複数に展開される語に含まれるn−gramであるかどうかを検索し、含まれる場合にのみ文字列を追加したサイズの小さなインデクスを作成する方法である。
【0130】
こうすることにより、インデクスが大きく検索に時間が掛かり、かつ同義語の検索の様に複数語に対して検索を行わなければならない場合でも、総インデクスサイズの最低限の増加で高速な検索を実現できることになる。
【0131】
本実施形態は基本的に実施形態1(図1)と同様の構成をとるが、その中の主記憶装置109内の構成が異なる。
【0132】
図12は本実施形態の主記憶装置109bの概略構成を示す図である。主記憶装置109bには、システム制御プログラム110、文書登録制御プログラム111、インクリメント制御プログラム112、検索制御プログラム113、インデクス作成登録プログラム114、インクリメントプログラム115b、検索プログラム119bが格納されると共にトライ格納テーブル122、同義語展開用辞書1502及びワークエリア124が確保される。
【0133】
インクリメントプログラム115bはインデクスサイズ比較プログラム116、展開語検索プログラム1500及びn−gramインクリメントプログラム118で構成される。検索プログラム119bは検索ターム展開プログラム1501及びインデクス検索プログラム120で構成される。
【0134】
以上のプログラムは磁気ディスク装置106、フロッピディスク105やCD−ROM等のコンピュータで読み書きできる記録媒体に格納することもできる。
【0135】
展開語検索プログラム1500は、該インデクスに対応する部分文字列が同義語展開用辞書1502に格納されている同義語に含まれるかどうかを調べ、該インデクスに対応する部分文字列がインデクス検索プログラム120で検索される可能性が高いかどうかを判定する展開語検索ステップの処理を行う。
【0136】
また検索ターム展開プログラム1501は、相互に関連のある語を予め関連付けて格納した関連語ファイルに相当する同義語展開用辞書1502を上記検索タームで探索し、該検索タームに関連のある1つ以上の同義語を取得する検索ターム展開ステップの処理を行い、インデクス検索プログラム120は、前記検索ターム及び同義語における部分文字列と同じ位置関係を持つテキストデータの位置情報を抽出する処理を行う。
【0137】
システム制御プログラム110はキーボード101からの指示を受け起動する。文書登録制御プログラム111はキーボード101からの文書登録指示により、システム制御プログラム110によって起動され、インデクス作成登録プログラム114の制御を行う。
【0138】
インクリメント制御プログラム112はキーボード101からのインクリメント指示により、システム制御プログラム110によって起動され、インクリメントプログラム115bの制御を行う。検索制御プログラム113はキーボード101からの検索指示により、システム制御プログラム110によって起動され、検索プログラム119bの制御を行う。
【0139】
以下、実施形態1と異なる検索プログラム119b及びインクリメントプログラム115bの処理概要を説明する。
【0140】
検索の際には、キーボード101からの検索指示により、システム制御プログラム110が検索制御プログラム113を起動し、検索制御プログラム113が検索プログラム119bを起動する。
【0141】
図13は本実施形態の検索プログラム119bの処理内容を示す図である。図13に示す様に検索プログラム119bは、ステップ1600で検索ターム展開プログラム1501を起動し、キーボード101から入力された検索タームで同義語展開用辞書1502を探索し、検索タームを複数の同義語に展開する。
【0142】
次にステップ1601で、インデクス検索プログラム120を起動し、検索ターム展開プログラム1501によって展開された同義語全てのテキスト107における出現位置情報をインデクス108から取得する。このインデクス検索プログラム120の処理内容は方法1及び公知例1に開示されている方法と同様である。
【0143】
インクリメントの際には、キーボード101からのインクリメント指示により、システム制御プログラム110がインクリメント制御プログラム112を起動し、インクリメント制御プログラム112がインクリメントプログラム115bを起動する。
【0144】
図14は本実施形態のインクリメントプログラム115bの処理内容を示す図である。図14に示す様にインクリメントプログラム115bは、ステップ1700でテキスト107から作成された全てのインデクスに対してステップ1701からステップ1705までの一連の処理を繰り返す。
【0145】
この繰り返し処理では、まずステップ1701で、インデクスサイズ比較プログラム116を起動し、処理対象インデクスのサイズと予め定められた基準インデクスサイズを比較する。
【0146】
そして、ステップ1702で処理対象インデクスが基準インデクスサイズより大きいと判断された場合には、ステップ1703で展開語検索プログラム1500を起動し、処理対象n−gramで、同義語展開用辞書1502に格納されている同義語を検索する。
【0147】
そして、ステップ1704で処理対象n−gramが複数に展開される語に含まれると判断された場合には、ステップ1705でn−gramインクリメントプログラム118を起動し、処理対象インデクスのキーであるn−gramに文字列を追加したサイズの小さなインデクスを作成する。このn−gramインクリメントプログラム118の処理内容は公知例1に開示されている方法と同様である。以上が本実施形態における処理内容の概要である。
【0148】
以下、本実施形態における処理内容のうち、実施形態1と異なる検索プログラム119b及びインクリメントプログラム115bの処理内容を具体例を用いて詳細に説明する。
【0149】
検索プログラム119bの処理内容は図13に示す通りである。まずステップ1600で、検索ターム展開プログラム1501を起動し、キーボード101から入力された検索タームで同義語展開用辞書1502を探索し、検索タームを複数の同義語に展開する。
【0150】
図15は本実施形態の同義語展開用辞書1502による検索タームの同義語展開の例を示す図である。例えば、検索タームとして“計算機”が指定されたとする。検索ターム展開プログラム1501は、この検索ターム“計算機”で同義語展開用辞書1502を探索し、“計算機”と同じ意味を持つ語である同義語を取得する。
【0151】
図15に示す同義語展開用辞書1502の例では、同義語の集合をカンマ(、)をデリミタとして一行に記載している。この同義語展開用辞書1502を用いて“計算機”を同義語の集合に展開すると、展開後検索ターム1800として“計算機”、“電子計算機”、“電算機”、“COMPUTER”及び“コンピュータ”が得られる。
【0152】
次にステップ1601で、インデクス検索プログラム120を起動し、検索ターム展開プログラム1501によって展開された同義語全てのテキスト107における出現位置情報をインデクス108から取得する。このインデクス検索プログラム120の処理内容は方法1及び公知例1に開示されている方法と同様である。
【0153】
インクリメントプログラム115bの処理内容は図14に示す通りである。まずステップ1700で、テキスト107から作成された全てのインデクスに対してステップ1701からステップ1705までの一連の処理を繰り返す。
【0154】
この繰り返し処理では、まずステップ1701で、インデクスサイズ比較プログラム116を起動し、処理対象インデクスのサイズと予め定められた基準インデクスサイズを比較する。このインデクスサイズ比較プログラム116の処理内容は実施形態1と同様である。
【0155】
図16は本実施形態のインクリメントプログラム115bの処理内容を示す図である。本図に示す例では、“に”及び“生”のインデクスが基準インデクスサイズより大きくなっている。
【0156】
次に、ステップ1702で処理対象インデクスが基準インデクスサイズより大きいと判断された場合には、ステップ1703で展開語検索プログラム1500を起動し、処理対象n−gramで、同義語展開用辞書1502に格納されている同義語を検索する。
【0157】
そして、ステップ1704で処理対象n−gramが複数に展開される語に含まれると判断された場合には、ステップ1705でn−gramインクリメントプログラム118を起動し、処理対象インデクスのキーであるn−gramに文字列を追加したサイズの小さなインデクスを作成する。
【0158】
図16の例では、“に”及び“生”のインデクスが基準インデクスサイズより大きいと判断される為、“に”及び“生”で、同義語展開用辞書1502に格納されている重要語を検索する。
【0159】
図16の例では、“生”は“海洋生物”及び“海生生物”に含まれるが、“に”を含む語は存在しない。そこで、“生”のインデクスはn−gramインクリメントプログラム118の処理対象となるが、“に”のインデクスはn−gramインクリメントプログラム118の処理対象とはならない。
【0160】
最後に、“生”に文字列を追加したサイズの小さなインデクスを作成して、インクリメントプログラム115bの処理を終了する。n−gramインクリメントプログラム118の処理内容は図22に示す公知例1に開示されている方法と同様である。
【0161】
以上説明した様に、本実施形態では、基準インデクスサイズよりインデクスが大きいn−gramに対して、同義語展開用の辞書やルールを参照して、複数に展開される語に含まれるn−gramであるかどうかを検索し、含まれている場合にはそのn−gramに文字列を増やしたサイズの小さなインデクスを作成する。そして、n−gramが複数に展開される語に含まれていない場合には、たとえインデクスが大きいとしても、そのn−gramに文字列を増やしたサイズの小さなインデクスを作成しない。
【0162】
こうすることにより、インデクスが大きく検索に時間が掛かり、かつ同義語の検索の様に複数語に対して検索を行わなければならない場合でも、検索を高速化することが可能となる。また、インデクスは大きいが、複数に展開される語に含まれていないn−gramに対しては、文字列を増やしたインデクスを作成しない為、総インデクスサイズを抑えることが可能となる。
【0163】
以上により、新聞記事や特許明細書の様に日々件数が増大していく大規模な文書データベースにおいて、出現頻度が高い、すなわちインデクスが大きい検索タームが指定され、その検索タームの同義語の検索も同時に行うことが指定された場合でも、総インデクスサイズの最小限の増加で高速な検索が実現できることになる。
【0164】
(実施形態4)
以下にインデクスサイズが大きく処理時間の大きいインデクスについて、当該インデクスに対応するn−gramに文字列を追加した拡張n−gramと拡張n−gramに対応するインデクスを作成する実施形態4の文書検索システムについて説明する。
【0165】
本実施形態は、インデクスの読込み及び隣接判定により検索タームの出現位置情報を取得する際に、その処理時間を計測しておき、その処理時間が予め定められた目標検索時間を超過した場合には、取得した出現位置情報をインデクス化し、磁気ディスク装置へ格納する方法である。
【0166】
検索に時間が掛かる検索タームについては一度検索を行えば、二度目からは一度目に作成したインデクスの読込みだけで検索タームの出現位置情報が取得できる為、インデクスが大きく検索に時間が掛かり、かつ検索に用いられる可能性が高いn−gramに対しての検索の高速化を、総インデクスサイズの最低限の増加で実現できることになる。しかも、一度目の検索時に取得した出現位置情報をそのままインデクスとして利用できる為、高速なインデクス作成を行うことができる。
【0167】
本実施形態は基本的に実施形態1(図1)と同様の構成をとるが、その中の主記憶装置109内の構成が異なる。
【0168】
図17は本実施形態の主記憶装置109cの概略構成を示す図である。主記憶装置109cには、システム制御プログラム110c、文書登録制御プログラム111、検索制御プログラム113c、インデクス作成登録プログラム114、検索及びインクリメントプログラム2000が格納されると共にトライ格納テーブル122及びワークエリア124が確保される。検索及びインクリメントプログラム2000はインデクス検索プログラム120及びインデクス作成プログラム2001で構成される。
【0169】
以上のプログラムは磁気ディスク装置106、フロッピディスク105やCD−ROM等のコンピュータで読み書きできる記録媒体に格納することもできる。
【0170】
なおインデクス作成プログラム2001は、インデクス検索プログラム120における処理時間を測定し、該処理時間が予め定められた基準処理時間より長い場合に、インデクス検索プログラム120において得られた位置情報をインデクスとして登録するインデクス作成ステップの処理を行う。
【0171】
システム制御プログラム110cはキーボード101からの指示を受け起動する。文書登録制御プログラム111はキーボード101からの文書登録指示により、システム制御プログラム110cによって起動され、インデクス作成登録プログラム114の制御を行う。検索制御プログラム113cはキーボード101からの検索指示により、システム制御プログラム110cによって起動され、検索及びインクリメントプログラム2000の制御を行う。
【0172】
以下、実施形態1と異なる検索及びインクリメントプログラム2000の処理概要を説明する。検索の際には、キーボード101からの検索指示により、システム制御プログラム110cが検索制御プログラム113cを起動し、検索制御プログラム113cが検索及びインクリメントプログラム2000を起動する。
【0173】
図18は本実施形態のインクリメントプログラム2000の処理内容を示す図である。図18に示す様に検索及びインクリメントプログラム2000は、まずステップ2100でインデクス検索プログラム120を起動し、キーボード101から入力された検索タームのテキスト107における出現位置情報をインデクス108から取得すると共に、インデクス検索プログラム120の処理時間を計測する。インデクス検索プログラム120の処理内容は方法1及び公知例1に開示されている方法と同様である。
【0174】
そして、計測した処理時間が予め定められた目標検索時間を超過したとステップ2101で判断された場合には、ステップ2102でインデクス作成プログラム2001を起動し、取得した出現位置情報をインデクス108として磁気ディスク装置106に格納する。
【0175】
そして、ステップ2103で、検索タームをキーとしてトライ格納テーブル122に登録し、インデクスへのポインタ情報を格納する。このトライ格納テーブル122へのキーの追加方法は公知例1に開示されている方法と同様である。以上が本実施形態における処理内容の概要である。
【0176】
以下、本実施形態における処理内容のうち、実施形態1と異なる検索及びインクリメントプログラム2000の処理内容を具体例を用いて詳細に説明する。
【0177】
検索及びインクリメントプログラム2000の処理内容は図18に示すとおりである。まずステップ2100で、インデクス検索プログラム120を起動し、キーボード101から入力された検索タームのテキスト107における出現位置情報をインデクス108から取得すると共に、インデクス検索プログラム120の処理時間を計測する。インデクス検索プログラム120の処理内容は方法1及び公知例1に開示されている方法と同様である。
【0178】
図19は本実施形態のインクリメントプログラム2000の処理例を示す図である。本図に示す例では、検索タームとして“生物”が指定されている。その為、インデクス検索プログラム120は“生”のインデクス202と“物”のインデクス203を磁気ディスク装置106からワークエリア124に読み込み、これらのインデクス間で隣接判定を行うことにより、“生物”の出現位置情報2200を取得する。
【0179】
検索及びインクリメントプログラム2000は、このインデクス検索プログラム120の処理時間を計測しておく。そして、計測した処理時間が予め定められた目標検索時間を超えているとステップ2101で判断された場合には、ステップ2102でインデクス作成プログラム2001を起動し、取得した出現位置情報2200をインデクス108として磁気ディスク装置106に格納する。
【0180】
図19に示す例では、インデクス検索プログラム120の処理時間は予め定められた目標検索時間を超えている為、“生物”の出現位置情報2200を“生物”のインデクス2201として磁気ディスク装置106に格納する。
【0181】
最後に、ステップ2103で、検索タームをキーとしてトライ格納テーブル122に登録し、インデクスへのポインタ情報を格納する。このトライ格納テーブル122へのキーの追加方法は公知例1に開示されている方法と同様である。
【0182】
以上説明した様に、本実施形態では、インデクスの読込み及び隣接判定により検索タームの出現位置情報を取得する際に、その処理時間を計測しておき、その処理時間が予め定められた目標検索時間を超過した場合には、取得した出現位置情報をインデクス化し、磁気ディスク装置106へ格納する。
【0183】
検索に時間が掛かる検索タームについては一度検索を行えば、二度目からは一度目に作成したインデクスの読込みだけで検索タームの出現位置情報が取得できる為、インデクスが大きく検索に時間が掛かり、かつ検索に用いられる可能性が高いn−gramに対しては、検索を高速化することが可能となる。
【0184】
また、インデクスは大きいが、検索に用いられないn−gramに対しては、文字列を増やしたインデクスを作成しない為、総インデクスサイズを抑えることが可能となる。しかも、一度目の検索時に取得した出現位置情報をそのままインデクスとして利用できる為、高速なインデクス作成が可能となる。
【0185】
以上により、新聞記事や特許明細書の様に日々件数が増大していく大規模な文書データベースにおいて、出現頻度が高い、すなわちインデクスが大きい検索タームが指定された場合でも、総インデクスサイズの最小限の増加で高速な検索が実現できることになる。
【0186】
【発明の効果】
本発明によればインデクスサイズが大きく検索に時間が掛かり、かつ検索に用いられる可能性が高い部分文字列に対してのみ、文字数を増やしたサイズの小さなインデクスを作成するので、検索性能の高速化を図ると共に総インデクスサイズの増加を最小限に抑えることが可能である。
【図面の簡単な説明】
【図1】実施形態1の文書検索システムの概略構成を示す図である。
【図2】実施形態1の検索プログラム119の処理内容を示す図である。
【図3】実施形態1のインクリメントプログラム115の処理内容を示す図である。
【図4】実施形態1の文書検索システムの処理例を示す図である。
【図5】実施形態1の更新前の参照頻度テーブル123の初期状態を示す図である。
【図6】実施形態1の検索タームとして“微生物”が指定された場合の参照頻度テーブル123の更新結果を示す図である。
【図7】実施形態1の検索ターム“生物”における参照頻度テーブル更新プログラム121の処理内容を示す図である。
【図8】実施形態2の主記憶装置109aの概略構成を示す図である。
【図9】実施形態2のインクリメントプログラム115aの処理内容を示す図である。
【図10】実施形態2の重要語テーブル1103の一例を示す図である。
【図11】実施形態2のインクリメントプログラム115aの処理内容の例を示す図である。
【図12】実施形態3の主記憶装置109bの概略構成を示す図である。
【図13】実施形態3の検索プログラム119bの処理内容を示す図である。
【図14】実施形態3のインクリメントプログラム115bの処理内容を示す図である。
【図15】実施形態3の同義語展開用辞書1502による検索タームの同義語展開の例を示す図である。
【図16】実施形態3のインクリメントプログラム115bの処理内容を示す図である。
【図17】実施形態4の主記憶装置109cの概略構成を示す図である。
【図18】実施形態4のインクリメントプログラム2000の処理内容を示す図である。
【図19】実施形態4のインクリメントプログラム2000の処理例を示す図である。
【図20】従来の1−gramインデクス方式の一例を示す図である。
【図21】従来のキー集合{baby、badge、badger、jar}に対応するトライの構成を示す図である。
【図22】従来の公知例1の処理内容を示す図である。
【符号の説明】
100…ディスプレイ、101…キーボード、102…CPU、103…バス、104…FDD、105…フロッピディスク、106…磁気ディスク装置、107…テキスト、108…インデクス、109…主記憶装置、110…システム制御プログラム、111…文書登録制御プログラム、112…インクリメント制御プログラム、113…検索制御プログラム、114…インデクス作成登録プログラム、115…インクリメントプログラム、116…インデクスサイズ比較プログラム、117…参照頻度比較プログラム、118…n−gramインクリメントプログラム、119…検索プログラム、120…インデクス検索プログラム、121…参照頻度テーブル更新プログラム、122…トライ格納テーブル、123…参照頻度テーブル、124…ワークエリア、1100…重要語登録制御プログラム、1101…重要文字列検索プログラム、1102…重要語登録プログラム、1103…重要語テーブル、1500…展開語検索プログラム、1501…検索ターム展開プログラム、1502…同義語展開用辞書、1800…展開後検索ターム、2000…インクリメントプログラム、2001…インデクス作成プログラム、2200…出現位置情報、2201…インデクス、200〜203…インデクス、400…インデクス、401…トライ。
Claims (7)
- 特定の検索タームを含むテキストデータを検索する文書検索方法において、
検索タームの部分文字列に対応するインデクスにより、該検索タームの部分文字列と同じ位置関係を持つテキストデータの位置情報を抽出するインデクス検索ステップと、
テキストデータの部分文字列に対応するインデクスのサイズと予め定められた基準インデクスサイズとを比較するインデクスサイズ比較ステップと、
該インデクスのサイズが該基準インデクスサイズより大きい場合に、該インデクスに対応する部分文字列が前記インデクス検索ステップで検索される可能性が高いかどうかを判定する検索可能性判定ステップと、
該部分文字列が前記インデクス検索ステップで検索される可能性が高い場合に、該部分文字列に文字列を追加した拡張部分文字列と該拡張部分文字列に対応するインデクスを作成する文字列インクリメントステップとを有することを特徴とする文書検索方法。 - インデクスの読み出し回数を管理する参照頻度テーブルを更新する参照頻度テーブル更新ステップを有し、
前記検索可能性判定ステップは、前記参照頻度テーブル内の該インデクスに対応する参照頻度と予め定められた基準参照頻度とを比較して、該インデクスに対応する部分文字列が前記インデクス検索ステップで検索される可能性が高いかどうかを判定する参照頻度比較ステップであることを特徴とする請求項1に記載された文書検索方法。 - ユーザが入力した重要語を重要語テーブルに格納する重要語登録ステップを有し、
前記検索可能性判定ステップは、該インデクスに対応する部分文字列が前記重要語テーブルに格納されている重要語に含まれるかどうかを調べ、該インデクスに対応する部分文字列が前記インデクス検索ステップで検索される可能性が高いかどうかを判定する重要文字列検索ステップであることを特徴とする請求項1に記載された文書検索方法。 - 相互に関連のある語を予め関連付けて格納した関連語ファイルを上記検索タームで探索し、該検索タームに関連のある1つ以上の関連語を取得する検索ターム展開ステップを有し、
前記インデクス検索ステップは、前記検索タームまたは関連語における部分文字列と同じ位置関係を持つテキストデータの位置情報を抽出し、
前記検索可能性判定ステップは、該インデクスに対応する部分文字列が前記関連語テーブルに格納されている関連語に含まれるかどうかを調べ、該インデクスに対応する部分文字列が前記インデクス検索ステップで検索される可能性が高いかどうかを判定する展開語検索ステップであることを特徴とする請求項1に記載された文書検索方法。 - 特定の検索タームを含むテキストデータを検索する文書検索方法において、
検索タームの部分文字列に対応するインデクスにより、前記検索タームの部分文字列と同じ位置関係を持つテキストデータの位置情報を抽出するインデクス検索ステップと、
前記インデクス検索ステップにおける処理時間を測定し、該処理時間が予め定められた基準処理時間より長い場合に、前記インデクス検索ステップにおいて得られた位置情報をインデクスとして登録するインデクス作成ステップとを有することを特徴とする文書検索方法。 - 特定の検索タームを含むテキストデータを検索する文書検索装置において、
検索タームの部分文字列に対応するインデクスにより、前記検索タームの部分文字列と同じ位置関係を持つテキストデータの位置情報を抽出するインデクス検索処理部と、
テキストデータの部分文字列に対応するインデクスのサイズと予め定められた基準インデクスサイズとを比較するインデクスサイズ比較処理部と、
該インデクスのサイズが該基準インデクスサイズより大きい場合に、該インデクスに対応する部分文字列が前記インデクス検索処理部で検索される可能性が高いかどうかを判定する検索可能性判定処理部と、
該部分文字列が前記インデクス検索処理部で検索される可能性が高い場合に、該部分文字列に文字列を追加した拡張部分文字列と該拡張部分文字列に対応するインデクスを作成する文字列インクリメント処理部とを備えることを特徴とする文書検索装置。 - 特定の検索タームを含むテキストデータを検索する文書検索装置としてコンピュータを機能させる為のプログラムを記録した媒体において、検索タームの部分文字列に対応するインデクスにより、前記検索タームにおける部分文字列と同じ位置関係を持つテキストデータの位置情報を抽出するインデクス検索処理部と、
テキストデータから作成した部分文字列に対応するインデクスのサイズと予め定められた基準インデクスサイズとを比較するインデクスサイズ比較処理部と、該インデクスのサイズが該基準インデクスサイズより大きい場合に、該インデクスに対応する部分文字列が前記インデクス検索処理部で検索される可能性が高いかどうかを判定する検索可能性判定処理部と、
該部分文字列が前記インデクス検索処理部で検索される可能性が高い場合に、該部分文字列に文字列を追加した拡張部分文字列と該拡張部分文字列に対応するインデクスを作成する文字列インクリメント処理部としてコンピュータ機能させる為のプログラムを記録したことを特徴とする媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP22182998A JP3620968B2 (ja) | 1998-08-05 | 1998-08-05 | 文書検索方法及びその実施装置並びにその処理プログラムを記録した媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP22182998A JP3620968B2 (ja) | 1998-08-05 | 1998-08-05 | 文書検索方法及びその実施装置並びにその処理プログラムを記録した媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000057151A JP2000057151A (ja) | 2000-02-25 |
JP3620968B2 true JP3620968B2 (ja) | 2005-02-16 |
Family
ID=16772851
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP22182998A Expired - Fee Related JP3620968B2 (ja) | 1998-08-05 | 1998-08-05 | 文書検索方法及びその実施装置並びにその処理プログラムを記録した媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3620968B2 (ja) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002027541A1 (en) * | 2000-08-23 | 2002-04-04 | Intel Corporation | A method and apparatus for concept-based searching across a network |
JP4314204B2 (ja) | 2005-03-11 | 2009-08-12 | 株式会社東芝 | 文書管理方法、システム及びプログラム |
JP4491480B2 (ja) * | 2007-10-11 | 2010-06-30 | 株式会社日立製作所 | インデクス構築方法、文書検索装置及びインデクス構築プログラム |
JP5159277B2 (ja) * | 2007-11-30 | 2013-03-06 | 三菱電機株式会社 | N文字索引生成装置、文書検索装置、n文字索引生成方法、文書検索方法、n文字索引生成プログラムおよび文書検索プログラム |
JP5169456B2 (ja) * | 2008-05-09 | 2013-03-27 | 日本電気株式会社 | 文書検索システム、文書検索方法および文書検索プログラム |
JP5033843B2 (ja) * | 2009-06-30 | 2012-09-26 | クラリオン株式会社 | 名称検索装置 |
JP5560971B2 (ja) * | 2010-07-05 | 2014-07-30 | 日本電気株式会社 | 文書検索装置、文書検索方法、及びプログラム |
JP6319740B2 (ja) | 2014-03-25 | 2018-05-09 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | データ圧縮を高速化する方法、並びに、データ圧縮を高速化するためのコンピュータ、及びそのコンピュータ・プログラム |
US10394870B2 (en) | 2014-06-30 | 2019-08-27 | Hitachi, Ltd. | Search method |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3459053B2 (ja) * | 1995-01-12 | 2003-10-20 | 株式会社日立製作所 | 文書検索方法および装置 |
-
1998
- 1998-08-05 JP JP22182998A patent/JP3620968B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2000057151A (ja) | 2000-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3696745B2 (ja) | 文書検索方法及び文書検索システム及び文書検索プログラムを記録したコンピュータ読み取り可能な記録媒体 | |
US7289986B2 (en) | Method and system for indexing and searching contents of extensible markup language (XML) documents | |
JP4162711B2 (ja) | Nグラム・ワード分解を用いた携帯型文書索引付け用のシステム及び方法 | |
US4775956A (en) | Method and system for information storing and retrieval using word stems and derivative pattern codes representing familes of affixes | |
US5265244A (en) | Method and system for facilitating processing of statistical inquires on stored data accessible through a data access structure | |
US6321192B1 (en) | Adaptive learning method and system that matches keywords using a parsed keyword data structure having a hash index based on an unicode value | |
CN100423005C (zh) | 索引实体的方法和*** | |
US6263333B1 (en) | Method for searching non-tokenized text and tokenized text for matches against a keyword data structure | |
US20020165707A1 (en) | Methods and apparatus for storing and processing natural language text data as a sequence of fixed length integers | |
US20060106849A1 (en) | Idle CPU indexing systems and methods | |
Gelfand et al. | Comparative analysis of regulatory patterns in bacterial genomes | |
CN111400323B (zh) | 数据检索方法、***、设备及存储介质 | |
WO2008128351A1 (en) | Language independent index storage system and retrieval method | |
JP3620968B2 (ja) | 文書検索方法及びその実施装置並びにその処理プログラムを記録した媒体 | |
Qin et al. | Efficient query autocompletion with edit distance-based error tolerance | |
Ilic et al. | Inverted index search in data mining | |
JP2004220176A (ja) | データベース検索システム、その検索方法及び検索に用いられるデータファイルの作成方法並びにデータファイルを格納した記録媒体 | |
JP2007133682A (ja) | 全文検索システム、及び、その全文検索方法 | |
JPH06348757A (ja) | 文書検索装置および方法 | |
JPH05250416A (ja) | データベースの登録・検索装置 | |
EP0235525A2 (en) | Statistical information access system | |
JP2002132789A (ja) | 文書検索方法 | |
Mustafa et al. | SISDOM: A multilingual document retrieval system | |
JPH1185585A (ja) | 完全メモリ常駐型インデックス方法および装置 | |
Yannakoudakis | An efficient file structure for specialized dictionaries and other “lumpy” data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20041109 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20041116 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071126 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081126 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091126 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101126 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |