JP2005242668A - パターンマッチング装置および方法ならびにプログラム - Google Patents

パターンマッチング装置および方法ならびにプログラム Download PDF

Info

Publication number
JP2005242668A
JP2005242668A JP2004051654A JP2004051654A JP2005242668A JP 2005242668 A JP2005242668 A JP 2005242668A JP 2004051654 A JP2004051654 A JP 2004051654A JP 2004051654 A JP2004051654 A JP 2004051654A JP 2005242668 A JP2005242668 A JP 2005242668A
Authority
JP
Japan
Prior art keywords
pattern
text
hash function
applying
automaton
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
Application number
JP2004051654A
Other languages
English (en)
Other versions
JP4347086B2 (ja
Inventor
Ryosuke Kurebayashi
亮介 榑林
Masaru Katayama
勝 片山
Naoaki Yamanaka
直明 山中
Kohei Shiomoto
公平 塩本
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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2004051654A priority Critical patent/JP4347086B2/ja
Publication of JP2005242668A publication Critical patent/JP2005242668A/ja
Application granted granted Critical
Publication of JP4347086B2 publication Critical patent/JP4347086B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】 パターンマッチングをハードウェアで実現する際に、メモリおよび回路規模を削減し、かつスループットの向上を可能とする。
【解決手段】 入力されたテキストのサフィックスに対するパターンにハッシュ関数を適用した結果として得られる文字列の最長プリフィックスを状態として持つオートマトンを構成し、そのオートマトンに同一のハッシュ関数をテキストに適用した結果として得られる文字列を入力し、パターンに一致する可能性のある入力文字列と、パターンに一致する可能性のない入力文字列との識別を行う。次に、ハッシュ関数の適用によって生成される複数の独立した文字列単位でパイプライン並列処理する。最後に、ハッシュを適用したオートマトンによって特定される、パターンと一致する可能性のあるテキスト中の文字列とそのテキストに一致する可能性のあるパターンとを正確に照合する。
【選択図】 図1

Description

本発明は、与えられた入力文字列であるテキストから任意の複数種類の文字列であるパターンを検索するパターンマッチングを行うための手法および装置に関する。
与えられたテキストから任意の複数種類のパターンを検索するパターンマッチングは、ワープロソフト、データベースの検索等、多様な分野で応用されている。しかし、情報化社会の進展、そしてハードディスクといった記憶装置の大容量化、低コスト化によって、検索対象となる情報が膨大化している。したがって、パターンマッチングを高効率化するため、そのハードウェア化などの試みがなされている。
ここで、パターンマッチングについて定義する。長さnのテキストTと、長さmのテキストPを仮定する。ここで、パターンとテキストとはそれぞれ、共通した文字集合に属する文字を、テキストの場合はn文字、パターンの場合はm文字を、左から右に順番に並べることで構成される。すなわち、テキストT中の文字をtiと表すと、テキストTはt1…tnと表記できる。同様にパターンPはp1…pmと表記できる。パターンマッチングの目的はテキスト中にパターンが存在するか否かを特定することにある。すなわち、ts+1…ts+m=p1…pmとなる部分テキストを検出することにある。
パターンマッチングの方法として既に多くの手法が提案されている。パターンマッチングの方法は大きく以下の二つに分類できる。
1)テキストとパターンとの文字比較位置が関数的に変化する方法。
この種の方法では、テキストおよびパターンの双方の文字を比較し、それぞれの文字が一致しない場合は、比較中のテキストとパターンとの重なり位置(以下、ウィンドウと呼ぶ)をテキストに対して右方向に移動させ、ウィンドウ中のテキストとパターンとの比較を再開する。このとき、テキストとパターンとの文字比較回数を減少させるには、文字が一致しなかった際にウィンドウを移動させる幅を可能な限り大きくすることが重要となる。この種の代表的な方法として、BM(Boyer Moore),Reverse Factor,KMP(Knuth-Morris-Pratt)などがある(例えば、非特許文献1参照)。
2)テキストとパターンとの文字比較位置が一定に変化する方法。
この種の方法では、どのようなテキストおよびパターンを用いても、テキストとパターンとの文字比較回数が常にテキスト長にのみ依存する特徴がある。この種の方法として、オートマトンを用いた方法およびShift
ORアルゴリズムがある。
前者の方法では、一般的に文字比較回数の期待値が後者の方法より優れる。このため、特にソフトウェア上での実現では、前者の方法が広く用いられる。しかし、前者の方法では、複数パターンを同時に検索することができないという問題がある。さらに、そのハードウェア化に際して以下の問題が生じる。
先の入力文字の比較結果に応じてどれだけウィンドウを右方向に移動できるかが決まる。このため、テキスト中の入力文字をパイプライン処理することができない。
テキストとパターンとの文字比較位置が関数的に変化するため、文字比較回数がテキストとパターンとに依存して変化する。このとき文字比較回数の最悪値は後者の方法より多くなる。文字比較回数の変化にともなうパターンマッチングのスループットの変化を吸収するため、入力テキストのバッファ機構が必要となる。バッファの容量を大きくとることによって、バッファが溢れる確率を小さくすることが可能であるが、完全にバッファが溢れないことを保障することは困難点である。また、バッファ中のテキストが枯渇した場合には、パイプラインがストールするなどの問題が生じる。
Christian Charrs and ThierryLecroq"Handbook of Exact String Matching Algorithms"、[online]、[平成16年2月10日検索]、インターネット<URL:http://homepage.stts.edu/~aikawa/string.pdf> A.V.Aho and M.J.Corasick.Efficientstring matching:an aid to bibliographic search.Comm.of theACM.18(6):333-340,June 1975.
従来技術によるパターンマッチングのハードウェア化では、主にオートマトンを用いた手法が用いられる。オートマトンの特徴としてまず、1)複数パターンを同時に検索することが可能であることが挙げられる。さらに、ハードウェア向きである特徴として、2−1)テキストとパターンとの文字比較位置が一定でありテキストをバッファする機構が必要でない。2−2)テキスト中の文字が入力されてから次の文字が入力されるまでの遅延が他の方法と比較して小さい、ことが挙げられる。その一方で、オートマトンによる方法では、メモリおよび論理回路の規模、スループットの点において幾つかの課題が存在する。
オートマトンを用いた手法では、まず、これまでに入力されたテキストのサフィックスに対するパターンの最長プリフィックスを状態として持つオートマトンを構成する。ここで、任意の文字列tii+1…ti+jのプリフィックスは、tii+1…ti+l(0≦l≦j)と定義される。一方、任意の文字列tii+1…ti+jのサフィックスはtll+1…ti+j(i≦l≦i+j)と定義される。複数のパターンが存在する場合には、個々のパターンに対するオートマトンを単一のオートマトンとして合成することが可能である。このような方法をAho−Corasickと呼ぶ(例えば、非特許文献2参照)。
図11はAho−Corasickオートマトンを説明するための図であるが、図11は例としてパターンをcabcとcbacaの2つとした場合に生成されるオートマトンを示している。なお、いずれの状態においても、アーク上に明示されていない文字が入力された場合は状態0に戻る。次に、そのオートマトンに対して入力テキストの文字列を入力させ、入力された文字と現在のオートマトンの状態とから、オートマトンを次の状態に遷移させるという動作を繰り返す。このとき、オートマトンがパターン全体を表す状態(以下、最終状態)に遷移すると、テキスト中の文字列がパターンと一致したことを表す。図11の例では、状態4と状態8が最終状態である。
図12は従来のメモリを用いたオートマトンの実現例を示す図であり、図13は従来のオートマトンの回路展開例を示す図であるが、オートマトンのハードウェア実現に際しては、図12のように、オートマトンをメモリ上で表現する方法と、図13のようにオートマトンを直接的に回路化する方法とに分けられる。オートマトンをメモリ上で表現する方法として、新しく入力されたテキストの文字と現在のオートマトンの状態とを入力とし、次に遷移すべき状態を出力とする表が用いられる。しかし、オートマトンを表として実現する場合には、表のエントリ数がテキストの一文字あたりのビット幅に対して指数関数的に増加するという問題がある。
一方、オートマトンをバイナリツリー等を用いて表現することによって、エントリ数を削減する方法もある。しかし、この方法では、テキストの文字が入力されてから次の状態が決定されるまでの遅延が表と比較して大きくなる。この遅延の間、次のテキストの文字に対する照合処理ができないため、スループットが大きく制限される。一方、図13のオートマトンを直接布線論理化する方法では、オートマトンの状態毎に比較器が必要となる。また、状態間の配線遅延によってスループットが制限される。
本発明は、このような背景に行われたものであって、パターンマッチングをハードウェアで実現する際に、メモリおよび回路規模を削減し、かつスループットの向上を可能とすることができるパターンマッチング装置および方法を提供することを目的とする。
本発明では、従来のオートマトンによるパターンマッチングに対して以下の点を付加することを特徴とする。まず、これまでに入力されたテキストのサフィックスに対するパターンにハッシュ関数を適用した結果として得られる文字列の最長プリフィックスを状態として持つオートマトンを構成し、そのオートマトンに同一のハッシュ関数をテキストに適用した結果として得られる文字列を入力することによって、パターンに一致する可能性のある入力文字列と一致する可能性のない入力文字列との識別を行う。
このとき、複数文字から一つのハッシュ値を生成するハッシュ関数を用いることによって、オートマトンの状態数を削減させることができる。また、パターンの1文字あたりのビット幅より小さいビット幅を持つハッシュ値を生成するハッシュ関数を用いることによって、オートマトンに入力される文字の種類を削減させることができる。
次に、ハッシュ関数の適用によって生成される複数の独立した文字列単位でオートマトンによるパターンマッチングをパイプライン化して並列化する(以下では、パイプライン並列処理という)。最後に、ハッシュを適用したオートマトンによって特定される、パターンと一致する可能性のあるテキスト中の文字列とそのテキストに一致する可能性のあるパターンとを正確に照合することによってパターンマッチングを行う。
このように、本発明では、ハッシュ関数をテキストとパターンとの双方に対して適用することによって、ハッシュ関数によって圧縮された空間上でパターンマッチングを行う。これにより、オートマトンの状態数の削減効果および文字の種類の削減効果が得られる。ハッシュ関数がk文字からハッシュ値を生成するとすると、ハッシュ関数の適用されたパターンの文字数は1/kに減少する。
オートマトンをメモリ表現する場合のメモリのエントリ数、回路表現する場合の回路規模はオートマトンの状態数に比例する。また、ハッシュ値のビット幅をハッシュ適用前のパターンの一文字あたりのビット幅より小さくすることによって、オートマトンに入力される文字の種類を削減させることが可能である。
すなわち、ハッシュ適用前のパターンの一文字あたりのビット幅をω、ハッシュ値のビット幅をhωとすると、その削減比は2/2ωとなる。オートマトンをメモリを用いて表として表現する場合は、そのメモリエントリ数は文字のビット幅に対して指数関数的に増加する。故に、ハッシュ関数の適用により、本発明の目的である、メモリおよび回路規模の削減が可能となる。
さらに、テキストにk文字からハッシュ値を生成する関数を適用すると、一つのテキストからk個の独立した文字列が生成される。この独立した文字列間はそれぞれ依存することなくパターンマッチングを行うことができる。故に、これらの文字列をパイプライン並列処理することによって、本発明の目的である、パターンマッチングのスループット向上が得られる。
すなわち、本発明の第一の観点は、入力文字列であるテキストから複数種類の任意文字列であるパターンを検索するパターンマッチング装置であって、本発明の特徴とするところは、これまでに入力されたテキストのサフィックスに対するパターンにハッシュ関数を適用した結果として得られる文字列の最長プリフィックスを状態として持つオートマトンを構成する手段と、このオートマトンに同一のハッシュ関数をテキストに適用した結果として得られる文字列を入力することによって、パターンに一致する可能性のある部分テキストと、パターンに一致する可能性のない部分テキストとの識別を行う手段とを備えたところにある(請求項1)。
このときに、複数文字から一つのハッシュ値を生成するハッシュ関数を用いることが望ましい(請求項2)。また、パターンの1文字あたりのビット幅より小さいビット幅を持つハッシュ値を生成するハッシュ関数を用いることが望ましい(請求項3)。
さらに、ハッシュ関数の適用によって生成される独立した複数の文字列単位でパイプライン処理を行う手段を備えることができる(請求項4)。あるいは、ハッシュ関数の適用によって生成される独立した複数の文字列単位を並列処理する手段を備えることができる(請求項5)。あるいは、ハッシュ関数の適用によって生成される独立した複数の文字列単位を並列処理すると共にパイプライン処理を行う手段を備えることができる(請求項6)。
さらに、前記一致する可能性のある部分テキストに対し、パターンと完全に一致するか否かを判定する手段を備えることができる(請求項7)。
本発明の第二の観点は、入力文字列であるテキストから複数種類の任意文字列であるパターンを検索するパターンマッチング方法であって、本発明の特徴とするところは、これまでに入力されたテキストのサフィックスに対するパターンにハッシュ関数を適用した結果として得られる文字列の最長プリフィックスを状態として持つオートマトンを構成するステップと、このオートマトンに同一のハッシュ関数をテキストに適用した結果として得られる文字列を入力することによって、パターンに一致する可能性のある部分テキストと、パターンに一致する可能性のない部分テキストとの識別を行うステップとを実行するところにある(請求項8)。
このときに、複数文字から一つのハッシュ値を生成するハッシュ関数を用いることが望ましい(請求項9)。また、パターンの1文字あたりのビット幅より小さいビット幅を持つハッシュ値を生成するハッシュ関数を用いることが望ましい(請求項10)。
さらに、ハッシュ関数の適用によって生成される独立した複数の文字列単位でパイプライン処理を行うステップを実行することができる(請求項11)。あるいは、ハッシュ関数の適用によって生成される独立した複数の文字列単位を並列処理するステップを実行することができる(請求項12)。あるいは、ハッシュ関数の適用によって生成される独立した複数の文字列単位を並列処理すると共にパイプライン処理を行うステップを実行することができる(請求項13)。
さらに、前記一致する可能性のある部分テキストに対し、パターンと完全に一致するか否かを判定するステップを実行することができる(請求項14)。
本発明の第三の観点は、情報処理装置にインストールすることにより、その情報処理装置に、入力文字列であるテキストから複数種類の任意文字列であるパターンを検索するパターンマッチング装置に相応する機能を実現させるプログラムであって、本発明の特徴とするところは、これまでに入力されたテキストのサフィックスに対するパターンにハッシュ関数を適用した結果として得られる文字列の最長プリフィックスを状態として持つオートマトンを構成する機能と、このオートマトンに同一のハッシュ関数をテキストに適用した結果として得られる文字列を入力することによって、パターンに一致する可能性のある部分テキストと、パターンに一致する可能性のない部分テキストとの識別を行う機能とを実現させるところにある(請求項15)。
さらに、ハッシュ関数の適用によって生成される独立した複数の文字列単位でパイプライン処理を行う機能を実現させることができる(請求項16)。あるいは、ハッシュ関数の適用によって生成される独立した複数の文字列単位を並列処理する機能を実現させることができる(請求項17)。あるいは、ハッシュ関数の適用によって生成される独立した複数の文字列単位を並列処理すると共にパイプライン処理を行う機能を実現させることができる(請求項18)。
さらに、前記一致する可能性のある部分テキストに対し、パターンと完全に一致するか否かを判定する機能を実現させることができる(請求項19)。
本発明の第四の観点は、本発明のプログラムが記録された前記情報処理装置読取可能な記録媒体である(請求項20)。本発明のプログラムは本発明の記録媒体に記録されることにより、前記情報処理装置は、この記録媒体を用いて本発明のプログラムをインストールすることができる。あるいは、本発明のプログラムを保持するサーバからネットワークを介して直接前記情報処理装置に本発明のプログラムをインストールすることもできる。
これにより、汎用の情報処理装置を用いて、スループットの向上を可能とすることができるパターンマッチング装置を実現することができる。
本発明によれば、パターンマッチングをハードウェアで実現する際に、メモリおよび回路規模を削減し、かつスループットの向上を可能とすることができる。また、パターンマッチングを汎用の情報処理装置とプログラムとを用いて実現する際にもスループットの向上を可能とすることができる。
本発明実施例のパターンマッチング装置を図1を参照して説明する。図1は本実施例のパターンマッチング装置のブロック構成図である。
本実施例の入力文字列であるテキストから複数種類の任意文字列であるパターンを検索するパターンマッチング装置は、図1に示すように、これまでに入力されたテキストのサフィックスに対するパターンにハッシュ関数を適用した結果として得られる文字列の最長プリフィックスを状態として持つオートマトンを構成するハッシュ計算部1およびオートマトン部2と、このオートマトンに同一のハッシュ関数をテキストに適用した結果として得られる文字列を入力することによって、パターンに一致する可能性のある部分テキストと、パターンに一致する可能性のない部分テキストとの識別を行う最終状態判定部3とを備えたことを特徴とする(請求項1)。
このときに、ハッシュ計算部1は、複数文字から一つのハッシュ値を生成するハッシュ関数を用いる(請求項2)。また、ハッシュ計算部1は、パターンの1文字あたりのビット幅より小さいビット幅を持つハッシュ値を生成するハッシュ関数を用いる(請求項3)。
図4は本実施例のハッシュ計算部1の実装例を示す図であるが、図4に示すように、ハッシュ計算部1は、ハッシュ関数の適用によって生成される独立した複数の文字列単位を並列処理する手段を備える(請求項5)。
また、図5は本実施例のメモリ表現した場合のハッシュによるパイプライン化を示す図であり、図6は本実施例の回路展開した場合のハッシュによるパイプライン化を示す図であるが、図5および図6に示すように、ハッシュ計算部1は、ハッシュ関数の適用によって生成される独立した複数の文字列単位でパイプライン処理を行う手段を備えることもできる(請求項4)。
また、図7は本実施例のパイプライン並列処理を行うオートマトンの実装例を示す図であるが、図7に示すように、ハッシュ関数の適用によって生成される独立した複数の文字列単位を並列処理すると共にパイプライン処理を行う手段を備えることもできる(請求項6)。
さらに、図1に示すように、前記一致する可能性のある部分テキストに対し、パターンと完全に一致するか否かを判定する完全一致照合部4を備える(請求項7)。
本実施例の入力文字列であるテキストから複数種類の任意文字列であるパターンを検索するパターンマッチング方法は、図1に示すハッシュ計算部1およびオートマトン部2により、これまでに入力されたテキストのサフィックスに対するパターンにハッシュ関数を適用した結果として得られる文字列の最長プリフィックスを状態として持つオートマトンを構成するステップを実行し、最終状態判定部3により、このオートマトンに同一のハッシュ関数をテキストに適用した結果として得られる文字列を入力することによって、パターンに一致する可能性のある部分テキストと、パターンに一致する可能性のない部分テキストとの識別を行うステップを実行することを特徴とする(請求項8)。
このとき、ハッシュ計算部1は、複数文字から一つのハッシュ値を生成するハッシュ関数を用いる(請求項9)。また、ハッシュ計算部1は、パターンの1文字あたりのビット幅より小さいビット幅を持つハッシュ値を生成するハッシュ関数を用いる(請求項10)。
図4に示すハッシュ計算部1の実装例により、ハッシュ関数の適用によって生成される独立した複数の文字列単位を並列処理するステップを実行する(請求項12)。
図5に示すメモリ表現した場合のハッシュによるパイプライン化または図6に示す回路展開した場合のハッシュによるパイプライン化により、ハッシュ関数の適用によって生成される独立した複数の文字列単位でパイプライン処理を行うステップを実行することもできる(請求項12)。
さらに、図7に示すパイプライン並列処理するオートマトンの実装例により、ハッシュ関数の適用によって生成される独立した複数の文字列単位を並列処理すると共にパイプライン処理を行うステップを実行することもできる(請求項13)。
さらに、図1に示す完全一致照合部4により、前記一致する可能性のある部分テキストに対し、パターンと完全に一致するか否かを判定するステップを実行する(請求項14)。
本発明は、汎用の情報処理装置にインストールすることにより、その情報処理装置に本発明のパターンマッチング装置に相応する機能を実現させるプログラムとして実現することができる(請求項15〜19)。このプログラムは、記録媒体に記録されて情報処理装置にインストールされ(請求項20)、あるいは通信回線を介して情報処理装置にインストールされることにより当該情報処理装置に、ハッシュ計算部1、オートマトン部2、最終状態判定部3、完全一致照合部4にそれぞれ相応する機能を実現させることができる。
以下では、本実施例のパターンマッチング装置および方法をさらに詳細に説明する。
本発明の全体構成を図1に示す。本発明では、あらかじめハッシュ関数が適用されたパターンを用いてオートマトンを構成しておく。次に、ハッシュ計算部1で入力テキストに対して同様のハッシュを適用する。そして、オートマトン部2において、ハッシュが適用されたテキストからハッシュ関数が適用されたパターン検索を行う。このとき、オートマトンを複数コピーすることによって、ハッシュの適用によって生じる独立した文字系列を並列に処理することが可能である。
最終状態判定部3において、オートマトンが最終状態に遷移したか否かを監視する。オートマトンが最終状態に遷移した場合には、ハッシュが適用されたテキストから、ハッシュが適用されたパターンが検出されたことを示す。次に、完全一致照合部4において、ハッシュ適用前のテキストとパターンとが完全一致するか否かを判定する。
(ハッシュ計算部およびオートマトン部の実施例)
図2は複数のパターンからハッシュ関数が適用された一つのオートマトンを生成する手順を示す。まず、各パターンに対して、ハッシュ関数を適用する。k文字から一つのハッシュ値を生成するハッシュ関数をH(x1,x2,…,xk)とする。また、パターンPiの文字数をmiとし、そのパターンをpi,1i,2…pi,miと表記する。このとき、ハッシュ関数生成後のパターン中の文字hpi,j(j=1,…,mi/k)はH(pi,(j-1)k+1,pi,(j-1)k+2,…,pi,jk)と表現できる。全てのパターンをハッシュを用いて変換した後、Aho−Chorasickアルゴリズムに従って、各パターンを単一オートマトンとして合成する。
すなわち、図2に示すように、パターンを取得し(S1)、このパターンからk文字を取得し(S2)、このk文字からハッシュ値を生成する(S3)。取得したk文字を生成したハッシュ値で置き換え(S4)、未処理の文字あるいは未処理のパターンが無くなるまで、ステップS1〜S4を繰り返し実行する(S5、S6)。続いて、Aho−Corasickによる合成オートマトンの生成を行う(S7)。
図3はテキストに対してハッシュを適用するハッシュ計算部1の入出力を示す図である。図3ではn文字からなる入力テキストをt12…tnと表現している。またt(j-1)k+i(j-1)k+i+1…tjk+iにハッシュを適用した結果得られるハッシュ値をhti,jと表記している。このとき、hp1…hpm/kとの比較は、ハッシュ適用後テキストhti,j…hti,j+m/kに対して行えばよい。
すなわち、i≠i′ならば、ハッシュ適用後テキストhti,0hti,1…とhti′,0hti′,1…とは互いに依存関係がなく、独立した文字列とみなすことができる。すなわち、k文字から一つのハッシュ値を生成するハッシュ関数は、k個の独立したハッシュ適用後文字列を生成する。これらの文字列はパイプライン並列処理することが可能である。
(ハッシュ計算の実装例)
ハッシュ関数の具体例として、それぞれの文字間で排他的論理和をとることによって、8ビット幅の文字4つから4ビットのハッシュ値を生成するハッシュ計算部1の実装例を図4に示す。ハッシュ関数の例としては、他にCRCなどが挙げられる。
また、ハッシュ値のビット幅がパターンの1文字あたりのビット幅より小さくならないハッシュ関数も同様に利用可能である。特に、入力される各文字をなんら変更せずに任意に並べるハッシュ関数を用いる場合は、オートマトンが最終状態に遷移した後の完全一致照合処理を省略できる。
(パイプライン処理の場合)
図5は、メモリを用いてオートマトンを表現する場合において、ハッシュ適用後テキストをパイプライン処理する構成を示している。オートマトンをメモリ表現する場合に、入力文字と現在の状態から状態メモリのアドレスを計算するアドレス計算部11と、メモリにアクセスするメモリアクセス部12からなる。これら二つの計算部、さらにはその計算部をパイプライン化してハッシュ適用後テキストを処理することができる。
図6は、回路展開してオートマトンを表現する場合において、ハッシュ適用後文字列をパイプライン処理する構成を示している。図6では、状態間の配線にレジスタRを配置し、各ハッシュ適用後テキストをパイプライン処理させることによって、配線遅延の隠蔽を行っている。
(パイプライン並列処理の場合)
図7は、パイプライン並列処理の例として、図4で生成される4つのハッシュ適用後テキストht1,0ht1,1…,ht2,0ht2,1…,ht3,0ht3,1…,およびht4,0ht4,1…を並列処理すると共にパイプライン処理する回路を示す。図7では、メモリを用いて表現したオートマトンを2つのパイプラインステージに分割したものを2つ並列に並べることによって、4つのハッシュ適用後テキストを処理している。回路展開する場合も同様に、各状態を2つのステージに細分化したオートマトンを2つ並列に並べることによって、同様のパイプライン並列処理が可能である。
(最終状態判定部の実施例)
最終状態判定部3は、オートマトンの現在の状態が最終状態であるか否かを判定する。図8はオートマトンをメモリ表現した場合の最終状態判定部3の実装例を示す。オートマトンの状態を入力として、パターンと一致する可能性があるか否か、すなわち、いずれかのパターンに対応する最終状態に遷移したか否かを示す信号と、それに対応するパターン番号とを出力する。
一方、図9は、オートマトンを回路で表現する場合の最終状態判定部3の実施例を示している。各最終状態を表す状態のレジスタ値の論理積をとることによって、オートマトンが各パターンの最終状態に遷移したか否かを示す信号を出力する。また、パターン番号を出力とするデコーダを用いて一致する可能性のあるパターンの番号を出力する。
(完全一致照合部の実施例)
最後に完全一致照合部4において、ハッシュ空間で一致したパターンと部分テキストが、ハッシュ適用前のパターンとテキストとで完全に一致するか否かの判定を行う。ハッシュ空間で一致しなかったパターンと部分列とを比較する必要がないため、この処理に求められるスループットは非常に小さい。このため、ハードウェアではなく、ソフトウェア上で実現することも可能である。
図10は、完全一致照合部4の照合手順例を示す。まず最終状態判定部3からの出力にしたがって、対象とするハッシュ適用済み部分テキストが同じくハッシュ適用済みパターンと一致するか否かによって分岐する。一致する可能性がある場合のみ、ハッシュ適用済み部分テキストに対応するテキストと、一致する可能性のあるパターンとの比較を行う。この処理を未処理のテキストがなくなるまで繰り返す。
すなわち、図10に示すように、ハッシュ適用済みテキストとパターンとが一致したか否かを判定し(S11)、一致した場合には、一致する可能性のある部分テキストを取得し(S12)、さらに、一致する可能性のあるパターンを取得する(S13)。これら取得したテキストとパターンとを比較する(S14)。この比較結果に基づき、テキストとパターンとが一致した場合には(S15)、パターン検出結果を出力する(S16)。この検出されたパターンが未判定のハッシュ適用済みテキストでなければ(S17)処理を終了する。また、この検出されたパターンが未判定のハッシュ適用済みテキストならばステップS11へ戻る。
また、ステップS11において、ハッシュ適用済みテキストとパターンとが一致せず、未判定のハッシュ適用済みテキストでなければ処理を終了する。あるいは、ステップS15において、テキストとパターンとが一致せず、未判定のハッシュ適用済みテキストでなければ処理を終了する。
本発明は、パターンマッチングをハードウェア処理した際の、メモリおよび論理回路の必要量の低減および各種遅延の隠蔽とテキスト中の複数文字を並列処理することによってスループットを向上させることができるので、記憶装置の大容量化、低コスト化による検索対象となる情報の膨大化に対応することができる。また、パターンマッチングを汎用の情報処理装置とプログラムとを用いて実現する際にもスループットの向上を可能とすることができ、検索対象となる情報の膨大化に対応することができる。
本実施例のパターンマッチング装置のブロック構成図。 本実施例のオートマトンの生成手順を示すフローチャート。 本実施例のハッシュ計算部の入出力を示す図。 本実施例のハッシュ計算部の実装例を示す図。 本実施例のメモリ表現した場合のハッシュによるパイプライン化を示す図。 本実施例の回路展開した場合のハッシュによるパイプライン化を示す図。 本実施例のパイプライン並列処理するオートマトンの実装例を示す図。 本実施例のメモリ表現した場合の最終状態判定部を示す図。 本実施例の回路展開した場合の最終状態判定部を示す図。 本実施例の完全一致照合部の照合手順を示すフローチャート。 従来のAho−Corasickオートマトンを説明するための図。 従来のメモリを用いたオートマトンの実現例を示す図。 従来のオートマトンの回路展開例を示す図。
符号の説明
1 ハッシュ計算部
2 オートマトン部
3 最終状態判定部
4 完全一致照合部
11 アドレス計算部
12 メモリアクセス部
R レジスタ

Claims (20)

  1. 入力文字列であるテキストから複数種類の任意文字列であるパターンを検索するパターンマッチング装置において、
    これまでに入力されたテキストのサフィックスに対するパターンにハッシュ関数を適用した結果として得られる文字列の最長プリフィックスを状態として持つオートマトンを構成する手段と、
    このオートマトンに同一のハッシュ関数をテキストに適用した結果として得られる文字列を入力することによって、パターンに一致する可能性のある部分テキストと、パターンに一致する可能性のない部分テキストとの識別を行う手段と
    を備えたことを特徴とするパターンマッチング装置。
  2. 複数文字から一つのハッシュ値を生成するハッシュ関数を用いる請求項1記載のパターンマッチング装置。
  3. パターンの1文字あたりのビット幅より小さいビット幅を持つハッシュ値を生成するハッシュ関数を用いる請求項1記載のパターンマッチング装置。
  4. ハッシュ関数の適用によって生成される独立した複数の文字列単位でパイプライン処理を行う手段を備えた請求項1記載のパターンマッチング装置。
  5. ハッシュ関数の適用によって生成される独立した複数の文字列単位を並列処理する手段を備えた請求項1記載のパターンマッチング装置。
  6. ハッシュ関数の適用によって生成される独立した複数の文字列単位を並列処理すると共にパイプライン処理を行う手段を備えた請求項1記載のパターンマッチング装置。
  7. 前記一致する可能性のある部分テキストに対し、パターンと完全に一致するか否かを判定する手段を備えた請求項1記載のパターンマッチング装置。
  8. 入力文字列であるテキストから複数種類の任意文字列であるパターンを検索するパターンマッチング方法において、
    これまでに入力されたテキストのサフィックスに対するパターンにハッシュ関数を適用した結果として得られる文字列の最長プリフィックスを状態として持つオートマトンを構成するステップと、
    このオートマトンに同一のハッシュ関数をテキストに適用した結果として得られる文字列を入力することによって、パターンに一致する可能性のある部分テキストと、パターンに一致する可能性のない部分テキストとの識別を行うステップと
    を実行することを特徴とするパターンマッチング方法。
  9. 複数文字から一つのハッシュ値を生成するハッシュ関数を用いる請求項8記載のパターンマッチング方法。
  10. パターンの1文字あたりのビット幅より小さいビット幅を持つハッシュ値を生成するハッシュ関数を用いる請求項8記載のパターンマッチング方法。
  11. ハッシュ関数の適用によって生成される独立した複数の文字列単位でパイプライン処理を行うステップを実行する請求項8記載のパターンマッチング方法。
  12. ハッシュ関数の適用によって生成される独立した複数の文字列単位を並列処理するステップを実行する請求項8記載のパターンマッチング方法。
  13. ハッシュ関数の適用によって生成される独立した複数の文字列単位を並列処理すると共にパイプライン処理を行うステップを実行する請求項8記載のパターンマッチング方法。
  14. 前記一致する可能性のある部分テキストに対し、パターンと完全に一致するか否かを判定するステップを実行する請求項8記載のパターンマッチング方法。
  15. 情報処理装置にインストールすることにより、その情報処理装置に、
    入力文字列であるテキストから複数種類の任意文字列であるパターンを検索するパターンマッチング装置に相応する機能を実現させるプログラムにおいて、
    これまでに入力されたテキストのサフィックスに対するパターンにハッシュ関数を適用した結果として得られる文字列の最長プリフィックスを状態として持つオートマトンを構成する機能と、
    このオートマトンに同一のハッシュ関数をテキストに適用した結果として得られる文字列を入力することによって、パターンに一致する可能性のある部分テキストと、パターンに一致する可能性のない部分テキストとの識別を行う機能と
    を実現させることを特徴とするプログラム。
  16. ハッシュ関数の適用によって生成される独立した複数の文字列単位でパイプライン処理を行う機能を実現させる請求項15記載のプログラム。
  17. ハッシュ関数の適用によって生成される独立した複数の文字列単位を並列処理する機能を実現させる請求項15記載のプログラム。
  18. ハッシュ関数の適用によって生成される独立した複数の文字列単位を並列処理すると共にパイプライン処理を行う機能を実現させる請求項15記載のプログラム。
  19. 前記一致する可能性のある部分テキストに対し、パターンと完全に一致するか否かを判定する機能を実現させる請求項15記載のプログラム。
  20. 請求項15ないし19のいずれかに記載のプログラムが記録された前記情報処理装置読み取り可能な記録媒体。
JP2004051654A 2004-02-26 2004-02-26 パターンマッチング装置および方法ならびにプログラム Expired - Lifetime JP4347086B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004051654A JP4347086B2 (ja) 2004-02-26 2004-02-26 パターンマッチング装置および方法ならびにプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004051654A JP4347086B2 (ja) 2004-02-26 2004-02-26 パターンマッチング装置および方法ならびにプログラム

Publications (2)

Publication Number Publication Date
JP2005242668A true JP2005242668A (ja) 2005-09-08
JP4347086B2 JP4347086B2 (ja) 2009-10-21

Family

ID=35024346

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004051654A Expired - Lifetime JP4347086B2 (ja) 2004-02-26 2004-02-26 パターンマッチング装置および方法ならびにプログラム

Country Status (1)

Country Link
JP (1) JP4347086B2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007129577A1 (ja) * 2006-05-08 2007-11-15 The University Of Electro-Communications テキスト処理モジュール
WO2009050797A1 (ja) * 2007-10-17 2009-04-23 Fujitsu Limited 検索装置および検索方法
JP2010182238A (ja) * 2009-02-09 2010-08-19 Nippon Telegr & Teleph Corp <Ntt> 引用検出装置、原典文書データベース生成装置、その方法、プログラム及び記録媒体
JP5071486B2 (ja) * 2008-01-22 2012-11-14 富士通株式会社 検索装置および検索方法
RU2789997C1 (ru) * 2022-04-21 2023-02-14 Федеральное государственное бюджетное образовательное учреждение высшего образования "Юго-Западный государственный университет" (ЮЗГУ) Способ и матричное устройство параллельно-конвейерного поиска по образцу

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007129577A1 (ja) * 2006-05-08 2007-11-15 The University Of Electro-Communications テキスト処理モジュール
WO2009050797A1 (ja) * 2007-10-17 2009-04-23 Fujitsu Limited 検索装置および検索方法
US8219538B2 (en) 2007-10-17 2012-07-10 Fujitsu Limited Search device and search method
JP5041003B2 (ja) * 2007-10-17 2012-10-03 富士通株式会社 検索装置および検索方法
JP5071486B2 (ja) * 2008-01-22 2012-11-14 富士通株式会社 検索装置および検索方法
JP2010182238A (ja) * 2009-02-09 2010-08-19 Nippon Telegr & Teleph Corp <Ntt> 引用検出装置、原典文書データベース生成装置、その方法、プログラム及び記録媒体
RU2789997C1 (ru) * 2022-04-21 2023-02-14 Федеральное государственное бюджетное образовательное учреждение высшего образования "Юго-Западный государственный университет" (ЮЗГУ) Способ и матричное устройство параллельно-конвейерного поиска по образцу

Also Published As

Publication number Publication date
JP4347086B2 (ja) 2009-10-21

Similar Documents

Publication Publication Date Title
JP4538449B2 (ja) 文字列検索の方法および設備
US7818303B2 (en) Web graph compression through scalable pattern mining
US7725510B2 (en) Method and system for multi-character multi-pattern pattern matching
JP6160259B2 (ja) 文字列探索方法、文字列探索装置および文字列探索プログラム
Egidi et al. External memory BWT and LCP computation for sequence collections with applications
US20140019486A1 (en) Logic Content Processing for Hardware Acceleration of Multi-Pattern Search
Vinga et al. Pattern matching through Chaos Game Representation: bridging numerical and discrete data structures for biological sequence analysis
JP4114600B2 (ja) 可変長文字列検索装置及び可変長文字列検索方法並びにプログラム
Rasool et al. String matching methodologies: A comparative analysis
CN105426412A (zh) 多模式的串匹配方法和装置
CN111831785A (zh) 敏感词检测方法、装置、计算机设备及存储介质
KR101662957B1 (ko) 해싱기반의 순위다중패턴매칭 방법
US9690873B2 (en) System and method for bit-map based keyword spotting in communication traffic
Janani et al. An efficient text pattern matching algorithm for retrieving information from desktop
JP4347087B2 (ja) パターンマッチング装置および方法ならびにプログラム
CN113076562A (zh) 基于gcm加密模式的数据库加密字段模糊检索方法
JP4347086B2 (ja) パターンマッチング装置および方法ならびにプログラム
Faro Evaluation and improvement of fast algorithms for exact matching on genome sequences
US7590624B2 (en) Process for identifying duplicate values in very large data sets
KR101881797B1 (ko) 멀티 패턴 정책 탐지 시스템 및 방법
JP5041003B2 (ja) 検索装置および検索方法
JP2008102641A (ja) 検索装置、検索方法及びプログラム
Moeini et al. Improved Rabin-Karp Algorithm Using Bloom Filter
Singh et al. ASCII based sequential multiple pattern matching algorithm for high level cloning
KR102271489B1 (ko) 정규표현식 패턴의 탐지를 위한 아호코라식 오토마타 구축 장치 및 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060407

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090414

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7426

Effective date: 20090605

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20090605

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20090605

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090615

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090714

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090715

R150 Certificate of patent or registration of utility model

Ref document number: 4347086

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120724

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130724

Year of fee payment: 4

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

EXPY Cancellation because of completion of term