説明

文字列登録方法,文字列登録プログラム及び文字列探索装置

【課題】目的の文字列がテキスト中のどこにあるかを探索するための文字列探索装置に対し、互いの相違点が内部の文字を異体字に変えただけの複数の文字列を登録する場合でも、できるだけ辞書の容量の増加を抑え、その結果として、探索速度の低下をできるだけ抑える。
【解決手段】互いの相違点が内部の文字を異体字に変えただけの複数の文字列を登録する場合に、異体字を持つ文字の直前の文字の文字ノードオブジェクト133において、その次文字がどの異体字であっても一個の文字ノードオブジェクト133のアドレスに対応付けられるようにすれば、異体字の数と同数の文字ノードオブジェクト133を用意しなくても、一個の文字ノードオブジェクト133で、異体字を含む文字列が全て探出されるようになる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、目的の文字列(パターン)がテキスト中のどこにあるかを探索するための文字列探索装置に対して任意の文字列を登録する方法と、そのような文字列登録方法を実現する装置としてコンピュータを動作させる文字列登録プログラムと、そのような文字列登録プログラムが実現する機能と同等の機能が組み込まれた文字列探索装置とに、関する。
【背景技術】
【0002】
周知のように、長い文章の中から所定のキーワードがある箇所を探したり、DNA[Doexyribo Nucleic Acid]を構成する塩基配列を示したテキストの中から所定の組み合わせがある箇所を探したりするため、文字列探索という技術がある。
【0003】
文字列探索には、ラビン=カープ(RK)などの力任せ系のアルゴリズム、或いは、クヌース=モリス=プラット(KMP)やボイヤー=ムーア(BM)などのスキップ系アルゴリズムが、知られており、このうち、スキップ系に属するエイホ=コラシック(AC)アルゴリズムは、目的の文字列が複数ある場合でも一度の走査で探索を終了できるものとして、知られている。
【0004】
特許文献1及び特許文献2並びに非特許文献1には、そのACアルゴリズムに従った文字列探索オートマトン(コンピュータ上で実現された機能)の動作についての解説がある。ACアルゴリズムに従った文字列探索オートマトンは、探索されるべき目的文字列を利用者から事前に受け付けておき、探索対象となるテキストが指定されたときには、そのテキストの先頭から一文字ずつ順に取り出しながら、状態遷移関数(goto関数)と失敗関数(failure関数)とに従って、その取り出した文字と取り出した時の内部状態とに応じて内部状態を変化させたり初期状態に戻したりし、内部状態が最終状態に到達したときに、出力関数に従って、その最終状態に対して事前に対応付けられた文字列を出力するというものである。
【0005】
なお、より具体的には、文字列探索オートマトンは、状態遷移関数や失敗関数の入力値(次の文字)と出力値(遷移すべき内部状態)との対応関係を定義したテーブルを内蔵する文字ノードを、探索されるべき目的文字列を構成する文字ごとに、有している。そして、内部状態とは、何れか一つの文字ノードを参照対象にしている状態を言い、探索されるべき目的文字列の登録とは、これら文字ノードのリンク関係を上記テーブルに定義することを言う。
【0006】
このACアルゴリズムは、仮名や漢字を含む日本語テキストに対しても有効なものである。従って、仮名や漢字を含む文字列を事前に登録しておけば、その種の文字列が探索対象テキストから確実に探索されることとなる。
【0007】
【特許文献1】特開平09−198398号公報(段落0017〜0020)
【特許文献2】特開2004−030682号公報(段落0003,0004)
【非特許文献1】広瀬健他監訳、「コンピュータ基礎理論ハンドブック(第1巻)アルゴリズムと複雑さ」、丸善株式会社、平成6年3月、280頁〜284頁
【発明の開示】
【発明が解決しようとする課題】
【0008】
ところで、漢字の中には、標準的な字形の代わりに、簡略化や一部置換などが施された字形で表すことができるものがある。このように同じ意味を持ちながら少しずつ字形の異なる文字は、異体字と称されているが、一般的には、幾つかの異体字の中の一種類が、通用の字体として利用されている。但し、人名や地名などにおいては、通用されていない異体字を持って正式な名称とされているものもある。従って、文字列探索の対象となるテキストにも、そのような通用されていない字体の文字を含む文字列が使用されている可能性がある。
【0009】
前述したようなACアルゴリズムに従った従来の文字列探索オートマトンにおいて、通用される字体の文字のみからなる文字列(例えば、渡辺)とは別に、通用されていない字体の文字を含む文字列(渡邉,渡邊)をも探索できるようにしておくためには、何れの文字列とも、事前に登録しておかねばならない。
【0010】
しかしながら、通用される字体の文字のみからなる文字列に、更に、通用されていない字体の文字を含む文字列をも登録しておくようにすると、辞書の容量が膨大となってしまい、探索速度が遅くなってしまうという問題が生ずる。
【0011】
本発明は、前述したような従来技術の有する問題点に鑑みてなされたものであり、その課題は、互いの相違点が内部の文字を異体字に変えただけの複数の文字列を、何れも、探索されるべき目的文字列として登録する場合でも、できるだけ辞書の容量の増加を抑え、その結果として、探索速度の低下をできるだけ抑えることにある。
【課題を解決するための手段】
【0012】
上記の課題を解決するために案出された文字列登録方法は、エイホ=コラシックアルゴリズムに従って探索対象テキストの中から文字列の探索を行う文字列探索装置に対し、探索されるべき文字列を登録するための文字列登録方法であって、登録対象として指定された文字列を構成する文字のそれぞれについて、その文字列の先頭からその文字までの文字群を示す経緯情報を保持する文字ノードオブジェクトを、生成する文字ノード生成手順,前記文字ノードオブジェクトのそれぞれに対し、その文字ノードオブジェクトが保持する経緯情報が示す文字群の次に存在すべき文字を示す次文字情報と、その次文字情報が示す文字に対応する他の文字ノードオブジェクトの所在情報とを対応付けて記録する前方リンク定義手順,及び、前記次文字情報が示す文字に異体字がある場合に、その異体字を示す異体字情報と、その次文字情報に対応付けられている所在情報とを、対応付けて、その次文字情報を持つ文字ノードオブジェクトに記録する異体字リンク定義手順からなることを、特徴としている。
【0013】
また、上記の課題を解決するために案出された文字列登録プログラムは、エイホ=コラシックアルゴリズムに従って探索対象テキストの中から文字列の探索を行う文字列探索装置に対し、探索されるべき文字列を登録するための文字列登録プログラムであって、コンピュータを、探索されるべき文字列を登録する指示を入力装置を通じて利用者から受け付ける受付手段,前記受付手段が受け付けた文字列を構成する文字のそれぞれについて、その文字列の先頭からその文字までの文字群を示す経緯情報を保持する文字ノードオブジェクトを、メモリ上に生成する文字ノード生成手段,前記文字ノード生成手段がメモリ上に生成した前記文字ノードオブジェクトのそれぞれに対し、その文字ノードオブジェクトが保持する経緯情報が示す文字群の次に存在すべき文字を示す次文字情報と、その次文字情報が示す文字に対応する他の文字ノードオブジェクトの所在情報とを対応付けて記録する前方リンク定義手段,及び、前記次文字情報が示す文字に異体字がある場合に、その異体字を示す異体字情報と、その次文字情報に対応付けられている所在情報とを、対応付けて、その次文字情報を持つ文字ノードオブジェクトに記録する異体字リンク定義手段として機能させることを、特徴としている。
【0014】
また、上記の課題を解決するために案出された文字列探索装置は、エイホ=コラシックアルゴリズムに従って探索対象テキストの中から文字列の探索を行う文字列探索装置であって、探索されるべき文字列を登録する指示を利用者から受け付ける受付部,前記受付部が受け付けた文字列を構成する文字のそれぞれについて、その文字列の先頭からその文字までの文字群を示す経緯情報を保持する文字ノードオブジェクトを、生成する文字ノード生成部,前記文字ノード生成部が生成した前記文字ノードオブジェクトのそれぞれに対し、その文字ノードオブジェクトが保持する経緯情報が示す文字群の次に存在すべき文字を示す次文字情報と、その次文字情報が示す文字に対応する他の文字ノードオブジェクトの所在情報とを対応付けて記録する前方リンク定義部,及び、前記次文字情報が示す文字に異体字がある場合に、その異体字を示す異体字情報と、その次文字情報に対応付けられている所在情報とを、対応付けて、その次文字情報を持つ文字ノードオブジェクトに記録する異体字リンク定義部を備えることを、特徴としている。
【0015】
これらのように、互いの相違点が内部の文字を異体字に変えただけの複数の文字列を登録する場合に、異体字を持つ文字の直前の文字の文字ノードオブジェクトにおいて、その次文字がどの異体字であっても一個の文字ノードオブジェクトの所在情報に対応付けられるようにすれば、異体字の数と同数の組数の文字ノードオブジェクトを用意しなくても、一個の文字ノードオブジェクトで、異体字を含む文字列が全て探出されるようになる。これにより、異体字の文字ノードオブジェクトを用意せずに済む分だけ、辞書の容量の増加が抑えられることとなる。
【0016】
なお、前述した本発明は、更に、文字ノードオブジェクトのそれぞれについて、その文字ノードオブジェクトの所在情報とその文字ノードオブジェクトが持つ経緯情報が示す文字群を逆順に並び替えたものとを対応付けてテーブルに格納しておいて(候補生成手順)、文字ノードオブジェクトのそれぞれについて、その文字ノードオブジェクトが持つ経緯情報が示す文字群を逆順に並び替えたものの末尾から一文字ずつ削除するごとに、削除後の文字群で前記テーブルを検索する処理,及び、何れかの検索によりそのテーブルからレコードが検出できたときに、その文字群の先頭文字を示す文字情報と、そのレコード内の所在情報とを対応付けて記録する処理を行う(失敗遷移先構築手順)ものであっても良い。
【0017】
これらの処理を行うようにすれば、文字ノードオブジェクトに失敗遷移の遷移先を簡単に登録することができるようになる。
【0018】
また、本発明に対し、前述したような手順を追加したものとした場合において、失敗遷移先構築手順で行う削除処理の結果、逆順に並び替えた文字群が残り一文字となったときには、その残りの一文字に対し、登録された文字列における先頭文字の文字ノード(ルートノード)を対応付けて、失敗遷移先として登録しておくと良い。こうすると、失敗遷移後の遷移ステップ数が従来技術に比して減ることとなるため、文字列探索の速度が向上することとなる。
【発明の効果】
【0019】
従って、本発明によれば、互いの相違点が内部の文字を異体字に変えただけの複数の文字列を、何れも、探索されるべき目的文字列として登録する場合でも、辞書の容量の増加を抑えることができ、その結果として、探索速度の低下を抑えることができるようになる。
【発明を実施するための最良の形態】
【0020】
次に、本発明を実施するための最良の形態について、添付図面を参照しながら、詳細に説明する。
【0021】
先ず、本実施形態の文字列探索装置の構成について説明する。
【0022】
図1は、本実施形態の文字列探索装置10の構成図である。
【0023】
図1に示すように、文字列探索装置10は、後述のプログラム群及びデータ群を一般的なパーソナルコンピュータに導入してなる装置である。この文字列探索装置10を構成するパーソナルコンピュータは、周知のように、液晶ディスプレイ等の表示装置10a,キーボードやマウス等の入力装置10b,及び、これら装置10a,10bが接続された本体とからなり、その本体は、HDD[Hard Disk Drive]10c,CPU[Central Processing Unit]10c,DRAM[Dynamic Random Access Memory]10e,その他のハードウエアを、内蔵している。このうち、HDD10cは、各種のプログラムやデータを記憶する記憶装置であり、CPU10dは、そのHDD10c内のプログラムに従って各種の処理を行う制御装置であり、DRAM10eは、CPU10dがプログラムに従った処理を行う際に作業領域が展開される揮発性記憶装置である。
【0024】
そして、この文字列探索装置10のHDD10cには、テキストデータ11,アプリケーション12,及び、文字列探索ソフトウエア13が、格納されている。テキストデータ11は、テキストを表示するためのテキストデータである。なお、本実施形態では、このテキストデータ11には、仮名や漢字を含む日本語の文章を表示するためのテキストデータが含まれている。アプリケーション12は、テキストデータ11に基づいてテキストを表示装置10aに表示したりそのテキストの編集及び保存をするための機能を提供したりするためのソフトウエアである。文字列探索ソフトウエア13は、そのアプリケーション12からの要求を受けてテキストの中から所定の文字列を探索してその探索結果をアプリケーション12に応答するためのソフトウエアである。
【0025】
図2は、文字列探索ソフトウエア13の内部構成とこれににより実現される機能とを示す概略図である。
【0026】
図2に示すように、文字列探索ソフトウエア13は、オブジェクト生成プログラム13a,文字列探索オートマトンライブラリ13b,ルートノード管理機能ライブラリ13c,文字ノードライブラリ13d,失敗遷移機能ライブラリ13e,パターン登録プログラム13f,及び、失敗遷移先構築プログラム13gを、含んでいる。
【0027】
このうち、オブジェクト生成プログラム13aは、各ライブラリ13b〜13eに基づいて、それぞれに対応するオブジェクトをDRAM10e上に生成するためのプログラムである。なお、各オブジェクトの生成時において、各オブジェクトには、DRAM10e上の所定の大きさの領域が個別に割り当てられるようになっている。
【0028】
また、文字列探索オートマトンライブラリ13bは、事前に登録されている文字列を対象テキストの中から探索する機能を実現するオブジェクト131をDRAM10e上に生成するためのライブラリである。図2には、このライブラリ13bに基づいてDRAM10e上に生成される文字列探索オートマトンオブジェクト131が、示されている。この文字列探索オートマトンオブジェクト131は、後述のオブジェクト132〜134を使用することによって、対象テキストの中から文字列を探索する。なお、文字列探索オートマトンライブラリ13bは、各オブジェクト132〜134に割り当てられたDRAM10e上領域のアドレスによって、使用すべきオブジェクトを特定する。この文字列探索オートマトンオブジェクト131が実行する文字列探索処理の内容については、図17及び図18を用いて後述する。
【0029】
また、ルートノード管理機能ライブラリ13cは、ルートノード管理機能オブジェクト132を生成するためのライブラリである。ルートノード管理機能オブジェクト132は、文字列探索オートマトンライブラリ13bが対象テキストの中から一文字ずつ取り出したときにおいて、その取り出した文字が探索されるべき文字列の先頭文字であるか否かを判定する際に利用されるオブジェクトである。
【0030】
図3は、このルートノード管理機能オブジェクト132の概念図である。
【0031】
図3に示すように、ルートノード管理機能オブジェクト132は、ルートノード管理テーブル132aを含んでいる。ルートノード管理テーブル132aは、文字列探索オートマトンライブラリ13bが処理対象としている文字が何れかの文字列の先頭文字であるか否かを検索する際に利用されるテーブルであり、探索されるべき各文字列の先頭文字が登録されている。より具体的には、このルートノード管理テーブル132a内の各レコードは、「文字」及び「ポインタ」の各フィールドを有しており、このうち、「文字」フィールドには、探索されるべき文字列の先頭文字が記録され、「ポインタ」フィールドには、その先頭文字に対応する後述の文字ノードオブジェクト133のアドレスが記録される。なお、これ以降において、先頭文字に対応する文字ノードオブジェクト133を、先頭でない文字に対応する文字ノードオブジェクト133と区別する必要がある場合、「ルートノードオブジェクト」と表記する。
【0032】
また、図2の文字ノードライブラリ13dは、DRAM10e上に文字ノードオブジェクト133を生成するためのライブラリである。この文字ノードライブラリ13dは、複数存在し、DRAM10e上には、それら文字ノードライブラリ13d一つ一つに対応する文字ノードオブジェクト133が複数生成される。文字ノードオブジェクト133は、原則として、探索されるべき各文字列を構成する文字のそれぞれについて、生成される。但し、各文字列において、先頭文字から途中の文字までの文字の並びが共通する場合、それら共通する部分の文字に対応する文字ノードオブジェクト133は、共通のものが一つ生成される。例えば、「河原崎」と「河原田」という二つの文字列においては、「河原」が共通するので、この場合、「河」と「原」の文字ノードオブジェクト133は、「河原崎」と「河原田」とに共通するものとして一組生成される。なお、この場合において、例えば「原田」という文字列が探索されるべきものとして登録されているときには、その「原田」の「原」の文字ノードオブジェクト133は、「河原」の「原」の文字ノードオブジェクト133とは別途、存在する。文字ノードオブジェクト133は、そのオブジェクト133が対象テキストの中から取り出された一文字に対応するオブジェクトである場合において、その取り出された文字の次の文字が、次にくるべき文字(その文字を含む文字列内でのその文字の次に存在すべき文字)であるか否かを判別する際に利用されるオブジェクトである。
【0033】
図4乃至図9は、この文字ノードオブジェクト133の概念図である。なお、図4乃至図9のうち、図4及び図8は、ルートノードオブジェクトを示している。
【0034】
図4乃至図9に示すように、文字ノードオブジェクト133は、経緯情報133a,ハッシュマップテーブル133b,及び、失敗時遷移先管理テーブル133cを、含んでいる。経緯情報133aは、その文字ノードオブジェクト133に対応する文字を含む文字列における先頭文字からその文字までの文字群を示す情報である。例えば、「勅使河原」という文字列において、「河」の文字ノードオブジェクト133であれば、経緯情報133aが示す文字群は、「勅使河」である(図6参照)。ハッシュマップテーブル133bは、文字列探索オートマトンオブジェクト131が探索対象から取り出した一文字(処理対象文字)が、その文字ノードオブジェクト133に対応する文字を含む文字列におけるその文字の次の文字と、一致するか否かを判断する際に利用されるテーブルである。具体的には、このハッシュマップテーブル133b内の各レコードは、「文字」及び「ポインタ」の各フィールドを有しており、このうち、「文字」フィールドには、経緯情報133aが示す文字群の次に存在し得る文字が記録され、「ポインタ」フィールドには、その文字に対応する文字ノードオブジェクト133のアドレスが記録される(図5及び図8参照)。失敗時遷移先管理テーブル133cは、処理対象文字がハッシュマップテーブル133bから検索されなかったときに使用されるテーブルである。具体的には、この失敗時遷移先管理テーブル133c内の各レコードも、「文字」及び「ポインタ」の各フィールドを有しており、「文字」フィールドには、この文字ノードオブジェクト133に対応する文字と同じ文字が記録され、「ポインタ」フィールドには、同じ文字が対応付けられている別の文字ノードオブジェクト133のアドレスが記録される。さらに、文字ノードオブジェクト133の中には、終端情報133dを含むものもある。終端情報133dは、経緯情報133aの示す文字群だけで、探索されるべき文字列が成立する場合に、その旨を示す情報である。
【0035】
ここで、図10は、図4乃至図9に示した文字ノードオブジェクト133のリンク状態を模式的に示す概略図である。
【0036】
図10では、丸で囲まれた文字が文字ノードを示しており、これら文字ノードうち、図10において最も左側にある「勅」,「使」,「河」,「原」がルートノードとして示されている。なお、ルートノードは、ルートノード管理機能オブジェクト132のルートノード管理テーブル132aに定義されている。そして、これらルートノードを起点として、「勅使河原」,「勅使川原」,「勅使ケ原」,「勅使」,「使河」,「河原」,「河原田」,「河原崎」,「河野」,「河合」,「河村」,「原田」,「原口」の文字列のリンク状態が、実線で示されている。なお、これら実線で示されるリンク状態は、各文字ノードオブジェクト133のハッシュマップテーブル133bにて定義されている。また、この図10において、波線は、その文字を含む文字列(例えば「勅使河原」)における先頭以外の文字からその文字までの文字群(例えば「使河」)で別途文字列が成立している場合に、その別の文字列(「使河」)における対応する文字ノード(河)への遷移を、示している。また、一点鎖線は、その文字ノードの前方(図10の右方)に遷移すべき文字ノードが無く、且つ、同一の文字に対応付けられている別の文字ノードへの遷移(波線で示される遷移)もできない場合の遷移方向を、示している。なお、これら波線及び一点鎖線で示されるリンク状態は、各文字ノードオブジェクト133の失敗時遷移先管理テーブル133cに定義されており、本発明は、これら波線及び一点鎖線で示される遷移先を文字ノードオブジェクト133に簡単に登録できる手段について、提供するものである。
【0037】
また、図2の失敗遷移機能ライブラリ13eは、DRAM10e上に失敗遷移機能オブジェクト134を生成するためのライブラリである。失敗遷移機能オブジェクト134は、後述の失敗遷移先構築プログラム13gによる処理において使用される情報を記録しておくためのオブジェクトである。
【0038】
図11は、この失敗遷移機能オブジェクト134の概念図である。
【0039】
図11に示すように、失敗遷移機能オブジェクト134は、遷移先候補管理テーブル134aを含んでいる。遷移先候補管理テーブル134aは、後述の失敗遷移先構築プログラム13gによる処理において使用される情報を記録しておくためのテーブルである。具体的には、この遷移先候補管理テーブル134a内の各レコードは、「文字」及び「ポインタ」の各フィールドを有しており、このうち、「文字」フィールドには、経緯情報133aを示す文字群を逆順にしたものが記録され、「ポインタ」フィールドには、その経緯情報133aを持つ文字ノードオブジェクト133のアドレスが記録される。
【0040】
図2のパターン登録プログラム13fは、文字列探索オートマトンオブジェクト131に探索させる文字列を登録する機能を実現するためのプログラムである。なお、この文字列の登録とは、具体的には、文字ノードオブジェクト133のリンク関係を、各文字ノードオブジェクト133のハッシュマップテーブル133bに定義することである。このパターン登録プログラム13fに従ってCPU10dが実行する処理の内容については、図12乃至図14を用いて後述する。
【0041】
図2の失敗遷移先構築プログラム13gは、各文字ノードオブジェクト133において前方遷移(図10の実線で示す遷移)ができないときに別途検索される遷移先を登録するためのプログラムである。なお、この遷移先の登録とは、具体的には、文字ノードオブジェクト133のリンク関係を、各文字ノードオブジェクト133の失敗時遷移先管理テーブル133cに定義することである。この失敗遷移先構築プログラム13gに従ってCPU10dが実行する処理の内容については、図15及び図16を用いて後述する。
【0042】
次に、本実施形態の文字列探索装置10において実行される処理について、説明する。
【0043】
文字列探索装置10では、所定の時期(起動時或いは実行指示時)に文字列探索ソフトウエア13が起動され、オブジェクト生成プログラム13aによってDRAM10e上に各オブジェクト131〜134が生成されるようになっている。これにより、各オブジェクト131〜134が常駐した状態になる。
【0044】
このような状態において、文字列探索装置10の入力装置10bを操作する操作者によって、探索されるべき文字列が登録対象として指定された後、パターン登録プログラム13fが起動されると、パターン登録処理が開始される。
【0045】
図12乃至図14は、このパターン登録処理の流れを示す図である。
【0046】
パターン登録処理の開始後、最初のステップS1001では、CPU10dは、登録対象として指定された文字列の先頭文字を検索条件として、図3のルートノード管理テーブル132aを検索する処理を行う。
【0047】
次のステップS1002では、CPU10dは、当該文字列の先頭文字と同一の文字を含むレコードがルートノード管理テーブル132aから検出できたか否かを、判別する。そして、CPU10dは、当該文字列の先頭文字と同一の文字を含むレコードがルートノード管理テーブル132aから検出できなかった場合には、ステップS1002からステップS1003へ処理を進め、当該文字列の先頭文字と同一の文字を含むレコードがルートノード管理テーブル132aから検出できた場合には、ステップS1002から処理を分岐させ、ステップS1004へ処理を進める。
【0048】
ステップS1003では、CPU10dは、ルートノードを生成する処理を行う。具体的には、CPU10dは、登録対象として指定された文字列の先頭文字に対応する文字ノードライブラリ13dを生成してHDD10cに保存する処理を行うとともに、オブジェクト生成プログラム13aによる機能を通じてその先頭文字に対応する文字ノードオブジェクト133をDRAM10e上に生成する処理を行う。さらに、CPU10dは、その生成した文字ノードオブジェクト133のアドレスとこれに対応する文字とを含むレコードを図3のルートノード管理テーブル132aに新規追加する処理を行う。これにより、生成された文字ノードオブジェクト133は、ルートノードオブジェクトとして設定されることとなる。CPU10dは、このような処理を行った後、ステップS1004へ処理を進める。
【0049】
ステップS1004では、CPU10dは、ステップS1001で検出したレコード内のアドレスにより示される領域にあるルートノードオブジェクト133,又は、ステップS1003でルートノード管理テーブル132aに登録したルートノードオブジェクト133を、処理対象ノードとして特定する。
【0050】
次のステップS1005では、CPU10dは、登録対象に指定された文字列の中から未処理の文字を検索する処理を行う。
【0051】
次のステップS1006では、CPU10dは、当該文字列から未処理の文字が検出できたか否かを、判別する。そして、CPU10dは、当該文字列から未処理の文字が検出できた場合、ステップS1006から処理を分岐させ、ステップS1007へ処理を進める。
【0052】
ステップS1007では、CPU10dは、未処理の文字のうち、先頭側の一つを処理対象文字として特定する。
【0053】
次のステップS1008では、CPU10dは、処理対象文字を検索条件として、処理対象ノードのハッシュマップテーブル133bを検索する処理を行う。
【0054】
次のステップS1009では、CPU10dは、処理対象文字と同一の文字を含むレコードが処理対象ノードのハッシュマップテーブル133bから検出できたか否かを、判別する。そして、CPU10dは、処理対象文字と同一の文字を含むレコードが処理対象ノードのハッシュマップテーブル133bから検出できなかった場合には、次文字ノード生成処理(ステップS1010乃至S1012)を実行し、処理対象文字と同一の文字を含むレコードが処理対象ノードのハッシュマップテーブル133bから検出できた場合には、ステップS1009から処理を分岐させ、ステップS1014へ処理を進める。
【0055】
次文字ノード生成処理の最初のステップS1010では、CPU10dは、登録対象として指定された文字列の先頭から処理対象文字までの文字群を、逆順に並べ替える処理を行う。
【0056】
次のステップS1011では、CPU10dは、処理対象文字に対応する文字ノードを生成する処理を行う。具体的には、処理対象文字に対応する文字ノードライブラリ13dを生成してHDD10cに保存する処理を行うとともに、オブジェクト生成プログラム13aによる機能を通じてその先頭文字に対応する文字ノードオブジェクト133をDRAM10e上に生成する処理を行う。ここで、生成される文字ノードオブジェクト133には、ステップS1010で逆順に並び替えられる前の文字群が、経緯情報133aとして格納されるようになっている。なお、このステップS1011は、前述した文字ノード生成手順に相当し、このステップS1011を実行するCPU10dは、前述した文字ノード生成手段及び文字ノード生成部に相当している。
【0057】
次のステップS1012では、CPU10dは、ステップS1010で逆順に並び替えられた文字群と、ステップS1011で生成した文字ノードオブジェクト133のアドレスとを含むレコードを、図11の遷移先候補管理テーブル134aに新規登録する処理を行う。なお、このステップS1012は、前述した候補生成手順に相当している。
【0058】
次のステップS1013では、CPU10dは、以上に説明した次文字ノード生成処理(ステップS1010乃至S1012)により生成した文字ノードオブジェクト133に対応するレコードを、処理対象ノードのハッシュマップテーブル133bに登録する処理を行う。なお、このステップS1013は、前述した前方リンク定義手順に相当し、このステップS1013を実行するCPU10dは、前述した前方リンク定義手段及び前方リンク定義部に相当している。その後、CPU10dは、ステップS1014へ処理を進める。
【0059】
ステップS1014では、CPU10dは、ステップS1008で検出したレコード内のアドレス,又は、次文字ノード生成処理で生成した文字ノードオブジェクト133のアドレスを、取得する処理を行う。
【0060】
次のステップS1015では、CPU10dは、処理対象文字の異体字を検索する処理を行う。なお、このステップS1015では、CPU10dは、例えば図示せぬ日本語入力支援ソフトウエアが有する辞書を検索する。
【0061】
次のステップS1016では、CPU10dは、処理対象文字の異体字が検出できたか否かを、判別する。そして、CPU10dは、処理対象文字の異体字が検出できた場合には、第1の処理ループL1を実行し、処理対象文字の異体字が検出できなかった場合には、ステップS1016から処理を分岐させ、ステップS1018へ処理を進める。
【0062】
第1の処理ループL1では、CPU10dは、検出された異体字のそれぞれについて、ステップS1017を実行する。
【0063】
ステップS1017では、CPU10dは、処理対象の異体字と、処理対象文字に対応する文字ノードオブジェクト133のアドレスとを含むレコードを、処理対象ノードのハッシュマップテーブル133bに新規追加する処理を行う。なお、このステップS1017は、前述した異体字リンク定義手順に相当し、このステップS1017を実行するCPU10dは、前述した異体字リンク定義手段及び異体字リンク定義部に相当している。
【0064】
CPU10dは、このステップS1017を、ステップS1015で検出された異体字の全てについて実行した後、この第1の処理ループL1から離脱し、ステップS1018へ処理を進める。
【0065】
ステップS1018では、CPU10dは、処理対象ノードを、ステップS1014で取得したアドレスが示す領域にある文字ノードオブジェクト133に、変更する処理を行う。その後、CPU10dは、ステップS1005へ処理を戻す。
【0066】
そして、CPU10dは、以上に説明したステップS1005乃至S1018を繰り返し行う間に、登録対象として指定された文字列から未処理の文字が検出できなくなったときには、ステップS1006からステップS1019へ処理を進める。
【0067】
ステップS1019では、CPU10dは、処理対象ノードに終端情報133dを記録する処理を行い、その後、図12乃至図14に係るパターン登録処理を終了する。
【0068】
このようなパターン登録処理が繰り返されることにより、探索されるべき文字列が複数登録された後、文字列探索装置10の入力装置10bを操作する操作者によって、失敗遷移先構築プログラム13gが起動されると、失敗遷移先構築処理が開始される。
【0069】
図15及び図16は、失敗遷移先構築処理の流れを示す図である。
【0070】
失敗遷移先構築処理の開始後、最初のステップS2001では、CPU10dは、図3のルートノード管理テーブル132aからアドレスを順に読み出して、DRAM10e内に事前に確保した第1のスタックに記録する処理を行う。この処理により、第1のスタックには、ルートノード管理テーブル132a内の全てのアドレスが、読み出されることとなる。
【0071】
次のステップS2002では、CPU10dは、第1のスタックの中から末尾のアドレスを一つ取り出す処理を行う。
【0072】
次のステップS2003では、CPU10dは、ステップS2002で取り出したアドレスが示す領域にある文字ノードオブジェクト133のハッシュマップテーブル133bからアドレスを順に読み出して、DRAM10e内に事前に確保した第2のスタックに記録する処理を行う。この処理により、第2のスタックには、ハッシュマップテーブル133b内の全てのアドレスが、読み出されることとなる。
【0073】
次のステップS2004では、CPU10dは、第2のスタックの中から末尾のアドレスを一つ取り出す処理を行う。
【0074】
次のステップS2005では、CPU10dは、ステップS2004で取り出したアドレスにある文字ノードオブジェクト133の経緯情報133aを読み出し、この経緯情報133aの示す文字群を逆順に並べ替える処理を行う。
【0075】
次のステップS2006では、CPU10dは、当該文字群から末尾の一文字を除去する処理を行う。
【0076】
次のステップS2007では、CPU10dは、ステップS2006での除去によって当該文字群の文字が残り一文字になったか否かを、判別する。そして、CPU10dは、当該文字群が二文字以上からなる場合、ステップS2007から処理を分岐させ、ステップS2008へ処理を進める。
【0077】
ステップS2008では、CPU10dは、当該文字群を検索条件として、図11の遷移先候補管理テーブル134aを検索する処理を行う。
【0078】
次のステップS2009では、CPU10dは、当該文字群と同じ文字群を含むレコードが遷移先候補管理テーブル134aから検出できたか否かを、判別する。そして、CPU10dは、当該文字群と同じ文字群を含むレコードが遷移先候補管理テーブル134aから検出できなかった場合、ステップS2009から処理を分岐させ、ステップS2006へ処理を戻す。
【0079】
そして、CPU10dは、以上に説明したステップS2006乃至S2009を繰り返し行う間に、当該文字群と同じ文字群を含むレコードが遷移先候補管理テーブル134aから検出できたときには、ステップS2009からステップS2010へ処理を進める。
【0080】
ステップS2010では、CPU10dは、ステップS2008で検出されたレコード内のアドレスと、当該文字群の先頭の文字とを含むレコードを、ステップS2004で取り出したアドレスが示す領域にある文字ノードオブジェクト133の失敗時遷移先管理テーブル133cに新規追加する処理を行う。
【0081】
次のステップS2011では、CPU10dは、ステップS2010で失敗時遷移先管理テーブル133cに登録されたアドレスを、第2のスタックに格納する処理を行う。その後、CPU10dは、ステップS2013へ処理を進める。
【0082】
また、CPU10dは、ステップS2006乃至S2009を繰り返し行う間に、当該文字群が残り一文字になってしまったときには、ステップS2007からステップS2012へ処理を進める。
【0083】
ステップS2012では、CPU10dは、当該一文字に対応するルートノードオブジェクト133のアドレスを、図11の遷移先候補管理テーブル134aから読み出し、続いて、当該一文字と当該アドレスとを含むレコードを、ステップS2004で取り出したアドレスが示す領域にある文字ノードオブジェクト133の失敗時遷移先管理テーブル133cに新規追加する処理を行う。その後、CPU10dは、ステップS2013へ処理を進める。
【0084】
ステップS2013では、CPU10dは、第2のスタックを検索する処理を行う。
【0085】
次のステップS2014では、CPU10dは、第2のスタックからアドレスが検出できたか否かを、判別する処理を行う。そして、CPU10dは、第2のスタックからアドレスが検出できた場合、ステップS2014から処理を分岐させ、ステップS2004へ処理を戻す。
【0086】
そして、CPU10dは、以上に説明したステップS2004乃至S2014を繰り返す間に、第2のスタックからアドレスが検出できなくなったときには、ステップS2013からステップS2015へ処理を進める。
【0087】
ステップS2015では、CPU10dは、第1のスタックを検索する処理を行う。
【0088】
次のステップS2016では、CPU10dは、第1のスタックからアドレスが検出できたか否かを、判別する処理を行う。そして、CPU10dは、第1のスタックからアドレスが検出できた場合、ステップS2016から処理を分岐させ、ステップS2002へ処理を戻す。
【0089】
そして、CPU10dは、以上に説明したステップS2002乃至S2016を繰り返す間に、第1のスタックからアドレスが検出できなくなったときには、図14及び図15に係る失敗遷移先構築処理を終了する。
【0090】
このような失敗遷移先構築処理が行われることにより、探索すべき文字列が複数登録された際に生成された文字ノードオブジェクト133の失敗時遷移先管理テーブル133cの内容が、生成され、図10において波線や一点鎖線で示すようなリンク構造が構築されることとなる。なお、この図14及び図15に係る失敗遷移先構築処理は、前述した失敗遷移先構築手順に相当している。
【0091】
また、DRAM10e上に各オブジェクト131〜134が存在している状態において、文字列探索オートマトンオブジェクト131が、アプリケーション12から、所定のテキストを探索対象とした指定とともに、文字列の探索の依頼を受けると、文字列探索処理を開始する。
【0092】
図17及び図18は、文字列探索処理の流れを示す図である。
【0093】
文字列探索処理の開始後、最初のステップS3001では、文字列探索オートマトンオブジェクト131(を実現しているCPU10d)は、探索対象テキストから未処理で先頭側の一文字を読み出す処理を行う。
【0094】
次のステップS3002では、文字列探索オートマトンオブジェクト131は、ステップS3001で読み出した文字を検索条件として、図3のルートノード管理テーブル132aを検索する処理を行う。
【0095】
次のステップS3003では、文字列探索オートマトンオブジェクト131は、ステップS3001で読み出した文字と同じ文字を含むレコードがルートノード管理テーブル132aから検出できたか否かを、判別する。そして、文字列探索オートマトンオブジェクト131は、ステップS3001で読み出した文字と同じ文字を含むレコードがルートノード管理テーブル132aから検出できなかった場合には、ステップS3003から処理を分岐させてステップS3001へ処理を戻し、ステップS3001で読み出した文字と同じ文字を含むレコードがルートノード管理テーブル132aから検出できた場合には、ステップS3003からステップS3004へ処理を進める。
【0096】
ステップS3004では、文字列探索オートマトンオブジェクト131は、ステップS3002で検出したレコード内のアドレスが示す領域にある文字ノードオブジェクト(ルートノードオブジェクト)133を、処理対象ノードに設定する処理を行う。
【0097】
次のステップS3005では、文字列探索オートマトンオブジェクト131は、処理対象ノードに終端情報133dが含まれているか否かを、判別する。そして、文字列探索オートマトンオブジェクト131は、処理対象ノードに終端情報133dが含まれていた場合には、ステップS3005からステップS3006へ処理を進め、処理対象ノードに終端情報133dが含まれていなかった場合には、ステップS3005から処理を分岐させてステップS3007へ処理を進める。
【0098】
ステップS3006では、文字列探索オートマトンオブジェクト131は、処理対象モードの経緯情報133aの示す文字群を、探索結果として、アプリケーション121(図2参照)に出力する処理を行う。その後、文字列探索オートマトンオブジェクト131は、ステップS3007へ処理を進める。
【0099】
ステップS3007では、文字列探索オートマトンオブジェクト131は、探索対象テキスト内の未処理の文字の中から先頭側の一文字を読み出す処理を行う。
【0100】
次のステップS3008では、文字列探索オートマトンオブジェクト131は、ステップS3007で読み出した文字を検索条件として、処理対象ノードのハッシュマップテーブル133bを検索する処理を行う。
【0101】
次のステップS3009では、文字列探索オートマトンオブジェクト131は、ステップS3007で読み出した文字と同じ文字を含むレコードが処理対象ノードのハッシュマップテーブル133bから検出できたか否かを、判別する。そして、文字列探索オートマトンオブジェクト131は、ステップS3007で読み出した文字と同じ文字を含むレコードが処理対象ノードのハッシュマップテーブル133bから検出できた場合、ステップS3009から処理を分岐させ、ステップS3010へ処理を進める。
【0102】
ステップS3010では、文字列探索オートマトンオブジェクト131は、処理対象ノードを、ステップS3008で検出したレコード内のアドレスにある文字ノードオブジェクト133に変更する処理を行う。その後、文字列探索オートマトンオブジェクト131は、ステップS3005へ処理を戻す。
【0103】
一方、ステップS3009において、文字列探索オートマトンオブジェクト131は、ステップS3007で読み出した文字と同じ文字を含むレコードが処理対象ノードのハッシュマップテーブル133bから検出できなかった場合、ステップS3009からステップS3011へ処理を進める。
【0104】
ステップS3011では、文字列探索オートマトンオブジェクト131は、ステップS3007で読み出した文字を検索条件として、処理対象ノードの失敗時遷移先管理テーブル133cを検索する処理を行う。
【0105】
次のステップS3012では、文字列探索オートマトンオブジェクト131は、ステップS3007で読み出した文字と同じ文字を含むレコードが処理対象ノードの失敗時遷移先管理テーブル133cから検出できたか否かを、判別する。そして、文字列探索オートマトンオブジェクト131は、ステップS3007で読み出した文字と同じ文字を含むレコードが処理対象ノードの失敗時遷移先管理テーブル133cから検出できた場合、ステップS3012から処理を分岐させ、ステップS3013へ処理を進める。
【0106】
ステップS3013では、文字列探索オートマトンオブジェクト131は、処理対象ノードを、ステップS3011で検出したレコード内のアドレスにある文字ノードオブジェクト133に変更する処理を行う。その後、文字列探索オートマトンオブジェクト131は、ステップS3005へ処理を戻す。
【0107】
一方、ステップS3013において、文字列探索オートマトンオブジェクト131は、ステップS3007で読み出した文字と同じ文字を含むレコードが処理対象ノードのハッシュマップテーブル133bから検出できなかった場合、ステップS3013からステップS3014へ処理を進める。
【0108】
ステップS3014では、文字列探索オートマトンオブジェクト131は、探索対象テキスト内に未処理の文字が存在するか否かを、判別する。そして、文字列探索オートマトンオブジェクト131は、探索対象テキスト内に未処理の文字が存在していた場合には、ステップS3014から処理を分岐させ、ステップS3001へ処理を戻す。
【0109】
文字列探索オートマトンオブジェクト131は、以上に説明したステップS3001乃至S3014を繰り返し行う間に、探索対象テキスト内から未処理の文字がなくなると、図17及び図18に係る文字列探索処理を終了する。
【0110】
次に、本実施形態の文字列探索装置10の作用及び効果について、説明する。
【0111】
文字列探索装置10の操作者は、図17及び図18の文字列探索処理により探索対象テキストから探索されるべき目的文字列を登録する場合、文字列を指定してパターン登録プログラム13fを実行させる。すると、従来技術と同様に、文字列を構成する文字のそれぞれについて、次文字の文字ノードの作成と次文字のハッシュマップテーブルへの登録とが、順に行われる(ステップS1005〜S1013,S1018)。
【0112】
そして、このパターン登録処理において、順次処理対象とされる次文字について、異体字が存在していた場合(ステップS1016)、その異体字も全て、ハッシュマップテーブル133bに登録される(L1)。このとき、ハッシュマップテーブル133b内で各異体字に対応付けられる文字ノードオブジェクト133は、図9に示されるように、全て共通の文字ノードオブジェクト133となっている。このため、操作者が登録しようとした文字列が通用される字体のみからなるものだけであったとしても、一部の文字が異体字に置換された文字列が、探索対象テキストに含まれていた場合には、図17及び図18の文字列探索処理において、その文字列も必ず探出されることとなる(図10参照)。例えば、操作者が「渡辺」という文字列を指定してパターン登録プログラム13fを実行すれば、その「渡辺」の文字列が探出されるようになるだけでなく、「渡邉」や「渡邊」も探出されるようになる。
【0113】
このように異体字が登録されることにより、異体字の数と同数の文字ノードオブジェクト133を用意する必要がなくなり(辺,邉,邊の三つの文字ノードを用意しなくても)、一個の文字ノードオブジェクトだけで文字列の登録が済むようになるので(辺の文字ノードだけで済むので)、異体字が多数あったとしても、文字ノードオブジェクト133の個数が増えないこととなる。このため、一部の文字を異体字に置換した文字列をも登録する場合であっても、辞書の容量の増加が抑えられることとなる。
【0114】
また、本実施形態の文字列探索装置10では、探索されるべき文字列を登録し終えた後、失敗遷移先構築プログラム13gを実行することにより、各文字ノードオブジェクト133における失敗遷移先の登録が、簡単に行える。
【0115】
この失敗遷移先の登録においては、その文字を含む文字列(例えば、勅使河原)のうち先頭文字以外の文字からその文字(河)までの文字群(例えば、使河)と同じ文字構成の別の文字列(使河)が登録されている場合には、従来と同様、その別の文字列(使河)の対応する文字(河)の文字ノードオブジェクト133が、前方遷移ができないとき(ハッシュマップテーブル133bで次文字が検出できないときに)の失敗遷移先として、登録される。
【0116】
さらに、本実施形態においては、失敗遷移先として、別の文字列の対応する文字がなかった場合には、同じ文字に対応付けられているルートノードオブジェクト133が登録される(ステップS2007;YES,S2012)。
【0117】
このように、失敗遷移先として、同じ文字に対応付けられているルートノードオブジェクト133が、登録されると、図17及び図18の文字列探索処理において、失敗遷移先がなかったときに(ステップS3012;YES)、従来では、ステップS3014,S3001〜S3004を経なければならなかったものが、本実施形態によれば、ステップS3013だけを経るだけで済むようになる。これにより、失敗遷移処理を行う際のステップ数が従来技術に比して減ることとなるため、文字列探索処理に掛かる時間を短縮できるようになる。
【0118】
なお、以上の説明においては、漢字のみからなる文字列を、探索されるべき文字列の例として挙げたが、これに限定されるものではない。例えば、仮名のみからなる文字列であっても、仮名と漢字とが混ざった文字列であっても、仮名と漢字と算用数字とが混ざった文字列であってもよい。何れの場合も、文字列探索装置10に登録でき、探索対象テキストから探出させることができる。
【図面の簡単な説明】
【0119】
【図1】本実施形態の文字列探索装置の構成図
【図2】文字列探索ソフトウエアの内部構成とこれににより実現される機能とを示す概略図
【図3】ルートノード管理機能オブジェクトの概念図
【図4】文字ノードオブジェクトの概念図
【図5】文字ノードオブジェクトの概念図
【図6】文字ノードオブジェクトの概念図
【図7】文字ノードオブジェクトの概念図
【図8】文字ノードオブジェクトの概念図
【図9】文字ノードオブジェクトの概念図
【図10】図4乃至図9に示した文字ノードオブジェクトのリンク状態を模式的に示す概略図
【図11】失敗遷移機能オブジェクトの概念図
【図12】パターン登録処理の流れを示す図
【図13】パターン登録処理の流れを示す図
【図14】パターン登録処理の流れを示す図
【図15】失敗遷移先構築処理の流れを示す図
【図16】失敗遷移先構築処理の流れを示す図
【図17】文字列探索処理の流れを示す図
【図18】文字列探索処理の流れを示す図
【符号の説明】
【0120】
10 文字列探索装置
10c HDD
10d CPU
10e DRAM
11 テキストデータ
12 アプリケーション
13 文字列探索ソフトウエア
13b 文字列探索オートマトンライブラリ
13c ルートノード管理機能ライブラリ
13d 文字ノードライブラリ
13e 失敗遷移機能ライブラリ
13f パターン登録プログラム
13g 失敗遷移先構築プログラム
131 文字列探索オートマトンオブジェクト
132 ルートノード管理機能オブジェクト
133 文字ノードオブジェクト
134 失敗遷移機能オブジェクト

【特許請求の範囲】
【請求項1】
エイホ=コラシックアルゴリズムに従って探索対象テキストの中から文字列の探索を行う文字列探索装置に対し、探索されるべき文字列を登録するための文字列登録方法であって、
登録対象として指定された文字列を構成する文字のそれぞれについて、その文字列の先頭からその文字までの文字群を示す経緯情報を保持する文字ノードオブジェクトを、生成する文字ノード生成手順,
前記文字ノードオブジェクトのそれぞれに対し、その文字ノードオブジェクトが保持する経緯情報が示す文字群の次に存在すべき文字を示す次文字情報と、その次文字情報が示す文字に対応する他の文字ノードオブジェクトの所在情報とを対応付けて記録する前方リンク定義手順,及び、
前記次文字情報が示す文字に異体字がある場合に、その異体字を示す異体字情報と、その次文字情報に対応付けられている所在情報とを、対応付けて、その次文字情報を持つ文字ノードオブジェクトに記録する異体字リンク定義手順
からなることを特徴とする文字列登録方法。
【請求項2】
前記文字ノードオブジェクトのそれぞれについて、その文字ノードオブジェクトの所在情報とその文字ノードオブジェクトが持つ経緯情報が示す文字群を逆順に並び替えたものとを対応付けて第1のテーブルに格納する候補生成手順,及び、
前記文字ノードオブジェクトのそれぞれについて、その文字ノードオブジェクトが持つ経緯情報が示す文字群を逆順に並び替えたものの末尾から一文字ずつ削除するごとに、削除後の文字群で前記テーブルを検索する処理,及び、何れかの検索によりそのテーブルからレコードが検出できたときに、その文字群の先頭文字を示す文字情報と、そのレコード内の所在情報とを対応付けて記録する処理を行う失敗遷移先構築手順
を更に含むことを特徴とする請求項1記載の文字列登録方法。
【請求項3】
前記文字ノード生成手順において生成された前記各文字ノードオブジェクトのうち、登録対象として指定された文字列における先頭の文字に対応する文字ノードオブジェクトの所在情報を、その先頭の文字に対応付けて、ルートノード情報として第2のテーブルに格納するルートノード定義手順
を更に含み、
前記失敗遷移先構築手順において、逆順に並び替えた文字群から一文字ずつ削除することにより残り一文字となった場合に、その残りの一文字が前記第2のテーブル内の何れかの文字と一致するときには、その第2のテーブル内でその文字に対応付けられている所在情報と、当該一文字とを対応付けて、その文字ノードオブジェクトに記録する
ことを特徴とする請求項2記載の文字列登録方法。
【請求項4】
エイホ=コラシックアルゴリズムに従って探索対象テキストの中から文字列の探索を行う文字列探索装置に対し、探索されるべき文字列を登録するための文字列登録プログラムであって、
コンピュータを、
探索されるべき文字列を登録する指示を入力装置を通じて利用者から受け付ける受付手段,
前記受付手段が受け付けた文字列を構成する文字のそれぞれについて、その文字列の先頭からその文字までの文字群を示す経緯情報を保持する文字ノードオブジェクトを、メモリ上に生成する文字ノード生成手段,
前記文字ノード生成手段がメモリ上に生成した前記文字ノードオブジェクトのそれぞれに対し、その文字ノードオブジェクトが保持する経緯情報が示す文字群の次に存在すべき文字を示す次文字情報と、その次文字情報が示す文字に対応する他の文字ノードオブジェクトの所在情報とを対応付けて記録する前方リンク定義手段,及び、
前記次文字情報が示す文字に異体字がある場合に、その異体字を示す異体字情報と、その次文字情報に対応付けられている所在情報とを、対応付けて、その次文字情報を持つ文字ノードオブジェクトに記録する異体字リンク定義手段
として機能させる
ことを特徴とする文字列登録プログラム。
【請求項5】
エイホ=コラシックアルゴリズムに従って探索対象テキストの中から文字列の探索を行う文字列探索装置であって、
探索されるべき文字列を登録する指示を利用者から受け付ける受付部,
前記受付部が受け付けた文字列を構成する文字のそれぞれについて、その文字列の先頭からその文字までの文字群を示す経緯情報を保持する文字ノードオブジェクトを、生成する文字ノード生成部,
前記文字ノード生成部が生成した前記文字ノードオブジェクトのそれぞれに対し、その文字ノードオブジェクトが保持する経緯情報が示す文字群の次に存在すべき文字を示す次文字情報と、その次文字情報が示す文字に対応する他の文字ノードオブジェクトの所在情報とを対応付けて記録する前方リンク定義部,及び、
前記次文字情報が示す文字に異体字がある場合に、その異体字を示す異体字情報と、その次文字情報に対応付けられている所在情報とを、対応付けて、その次文字情報を持つ文字ノードオブジェクトに記録する異体字リンク定義部
を備えることを特徴とする文字列探索装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate