| 【発明の名称】 |
文書検索方法 |
| 【発明者】 |
【氏名】多田 勝己
【氏名】岡本 卓哉
【氏名】菅谷 奈津子
【氏名】松林 忠孝
【氏名】稲場 靖彦
【氏名】川下 靖司
|
| 【要約】 |
【課題】英語、ドイツ語やフランス語のなどの表音文字で記述された大規模文書データベースに対して、高頻度語を含むフレーズが検索タームに指定された場合にも、高速に全文検索可能なシステムを安価に提供する。
【解決手段】高頻度語(a,the,of等)のリスト(1210)を設け、文書をデータベースに登録する際、単語を抽出して(1120)、該単語について、文書識別子と単語の文書中での位置を有する検索用インデクスを作成し(1140)、抽出した単語について前記リストを参照して、該単語が高頻度語である場合には(1130)、該単語に続く1単語の組に対して検索用インデクスを作成する(1140)。検索時には、検索ターム中の単語に高頻度語がある場合には、高頻度語である単語に続く1単語の組を検索タームにおける単語として扱い、この単語の組を含む検索タームにより検索処理を行う。 |
【特許請求の範囲】
【請求項1】 予め登録した文書の集合から、検索タームとして指定された文字列を含む文書を検索する文書検索システムにおける文書検索方法において、文書の登録を行う処理が、登録対象文書から、1個以上の文字の並びを単語として抽出する登録用単語抽出ステップと、該抽出された単語が、高頻度語として定義された単語であるか否かを判定する高頻度語判定ステップと、該高頻度語判定ステップにおける判定結果が高頻度語であった場合には、該高頻度語に接続する1単語を抽出し、該高頻度語と該抽出した1単語からなる単語列に対して検索用インデクスデータを作成し登録する検索用インデクス作成登録ステップを有することを特徴とする文書検索方法。 【請求項2】 予め登録した文書の集合から、検索タームとして指定された文字列を含む文書を検索する文書検索システムにおける文書検索方法において、文書の検索を行う処理が、検索タームとして指定された文字列から、1個以上の文字の並びを単語として抽出する検索用単語抽出ステップと該抽出された単語が、高頻度語として定義された単語であるか否かを判定する高頻度語判定ステップと、該高頻度語判定ステップにおける判定結果が高頻度語であった場合には、該高頻度語に接続する1単語を抽出し、該高頻度語と該抽出した1単語からなる単語列に対して検索用インデクスデータを参照し検索を行う検索実行ステップを有することを特徴とする文書検索方法。 【請求項3】 請求項1または請求項2記載の文書検索方法において、前記文書検索システムの文書データベース中での出現頻度の高いと考えられる単語群を予め定義しておき、前記高頻度語判定ステップは前記抽出された単語が前記単語群に含まれる単語であるか否かを判定することを特徴とする文書検索方法。 【請求項4】 請求項1または請求項2記載の文書検索方法において、前記文書検索システムの文書データベース中に登録された各単語に関する出現頻度情報などの統計的情報に基づき出現頻度の高いと考えられる単語群を予め定義しておき、前記高頻度語判定ステップは前記抽出された単語が前記単語群に含まれる単語であるか否かを判定することを特徴とする文書検索方法。 【請求項5】 予め登録した文書の集合から、検索タームとして指定された文字列を含む文書を検索する文書検索システムにおける文書検索方法において、文書の登録を行う処理が、登録対象文書から、1個以上の文字の並びを単語として抽出する登録用単語抽出ステップと、登録用単語抽出ステップにおいて抽出された単語が、登録済み文書の集合において出現頻度の高い高頻度語であるか否かを判定する登録用高頻度語判定ステップと、高頻度語判定ステップにおける判定結果が高頻度語であった場合には、該高頻度語に接続する1単語を抽出し、該高頻度語と該抽出した1単語からなる単語列に対して検索用インデクスデータを作成し登録するとともに、高頻度語でなかった場合には該当単語に関するインデクスデータのインデクス容量が予め定めたインデクス容量よりも大きいか否かを判定し、大きい場合には、該当単語を新たに高頻度単語として判定、抽出する高頻度単語抽出型検索用インデクス作成登録ステップと、前記高頻度単語抽出型検索用インデクス作成登録ステップにおいて新たに抽出された高頻度単語について、登録済み文書の集合を参照し、該単語と該単語に接続する1単語からなる単語列を抽出し、該単語列に対して検索用インデクスデータを作成し登録するとともに、該高頻度単語を高頻度語として新規に登録する検索用インデクス拡張ステップを有することを特徴とする文書検索方法。 【請求項6】 請求項5記載の文書検索方法において、高頻度単語の判定基準となるインデクス容量を設定するためのコンフィグレーション情報を有することを特徴とする文書検索方法。 【請求項7】 予め登録した文書の集合から、検索タームとして指定された文字列を含む文書を検索する文書検索システムにおける文書検索方法において、文書の登録を行う処理が、登録対象文書から、1個以上の文字の並びを単語として抽出する登録用単語抽出ステップと、登録用単語抽出ステップにおいて抽出された単語が、登録済み文書に集合において出現頻度の高い高頻度語であるか否かを判定する登録用高頻度語判定ステップと、高頻度語判定ステップにおける判定結果が高頻度語であった場合には、該高頻度語に接続する1単語を抽出し、該高頻度語と該抽出した1単語からなる単語列に対して検索用インデクスデータを作成し登録する検索用インデクス作成登録ステップと、新たに高頻度単語として登録するべき単語群を入力指定する高頻度単語入力指定ステップと、前記高頻度単語入力指定ステップにおいて入力された単語について、登録済み文書の集合を参照し、該単語と該単語に接続する1単語からなる単語列を抽出し、該単語列に対して検索用インデクスデータを作成し登録するとともに、該高頻度単語を高頻度語として新規に登録する検索用インデクス拡張ステップを有することを特徴とする文書検索方法。 【請求項8】 予め登録した文書の集合から、検索タームとして指定された文字列を含む文書を検索する文書検索システムにおける文書登録処理を行うための文書登録プログラムであり、登録対象文書から1個以上の文字の並びを単語として抽出する登録用単語抽出手順と、該抽出された単語が、高頻度語として定義された単語であるか否かを判定する高頻度語判定手順と、該高頻度語判定手順における判定結果が高頻度語であった場合には、該高頻度語に接続する1単語を抽出し、該高頻度語と該抽出した1単語からなる単語列に対して検索用インデクスデータを作成し登録する検索用インデクス作成登録手順を有する文書登録プログラムを記録したコンピュータ読み取り可能な記録媒体。 【請求項9】 予め登録した文書の集合から、検索タームとして指定された文字列を含む文書を検索する文書検索システムにおける文書検索処理を行うための文書検索プログラムであり、検索タームとして指定された文字列から1個以上の文字の並びを単語として抽出する検索用単語抽出手順と、該抽出された単語が高頻度語として定義された単語であるか否かを判定する高頻度語判定手順と、該高頻度語判定手順における判定結果が高頻度語であった場合には、該高頻度語に接続する1単語を抽出し、該高頻度語と該抽出した1単語からなる単語列に対して検索用インデクスデータを参照し検索を行う検索実行手順を有する文書検索プログラムを記録したコンピュータ読み取り可能な記録媒体。
|
【発明の詳細な説明】【0001】 【発明の属する技術分野】本発明は、大規模な文書データベースを対象として、指定された文字列を含む文書を検索する全文検索の方法に係わり、特に英語、ドイツ語やフランス語などの表音文字で記載された文書を対象としたデータベース、文書管理システム、文書ファイリングシステムおよびDTP(Desk Top Publishing)システムなどに適用されるものである。 【0002】 【従来の技術】近年、情報化社会の急速な進展に伴い、ワードプロセッサやパーソナルコンピュータなどを用いて作成される電子化文書情報も爆発的な勢いで増加しつつある。このような状況下で、蓄積された膨大な電子化文書群の中から、必要とする情報を含んだ文書を高速かつ高精度に検索したいという要求が高まっている。このよう要求に応える技術として全文検索がある。全文検索では、文書の登録時に登録対象文書中のテキスト全体を計算機システムに入力してデータベース化し、検索時には該当データベース中からユーザの指定した文字列(以下、検索タームと呼ぶ)を含む全ての文書を探し出すことにより、登録時にキーワード付けを行なうことなく、目的とする文書を漏れなく検索することが可能である。 【0003】一般に、英語、ドイツ語、フランス語のなどの表音文字で記載された文書を対象とした全文検索には、単語インデクス方式と呼ばれる方式が用いられている。単語インデクス方式の概要について簡単に説明する。英語、ドイツ語やフランス語などの表音文字で記載された文書では、一般に“ ”(スペース)、“,”(コンマ)や“.”(ピリオド)などの文字で単語が分かち書きされている。すなわち、これらの文字を単語の区切れ目として抽出することにより、登録対象文書から単語を抽出することができる。そして、これらの単語に対し、文書データベース中で該当文書を識別するための文書識別情報および該当文書中での出現単語位置を抽出し、これを検索用のインデクスデータとして格納しておく。そして検索時には、検索条件に指定された語句の各々に対し検索用インデクスを参照し、検索タームとして指定された単語群が同一文書中にあり、かつ各単語の並びが検索条件における単語の並びと同一である文書を抽出することにより、検索ノイズのない全文検索を実現するものである。 【0004】しかし、本方式による全文検索システムでは、検索ターム中に登録済み文書中での出現頻度の高い語(以下、高頻度語と呼ぶ)が含まれる場合に、検索レスポンスが低下するという問題がある。すなわち、高頻度語に関するインデクスデータは通常の語に比べ著しく大きくなるため、磁気ディスクなどの二次記憶上に格納されたインデクスデータを参照するのに要する時間が長くなり、検索に時間がかかってしまう。英文における高頻度語としては、“a”や“the”などの接続詞、“and”や“but”などの接続詞、 および“of”や“to”などの前置詞などがある。これらの語は登録済み文書中の大半に含まれ、検索タームとして意味を持つことが少ないため、一般には「Information Retrieval」(PRENTICE HALL発行、William B.Frakes, Ricardo Baeza-Yates著)(以下、公知例1と呼ぶ)113ページ以降に示されているように、該当語をストップワード(排除語)として定義し、これらに対しては検索用インデクスを作成しない方式が提案されている。 【0005】 【発明が解決しようとする課題】しかし、公知例1における英文検索方法では、ストップワードを含むフレーズ(句)を検索することができないという問題がある。すなわち、“a”や“the”などの定冠詞、“and”や“but”などの接続詞、および“of”や“to”などの前置詞そのものが検索タームとして意味を持つものは少ないが、それを含むフレーズが検索タームとして意味を持つものも少なくない。例えば、定冠詞“the”については“タイムズ紙”を表す“the Times”は“the”を伴って始めて本来の意味を表すものであり、“the”を伴わない“Times”では“回数”等としての意味しか持たない。つまり、“the”を含むフレーズが検索できない場合には、“Times”のみで検索するしか方法はなく、“回数”などの意味で用いられている不要文書がノイズとして検索されてしまうという問題がある。“the White House”(ホワイトハウス)や“the West”(西洋)、“The East”(東洋)なども、“the”を伴って始めて所定の意味を示す語の一例である。 【0006】また、接続詞“and”における例としては、例えば“バターのついたパン”を表すフレーズ“bread and butter”を検索することができない。このため、“bread”と“butter”のAND条件で検索を行うことになるが、“bread”と“butter”を含むが“bread and butter”というフレーズで用いられていない不要文書がノイズとして検索されてしまう。さらに、接続詞“of”についても同様に、例えば“アメリカ銀行”を表すフレーズ“Bank of America”を検索することができないため、“Bank”と“America”のAND条件で検索を行うことになるが、“Bank”と“America”を含むが“Bankof America”というフレーズとして用いられていない不要文書がノイズとして検索されてしまうという問題がある。 【0007】この問題を解決するために、従来の方法では “a”や“the”などの定冠詞、“and”や“but”などの接続詞、 および“of”や“to”などの前置詞についても検索用インデクスを作成することになるが、例えば“the East”というフレーズを検索する際に、非常に容量の大きい“the”に関するインデクスデータを磁気ディスクなどの二次記憶から読み出す必要がある。そして、“East”に関するインデクスデータと単語位置の比較を行い、同一文書中にあり、かつ単語位置が1単語隣接して現れるものを抽出する必要があるため、“East”1単語を検索する場合に比べ著しく検索レスポンスが低下してしまう。すなわち、本発明の解決しようとする課題は、英語、ドイツ語やフランス語のなどの表音文字で記述された大規模文書データベースに対して、“a”や“the”などの定冠詞、“and”や“but”などの接続詞、 および“of”や“to”などの前置詞などの高頻度語を含むフレーズが検索タームに指定された場合にも、高速に全文検索可能なシステムを安価に提供することである。 【0008】 【課題を解決するための手段】上記課題を解決するために、本発明による文書検索方法は以下に示すステップを備える。すなわち、本発明による文書検索方法において、文書の登録処理は、登録対象文書に対し、スペース、コンマやピリオドなどの区切り文字を識別することにより単語を抽出する登録用単語抽出ステップと、該抽出された単語が、高頻度語として定義された単語であるか否かを判定する高頻度語判定ステップと、該高頻度語判定ステップにおける判定結果が高頻度語であった場合には、該高頻度語に接続する1単語を抽出し、該高頻度語と該抽出した1単語からなる単語列に対して検索用インデクスデータを作成し、また該高頻度語判定ステップにおける判定結果が高頻度語でなかった場合には、前記抽出された単語に対して検索用インデクスデータを作成し、登録する検索用インデクス作成登録ステップを有する。また、本発明による文書検索方法において登録済み文書の検索処理は、検索タームに対し、スペース、コンマやピリオドなどの区切り文字を識別することにより単語を抽出する検索用単語抽出ステップと、該抽出された単語が、高頻度語として定義された単語であるか否かを判定する高頻度語判定ステップと、該高頻度語判定ステップにおける判定結果が高頻度語であった場合には、該高頻度語に接続する1単語を抽出し、該高頻度語と該抽出した1単語からなる単語列に対して検索用インデクスデータを、また高頻度語判定ステップにおける判定結果が高頻度語でなかった場合には、前記抽出された単語に関する検索用インデクスデータを、参照することにより、指定された検索タームを含む文書を検索する検索実行ステップを有する。 【0009】 【発明の実施の形態】本発明を適用した第一の実施例について、図面を用いて説明する。はじめに、本実施例のシステム構成について説明する。図1は、本発明による文書検索システムの第一の実施例の全体構成を示す図である。図1に示す通り、本実施例における文書検索システムは、登録用サブシステム1000、文書検索サーバ2000、検索クライアント3000および4000、ネットワーク5000から構成される。文書登録サブシステム1000は、登録対象となる文書を入力として、検索時に必要となる検索用インデクスを作成する。このインデクスデータはネットワーク5000を介して文書検索サーバ2000に転送され、後に文書検索サーバ2000が全文検索処理を行う際に用いられる。文書検索サーバ2000は、検索クライアント3000および4000から検索コマンドを受け取り、文書登録サブシステム1000が作成した検索用インデクスを用いて、該検索コマンドで指定された条件に適合する文書を検索し、検索結果データを要求元の検索クライアントに送り返す。検索クライアント3000および4000は、ユーザが対話的に検索条件を指定するための画面をディスプレイ上に表示し、この面上でユーザが指定した検索条件を、文書検索サーバ2000で解釈可能な検索コマンドの形に変換し、このコマンドをネットワーク5000を介して文書検索サーバ2000に送信する。文書検索サーバ2000で、前述した通り検索コマンドに対応する検索処理を行い検索結果データを送り返してくると、検索クライアント3000および4000は受け取った検索結果データを検索結果画面としてユーザに提示する。なお、図1では2台のコンピュータ3000および4000が検索用クライアントとして接続されている構成例を示したが、検索クライアントが1台のみとする構成を取ることもできる。また、3台以上の構成を取ることもできる。最後に、ネットワーク5000はローカルエリアネットワーク(LAN)または広域ネットワーク(WAN)により構成され、文書登録サブシステム1000、文書検索サーバ2000、検索クライアント3000および4000が各種データやコマンドを交換するために用いられる。 【0010】なお、図1では文書登録サブシステム1000から文書検索サーバ2000に対し検索用インデクスデータを転送するために、ネットワーク5000を使用するものとしたが、代わりにフロッピー(登録商標)ディスクや光磁気ディスクなどの可搬型媒体を使用する構成を取ることもできる。あるいは、文書登録サブシステム1000と文書検索サーバ2000を1台のコンピュータ上に実装し、データ転送を行わない構成を取ることもできる。さらに、図1では検索クライアント3000および4000を文書検索サーバ2000と別のコンピュータ上に構成するものとしたが、1個以上の検索クライアントを文書検索サーバ2000と同一のコンピュータ上で実行する構成を取ることもできる。以上が本実施例におけるシステム構成に関する説明である。 【0011】次に、本実施例における文書登録サブシステム、すなわち図1における1000について図を用いて説明する。図2は、本実施例における文書登録サブシステム1000の構成を示す図である。本図に示す文書登録サブシステム1000は、処理の実行状況などを表示するディスプレイ1010、登録用のコマンド等を入力するキーボード1020、登録処理を実行する中央演算処理装置CPU1030、フロッピディスクからデータを読み出すフロッピディスクドライバ1040、データベースへの登録対象となる文書データを格納したフロッピディスク1050、登録用のプログラムならびにデータなどを一時的に格納する主メモリ1060、各種データおよびプログラムを格納する磁気ディスク1070およびこれらを接続するバス1080で構成される。また、主メモリ1060にはシステム制御プログラム1100、登録制御プログラム1110、登録用単語抽出プログラム1120、登録用高頻度語判定プログラム1130、検索用インデクス作成登録プログラム1140が磁気ディスク1070から読み出されるとともに、ワークエリア1150が確保される。また、磁気ディスク1070には区切り文字テーブル格納領域1200、高頻度語リスト格納領域1210、検索用インデクス格納領域1220、各種プログラム格納領域1230が確保されている。なお、本実施例ではこれらの格納領域を磁気ディスク上1070上に確保したが、光磁気ディスク装置など他の二次記憶装置であっても構わない。以上が文書登録サブシステム1000の構成である。 【0012】次に、本実施例における文書登録処理の手順について説明する。始めに、キーボード1020から入力される登録コマンドによりシステム制御プログラム1100は登録制御プログラム1110を起動し、文書の登録処理を開始する。以下、文書登録時の処理について図3に示すPAD(Problem Analysis Diagram)を用いて説明する。登録制御プログラム1110は、フロッピディスク1050に格納されている全ての登録対象文書について、ステップ1310からステップ1350までに示す一連の処理を繰り返し実行する(ステップ1300)。まず、ステップ1310ではフロッピディスクドライバ1040を通じてフロッピディスク1050に格納されている登録対象文書群から未処理の文書を1個選択し、主メモリ1060上のワークエリア1150に読み出す。次に、ステップ1320を実行し、ステップ1310で読み込んだ登録対象文書に対し、文書データベース中で該当文書を一意に識別するための番号である文書識別子を割り当てる。さらに、ステップ1330において登録用単語抽出プログラム1120を実行し、主メモリ1060上の登録対象文書から単語を抽出する。すなわち、登録対象文書の先頭から末尾にかけて、各文字に対し磁気ディスク1070上の区切り文字テーブル1200を参照していくことにより、登録対象文書から区切り文字を識別する。そして、区切り文字と区切り文字の間に囲まれた一連の文字列を単語として抽出する。次に、ステップ1340で登録用高頻度語判定プログラム1130を実行し、ステップ1330により抽出した各単語が高頻度語であるか否かを判定する。すなわち、磁気ディスク1070上の高頻度語リスト格納領域1210に格納されている高頻度語リストを参照しながら、各単語が高頻度語リスト中に定義されているか否かを判定することにより、各単語が高頻度語であるか否かを判定する。最後に、ステップ1350で検索用インデクス作成登録プログラム1140を実行し、ステップ1330で抽出した単語に対し、検索用インデクスデータの作成登録処理を実行する。 【0013】また、ステップ1350における処理内容、すなわち検索用インデクス作成登録プログラム1140の処理内容について、図4を用いてもう少し詳細に説明する。登録用インデクス作成登録プログラム1140では、ステップ1330で抽出した全ての単語に対しステップ1410〜1430に示す一連の処理を実行する(ステップ1400)。まず、ステップ1410でステップ1340における登録用高頻度語判定プログラム1130での判定結果を元に、検索用インデクスの作成処理を場合分けする。すなわち、該当単語が高頻度語であった場合には、ステップ1420を実行することにより高頻度語用の検索用インデクスの作成処理を行う。また、該当単語が高頻度語でなかった場合には、ステップ1430を実行することにより、高頻度語以外の一般語としての検索用インデクスの作成処理を行う。ステップ1420では、高頻度語用の検索用インデクス作成処理として、該当単語に続く1単語の組に対して該当文書の文書識別子と該当文書中での単語位置の組として、主メモリ1060上のワークエリア1150に格納することにより検索用インデクスデータを作成する。また、ステップ1430では、高頻度語以外の一般語としての検索用インデクス作成処理として、該当単語に対して該当文書の文書識別子と該当文書中での単語位置の組として、主メモリ1060上のワークエリア1150に格納することにより検索用インデクスデータを作成する。以上の処理が、ステップ1330で抽出した全ての単語について完了すると、ステップ1440において検索用インデクスの更新処理を行う。すなわち主メモリ1060上のワークエリア1150内に格納した各単語に関する検索用インデクスデータを、磁気ディスク1070上の検索用インデクス格納領域に追加、更新する。以上が、本実施例における文書登録処理手順である。 【0014】次に、本実施例における文書登録処理について、“The president of Bank ofAmerica has decided …”という文書が登録された場合を例として具体的に説明する。始めに、ステップ1300における繰り返し処理では、まずステップ1310において登録対象文書に対応する“The president of Bank of America has decided …”をフロッピーディスク1050から読み出し、主メモリ1060上のワークエリア1150に格納する。そして、ステップ1320において、該当文書に対する文書識別子として初期値1を設定する。次に、ステップ1330では、磁気ディスク1070上の区切り文字テーブル格納領域1200に格納されている区切り文字テーブルを参照しながら単語の抽出処理を行う。なお、本実施例における区切り文字テーブルの構成を図5に示す。区切り文字テーブルは各文字の文字コードをエントリとして、単語間の区切れ目を表す区切り文字に対しては“1”を、そしてそれ以外の文字については“0”を区切り文字フラグとして設定しておく。すなわち、図5に示す例においては“ ”(スペース)、“!”(エクスプラネーションマーク)および“/”などを区切り文字として定義している。そして、登録対象文書内テキスト“The president of Bank of America has decided …”の各文字に対し、区切り文字テーブルを参照していき、その値が1となる文字(本例では“ ”(スペース))を境界として識別することにより、図6に示すように“The”、“president”、“of”、“Bank”、“of”、“America”、“has”、“decided”、等の単語を抽出していく。 【0015】そしてステップ1340では、ステップ1330において抽出した各単語に対し、磁気ディスク1070上の高頻度語リスト格納領域1210に格納されている高頻度語リストを参照しながら、高頻度語の判定処理を行う。本実施例では、高頻度語リストとして公知例1において記載されているストップリストに相当する単語が登録されることを想定しており、例えば図7に示す単語などが高頻度語として格納されている場合には、“the”、“of”および“has”に対する高頻度語フラグとして“1”が付加されて出力される。最後にステップ1350では、ステップ1340において高頻度語フラグを付与された単語に対し検索用インデクスデータを生成する。すなわち、高頻度語フラグの値が“1”であるか“0”であるかを判定し、“1”の場合には高頻度語として該当単語とそれに続く1語について、該当文書識別子と該当単語の文書先頭からの単語位置の組みを検索用インデクスデータとして生成する。また、“0”の場合には高頻度語以外の一般語として、該当単語1語について該当文書識別子と該当単語の文書先頭からの単語位置の組みを検索用インデクスデータとして生成する。 【0016】すなわち、図8に示す例において、まず最初に“The”が入力されるが、該当語に関する項頻度語フラグは“1”であるため、高頻度語として“The”に続く1単語“president”を併せた“The president”について検索用インデクスデータを生成する。つまり、文書識別子としてはD1(“D”は文書識別子であることを示す)を、単語位置としては該当文書の先頭にあたるので初期値P1(“P”は単語位置であることを示す)を設定し、この組みでもって“The president”に対し検索用インデクスデータを生成する。次に、“president”が入力されるが、該当語に関する項頻度語フラグは“0”であるため、高頻度語以外の一般語として該当単語“president”について検索用インデクスデータを生成する。つまり、文書識別子としてD1、単語位置としてP2を設定し、この組みでもって“president”に対し検索用インデクスデータを生成する。以下、同様の処理を繰り返すことにより、該当文書に対し検索用インデクスデータを主メモリ上1060のワークエリア1150に生成していき、全入力データについて処理が完了すると、これを磁気ディスク1070上の検索用インデクス格納領域1220に追加格納する。そして、ステップ1310において次の登録対象文書を主メモリ上1060のワークエリア1150に読み出し、全登録対象文書について同様の処理を繰り返す(ステップ1300)。以上が、本実施例における文書登録処理例である。なお、本実施例において主メモリ上1060ワークエリア1150での検索用インデクスデータを生成、および磁気ディスク1070上の検索用インデクス格納領域1220への更新の処理単位を登録対象文書1件毎としたが、これを複数件単位として処理することも可能である。 【0017】次に、本実施例における文書検索サーバ、すなわち図1における2000について図を用いて説明する。図9は、本実施例における文書検索サーバ2000の構成を示す図である。本図に示す文書検索サーバ2000は、処理の実行状況などを表示するディスプレイ2010、サーバの起動や停止などのコマンド等を入力するキーボード2020、検索処理を実行する中央演算処理装置CPU2030、検索用のプログラムならびにデータなどを一時的に格納する主メモリ2040、各種データおよびプログラムを格納する磁気ディスク2050およびこれらを接続するバス2060で構成される。また、主メモリ2040にはシステム制御プログラム2100、検索制御プログラム2110、検索用単語抽出プログラム2120、検索用高頻度語判定プログラム2130、検索実行プログラム2140が磁気ディスク2050から読み出されて格納されるとともに、ワークエリア2150が確保される。なお、検索用抽出単語プログラム2120および検索用高頻度語判定プログラム2130は、それぞれ登録用単語抽出プログラム(図2における1120)および登録用高頻度語判定プログラム1130と別プログラムとして記載しているが、本実施例においては実行する処理内容は同じものである。また、磁気ディスク2050には区切り文字テーブル格納領域2200、高頻度語リスト格納領域2210、検索用インデクス格納領域2220、各種プログラム格納領域2230が確保されている。 【0018】なお、全体システムの概要説明において述べたように、区切り文字テーブル格納領域2200、高頻度語リスト格納領域2210および検索用インデクス格納領域2220は文書登録サブシステム1000からネットワーク5000を介してデータ転送されるものであり、本実施例においては、それぞれ図2における区切り文字テーブル格納領域1200、高頻度語リスト格納領域1210および検索用インデクス格納領域1220と同じ内容のデータが格納されることになる。また、本実施例ではこれらの格納領域を磁気ディスク上2050上に確保したが、光磁気ディスク装置など他の二次記憶装置であっても構わない。以上が文書検索サーバ2000の構成である。 【0019】次に、本実施例における文書検索処理の手順について説明する。始めに、図1における文書検索クライアント3000ないしは4000から、検索タームが検索コマンドとして入力されると、検索コマンドはネットワーク5000を介して文書検索サーバ2000に伝えられる。そして、文書検索サーバ2000が検索コマンドを受け取ると、システム制御プログラム2100が検索制御プログラム2110を起動し、文書の検索処理を開始する。以下、文書検索時の処理について図10に示すPADを用いて説明する。検索制御プログラム2110は、ステップ2300において検索用単語抽出プログラム2120を実行し、検索タームの先頭から末尾にかけて、各文字に対し磁気ディスク2050上の区切り文字テーブル2200を参照していくことにより、検索タームから区切り文字を識別する。そして、区切り文字と区切り文字の間に囲まれた一連の文字列を単語として抽出する。次に、ステップ2310で、検索用高頻度語判定プログラム2130を実行し、ステップ2300において抽出した各単語が高頻度語であるか否かを判定する。すなわち、磁気ディスク2050上の高頻度語リスト格納領域2210に格納されている高頻度語リストを参照しながら、各単語が高頻度語リスト中に定義されているか否かを判定することにより、各単語が高頻度語であるか否かを判定する。最後に、ステップ2320で検索実行プログラム2140を実行し、磁気ディスク2050上の検索用インデクス格納領域2220に格納されている検索用インデクスを参照し、文書の検索処理を実行する。 【0020】さらに、ステップ2320における処理内容、すなわち検索実行プログラム2140の処理内容について、図11を用いてもう少し詳細に説明する。検索実行プログラム2140では、まず始めにステップ2400において、ステップ2310における判定結果を元に、先頭の単語が高頻度語であるか否かを判定する。そして、ステップ2400における判定結果が高頻度語であった場合には、ステップ2410において該当単語とそれに続く1単語の組に関する検索用インデクスデータを参照し、ステップ2420において後のインデクス間の隣接判定処理時に使用する隣接判定語数として2を設定する。また、ステップ2400における判定結果が高頻度語以外の一般語であった場合には、ステップ2430において該当単語に関する検索用インデクスデータを参照し、ステップ2440において隣接判定語数として1を設定する。さらに、ステップ2450において着目している単語が検索ターム末尾であるか否かを判定する。その結果、末尾でなかった場合にはステップ2460からステップ2540に至る一連の処理を行い、その検索タームにおいて該当単語の後に続く単語に関するインデクスデータとの隣接判定を行いながら検索タームの照合処理を行う。すなわちステップ2460では、インデクス間の隣接判定処理の前準備として、ステップ2410またはステップ2430において抽出した検索用インデクスデータを主メモリ2040上のワークエリア2150に確保した隣接判定対象領域に移動する。そして、ステップ2470において検索タームの末尾に至るまで、ステップ2480からステップ2530における一連の処理を繰り返す。まず、ステップ2480では、着目している単語が高頻度語であるか否かを判定する。そして、高頻度語であった場合にはステップ2490において該当単語とそれに続く1単語に関する検索用インデクスデータを参照し、隣接判定対象領域に格納されたインデクスデータと隣接判定処理を行う。この際、隣接判定結果となるタームの単語数は2単語分増加するため、ステップ2500において隣接判定語数として2を加算する。また、ステップ2480における判定処理の結果が高頻度語でない一般語であった場合には、ステップ2510において該当単語に関する検索用インデクスデータを参照し、隣接判定対象領域に格納されたインデクスデータと隣接判定処理を行う。この際、隣接判定結果となるタームの単語数は1単語分増加するため、ステップ2520において隣接判定語数として1を加算する。そして、次の単語との隣接判定処理を行うための準備として、ステップ2530において隣接判定結果を主メモリ2040上のワークエリア2150に格納してある隣接判定対象領域に移動しておく。こうした処理を検索ターム末尾まで繰り返し、ステップ2470における繰り返し処理が完了すると、ステップ2540において隣接判定対象領域にあるデータを該当検索タームに関する検索結果として出力して処理を終了する。また、ステップ2450における判定処理の結果、検索ターム末尾だった場合にはステップ2550を実行し、ステップ2410またステップ2430で抽出した検索用インデクスデータを検索タームに関する検索結果として出力して処理を終了する。以上が、本実施例における文書検索処理手順である。 【0021】次に、本実施例における文書検索処理について、“Bank of America”という検索タームが指定された場合を例に図を用いて説明する。始めに、図10におけるステップ2300における繰り返し処理では、検索ターム“Bank of America”について区切り文字テーブルを参照しながら単語の抽出処理を行う。なお、本実施例における区切り文字テーブルは、登録時に用いるものと同じく、図5に示す構成を取るものとする。すなわち、検索ターム“Bank of America”からは“ ”(スペース)を区切り文字として、図12に示すように“Bank”、“of”および“America”が抽出される。そしてステップ2310では、ステップ2300において抽出した各単語に対し、磁気ディスク1070上の高頻度語リスト格納領域1210に格納されている高頻度語リストを参照しながら、高頻度語の判定処理を行う。高頻度語リストについても、区切り文字テーブルと同様に、登録時に用いた高頻度語リスト(図7)と同じものを参照するものとする。この結果、図13に示すように高頻度語フラグとして“of”に対し“1”が、“Bank”および“America”については“0”が付加されて出力される。最後にステップ2320では、図11に示した処理手順に従い、ステップ2310において高頻度語フラグを付与された単語列について検索処理を実行する。この際の処理例について図14と図15を用いて説明する。まず始めに、図14において単語列“Bank”、“of”および“America”における先頭語である“Bank”に着目する。そして、図11のステップ2400における判定処理の結果、“Bank”に関する高頻度語フラグの値が“0”であるため高頻度語以外の一般語として処理される。すなわちステップ2430において“Bank”に関する検索用インデクスデータを磁気ディスク2050上の検索用インデクス格納領域2220から読み出し、ステップ2440において隣接判定語数として“1”を設定する。次に、図11におけるステップ2450で、“Bank”検索タームの末尾語であるか否化の判定を行う。本例では、続く語として“of America”が存在し、末尾ではないためステップ2460以降の一連の処理を実行する。すなわち、ステップ2460において、“Bank”に関する検索用インデクスデータを主メモリ2040上のワークエリア2150に確保されている隣接判定対象領域に移動する。次に、図15に示す通りステップ2480において“Bank”に続く単語である“of”が高頻度語であるか否かを判定する。その結果、“of”については高頻度語フラグの値が“1”であり、高頻度語と判断される。その結果、ステップ2490が実行されることとなり、該当単語とそれに続く1語の組、すなわち“of Bank”に関する検索用インデクスデータを参照する。これに対し、隣接判定語数“1”として隣接判定対象領域に格納されている“Bank”の検索用インデクスデータと隣接判定する(すなわち同一文書中に“Bank”と“of America”が存在し、かつ“Bank”と“of America”の単語位置が1だけ違うものを抽出する)ことにより、“Bank of America”に関する検索結果を得る。また、ステップ2500において、この時点での隣接判定語数“1”に対し隣接判定語数として“2”を加算することにより隣接判定語数は3となる(この時点で検索タームの末尾となるため、この値は実際には使用されない)。そして、“of”に続く“America”は検索ターム末尾であるため、ステップ2470における繰り返し処理は、ここで終了することになる。最後に、ステップ2540において隣接判定結果、すなわち“Bank of America”に関する検索結果を検索タームに関する検索結果として出力し、検索処理を終了する。以上が、本実施例における検索処理の例である。 【0022】なお、本実施例において、検索タームとして“Bank”一語が指定された場合には、上記処理においてステップ2450における判定結果が検索ターム末尾となる。すなわち、この場合にはステップ2550を実行することになり、“Bank”に関して参照した検索用インデクスデータそのものを検索結果として出力することになる。また、本実施例において、例えば“Bank of America has decided”というように検索タームとして“Bank of America”の後にいくつかの単語が続く場合には、ステップ2480における処理をさらに繰り返すことにより、“Bank of America”に続く“has decided”などについて検索用インデクスの参照、隣接判定し検索結果を得ることができる。以上が本実施例における文書検索時の処理内容である。 【0023】このように、本発明によると文書の登録時には、登録対象文書中の高頻度語については、該当高頻度語に続く一単語を組として検索用インデクスを作成する。そして、検索時に、高頻度語を含むフレーズについては、高頻度語に続く1単語の組に対して検索用インデクスデータを参照することにより、検索時に読み出す検索用インデクスデータの容量を削減し、ひいてはフレーズ検索の検索性能を大幅に向上することが可能になる。なお、本実施例においては高頻度語に続く一単語を組みとして検索用インデクスデータを作成する方法について説明したが、これを2単語以上の連続する単語列を組みすることにより、さらに検索性能を向上することも可能である。また、本実施例では高頻度語リストに登録される高頻度語を、例えば公知例1においてストップリストとして挙げられているストップワード(排除語)として定義してたが、例えば所定数のサンプル文書群における出現頻度情報などの統計的情報に基づき定義したものであっても構わない。また、検索履歴情報を用いて、エンドユーザから入力された検索ターム内で検索に時間を要した検索タームの中から選択して定義したものであっても構わない。さらに、本実施例において検索対象として英文のデータを対象とした場合について説明を行ったが、ドイツ語、フランス語を始めとするその他の文書についても適用することができる。 【0024】以上述べたように、本発明の第一の実施例では高頻度語リストとして公知例1において記載されているストップリストに相当する単語が登録されることを想定し、文書の登録時に予め定義された高頻度語リストを参照しながら、登録対象文書から高頻度語を抽出する方法について述べた。しかし、本実施例における文書検索方法では、データベース固有の高頻度語を含むフレーズについて、十分な検索性能が得られないという問題がある。すなわち、英文特許明細書を格納したデータベースにおいては、“step”、“metod”や“apparatus”などの出現頻度が高いと考えられる。しかし、ストップリストによる高頻度語には、これらの語が高頻度語として定義されていないため、これらの単語を含む“step rocket”(多段式ロケット)や“step function”(階段関数)などのフレーズについては高頻度語“step”のインデクスデータと、それに接続する単語のインデクスデータを磁気ディスクなどの二次記憶から読み出し、これらの隣接判定を行う必要がある。このため、検索時間が著しく長くなってしまうという問題がある。そこで、本発明第二の実施例では、文書登録サブシステムにおいて、検索用インデクス作成登録時に各単語のインデクスデータが所定のインデクス容量を越えたか否かを判定する。そして、所定のインデクス容量を越えた単語については、該当単語に接続する1単語を併せた、連続する2単語に関するインデクスを生成し登録するとともに、該当単語を高頻度リストに登録する。これにより、登録文書中に多く出現した単語を動的に高頻度語リストに登録し、かつ該当単語を含むフレーズを高速に検索できる文書検索システムを実現することが可能になるものである。 【0025】本発明の第二の実施例における文書登録サブシステムの構成を図16に示す。本実施例における文書登録サブシステムは、図2に示す第一の実施例における文書登録サブシステムとほぼ同様の構成を取るが、図2における検索用インデクス作成登録プログラム1140が高頻度単語抽出型検索用インデクス作成登録プログラム1141に置き換わり、かつ検索用インデクス拡張プログラム1160が新たに加わったものである。次に、本実施例における文書登録処理の手順について図17に示すPADを用いて説明する。なお、本実施例における文書登録処理手順は、図3に示す第一の実施例における処理手順とほとんどが同じであるため、ここでは第一の実施例と異なるステップ1351および1360について説明を補足する。まずステップ1351では、検索用インデクス作成登録プログラム1141を実行し、図3におけるステップ1350と同じくステップ1330で抽出した単語に対し、検索用インデクスデータの作成登録処理を実行する。また、ここで登録した各単語に関するインデクスデータの容量が所定の値より大きいか否かを判定し、大きいと判定された場合には該当単語を高頻度単語として抽出し、これを主メモリ1060上のワークエリア1150に格納する。そして、ステップ1360では主メモリ1060上のワークエリア1150を参照し、新たに抽出された高頻度単語が存在するか否かを判定し、存在する場合にはステップ1370およびステップ1380を実行する。すなわち、ステップ1370では登録済みテキスト(図示せず)に対して主メモリ1060上のワークエリア1150に格納された高頻度単語を探索する。そして、ステップ1351において得られた高頻度単語と接続する1単語を抽出するとともに、これらの併せた連続する2単語について全文検索用インデクスデータの作成処理を行う(なお、ここでの検索用インデクスデータの作成処理については、図4におけるステップ1420等で示した方法を用いるものとする)。最後にステップ1380において、ステップ1351において得られた高頻度単語を高頻度語リスト格納領域1210に追加格納し、文書の登録処理を完了する。以上が本発明第二の実施例における登録処理の概要である。 【0026】このように本実施例によると、文書登録時に各単語に関するインデクス容量が所定のインデクス容量より大きいか否かを判定する。そして、所定のインデクス容量を越えた単語については、高頻度語であるものとして、登録済みのテキストから該当単語に接続する1単語を併せた、連続する2単語に関するインデクスデータを作成、登録する。また、該当単語を高頻度語リストに追加登録する。これにより、該当単語を含むフレーズについては検索時にそれを含む2単語に関する検索用インデクスを参照するものとし、任意の高頻度語に対し該当高頻度語を含むフレーズ検索を高速に実現することが可能になる。 【0027】なお、ステップ1351において高頻度語であるか否かの判定基準である基準インデクス容量は、本実施例では所定の値というように記載していたが、これらの値をシステムにおけるコンフィグレーション情報として設定する方式であっても構わない。また、本実施例においては文書登録の都度、ステップ1351における高頻度語の抽出とステップ1360〜1380における検索用インデクスの拡張処理ならびに高頻度単語としての登録処理を実行するものとした。しかし、ステップ1360〜1380における処理を暫くの間保留しておき、データベースの保守を行うのに好適なタイミングでもって、これらの処理を実行することも可能である。また、本実施例において、ステップ1360〜1380における一連の処理は、文書登録時に抽出した高頻度単語に対し実行するものであったが、図18に示す構成を取ることにより、外部から高頻度語として入力指定した単語に対して実行することも可能である。 【0028】 【発明の効果】本発明によると、高頻度語を含むフレーズが検索タームに指定された際には、予め文書登録時に作成しておいた、高頻度語に続く1単語の組みに関する検索用インデクスデータを参照することにより、検索時に読み出す検索用インデクスデータの容量を削減することが可能になり、ひいてはフレーズ検索の検索性能を大幅に向上することが可能になる。
|
| 【出願人】 |
【識別番号】000005108 【氏名又は名称】株式会社日立製作所
|
| 【出願日】 |
平成12年10月19日(2000.10.19) |
| 【代理人】 |
【識別番号】100099298 【弁理士】 【氏名又は名称】伊藤 修 (外1名)
|
| 【公開番号】 |
特開2002−132789(P2002−132789A) |
| 【公開日】 |
平成14年5月10日(2002.5.10) |
| 【出願番号】 |
特願2000−318787(P2000−318787) |
|