JPH10207912A - 文字,文字列検索方法及び該方法に用いる記録媒体 - Google Patents
文字,文字列検索方法及び該方法に用いる記録媒体Info
- Publication number
- JPH10207912A JPH10207912A JP9247052A JP24705297A JPH10207912A JP H10207912 A JPH10207912 A JP H10207912A JP 9247052 A JP9247052 A JP 9247052A JP 24705297 A JP24705297 A JP 24705297A JP H10207912 A JPH10207912 A JP H10207912A
- Authority
- JP
- Japan
- Prior art keywords
- state
- character
- character string
- states
- regular expression
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
- Y10S707/99936—Pattern matching access
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)
Abstract
(57)【要約】
【課題】 複数の種類のパターンから一つの決定性有限
オートマトンを作成し、文字列検索時には、その一つの
決定性有限オートマトンを使用するだけで、各種類のパ
ターンを一度に検索することができる文字列検索方法、
該方法における状態数の最適化法及び該方法の実行に用
いられるプログラム及びデータを記録した媒体を提供す
る。 【解決手段】 一度に照合したい複数の正規表現r1,
r2,…,rnを用意し(S101)、この用意された正
規表現から拡大正規表現((r1)#1)|((r2)#2)|…|
((rn)#n)を作成し(S102)、状態のうち#1,#
2,…,#nに対応する位置を含む状態は、それぞれ受理
状態1,受理状態2,…,受理状態nとする(S10
3)ことにより、複数の正規表現パターンを、どのパタ
ーンにマッチしたのか区別しながら一度に検索できる決
定性有限オートマトンを構成する。
オートマトンを作成し、文字列検索時には、その一つの
決定性有限オートマトンを使用するだけで、各種類のパ
ターンを一度に検索することができる文字列検索方法、
該方法における状態数の最適化法及び該方法の実行に用
いられるプログラム及びデータを記録した媒体を提供す
る。 【解決手段】 一度に照合したい複数の正規表現r1,
r2,…,rnを用意し(S101)、この用意された正
規表現から拡大正規表現((r1)#1)|((r2)#2)|…|
((rn)#n)を作成し(S102)、状態のうち#1,#
2,…,#nに対応する位置を含む状態は、それぞれ受理
状態1,受理状態2,…,受理状態nとする(S10
3)ことにより、複数の正規表現パターンを、どのパタ
ーンにマッチしたのか区別しながら一度に検索できる決
定性有限オートマトンを構成する。
Description
【0001】
【発明の属する技術分野】本発明は、文字,文字列検索
方法に関し、より詳細には、文書や電子メール等から、
日時情報等のキー情報を抽出するキー情報抽出装置や、
文書データを要約する文書要約装置や、文書処理装置/
ワープロ/PDA(Personal Digital Assistant)/フ
ァイリングシステムなどの分野に利用される当該方法に
関する。
方法に関し、より詳細には、文書や電子メール等から、
日時情報等のキー情報を抽出するキー情報抽出装置や、
文書データを要約する文書要約装置や、文書処理装置/
ワープロ/PDA(Personal Digital Assistant)/フ
ァイリングシステムなどの分野に利用される当該方法に
関する。
【0002】
【従来の技術】有限オートマトンを用いて文字列検索
(文字列照合)を行う手法については、従来から研究が
なされてきており、代表的なアルゴリズムについては、
サイエンス社発行の「コンパイラI原理・技法・ツー
ル」(A.V.エイホ,R.セシイ,J.D.ウルマン共
著;原田賢一訳)に詳しい記述がある。詳細について
は、この文献を参照することにして、ここでは、図1
4,図15に示したフローチャートを参照しながら簡単
に従来用いられているアルゴリズムを説明する。図14
は、従来の決定性有限オートマトンの作成方法を示すフ
ローチャートである。図14において、まず、文字列照
合を行いたい正規表現のパターンrを用意する(ステッ
プS1401)。次に、この用意された正規表現から拡
大正規表現(r)#を作成する(ステップS140
2)。そして、この拡大正規表現の構文木Tを作成する
などして(詳細は、前出の参考文献「コンパイラI原理
・技法・ツール」を参照)状態集合と状態遷移表を作成
する(ステップS1403)。状態のうち#に対応する
位置を含む状態を受理状態とする(ステップS140
4)。
(文字列照合)を行う手法については、従来から研究が
なされてきており、代表的なアルゴリズムについては、
サイエンス社発行の「コンパイラI原理・技法・ツー
ル」(A.V.エイホ,R.セシイ,J.D.ウルマン共
著;原田賢一訳)に詳しい記述がある。詳細について
は、この文献を参照することにして、ここでは、図1
4,図15に示したフローチャートを参照しながら簡単
に従来用いられているアルゴリズムを説明する。図14
は、従来の決定性有限オートマトンの作成方法を示すフ
ローチャートである。図14において、まず、文字列照
合を行いたい正規表現のパターンrを用意する(ステッ
プS1401)。次に、この用意された正規表現から拡
大正規表現(r)#を作成する(ステップS140
2)。そして、この拡大正規表現の構文木Tを作成する
などして(詳細は、前出の参考文献「コンパイラI原理
・技法・ツール」を参照)状態集合と状態遷移表を作成
する(ステップS1403)。状態のうち#に対応する
位置を含む状態を受理状態とする(ステップS140
4)。
【0003】図15は、従来の決定性有限オートマトン
の状態数最適化方法を示すフローチャートである。図1
5において、状態集合の最初のグループ分けΠとして、
受理状態のグループと、非受理状態のグループの2つの
グループを作る(ステップS1501)。次に、Πから
グループ分けできる限り(グループa内にある状態sに
文字、或は文字列(M)を入力した時の遷移先がグルー
プb内の状態であるとすると、グループa内の他の任意
の状態tに同じ文字、或は文字列(M)を入力した時の
遷移先がグループb内の状態でなかったら、状態sと状
態tが別のグループになるようにグループ分けを行
う)、新しいグループ分けΠnewを作り、これ以上新し
いグループを作成できなくなったら、そのグループ分け
をΠfinalとする(ステップS1502)。最終的なグ
ループ分けΠfinalから、状態数が最適化された決定性
有限オートマトン(DFA:Deterministic Finite Aut
omaton)M′を作成する(ステップS1503)。
の状態数最適化方法を示すフローチャートである。図1
5において、状態集合の最初のグループ分けΠとして、
受理状態のグループと、非受理状態のグループの2つの
グループを作る(ステップS1501)。次に、Πから
グループ分けできる限り(グループa内にある状態sに
文字、或は文字列(M)を入力した時の遷移先がグルー
プb内の状態であるとすると、グループa内の他の任意
の状態tに同じ文字、或は文字列(M)を入力した時の
遷移先がグループb内の状態でなかったら、状態sと状
態tが別のグループになるようにグループ分けを行
う)、新しいグループ分けΠnewを作り、これ以上新し
いグループを作成できなくなったら、そのグループ分け
をΠfinalとする(ステップS1502)。最終的なグ
ループ分けΠfinalから、状態数が最適化された決定性
有限オートマトン(DFA:Deterministic Finite Aut
omaton)M′を作成する(ステップS1503)。
【0004】
【発明が解決しようとする課題】上記したように、従来
の有限オートマトンを利用した文字列照合では、受理状
態が一種類しかないことからもわかるように、文字列照
合が成功したか否かだけが問われており、どのパターン
に合致したかは問われなかった。従って、複数の種類の
パターンを検索する時には、別々の有限オートマトンを
用意して、それぞれの有限オートマトンによって、各種
類のパターンを別々に検索する必要があった。本発明
は、こうした従来技術における問題点に鑑みてなされた
もので、複数の種類のパターンから一つの決定性有限オ
ートマトンを作成し、文字列検索時には、その一つの決
定性有限オートマトンを使用するだけで、各種類のパタ
ーンを一度に検索することができる文字列検索方法、ま
た、状態数を最適化しても、複数パターンを一度に検索
できる状態にすることを可能にする文字列検索方法、及
び該検索方法の実行に用いられるプログラム及びデータ
を記録した記録媒体を提供することをその解決すべき課
題とする。
の有限オートマトンを利用した文字列照合では、受理状
態が一種類しかないことからもわかるように、文字列照
合が成功したか否かだけが問われており、どのパターン
に合致したかは問われなかった。従って、複数の種類の
パターンを検索する時には、別々の有限オートマトンを
用意して、それぞれの有限オートマトンによって、各種
類のパターンを別々に検索する必要があった。本発明
は、こうした従来技術における問題点に鑑みてなされた
もので、複数の種類のパターンから一つの決定性有限オ
ートマトンを作成し、文字列検索時には、その一つの決
定性有限オートマトンを使用するだけで、各種類のパタ
ーンを一度に検索することができる文字列検索方法、ま
た、状態数を最適化しても、複数パターンを一度に検索
できる状態にすることを可能にする文字列検索方法、及
び該検索方法の実行に用いられるプログラム及びデータ
を記録した記録媒体を提供することをその解決すべき課
題とする。
【0005】
【課題を解決するための手段】請求項1の発明は、複数
のパターンを同時に検索する文字,文字列検索方法にお
いて、文字、或いは文字列を単位とし、複数(2,…,
n)単位の各文字、或いは文字列の正規表現r1,r2,
…,rnそれぞれについて、終端記号#1,#2,…,#n
を付加した拡大正規表現(r1)#1,(r2)#2,…,
(rn)#nにもとづいた構文((r1)#1)|((r2)#2)|…|
((rn)#n)を作成し、正規表現による該構文を構成す
る前記複数の正規表現r1,r2,…,rnに含まれる文
字、或いは文字列の各パターンを同時に検索対象に用い
て、#1,#2,…,#nに対応する状態をそれぞれ受理
状態1,受理状態2,…,受理状態nとすることによっ
て、複数のパターンを区別して検索するための決定性有
限オートマトンを構成するようにしたことを特徴とする
ものである。請求項1の決定性有限オートマトン作成方
法は、図1にフローチャートとして示す通りであり、ま
ず、一度に照合したい複数の正規表現r1,r2,…,r
nを用意する(ステップS101)。次に、この用意さ
れた正規表現から拡大正規表現((r1)#1)|((r2)#2)
|…|((rn)#n)を作成する(ステップS102)。状
態のうち#1,#2,…,#nに対応する位置を含む状態
は、それぞれ受理状態1,受理状態2,…,受理状態n
とする(ステップS103)、という手順による。
のパターンを同時に検索する文字,文字列検索方法にお
いて、文字、或いは文字列を単位とし、複数(2,…,
n)単位の各文字、或いは文字列の正規表現r1,r2,
…,rnそれぞれについて、終端記号#1,#2,…,#n
を付加した拡大正規表現(r1)#1,(r2)#2,…,
(rn)#nにもとづいた構文((r1)#1)|((r2)#2)|…|
((rn)#n)を作成し、正規表現による該構文を構成す
る前記複数の正規表現r1,r2,…,rnに含まれる文
字、或いは文字列の各パターンを同時に検索対象に用い
て、#1,#2,…,#nに対応する状態をそれぞれ受理
状態1,受理状態2,…,受理状態nとすることによっ
て、複数のパターンを区別して検索するための決定性有
限オートマトンを構成するようにしたことを特徴とする
ものである。請求項1の決定性有限オートマトン作成方
法は、図1にフローチャートとして示す通りであり、ま
ず、一度に照合したい複数の正規表現r1,r2,…,r
nを用意する(ステップS101)。次に、この用意さ
れた正規表現から拡大正規表現((r1)#1)|((r2)#2)
|…|((rn)#n)を作成する(ステップS102)。状
態のうち#1,#2,…,#nに対応する位置を含む状態
は、それぞれ受理状態1,受理状態2,…,受理状態n
とする(ステップS103)、という手順による。
【0006】請求項2の発明は、複数のパターンを同時
に検索する文字,文字列検索方法において、文字、或い
は文字列を単位とし、複数(2,…,n)単位の各文
字、或いは文字列の正規表現r1,r2,…,rnそれぞ
れについて、共通の終端記号#を付加した拡大正規表現
(r1)#,(r2)#,…,(rn)#にもとづいて拡大
正規表現による構文((r1)#)|((r2)#)|…|((rn)
#)を作成し、正規表現による該構文を構成する前記複
数の正規表現r1,r2,…,rnに含まれる文字、或い
は文字列の各パターンを同時に検索対象に用い、その
際、#の位置をもとに#に対応する状態を受理状態の種
類としてそれぞれ受理状態1,受理状態2,…,受理状
態nとすることによって、複数のパターンを区別して検
索するための決定性有限オートマトンを構成するように
したことを特徴とするものである。請求項2の決定性有
限オートマトン作成方法は、図2にフローチャートとし
て示す通りであり、まず、一度に照合したい複数の正規
表現r1,r2,…,rnを用意する(ステップS20
1)。次に、この用意された正規表現から拡大正規表現
((r1)#)|((r2)#)|…|((rn)#)を作成する(ステ
ップS202)。状態のうち#に対応する位置を含む状
態は、位置の前の方から順番に、それぞれ受理状態1,
受理状態2,…,受理状態nとする(ステップS20
3)、という手順による。
に検索する文字,文字列検索方法において、文字、或い
は文字列を単位とし、複数(2,…,n)単位の各文
字、或いは文字列の正規表現r1,r2,…,rnそれぞ
れについて、共通の終端記号#を付加した拡大正規表現
(r1)#,(r2)#,…,(rn)#にもとづいて拡大
正規表現による構文((r1)#)|((r2)#)|…|((rn)
#)を作成し、正規表現による該構文を構成する前記複
数の正規表現r1,r2,…,rnに含まれる文字、或い
は文字列の各パターンを同時に検索対象に用い、その
際、#の位置をもとに#に対応する状態を受理状態の種
類としてそれぞれ受理状態1,受理状態2,…,受理状
態nとすることによって、複数のパターンを区別して検
索するための決定性有限オートマトンを構成するように
したことを特徴とするものである。請求項2の決定性有
限オートマトン作成方法は、図2にフローチャートとし
て示す通りであり、まず、一度に照合したい複数の正規
表現r1,r2,…,rnを用意する(ステップS20
1)。次に、この用意された正規表現から拡大正規表現
((r1)#)|((r2)#)|…|((rn)#)を作成する(ステ
ップS202)。状態のうち#に対応する位置を含む状
態は、位置の前の方から順番に、それぞれ受理状態1,
受理状態2,…,受理状態nとする(ステップS20
3)、という手順による。
【0007】請求項3の発明は、請求項1又は2の発明
において、前記拡大正規表現にもとづいた構文から状態
集合{状態1,状態2,…}とその状態遷移表を作成す
ることにより、前記複数の正規表現r1,r2,…,rn
に含まれる文字、或いは文字列の各パターンを同時に検
索対象に用いるようにしたことを特徴とするものであ
る。請求項3の決定性有限オートマトン作成方法は、図
3にフローチャートとして示す通りであり、まず、一度
に照合したい複数の正規表現r1,r2,…,rnを用意
する(ステップS301)。次に、この用意された正規
表現から拡大正規表現((r1)#1)|((r2)#2)|…|((r
n)#n)あるいは、拡大正規表現((r1)#)|((r2)#)|
…|((rn)#)を作成する(ステップS302)。そし
て、この拡大正規表現の構文木Tを作成するなどして状
態集合と状態遷移表を作成する(ステップS303)。
前者の拡大正規表現を使用した場合は、状態のうち
#1,#2,…,#nに対応する位置を含む状態をそれぞ
れ受理状態1,受理状態2,…,受理状態nとし、後者
の拡大正規表現を使用した場合は、状態のうち#に対応
する位置を含む状態を位置の前の方から順番に、それぞ
れ受理状態1,受理状態2,…,受理状態nとする(ス
テップS304)、という手順による。
において、前記拡大正規表現にもとづいた構文から状態
集合{状態1,状態2,…}とその状態遷移表を作成す
ることにより、前記複数の正規表現r1,r2,…,rn
に含まれる文字、或いは文字列の各パターンを同時に検
索対象に用いるようにしたことを特徴とするものであ
る。請求項3の決定性有限オートマトン作成方法は、図
3にフローチャートとして示す通りであり、まず、一度
に照合したい複数の正規表現r1,r2,…,rnを用意
する(ステップS301)。次に、この用意された正規
表現から拡大正規表現((r1)#1)|((r2)#2)|…|((r
n)#n)あるいは、拡大正規表現((r1)#)|((r2)#)|
…|((rn)#)を作成する(ステップS302)。そし
て、この拡大正規表現の構文木Tを作成するなどして状
態集合と状態遷移表を作成する(ステップS303)。
前者の拡大正規表現を使用した場合は、状態のうち
#1,#2,…,#nに対応する位置を含む状態をそれぞ
れ受理状態1,受理状態2,…,受理状態nとし、後者
の拡大正規表現を使用した場合は、状態のうち#に対応
する位置を含む状態を位置の前の方から順番に、それぞ
れ受理状態1,受理状態2,…,受理状態nとする(ス
テップS304)、という手順による。
【0008】請求項4の発明は、請求項3の発明におい
て、前記状態集合において、状態数の最適化を行う場合
に、受理状態1,2,…,nに対応する種類によってF
1,F2,…,Fnにグループ分けし、これらのグループ
と受理状態以外の非受理状態と合わせて、全体を(n+
1)個にグループ分けすることを特徴とするものであ
る。請求項4の決定性有限オートマトン作成方法は、図
4にフローチャートとして示す通りであり、まず、状態
集合の最初のグループ分けΠとして、n個の受理状態
(F1,F2,…,Fn)と、1個の非受理状態の合計
(n+1)個のグループを作る(ステップS401)。
そして、Πから、状態数が最適化された決定性有限オー
トマトンM′を作成する(ステップS402)、という
手順による。
て、前記状態集合において、状態数の最適化を行う場合
に、受理状態1,2,…,nに対応する種類によってF
1,F2,…,Fnにグループ分けし、これらのグループ
と受理状態以外の非受理状態と合わせて、全体を(n+
1)個にグループ分けすることを特徴とするものであ
る。請求項4の決定性有限オートマトン作成方法は、図
4にフローチャートとして示す通りであり、まず、状態
集合の最初のグループ分けΠとして、n個の受理状態
(F1,F2,…,Fn)と、1個の非受理状態の合計
(n+1)個のグループを作る(ステップS401)。
そして、Πから、状態数が最適化された決定性有限オー
トマトンM′を作成する(ステップS402)、という
手順による。
【0009】請求項5の発明は、請求項4の発明におい
て、前記(n+1)個のグループを各グループaについ
て、グループ内のある状態sに文字、或いは文字列
(M)を入力した時の遷移先が当該グループb内の状態
であるとすると、グループa内の他の任意の状態tに同
じ文字、或いは文字列(M)を入力した時の遷移先もグ
ループb内の状態であるようになるまでグループ分けを
行い、得られたグループ分けをもとに状態遷移表を作成
し直すことを特徴とするものである。請求項5の決定性
有限オートマトン作成方法は、図5にフローチャートと
して示す通りであり、まず、状態集合の最初のグループ
分けΠとして、n個の受理状態(F1,F2,…,Fn)
と、1個の非受理状態の合計(n+1)個のグループを
作る(ステップS501)。次に、Πから、グループ分
けができる限り、新しいグループ分けΠnewを作り、こ
れ以上新しいグループを作成できなくなったら、そのグ
ループ分けをΠfinalとする(ステップS502)。そ
して、最終的なグループ分けΠfinalから、状態数が最
適化された決定性有限オートマトンM′を作成する(ス
テップS503)、という手順による。
て、前記(n+1)個のグループを各グループaについ
て、グループ内のある状態sに文字、或いは文字列
(M)を入力した時の遷移先が当該グループb内の状態
であるとすると、グループa内の他の任意の状態tに同
じ文字、或いは文字列(M)を入力した時の遷移先もグ
ループb内の状態であるようになるまでグループ分けを
行い、得られたグループ分けをもとに状態遷移表を作成
し直すことを特徴とするものである。請求項5の決定性
有限オートマトン作成方法は、図5にフローチャートと
して示す通りであり、まず、状態集合の最初のグループ
分けΠとして、n個の受理状態(F1,F2,…,Fn)
と、1個の非受理状態の合計(n+1)個のグループを
作る(ステップS501)。次に、Πから、グループ分
けができる限り、新しいグループ分けΠnewを作り、こ
れ以上新しいグループを作成できなくなったら、そのグ
ループ分けをΠfinalとする(ステップS502)。そ
して、最終的なグループ分けΠfinalから、状態数が最
適化された決定性有限オートマトンM′を作成する(ス
テップS503)、という手順による。
【0010】請求項6の発明は、請求項1ないし5のい
ずれか1記載の文字,文字列検索方法を実行するための
プログラム及びデータを記録したコンピュータ読み取り
可能な記録媒体である。請求項1ないし5のいずれか1
記載の文字,文字列検索方法を実行するためのプログラ
ムやデータをコンピュータ読み取り可能に記録した記録
媒体としては具体的にはROM(リード・オンリー・メ
モリ),フラッシュメモリ,フロッピーディスク,ハー
ドディスク,光磁気ディスク,CD−ROM等を含む。
文字,文字列検索用の装置は、これらの記録媒体からプ
ログラムやデータを読み出して文字や文字列の検索を実
行する。
ずれか1記載の文字,文字列検索方法を実行するための
プログラム及びデータを記録したコンピュータ読み取り
可能な記録媒体である。請求項1ないし5のいずれか1
記載の文字,文字列検索方法を実行するためのプログラ
ムやデータをコンピュータ読み取り可能に記録した記録
媒体としては具体的にはROM(リード・オンリー・メ
モリ),フラッシュメモリ,フロッピーディスク,ハー
ドディスク,光磁気ディスク,CD−ROM等を含む。
文字,文字列検索用の装置は、これらの記録媒体からプ
ログラムやデータを読み出して文字や文字列の検索を実
行する。
【0011】
【発明の実施の形態】本発明の決定性有限オートマトン
作成方法の手順が図3に示されている。図3において、
まず、一度に照合したい複数の正規表現r1,r2,…,
rnを用意する(ステップS301)。次に、この用意
された正規表現から拡大正規表現((r1)#1)|((r2)#
2)|…|((rn)#n)を作成する(ステップS302)。
そして、この拡大正規表現の構文木Tを作成するなどし
て状態集合と状態遷移表を作成する(ステップS30
3)。状態のうち#1,#2,…,#nに対応する位置を
含む状態は、それぞれ受理状態1,受理状態2,…,受
理状態nとする(ステップS304)。決定性有限オー
トマトンをこのように構成することによって、受理状態
が複数に分かれ、受理した場合にはどの受理状態にたど
り着いたかによって、どの正規表現パターンにマッチし
たかが即座に判断できるようになる。なお、本明細書中
では「記号」と「文字」は同じ意味で用いている。
作成方法の手順が図3に示されている。図3において、
まず、一度に照合したい複数の正規表現r1,r2,…,
rnを用意する(ステップS301)。次に、この用意
された正規表現から拡大正規表現((r1)#1)|((r2)#
2)|…|((rn)#n)を作成する(ステップS302)。
そして、この拡大正規表現の構文木Tを作成するなどし
て状態集合と状態遷移表を作成する(ステップS30
3)。状態のうち#1,#2,…,#nに対応する位置を
含む状態は、それぞれ受理状態1,受理状態2,…,受
理状態nとする(ステップS304)。決定性有限オー
トマトンをこのように構成することによって、受理状態
が複数に分かれ、受理した場合にはどの受理状態にたど
り着いたかによって、どの正規表現パターンにマッチし
たかが即座に判断できるようになる。なお、本明細書中
では「記号」と「文字」は同じ意味で用いている。
【0012】(実施例1)具体例をあげて上記手順をさ
らに説明するが、ここでは、正規表現パターンとして以
下の二つのパターンを区別して一括で検索したいとする
場合を仮定する(図3のステップS301に対応)。 ・パターン1 “(1|2)/(1|2)” ・パターン2 “(1|2):(1|2)” すると、図3のステップS302で、以下の拡大正規表
現が作成される。 ・(((1|2)/(1|2))#1)|(((1|2):(1|2))#2) この拡大正規表現の構文木は、図6で示される形にな
り、これをもとに状態集合と状態遷移表を図7のように
作成する(図3のステップS303に対応)なお、図6
において、構文木の葉位置を1から12の数字で示して
いる。また、図7において、「状態集合」は、状態番号
で表わされた状態1から6に対応させて構文木の葉位置
の集合を示している。状態のうち、firstpos(root)
(構文木が生成する記号列の中で、最初の記号に対応す
る位置の集合を返す。この例では{1,2,7,8}と
なる。)で表される状態、この例では状態1が開始状態
となる。そして、状態のうち#iに対応する位置を含む
ものは「受理状態i」とするので、最終的な状態集合と
状態遷移表は、図8で示されるものになる(図3のステ
ップS304に対応)。状態遷移表で空欄になっている
のは、「受理せずに停止」、つまり、文字列照合に失敗
したことを意味する。入力記号として、この表に存在し
ないもの(例えば、「3」)が出現した場合も、「受理
せずに停止」である。
らに説明するが、ここでは、正規表現パターンとして以
下の二つのパターンを区別して一括で検索したいとする
場合を仮定する(図3のステップS301に対応)。 ・パターン1 “(1|2)/(1|2)” ・パターン2 “(1|2):(1|2)” すると、図3のステップS302で、以下の拡大正規表
現が作成される。 ・(((1|2)/(1|2))#1)|(((1|2):(1|2))#2) この拡大正規表現の構文木は、図6で示される形にな
り、これをもとに状態集合と状態遷移表を図7のように
作成する(図3のステップS303に対応)なお、図6
において、構文木の葉位置を1から12の数字で示して
いる。また、図7において、「状態集合」は、状態番号
で表わされた状態1から6に対応させて構文木の葉位置
の集合を示している。状態のうち、firstpos(root)
(構文木が生成する記号列の中で、最初の記号に対応す
る位置の集合を返す。この例では{1,2,7,8}と
なる。)で表される状態、この例では状態1が開始状態
となる。そして、状態のうち#iに対応する位置を含む
ものは「受理状態i」とするので、最終的な状態集合と
状態遷移表は、図8で示されるものになる(図3のステ
ップS304に対応)。状態遷移表で空欄になっている
のは、「受理せずに停止」、つまり、文字列照合に失敗
したことを意味する。入力記号として、この表に存在し
ないもの(例えば、「3」)が出現した場合も、「受理
せずに停止」である。
【0013】ここで、図8に示される状態遷移表に従っ
て、以下の文字列の文字列照合を行ってみる。 ・01/231:258 まず、開始状態である「状態1」から開始する。状態遷
移表を照合すると、「状態1」では、入力記号が「1」
か「2」ならば「状態2」へ遷移し、それ以外は「照合
失敗」である。上の例の文字列を見ると、最初の入力記
号は「0」なので、「照合失敗」となる。次に、入力文
字列を一つ進めて、再び開始状態「状態1」からやり直
す。すると、次の入力記号は「1」なので、状態遷移表
に従って「状態2」へと遷移する。「状態2」で、次の
入力記号は「/」なので、状態遷移表に従って「状態
3」へ遷移する。「状態3」で、次の入力記号は「2」
なので、状態遷移表に従って「状態5」へ遷移する。
「状態5」は、「受理状態1」なので、この時点で文字
列照合に成功し、パターン1がこの位置で検索されたこ
とがわかる。つまり、直前の開始記号の時点の入力記号
位置(「1」)から、受理状態1に遷移する時の入力記
号の位置(「2」)まで(「1/2」)が、パターン1
とマッチしたということである。
て、以下の文字列の文字列照合を行ってみる。 ・01/231:258 まず、開始状態である「状態1」から開始する。状態遷
移表を照合すると、「状態1」では、入力記号が「1」
か「2」ならば「状態2」へ遷移し、それ以外は「照合
失敗」である。上の例の文字列を見ると、最初の入力記
号は「0」なので、「照合失敗」となる。次に、入力文
字列を一つ進めて、再び開始状態「状態1」からやり直
す。すると、次の入力記号は「1」なので、状態遷移表
に従って「状態2」へと遷移する。「状態2」で、次の
入力記号は「/」なので、状態遷移表に従って「状態
3」へ遷移する。「状態3」で、次の入力記号は「2」
なので、状態遷移表に従って「状態5」へ遷移する。
「状態5」は、「受理状態1」なので、この時点で文字
列照合に成功し、パターン1がこの位置で検索されたこ
とがわかる。つまり、直前の開始記号の時点の入力記号
位置(「1」)から、受理状態1に遷移する時の入力記
号の位置(「2」)まで(「1/2」)が、パターン1
とマッチしたということである。
【0014】「状態5」では、どんな入力記号が来ても
「照合失敗」となるので、再び開始状態の「状態1」か
ら開始する。この時、入力位置は直前の開始状態に対応
する位置から一つ進めた位置(つまり、この例では、
「/」)に設定する。ただし、すでにパターンマッチし
た文字列(この例では、「1/2」)と重なって検索さ
れる文字列については無視する場合は、入力位置は受理
状態に遷移する時の入力記号の位置から一つ進めた位置
(先頭から5文字目の「3」)に設定する。以下、同様
である。すると、「状態1」で入力記号「/」の場合は
「照合失敗」となり、再び開始位置を一つ進めて「2」
とし、「状態1」からやり直す。すると、「状態1」で
入力記号は「2」なので、「状態2」へ遷移する。次の
入力記号は「3」なので、「照合失敗」となり、また
「開始状態=状態1」からやり直す。この時、入力位置
は直前の開始状態に対応する位置から一つ進めた位置
(つまり、この場合では、「3」)に設定する。する
と、「状態1」で、入力記号は「3」なので、また「照
合失敗」となり、また状態1からやり直す。次の入力記
号は「1」なので、状態遷移表に従って「状態2」へ遷
移する。「状態2」で、次の入力記号は「:」なので、
状態遷移表に従って「状態4」へ遷移する。「状態4」
で、次の入力記号は「2」なので、状態遷移表に従って
「状態6」へ遷移する。「状態6」は,「受理状態2」
なので、この時点で文字列照合に成功し、パターン2が
この位置で検索されたことがわかる。つまり、直前の開
始記号の時点の入力記号位置(「1」)から、受理状態
2に遷移する時の入力記号の位置(「2」)まで
(「1:2」)が、パターン2とマッチしたということ
である。
「照合失敗」となるので、再び開始状態の「状態1」か
ら開始する。この時、入力位置は直前の開始状態に対応
する位置から一つ進めた位置(つまり、この例では、
「/」)に設定する。ただし、すでにパターンマッチし
た文字列(この例では、「1/2」)と重なって検索さ
れる文字列については無視する場合は、入力位置は受理
状態に遷移する時の入力記号の位置から一つ進めた位置
(先頭から5文字目の「3」)に設定する。以下、同様
である。すると、「状態1」で入力記号「/」の場合は
「照合失敗」となり、再び開始位置を一つ進めて「2」
とし、「状態1」からやり直す。すると、「状態1」で
入力記号は「2」なので、「状態2」へ遷移する。次の
入力記号は「3」なので、「照合失敗」となり、また
「開始状態=状態1」からやり直す。この時、入力位置
は直前の開始状態に対応する位置から一つ進めた位置
(つまり、この場合では、「3」)に設定する。する
と、「状態1」で、入力記号は「3」なので、また「照
合失敗」となり、また状態1からやり直す。次の入力記
号は「1」なので、状態遷移表に従って「状態2」へ遷
移する。「状態2」で、次の入力記号は「:」なので、
状態遷移表に従って「状態4」へ遷移する。「状態4」
で、次の入力記号は「2」なので、状態遷移表に従って
「状態6」へ遷移する。「状態6」は,「受理状態2」
なので、この時点で文字列照合に成功し、パターン2が
この位置で検索されたことがわかる。つまり、直前の開
始記号の時点の入力記号位置(「1」)から、受理状態
2に遷移する時の入力記号の位置(「2」)まで
(「1:2」)が、パターン2とマッチしたということ
である。
【0015】「状態6」では、どんな入力記号が来ても
「照合失敗」となるので、再び開始状態の「状態1」か
ら開始する。この時、入力位置は直前の開始状態に対応
する位置から一つ進めた位置(つまり、この例で
は、「:」)に設定する。すると、「状態1」で、入力
記号「:」は「照合失敗」となり、再び開始位置を一つ
進めて「2」とし、「状態1」からやり直す。すると、
「状態1」で、入力記号「2」なので、「状態2」へ遷
移する。次の入力記号は「5」なので、「照合失敗」と
なり、再び開始位置を一つ進めて「5」とし、また「状
態1」からやり直す。すると、「状態1」で、入力記号
「5」なので、「照合失敗」となり、再び開始位置を一
つ進めて「8」とし、また「状態1」からやり直す。す
ると、「状態1」で、入力記号「8」なので、「照合失
敗」となる。この時点で入力文字列をすべて読み込んだ
ことになるので、処理を終了する。
「照合失敗」となるので、再び開始状態の「状態1」か
ら開始する。この時、入力位置は直前の開始状態に対応
する位置から一つ進めた位置(つまり、この例で
は、「:」)に設定する。すると、「状態1」で、入力
記号「:」は「照合失敗」となり、再び開始位置を一つ
進めて「2」とし、「状態1」からやり直す。すると、
「状態1」で、入力記号「2」なので、「状態2」へ遷
移する。次の入力記号は「5」なので、「照合失敗」と
なり、再び開始位置を一つ進めて「5」とし、また「状
態1」からやり直す。すると、「状態1」で、入力記号
「5」なので、「照合失敗」となり、再び開始位置を一
つ進めて「8」とし、また「状態1」からやり直す。す
ると、「状態1」で、入力記号「8」なので、「照合失
敗」となる。この時点で入力文字列をすべて読み込んだ
ことになるので、処理を終了する。
【0016】以上より、入力文字列を1回読んだだけ
で、すべてのパターンを(パターン1とパターン2と
に)区別して検索できることが確認できた。なお、この
例では、二つの受理状態のどちらもが「どんな入力記号
が来ても照合失敗」になっていたが、正規表現のパター
ンによっては、受理状態でも、なんらかの入力記号に対
して次の遷移先が定義される場合がある。この場合は、
文字列照合に成功した後も、開始状態に戻ることなく、
状態遷移を続ける。そして、再び受理状態に到達すれ
ば、同一の開始位置から、複数の(長さの異なる)パタ
ーンが検索できたことになる。もし、パターンの長さの
最長のものだけが得られれば良いのであれば、入力文字
列を全部読み込むか、「照合失敗」になるかする直前の
受理状態に到達するパターンのものだけを出力すれば良
い(照合失敗をはさまずに、受理状態に何度なったとし
ても、最後のものだけを本当の「照合成功」とみな
す)。このようなことが起こる具体例として、実施例2
をあげて次に説明する。
で、すべてのパターンを(パターン1とパターン2と
に)区別して検索できることが確認できた。なお、この
例では、二つの受理状態のどちらもが「どんな入力記号
が来ても照合失敗」になっていたが、正規表現のパター
ンによっては、受理状態でも、なんらかの入力記号に対
して次の遷移先が定義される場合がある。この場合は、
文字列照合に成功した後も、開始状態に戻ることなく、
状態遷移を続ける。そして、再び受理状態に到達すれ
ば、同一の開始位置から、複数の(長さの異なる)パタ
ーンが検索できたことになる。もし、パターンの長さの
最長のものだけが得られれば良いのであれば、入力文字
列を全部読み込むか、「照合失敗」になるかする直前の
受理状態に到達するパターンのものだけを出力すれば良
い(照合失敗をはさまずに、受理状態に何度なったとし
ても、最後のものだけを本当の「照合成功」とみな
す)。このようなことが起こる具体例として、実施例2
をあげて次に説明する。
【0017】(実施例2)ここでは、正規表現パターン
として以下の二つのパターンを区別して一括で検索した
いとする場合を仮定する(図3のステップS301に対
応)。 ・パターン1 “a” ・パターン2 “(abb)|(a*bb*)” すると、図3のステップS302で、以下の拡大正規表
現が作成される。 ・((a)#1)|(((abb)|(a*bb*))#2) この拡大正規表現の構文木は、図9に示される形にな
り、これをもとに状態集合と状態遷移表を図10のよう
に作成する(図3のステップS303に対応)。状態の
うち、firstpos(root)(構文木が生成する記号列の中
で、最初の記号に対応する位置の集合を返す。この例で
は{1,3,6,7}となる。)で表されるもの(この
例では、状態1)が開始状態となる。また、状態のう
ち、#iに対応する位置を含むものは、「受理状態i」
とするので、最終的な状態集合と状態遷移表は、図11
で示されるものになる(図3のステップS304に対
応)。状態遷移表で空欄になっているのは、「受理せず
に停止」、つまり、文字列照合に失敗したことを意味す
る。入力記号として、この表に存在しないもの(例え
ば、「c」)が出現した場合も、「受理せずに停止」で
ある。
として以下の二つのパターンを区別して一括で検索した
いとする場合を仮定する(図3のステップS301に対
応)。 ・パターン1 “a” ・パターン2 “(abb)|(a*bb*)” すると、図3のステップS302で、以下の拡大正規表
現が作成される。 ・((a)#1)|(((abb)|(a*bb*))#2) この拡大正規表現の構文木は、図9に示される形にな
り、これをもとに状態集合と状態遷移表を図10のよう
に作成する(図3のステップS303に対応)。状態の
うち、firstpos(root)(構文木が生成する記号列の中
で、最初の記号に対応する位置の集合を返す。この例で
は{1,3,6,7}となる。)で表されるもの(この
例では、状態1)が開始状態となる。また、状態のう
ち、#iに対応する位置を含むものは、「受理状態i」
とするので、最終的な状態集合と状態遷移表は、図11
で示されるものになる(図3のステップS304に対
応)。状態遷移表で空欄になっているのは、「受理せず
に停止」、つまり、文字列照合に失敗したことを意味す
る。入力記号として、この表に存在しないもの(例え
ば、「c」)が出現した場合も、「受理せずに停止」で
ある。
【0018】この図11に示される状態遷移表に従っ
て、以下の文字列照合を行ってみる。 ・aabbb まず、開始状態である「状態1」から開始する。状態遷
移表を参照すると、「状態1」では、入力記号が「a」
ならば「状態2」へ遷移し、入力記号が「b」ならば
「状態3」へ遷移し、それ以外は「照合失敗」である。
上の例の文字列を見ると、最初の入力記号は「a」なの
で、「状態2」へ遷移する。「状態2」は「受理状態
1」なので、開始状態からの文字列である「a」が、パ
ターン1とマッチしたことがわかる。次に、入力文字列
を一つ進めると、入力記号は「a」である。状態遷移表
を見ると、「状態2」で入力記号「a」の場合は、「状
態4」へ遷移することがわかる。「状態4」で、次の入
力記号は「b」なので、状態遷移表に従って「状態3」
へ遷移する。「状態3」は「受理状態2」なので、開始
状態からの文字列である「aab」が、パターン2とマ
ッチしたことがわかる。
て、以下の文字列照合を行ってみる。 ・aabbb まず、開始状態である「状態1」から開始する。状態遷
移表を参照すると、「状態1」では、入力記号が「a」
ならば「状態2」へ遷移し、入力記号が「b」ならば
「状態3」へ遷移し、それ以外は「照合失敗」である。
上の例の文字列を見ると、最初の入力記号は「a」なの
で、「状態2」へ遷移する。「状態2」は「受理状態
1」なので、開始状態からの文字列である「a」が、パ
ターン1とマッチしたことがわかる。次に、入力文字列
を一つ進めると、入力記号は「a」である。状態遷移表
を見ると、「状態2」で入力記号「a」の場合は、「状
態4」へ遷移することがわかる。「状態4」で、次の入
力記号は「b」なので、状態遷移表に従って「状態3」
へ遷移する。「状態3」は「受理状態2」なので、開始
状態からの文字列である「aab」が、パターン2とマ
ッチしたことがわかる。
【0019】次に、入力文字列を一つ進めると、入力記
号は「b」である。状態遷移表を見ると、「状態3」で
入力記号「b」の場合は、「状態3」へ遷移することが
わかる。「状態3」は「受理状態2」なので、開始状態
からの文字列である「aabb」が、パターン2とマッ
チしたことがわかる。次に、入力文字列を一つ進める
と、入力記号は「b」である。状態遷移表を見ると、
「状態3」で入力記号「b」の場合は、「状態3」へ遷
移することがわかる。「状態3」は「受理状態2」なの
で、開始状態からの文字列である「aabbb」が、パ
ターン2とマッチしたことがわかる。これで、入力文字
列の読み込みを全部終了したことになる。パターンマッ
チした文字列を全部出力するのであれば、「a」がパタ
ーン1として、「aab」「aabb」「aabbb」
が、パターン2として抽出される。同じ開始位置から始
まる文字列については、最長のものだけを出力する場合
は、「照合失敗」か「文字列の終了」になった時に、直
前の受理状態のものだけを出力すれば良いので、この例
では、「aabbb」のみがパターン2として抽出され
る。
号は「b」である。状態遷移表を見ると、「状態3」で
入力記号「b」の場合は、「状態3」へ遷移することが
わかる。「状態3」は「受理状態2」なので、開始状態
からの文字列である「aabb」が、パターン2とマッ
チしたことがわかる。次に、入力文字列を一つ進める
と、入力記号は「b」である。状態遷移表を見ると、
「状態3」で入力記号「b」の場合は、「状態3」へ遷
移することがわかる。「状態3」は「受理状態2」なの
で、開始状態からの文字列である「aabbb」が、パ
ターン2とマッチしたことがわかる。これで、入力文字
列の読み込みを全部終了したことになる。パターンマッ
チした文字列を全部出力するのであれば、「a」がパタ
ーン1として、「aab」「aabb」「aabbb」
が、パターン2として抽出される。同じ開始位置から始
まる文字列については、最長のものだけを出力する場合
は、「照合失敗」か「文字列の終了」になった時に、直
前の受理状態のものだけを出力すれば良いので、この例
では、「aabbb」のみがパターン2として抽出され
る。
【0020】(実施例3)実施例1は、終端記号#1,
#2,…を付加した拡大正規表現を用いたが、終端記号
として#のみを付加する拡大正規表現を用いたものの具
体例を以下に示す(図3のステップS302に対応)。 ・(((1|2)/(1|2))#)|(((1|2):(1|2))
#) この拡大正規表現の構文木は図13で示される形とな
り、これをもとに状態集合と状態遷移表を作成すると、
図7のように作成される(図3のステップS303に対
応)。状態のうち、firstpos(root)(構文木が生成する
記号列の中で、最初の記号に対応する位置の集合を返
す。この例では{1,2,7,8}となる。)で表され
るもの(この例では状態1)が開始状態となる。また、
状態のうち#に対応する位置(この例では6と12)を
含むものは位置の前の方から順番に「受理状態1」「受
理状態2」とするので、最終的な状態集合と状態遷移表
は図8で示されるものになる(図3のステップS304
に対応)。
#2,…を付加した拡大正規表現を用いたが、終端記号
として#のみを付加する拡大正規表現を用いたものの具
体例を以下に示す(図3のステップS302に対応)。 ・(((1|2)/(1|2))#)|(((1|2):(1|2))
#) この拡大正規表現の構文木は図13で示される形とな
り、これをもとに状態集合と状態遷移表を作成すると、
図7のように作成される(図3のステップS303に対
応)。状態のうち、firstpos(root)(構文木が生成する
記号列の中で、最初の記号に対応する位置の集合を返
す。この例では{1,2,7,8}となる。)で表され
るもの(この例では状態1)が開始状態となる。また、
状態のうち#に対応する位置(この例では6と12)を
含むものは位置の前の方から順番に「受理状態1」「受
理状態2」とするので、最終的な状態集合と状態遷移表
は図8で示されるものになる(図3のステップS304
に対応)。
【0021】本発明によって得られる処理速度について
の実験結果の一例を以下に示す。 ・実験環境: Sun SPARCstation 10 gcc-Oにてコンパイル ・検索対象: 100文書 全容量は382,458バイト 対象とする文書の一例(部分): 『第5回 検索基礎論研究会 日時: 6月26日(月) 発表申込期限 3月17日 ◇発表申込方法:必要事項(下記の申込フォーマット参
照)を記入の上、下記宛にEmail,FAX、または郵便でお
送り下さい。 〒261 千葉市美浜区中瀬1-9-2 シャープ株式会社 映像メディア研究所 Phone:(043)299-8710,FAX:(043)299-8709 Email:natch iml.mkhar.sharp.co.jp 』 ・正規表現の例:以下に「日付を検索するパターン」の
先頭部分を示す。 ((((19[0-9][0-9])|([1-9][0-9])) ?年?)?(([1-9])|(1
[0-2])|(0[1-9]))?月?(([1-9])|1[0-9])|(2[0-9])|(3[0
-1])|(0[1-9])) ?日?(\((月|火|水|木|金|土|日)(曜日
|曜)?\))??[,〜.ー−]?(([1-9])|1[0-9])|(2[0-9])|(3
[0-1])|(0[1-9])) ?日(?(\((月|火|水|木|金|土|日)
(曜日|曜)?\)))?)|((((19[0-9][0-9])|([1-9][0-9]))
?年?)?(([1-9])|(1[0-2])|(0[1-9])) ?月?(([1-9])|1[0
-9])|(2[0-9])|(3[0-1])|(0[1-9]) ?日?(\((月|火|水|
木|金|土|日)(曜日|曜)?\))??[,〜.ー−]?(([1-9])|1
[0-2])|(0[1-9])) ?月?(([1-9])|1[0-9])|(2[0-9])|(3
[0-1])|(0[1-9])) ?日(?(\((月|火|水|木|金|土|日)
(曜日|曜)?\)))?)|… ・DFAを使用した場合の検索時間:
の実験結果の一例を以下に示す。 ・実験環境: Sun SPARCstation 10 gcc-Oにてコンパイル ・検索対象: 100文書 全容量は382,458バイト 対象とする文書の一例(部分): 『第5回 検索基礎論研究会 日時: 6月26日(月) 発表申込期限 3月17日 ◇発表申込方法:必要事項(下記の申込フォーマット参
照)を記入の上、下記宛にEmail,FAX、または郵便でお
送り下さい。 〒261 千葉市美浜区中瀬1-9-2 シャープ株式会社 映像メディア研究所 Phone:(043)299-8710,FAX:(043)299-8709 Email:natch iml.mkhar.sharp.co.jp 』 ・正規表現の例:以下に「日付を検索するパターン」の
先頭部分を示す。 ((((19[0-9][0-9])|([1-9][0-9])) ?年?)?(([1-9])|(1
[0-2])|(0[1-9]))?月?(([1-9])|1[0-9])|(2[0-9])|(3[0
-1])|(0[1-9])) ?日?(\((月|火|水|木|金|土|日)(曜日
|曜)?\))??[,〜.ー−]?(([1-9])|1[0-9])|(2[0-9])|(3
[0-1])|(0[1-9])) ?日(?(\((月|火|水|木|金|土|日)
(曜日|曜)?\)))?)|((((19[0-9][0-9])|([1-9][0-9]))
?年?)?(([1-9])|(1[0-2])|(0[1-9])) ?月?(([1-9])|1[0
-9])|(2[0-9])|(3[0-1])|(0[1-9]) ?日?(\((月|火|水|
木|金|土|日)(曜日|曜)?\))??[,〜.ー−]?(([1-9])|1
[0-2])|(0[1-9])) ?月?(([1-9])|1[0-9])|(2[0-9])|(3
[0-1])|(0[1-9])) ?日(?(\((月|火|水|木|金|土|日)
(曜日|曜)?\)))?)|… ・DFAを使用した場合の検索時間:
【0022】
【表1】
【0023】以上より、正規表現を別々に検索した場合
は、上記の全パターンを検索するのに10秒要するが、
本発明を利用すると5秒で検索できることが分かり、処
理速度の向上が確かめられた。
は、上記の全パターンを検索するのに10秒要するが、
本発明を利用すると5秒で検索できることが分かり、処
理速度の向上が確かめられた。
【0024】本発明の決定性有限オートマトンの状態数
の最適化方法の手順が図5に示されている。図5におい
て、状態集合の最初のグループ分けΠとして、n個の受
理状態(F1,F2,…,Fn)と、1個の非受理状態
の、合計(n+1)個のグループを作る(ステップS5
01)。次に、Πから、グループ分けができる限り、新
しいグループ分けΠnewを作り、これ以上新しいグルー
プを作成できなくなったら、そのグループ分けをΠ
finalとする(ステップS502)。そして、最終的な
グループ分けΠfinalから、状態数が最適化された決定
性有限オートマトンM′を作成する(ステップS50
3)。決定性有限オートマトンをこのように構成するこ
とによって、受理状態が複数に分かれたままで、状態数
を最適化することができる。
の最適化方法の手順が図5に示されている。図5におい
て、状態集合の最初のグループ分けΠとして、n個の受
理状態(F1,F2,…,Fn)と、1個の非受理状態
の、合計(n+1)個のグループを作る(ステップS5
01)。次に、Πから、グループ分けができる限り、新
しいグループ分けΠnewを作り、これ以上新しいグルー
プを作成できなくなったら、そのグループ分けをΠ
finalとする(ステップS502)。そして、最終的な
グループ分けΠfinalから、状態数が最適化された決定
性有限オートマトンM′を作成する(ステップS50
3)。決定性有限オートマトンをこのように構成するこ
とによって、受理状態が複数に分かれたままで、状態数
を最適化することができる。
【0025】(実施例4)状態数削減方法の実施例につ
いて、前述の実施例2を用いて説明をする。図11よ
り、状態集合の最初のグループ分けΠとして、 ・受理状態F1=状態2 ・受理状態F2=状態3,状態5 ・非受理状態=状態1,状態4 を作成する。次に、Πから新しいグループ分けΠnewを
作成する。受理状態F1については、一つの状態しか含
んでいないので、このままである。受理状態F2につい
ては、状態3と状態5とで、すべての入力記号について
の遷移先を調べる。すると、入力記号「b」では、どち
らも「状態3」へ遷移し、その他の入力記号の場合は
「照合失敗」である。従って、受理状態F2はこれ以上
分割する必要はないことがわかる。非受理状態について
は、入力記号「a」を考えると、状態1では「状態2=
受理状態F1」へ遷移、状態4では、「状態4=非受理
状態」へ遷移することになるので、同じ入力記号
(「a」)で同じ状態グループに遷移しない(片方は受
理状態F1、もう片方は非受理状態)ので、分割する必
要がある。
いて、前述の実施例2を用いて説明をする。図11よ
り、状態集合の最初のグループ分けΠとして、 ・受理状態F1=状態2 ・受理状態F2=状態3,状態5 ・非受理状態=状態1,状態4 を作成する。次に、Πから新しいグループ分けΠnewを
作成する。受理状態F1については、一つの状態しか含
んでいないので、このままである。受理状態F2につい
ては、状態3と状態5とで、すべての入力記号について
の遷移先を調べる。すると、入力記号「b」では、どち
らも「状態3」へ遷移し、その他の入力記号の場合は
「照合失敗」である。従って、受理状態F2はこれ以上
分割する必要はないことがわかる。非受理状態について
は、入力記号「a」を考えると、状態1では「状態2=
受理状態F1」へ遷移、状態4では、「状態4=非受理
状態」へ遷移することになるので、同じ入力記号
(「a」)で同じ状態グループに遷移しない(片方は受
理状態F1、もう片方は非受理状態)ので、分割する必
要がある。
【0026】以上より、新しい分割Πnewは以下のよう
になる。 ・受理状態F1=状態2 ・受理状態F2=状態3,状態5 ・非受理状態1=状態1 ・非受理状態2=状態4 これ以上の分割は進められないので、これがΠfinalと
なる。次に、Πfinalの各グループから代表として一つ
の状態を選ぶ。これはどのように選んでも良いが、ここ
では、受理状態F2の代表状態として状態3を選び、順
番を変更して、新たな状態を以下のように定義する。な
お、開始状態は、元の決定性有限性オートマトンの開始
状態を含むグループの代表となる。 ・状態1=非受理状態1=元の状態1=開始状態 ・状態2=受理状態F1=元の状態2 ・状態3=受理状態F2=元の状態3 ・状態4=非受理状態2=元の状態4 この新たな状態から、状態遷移表を作成し直すと、図1
2に示されるものになる。このように構成した決定性有
限オートマトンは、受理状態F1と受理状態F2とを区
別でき、しかも、最初(図11)より状態数が最適化さ
れていることがわかる。
になる。 ・受理状態F1=状態2 ・受理状態F2=状態3,状態5 ・非受理状態1=状態1 ・非受理状態2=状態4 これ以上の分割は進められないので、これがΠfinalと
なる。次に、Πfinalの各グループから代表として一つ
の状態を選ぶ。これはどのように選んでも良いが、ここ
では、受理状態F2の代表状態として状態3を選び、順
番を変更して、新たな状態を以下のように定義する。な
お、開始状態は、元の決定性有限性オートマトンの開始
状態を含むグループの代表となる。 ・状態1=非受理状態1=元の状態1=開始状態 ・状態2=受理状態F1=元の状態2 ・状態3=受理状態F2=元の状態3 ・状態4=非受理状態2=元の状態4 この新たな状態から、状態遷移表を作成し直すと、図1
2に示されるものになる。このように構成した決定性有
限オートマトンは、受理状態F1と受理状態F2とを区
別でき、しかも、最初(図11)より状態数が最適化さ
れていることがわかる。
【0027】本発明による文字,文字列検索方法を実行
するために用いるプログラムやデータを提供する手段に
ついて、その実施形態を以下に説明する。この手段は、
上記したところの文字,文字列検索方法を実行するため
のプログラムやデータを保存した記録媒体として提供さ
れる。記録媒体としては、具体的には、ROM(リード
・オンリー・メモリー)、フラッシュメモリ、フロッピ
ーディスク、ハードディスク、光磁気ディスク、CD−
ROM等が想定できる。そして、プログラムやデータを
記録した記録媒体を上記した形式のものとして流通させ
ることにより、当該方法の実施化を容易にする。コンピ
ュータ等の情報処理装置にこうした記録媒体をインスト
ールすることによって簡単に本文字,文字列検索方法を
実行できる装置を構成することができ、本装置により、
記録媒体から読み出されたかかるプログラムやデータに
したがって、文書データから文字,文字列を検索するこ
とができる。本発明は、単語検索や単語照合に用いるだ
けでなく、有限オートマトンを利用したアプリケーショ
ンで、区別できる複数の受理状態を持たせたい場合に利
用することができる。
するために用いるプログラムやデータを提供する手段に
ついて、その実施形態を以下に説明する。この手段は、
上記したところの文字,文字列検索方法を実行するため
のプログラムやデータを保存した記録媒体として提供さ
れる。記録媒体としては、具体的には、ROM(リード
・オンリー・メモリー)、フラッシュメモリ、フロッピ
ーディスク、ハードディスク、光磁気ディスク、CD−
ROM等が想定できる。そして、プログラムやデータを
記録した記録媒体を上記した形式のものとして流通させ
ることにより、当該方法の実施化を容易にする。コンピ
ュータ等の情報処理装置にこうした記録媒体をインスト
ールすることによって簡単に本文字,文字列検索方法を
実行できる装置を構成することができ、本装置により、
記録媒体から読み出されたかかるプログラムやデータに
したがって、文書データから文字,文字列を検索するこ
とができる。本発明は、単語検索や単語照合に用いるだ
けでなく、有限オートマトンを利用したアプリケーショ
ンで、区別できる複数の受理状態を持たせたい場合に利
用することができる。
【0028】
【発明の効果】本発明は、文書データを一回読み込むだ
けで、複数の種類のパターンを一度に検索することがで
きる文字列検索方法を提供する。請求項1の発明では、
区別したい正規表現パターンに応じて、受理状態を複数
持たせることで、複数のパターンを一度に検索しても、
マッチしたパターンの区別ができる。請求項2の発明で
は、区別したい正規表現パターンに応じて、受理状態を
複数持たせることで、複数のパターンを一度に検索して
も、マッチしたパターンの区別ができるようにするもの
で、一種類の終端記号を共通に用い、請求項1の複数種
類を用いる方法と異なる方法を提供する。請求項3の発
明では、請求項1又は2の方法を実行するために有効な
具体化方法を提供する。請求項4の発明では、複数の種
類のパターンを区別しながら一度に検索できる本発明の
特徴を保持したまま、決定性有限オートマトン状態数を
最適化することができる。請求項5の発明では、請求項
4の方法を実行するために有効な具体化方法を提供す
る。請求項6の発明では、請求項1ないし5のいずれか
に記載の文字,文字列検索方法を実行するためのプログ
ラムやデータをコンピュータ読み取り可能な記録媒体に
記録することで、プログラムやデータが保持された記録
媒体を扱うコンピュータ等の情報処理装置で、文字,文
字列の当該検索方法を実行することが可能になる。
けで、複数の種類のパターンを一度に検索することがで
きる文字列検索方法を提供する。請求項1の発明では、
区別したい正規表現パターンに応じて、受理状態を複数
持たせることで、複数のパターンを一度に検索しても、
マッチしたパターンの区別ができる。請求項2の発明で
は、区別したい正規表現パターンに応じて、受理状態を
複数持たせることで、複数のパターンを一度に検索して
も、マッチしたパターンの区別ができるようにするもの
で、一種類の終端記号を共通に用い、請求項1の複数種
類を用いる方法と異なる方法を提供する。請求項3の発
明では、請求項1又は2の方法を実行するために有効な
具体化方法を提供する。請求項4の発明では、複数の種
類のパターンを区別しながら一度に検索できる本発明の
特徴を保持したまま、決定性有限オートマトン状態数を
最適化することができる。請求項5の発明では、請求項
4の方法を実行するために有効な具体化方法を提供す
る。請求項6の発明では、請求項1ないし5のいずれか
に記載の文字,文字列検索方法を実行するためのプログ
ラムやデータをコンピュータ読み取り可能な記録媒体に
記録することで、プログラムやデータが保持された記録
媒体を扱うコンピュータ等の情報処理装置で、文字,文
字列の当該検索方法を実行することが可能になる。
【図1】本発明の請求項1の決定性有限オートマトン作
成方法の手順を示すフローチャートである。
成方法の手順を示すフローチャートである。
【図2】本発明の請求項2の決定性有限オートマトン作
成方法の手順を示すフローチャートである。
成方法の手順を示すフローチャートである。
【図3】本発明の請求項3の決定性有限オートマトン作
成方法の手順を示すフローチャートである。
成方法の手順を示すフローチャートである。
【図4】本発明の請求項4の決定性有限オートマトンの
状態数最適化方法の手順を示すフローチャートである。
状態数最適化方法の手順を示すフローチャートである。
【図5】本発明の請求項5の決定性有限オートマトンの
状態数最適化方法の手順を示すフローチャートである。
状態数最適化方法の手順を示すフローチャートである。
【図6】本発明の実施例1の拡大正規表現の構文木を示
す図である。
す図である。
【図7】本発明の実施例1の拡大正規表現の状態集合と
状態遷移表を示すである。
状態遷移表を示すである。
【図8】図7の本発明の実施例1の拡大正規表現の状態
集合と状態遷移表に開始状態や受理状態を書き加えた図
である。
集合と状態遷移表に開始状態や受理状態を書き加えた図
である。
【図9】本発明の実施例2の拡大正規表現の構文木を示
す図である。
す図である。
【図10】本発明の実施例2の拡大正規表現の状態集合
と状態遷移表を示す図である。
と状態遷移表を示す図である。
【図11】図10の本発明の実施例2の拡大正規表現の
状態集合と状態遷移表に開始状態や受理状態を書き加え
た図である。
状態集合と状態遷移表に開始状態や受理状態を書き加え
た図である。
【図12】本発明の実施例2の拡大正規表現の決定性有
限オートマトンの状態数を最適化した後の状態集合のグ
ループ分けと状態遷移表を示す図である。
限オートマトンの状態数を最適化した後の状態集合のグ
ループ分けと状態遷移表を示す図である。
【図13】本発明の実施例3の拡大正規表現の構文木を
示す図である。
示す図である。
【図14】従来の決定性有限オートマトン作成方法の手
順を示すフローチャートである。
順を示すフローチャートである。
【図15】従来の決定性有限オートマトンの状態数最適
化方法の手順を示すフローチャートである。
化方法の手順を示すフローチャートである。
Claims (6)
- 【請求項1】 複数のパターンを同時に検索する文字,
文字列検索方法において、文字、或いは文字列を単位と
し、複数(2,…,n)単位の各文字、或いは文字列の
正規表現r1,r2,…,rnそれぞれについて、終端記
号#1,#2,…,#nを付加した拡大正規表現(r1)#
1,(r2)#2,…,(rn)#nにもとづいた構文((r1)
#1)|((r2)#2)|…|((rn)#n)を作成し、正規表現に
よる該構文を構成する前記複数の正規表現r1,r2,
…,rnに含まれる文字、或いは文字列の各パターンを
同時に検索対象に用いて、#1,#2,…,#nに対応す
る状態をそれぞれ受理状態1,受理状態2,…,受理状
態nとすることによって、複数のパターンを区別して検
索するための決定性有限オートマトンを構成するように
したことを特徴とする文字,文字列検索方法。 - 【請求項2】 複数のパターンを同時に検索する文字,
文字列検索方法において、文字、或いは文字列を単位と
し、複数(2,…,n)単位の各文字、或いは文字列の
正規表現r1,r2,…,rnそれぞれについて、共通の
終端記号#を付加した拡大正規表現(r1)#,(r2)
#,…,(rn)#にもとづいて拡大正規表現による構文
((r1)#)|((r2)#)|…|((rn)#)を作成し、正規表
現による該構文を構成する前記複数の正規表現r1,
r2,…,rnに含まれる文字、或いは文字列の各パター
ンを同時に検索対象に用い、その際、#の位置をもとに
#に対応する状態を受理状態の種類としてそれぞれ受理
状態1,受理状態2,…,受理状態nとすることによっ
て、複数のパターンを区別して検索するための決定性有
限オートマトンを構成するようにしたことを特徴とする
文字,文字列検索方法。 - 【請求項3】 前記拡大正規表現にもとづいた構文から
状態集合{状態1,状態2,…}とその状態遷移表を作
成することにより、前記複数の正規表現r1,r2,…,
rnに含まれる文字、或いは文字列の各パターンを同時
に検索対象に用いるようにしたことを特徴とする請求項
1又は2記載の文字,文字列検索方法。 - 【請求項4】 前記状態集合において、状態数の最適化
を行う場合に、受理状態1,2,…,nに対応する種類
によってF1,F2,…,Fnにグループ分けし、これら
のグループと受理状態以外の非受理状態と合わせて、全
体を(n+1)個にグループ分けすることを特徴とする
請求項3記載の文字,文字列検索方法。 - 【請求項5】 前記(n+1)個のグループを各グルー
プについて、グループa内のある状態sに文字、或いは
文字列(M)を入力した時の遷移先が当該グループb内
の状態であるとすると、グループa内の他の任意の状態
tに同じ文字、或いは文字列(M)を入力した時の遷移
先もグループb内の状態であるようになるまでグループ
分けを行い、得られたグループ分けをもとに状態遷移表
を作成し直すことを特徴とする請求項4記載の文字,文
字列検索方法。 - 【請求項6】 請求項1ないし5のいずれか1記載の文
字,文字列検索方法を実行するためのプログラム及びデ
ータを記録したコンピュータ読み取り可能な記録媒体。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP24705297A JP3231673B2 (ja) | 1996-11-21 | 1997-09-11 | 文字,文字列検索方法及び該方法に用いる記録媒体 |
| US08/972,456 US5978801A (en) | 1996-11-21 | 1997-11-18 | Character and/or character-string retrieving method and storage medium for use for this method |
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP31110896 | 1996-11-21 | ||
| JP8-311108 | 1996-11-21 | ||
| JP24705297A JP3231673B2 (ja) | 1996-11-21 | 1997-09-11 | 文字,文字列検索方法及び該方法に用いる記録媒体 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH10207912A true JPH10207912A (ja) | 1998-08-07 |
| JP3231673B2 JP3231673B2 (ja) | 2001-11-26 |
Family
ID=26538038
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP24705297A Expired - Fee Related JP3231673B2 (ja) | 1996-11-21 | 1997-09-11 | 文字,文字列検索方法及び該方法に用いる記録媒体 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US5978801A (ja) |
| JP (1) | JP3231673B2 (ja) |
Cited By (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP1006460A3 (en) * | 1998-11-30 | 2004-10-13 | Matsushita Electric Industrial Co., Ltd. | Symbol dictionary compiling method and symbol dictionary retrieving method |
| JP2006125954A (ja) * | 2004-10-28 | 2006-05-18 | Jeol Ltd | 自然文から分析条件を抽出設定可能な分析装置 |
| JP2009517782A (ja) * | 2005-12-02 | 2009-04-30 | エクセジー・インコーポレイテツド | 高性能正規表現パターンマッチングのための方法および装置 |
| JPWO2006061899A1 (ja) * | 2004-12-09 | 2009-09-03 | 三菱電機株式会社 | 文字列照合装置および文字列照合プログラム |
| JP2010225156A (ja) * | 2010-03-26 | 2010-10-07 | Mitsubishi Electric Corp | 文字列照合装置および文字列照合プログラム |
| WO2012133976A1 (ko) * | 2011-03-28 | 2012-10-04 | Kim Kyung Mi | 복수의 정규 표현식을 동시에 사용하여 검색하기 위해 복수의 비결정적 유한 오토마타를 병합하는 방법, 서버, 단말 장치 및 컴퓨터 판독 가능한 기록 매체 |
| JP2013525892A (ja) * | 2010-04-20 | 2013-06-20 | インターナショナル・ビジネス・マシーンズ・コーポレーション | ラージ・スケール正規表現のマッチングのための二重dfa分解 |
Families Citing this family (58)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DE19725790A1 (de) * | 1997-06-18 | 1998-12-24 | Fischer Gmbh Gert | Verfahren zum selektiven Erfassen und Auslesen einer Zeichenkette |
| US6477571B1 (en) * | 1998-08-11 | 2002-11-05 | Computer Associates Think, Inc. | Transaction recognition and prediction using regular expressions |
| WO2001050343A1 (en) * | 2000-01-05 | 2001-07-12 | Mitsubishi Denki Kabushiki Kaisha | Keyword extracting device |
| US6711558B1 (en) * | 2000-04-07 | 2004-03-23 | Washington University | Associative database scanning and information retrieval |
| US8095508B2 (en) * | 2000-04-07 | 2012-01-10 | Washington University | Intelligent data storage and processing using FPGA devices |
| US7139743B2 (en) | 2000-04-07 | 2006-11-21 | Washington University | Associative database scanning and information retrieval using FPGA devices |
| US20020065820A1 (en) * | 2000-10-02 | 2002-05-30 | Enns Neil Robin Newman | Automatically identifying a telephone number in electronic text |
| US7046848B1 (en) * | 2001-08-22 | 2006-05-16 | Olcott Peter L | Method and system for recognizing machine generated character glyphs and icons in graphic images |
| WO2003023553A2 (en) * | 2001-09-12 | 2003-03-20 | Raqia Networks Inc. | Method of generating a dfa state machine that groups transitions into classes in order to conserve memory |
| US7716330B2 (en) * | 2001-10-19 | 2010-05-11 | Global Velocity, Inc. | System and method for controlling transmission of data packets over an information network |
| JP4047053B2 (ja) * | 2002-04-16 | 2008-02-13 | 富士通株式会社 | 繰り返しを含む順序パターンを用いた検索装置および方法 |
| US7711844B2 (en) | 2002-08-15 | 2010-05-04 | Washington University Of St. Louis | TCP-splitter: reliable packet monitoring methods and apparatus for high speed networks |
| US7689530B1 (en) * | 2003-01-10 | 2010-03-30 | Cisco Technology, Inc. | DFA sequential matching of regular expression with divergent states |
| AU2003902388A0 (en) * | 2003-05-16 | 2003-06-05 | Canon Kabushiki Kaisha | Method for Identifying Composite Data Types with Regular Expressions |
| US10572824B2 (en) | 2003-05-23 | 2020-02-25 | Ip Reservoir, Llc | System and method for low latency multi-functional pipeline with correlation logic and selectively activated/deactivated pipelined data processing engines |
| EP2511787B1 (en) | 2003-05-23 | 2017-09-20 | IP Reservoir, LLC | Data decompression and search using FPGA devices |
| US7546608B2 (en) | 2004-01-14 | 2009-06-09 | International Business Machines Corporation | Enhanced search expressions for information kit integration architecture |
| US7602785B2 (en) | 2004-02-09 | 2009-10-13 | Washington University | Method and system for performing longest prefix matching for network address lookup using bloom filters |
| US7861304B1 (en) * | 2004-05-07 | 2010-12-28 | Symantec Corporation | Pattern matching using embedded functions |
| US20050273450A1 (en) * | 2004-05-21 | 2005-12-08 | Mcmillen Robert J | Regular expression acceleration engine and processing model |
| US7216364B2 (en) * | 2004-06-14 | 2007-05-08 | Lionic Corporation | System security approaches using state tables |
| US7685637B2 (en) * | 2004-06-14 | 2010-03-23 | Lionic Corporation | System security approaches using sub-expression automata |
| EP1744235A1 (en) * | 2004-06-14 | 2007-01-17 | Lionic Corporation | Method and system for virus detection based on finite automata |
| US7596809B2 (en) * | 2004-06-14 | 2009-09-29 | Lionic Corporation | System security approaches using multiple processing units |
| US20060075392A1 (en) * | 2004-10-05 | 2006-04-06 | International Business Machines Corporation | System and method for reverse engineering of pattern string validation scripts |
| JP4515461B2 (ja) * | 2004-11-12 | 2010-07-28 | 株式会社ジャストシステム | データ処理装置およびデータ処理方法 |
| EP1859378A2 (en) | 2005-03-03 | 2007-11-28 | Washington University | Method and apparatus for performing biosequence similarity searching |
| US7502788B2 (en) * | 2005-11-08 | 2009-03-10 | International Business Machines Corporation | Method for retrieving constant values using regular expressions |
| US20070118532A1 (en) * | 2005-11-22 | 2007-05-24 | Ping-Piao Lu | Method and system for providing system security services |
| US7954114B2 (en) * | 2006-01-26 | 2011-05-31 | Exegy Incorporated | Firmware socket module for FPGA-based pipeline processing |
| US7636703B2 (en) * | 2006-05-02 | 2009-12-22 | Exegy Incorporated | Method and apparatus for approximate pattern matching |
| US7512634B2 (en) * | 2006-06-05 | 2009-03-31 | Tarari, Inc. | Systems and methods for processing regular expressions |
| US7840482B2 (en) | 2006-06-19 | 2010-11-23 | Exegy Incorporated | Method and system for high speed options pricing |
| US7921046B2 (en) | 2006-06-19 | 2011-04-05 | Exegy Incorporated | High speed processing of financial information using FPGA devices |
| US20080086274A1 (en) * | 2006-08-10 | 2008-04-10 | Chamberlain Roger D | Method and Apparatus for Protein Sequence Alignment Using FPGA Devices |
| US20080043289A1 (en) * | 2006-08-16 | 2008-02-21 | Epip Pty Ltd. | Regular Expressions for Electronic Submission of Documents |
| US7660793B2 (en) | 2006-11-13 | 2010-02-09 | Exegy Incorporated | Method and system for high performance integration, processing and searching of structured and unstructured data using coprocessors |
| US8326819B2 (en) | 2006-11-13 | 2012-12-04 | Exegy Incorporated | Method and system for high performance data metatagging and data indexing using coprocessors |
| US8103674B2 (en) * | 2007-12-21 | 2012-01-24 | Microsoft Corporation | E-matching for SMT solvers |
| US10229453B2 (en) | 2008-01-11 | 2019-03-12 | Ip Reservoir, Llc | Method and system for low latency basket calculation |
| US8374986B2 (en) * | 2008-05-15 | 2013-02-12 | Exegy Incorporated | Method and system for accelerated stream processing |
| WO2010077829A1 (en) | 2008-12-15 | 2010-07-08 | Exegy Incorporated | Method and apparatus for high-speed processing of financial market depth data |
| US10037568B2 (en) | 2010-12-09 | 2018-07-31 | Ip Reservoir, Llc | Method and apparatus for managing orders in financial markets |
| US11436672B2 (en) | 2012-03-27 | 2022-09-06 | Exegy Incorporated | Intelligent switch for processing financial market data |
| US9990393B2 (en) | 2012-03-27 | 2018-06-05 | Ip Reservoir, Llc | Intelligent feed switch |
| US10650452B2 (en) | 2012-03-27 | 2020-05-12 | Ip Reservoir, Llc | Offload processing of data packets |
| US10121196B2 (en) | 2012-03-27 | 2018-11-06 | Ip Reservoir, Llc | Offload processing of data packets containing financial market data |
| US10133802B2 (en) | 2012-10-23 | 2018-11-20 | Ip Reservoir, Llc | Method and apparatus for accelerated record layout detection |
| US9633093B2 (en) | 2012-10-23 | 2017-04-25 | Ip Reservoir, Llc | Method and apparatus for accelerated format translation of data in a delimited data format |
| US10146845B2 (en) | 2012-10-23 | 2018-12-04 | Ip Reservoir, Llc | Method and apparatus for accelerated format translation of data in a delimited data format |
| US9171207B1 (en) * | 2013-03-15 | 2015-10-27 | Peter L Olcott | Method and system for recognizing machine generated character glyphs in graphic images |
| GB2541577A (en) | 2014-04-23 | 2017-02-22 | Ip Reservoir Llc | Method and apparatus for accelerated data translation |
| US20150371140A1 (en) * | 2014-06-24 | 2015-12-24 | Microsoft Technology Licensing, Llc | Minimizing Symbolic Finite Automata |
| US10942943B2 (en) | 2015-10-29 | 2021-03-09 | Ip Reservoir, Llc | Dynamic field data translation to support high performance stream data processing |
| WO2018119035A1 (en) | 2016-12-22 | 2018-06-28 | Ip Reservoir, Llc | Pipelines for hardware-accelerated machine learning |
| US10481881B2 (en) * | 2017-06-22 | 2019-11-19 | Archeo Futurus, Inc. | Mapping a computer code to wires and gates |
| US9996328B1 (en) * | 2017-06-22 | 2018-06-12 | Archeo Futurus, Inc. | Compiling and optimizing a computer code by minimizing a number of states in a finite machine corresponding to the computer code |
| CN118627940B (zh) * | 2024-08-14 | 2024-10-29 | 华侨大学 | 一种正则语言和自动机理论的辅助教学交互方法及装置 |
Family Cites Families (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5379420A (en) * | 1991-12-26 | 1995-01-03 | Trw Inc. | High-speed data searching apparatus and method capable of operation in retrospective and dissemination modes |
| US5511159A (en) * | 1992-03-18 | 1996-04-23 | At&T Corp. | Method of identifying parameterized matches in a string |
| JP2994926B2 (ja) * | 1993-10-29 | 1999-12-27 | 松下電器産業株式会社 | 有限状態機械作成方法とパターン照合機械作成方法とこれらを変形する方法および駆動方法 |
| JPH07248755A (ja) * | 1994-02-25 | 1995-09-26 | Internatl Business Mach Corp <Ibm> | 文字表示方法 |
| US5778356A (en) * | 1994-11-10 | 1998-07-07 | Cadis, Inc. | Dynamically selectable language display system for object oriented database management system |
| US5764974A (en) * | 1995-08-30 | 1998-06-09 | Unisys Corporation | System with user specified pattern definitions for matching input messages and associated decisions for conditionally responding to the input messages |
| US5778359A (en) * | 1996-04-18 | 1998-07-07 | Davox Corporation | System and method for determining and verifying a file record format based upon file characteristics |
| US5761686A (en) * | 1996-06-27 | 1998-06-02 | Xerox Corporation | Embedding encoded information in an iconic version of a text image |
| US5765176A (en) * | 1996-09-06 | 1998-06-09 | Xerox Corporation | Performing document image management tasks using an iconic image having embedded encoded information |
-
1997
- 1997-09-11 JP JP24705297A patent/JP3231673B2/ja not_active Expired - Fee Related
- 1997-11-18 US US08/972,456 patent/US5978801A/en not_active Expired - Fee Related
Cited By (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP1006460A3 (en) * | 1998-11-30 | 2004-10-13 | Matsushita Electric Industrial Co., Ltd. | Symbol dictionary compiling method and symbol dictionary retrieving method |
| JP2006125954A (ja) * | 2004-10-28 | 2006-05-18 | Jeol Ltd | 自然文から分析条件を抽出設定可能な分析装置 |
| JPWO2006061899A1 (ja) * | 2004-12-09 | 2009-09-03 | 三菱電機株式会社 | 文字列照合装置および文字列照合プログラム |
| JP4535130B2 (ja) * | 2004-12-09 | 2010-09-01 | 三菱電機株式会社 | 文字列照合装置および文字列照合プログラム |
| US8032479B2 (en) | 2004-12-09 | 2011-10-04 | Mitsubishi Electric Corporation | String matching system and program therefor |
| JP2009517782A (ja) * | 2005-12-02 | 2009-04-30 | エクセジー・インコーポレイテツド | 高性能正規表現パターンマッチングのための方法および装置 |
| JP2010225156A (ja) * | 2010-03-26 | 2010-10-07 | Mitsubishi Electric Corp | 文字列照合装置および文字列照合プログラム |
| JP2013525892A (ja) * | 2010-04-20 | 2013-06-20 | インターナショナル・ビジネス・マシーンズ・コーポレーション | ラージ・スケール正規表現のマッチングのための二重dfa分解 |
| US9305116B2 (en) | 2010-04-20 | 2016-04-05 | International Business Machines Corporation | Dual DFA decomposition for large scale regular expression matching |
| WO2012133976A1 (ko) * | 2011-03-28 | 2012-10-04 | Kim Kyung Mi | 복수의 정규 표현식을 동시에 사용하여 검색하기 위해 복수의 비결정적 유한 오토마타를 병합하는 방법, 서버, 단말 장치 및 컴퓨터 판독 가능한 기록 매체 |
Also Published As
| Publication number | Publication date |
|---|---|
| JP3231673B2 (ja) | 2001-11-26 |
| US5978801A (en) | 1999-11-02 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3231673B2 (ja) | 文字,文字列検索方法及び該方法に用いる記録媒体 | |
| CN101183294A (zh) | 表情输入方法及装置 | |
| CN111339042B (zh) | 数据的操作处理方法、系统及调度服务器 | |
| CN108984177A (zh) | 一种数据处理方法及系统 | |
| WO2008053583A1 (en) | Bit sequence searching method and program | |
| CN109508448A (zh) | 基于长篇文章生成短资讯方法、介质、装置和计算设备 | |
| CN1920829B (zh) | 字符输入辅助方法和信息处理装置 | |
| CN111813747A (zh) | 文件批量重命名方法、电子设备及计算机可读存储介质 | |
| US20040243627A1 (en) | Chat stream information capturing and indexing system | |
| CN111428230A (zh) | 一种信息验证方法、装置、服务器及存储介质 | |
| JP7275816B2 (ja) | 情報処理装置及びプログラム | |
| CN110046352A (zh) | 地址标准化方法及装置 | |
| US20080052619A1 (en) | Spell Checking Documents with Marked Data Blocks | |
| CN120277070A (zh) | 基于机器学习模型的内容检索方法、装置和设备 | |
| JP2004240488A (ja) | 文書管理装置 | |
| US7818810B2 (en) | Control of document content having extraction permissives | |
| CN119938884A (zh) | 一种大语言模型的文档检索增强方法、装置及设备 | |
| JPH1139315A (ja) | フォーマットされた文書を順序付けされたワードリストへ変換する方法 | |
| CN118114660A (zh) | 文本检测方法、系统及计算机可读存储介质 | |
| CN115238028B (zh) | 一种车辆用用户文本数据关键词匹配方法及装置 | |
| JP5220200B2 (ja) | データ処理装置及びデータ処理方法及びプログラム | |
| JPH11213008A (ja) | テキスト検索装置、urlグルーピング装置、テキスト検索方法、及びurlグルーピング方法 | |
| JP2004086846A (ja) | 情報区分装置、方法及びプログラム、並びに、情報区分プログラムを記録した記録媒体 | |
| CN114547038B (zh) | 优先级数据库的数据处理方法及装置 | |
| JP2002157252A (ja) | 文書検索装置および文書検索方法、並びに文書検索方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080914 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080914 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090914 Year of fee payment: 8 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090914 Year of fee payment: 8 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100914 Year of fee payment: 9 |
|
| LAPS | Cancellation because of no payment of annual fees |