JP2790466B2 - 文字列検索方法及び装置 - Google Patents

文字列検索方法及び装置

Info

Publication number
JP2790466B2
JP2790466B2 JP63260616A JP26061688A JP2790466B2 JP 2790466 B2 JP2790466 B2 JP 2790466B2 JP 63260616 A JP63260616 A JP 63260616A JP 26061688 A JP26061688 A JP 26061688A JP 2790466 B2 JP2790466 B2 JP 2790466B2
Authority
JP
Japan
Prior art keywords
character string
information
character
text
keyword
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 - Lifetime
Application number
JP63260616A
Other languages
English (en)
Other versions
JPH02109167A (ja
Inventor
啓二 小島
雄介 三科
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP63260616A priority Critical patent/JP2790466B2/ja
Priority to DE3991231A priority patent/DE3991231C2/de
Priority to US07/499,424 priority patent/US5604910A/en
Priority to PCT/JP1989/001064 priority patent/WO1990004826A1/ja
Publication of JPH02109167A publication Critical patent/JPH02109167A/ja
Application granted granted Critical
Publication of JP2790466B2 publication Critical patent/JP2790466B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query processing by using string matching techniques
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は文字列検索方法及び装置、更に詳しく言え
ば、文献等の大量の文字列の中から特定の文字列すなわ
ちキーワードを高速に検索する方法及び装置に関するも
のである。
〔従来の技術〕
従来、大量の文字列中から複数のキーワードを検索す
る方法の有効なものとして、キーワードから状態遷移図
を作り検索すべきテキストの文字列の各文字を順次、上
記状態遷移図とつき合わせてキーワード検索を行う方法
が知られている(コミュニケーション オブ エー・シ
ー・エム,18,6(1975年6月)第333頁から第340頁(Com
m.ACM,18,6(June1975)pp.333−340))。
上記従来技術(以下FSA法と呼ぶ)は、例えば、キー
ワードとして、「並列」,「計算機」,「制御方法」の
3つが与えられると、第12図(a)のような遷移図を作
成する。そしてテキストの各文字を順次この遷移図とつ
き合わせて検索を行う。第10図(a)の例では初期状態
0にある時、入力テキスト文字が“並”であれば状態1
に遷移し、文字が“計”であれば状態3に遷移し、文字
が“制”であれば状態6に遷移する。状態1にあって、
テキスト文字が“列”であれば状態2に遷移するが、状
態2は最終状態であり、キーワード「並列」が検索され
たことがわかる。このようにFSA法では複数のキーワー
ドが検索できる効率の良い方法である。実際のFSA法に
よる文字列検索処理は、第12図(a)の状態遷移図を第
12図(b)のような状態遷移表にして第12図(c)のよ
うなプログラムで実現されている。
〔発明が解決しようとする課題〕
上述のようにFSA法は優れた方法であるが、処理が逐
次的になるという問題点がある。第12図(c)に示すよ
うにFSA法では初期化(1203)の後、テキストの文字を
1個入力する毎に(1204)、まず現在の状態が最終状態
か否かを調べ(1205)、そうであればキーワードの見つ
かったテキスト位置と長さを出力する(1206)。そして
現状態とテキスト文字から遷移表を調べて次に遷移すべ
き状態を決定し(1207,1208,1209,1210,1211)、状態と
テキスト位置を更新して(1212)、次のテキスト文字に
ついて同様の処理をくり返す。
つまりFSA法では、遷移先状態は各テキスト文字の処
理の最後(1212)でないと決定せず、かつ次のテキスト
文字の処理は遷移先状態が決定しないと開始することが
できない。従って処理が本質的に逐次的となる。このこ
とは従来の汎用計算機ではもともと各命令は逐次的に実
行されるので欠点とはならない。しかし専用のハードウ
ェアでパイプライン/並列処理などの技術を用いて高速
化しようとした場合には、上述の逐次性により適用でき
ないという問題点があった。
従って、本発明の主な目的は、大量の文字列のテキス
ト文字列情報から、パイプライン処理あるいはベクトル
計算処理等の並列処理によって、高速にキーワードを検
索する文字列検索方法及びそのための装置を提供するこ
とである。
本発明の他の目的は複数キーワードに対しても効率が
良くかつパイプライン処理などの専用ハードウェアや通
常のベクトル計算機による高速化に適した新しい文字列
検索方法と、その専用装置を提供することにある。
本発明の更に他の目的はFSA法に基づく文字列検索方
法に関して、この方法を四則・論理計算命令を備えた通
常のベクトル計算機上で高速処理する文字列検索方法を
提供することである。
〔課題を解決するための手段〕
本発明は上記目的を達成するため、テキスト文字列中
から、単一又は複数のキーワード文字列を検索する文字
列検索処理を、テキスト文字列の情報から、キーワード
文字列並びにそれに類似する文字列とからなる候補文字
列群の情報を検出する第1のステップと、第1のステッ
プで得られた候補文字列群の情報からキーワード文字列
に対応する情報を選択する第2ステップを行い、特に第
1のステップをパイプライン的処理を行うことによって
大量のテキスト文字列を高速に絞り込み、候補文字列群
の情報を高速を得て、文字検索処理全体の高速化を実現
している。
上記第1ステップは前処理として、検索の対象となる
テキスト文字列に現われる全種類の文字に対して、キー
ワード文字列の中でいかなる状態で表われるかの出現形
態情報を作る。
上記前処理テキスト文字列の情報から各文字の情報を
順次取り出し、上記出現形態情報と照合し、個別の出現
形態情報に変換し、 同時に、現在検索中の候補文字列の長さの情報をカウ
ンタに保持し、 上記個別の出現形態情報と上記長さの情報を利用し
て、上記順次取り出される各文字を候補文字列に加える
か否か判定し、その判定に基づいて上記カウンタの長さ
の情報を更新し、 上記判定で、上記個別の出現形態情報から検索中の文
字の情報が候補文字列の一と判別したとき、その長さ情
報及び上記テキスト文字列における位置の情報を候補文
字列群の情報として出力する。
上記出現形態情報としては、最も簡単なものは文字
が、単一又は複数のキーワード文字列に現われるか否か
の1ビットの情報や、実施例で詳細に説明する如く、キ
ーワードの文字列の中の位置(最初、最後、中間等)の
情報、あるいはキーワード文字列群の最短キーワードの
文字数以下か否かの情報等がある。
上記第1のステップを実行する専用装置として、上記
出現形態情報を格納する記憶手段と、検索すべきテキス
ト文字列の各文字情報を一定周期で入力する入力手段
と、上記各文字情報をアドレス信号に変えるアドレス手
段と、上記記憶手段から上記アドレス手段で指定された
アドレスの個別の出現形態情報を得る手段、検索中の候
補文字列の長さを計数するカウンタと、上記カウンタの
値及び上記個別の出現形態情報を入力とし、上記検出中
の候補文字列の次のテキスト文字を候補文字列に加える
か否かを判定し、上記カウンタの値を更新するカウンタ
制御手段を設けて構成される。
上記第1ステップを実行する他の実施形態は、上記出
現形態情報を出現情報ベクトルとして生成し、上記テキ
スト文字列の各文字に対して上記出現情報ベクトル内の
上記各文字に対応する出現情報を読み出しテキスト文字
列内の各文字に一意に対応する形で要素となる検出状態
ベクトルを生成し、上記検出状態ベクトルに格納された
出現情報かを用いて、対応するテキスト文字列の各文字
が候補文字列を構成するか否かを判定する。
上記他の実施形態の方法は四則演算機能を持つベクト
ル計算機によって実現される。
上記第2のステップとしては従来知られている文字列
検索方法が適用されるが、従来知られている上記FSA法
をベクトル処理によって実現される。すなわち、第1ス
テップで得られた候補文字列群を複数の部分文字列と
し、上記部分文字列上のどの文字が検索処理の対象とな
っているかを示す検索位置情報を作り、上記部分文字列
について検索位置情報をもとに文字を読み出して、その
読み出した文字をベクトル形式の入力文字ベクトルとし
て並び換え、上記各部分文字列について検索処理の任意
の時点で各部分文字列がキーワード文字列中のどのキー
ワードの文字とまで一致しているかを示す状態からなる
状態ベクトルを保持し、上記各部分文字列について上記
入力文字ベクトルと上記状態ベクトルとから新しい一致
状態へと遷移するための状態遷移ベクトルをキーワード
文字列から生成する。次に上記状態遷移ベクトルを用い
て、上記保持された状態ベクトルと上記入力文字ベクト
ルとから各部分文字列に対して状態遷移を行い、上記状
態ベクトルの各要素についてキーワード文字列を検出し
たか否かを判定する受理判定する方法が実施される。
〔作用〕
本発明ではテキスト文字列の中にあるキーワード文字
列の存在する位置、文字数、あるいはキーワード文字の
内容を探索する方法において、検索処理が2段階で行わ
れ、第1段階の第1次絞り込み処理ではキーワード文字
列を含む可能性の強い候補文字群が検索される。又第2
段階の第2次絞り込み処理では上記候補文字群からキー
ワード文字列を検索する。
第2次絞り込み処理は従来の文字列探索方法、あるい
は本発明の実施例として示した従来知られているFSA法
をベクトル処理的に行うこともできる。
第1次絞り込み処理はキーワード文字列そのものでは
なく候補文字列を検索するものであり、以下の実施例に
示す如く、パイプライン動作を行う専用装置あるいはベ
クトル計算機等でパイプラインあるいは並列処理が可能
となるため、極めて高速の処理を実現することができ
る。
上記第1次絞り込み処理を専用装置で実現する場合、
上記記憶手段から出現形態情報を読み出すまでにテキス
ト文字列の文字の読み出し、その文字を上記記憶装置の
アドレスに変え、上記記憶装置からの出現形態情報の読
み出す過程が1つの文字の処理について必要となるが、
出現形態情報は、その処理対象の文字がキーワード文字
列中に出現するか否か、あるいはキーワード文字列中で
どのような位置に出現するかを表わす情報であるため、
他の文字との関係を考慮することなく、一意に決定す
る。従って、検索状態を表わすカウンタ値に関係なく先
行的な読み出しが可能であり、従って、相続く複数の文
字の処理を一部重複して、すなわち、1つの文字につい
てカウンタ値を更新中に、次の文字については出現状態
情報の読み出しを行い、更に次の文字についてはテキス
ト文字列から読み出しアドレス情報に変換する、すなわ
ちパイプライン処理を行うことができ、高速処理が実現
される。
又他の実施例である、第1次絞り込み処理をベクトル
計算機で処理する場合、テキスト文字列情報は、各文字
がキーワード文字列に現われる文字か否かの出現情報を
要素とした検出情報ベクトルに変換され、同一の検出情
報ベクトル要素の配列情報から、それが候補文字列を構
成するか否かを判定処理をベクトル処理によって行うも
のであり、上記検出情報ベクトルの生成は、上記判定処
理に先行して独立して実行できるものであり、かつ上記
判定処理のベクトル処理は、間接アドレスに基づくベク
トル要素の移動や、ベクトル間の差の演算の極めて簡単
な処理で並列的に行われるため高速処理が実現できる。
上記、出現情報を用いてベクトル処理を行う方法は、
上記第1次絞り込み処理のみでなく、上記入力テキスト
文字列が一定の条件を満たす複数の部分文字列に分割で
きるときは、分割された部分文字列から取り出された要
素をベクトル要素とするベクトル情報にして、上記複数
の部分文字列に対応してFSA法を適用することによっ
て、FSA法の並列・パイプライン処理ができ、特に、上
記候補文字群を上記複数の部分文字列とみなしたとき、
上記FSA法のベクトル処理が上記第2次絞り込み処理に
適用できる。
〔実施例〕
第1図は本発明による文字列検索方法を実施する文字
列検索装置の一実施例の構成を示す図である。本実施例
は特に複数のキーワードに対しても効率よくパイプライ
ン処理を行う専用装置を使用するものである。
同図において、主記憶装置101には検索すべき文字列
(すなわち、テキスト文字列)の情報を格納する領域10
2,キーワード群の情報を格納する領域144,145及び146,
上記テキストの各文字がキーワード文字列中に出現する
か否か、あるいはキーワード文字列中でどのような位置
に出現するかを示す出現形態情報を格納する領域103,テ
キスト文字列からキーワード文字列又はそれに類似する
文字列(以下候補文字列群を呼ぶ)の情報、すなわち、
第1次絞り込み結果を格納する領域104,検索されたキー
ワード文字列の情報、すなわち、第2次絞り込み結果を
格納する領域105及びプロセッサ118の動作を行わせるテ
キストサーチプログラムが格納される領域106を含む。
以下、簡明のため上記各領域に格納された情報を領域番
号で示す。
テキストサーチユニット117はプロセッサ118によって
起動され、テキスト文字列102,キーワード文字列144,14
5,146及び出現形態情報103を入力として、上記第1次絞
り込み結果をパイプライン処理によって得、これを領域
104に第1次絞り込み結果として格納する専用処理装置
である。
第2図は説明の都合上主記憶装置101に格納されるデ
ータの例を示す。同図においてテキスト文字列102は
「行列計算法及び並列計算機の制御方法」で、キーワー
ド群を「並列」,「計算機」及び「制御方法」とする。
なお図面は簡明のため文字で示しているが、実際には2
バイトの文字コードで記憶されている。テキスト文字列
左の数字はインデックス、すなわち、テキスト文字列の
配列位置を表わす。
出現形態情報103(4ビット)はテキスト文字列に表
われる全種類の文字に対し、その各文字がキーワードに
対して、いかなる表われ方を示す情報である。領域103
の左側の数字は前記2バイトの文字コードを10進数で表
わしたものである。例えば文字「並」の文字コードは10
進数で表わすと130となり、その出現形態は“1100"で表
わされる。この各ビットの意味については後で説明す
る。
前記第1次絞り込み結果104の左段の数字は候補文字
列の先頭文字のテキスト文字列102におけるインデック
ス、右段の数字は候補文字列の長さ、例えば第1候補文
字列の(2,3)はテキスト文字列102のインデックス2の
文字「計」から始まる長さ3の文字列「計算法」を指し
ている。第2図の第1次絞り込み結果104は候補文字列
群は「計算法」,「並列」,「計算機」及び「制御方
法」であることを表わしている。
第2次絞り込み結果105は候補文字列群の情報104か
ら、キーワードに完全に一致したもののみを選んで記憶
したもので、数字の内容は第1次絞り込み結果の場合と
同じ表記法である、上記候補文字列群の中で「計算法」
はキーワード群144,145,146にないので雑音として除か
れている。
なお、領域104,105の情報は左,右それぞれ4バイト
のコードで表わされる。
次に、上記文字列検索装置による文字列検索処理の概
要について説明する。
第3図は本発明の文字列検索方法の処理の概要を示
す。
処理ユニット118はテキストサーチプログラム106を開
始する。まず、第1次絞り込み処理ルーチン31がコール
されると、キーワード群144,145,146を入力とし出現形
態情報(出現形態マップと呼ぶ)を作り、主記憶装置10
1の領域103に格納する。この出現形態マップ103の詳細
については後述する。
上記出現形態マップ103が形成された後、テキストサ
ーチ命令が入力されると、処理ユニット118はテキスト
サーチユニット117を起動し、テキスト文字列102,キー
ワード群144〜146,出現形態マップ103の情報を主記憶装
置101から入力する。
サーチユニット117は後述の構成と動作によって、候
補文字列を検索し、その結果を領域104に格納する。こ
の処理ルーチン31が完了すると、第2次絞り込みルーチ
ン32がコールされる。
第2次絞り込み処理ルーチン32はテキスト文字列102,
キーワード群144〜146と第1次絞り込み処理結果104の
情報を入力とし、処理ユニット118で、前述の如き雑音
を除き、最終結果を得て、これを主記憶装置101の領域1
05に格納し、テキストサーチ処理を終了する。第2次絞
り込み処理ルーチン32では、従来の文字列検索法、本実
施例ではFSA法を第1次絞り込み結果104の指す各候補文
字列について適用する。第1次絞り込み処理ルーチンで
はテキストサーチユニット117によりパイプライン的処
理が行われ高速に候補が絞り込まれる。
以下、上記実施例の各部の構成動作の詳細について説
明する。
第4図は上記第1次絞り込み処理ルーチン31の内容を
示すフローチャートである。
処理ユニット118はサーチプログラム106に従って、最
初に初期化を行う。すなわち、プログラム変数mにキー
ワードのうち文字数の最も短いものの長さ(この場合、
キーワード144,145,146のうち最短は「並列」の2)を
代入し、出現形態マップ103の全エントリを0にクリア
し、プログラム変数Nにテキスト102の長さ(この場合1
8)を代入する(ステップ401)。
次にキーワード144〜146中の各文字を調べて出現形態
マップ103を作成する。具体的には各キーワードについ
て(ステップ402)、キーワード中の文字Cq(キーワー
ドのq番目の文字の意)を順次取り出し(ステップ40
3)、まずCqをあるハッシュ関数hashによりハッシュし
結果をプログラム変数jに代入する(ステップ404)。
ハッシュ関数hashのハッシュ法はテキストサーチユニッ
ト117中のハッシュ回路116のものと同一処理を行うもの
で後で説明する。ハッシュする目的は出現形態マップの
大きさをできるだけ小さくするためである。次に文字Cq
の出現形態を調べる。はじめに文字Cqの出現位置(q番
目)と最短キーワード長mとを比較し(ステップ40
5)、出現位置qがm以前ならば出現形態マップ103の第
jエントリの第0ビットに“1"をたてる(ステップ40
6)。第2の文字Cqがキーワードの先頭に出現するかを
調べ(ステップ407)、出現する場合には出現形態マッ
プ103の第jエントリの第1ビットを“1"にする(ステ
ップ408)。同様に文字Cqがキーワードの中間(先頭と
最後以外)に出現するか(ステップ409)、あるいは文
字Cqがキーワードの最後に出現するか(ステップ411)
を調べ、それぞれ出現形態マップ103の第jエントリの
第2ビット及び第3ビットを“1"にする(ステップ410,
412)。以上により出現形態マップ103が形成される。こ
の手順を第5図及び第6図を用いて第2図に示した具体
例で説明する。第5図はハッシュ回路(第1図の回路11
6と同一の機能を持つ)の構成を示す図である。入力はC
0〜C15の16ビットであり、出力はA0〜A9の10ビットであ
る。C0〜C15のうち出力A0〜A9と接続されていないもの
は無視されることを示している。すなわち、ハッシュ法
としては入力C2とC3の排他論理和(EOR)がA0となり、C
5,C6,C7の各ビットがA1,A2,A3に等しく、C10〜C15ビッ
トはA4〜A9に等しいことになる。第6図はキーワード14
4〜146中の各文字についてその文字コードとハッシュ結
果と出現形態情報とをまとめた表である。例えば、文字
「並」についてはその文字コード(例えばKEISコード)
がCACであり、第5図のハッシュを行うと結果は82(16
進)となる(10進130)。さらに文字「並」は最短キー
ワード長2より前の位置に出現し、またキーワード「並
列」の先頭の文字であるので、出現形態情報の第0ビッ
ト及び第1ビットが1となる。また、中間あるいは最後
に出現するものでないので第2,第3ビットは“0"とな
る。従って出現形態マップ103の第130エントリは、“11
00"となる。他のキーワード文字についても同様であ
り、出現形態マップ103中の第6図のハッシュ値が示す
位置にその出現形態情報4ビットが格納されている。第
1次絞り込み処理ルーチン31のステップ401で初期化と
して出現形態マップ103はオール0にクリアされている
ので、キーワードに出現しない文字については対応する
出現形態情報は“0000"となる。
さてステップ402〜412により出現形態マップ103の作
成が終わると、テキストサーチ命令が発行される(ステ
ップ413)。
第7図はテキストサーチ命令の内容を示す図である。
命令は32ビットで構成され、最初の16ビットは命令の種
類を示すコード71であり、次の8ビットは無視され、次
の4ビットには3つの汎用レジスタ74,75及び76を指定
する値R1であり、最後の4ビットには2つの汎用レジス
タ76及び78を指定する値R2である。汎用レジスタ74には
テキスト文字列102の先頭の文字のテキスト先頭アドレ
スが、汎用レジスタ76には出現形態マップ103の先頭ア
ドレスが、汎用レジスタ76は、第1次絞り込み結果104
を先頭アドレスが格納されている。汎用レジスタ77に
は、前記最短のキーワード長(プログラム変調mの値、
本実施例のm=2)が汎用レジスタ78にはテキスト文字
列の長さ(プログラム変数N(=18)の値)がそれぞれ
格納されている。
処理ユニット118は上記テキストサーチ命令を検出す
ると、汎用レジスタ74,75,76,77及び78の値を、それぞ
れ信号線139c,139b,139a,139e及び139dを介して、テキ
ストサーチユニット117のベクトル要素フェッチ回路15
2,フェッチ回路154,ベクトル要素ストア回路151,制御論
理回路111へ送られ、テキストサーチユニット117は起動
される。以後処理ユニット118は制御回路111の中のテキ
スト制御論理回路211からの完了報告信号140が来るまで
待状態に入る。
テキストサーチユニット117は起動されると、カウン
タ112〜115を0リセットするとともに主記憶装置(10
1)の出現状態マップ103をフェッチ回路154によりパス1
20を介して出現形態マップ格納用RAM109にすべて読み込
む。次に主記憶装置101上のテキスト文字列102の処理に
移る。
テキスト文字列102はデータパス119及びベクトル要素
フェッチ回路152を介して、ベクトルフェッチされ、フ
ェッチデータに含まれるテキスト文字列の各文字はデー
タパス153を介してレジスタ108に順次セットされる。レ
ジスタ108にセットされたテキスト文字(2バイト)
は、信号線127を介してハッシュ回路116に送られて、10
ビットから成る値にハッシュされる。このハッシュ値が
アドレス線128を介してRAM109の読み出しアドレスとし
て送られ、テキスト文字に対応する出現形態情報が読み
出されて信号線129を介して制御論理回路111に送られ
る。制御論理回路111はカウンタ制御論理回路211〜214
及びストア制御論理回路を含み各カウンタ制御論理211
〜124は現在のカウンタ群112,113,114,115の値と、信号
線129からの出現形態情報をもとに、現在検出中の候補
文字列に読み出したテキスト文字(レジスタ108の内
容)を加えられるか否かを判定し、その判定結果にもと
づいて各カウンタへの更新指示信号156,132,134,136を
送出する。ストア制御論理回路215は各カウンタ112,11
3,114,115の値と出現形態情報129をもとに、レジスタ11
0に格納された、候補文字列のインデックスと、その文
字列の長さとを主記憶装置101にストアする要求信号122
を発生する。
テキストカウンタ112は現在処理中のテキスト文字の
テキスト102内での位置iを示し、一致長カウンタ113は
現在検出中の候補文字列の長さlを示し、有効長カウン
タ114はテキスト文字の出現形態からみてそのテキスト
文字を候補文字列に加え得ない場合に、現在検出中の候
補文字列のうちどこ(v)までが有効な候補文字列とし
て出力可能かを示し、結果カウンタ115は現在までにい
くつ(k)の候補文字列が検出済みかを示すものであ
る。
一つの候補文字列が検出される毎に、減算器141で得
られるテキストカウンタ112と一致長カウンタ113との値
の差と、有効長カウンタ114の値のペアがレジスタ110に
信号線125及び135を介してセットされる。セットされた
データは、データパス150を介してベクトル要素ストア
回路151に送られる。ベクトル要素ストア回路151は受け
とったデータをデータパス121を介して主記憶装置101に
送出し、第1次絞り込み結果104中の結果カウンタ115が
示す位置にストアする。
第1図のテキストカウンタ制御論理回路211,一致長カ
ウンタ制御論理回路212,有効長カウンタ制御論理回路21
3,結果カウンタ制御論理回路214,及びスト制御論理回路
215はそれぞれ第8図(A),(B),(C),(D)
及び(E)の真理値表を表わす機能構成を持つ。上記真
理値表では、説明の簡単のため、テキストカウンタ112
をi,一致長カウンタ113をl,有効長カウンタ114をv,結果
カウンタ115をk,出現形態情報129の第0〜第3ビットを
a0〜a3,最短キーワード長77をm,テキスト長78Nと表わ
す。又、入力状態の中で、N>i,l=0,l<m∧0,v<
m,は条件を表わし、これらの条件が成立するときは
“1",不成立のときは“0"で表わす。“×”はこれらの
条件は無視されることを表わす。
出力信号で+1,NOP,set0,set1はそれぞれカウンタの
値を1増すこと,変更しないこと,0にセットすること,1
にセットすることを表わす。
以下、第2図で示した、具体的テキスト文字列102か
ら候補文字列を検索する場合の制御論理回路111及びカ
ウンタ群の動作をより詳細に説明する。
第9図は各時刻にテキスト文字列102の各文字を読み
込む毎の各カウンタあるいは信号の様子を示したもので
ある。
まず時刻0ではカウンタ群112〜115は初期状態でいず
れも0となっている。
時刻1でのカウンタ制御論理の入力状態は、N=18,i
=0であり、N>iは成立するから“1",l=0も“1",v
<mも0<2なので“1",l<m∧は0<2&なの
で“1",a1a2a3は“000"となっている(但し“∧”は論
理積を表わし、はa0の否定を表わす。
従ってテキストカウンタ制御論理211の項番2,一致長
カウンタ制御論理212の項番1,有効長カウンタ制御論理2
13の項番1,結果カウンタ制御論理214の項番1,及びスト
ア制御論理215の項番1に対応する動作指示が行われ
る。すなわち、動作指示はiを+1更新し、l,v,ストア
信号122,及び完了報告信号140は“0"とし、kはそのま
ま更新しないことを示している。従って時刻1のテキス
ト文字「行」処理の結果、テキストカウンタiへは信号
156を介して+1更新指示が出され、一致長カウンタl,
有効長カウンタvには0リセットの指示がそれぞれ信号
線132,134を介して出される。よって、各カウンタ、i,
l,v,kの値は第9図時刻1の個所が示すように1,0,0,0と
なる。
時刻2ではテキストの次の文字「列」の出現形態情報
が読出される。文字「列」のハッシュ値は435であり
(第6図参照)、出現形態マップの第435エントリは“1
001"なので“1001"がパス129を介してカウンタ制御論理
111に送られる。時刻2での入力状態は、N>iは18>
1なので“1",l=0も“1",v<mも0<2なので“1",l
<m∧はa0=1なので“0",a1a2a3は“001"とな
る。対応する動作指示は時刻1での項番1に対応するも
のと同一であり、カウンタiのみが+1され、カウンタ
の値i,l,v,kはそれぞれ2,0,0,0となる。この意味は、
「列」はキーワードの文字ではあるがその出現形態は
“1001"、すなわち最短キーワード長より前に出現しか
つキーワードの最後の文字であることを示している。一
致長カウンタlは現在0であるので、キーワード文字が
表われるとすればキーワードの先頭文字でなければなら
ない。従って「列」は候補となり得ないので候補文字列
に加えられず、検出中の候補文字列の長さを示す一致長
カウンタの値lは0のままとする。
時刻3ではテキスト文字「計」が読み込まれるが
「計」の出現形態情報は第6図に示したように“1100"
であり、カウンタ値iとカウンタ値lが+1され、カウ
ンタ値i,l,v,kはそれぞれ3,1,0,0となる。つまり現時点
では候補文字列は未検出(l=0)であり、かつ「計」
はキーワードの先頭に出現する文字なので候補文字列の
先頭となり得る。そこで一致長カウンタ値lを+1して
1として何らかの候補文字列が検出され始めたことを記
憶する。
時刻4ではテキスト文字「算」が読み込まれるが、文
字「算」の出現形態情報は“1010"であり、カウンタ値
iとカウンタ値lが+1され、カウンタ値i,l,v,kはそ
れぞれ4,2,0,0となる。これは、現時点で候補文字列を
検出中(l=1)であったのでキーワードの中間に出現
する文字「算」を候補文字列に加え得るためである。
時刻5ではテキスト文字「法」が読み込まれるが、文
字「法」の出現形態情報は“0001"であり、N>iは18
>4であるから“1",l=0は2≠0であるから“0",v<
mは0<2であるから“1",l<m∧は2≧2である
から“0",a1a2a3は“001"となる。従ってカウンタ値l
は0にリセットされ、有効長カウンタ値vにはl+1、
すなわち“3"がセットされる。これは文字「法」はキー
ワードの最後に出現する文字なので候補文字列はこの
「法」の文字を加えて1つ完結するからである。このよ
うに有効長カウンタ値vは現在検出中の候補文字列中で
キーワード最後に出現する文字を発見した時にそこまで
の候補文字列の長さを記憶するためのものである。
時刻6ではテキスト文字「お」が読み込まれるが
「お」の出現形態情報は“0000"であり、v<mは3≧
2で“0"であり、l<m∧は0<2∧であるから
“1"となる。よって、カウンタ値iとkが+1され、ス
トア信号122が“1"となり、値lとvは0になる。すな
わち最短キーワード長m以上の有効長vをもつ候補文字
列を検出済みでかつ現テキスト文字は候補文字列には加
え得ないので検出済みの候補文字列(「計算法」)を第
1次絞り込み結果104の第1要素としてベクトル要素ス
トア回路151に主記憶装置101に格納する。格納データは
レジスタ110に格納された値であり、前半4バイトは時
刻4のテキストカウンタ値iと一致長lの差2が、また
後半4バイトには時刻5の有効長カウンタの値3がそれ
ぞれストアされるので、第1次絞り込み結果104の第0
要素は(2,3)となる(レジスタ110の前半にはiとlの
差が加算器141で加算されてレジスタ147で1時刻分遅延
されるので、時刻4のカウンタ値が反映される)。ベク
トル要素ストア回路151は信号線139aに示された結果ベ
クトル104の先頭アドレスと信号線136により示された結
果カウンタとから、結果カウンタが指す要素の主記憶ア
ドレスを計算し、信号線150が示すデータを信号線121を
介してそのアドレスに格納する回路である。
以下同様に時刻が進むのに同期して第9図に示すよう
に候補文字列の検出が進み、時刻18ではカウンタ値i,l,
v,kはそれぞれ18,0,4,3となる。ここで最後の候補文字
列「制御方法」を指すデータ(14,4)が第1次絞り込み
結果104の第3要素として格納されるとともに完了報告
信号140が“1"となり、処理ユニット118にテキストサー
チユニットの動作完了が伝えられる。
出現形態情報の第0ビット目はその文字がキーワード
中で最短キーワード長より前に出現するか否かを示して
いた。このビットが存在することにより、例えばテキス
ト文字列中に、「制法」という文字列が出て来た場合に
この文字列を候補から除外できる。というのは「法」は
最短キーワード長2より後ろの位置(3番目)に出現す
るので、候補文字列としては「制」を検出している段階
で「法」が出現することはあり得ないとわかるからであ
る。このように出現形態情報はなるべく少ないビット数
で、かつなるべくキーワードに近い文字列のみを候補文
字列として検出するように工夫されている。
完了報告信号140を受取った処理ユニット118はテキス
トサーチ命令処理を完了し、第1次絞り込み処理ルーチ
ン31(第3図)のコールが完了しリターンする(ステッ
プ414)。
第10図は第1図のテキストサーチユニットによる第1
次絞り込み処理における各部の時間関係を示す図であ
る。テキストサーチユニットの処理は1つの入力文字に
対してテキスト文字の読出しT(すなわち、フェッチ回
路153の出力からレジスタ108への入力),ハッシュ回路
116によるRAM109のアドレス生成A,RAM109からの出現形
態情報の読出しR,及びカウンタ更新の処理Cが経時的に
行われる。しかし、連続する複数の文字列に対し、第10
図に示す如くマシンサイクル(t0,t0+1……t0+6)単位
は処理が重複しパイプライン的に処理されるため、見か
け上1マシンサイクルで1テキスト文字の処理が完了す
る。
次に、テキストサーチプログラム106は第2次絞り込
み処理ルーチン32をコールする。
第11図は第2次絞り込み処理ルーチン32の構成を示す
フローチャートである。第2次絞り込み処理ルーチン32
は第1次絞り込み処理結果104の各要素について(ステ
ップ11)、プログラム変数Tcに各要素が指す候補文字列
を代入し(ステップ12)、Tcを検索対象テキスト文字列
144〜146をキーワードとして従来知られている方法、こ
こではFSA法(第11図(c)参照)により文字列検索を
行い(ステップ13)、第1次絞り込み結果104内にある
「計算法」のような雑音を除去して、第2次絞り込み結
果105を作成してリターンする(ステップ14)。FSA法に
よる文字列検索は公知であり、その動作も例えばシー・
エー・シー・エム、18,6(1975年6月)第333頁から第3
40頁(CACM,18,6T(June1975)pp.333−340)に記載さ
れているので、簡単に説明する。
第12図は、従来知られているFSA法を説明する図で、
(a)はキーワードに対する状態遷移図の例で、キーワ
ード「並列」,「計算機」,「制御方法」の場合に、文
字列の遷移を状態(丸で包んだ数字)で表わしたもので
ある。例えば初期状態を0とし入力文字が「並」であれ
ば状態0は状態“1"に、文字が「計」であれば状態3
に、文字が「制」であれば状態6に、それぞれ遷移す
る。又状態が1のとき次の文字が「列」であれば状態2
に遷移する。もちろん入力文字がキーワードにない文
字、あるいはキーワードの文字列と異なった順で入った
時は状態は0にリセットされる。
(b)図は、上記(a)の状態遷移図を信号処理に適
用できるようにした状態遷移表である。
FSA法では、(c)図に示す如く、初期処理として、
状態遷移表を作成し(1203)、テキスト文字の1個を入
力する毎に(1204)、現在の状態が最終状態(キーワー
ドの最後の文字の入力)であるか否かを調べ(1205)、
最終状態であればそのテキスト文字の位置とキーワード
長さを出力する(1206)、そして現状態とテキスト文字
から状態遷移表(b)を調べ、次に遷移すべき状態を決
定し(1207,1208,1209,1210,1211)、状態とテキスト位
置を更新(1112)、次のテキスト文字について同様の処
理をテキスト文字の処理の最後まで繰り返す。
上記公知のFSA法を、本発明の文字列検索方法の第2
次絞り込み処理に適用する場合、入力テキスト文字列
(第12図(c)ステップ1204)として、第1次絞り込み
結果104の要素、すなわち候補文字列の先頭文字のテキ
スト文字列における位置(インデックス:t)及び候補文
字列の長さ(字数:s)による文字をプログラム変数Tcと
して、tからt+s−1の文字を順次入力する。各文字
についての文字列検索処理は第12図(c)のプログラム
ステップ1205〜1212を実行することによって行う。
第2次絞り込み処理ルーチン32が完了すると、目的と
していた最終結果105が得られるのでテキストサーチプ
ログラム106が完了する(ステップ33)。
本実施例ではテキスト102の格納手段として主記憶装
置101を用いたが、テキストは順次読み出しであるの
で、磁気ディスク装置や磁気テープ装置でも良いことは
明らかである。
また、本実施例では文字コードを2バイトとしたが、
1バイトコートでも差し支えない。但し、1バイトコー
ドの場合(例えばEBCDICコードなど)は、第1次絞り込
み処理で検出される候補文字列の量が多くなり、第2次
絞り込み処理での負荷が増大する可能性がある。これは
使えば1バイトコードで表現可能な英字は26種しかない
のでキーワードが多くなるとほとんどの英字がキーワー
ド中に出現してしまい(2バイトコードが必要な漢字は
キーワードが増えてもキーワード中に出現する漢字群
の、全漢字に対する割合は小さい)、テキスト中の多く
の文字列がキーワードと類似と判断されるからである。
この問題は1バイトコードの文字については、連続す
る2バイトを1文字として扱うことにより解決できる。
例えば英単語“parallel"では“pa",“ar",“ra",“a
l",“ll",“le"及び“el"の7つの文字から成る列と考
えて他は本実施例と全く同じ処理を行えば良い。これに
ついては後述する。
ハッシュ回路116は入力2バイト10ビットに圧縮する
ものである。むろんより少ないビットに圧縮すればRAM1
09の容量を小さくできるが、反面、異なる文字のハッシ
ュ結果が同じ値となる(一般に衝突と呼ばれている)確
率が大きくなり、やはり第1次絞り込み結果104中の雑
音の量を増加させる。
本実施例での出現形態情報は4ビットとしたが、回路
簡単化のため簡略化することも考えられる。例えば第0
ビットは省略できる(むろん雑音量は増大する可能性が
ある)。また、最小構成としては、その文字がキーワー
ド中に出現するか否かのみを示す1ビットだけにしても
良い。この場合、有効長カウンタ114は不要であり、カ
ウンタ制御論理111では、キーワード中に出現する文字
が連続して現われる毎に一致長カウンタ113を+1し、
キーワード中に出現しない文字が表われた時に、一致長
カウンタ113が最短キーワード長207以上であれば候補と
して現在検出中の文字列を出力し、そうでなければ出力
しないようにすれば良い。従って回路が大幅に簡単化さ
れるが、この場合も雑音量は一般に増加する。
次に、本発明による文字列検索方法をベクトル演算処
理によって行った実施例について説明する。ベクトル演
算処理は、ベクトルデータ、すなわち、一定間隔で配列
された要素のデータ群、の各要素毎の並列演算、及びパ
イプライン処理を行うもので、四則論理演算及び移動命
令を備えた通常のベクトル計算機(例えば日立製作所製
S810アレイプロセッサシステム)によって実施される。
文字列検索においては文字列の各文字のデータ、例え
ば、文字コード、文字の出現情報、あるいは文字列にお
ける位置情報がベクトルデータのベクトル要素となる。
以下簡明のためベクトルデータ、ベクトル要素は単に
「ベクトル」、「要素」と呼ぶ。
第13図は前記候補文字列を検索する第1次絞り込み処
理の手順を示したフローチャートPAD(Program Analysi
s Diagram)であり、処理ベクトルデータの流れを示し
た第14図を必要に応じて参照しながら説明する。なお第
11図のベクトルデータは、記憶装置、あるいはベクトル
レジスタに格納されるデータであり、縦方向がそれぞれ
1つのベクトルを構成し、1つのます目は要素を表わ
す。
第1次絞り込み処理は、第14図に示す検索キーワード
群を表わすキーワードベクトルKEYと、テキストTEXTを
入力して、キーワードあるいはこれに類似する候補文字
列のテキスト上での位置を示す先頭位置ベクトルTOPと
長さを示す候補長ベクトルLNGを出力するプロセッサで
実現される。プログラムとその処理対象である上述の各
データはいずれも主記憶装置に格納され、必要に応じて
ベクトルレジスタにロードされ、演算をうける。
以下処理の詳細について説明する。
第1次絞り込み処理ルーチンを起動する(1300)と、
初期化が行われる。すなわち、プログラム変数MINKLに
キーワードのうち最も短いものの長さ(第14図の例では
キーボード群KEYのうち最短は“TEXT"の4)を代入し、
出現情報ベクトルKWDの全エントリを0クリアし、プロ
グラム変数NにテキストベクトルTEXTの長さ(この場合
は25)を代入する(ステップ1301)。
これらの長さのデータはテキスト文字、キーワード文
字の入力時に得られ、レジスタ(図示せず)に記録され
る。次にキーワードKEY中の各文字を調べて出現情報ベ
クトルKWDを作成する。具体的には、各キーワードにつ
いて(ステップ1302)、キーワードKEY中の文字Cq(キ
ーワードの第q文字目の意)を順次取り出し(ステップ
1303)、出現情報ベクトルKWDの第Cqエントリに1を代
入する(ステップ1304)。以上により出現情報ベクトル
KWDが作成される。この手順を第14図を用いて具体例で
みることにする。キーワードベクトルの最初のキーワー
ド“SEARCH"について、文字Sはその文字コード(EBCDI
Kコード)が“E2(16)”であり、10進数では226であ
る。従って出現情報ベクトルKWDの第226エントリの要素
を1にする。他のキーワード文字についても同様であ
り、各文字に対応するエントリに1が代入される。前述
のように、出現情報ベクトルKWDは初期化ステップ1301
で全要素が0にクリアされているので、キーワードに出
現しない文字については対応する出現情報は“0"のまま
となる。
さらに検出状態ベクトルMSK1の先頭と最終の要素を0
にセットする。これは、検出状態ベクトルより、候補文
字列を識別するステップ(1306)のためであり、詳細は
後述する。以上で初期化のステップが完了する(ステッ
プ1301)。
さて、ステップ1302により、出現情報ベクトルKWDの
作成が終わると、テキストベクトルTEXTより候補文字列
を検出する処理が行われる(ステップ1305〜1314)。
検出の第1ステップとして、検出状態ベクトルMSK1の
生成がなされる。すなわち、テキストベクトルTEXTの各
要素について、その値が読み出され、読み出された各要
素(1要素がテキストの1文字に対応している)の値か
ら出現情報ベクトルの対応する要素を参照して各要素
(つまり、テキスト中の各文字)に対する出現情報を検
出状態ベクトルMSK1に格納する(ステップ1305)。この
演算は、間接アドレスに基づくベクトル要素の移動であ
り、通常のベクトル計算機に備えられた命令で実現され
る。以上の処理により、検出状態ベクトルMSK1には、テ
キスト中の各文字についてその文字がキーワード内に出
現する文字であるか否かが(この例では、出現する場合
が1,出現しない場合は0である)、テキストベクトルの
各要素と1対1に対応する形で格納されることになる。
第14図の例で言えば、テキストベクトルTEXTの第1要素
から第6要素の表わす文字列“SEARCH"については、各
文字がキーワードに含まれる文字からなっているので、
検出状態ベクトルMSK1の第1要素から第6要素に格納さ
れる値は1である。以下のステップでは、この検出状態
ベクトルMSK1(1404)を走査して、キーワード内に出現
する文字が最短キーワード長MINKL以上連続して表われ
る(すなわち、検出状態ベクトルの要素について、その
値が1であるような要素が連続して表われる)場合に、
その文字から構成される文字列を候補文字列として検出
し、その位置情報を結果ベクトル(TOP,ING)として出
力する。更に詳しく説明する。
まず、検出状態ベクトルMSK1から重複要素の検出を行
う。すなわち、検出状態ベクトルMSK1の各要素MSK1
(I)(ここで、Iは要素番号である)に対し、1つ前
の要素MSK1(I−1)との差をとり、この値を区切り位
置ベクトルMSK2の第I番目の要素MSK2(I)に格納す
る。この演算はベクトル間の差をとる通常のベクトル命
令で実現される。また、前述の初期化ステップ(1305)
で、出現状態ベクトルMSK1の第0番目の要素と、第N+
1番目の要素を0で初期化したのは、このステップ(13
06)に備えたためである。以上、検出状態ベクトルMSK1
の要素と区切り位置ベクトルMSK2との要素は一意対応で
演算される。そこで検出状態ベクトルMSK1内で1の値を
もう要素が連続する場合に、その連続する要素別の先頭
要素MSK1(I)(ただしIは要素番号である)に対応す
る区切り位置ベクトルMSK2の要素MSK2(I)の値は1と
なり、同様に連続する要素列の最終要素MSK1(J)(た
だしJは要素番号である)に対応する区切り位置ベクト
ルMSK2の要素MSK2(J)の1つ後の要素MSK2(J+1)
の値は−1となる。第14図の例では、テキストベクトル
TEXTの先頭の単語“SEARCH"について、その先頭文字
“S"の格納される要素の番号は1であり、区切り位置ベ
クトルMSK2の第1要素の値は1となる。また最後の文字
“H"の格納される要素の番号は6であり、区切り位置ベ
クトルMSK2の第6+1要素の値は−1となる。
この結果、区切り位置ベクトルMSK2(1406)を走査し
て、各要素の値を検査することにより、検出ベクトル内
に出現する値1が連続する要素の列に対して、その先頭
と最終の要素の位置が検出される。また前述のように、
検出状態ベクトルMSK1の要素とテキストベクトルTEXTの
要素は一意に対応している。そこで、区切り位置ベクト
ルMSK2の各要素MSK2(I)についてその要素の値が1で
あれば、その要素に対応するテキストベクトルTEXTの第
I要素は候補文字列の先頭要素であるから、候補文字列
の先頭要素の位置を示す要素番号Iを先頭位置ベクトル
TOPとして記憶装置に格納する(ステップ1307,1309)。
次に、区切り位置ベクトルMSK2の各要素についてその
要素の値が−1であれば、テキストベクトルTEXTの第I
−1要素は候補文字列の最終要素であるから、候補文字
列の最終要素の1つ後の要素の位置を示す要素信号Iを
終了位置ベクトルBTMとして記憶装置に格納する(ステ
ップ1308,1310)。
以上の処理について、ステップ1307,1309を例にと
り、実際のベクトル命令列として如何に実行がなされる
かを説明する。検出状態ベクトルとスカラ値である1を
ベクトル比較命令により比較し、先頭位置マスクベクト
ルM1を生成する(ステップ1307)。先頭位置マスクベク
トルには、検出状態ベクトルMSK1の値が1である要素に
ついて、対応する位置に1が格納される。次に、先頭位
置マスクベクトルM1を用いて、位置ベクトルPOSの要素
のうち、マスクの値が1であるものを、先頭位置ベクト
ルTOPに格納する(ステップ1309)。このステップにつ
いても、間接アドレスに基づくベクトルの要素移動を行
う通常のベクトル命令により実現することができる。ス
テップ1308,1310についても同様に、通常のベクトル命
令による実行が可能である。
例えば、第14図の例でいえば、区切り位置ベクトルMS
K2の第1要素は1であるから、先頭位置ベクトルTOPの
第1要素には1が格納され、区切り位置ベクトルMSK2の
第7要素は−1であるから、終了位置ベクトルBTMの第
1要素には7が格納される。
以上のステップにより、テキストベクトルTEXT内の候
補文字列の先頭文字の位置が先頭位置ベクトルTOPと、
候補文字列の最後の1つ後の位置が終了位置ベクトルBT
Mとして記憶装置に格納される。この候補文字列の先頭
位置と終了位置を検出するステップは、各々区切り位置
ベクトルMSK2をサーチして特定の要素値(具体的には
“1"と“−1"である)を検出する処理であり、要素毎に
各々独立のベクトル命令で並列に実行される。また、検
出状態ベクトルMSK1から区切り位置ベクトルMSK2を生成
するベクトル命令処理(ステップ1306)について、区切
り位置ベクトルMSK2の各要素の値が生成される毎に、後
続のベクトル命令であるステップ1307,1308,1309,1310
を実行することができる。従って、ベクトル命令列をオ
ーバラップすること(チェイニング)が可能であり、高
速な処理が実現される。
さて、前述したように第1次絞り込み処理では、テキ
ストベクトルTEXT内で、キーワードに使われる文字が最
短連続長MINKL以上連続して出現する場合に、その文字
列を候補文字列としてその先頭位置と文字列長を出力す
る。そのため、以上のステップで得られた候補文字列の
うち、最短連続長未満の文字列を補助から削除する。ま
ず、終了位置ベクトルBTMの各要素について、先頭位置
ベクトルTOPの対応する要素の減算を行い(ステップ131
1、この処理は通常のベクトル命令により実行でき
る)、最短連続MINKL以上の値については(ステップ131
2)、候補文字列長として、候補長ベクトルLNGに出力を
行うと共に、対応する候補文字列の先頭位置を先頭位置
ベクトルTOPに出力する(ステップ1313)。また、終了
位置ベクトルBTMの要素から先頭位置ベクトルTOPの要素
を減算した値が最短連続長MINKLよりも小さい場合に
は、対応する候補文字列はキーワードに一致しないこと
が明らかなので出力は行わない(ステップ1314)。第14
図の例でいえば、先頭位置ベクトルTOPと終了位置ベク
トルBTMの第2要素によって指定されるテキストベクト
ルTEXT上の“A"になる文字列については、その長さは1
であり、最短連続長MINKL=4より小さいので、この文
字列を示す要素番号の値は先頭位置ベクトルTOPと候補
長ベクトルLNGに出力されない。このように、最短連続
長MINKLを設けてチェックを行うことで、なるべくキー
ワードに近い文字列が候補文字列として検出される。
プログラムがステップ1315に達すると、第1次絞り込
み処理ルーチンは終了する。
第15図は本発明による文字列検索方法の一実施例の処
理フロー図で、特に前述の第2次絞り込み処理、すなわ
ち候補文字列群の情報からキーワードに合致する情報を
検出する処理に有効な方法である。第2次絞り込み処理
の方法としては、通常のテキストサーチ処理機能をもつ
従来方式(例えばスカラFSA法など)が適用可能であ
る。しかし、次の理由から、第2次絞り込み処理はなる
べく高速であることが望ましい。すなわち、上記文字列
検索方法の実行時間は第1次絞り込み処理実行時間と第
2次絞り込み処理実行時間の和で決まる。従って、第1
次絞り込み処理結果の文字列に含まれる文字の量が、テ
キスト全体の文字量の1/nであるとし、第2次検索を通
常のスカラプログラムによるFSA法で行う場合を考える
と、第1次検索処理がいかに高速であってもスカラプロ
グラムによるFSA法に対する性能向上比は、たかだかn
倍にとどまる。
そこで、本実施例では、第2次絞り込み処理を高速化
にするため、従来知られているFSA法とベクトル方法を
巧みに組合せることによって、高速化を実現している。
すなわち、ベクトル演算処理の高速化に必要な条件は (1)ベクトル長が長いこと。
(2)各ベクトル要素が独立に計算可能であること。
である。
そこで、テキスト文字列において、そのテキスト文字
列が含むキーワードを分割することなく、テキスト文字
列が互いに重複することのないように複数の部分文字列
にテキスト文字列を分割することができれば、以下の手
順に従ってFSA法をベクトル化して処理することが可能
である。概略は以下の通りである。
まずキーワードから状態遷移表を作成し、これをベク
トル形式のデータである状態遷移ベクトルとする。次に
各部分文字列について部分文字列毎に一意に対応する状
態を割り当て、これらの状態を要素とする状態ベクトル
を生成する。次に各部分文字列の第1番目の文字からな
る入力文字ベクトルを生成する。この3つのベクトルに
基づき、各部分文字列における1文字分の検出処理(FS
A法の状態遷移処理)をベクトル処理として実行する。
すなわち、状態ベクトルの各要素について、対応する入
力文字ベクトルの要素に従って状態遷移ベクトルを参照
し、読み出した遷移先状態で状態遷移ベクトルの要素を
書き換えることで、各部分文字列について1文字分の検
出処理がベクトル処理の形で実現される。1文字分の状
態遷移処理を行った後は、各部分文字列の第2文字目の
文字で入力文字ベクトルを作成し、状態遷移処理を繰り
返す。以上の処理を部分文字列の最終文字に到るまで繰
り返せばよい。
この方法によれば、部分文字列数が十分大きければ前
述の条件(1)が満たされ、また部分文字列どうしは互
いに無関係であるから条件(2)についても満足するこ
とができ、ベクトル化が可能となる。前記第1次絞り込
み処理の結果である候補文字列は明らかに前述の2つの
要件を満たすテキスト文字列の部分文字列になってい
る。
以下の実施例の説明では上記第1次絞り込み結果を上
記部分文字列とした場合について説明するが、FSA法の
ベクトル化は本実施例に限定されない。例えばテキスト
文字列を部分文字列に分割する方法としては、最も単純
にはテキスト中のキーワードでないような区切り記号を
用いることが考えられる。例えば和文であれば句点や読
点、英文であれば空白がこれにあたる。
以下、第15図に示されるPADに従って、必要に応じて
ベクトルデータの流れを示した第17図を参照して実施例
の処理を詳細に説明する。なお、第17図のベクトルデー
タの内容は、第14図で示したテキスト文字列、キーワー
ド文字列に対応するものである。
まず、テキストサーチプログラム106により、第2次
絞り込みルーチン32がコールされ、第15図のベクトル化
FSA法処理ルーチン1501が起動される。ベクトル化FSA法
処理ルーチンの起動にあたり、呼出し側から渡されるパ
ラメータを第17図(a)に示す。ただしパラメータの
内、状態遷移ベクトルFSATBLと受理ベクトルACCPTは、
本ルーチン1501の内部変数であり、パラメータとして渡
していない。またテキストベクトルTEXTと、候補文字列
の位置と長さを示すベクトルである先頭位置ベクトルTO
Pと候補長ベクトルLNGが、さらに各候補文字列に対応す
る状態からなる状態ベクトルSTATEが渡される。ここ
で、候補文字列を示す2つのベクトルTOPとLNGには、第
1次絞り込み処理の結果である3つの部分文字列“SEAR
CH",“SORT",“ALGORITHM"を指し示すインデックス値が
格納されている。また状態ベクトルSTATEの各要素につ
いては初期状態の値0が格納されている。
さらに、第2次絞り込み処理の結果得られた文字列
(キーワードに一致する文字列)の位置と長さを格納す
る領域として、検索結果位置ベクトルRTOPと検索結果長
ベクトルRLNGが与えられる。第17図は、ベクトルRTOP及
びRLNGは実施例に基づく最終結果に対する値が示されて
いるが、もちろん起動時にはこれらの値は格納されては
いない。本実施例では簡単のため、出力領域として十分
な長さすなわち要素数のベクトルが用意されている。
さて、以上のパラメータを渡されたベクトル化FSA法
処理ルーチン(1501)は、まず初期化を行う(ステップ
1502)。まずキーワードKEYより、状態遷移ベクトルFSA
TBLと受理ベクトルを生成する。さらにプログラム変数
Lに先頭位置ベクトルTOPのベクトル長さをセットす
る。つまり、プログラム変数Lには、絞り込みの対象と
なる候補文字列(部分文字列)の数(本実施例ではL=
3)がセットされる。
第16図は上記状態遷移ベクトルFSATBL及び受理ベクト
ルACCPTを説明する図である。
第16図(a)は、“SEARCH",“ALGORITHM",“TEXT"の
3つをキーワードとして与えた場合の状態遷移図であ
る。第16図は上記状態遷移図(a)をもとに作られた、
状態と入力文字と状態遷移先の関係を表わす表で、その
中で、状態遷移先はベクトルデータFSATBLを構成する。
状態遷移先FSATBLには各状態毎に入力文字セットの分
(この場合、入力文字は1Bのコードであるから28=256
種)だけエントリが用意されており、各文字はその文字
コードを8ビットの2進整数として昇順にエントリ上に
並べられている。従ってFSATBLのベクトルの要素数は
〔状態数×256〕である。FSATBLの各要素には、ある状
態のもとで特定の入力文字を入力した遷移先状態が格納
されている。例えば、状態0で文字“A"を入力した場
合、状態遷移ベクトルFSATBLの第193番目(“A"のEBCDI
Cコードは16進数のC1であり、10進数では193となる)の
要素を参照して状態7に遷移することがわかる。また、
第16図(c)の受理表は状態がキーワードとして受理で
きるものかをチェックするものである。すなわち、受理
ベクトルACCPTは、各状態に対応するエントリが用意さ
れており、受理状態であれば検出されたキーワードの長
さが、受理状態でなければ0が格納されている。第16図
の例でいえば、キーワード“SEARCH"を検出した状態6
に対応するFSATBLの要素の値は6となり、文字数6の文
字列をキーワードとして検出したことが示される。
第15図に戻り、次に候補文字列が存在する限り(ステ
ップ1503)以下のステップを繰り返す。
まず、候補文字列の全てについて、先頭位置ベクトル
TOPの指す1文字からなるベクトルINCHを作成する(ス
テップ1504)。この処理は間接アドレスによるベクトル
移動命令により実現がなされる。結果のベクトルINCHと
状態ベクトルSTATEの値から、状態遷移ベクトルFSATBL
を参照し、遷移先状態の値で状態ベクトルSTATEを更新
する(ステップ1505)。このステップは通常のベクトル
命令(積演算,和演算,間接アドレスに基づく移動演算
等)の組合せで実現できる。
次に、ステップ1504,1505により各候補文字列に対し
1文字分の状態遷移が終了したので、各候補文字列につ
いて、先頭位置ベクトルTOPの値を1インクリメント
し、候補長ベクトルLNGの値を1デクリメントする(ス
テップ1506)。すなわち先頭位置ベクトルTOPは各候補
文字列について、次の入力文字のテキスト上での位置を
示すベクトルであり、候補長ベクトルLNGは各候補文字
列について、検索処理の対象となる残りの文字数を示す
値である。上述の例に従って、3つの候補文字列の先頭
文字について、上記のステップを実行した時点(第15図
の時点)での先頭位置ベクトルTOPと入力文字ベクト
ルINCH,状態ベクトルSTATE,そして候補長ベクトルLNGの
値を第17図(b)に示した。ここで先頭位置ベクトル
TOPの値は初期値より各々1大きな値となり、各候補文
字列の第2文字目が次の遷移処理(ステップ1504,150
5)の対象となることを示している。また入力文字ベク
トルINCHには、各候補文字列の先頭文字が格納され、状
態ベクトルSTATEには、入力文字INCHに基づく遷移結果
が格納されている。第1番目の候補文字列についてみれ
ば、状態0で文字“S"を入力したことで状態1に遷移し
たことがわかる。候補長ベクトルLNGについては、1文
字分の遷移処理を行ったために、各要素とも初期状態よ
り1少ない値が格納されている。
さて状態遷移が終わると、各候補文字列について、遷
移後の新状態が受理状態であるか否かの検査を行う。ま
ず遷移後の状態STATEをもとに受理ベクトルACCPTを参照
して、参照した値が正の数であれば(ステップ1507)受
理状態であるから、検出文字列の先頭位置と長さを出力
用のベクトルRTOP,RLNGに格納する(ステップ1508)。
受理ベクトルACCPTを参照した値が0なる受理状態では
ないので、次のステップに進む。第17図(b)の例で
は、状態ベクトルSTATEの各要素である状態1,7は共に受
理状態ではないので、結果文字列の出力は行われない。
次に、候補文字列の圧縮ステップについて説明する。
まず圧縮結果を出力する位置を示すプログラム変数Jを
1にセットする(ステップ1509)。次に全ての候補文字
列について、各候補文字列の残りの長さである候補長ベ
クトルLNGの要素の値を検査する(ステップ1510)。も
し長さが0より大きければ、候補文字列の残りの部分に
次の状態遷移処理を行う必要があるから、先頭位置ベク
トルTOP,候補長ベクトルLNG,状態ベクトルSTATEから除
外しないでおく(ステップ1511)。もし長さが0であれ
ば、該当する候補文字列の最終文字について状態遷移処
理を実行したことがかわるので、この候補文字列に関す
る先頭位置,候補長,状態の各情報を各ベクトルから対
応する要素を除外する。最後に、残った候補文字列の数
をプログラム変数Nにセットする(ステップ1512)。第
17図(b)の例で言えば、各候補の文字列とも残りの
長さを示す候補長ベクトルの要素値が0より大きいの
で、候補文字列数は不変である。
ステップ1504からステップ1511について、各候補文字
列の性質を表わすベクトル(先頭位置ベクトルTOP,候補
長ベクトルLNG,入力文字ベクトルINCH,状態ベクトルSTA
TE)において、各ベクトル要素は互いに無関係である。
従ってこれらのステップを構成するベクトル命令例で
は、あるベクトル命令が出力するベクトルにおいて、要
素の値が確定した時点で、このベクトルを入力する次の
ベクトル命令の演算を開始することが可能であるから、
ベクトル命令列の間で実行をオーバラップすること(チ
ェイニングと呼ばれる)ができ、高速化が達成される。
このように本実施例のベクトルFSA法は、ベクトル計算
機において好適なアルゴリズムとなっている。
以上で、各候補文字列について1文字分の処理が終了
する。そこで、ステップ1503に戻り、候補文字列数を変
数Nが0より大きいか否かを調べる。変数NがN>0、
つまり候補文字列が残っている限りは上記のステップ
(ステップ1504〜1512)を繰り返し実行する。候補文字
列が尽きた時点でベクトル化FSA法の処理(1501)が終
了し、リターンする(ステップ1513)。
最後に第17図の例を用いて、候補文字列の圧縮と、結
果文字列の出力について説明する。第16図ステップ1504
〜1512のループのうち、点での各ベクトルの値を示し
たものが第17図(b)である。第17図(b)のでは、
候補長ベクトルLNGの第2要素の値が0となり、候補文
字列“SORT"のサーチが終了したことがわかる。そこで
ステップ1510〜1511の処理で候補文字列“SORT"に関す
るデータが削除され、第17図以降では候補長が2(N
=2)となる。また第17図(b)では、状態ベクトル
STATEの第1要素の値が6になっている。状態6につい
ては受理ベクトルACCPT(1502)の第6要素の値が6で
あり、受理状態であることがわかる。そこで、ステップ
1507〜1508により候補文字列“SEARCH"についてはキー
ワードに一致する文字列として結果格納用のベクトルRT
OP,RLNGに対する出力(キーワードのテキスト文字列の
位置及び文字数)が取り出される。
以上の処理によってベクトル化FSA法による第2次絞
り込み処理の結果、第1次絞り込み処理結果である候補
文字列“SEARCH",“SORT",“ALGORITHM"のうち、雑音で
ある候補文字列“SORT"が除去され、全体として完全な
サーチが実現される。
第2次絞り込み処理ルーチン32が完了すると、目的の
最終結果が得られるのでテキストサーチプログラムが完
了する(ステップ33)。
本実施例では、第1次絞り込み処理と第2次絞り込み
処理の対象となる文字コードを1バイトとしたが2バイ
トコードでも差し支えない。また、1バイトコードのテ
キストについても、連続する2バイトを1文字として扱
うことにより、2バイト単位で第1次絞り込み処理を実
現すれば、第1次絞り込み処理で検出される候補文字列
の量が1バイト単位で検出した場合に比べて低下し、第
2次絞り込み処理の負荷を低下することができる。
この改良方法について、第18図を用いてその概要を説
明する。対象とするテキスト及びキーワードは1バイト
コード(EBCDIKコード)で表わされるものとし、また簡
単のため出現文字はアルファベット26文字の空白の全部
で27種類とする。さらに出現状態ベクトルKWD(2001)
のエントリ729(=27×27)に制限する。第18図に示さ
れるように、キーワードは連続する2バイトが1文字と
して扱われ出現状態ベクトルKWD181に登録されている。
例えば単語“TEXT"は“TE",“EX",“XT"の4つの文字か
らなる列として扱い、対応するエントリに1が格納され
ている。テキスト文字列についても連続する2バイトを
1文字として扱う(テキストベクトルTEXT182)。第1
次絞り込み処理のアルゴリズムに関しては、処理の単位
が変わるだけであとは上述の実施例と全く同じ処理を行
えばよい。本改良法では、1バイトを1文字として処理
を行う場合に候補文字列に出現する“HASH"なる雑音を
除去することができ(エントリ“HA",“AS",“SH"の出
現状態ベクトルKWD181での値が0であるため)。従っ
て、第1次絞り込み処理の結果である候補文字量が低減
されて、第2次絞り込み処理での処理量が少なくなり、
全体として高速化が達成される。
〔発明の効果〕
本発明によれば、複数キーワードに対する文字列検索
が2段階から構成され、第1段階ではテキストがキーワ
ード及びそれに類似する文字列とに絞り込まれ、第2段
階では絞り込まれた各文字列に対し、キーワードを含む
か否かが再度チェックされる。第10図で説明したように
第1段階はパイプライン処理による高速化が行え、第2
段階では処理する文字量が絞り込まれて低減されている
ので、全体として高速化される。今、従来の文字列検索
の処理速度を1、第1段階での処理速度をα、第1段階
による絞り込みの率(すなわち候補文字列の量÷テキス
ト量)をβとし、第2段階では従来の文字列検索と同じ
方法を適用するものとすると、第1段階での処理時間は
テキスト量をNとしてN/α、第2段階での処理時間は候
補の量はNβで速度1なのでNβとなる。
従って本発明の方法と従来方法の処理時間の比は である。
例えば、α=10,β=0.1とすれば本発明の方法は従来
方法よりも5倍高速であることがわかる。
ここでαとβの実際の値についてもう少し詳しく説明
する。始めに専用ハードウェアにより、本発明を実現し
た場合について述べる。
まず、αについてみる。本発明の第1段階における1
テキスト文字の処理は、テキスト文字の読み出し、ハッ
シュによるRAMアドレスの生成、RAMからの出現形態情報
読み出し、及びカウンタ更新から成っており、第10図に
示したようにパイプライン化され見かけ上1単位時刻
(マシンサイクル)で1テキスト文字の処理が完了す
る。一方第12図に示すFSA法のプログラムでは1テキス
ト文字当たりステップ1204〜1212のループを回るので少
なくとも10マシンサイクル以上を要する。従ってα≧10
となる。
次に、βについて説明する。βは前述のように、テキ
ストが第1段階でどの程度まで絞り込まれたかを示す割
合である。この割合はテキストとキーワードに依存して
大きく変化する。種々のテキストとキーワードの組合せ
についてβを実測した結果を第19図に示す。第19図はあ
るテキストとキーワードの組合せを1つのケースとし
て、9つのケースについてβを実測したもので、絞り込
まれた候補をさらに雑音とキーワード一致文字列とに分
離して示している。ケース0〜ケース2は、同一分野の
テキストとキーワード、例えば計算機関係の文献をテキ
ストとして計算機の技術用語をキーワードとして与えた
ような場合であり、ケース3〜ケース8は異分野のテキ
ストとキーワードの組合せについてみたものである。第
19図より明らかなように同一分野ではβは0.1〜0.15程
度、異分野では0〜0.01程度となり、この例では平均約
0.05くらいになる。
従って本発明の文字列検索方法及び装置は、第19図の
例ではFSA法に比べ約6.7倍程度高速となる。
次に、通常のベクトル計算機を用いて本発明を実現し
た場合の効果について説明する。この場合、第1次絞り
込み処理のルーチンは第13図のフローチャートに従い、
第2次絞り込み処理ルーチンは第15図のフローチャート
に従い実現される。しかしベクトル化されたプログラム
を処理する場合に、ベクトル命令例のうちでオーバラッ
プ可能な命令列を並列に実行する能力(チェイニングと
呼ばれる)は、通常ベクトル計算機の機種毎に異なる。
従って、前述のパラメータαについて、一概にこれを言
うことはできない。以下では、プログラム言語FORTRAN
により記述された本発明のアルゴリズムを、日立製作所
製S810アレイプロセッサシステムで実行した場合の性能
と、従来のFSA法をS810アレイプロセッサシステムのス
カラプロセンシングユニットで実行した場合の性能とを
実行した結果に基づいて、本発明の効果を述べる。第20
図は、16386文字のテキストに対し、2通りのキーワー
ドを与えて両者の性能を実測した値である。前述のよう
に、本発明のテキストサーチ方式では、前記のパラメー
タβの値が性能を大きく左右する。そこで、キーワード
列を2通り与えて、βの値が0.015と0.8の場合の性能を
実測している。この値から逆算すると、ベクトル化され
た第1次検索処理ルーチンの、スカラFSA法に対する性
能比は13.2倍、ベクトル化FSA法のスカラFSA法に対する
性能比は6.56倍である。従って、ベクトル計算機による
本発明のテキストサーチ処理方法とスカラFSA法の処理
時間の比は である。(ここでNはテキストの量である)。
次に、英語論文を対象とした絞り込み率βの実測結果
を第21図に示す。第19図では、ケース0〜ケース2は同
一分野のテキストとキーワード,ケース3〜ケース8は
異分野のテキストとキーワードの組合せについてみてい
る。しかし、第19図とは異なり、テキストとキーワード
間での一致、不一致に関する情報と、絞り込み率βの間
に明確な相関関係はない。これは、キーワードを出現情
報ベクトルへ登録する際に1B単位で登録を行っているた
め、雑音の占める割合が大きいことによる。この例で、
βの平均値は約0.61である。
従って、ベクトル計算機上での本アルゴリズムの性能
は、第21図の例ではFSA法と比べて約5.9倍程度高速とな
る。
【図面の簡単な説明】
第1図は本発明による文字列検索装置の一実施例の構成
を示す図、第2図は第1図の主記憶装置の詳細図、第3
図は本発明による文字列検索方法の一実施例の処理を示
すフローチャート、第4図は第3図における第1次絞り
込み処理の詳細なフローチャート、第5図は第1図の実
施例に使用されるハッシュ回路の構成図、第6図は第1
図の実施例におけるキーワード文字の属性を表わす図、
第7図は第1図の実施例におけるテキストサーチ命令の
形式を示す図、第8図は第1図の実施例における各カウ
ンタ制御論理回路及びストア制御論理回路の構成を示す
真理値表、第9図は第1図の実施例における動作履歴を
示す図、第10図は第1図の実施例のパイプライン動作を
示すタイムチャート、第11図は本発明による文字検索方
法における第2次絞り込み処理の一実施例の処理フロー
チャート、第12図はFSA法の説明図、第13図及び第15図
は本発明による文字検索方法の他の実施例のフローチャ
ート、第14図は第13図の実施例におけるベクトルデータ
の流れを示す図、第16図は第15図の実施例に使用される
状態遷移表を示した図、第17図は第15図の実施例による
ベクトル化FSA法の処理におけるベクトルデータの流れ
を示す図、第18図は本発明による文字列検索方法の一実
施例に使用されるデータの構成を示す図、第19図及び第
21図はいずれも本発明による第1次絞り込み処理による
絞り込みの割合を実測した結果を示す図、第20図は本発
明による文字検索方法の一実施例における実測した結果
を示す図である。 <符号の説明> 102……テキスト文字列 103……出現形態マップ 104……第1次絞り込み結果 105……第2次絞り込み結果 106……テキストサーチプログラム 117……テキストサーチユニット 31……第1次絞り込み処理ルーチン 32……第2次絞り込み処理ルーチン 109……出現形態マップ格納用RAM 113……一致長カウンタ 116……ハッシュ回路 144〜146……キーワード文字列 1501……ベクトル化FSA法プログラム 211……テキストカウンタ制御論理 212……一致長カウンタ制御論理 213……有効長カウンタ制御論理 214……結果カウンタ制御論理 215……ストア制御論理
───────────────────────────────────────────────────── フロントページの続き (58)調査した分野(Int.Cl.6,DB名) G06F 17/30 JICST科学技術文献ファイル

Claims (19)

    (57)【特許請求の範囲】
  1. 【請求項1】テキスト文字列を表すテキスト文字列情報
    から、キーワード文字列に対応する情報を検出する方法
    であって、 上記テキスト文字列に現れる各文字のそれぞれについ
    て、上記キーワード文字列中にどの様な形態で使われる
    かを表す出現形態情報を求め、上記出現形態情報を用い
    て、上記キーワード及びキーワード文字列に類似する文
    字列とからなる候補文字列の情報を上記テキスト文字列
    情報から検出する第1ステップと、 上記第1ステップで得られた候補文字列の情報が上記キ
    ーワード文字列の情報に一致するか否かを調べ、上記候
    補文字列の情報からキーワード文字列の情報を抽出する
    第2ステップとを有することを特徴とする文字列検索方
    法。
  2. 【請求項2】請求項第1記載の文字列検索方法におい
    て、上記第1ステップは上記テキスト文字列情報の各文
    字の情報を順次得る第3ステップと、上記第3ステップ
    で得られた文字の情報を上記出現形態情報に照合して個
    別の出現形態情報に変換する第4ステップと、上記個別
    の出現形態情報を用いて、上記個別の出現形態情報に対
    応する文字を上記候補文字列に加えるか否かを判定する
    第5ステップとを有し、上記第3、第4及び第5ステッ
    プが複数の文字に対してパイプライン処理されること特
    徴とする文字列検索方法。
  3. 【請求項3】請求項第2記載の文字列検索方法におい
    て、上記第2ステップが、上記キーワード文字列情報を
    用いてキーワードの状態遷移表を作る第6ステップと、
    上記候補文字列の情報に対応するテキスト文字列を入力
    とし、上記状態遷移表によって、上記候補文字列の中か
    ら上記キーワード文字列に対応する情報を選出する第7
    ステップを有する文字列検索方法。
  4. 【請求項4】請求項第2記載において、上記出現形態情
    報は各文字がキーワード文字列に出現するか否かを表す
    情報である文字列検索方法。
  5. 【請求項5】請求項第2記載において、上記出現形態情
    報は各文字がキーワード文字列の中でどのような位置に
    出現するかを示す文字列検索方法。
  6. 【請求項6】請求項第1、第2、第3、第4又は第5記
    載において、上記第2ステップで得られるキーワード文
    字列の情報が上記テキスト文字列におけるキーワードの
    最初の文字の上記テキスト文字列における位置情報及び
    上記キーワード文字列の長さの情報である文字列検索方
    法。
  7. 【請求項7】テキスト文字列を表す第1情報、キーワー
    ド文字列を表す第2情報、上記テキスト文字列の各文字
    が上記キーワード文字列に現れる形態を現す出現形態情
    報、上記第1列情報及び第2情報ならび上記出現形態情
    報を用いて上記テキスト文字列から上記キーワード文字
    列及び上記キーワード文字列に類似する文字列からなる
    候補文字列群を表す第3情報を得る第1プログラム及び
    上記第1情報と上記第2情報と第3情報を用いて上記第
    3情報の中の上記キーワード文字列に関する第4の情報
    を選ぶ第2プログラムを格納する記憶装置と、 上記第1及び第2プログラムによって動作する処理ユニ
    ットと、 上記処理ユニットが第1プログラムが実行されるときに
    起動し、上記記憶装置の出現状態情報を記憶するメモリ
    と、上記テキスト文字列の第1情報を各文字毎に順次読
    み出し、上記第1情報を上記メモリのアドレスとして上
    記出現状態情報を読み出す第1手段と、検出中の候補文
    字列長さを保持する一致長カウンタと、上記一致長カウ
    ンタの計数値及び第1手段で得られた出現状態情報とに
    従って上記検出中の候補文字列の次ぎのテキスト文字を
    候補文字列に加えるか否かを判定し上記一致長カウンタ
    を更新する制御手段とを有するテキストサーチ装置とを
    持つ文字列検索装置。
  8. 【請求項8】請求項第7記載において、上記出現形態情
    報がテキスト文字列に現れる全種類の文字について、各
    文字がキーワード文字列に出現するか否かの情報である
    文字列検索装置。
  9. 【請求項9】請求項第7記載において、上記出現形態情
    報がテキスト文字列に現れる全種類の文字について、各
    文字がキーワード文字列中でどのような位置に出現する
    かを表す情報である文字列検索装置。
  10. 【請求項10】請求項第7記載において、上記出現形態
    情報が、キーワード文字列の最短長さ以下であるか否か
    の情報、キーワード文字列の先頭に現れるかの情報、キ
    ーワード文字列の先頭と最後外に出現するか否かの情
    報、キーワード文字列の最後に出現するか否かの情報を
    有する文字列検索装置。
  11. 【請求項11】請求項第10記載において、更に、テキス
    ト文字列の検索された文字の位置を計数するテキストカ
    ウンタと、候補文字列の最後の文字が検出されたとき、
    その候補文字列の長さを計数する有効長カウンタと、複
    数の候補文字列の順位を計数する結果カウンタとを有
    し、上記制御手段は候補文字列が検出される毎に、上記
    テキストカウンタ、一致長カウンタ、有効長カウンタよ
    り上記候補文字列の最初の文字の上記テキスト文字列上
    の位置情報及び上記候補文字列の長さ情報を得るように
    制御する論理回路で構成された文字列検索装置。
  12. 【請求項12】テキスト文字列を表す第1情報を順次入
    力する第1手段、テキストに現れる全文字のそれぞれに
    対し、上記全文字のそれぞれが検索すべきキーワードの
    文字列の中で現れる形態情報を記憶した形態情報メモ
    リ、上記第1手段で得られた第1情報を上記形態情報メ
    モリのアドレス信号に変換するアドレス変換手段、検索
    中のテキストの文字列が上記キーワード文字列の候補文
    字として連続して発生しているとき、その長さを保持す
    る第1のカウンタと、上記第1のカウンタ及び上記形態
    情報メモリからの形態情報を入力し、上記第1のカウン
    タで保持されている候補文字列の次のテキスト文字を候
    補文字列に加えるか否かを判定し、上記カウンタを更新
    する制御手段とを有し、テキスト文字列の情報からキー
    ワード文字列の候補文字列群の情報を得る文字列検索装
    置。
  13. 【請求項13】請求項第12記載において、上記候補文字
    列群の情報は、上記候補文字列の先頭文字の上記テキス
    ト文字列上における位置情報と候補となるキーワード文
    字列の文字数の情報とからなる文字列検索装置。
  14. 【請求項14】請求項第12記載において、形態情報は検
    索すべき文字がキーワード文字列に出現するか否かの情
    報である文字列検索装置。
  15. 【請求項15】請求項第12記載において、上記形態情報
    は検索すべき文字のキーワード文字列における位置情報
    である文字列検索装置。
  16. 【請求項16】請求項第1記載の文字列検索方法におい
    て、上記第1のステップは、上記テキスト文字列に現れ
    る全ての文字に対して、各文字がキーワード文字列列内
    に出現するか否かを表す出現情報からなる出現情報ベク
    トルを生成する第3のステップと、上記テキスト文字列
    の各文字に対すして上記出現情報ベクトル内の上記各文
    字に対応する出現情報を読み出し、上記読み出した出現
    情報がテキスト文字列の各文字に一意に対応する要素と
    なる検出状態ベクトル情報を生成する第4のステップ
    と、 上記検出状態ベクトルを読み出し、検出状態ベクトルを
    構成する出現情報から対応するテキスト文字列の各文字
    が候補文字列を構成する文字であるか否かを判定する第
    5ステップを有する文字列検索方法。
  17. 【請求項17】請求項第16記載の文字列検索方法におい
    て、上記第5ステップは、上記検出状態ベクトルで同一
    の出現情報が連続して並ぶ両端の位置を表す区切り位置
    ベクトルを生成する第6ステップと、上記第6ステップ
    で得られた区切り位置ベクトル情報から上記両端の位置
    の先頭位置のベクトルのみを集めて構成される先頭位置
    ベクトル及び上記両端の終了位置のベクトル要素のみを
    集めて終了位置ベクトル情報を作る第7ステップと、上
    記先頭位置ベクトル及び終了位置ベクトルから候補文字
    列の先頭文字の位置情報及び字数の情報を上記候補文字
    列の情報として出力する第8ステップとをも持つ文字列
    検索方法。
  18. 【請求項18】請求項第17記載の文字列検索方法におい
    て、上記第8ステップは、上記候補文字列の字数がキー
    ワード文字列群の最少文字数より少ないものを候補文字
    列情報より除くステップを有する文字列検索方法。
  19. 【請求項19】請求項第1記載において、上記第1ステ
    ップは、少なくとも上記テキスト文字列に現れる、予め
    定められた長さを有する全ての部分文字列のそれぞれに
    ついて、上記キーワード文字列中の出現状態を表す出現
    状態情報を得る第3ステップと、上記テキスト文字列情
    報の各部分文字列の情報を順次得る第4ステップと、上
    記第4ステップで得られた部分文字列の情報を上記出現
    状態情報に照合して個別の出現状態情報に変換する第5
    ステップと、上記個別の出現状態情報に対応する上記候
    補文字列に加えるか否かを判定する第6ステップとを有
    し、上記第4、第5及び第6ステップが複数の部分文字
    列に対しパイプライン処理する文字列検索方法。
JP63260616A 1988-10-18 1988-10-18 文字列検索方法及び装置 Expired - Lifetime JP2790466B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP63260616A JP2790466B2 (ja) 1988-10-18 1988-10-18 文字列検索方法及び装置
DE3991231A DE3991231C2 (de) 1988-10-18 1989-10-17 Vektorprozessor und Verfahren zum Suchen einer Stichwortzeichenfolge in einer Textzeichenfolge
US07/499,424 US5604910A (en) 1988-10-18 1989-10-17 Method of and vector processor for searching text for key words based on candidate character strings obtained from the text using parallel processing
PCT/JP1989/001064 WO1990004826A1 (fr) 1988-10-18 1989-10-17 Procede et dispositif d'extraction de sequences de mots-cles pour le traitement concurrent

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63260616A JP2790466B2 (ja) 1988-10-18 1988-10-18 文字列検索方法及び装置

Publications (2)

Publication Number Publication Date
JPH02109167A JPH02109167A (ja) 1990-04-20
JP2790466B2 true JP2790466B2 (ja) 1998-08-27

Family

ID=17350401

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63260616A Expired - Lifetime JP2790466B2 (ja) 1988-10-18 1988-10-18 文字列検索方法及び装置

Country Status (4)

Country Link
US (1) US5604910A (ja)
JP (1) JP2790466B2 (ja)
DE (1) DE3991231C2 (ja)
WO (1) WO1990004826A1 (ja)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5819291A (en) * 1996-08-23 1998-10-06 General Electric Company Matching new customer records to existing customer records in a large business database using hash key
WO1998041930A1 (de) * 1997-03-18 1998-09-24 Siemens Aktiengesellschaft Verfahren zur automatischen generierung einer zusammenfassung von einem text durch einen rechner
US5999925A (en) * 1997-07-25 1999-12-07 Claritech Corporation Information retrieval based on use of sub-documents
US7143350B2 (en) * 1999-06-30 2006-11-28 Microsoft Corporation Method and system for character sequence checking according to a selected language
US6738779B1 (en) 2001-02-21 2004-05-18 Telecom Italia S.P.A. Apparatus for and method of multiple parallel string searching
US7552385B2 (en) * 2001-05-04 2009-06-23 International Business Machines Coporation Efficient storage mechanism for representing term occurrence in unstructured text documents
US7737134B2 (en) * 2002-03-13 2010-06-15 The Texas A & M University System Anticancer agents and use
GB2399900B (en) * 2003-03-27 2005-10-05 Micron Technology Inc Data reording processor and method for use in an active memory device
US7949732B1 (en) 2003-05-12 2011-05-24 Sourcefire, Inc. Systems and methods for determining characteristics of a network and enforcing policy
US7539681B2 (en) * 2004-07-26 2009-05-26 Sourcefire, Inc. Methods and systems for multi-pattern searching
US8046833B2 (en) * 2005-11-14 2011-10-25 Sourcefire, Inc. Intrusion event correlation with network discovery information
US7733803B2 (en) * 2005-11-14 2010-06-08 Sourcefire, Inc. Systems and methods for modifying network map attributes
US7735090B2 (en) * 2005-12-15 2010-06-08 International Business Machines Corporation On demand software contract modification and termination in running component assemblies
US7948988B2 (en) * 2006-07-27 2011-05-24 Sourcefire, Inc. Device, system and method for analysis of fragments in a fragment train
US7701945B2 (en) 2006-08-10 2010-04-20 Sourcefire, Inc. Device, system and method for analysis of segments in a transmission control protocol (TCP) session
US9069547B2 (en) 2006-09-22 2015-06-30 Intel Corporation Instruction and logic for processing text strings
WO2008045302A2 (en) * 2006-10-06 2008-04-17 Sourcefire, Inc. Device, system and method for use of micro-policies in intrusion detection/prevention
JP5141560B2 (ja) * 2007-01-24 2013-02-13 富士通株式会社 情報検索プログラム、該プログラムを記録した記録媒体、情報検索装置、および情報検索方法
US8069352B2 (en) * 2007-02-28 2011-11-29 Sourcefire, Inc. Device, system and method for timestamp analysis of segments in a transmission control protocol (TCP) session
EP2156290B1 (en) * 2007-04-30 2020-03-25 Cisco Technology, Inc. Real-time awareness for a computer network
US7991987B2 (en) * 2007-05-10 2011-08-02 Intel Corporation Comparing text strings
JP4568320B2 (ja) * 2007-11-19 2010-10-27 株式会社日立製作所 処理手順生成装置及び処理手順生成方法
US8474043B2 (en) * 2008-04-17 2013-06-25 Sourcefire, Inc. Speed and memory optimization of intrusion detection system (IDS) and intrusion prevention system (IPS) rule processing
WO2010045089A1 (en) 2008-10-08 2010-04-22 Sourcefire, Inc. Target-based smb and dce/rpc processing for an intrusion detection system or intrusion prevention system
WO2011130510A1 (en) 2010-04-16 2011-10-20 Sourcefire, Inc. System and method for near-real time network attack detection, and system and method for unified detection via detection routing
US8433790B2 (en) 2010-06-11 2013-04-30 Sourcefire, Inc. System and method for assigning network blocks to sensors
US8671182B2 (en) 2010-06-22 2014-03-11 Sourcefire, Inc. System and method for resolving operating system or service identity conflicts
JP5601123B2 (ja) * 2010-09-28 2014-10-08 カシオ計算機株式会社 Nグラム検索のための転置インデックスの生成方法および生成装置、当該転置インデックスを用いた検索方法および検索装置、ならびに、コンピュータプログラム
US8601034B2 (en) 2011-03-11 2013-12-03 Sourcefire, Inc. System and method for real time data awareness
JP6393960B2 (ja) * 2013-06-04 2018-09-26 日本電気株式会社 文字列抽出装置、方法及びプログラム
CN108182221B (zh) * 2017-12-26 2022-05-31 北京乐蜜科技有限责任公司 数据处理的方法以及相关设备
US11232132B2 (en) * 2018-11-30 2022-01-25 Wipro Limited Method, device, and system for clustering document objects based on information content
US11409533B2 (en) 2020-10-20 2022-08-09 Micron Technology, Inc. Pipeline merging in a circuit

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4094001A (en) * 1977-03-23 1978-06-06 General Electric Company Digital logic circuits for comparing ordered character strings of variable length
US4423206A (en) * 1981-06-16 1983-12-27 The Dow Chemical Co. Vicinal alkylene oxide polymerization
JPS60136870A (ja) * 1983-12-26 1985-07-20 Hitachi Ltd ベクトル処理装置
JPH0724055B2 (ja) * 1984-07-31 1995-03-15 株式会社日立製作所 単語分割処理方法
US5146539A (en) * 1984-11-30 1992-09-08 Texas Instruments Incorporated Method for utilizing formant frequencies in speech recognition
GB8517918D0 (en) * 1985-07-16 1985-08-21 British Telecomm Recognition system
JPH0797373B2 (ja) * 1985-08-23 1995-10-18 株式会社日立製作所 文書フアイリングシステム
US5051947A (en) * 1985-12-10 1991-09-24 Trw Inc. High-speed single-pass textual search processor for locating exact and inexact matches of a search pattern in a textual stream
JPS62210538A (ja) * 1986-03-12 1987-09-16 Hitachi Ltd 記号列サ−チ方法および装置
JPS62241026A (ja) * 1986-04-11 1987-10-21 Nec Corp 文字列検索方式
US4972349A (en) * 1986-12-04 1990-11-20 Kleinberger Paul J Information retrieval system and method
JPH07120387B2 (ja) * 1987-03-13 1995-12-20 キヤノン株式会社 文字検索方法
US5014327A (en) * 1987-06-15 1991-05-07 Digital Equipment Corporation Parallel associative memory having improved selection and decision mechanisms for recognizing and sorting relevant patterns
US5060143A (en) * 1988-08-10 1991-10-22 Bell Communications Research, Inc. System for string searching including parallel comparison of candidate data block-by-block

Also Published As

Publication number Publication date
WO1990004826A1 (fr) 1990-05-03
US5604910A (en) 1997-02-18
JPH02109167A (ja) 1990-04-20
DE3991231C2 (de) 1995-06-08

Similar Documents

Publication Publication Date Title
JP2790466B2 (ja) 文字列検索方法及び装置
US10095755B2 (en) Fast identification of complex strings in a data stream
US8190613B2 (en) System, method and program for creating index for database
US5706496A (en) Full-text search apparatus utilizing two-stage index file to achieve high speed and reliability of searching a text which is a continuous sequence of characters
JPH09259140A (ja) 情報検索方法、情報検索装置及び情報検索プログラムを格納する媒体
JPH08508123A (ja) 言語認識照合システム
JPH08147320A (ja) 情報検索方法及びシステム
JP3258063B2 (ja) データベース検索システム及び方法
JPH0782504B2 (ja) 情報検索処理方式および検索ファイル作成装置
JP3151730B2 (ja) データベース検索システム
JP3514874B2 (ja) フリーテキスト検索システム
JP2993539B2 (ja) データベース検索システムおよびその方法
Mishina et al. String matching on IDP: A string matching algorithm for vector processors and its implementation
JP2772125B2 (ja) 辞書検索方式
JPH06309371A (ja) コードデータ検索装置
JPH06162096A (ja) レコード検索方法
CA2841027C (en) Fast identification of complex strings in a data stream
Morimoto et al. A dictionary retrieval algorithm using two trie structures
JPH0748218B2 (ja) 情報処理装置
JPH0573618A (ja) 構造体の検索方法
JPH1185802A (ja) 全文検索データを記録したコンピュータ読み取り可能な記録媒体および文字列照合装置
JPH07113894B2 (ja) 共通文字列検索処理装置
JP2006172151A (ja) 情報変換装置及びプログラム
JPH07239857A (ja) 全文検索する装置および方法