(57)【要約】【課題】単語の分かち書きのない被検出文章から、複数のキーワードを検出する。【解決手段】キーワード検出装置の検出器１０は、順次送られてくる被検出文章の文字を１文字単位で格納する入力レジスタｄと、被検出文章の１文字とキーワードとの部分検出をする検出ブロック１０（１）〜１０（Ｌ）と、最上位段の検出ブロック１０（１）が部分検出をしたらキーワードを検出したとして値１が格納される検出レジスタｒとで構成されている。被検出文章の最初の１文字と複数のキーワードとの部分一致を順次検出した後、被検出文章の２番目の１文字と複数のキーワードとの部分一致を順次検出していく、という手法でキーワード検出をしていく。【選択図】図２
2016143301.tif 000002
【特許請求の範囲】
【請求項１】
被検出文章を文字ごとに分解して１文字単位で送り出す入力部と、前記入力部から送られてきた１文字ごとに複数のキーワードとの比較を行い前記キーワードの何れかに一致している場合にキーワードの検知を出力する検出器と、キーワード及びキーワードの開始位置が記憶されたキーワードメモリと状態メモリを有する記憶部と、前記検出器によりキーワードが検出されたときにどのキーワードが検知されたかを出力する出力部と、制御部とを備えたキーワードの検出装置であって、
前記検出器は、
前記入力部から順次送られてくる文字を１文字単位で格納する入力レジスタと、１ビットを格納できる検出レジスタと、キーワードとして想定される文字列の文字数に応じて予め決めた段数の検出ブロックからなり、
しかも、前記検出ブロックの最上位段から最下位段より１段上位の段の検出ブロックは、キーワードの１文字を格納できる文字レジスタと、キーワードの開始位置を示す１ビットを格納できる開始位置ビットレジスタと、前記入力レジスタに格納された文字と前記文字レジスタに格納された文字が一致している場合に値１を出力しそうでない場合に値０を出力する比較器と、状態レジスタと、前記開始位置ビットレジスタに格納された値が１であるときに値１を出力し前記開始位置ビットレジスタに格納された値が０であるときに前記状態レジスタに格納された値を出力するセレクタと、前記比較器の出力値と前記セレクタの出力値との論理積を出力するゲートにより構成されると共に、
前記検出ブロックの最下位段の検出ブロックは、キーワードの１文字を格納できる文字レジスタと、キーワードの開始位置を示す１ビットを格納できる開始位置ビットレジスタと、前記入力レジスタに格納された文字と最下位段の前記文字レジスタに格納された文字が一致している場合に値１を出力しそうでない場合に値０を出力する比較器と、最下位段の前記開始位置ビットレジスタに格納された値が１であるときに値１を出力し最下位段の前記開始位置ビットレジスタに格納された値が０であるときに値０を出力するセレクタと、最下位段の前記比較器の出力値と最下位段の前記セレクタの出力値との論理積を出力するゲートにより構成されており、
２段目から最下位段では前記ゲートの出力端子が１段上位の前記状態レジスタの入力端子に接続されており、最上位段では前記ゲートの出力端子が前記検出レジスタに接続されており、
前記制御部は、
初期状態として前記状態メモリ及び前記状態レジスタの全てを０にリセットし、
前記被検出文章の最初の１文字が前記入力レジスタに格納されたら、前記キーワードメモリに記憶されているキーワードを読み出して、このキーワードの語尾が最上位段の前記文字レジスタに格納される状態でキーワードの各語を前記各文字レジスタに１文字づつ格納すると共に、前記キーワードメモリに記憶されているキーワードの開始位置を読み出して、前記開始位置ビットレジスタのうちキーワードの開始位置に対応するものに値１を格納し、その後、クロックが供給されることにより前記検出ブロックでの動作が行われて各段の前記状態レジスタの値が更新されたら、更新された各段の状態レジスタの値を前記状態メモリに格納するという動作を、各キーワードについて順次行い、
前記被検出文章の２番目の１文字が前記入力レジスタに格納されたら、前記キーワードメモリに記憶されているキーワードを読み出して、このキーワードの語尾が最上位段の前記文字レジスタに格納される状態でキーワードの各語を前記各文字レジスタに１文字づつ格納すると共に、前記キーワードメモリに記憶されているキーワードの開始位置を読み出して、前記開始位置ビットレジスタのうちキーワードの開始位置に対応するものに値１を格納し、直前に格納された各段の状態レジスタの値を前記状態メモリから読み出して読み出した前記状態レジスタの値を各状態レジスタに格納し、その後、クロックが供給されることにより前記検出ブロックでの動作が行われて各段の前記状態レジスタの値が更新されたら、更新された各段の状態レジスタの値を前記状態メモリに格納するという動作を、各キーワードについて順次行い、
前記被検出文章の３番目以降の１文字が前記入力レジスタに格納されたときには、前記被検出文章の２番目の１文字が前記入力レジスタに格納されたときと同じ処理を繰り返し、
前記検出レジスタの値が１になったら、そのときのキーワードを前記出力部に伝える
ことを特徴とするキーワードの検出装置。
【請求項２】
請求項１において、前記記憶部は、前記キーワードメモリを備えた記憶部と、前記状態メモリを備えた記憶部に分割されていることを特徴とするキーワードの検出装置。
【請求項３】
請求項１において、前記検出器が複数備えられていることを特徴とするキーワードの検出装置。
【請求項４】
請求項１乃至請求項３のいずれか一項において、
前記記憶部は、データをブロック読み出しすることができる記憶装置であることを特徴とするキーワードの検出装置。
【請求項５】
被検出文章を文字ごとに分解して１文字単位で送り出す入力部と、前記入力部から送られてきた１文字ごとに複数のキーワードとの比較を行い前記キーワードの何れかに一致している場合にキーワードの検知を出力する検出器と、キーワード及びキーワードの開始位置が記憶されたキーワードメモリと状態メモリを有する記憶部と、前記検出器によりキーワードが検出されたときにどのキーワードが検知されたかを出力する出力部と、制御部とを備え、
前記検出器は、
前記入力部から順次送られてくる文字を１文字単位で格納する入力レジスタと、１ビットを格納できる検出レジスタと、キーワードとして想定される文字列の文字数に応じて予め決めた段数の検出ブロックからなり、
しかも、前記検出ブロックの最上位段から最下位段より１段上位の段の検出ブロックは、キーワードの１文字を格納できる文字レジスタと、キーワードの開始位置を示す１ビットを格納できる開始位置ビットレジスタと、前記入力レジスタに格納された文字と前記文字レジスタに格納された文字が一致している場合に値１を出力しそうでない場合に値０を出力する比較器と、状態レジスタと、前記開始位置ビットレジスタに格納された値が１であるときに値１を出力し前記開始位置ビットレジスタに格納された値が０であるときに前記状態レジスタに格納された値を出力するセレクタと、前記比較器の出力値と前記セレクタの出力値との論理積を出力するゲートにより構成されると共に、
前記検出ブロックの最下位段の検出ブロックは、キーワードの１文字を格納できる文字レジスタと、キーワードの開始位置を示す１ビットを格納できる開始位置ビットレジスタと、前記入力レジスタに格納された文字と最下位段の前記文字レジスタに格納された文字が一致している場合に値１を出力しそうでない場合に値０を出力する比較器と、最下位段の前記開始位置ビットレジスタに格納された値が１であるときに値１を出力し最下位段の前記開始位置ビットレジスタに格納された値が０であるときに値０を出力するセレクタと、最下位段の前記比較器の出力値と最下位段の前記セレクタの出力値との論理積を出力するゲートにより構成されており、
２段目から最下位段では前記ゲートの出力端子が１段上位の前記状態レジスタの入力端子に接続されており、最上位段では前記ゲートの出力端子が前記検出レジスタに接続されているキーワード検出装置を用いてキーワードを検出する方法であって、
初期状態として前記状態メモリ及び前記状態レジスタの全てを０にリセットし、
前記被検出文章の最初の１文字を前記入力レジスタに格納し、前記キーワードメモリに記憶されているキーワードを読み出して、このキーワードの語尾が最上位段の前記文字レジスタに格納される状態でキーワードの各語を前記各文字レジスタに１文字づつ格納すると共に、前記キーワードメモリに記憶されているキーワードの開始位置を読み出して、前記開始位置ビットレジスタのうちキーワードの開始位置に対応するものに値１を格納し、その後、クロックが供給されることにより前記検出ブロックでの動作が行われて各段の前記状態レジスタの値が更新されたら、更新された各段の状態レジスタの値を前記状態メモリに格納するという動作を、各キーワードについて順次行い、
前記被検出文章の２番目の１文字を前記入力レジスタに格納し、前記キーワードメモリに記憶されているキーワードを読み出して、このキーワードの語尾が最上位段の前記文字レジスタに格納される状態でキーワードの各語を前記各文字レジスタに１文字づつ格納すると共に、前記キーワードメモリに記憶されているキーワードの開始位置を読み出して、前記開始位置ビットレジスタのうちキーワードの開始位置に対応するものに値１を格納し、直前に格納された各段の状態レジスタの値を前記状態メモリから読み出して読み出した前記状態レジスタの値を各状態レジスタに格納し、その後、クロックが供給されることにより前記検出ブロックでの動作が行われて各段の前記状態レジスタの値が更新されたら、更新された各段の状態レジスタの値を前記状態メモリに格納するという動作を、各キーワードについて順次行い、
前記被検出文章の３番目以降の１文字を前記入力レジスタに格納したときには、前記被検出文章の２番目の１文字を前記入力レジスタに格納したときと同じ処理を繰り返し、
前記検出レジスタの値が１になったら、そのときのキーワードを前記出力部に伝えることを特徴とするキーワードの検出方法。
【請求項６】
請求項５において、
前記記憶部のキーワードメモリには、第１番目のキーワードの各文字とそのキーワードの開始位置を記憶し、次に第２番目のキーワードの各文字とそのキーワードの開始位置を記憶するという処理動作を、設定されたキーワードの数だけ行うことを特徴とするキーワードの検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の文字列（パタン、もしくは、キーワードなどと表現される）の検索検出をする、キーワードの検出装置および検出方法に関するものである。
特に、キーワードの集合（辞書）が大きく、かつ、検出処理の対象となる被検出文書が大量にあり、それらが継続的に供給されるために、短い時間、一定の処理速度を保証して、処理を行わなければならない場合に有効である。
特に、日本語等のように、単語の分かち書き（空白等の明示的な区切り記号）を持たない表記を被検出文書とする処理についても有効な手段を提供するものである。
【背景技術】
【０００２】
単語の分かち書きを持たない表記において、被検出文書に含まれる、あらかじめ辞書として与えられた複数の文字列（キーワード）の検索検出を行う従来の技術は、被検出文書を１文字単位でずらしながら、辞書内のすべてのキーワードのどれかと一致するかを検出するものである（非特許文献１および非特許文献２参照）。
【０００３】
どの従来技術も、少なくとも次の点において共通している。すなわち、被検出文書を１文字ずらしたことで新たに加わった１文字とキーワードとを比較するために、すべてのキーワードを格納した辞書から、
１：直前の文字が一致していた場合に次の文字となるものの候補文字のすべてと、
２：それらの文字のキーワードの中での位置と、
３：すべてのキーワードの先頭の文字を、比較器に設定すること、
あるいは、
すべてのキーワードを格納した辞書から、キーワードのハッシュ値（hash value）と、被検出文書の部分文字列のハッシュ値（hash value）を、比較器に設定することである。なお、部分文字列の文字数はキーワードの文字数と同じにしている。
【０００４】
これら従来技術においては、被検出文書の１文字ごとに実施する比較において、すべてのキーワードを格納した辞書から比較器へのキーワードの文字あるいはハッシュ値の転送が、毎回必要であった。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】フリー百科事典『ウィキペディア（Wikipedia）』、“エイホ-コラシック法”、［online］、2013年4月10日、［2014年11月11日検索］、インターネット＜URL:http://ja.wikipedia.org/wiki＞
【非特許文献２】フリー百科事典『ウィキペディア（Wikipedia）』、“ラビン-カープ文字列検索アルゴリズム”、［online］、2013年4月14日、［2014年11月11日検索］、インターネット＜URL:http://ja.wikipedia.org/wiki＞
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来技術において、被検出文書の１文字ごとに実施する、すべてのキーワードを格納した辞書から比較器へのキーワードの文字あるいはハッシュ値の設定においては、設定するキーワードの文字あるいはハッシュ値を、さまざまな工夫により事前に絞り込み、その転送回数を小さくすることが提案されてきた。
【０００７】
しかしながら、辞書に搭載するキーワード語数増大とともに辞書を格納する記憶装置の大容量化が必要となっている状況で、そうした大容量記憶装置の特性上、絞り込みの結果生じるランダムアクセスを行うと、むしろ性能損失が増大し、理論上の十分な性能を発揮することができなくなっていた。
【０００８】
すなわち、大容量記憶装置のアクセス性能として有利な周期的なブロック読み出し（配置として連続するアドレスの時間的にも連続した読出し）を用いて、システム性能を改善することが課題である。
【０００９】
従来技術の課題を更に分析すると、次のとおりである。
従来の技術では、キーワードを搭載した辞書を格納している大容量記憶装置の読み出しが、性能を制約していた。
【００１０】
従来の技術によるキーワード検出は、入力文字１つ（もしくは文字列から得るハッシュ１つ）に対して、次の手順を、辞書内のキーワードの文字数（もしくはキーワードの文字列数分）繰り返す。
１：キーワードの文字を読み出し。
２：（ハッシュを用いる場合には）ハッシュの計算。
３：比較。
４：比較結果に基づいて、次に読み出すキーワードの文字のための記憶装置のアドレスを計算。
【００１１】
このように、計算および操作にかならず前の計算を参照しているため、逐次的に行う必要があり、辞書を格納している大容量記憶装置からの読出しが時間的に連続しない。
また、計算されるアドレスの値は、入力文字に依存しているため、読出しの対象が配置としても連続していない。
【００１２】
一般に大容量記憶装置においては、ブロック読出し（連続している配置を時間的にも連続的に読み出す）により読出し性能を高くできる性質がある。
しかし、従来のキーワード検出のアルゴリズムでは、キーワードを格納している辞書からの読み出しの頻度を小さくするためのアルゴリズムを採用しているため、キーワードを格納している辞書の記憶装置が大容量記憶装置の性質（ブロック読出し性能）を持つ場合であっても、十分な読出し性能を発揮できず、そのため、処理全体の性能を律速してしまっていた（処理速度の向上が抑制されていた）。
【００１３】
本発明は、上記従来技術に鑑み、辞書を格納している大容量記憶装置からの読み出しを、周期的なブロック読み出しによって行う場合にも、読み出し速度に追従できる高速な比較検出を可能とする、キーワードの検出方法及び検出装置を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上記課題を解決する本発明のキーワードの検出装置は、
被検出文章を文字ごとに分解して１文字単位で送り出す入力部と、前記入力部から送られてきた１文字ごとに複数のキーワードとの比較を行い前記キーワードの何れかに一致している場合にキーワードの検知を出力する検出器と、キーワード及びキーワードの開始位置が記憶されたキーワードメモリと状態メモリを有する記憶部と、前記検出器によりキーワードが検出されたときにどのキーワードが検知されたかを出力する出力部と、制御部とを備えたキーワードの検出装置であって、
前記検出器は、
前記入力部から順次送られてくる文字を１文字単位で格納する入力レジスタと、１ビットを格納できる検出レジスタと、キーワードとして想定される文字列の文字数に応じて予め決めた段数の検出ブロックからなり、
しかも、前記検出ブロックの最上位段から最下位段より１段上位の段の検出ブロックは、キーワードの１文字を格納できる文字レジスタと、キーワードの開始位置を示す１ビットを格納できる開始位置ビットレジスタと、前記入力レジスタに格納された文字と前記文字レジスタに格納された文字が一致している場合に値１を出力しそうでない場合に値０を出力する比較器と、状態レジスタと、前記開始位置ビットレジスタに格納された値が１であるときに値１を出力し前記開始位置ビットレジスタに格納された値が０であるときに前記状態レジスタに格納された値を出力するセレクタと、前記比較器の出力値と前記セレクタの出力値との論理積を出力するゲートにより構成されると共に、
前記検出ブロックの最下位段の検出ブロックは、キーワードの１文字を格納できる文字レジスタと、キーワードの開始位置を示す１ビットを格納できる開始位置ビットレジスタと、前記入力レジスタに格納された文字と最下位段の前記文字レジスタに格納された文字が一致している場合に値１を出力しそうでない場合に値０を出力する比較器と、最下位段の前記開始位置ビットレジスタに格納された値が１であるときに値１を出力し最下位段の前記開始位置ビットレジスタに格納された値が０であるときに値０を出力するセレクタと、最下位段の前記比較器の出力値と最下位段の前記セレクタの出力値との論理積を出力するゲートにより構成されており、
２段目から最下位段では前記ゲートの出力端子が１段上位の前記状態レジスタの入力端子に接続されており、最上位段では前記ゲートの出力端子が前記検出レジスタに接続されており、
前記制御部は、
初期状態として前記状態メモリ及び前記状態レジスタの全てを０にリセットし、
前記被検出文章の最初の１文字が前記入力レジスタに格納されたら、前記キーワードメモリに記憶されているキーワードを読み出して、このキーワードの語尾が最上位段の前記文字レジスタに格納される状態でキーワードの各語を前記各文字レジスタに１文字づつ格納すると共に、前記キーワードメモリに記憶されているキーワードの開始位置を読み出して、前記開始位置ビットレジスタのうちキーワードの開始位置に対応するものに値１を格納し、その後、クロックが供給されることにより前記検出ブロックでの動作が行われて各段の前記状態レジスタの値が更新されたら、更新された各段の状態レジスタの値を前記状態メモリに格納するという動作を、各キーワードについて順次行い、
前記被検出文章の２番目の１文字が前記入力レジスタに格納されたら、前記キーワードメモリに記憶されているキーワードを読み出して、このキーワードの語尾が最上位段の前記文字レジスタに格納される状態でキーワードの各語を前記各文字レジスタに１文字づつ格納すると共に、前記キーワードメモリに記憶されているキーワードの開始位置を読み出して、前記開始位置ビットレジスタのうちキーワードの開始位置に対応するものに値１を格納し、直前に格納された各段の状態レジスタの値を前記状態メモリから読み出して読み出した前記状態レジスタの値を各状態レジスタに格納し、その後、クロックが供給されることにより前記検出ブロックでの動作が行われて各段の前記状態レジスタの値が更新されたら、更新された各段の状態レジスタの値を前記状態メモリに格納するという動作を、各キーワードについて順次行い、
前記被検出文章の３番目以降の１文字が前記入力レジスタに格納されたときには、前記被検出文章の２番目の１文字が前記入力レジスタに格納されたときと同じ処理を繰り返し、
前記検出レジスタの値が１になったら、そのときのキーワードを前記出力部に伝えることを特徴とする。
【００１５】
また本発明のキーワードの検出装置は、
前記記憶部は、前記キーワードメモリを備えた記憶部と、前記状態メモリを備えた記憶部に分割されていること、
または、前記検出器が複数備えられていること、
または、前記記憶部は、データをブロック読み出しすることができる記憶装置であることを特徴とする。
【００１６】
また本発明のキーワードの検出方法は、
被検出文章を文字ごとに分解して１文字単位で送り出す入力部と、前記入力部から送られてきた１文字ごとに複数のキーワードとの比較を行い前記キーワードの何れかに一致している場合にキーワードの検知を出力する検出器と、キーワード及びキーワードの開始位置が記憶されたキーワードメモリと状態メモリを有する記憶部と、前記検出器によりキーワードが検出されたときにどのキーワードが検知されたかを出力する出力部と、制御部とを備え、
前記検出器は、
前記入力部から順次送られてくる文字を１文字単位で格納する入力レジスタと、１ビットを格納できる検出レジスタと、キーワードとして想定される文字列の文字数に応じて予め決めた段数の検出ブロックからなり、
しかも、前記検出ブロックの最上位段から最下位段より１段上位の段の検出ブロックは、キーワードの１文字を格納できる文字レジスタと、キーワードの開始位置を示す１ビットを格納できる開始位置ビットレジスタと、前記入力レジスタに格納された文字と前記文字レジスタに格納された文字が一致している場合に値１を出力しそうでない場合に値０を出力する比較器と、状態レジスタと、前記開始位置ビットレジスタに格納された値が１であるときに値１を出力し前記開始位置ビットレジスタに格納された値が０であるときに前記状態レジスタに格納された値を出力するセレクタと、前記比較器の出力値と前記セレクタの出力値との論理積を出力するゲートにより構成されると共に、
前記検出ブロックの最下位段の検出ブロックは、キーワードの１文字を格納できる文字レジスタと、キーワードの開始位置を示す１ビットを格納できる開始位置ビットレジスタと、前記入力レジスタに格納された文字と最下位段の前記文字レジスタに格納された文字が一致している場合に値１を出力しそうでない場合に値０を出力する比較器と、最下位段の前記開始位置ビットレジスタに格納された値が１であるときに値１を出力し最下位段の前記開始位置ビットレジスタに格納された値が０であるときに値０を出力するセレクタと、最下位段の前記比較器の出力値と最下位段の前記セレクタの出力値との論理積を出力するゲートにより構成されており、
２段目から最下位段では前記ゲートの出力端子が１段上位の前記状態レジスタの入力端子に接続されており、最上位段では前記ゲートの出力端子が前記検出レジスタに接続されているキーワード検出装置を用いてキーワードを検出する方法であって、
初期状態として前記状態メモリ及び前記状態レジスタの全てを０にリセットし、
前記被検出文章の最初の１文字を前記入力レジスタに格納し、前記キーワードメモリに記憶されているキーワードを読み出して、このキーワードの語尾が最上位段の前記文字レジスタに格納される状態でキーワードの各語を前記各文字レジスタに１文字づつ格納すると共に、前記キーワードメモリに記憶されているキーワードの開始位置を読み出して、前記開始位置ビットレジスタのうちキーワードの開始位置に対応するものに値１を格納し、その後、クロックが供給されることにより前記検出ブロックでの動作が行われて各段の前記状態レジスタの値が更新されたら、更新された各段の状態レジスタの値を前記状態メモリに格納するという動作を、各キーワードについて順次行い、
前記被検出文章の２番目の１文字を前記入力レジスタに格納し、前記キーワードメモリに記憶されているキーワードを読み出して、このキーワードの語尾が最上位段の前記文字レジスタに格納される状態でキーワードの各語を前記各文字レジスタに１文字づつ格納すると共に、前記キーワードメモリに記憶されているキーワードの開始位置を読み出して、前記開始位置ビットレジスタのうちキーワードの開始位置に対応するものに値１を格納し、直前に格納された各段の状態レジスタの値を前記状態メモリから読み出して読み出した前記状態レジスタの値を各状態レジスタに格納し、その後、クロックが供給されることにより前記検出ブロックでの動作が行われて各段の前記状態レジスタの値が更新されたら、更新された各段の状態レジスタの値を前記状態メモリに格納するという動作を、各キーワードについて順次行い、
前記被検出文章の３番目以降の１文字を前記入力レジスタに格納したときには、前記被検出文章の２番目の１文字を前記入力レジスタに格納したときと同じ処理を繰り返し、
前記検出レジスタの値が１になったら、そのときのキーワードを前記出力部に伝えることを特徴とする。
【００１７】
また本発明のキーワードの検出方法は、
前記記憶部のキーワードメモリには、第１番目のキーワードの各文字とそのキーワードの開始位置を記憶し、次に第２番目のキーワードの各文字とそのキーワードの開始位置を記憶するという処理動作を、設定されたキーワードの回数だけ行うことを特徴とする。
【発明の効果】
【００１８】
本発明によれば、辞書を格納している大容量記憶装置からの読み出しを周期的なブロック読み出しによって行う場合にも、読み出し速度に追従できる高速な検出器を構成することが可能である。
また、キーワードを格納する辞書の大容量化に伴い、大容量化する記憶装置の特性を損失することなく利用することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施例１に係るキーワードの検出装置を示す構成図。
【図２】検出器を示す構成図。
【図３】記憶部を示す構成図。
【図４Ａ】キーワードの格納処理を示すフローチャート。
【図４Ｂ】キーワードの検出処理を示すフローチャート。
【図５】本発明の実施例２に係るキーワードの検出装置を示す構成図。
【図６】本発明の実施例３に係るキーワードの検出装置を示す構成図。
【発明を実施するための形態】
【００２０】
以下、本発明に係るキーワードの検出装置および検出方法を、実施例に基づき詳細に説明する。
なお、以下の説明では、同一の素子が複数ある場合において、同一の複数の素子を互いに区別するときには素子符号に添え字を付して示し（例えば、c1〜cL）、同一の各素子を互いに区別しないときには素子符号に添え字を付さないで示す（例えば、c）。
【００２１】
［実施例１］
図１は本発明の実施例１に係るキーワード検出装置１を示す全体概略図である。このキーワード検出装置１は、検出器１０と、記憶部２０と、入力部３０と、出力部４０と、制御部５０を備えている。
検出器１０の詳細構成については図２を参照して説明し、記憶部２０の詳細構成については図３を参照して説明する。
【００２２】
図２に検出器１０の構成を示す。
検出器１０の入力レジスタｄは１文字を格納できる容量のレジスタである。これには、被検出文書であるところの入力文の１文字を格納する。
【００２３】
キーワードの各文字レジスタｃ（ｃ1〜ｃL）は、それぞれが１文字を格納できる容量のレジスタを、キーワードとして想定される文字列の文字数（これをＬとする）に足るよう、繰り返した配列の構成になっている。
キーワードの各文字レジスタｃには、検出すべきキーワードを構成する文字を１文字づつ右寄せで格納する。つまりキーワードの語尾が最上位段の文字レジスタｃ1に格納される状態で、キーワードの各語を語尾から語頭に向かう順で、各文字レジスタｃに１文字づつ格納する。例えばキーワードが「あした」である場合には、「た」が文字レジスタｃ1に、「し」が文字レジスタｃ2に、「あ」が文字レジスタｃ3に格納される。
【００２４】
比較器ｅ（ｅ1〜ｅL）は、入力レジスタｄに格納された文字とレジスタｃに格納された文字を比較して、一致している場合には、値１を出力する。この比較器ｅ（ｅ1〜ｅL）は、キーワードとして想定される文字列の文字数分繰り返した配列の構成になっている。
【００２５】
レジスタゲートＲ（Ｒ1〜ＲL）は、文字単位での一致状態を格納する各1bitの状態レジスタｍ（ｍ1〜ｍL-1）と、状態レジスタｍの値もしくは、値１を選択するセレクタｇ（ｇ1〜ｇL）と、比較器ｅの出力とセレクタｇの出力の論理積を出力するゲートＡ（Ａ1〜ＡL）有しており、セレクタｇ及びゲートＡを、キーワードとして想定される文字列の文字数分繰り返し、状態レジスタｍを、キーワードとして想定される文字列の文字数から１減じた数を繰り返した配列である。
【００２６】
キーワードの開始位置ビットレジスタｂ（ｂ1〜ｂL）は、それぞれが１bitを格納できる容量のレジスタを、キーワードとして想定される文字列の文字数分繰り返した配列である。
これには、文字レジスタｃに格納されている文字の対応する位置が、キーワードの開始位置である場合に、値１を格納する。
そうでない場合、すなわち、キーワードの開始位置よりも後の場合、もしくは、キーワードに該当する文字がない位置の場合には、値０を格納する。
例えばキーワードが「あした」であるため、「た」が文字レジスタｃ1に、「し」が文字レジスタｃ2に、「あ」が文字レジスタｃ3に格納された場合には、キーワード「あした」の開始位置となっている文字レジスタｃ3に対応する、開始位置ビットレジスタｂ3に値１が格納される。そして、他の開始位置ビットレジスタｂ1、ｂ2、ｂ4〜ｂLには値０が格納される。
【００２７】
検出レジスタｒは１ビットを格納できるレジスタである。この検出レジスタｒに１が格納されるのは、キーワードの一致を検出したときだけである。つまり、キーワードの一致を検出したときには、検出レジスタｒには、必ず１が格納される。
【００２８】
ここで検出器１０の構成を機能ブロックに分けて更に詳述する。
検出器１０は、１つの入力レジスタｄと、１つの検出レジスタｒと、Ｌ個の検出ブロック１０（１）〜１０（Ｌ）により構成されている。
【００２９】
まず１段目（最上位段）の検出ブロック１０（１）について説明する。
１段目の検出ブロック１０（１）は、文字レジスタｃ1と、比較器ｅ1と、キーワードの開始位置ビットレジスタｂ1と、レジスタゲートＲ1により構成されている。
レジスタゲートＲ1は、状態レジスタｍ1と、セレクタｇ1と、論理積演算をするゲートＡ1により構成されている。
【００３０】
状態レジスタｍ1には、１段下位のレジスタゲートＲ2のゲートＡ2から送られる値（値１、または、値０）が、クロック供給のタイミングで格納される。
【００３１】
比較器ｅ1は、入力レジスタｄに格納された文字と文字レジスタｃ1に格納された文字が一致している場合に、値１をゲートＡ1に送り、入力レジスタｄに格納された文字と文字レジスタｃ1に格納された文字が一致していない場合に、値０をゲートＡ1に送る。
【００３２】
セレクタｇ1では、その第１の入力端子αに値１が入力され、その第２の入力端子βに状態レジスタｍ1に格納された値（値１、または、値０）が入力される。
このセレクタｇ1には、開始位置ビットレジスタｂ1に格納された値（値１、または、値０）がセレクタ信号として入力される。セレクタｇ1は、開始位置ビットレジスタｂ1に格納された値が１である場合には、入力端子αの値である値１をゲートＡ1に送り、開始位置ビットレジスタｂ1に格納された値が０である場合には、入力端子βの値（状態レジスタｍ1に格納された値）をゲートＡ1に送るというセレクト動作をする。
【００３３】
ゲートＡ1は、比較器ｅ1から送られる値と、セレクタｇ1から送られる値を論理積演算し、演算結果（値１、または、値０）を、検出レジスタｒに送る。
【００３４】
２段目からＬ−１段目の検出ブロック１０（２）〜１０（Ｌ−１）の構成は、１段目の検出ブロック１０（１）と同様な構成となっている。
【００３５】
Ｌ段目（最下位段）の検出ブロック１０（Ｌ）では、レジスタゲートＲLの構成が、１段目からＬ−１段目の検出ブロック１０（１）〜１０（Ｌ−１）のレジスタゲートＲ1〜ＲL-1の構成とは異なっている。
Ｌ段目の検出ブロック１０（Ｌ）のレジスタゲートＲLは、状態レジスタを有していない。そして、セレクタｇLでは、その入力端子αに値１が入力され、入力端子βに値０が入力されている。
文字レジスタｃLと開始位置ビットレジスタｂLと比較器eLは、他の段のものと同様である。
【００３６】
１段目の検出ブロック１０（１）のゲートＡ1の出力端子は、検出レジスタｒに接続されている。
２段目からＬ段目の検出ブロック１０（２）〜１０（Ｌ）のゲートＡの出力端子は、１段上位の状態レジスタｍの入力端子に、論理積演算した結果（値１、または、値０）を送るように接続がされている。
例えば、ゲートＡ2の出力端子は、１段上位の状態レジスタｍ1の入力端子に接続され、ゲートＡ3の出力端子は、１段上位の状態レジスタｍ2の入力端子に接続され、ゲートＡLの出力端子は、１つ上位段の状態レジスタｍL-1の入力端子に接続されている。
【００３７】
入力レジスタｄは、全ての比較器ｃ1〜ｃLに、被検出文章の中の１文字を送る。
【００３８】
１段目（最上位段）からＬ段目（最下位段）のレジスタゲートＲ1〜ＲLが直列接続されることにより、レジスタゲートチェーンが形成されている。
【００３９】
１段目（最上位段）からＬ−１段目のレジスタゲートＲ1〜ＲL-1は、
・  １段下位のゲートＡから送られる値を、クロック供給のタイミングで当該段の状態レジスタｍに格納し、
・  当該段の開始位置ビットレジスタｂの値が１であるときには、値１をセレクタｇから出力し、当該段の開始位置ビットレジスタｂの値が０であるときには、当該段の状態レジスタｍに格納した値をセレクタｇから出力し、
・  当該段のゲートＡは、当該段のセレクタｇから送られる値と、当該段の比較器ｅから送られる値を論理積演算した値を出力する。
【００４０】
Ｌ段目（最下位段）のレジスタゲートＲLは、
・  開始位置ビットレジスタｂLの値が１であるときには、値１をセレクタｇLから出力し、開始位置ビットレジスタｂLの値が０であるときには、値０をセレクタｇLから出力し、
・  ゲートＡLは、セレクタｇLから送られる値と、比較器ｅLから送られる値を論理積演算した値を出力する。
【００４１】
また、１段目からＬ段目の、比較器e1〜eLと、文字レジスタc1〜cLにより、文字比較ユニットが形成されている。
【００４２】
図３に記憶部２０の構造を示す。
記憶部２０の状態メモリＭは、検出器１０の状態レジスタｍの値の配列を格納し、更新および読み出すための記憶装置である。読み出しおよび書き込みには、記憶部２０のアドレスレジスタｐの値をアドレスとして与える。
状態メモリＭは、状態レジスタｍの値の配列を、少なくともキーワードの個数に相当する組数格納する容量を備える。
【００４３】
本例では、状態メモリＭとして大容量記憶装置を採用しており、高速なブロック読出しができる。つまり、状態メモリＭ（大容量記憶装置）は、メインメモリとバッファメモリを有しており、例えば、メインメモリのアドレスナンバーｐ１〜ｐ３のデータを取り出そうとした場合には、アドレスナンバーｐ１〜ｐ３に対して配置的に連続するアドレスナンバーｐ４〜ｐ１０のデータも同時に取り出して（ブロック読出しをして）、バッファメモリに格納（記憶）することができる。なお、ここでは理解を容易にするため、アドレスナンバーｐ１〜ｐ３やアドレスナンバーｐ４〜ｐ１０を用いているが、実際の大容量記憶装置では、一回のブロック読出しのアドレス範囲は、その装置に応じた大きなものとなる。
なお、本例では状態メモリＭとして大容量記憶装置を採用しているが、ブロック読出しができない記憶装置を用いることもできる。
【００４４】
記憶部２０のキーワードメモリＣは、検出器１０の文字レジスタｃ値の配列、および、開始位置ビットレジスタｂの値の配列をあらかじめ格納し、読み出すための記憶装置である。読み出しには、記憶部２０のアドレスレジスタｐの値をアドレスとして与える。
キーワードメモリＣは、検出器１０の文字レジスタｃの値の配列、および、開始位置ビットレジスタｂの値の配列を少なくともキーワードの個数に相当する組数格納する容量を備える。
【００４５】
本例では、キーワードメモリＣとして大容量記憶装置を採用しており、高速なブロック読出しができる。つまり、キーワードメモリＣ（大容量記憶装置）は、メインメモリとバッファメモリを有しており、例えば、メインメモリのアドレスナンバーｐ１〜ｐ３のデータを取り出そうとした場合には、アドレスナンバーｐ１〜ｐ３に対して配置的に連続するアドレスナンバーｐ４〜ｐ１０のデータも同時に取り出して（ブロック読出しをして）、バッファメモリに格納（記憶）することができる。なお、ここでは理解を容易にするため、アドレスナンバーｐ１〜ｐ３やアドレスナンバーｐ４〜ｐ１０を用いているが、実際の大容量記憶装置では、一回のブロック読出しのアドレス範囲は、その装置に応じた大きなものとなる。
なお、本例ではキーワードメモリＣとして大容量記憶装置を採用しているが、ブロック読出しができない記憶装置を用いることもできる。
【００４６】
図１に戻り、キーワード検出装置１の全体的なシステム構成を説明する。
入力部３０は、被検出文書を文字ごとに分解し、１文字単位で出力して検出器１０に与える。
【００４７】
検出器１０は、与えられた１文字について、キーワードの各文字との比較を行い、ある文字までに与えられた文字の列が、キーワードに一致していた場合に、検出レジスタｒによってキーワードの検出を通知する。
【００４８】
制御部５０は、その通知によって、検出器１０の検出レジスタｒの値すなわち１を出力部４０に伝えるとともに、同じくその通知によって、記憶部２０のアドレスレジスタｐのアドレスナンバーを出力部４０に伝える。すなわちアドレスレジスタｐのアドレスナンバーによってどのキーワードであるかを通知する。
【００４９】
記憶部２０は、検出器１０の検査の状態を、キーワードごとに維持管理するとともに、キーワードそのものと、キーワードの開始位置を示すビット情報を保持し、読み出しによりこれらを検出器１０に提供する。
【００５０】
出力部４０は、検出器１０から受け取る検出レジスタｒの値が１であると、記憶部２０から受け取るアドレスレジスタｐのアドレスナンバーを外部に表示することによって、どのキーワードが検出されたかを外部に通知する。
【００５１】
制御部５０は、以上の各部の動作を制御する手順を保持、実行する。そのフローチャートについては後述する。
また、制御部５０は、記憶部２０のキーワードメモリＣへの文字レジスタｃの値や開始位置ビットレジスタｂの値の書き込みなど装置の初期化と運転の手順についても保持、実行する。
【００５２】
図４Ａ及び図４Ｂに本発明の動作をフローチャートとして示す。
【００５３】
図４Ａに示すように、キーワードメモリＣは、アドレスナンバーをｐ１として、キーワード１の各文字とキーワード１の開始位置を、メインメモリからバッファメモリに取り込む（ステップ１〜ステップ３）。
次にアドレスナンバーを１つ増加し、キーワードメモリＣは、アドレスナンバーをｐ２として、キーワード２の各文字とキーワード２の開始位置を、メインメモリからバッファメモリに取り込む（ステップ２〜ステップ３）。
次にアドレスナンバーを１つ増加し、キーワードメモリＣは、アドレスナンバーをｐ３として、キーワード３の各文字とキーワード３の開始位置を、メインメモリからバッファメモリに取り込む（ステップ２〜ステップ３）。
アドレスナンバーの数が、予め設定したキーワードの数Ｋ（この例では３）を越えたら（ステップ３）、キーワードメモリＣは、メインメモリからバッファメモリへのキーワードデータの取り込みを終了する。なお、メインメモリからバッファメモリへのキーワードデータの取り込みは、ブロック読み込みにより行われる。
【００５４】
次に、キーワードメモリＣは、そのバッファメモリに取り込んでいるｐ番目のキーワードの各文字を、文字レジスタｃ1〜ｃLに書き込むと共に、開始位置ビットレジスタｂ1〜ｂLのうちキーワードの開始位置に対応する１つの開始位置ビットレジスタｂのみに値１を書き込む。ここで、キーワードの各文字の文字コードについては、被検出文書の文字コードと同一のものである。
【００５５】
ここでは、例として、次の３つのキーワードを書き込んだとする。
（キーワード１）あした
（キーワード２）あす
（キーワード３）した
【００５６】
なお、キーワード１は、キーワードメモリＣのメインメモリのアドレスナンバーｐ１に記憶されていたものがバッファメモリに取り込まれており、キーワード２は、キーワードメモリＣのメインメモリのアドレスナンバーｐ２に記憶されていたものがバッファメモリに取り込まれており、キーワード３は、キーワードメモリＣのメインメモリのアドレスナンバーｐ３に記憶されていたものがバッファメモリに取り込まれている。
【００５７】
次に図４Ｂに示す文字比較処理を具体的に説明する。なお図４Ｂにおいて、ｊは文字のカウント、ｗは被検出文章の文字数である。
被検出文書ｓが入力部３０に与えられる。またこのとき、初期化として、状態メモリＭおよび状態レジスタｍ の全ビットを０にリセットする（ステップ１１）。
さらに、アドレスレジスタｐはキーワード１の格納アドレスを示すよう例えば値１に初期化する（ステップ１２）。
【００５８】
キーワード検出装置１の入力となる被検出文書ｓとしては次のものが与えられたとする。
（被検出文書）あしたの天気は雨でしょう。
【００５９】
キーワード検出装置１は、文書の第３文字目で、キーワード１、および、キーワード３を検出する。以下にその働きを示す。
【００６０】
入力部３０が、被検出文書を文字に分解し、被検出文書の第一文字であるｓ(1)=『あ』が検出器１０の入力レジスタｄに到来する（ステップ１２）。
【００６１】
制御部５０は、記憶部２０からアドレスレジスタｐ（（キーワード１）「あした」）による読出しを行うことで、検出器１０の各レジスタｂ,ｍ,ｃにつぎのような値を与える。なお*は任意の文字である。
【００６２】
b : 0 . . . 0 1 0 0
m : 0 . . . 0 0 0 0
c : * . . . . あした
【００６３】
入力レジスタｄの値は『あ』であるため、文字の一致（ｃ3の値「あ」とｄの値「あ」が一致）がある。つまり部分一致が検出された。
そこで、検出器１０の各レジスタｂ,ｍ,ｃにクロックが１つ供給されると、状態レジスタｍの値が更新され、状態レジスタｍ2の値が０から１になり、以下のようになる。
【００６４】
b : 0 . . . 0 1 0 0
m : 0 . . . 0 0 1 0→r:0
c : * . . . . あした
【００６５】
制御部５０は、キーワード１と被検出文章の第一文字目との比較処理をした後、クロック供給により更新された状態レジスタｍの値
m : 0 . . . 0 0 1 0→r:0
を状態メモリＭのバッファメモリに格納する（ステップ１３，１４）。
【００６６】
制御部５０は、アドレスレジスタｐを次のキーワード（（キーワード２）「あす」）を指し示すようにインクリメントし（ステップ１７，１８）、その結果読み出される値として、検出器１０の各レジスタｂ,ｍ,ｃにつぎのような値を与える。
【００６７】
b : 0 . . . 0 0 1 0
m : 0 . . . 0 0 0 0
c : * . . . . . あす
【００６８】
入力レジスタｄの値は、まだ『あ』であるため、文字の一致がある。つまり部分一致が検出された。
そこで、検出器１０のレジスタにクロックが１つ供給されると、状態レジスタｍの値が更新され、以下のようになる（ステップ１３，１４）。
【００６９】
b : 0 . . . 0 0 1 0
m : 0 . . . 0 0 0 1→r:0
c : * . . . . . あす
【００７０】
制御部５０は、キーワード２と被検出文章の第一文字目との比較処理をした後、クロック供給により更新された状態レジスタｍの値
m : 0 . . . 0 0 0 1→r:0
を状態メモリＭのバッファメモリに格納する。
【００７１】
制御部５０は、アドレスレジスタｐを次のキーワード（（キーワード３）「した」）を指し示すようにインクリメントし（ステップ１７，１８）、その結果読み出される値として、検出器１０の各レジスタｂ,ｍ,ｃにつぎのような値を与える。
【００７２】
b : 0 . . . 0 0 1 0
m : 0 . . . 0 0 0 0
c : * . . . . . した
【００７３】
入力レジスタｄの値はここでも『あ』であるため、文字の一致はない。
そこで、検出器１０のレジスタにクロックが１つ供給されると、状態レジスタｍの値が更新されても０のままであり、以下のようになる（ステップ１３，１４）。
【００７４】
b : 0 . . . 0 0 1 0
m : 0 . . . 0 0 0 0→r:0
c : * . . . . . した
【００７５】
制御部５０は、キーワード３と被検出文章の第一文字目との比較処理をした後、クロック供給により更新された状態レジスタｍの値
m : 0 . . . 0 0 0 0→r:0
を状態メモリＭのバッファメモリに格納する。
【００７６】
制御部５０は、アドレスレジスタｐを次のキーワードを指し示すようにインクリメントし、以上で、アドレスレジスタｐの値によって、すべてのキーワードを一巡したことがわかり、ふたたびアドレスレジスタｐの値を初期化する（ステップ１７，１８，１９、ステップ２０→ステップ１２）。
【００７７】
また、さらに、入力部３０から、被検出文章の次の１文字『し』を入力レジスタｄに格納する（ステップ１２）。そして、すべてのキーワードに対して先ほどの１文字『あ』と同様に制御する。結果、それぞれのキーワードについて更新された状態は以下の通りとなる。
【００７８】
キーワード１と被検出文章の第一文字目との比較処理をした後クロック供給により更新された状態レジスタｍの直前の値を状態メモリＭから読出し、読み出した状態メモリｍの値を各状態メモリに格納し、キーワード１と被検出文章の第二文字目との比較処理をした後、クロック供給により更新された状態は次のとおりである（ステップ１３，１４）。
b : 0 . . . 0 1 0 0
m : 0 . . . 0 0 0 1→r:0
c : * . . . . あした
このとき、制御部５０は、キーワード１と被検出文章の第二文字目との比較処理をした後、クロック供給により更新された状態レジスタｍの値を状態メモリＭのバッファメモリに格納する。
【００７９】
キーワード２と被検出文章の第一文字目との比較処理をした後クロック供給により更新された状態レジスタｍの直前の値を状態メモリＭから読出し、読み出した状態メモリｍの値を各状態メモリに格納し（ステップ１７，１８）、キーワード２と被検出文章の第二文字目との比較処理をした後、クロック供給により更新された状態は次のとおりである（ステップ１３，１４）。
b : 0 . . . 0 0 1 0
m : 0 . . . 0 0 0 0→r:0
c : * . . . . . あす
このとき、制御部５０は、キーワード２と被検出文章の第二文字目との比較処理をした後、クロック供給により更新された状態レジスタｍの値を状態メモリＭのバッファメモリに格納する。
【００８０】
キーワード３と被検出文章の第一文字目との比較処理をした後クロック供給により更新された状態レジスタｍの直前の値を状態メモリＭから読出し、読み出した状態メモリｍの値を各状態メモリに格納し（ステップ１７，１８）、キーワード３と被検出文章の第二文字目との比較処理をした後、クロック供給により更新された状態は次のとおりである（ステップ１３，１４）。
b : 0 . . . 0 0 1 0
m : 0 . . . 0 0 0 1→r:0
c : * . . . . . した
このとき、制御部５０は、キーワード３と被検出文章の第二文字目との比較処理をした後、クロック供給により更新された状態レジスタｍの値を状態メモリＭのバッファメモリに格納する。
【００８１】
キーワードが一巡したことにより、アドレスレジスタｐの値を初期化すると同時に、入力部３０から、被検出文章の次の１文字『た』を入力レジスタｄに格納する（ステップ１９，２０）。
そして、すべてのキーワードに対してさきほどの２文字目と同様に制御する。結果、それぞれのキーワードについて更新された状態は以下の通りとなる。
【００８２】
キーワード１と被検出文章の第二文字目との比較処理をした後クロック供給により更新された状態レジスタｍの直前の値を状態メモリＭから読出し、読み出した状態メモリｍの値を各状態メモリに格納し、キーワード１と被検出文章の第三文字目との比較処理をした後、クロック供給により更新された状態は次のとおりである。
b : 0 . . . 0 1 0 0
m : 0 . . . 0 0 0 0→r:1
c : * . . . . あした
このとき、制御部５０は、キーワード１と被検出文章の第三文字目との比較処理をした後、クロック供給により更新された状態レジスタｍの値を状態メモリＭのバッファメモリに格納する。
【００８３】
キーワード２と被検出文章の第二文字目との比較処理をした後クロック供給により更新された状態レジスタｍの直前の値を状態メモリＭから読出し、読み出した状態メモリｍの値を各状態メモリに格納し、キーワード２と被検出文章の第三文字目との比較処理をした後、クロック供給により更新された状態は次のとおりである。
b : 0 . . . 0 0 1 0
m : 0 . . . 0 0 0 0→r:0
c : * . . . . . あす
このとき、制御部５０は、キーワード２と被検出文章の第三文字目との比較処理をした後、クロック供給により更新された状態レジスタｍの値を状態メモリＭのバッファメモリに格納する。
【００８４】
キーワード３と被検出文章の第二文字目との比較処理をした後クロック供給により更新された状態レジスタｍの直前の値を状態メモリＭから読出し、読み出した状態メモリｍの値を各状態メモリに格納し、キーワード３と被検出文章の第三文字目との比較処理をした後、クロック供給により更新された状態は次のとおりである。
b : 0 . . . 0 0 1 0
m : 0 . . . 0 0 0 0→r:1
c : * . . . . . した
このとき、制御部５０は、キーワード３と被検出文章の第三文字目との比較処理をした後、クロック供給により更新された状態レジスタｍの値を状態メモリＭのバッファメモリに格納する。
【００８５】
このようにして、被検出文書の３文字目において、キーワード１とキーワード３を検出した（ステップ１５，１６）。
【００８６】
さて、ここで、記憶部２０における、状態メモリＭと検出器１０の状態レジスタｍ、また、キーワードメモリＣと 検出器１０の文字レジスタｃおよび開始位置ビットレジスタ ｂ、の間で生じる遅延は、アドレスレジスタｐによって与えられるアドレスからの読み出しのみでありキーワード検出装置１の中でも遅延の小さい部分になる。
そして、検出器１０における、レジスタｃ,ｄあるいはレジスタｂ,ｍから各段のセレクタｆの出力にある状態レジスタｍの間で生じる遅延も、論理深度が非常に浅いため、同様に小さい。
そのため、採用する論理素子が与える最大性能を容易に達成することができる。
【００８７】
また、アドレスレジスタｐの値、すなわちアドレスの変化は周期的である。そのため、状態メモリｍおよびキーワードメモリＣとして大容量メモリを採用した場合においても、ブロック読み出しが高速であるという当該部品の性能を損失なく利用することが可能となる。
【００８８】
以上によって、辞書を格納している大容量記憶装置からの読み出しを周期的なブロック読み出しによって行う場合にも、読み出し速度に追従できる高速な比較検出器を構成する
ことが可能である。
【００８９】
つまり、本発明では、キーワードの辞書を格納している記憶装置からの読み出しを、配置としても時間的にも連続的あるいは周期的に行うよう制御し、さらに、検出処理における部分一致の管理と並列して行う。
これらの特徴によって、本発明では、処理を文字の比較に分解して論理段数を小さくすることで、大容量記憶装置からの読み出し速度に追従できる、高速な比較検出が可能になる。
【００９０】
［実施例２］
図５に全体構成の別の例を示す。このように記憶部を、状態メモリＭを有する記憶部２０Ｍと、キーワードメモリＣを有する記憶部２０Ｃに分けることもできる。
【００９１】
文字列検出処理中は、記憶部２０Ｍは読出しと書込み（更新）の処理を行うが、記憶部２０Ｃは読出しのみを行う。
また、記憶部２０Ｍに比べて、記憶部２０Ｃにはキーワードの文字そのものを記憶するため、１００倍から１０００倍程度の容量が要求される。
そこで、記憶部２０Ｃと記憶部２０Ｍを分けることで、それぞれの読み書き特性を満たすより安価な部品を使用すれば、さらに経済的に優れた構成を得ることも可能である。
【００９２】
［実施例３］
【００９３】
図６に全体構成のさらに別の例を示す。記憶部２０の読出し性能が検出器１０の動作速度より高い場合や、検出器１０として備える語長Ｌよりも大きい語長を記憶部２０が提供できる場合には、このようにひとつの記憶部２０に対して複数の検出器１０を接続する構成をとることも可能である。
たとえば２つの検出器１０を用意する場合には、ｐの奇遇で検出器１０を分担するなどすればよい。
【産業上の利用可能性】
【００９４】
本発明、日本語等のように単語の分かち書き（空白等の明示的な区切り記号）を持たない表記の被検出文書からキーワードを検出する場合に利用可能である。
【符号の説明】
【００９５】
１  キーワード検出装置
１０  検出器
１０（１）〜１０（Ｌ）  検出ブロック
２０  記憶部
３０  入力部
４０  出力部
５０  制御部
Ａ  ゲート
ｂ  開始位置ビットレジスタ
ｃ  キーワードの文字レジスタ
ｄ  入力レジスタ
ｇ  セレクタ
ｍ  状態レジスタ
ｒ  検出レジスタ
【図１】
2016143301.tif 000003
【図２】
2016143301.tif 000004
【図３】
2016143301.tif 000005
【図４Ａ】
2016143301.tif 000006
【図４Ｂ】
2016143301.tif 000007
【図５】
2016143301.tif 000008
【図６】
2016143301.tif 000009