JP5293301B2 - SEARCH DEVICE, SEARCH METHOD, AND STORAGE MEDIUM - Google Patents
SEARCH DEVICE, SEARCH METHOD, AND STORAGE MEDIUM Download PDFInfo
- Publication number
- JP5293301B2 JP5293301B2 JP2009063166A JP2009063166A JP5293301B2 JP 5293301 B2 JP5293301 B2 JP 5293301B2 JP 2009063166 A JP2009063166 A JP 2009063166A JP 2009063166 A JP2009063166 A JP 2009063166A JP 5293301 B2 JP5293301 B2 JP 5293301B2
- Authority
- JP
- Japan
- Prior art keywords
- character
- state
- digit
- transition
- character string
- 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.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
本発明は、ACマシンを用いてパターン照合を実行する検索装置等に関する。 The present invention relates to a search device that performs pattern matching using an AC machine.
近年、検索システムのコアエンジンとしてACマシン(Aho-Corasick machines)が利用されている。このACマシンは、テキストデータ(文字列)が与えられた場合にパターン照合を実行し、検索対象の文字列(キーワードまたはパターンと呼ぶ)の出現位置をテキストデータ中から高速に算出するものである(例えば、特許文献1、非特許文献1〜3参照)。
In recent years, AC machines (Aho-Corasick machines) are used as a core engine of a search system. This AC machine performs pattern matching when text data (character string) is given, and calculates the appearance position of the character string to be searched (referred to as a keyword or pattern) from the text data at high speed. (For example, refer to
ACマシンによるパターン照合は、テキストデータDを1回スキャンするだけで終了するため、検索対象のキーワードの数がどれだけ増えても計算時間はO(|D|)で一定である。また、ACマシンは、テキストデータへの前処理を必要とせず、そのまま1スキャンで計算できるという手軽さから、リアルタイム処理、オンデマンド処理、ストリーム処理などに特に適している。 Since the pattern matching by the AC machine is completed only by scanning the text data D once, the calculation time is constant at O (| D |) no matter how much the number of keywords to be searched increases. The AC machine is particularly suitable for real-time processing, on-demand processing, stream processing, and the like because it does not require preprocessing of text data and can be calculated as it is in one scan.
例えば、大文字と小文字のように、類似した文字を区別しないあいまい検索を、ACマシンを用いて実現させた場合、ヒットしたキーワードのうち、どの程度が大文字でどの程度が小文字なのか(類似度)を判定することが求められる。 For example, when a fuzzy search that does not distinguish between similar characters such as uppercase and lowercase letters is realized using an AC machine, how many uppercase letters and lowercase letters are in the hit keywords (similarity) Is required to be determined.
しかし、上述したACマシンをそのまま適用すると、パターン照合が終了した時点で、ヒットしたキーワードがACマシン上のどの経路を通ってヒットしたのかを判定することが出来ない。従って、ヒットした文字のうち、どの程度が大文字でどの程度が小文字なのかを判定することができない。 However, if the above-described AC machine is applied as it is, it cannot be determined through which path on the AC machine the hit keyword has been hit when the pattern matching is completed. Therefore, it is impossible to determine how much of the hit characters are uppercase letters and how much are lowercase letters.
なお、各文字における候補の組合せを全て展開したACマシンを作成すれば、ヒットした文字のうち、どの程度が大文字でどの程度が小文字なのかを判定することが可能となる。しかし、かかる手法では、ACマシンに含まれる状態数が、指数的に増加してしまうため、現実的ではない。 If an AC machine in which all combinations of candidates for each character are developed is created, it is possible to determine how much of the hit characters are uppercase letters and how much are lowercase letters. However, this method is not realistic because the number of states included in the AC machine increases exponentially.
すなわち、ACマシンの状態数を増加させることなくあいまい検索を実現させ、照合結果となるキーワードの類似度を正確に判定することが重要な課題となっている。 That is, it is an important issue to realize a fuzzy search without increasing the number of states of the AC machine and to accurately determine the similarity of keywords as a matching result.
開示の技術は、上記に鑑みてなされたものであって、ACマシンの状態数を増加させることなくあいまい検索を実現させ、照合結果となるキーワードの類似度を正確に判定することが出来る検索装置、検索方法、記憶媒体を提供することを目的とする。 The disclosed technology has been made in view of the above, and can realize a fuzzy search without increasing the number of states of an AC machine, and can accurately determine the similarity of keywords as a matching result. An object is to provide a search method and a storage medium.
この検索装置は、複数のOR条件の文字列検索において、該条件の文字列に含まれる正解文字に対して、該正解文字ではないが条件一致と見なされる許容文字を設定して照合処理する曖昧検索を、ACオートマトンで実行する検索装置であって、前記複数の条件文字列の文字桁毎に、正解文字および許容文字、各文字に対応する点数を設定するとともに、特定の条件文字列の特定文字桁数までは一致したがその後に不一致が発生した際、あるいは、特定の条件文字列がすべて一致した際に、他の条件文字列の特定の文字桁の文字へ遷移するフェイラ遷移を設定したACオートマトンのトライ構造を生成する生成手段と、前記トライ構造の文字桁毎に、検索対象である対象文字列が一致した正解文字あるいは許容文字列に対応付けられた点数が管理される点数テーブルと、前記対象文字列を記憶装置から抽出し、該対象文字列に含まれる文字が前記トライ構造における特定の文字桁の正解文字あるいは許容文字と一致するか照合し、文字が一致する場合は、一致した文字桁に対応付けて正解文字または許容文字に対応する点数を前記点数テーブルに記録し、更に該対象文字列の次の文字について、該トライ構造の次の文字桁の正解文字または許容文字と照合することを順次繰り返す照合手段と、対象文字列の次の文字を照合する際、前記フェイラ遷移に基づいて前記他の条件文字列の特定の文字列に移動する場合、該フェイラ遷移の遷移元と遷移先の文字桁の桁数の差を識別し、前記点数テーブルに記録された各文字桁の点数を、現在対応付けられた文字桁から該識別した桁数の差分だけ減じた文字桁の点数に変更する変更手段と、いずれかの条件文字列の全文字桁で文字一致した時点で、前記点数テーブルに記録されている点数の合計を算出し、該合計点数に基づき条件文字列と前記対象文字列に含まれる文字列の類似度を出力する出力手段を、備えることを要件とする。 This search device uses a plurality of OR condition character string searches to set a permissible character that is not a correct character but is considered to be a condition match for a correct character included in the character string of the condition, and performs an ambiguous process. A search device for executing a search by an AC automaton, wherein correct characters and allowable characters, points corresponding to each character are set for each character digit of the plurality of conditional character strings, and a specific conditional character string is specified. Set up a failer transition that transitions to a character of a specific character digit in another condition character string when it matches up to the number of character digits but a mismatch occurs after that or when all of the specific condition character strings match. The generating means for generating the AC automaton trie structure, and for each character digit of the trie structure, the score associated with the correct character or the allowable character string that matches the target character string to be searched is The target score string and the target character string are extracted from the storage device, and the characters included in the target character string are collated with a correct character or an allowable character of a specific character digit in the trie structure. When they match, the score corresponding to the correct character or the allowable character is recorded in the score table in association with the matched character digit, and for the next character of the target character string, the next character digit of the trie structure is recorded. When collating the correct character or the allowed character in order to repeat the collation sequentially and when collating the next character of the target character string, when moving to a specific character string of the other conditional character string based on the failer transition, The difference between the number of digits of the transition source and the destination of the transition of the failer is identified, and the score of each character digit recorded in the score table is changed from the currently associated character digit to the difference of the identified digit number When the character matching is made in all the character digits of any of the condition character strings, the sum of the points recorded in the score table is calculated and the total score is calculated. It is a requirement to provide output means for outputting the similarity between the condition character string and the character string included in the target character string.
この検索装置によれば、ACマシンの状態数を増加させることなくあいまい検索を実現させ、照合結果となるキーワードの類似度を正確に判定することができる。 According to this search device, it is possible to realize an ambiguous search without increasing the number of states of the AC machine, and to accurately determine the degree of similarity of the keywords that are the matching results.
以下に、本願の開示する(発明の名称)の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。 Hereinafter, embodiments of the present invention (name of the invention) will be described in detail with reference to the drawings. Note that the present invention is not limited to the embodiments.
まず、本実施例を説明する前に、従来のACマシン(ACオートマトン)について説明する。図1は、従来のACマシンのデータ構造の一例を示す図である。図1に示すACマシンは、テキストデータが入力された場合に、キーワード「AC、BA、BB、BAA、BACD」の位置を算出するACマシンである。 First, a conventional AC machine (AC automaton) will be described before describing this embodiment. FIG. 1 is a diagram illustrating an example of a data structure of a conventional AC machine. The AC machine shown in FIG. 1 is an AC machine that calculates the position of the keywords “AC, BA, BB, BAA, BACD” when text data is input.
図1に示すように、ACマシンは、状態0〜8を有しており、各状態は、初期状態、通常状態、照合状態に分別される。初期状態は、初めにテキストデータと照合される状態であり、通常状態は、2番目以降にテキストデータと照合される状態である。照合状態は、テキストデータが特定のキーワードにヒットした場合に遷移する状態である。図1に示す例では、初期状態を状態1とし、通常状態を状態1,3とし、照合状態は状態2,4〜8とする。
As shown in FIG. 1, the AC machine has
ACマシンは、テキストデータの文字を初期状態0から順次照合し、通常遷移とフェイラ(Failure)遷移を繰り返すことで、テキストデータに含まれるテキスト(例えば、図1の集合Πに含まれるテキスト)の出現位置を算出する。
The AC machine sequentially checks the characters of the text data from the
ここで、通常遷移は、照合対象となる状態において、テキストデータの比較対象となる文字による遷移先が存在する場合の遷移を示す。例えば、状態1において、テキストデータの比較対象となる文字がCの場合には、通常遷移となる。テキストデータの文字がCの場合には、状態1から状態2に通常遷移する。
Here, the normal transition indicates a transition when there is a transition destination by a character to be compared with text data in a state to be collated. For example, in
一方、通常遷移の条件に該当しない場合には、フェイラ遷移となる。例えば、状態1において、テキストデータの比較対象となる文字がC以外の場合には、フェイラ遷移となる。状態1においてフェイラ遷移した場合には、状態0となる。ACマシンでは、各状態に一本ずつフェイラ遷移が存在する。図1で省略されているフェイラ遷移は、全て初期状態0に向かっているものとする。
On the other hand, if the conditions for the normal transition are not met, a failer transition occurs. For example, in the
ここで、図1に示したACマシンが有する状態(状態構造体)のデータ構造について説明する。図2は、従来の状態構造体のデータ構造の一例を示す図である。図2に示すように、この状態構造体は、各状態を識別する状態IDと、パターンリストと、通常遷移先へのポインタと、フェイラ遷移先へのポインタを有する。 Here, the data structure of the state (state structure) of the AC machine shown in FIG. 1 will be described. FIG. 2 is a diagram illustrating an example of a data structure of a conventional state structure. As shown in FIG. 2, this state structure has a state ID for identifying each state, a pattern list, a pointer to a normal transition destination, and a pointer to a failer transition destination.
ここで、パターンリストは、状態構造体が照合状態の場合に、該当するキーワードを格納する。例えば、状態2(状態ID2)の状態構造体に含まれるパターンリストは、ACとなる。 Here, the pattern list stores a corresponding keyword when the state structure is in a collation state. For example, the pattern list included in the state structure of state 2 (state ID 2) is AC.
次に、従来技術の装置(以下、従来装置;図示略)が、ACマシンを構築する処理手順について説明する。図3は、従来のACマシンを構築する処理手順を示すフローチャートである。図3に示すように、従来装置は、パターン集合Π(検索対象となるキーワードの集合)を取得し(ステップS10)、パターン集合ΠのトライTの構築処理を実行する(ステップS11)。そして、従来装置は、フェイラ遷移追加処理を実行し(ステップS12)、ACマシンα(Π)を出力する(ステップS13)。 Next, a processing procedure for constructing an AC machine by a conventional device (hereinafter, a conventional device; not shown) will be described. FIG. 3 is a flowchart showing a processing procedure for constructing a conventional AC machine. As shown in FIG. 3, the conventional apparatus acquires a pattern set Π (a set of keywords to be searched) (step S10), and executes a process of constructing a trie T for the pattern set ((step S11). Then, the conventional apparatus executes a failer transition addition process (step S12), and outputs an AC machine α (Π) (step S13).
次に、図3のステップS11に示したパターン集合Πのトライ木構築処理について説明する。図4は、従来のパターン集合ΠのトライTの構築処理の処理手順を示すフローチャートである。図4に示すように、従来装置は、初期状態(id=0)を作成し、トライT(Π)を初期状態のみで構成されるトライに設定する(ステップS20)。 Next, the trie tree construction process for the pattern set 示 し shown in step S11 of FIG. 3 will be described. FIG. 4 is a flowchart showing a processing procedure of a conventional process for constructing a trie T of a pattern set IV. As shown in FIG. 4, the conventional apparatus creates an initial state (id = 0), and sets a trie T (Π) to a trie that includes only the initial state (step S20).
従来装置は、初期状態における通常遷移先のポインタを全て初期状態(id=0)に設定し(ステップS21)、パターン集合Πにパターンが存在するか否かを判定する(ステップS22)。パターンが存在しない場合には(ステップS23,No)、トライT(Π)を出力する(ステップS24)。 The conventional apparatus sets all the normal transition destination pointers in the initial state to the initial state (id = 0) (step S21), and determines whether a pattern exists in the pattern set ((step S22). If the pattern does not exist (step S23, No), a trie T (Π) is output (step S24).
一方、パターン集合Πにパターンが存在する場合には(ステップS23,Yes)、パターン集合Πから1つのパターンを取り出し、取り出したパターンをパターンpに設定し(ステップS25)、パターン登録処理を実行する(ステップS26)。 On the other hand, if a pattern exists in the pattern set ((step S23, Yes), one pattern is extracted from the pattern set 、, the extracted pattern is set as the pattern p (step S25), and pattern registration processing is executed. (Step S26).
次に、図4のステップS26に示したパターン登録処理について説明する。図5は、従来のパターン登録処理の処理手順を示すフローチャートである。図5に示すように、従来装置は、状態sをトライTの初期状態に設定し(ステップS30)、パターンpに次の文字が存在するか否かを判定する(ステップS31)。 Next, the pattern registration process shown in step S26 of FIG. 4 will be described. FIG. 5 is a flowchart showing a processing procedure of a conventional pattern registration process. As shown in FIG. 5, the conventional apparatus sets the state s to the initial state of the trie T (step S30), and determines whether or not the next character exists in the pattern p (step S31).
パターンpに次の文字が存在しない場合には(ステップS32,No)、従来装置は、状態sのパターンリストPlistにパターンpを代入し(ステップS33)、トライTを出力する(ステップS34)。 When the next character does not exist in the pattern p (step S32, No), the conventional apparatus substitutes the pattern p for the pattern list Plist in the state s (step S33), and outputs a trie T (step S34).
一方、パターンpに次の文字が存在する場合には(ステップS32,Yes)、従来装置は、次の文字をaとし、aのasciiコードをcode(a)に設定し(ステップS35)、状態sの通常遷移先へのポインタg[code(a)]がNullであるか否かを判定する(ステップS36)。 On the other hand, when the next character exists in the pattern p (step S32, Yes), the conventional apparatus sets the next character as a, sets the ascii code of a to code (a) (step S35), and the state It is determined whether or not the pointer g [code (a)] to the normal transition destination of s is Null (step S36).
通常遷移先へのポインタg[code(a)]がNullではない場合には(ステップS37,No)、ステップS39に移行する。一方、従来装置は、通常遷移先へのポインタg[code(a)]がNullの場合には(ステップS37,Yes)、状態nを新規作成し、状態sの通常遷移先へのポインタg[code(a)]をnに設定する(ステップS38)。そして、従来装置は、状態sにg[code(a)]を代入し(ステップS39)、ステップS31に移行する。 When the pointer g [code (a)] to the normal transition destination is not Null (step S37, No), the process proceeds to step S39. On the other hand, when the pointer g [code (a)] to the normal transition destination is null (step S37, Yes), the conventional apparatus creates a new state n and points to the normal transition destination g [ code (a)] is set to n (step S38). Then, the conventional device substitutes g [code (a)] for the state s (step S39), and proceeds to step S31.
次に、図3のステップS12に示したフェイラ遷移追加処理について説明する。図6および図7は、従来のフェイラ遷移追加処理の処理手順を示すフローチャートである。図6に示すように、従来装置は、初期状態から通常遷移先となる状態を判定し、判定した状態をキュー(queue)に登録する(ステップS40)。 Next, the failer transition addition process shown in step S12 of FIG. 3 will be described. 6 and 7 are flowcharts showing a processing procedure of conventional failer transition addition processing. As shown in FIG. 6, the conventional apparatus determines a state that is a normal transition destination from the initial state, and registers the determined state in a queue (step S40).
そして、従来装置は、キューに登録された状態(状態構造体)のフェイラ遷移先に初期状態を登録し(ステップS41)、キューに状態が存在するか否かを判定する(ステップS42)。キューに状態が存在しない場合には(ステップS43,No)、トライTをACマシンαとして出力する(ステップS44)。 Then, the conventional apparatus registers the initial state in the failer transition destination of the state (state structure) registered in the queue (step S41), and determines whether or not the state exists in the queue (step S42). If there is no state in the queue (step S43, No), the trie T is output as the AC machine α (step S44).
一方、キューに状態が存在する場合には(ステップS43,Yes)、キューの先頭の状態を取り出し、取り出した状態を状態sに設定し(ステップS45)、状態sの通常遷移先へのポインタが全てNullであるか否かを判定する(ステップS46)。状態sの通常遷移先へのポインタが全てNullの場合には(ステップS47,Yes)、ステップS42に移行する。 On the other hand, if a state exists in the queue (step S43, Yes), the head state of the queue is extracted, the extracted state is set to state s (step S45), and a pointer to the normal transition destination of state s is set. It is determined whether or not all are null (step S46). When all the pointers to the normal transition destination of the state s are Null (step S47, Yes), the process proceeds to step S42.
一方、状態sの通常遷移先へのポインタが全てNullではない場合には(ステップS47,No)、図7に示すように、従来装置は、状態sにおいて、g[code(a)]≠Nullとなる全ての文字aを抽出し、抽出した文字aを集合Xに格納する(ステップS48)。 On the other hand, when all the pointers to the normal transition destination in the state s are not null (step S47, No), as shown in FIG. 7, the conventional apparatus g [code (a)] ≠ Null in the state s. Are extracted and stored in the set X (step S48).
従来装置は、集合Xに文字が存在するか否かを判定し(ステップS49)、集合Xに文字が存在しない場合には(ステップS50,No)、ステップS42に移行する。一方、集合Xに文字が存在する場合には(ステップS50,Yes)、集合Xから文字aを一つ取り出し、取り出した文字aに該当する文字を集合Xから削除する(ステップS51)。 The conventional apparatus determines whether or not a character exists in the set X (step S49). If no character exists in the set X (step S50, No), the process proceeds to step S42. On the other hand, if there is a character in the set X (step S50, Yes), one character a is extracted from the set X, and the character corresponding to the extracted character a is deleted from the set X (step S51).
従来装置は、状態sの通常遷移先をキューの最後尾に追加し(ステップS52)、フェイラ遷移を繰り返し、文字aに対する通常遷移先がNullにならない最初の状態を状態fに設定する(ステップS53)。従来装置は、フェイラ遷移先の状態から文字aの通常遷移先へのポインタfnext=g[code(a)]を判定する(ステップS54)。 The conventional apparatus adds the normal transition destination of the state s to the tail of the queue (step S52), repeats the failer transition, and sets the first state where the normal transition destination for the character a is not null to the state f (step S53). ). The conventional apparatus determines the pointer fnext = g [code (a)] from the state of the failer transition destination to the normal transition destination of the character a (step S54).
従来装置は、状態sから文字aにより遷移する状態nextを判定し(ステップS55)、状態nextのフェイラ遷移先をfnext=g[code(a)]に設定し(ステップS56)、状態nextのフェイラ遷移先の状態にパターンリストが存在する場合に、かかるパターンリストを状態nextのパターンリストに追加し(ステップS57)、ステップS49に移行する。 The conventional apparatus determines the state next to be transitioned from the state s by the letter a (step S55), sets the next transition destination of the state next to fnext = g [code (a)] (step S56), and the state next state failer. When the pattern list exists in the transition destination state, the pattern list is added to the pattern list in the state next (step S57), and the process proceeds to step S49.
次に、図3のステップS11で示したパターン集合ΠのトライT構築処理を、具体例を用いて説明する。図8〜図10は、従来のパターン集合ΠのトライT構築処理を説明するための図である。ここでは一例として、パターン集合ΠをΠ={AC、BA、BB、BAA、BACD}とする。 Next, the pattern set ト ラ イ tri-T construction process shown in step S11 of FIG. 3 will be described using a specific example. FIGS. 8 to 10 are diagrams for explaining a conventional T-construction process for a pattern set Π. Here, as an example, the pattern set Π is Π = {AC, BA, BB, BAA, BACD}.
まず、従来装置は、初期状態(id=0)を作成し、初期状態の状態構造体における通常遷移先を全て初期状態に設定する(図8、ステップS60)。そして、従来装置は、パターン集合Πからパターン「AC」を取り出す。従来装置は、文字Aを選択し、文字Aによる初期状態(id=0)の通常遷移先を通常状態(id=1)に設定する。また、従来装置は、文字Cを選択し、文字Cによる通常状態(id=1)の通常遷移先を照合状態(id=2)に設定し、照合状態のパターンリストを「AC」に設定する(図8、ステップS61)。文字Cは、パターン「AC」最後尾の文字であるため、状態2は、照合状態となる。
First, the conventional apparatus creates an initial state (id = 0), and sets all normal transition destinations in the state structure in the initial state to the initial state (FIG. 8, step S60). Then, the conventional apparatus extracts the pattern “AC” from the pattern set Π. The conventional apparatus selects the character A and sets the normal transition destination of the initial state (id = 0) by the character A to the normal state (id = 1). Further, the conventional apparatus selects the character C, sets the normal transition destination of the normal state (id = 1) by the character C to the collation state (id = 2), and sets the collation state pattern list to “AC”. (FIG. 8, step S61). Since the character C is the last character of the pattern “AC”, the
従来装置は、初期状態(id=0)に戻り、パターン集合Πからパターン「BA」を取り出す。従来装置は、文字Bを選択し、文字Bによる初期状態(id=0)の通常遷移先を通常状態(id=3)に設定する。また、従来装置は、文字Aを選択し、文字Aによる通常状態(id=3)の通常遷移先を照合状態(id=4)に設定し、照合状態のパターンリストを「BA」に設定する(図8、ステップS62)。文字Aは、パターン「BA」の最後尾の文字であるため、状態4は、照合状態となる。
The conventional apparatus returns to the initial state (id = 0), and extracts the pattern “BA” from the pattern set Π. The conventional apparatus selects the character B and sets the normal transition destination of the initial state (id = 0) by the character B to the normal state (id = 3). Further, the conventional apparatus selects the character A, sets the normal transition destination of the normal state (id = 3) by the character A to the collation state (id = 4), and sets the collation state pattern list to “BA”. (FIG. 8, step S62). Since the character A is the last character of the pattern “BA”, the
従来装置は、初期状態(id=0)に戻り、パターン集合Πからパターン「BB」を取り出し、文字Bを選択する。ここで、文字Bによる初期状態(id=0)の通常遷移先は通常状態(id=3)であり、既に作成済みであるため、現在の状態を通常状態(id=3)に遷移する。また、従来装置は、文字Bを選択し、文字Bによる通常状態(id=3)の通常遷移先を照合状態(id=5)に設定し、パターンリストを「BB」に設定する(図9、ステップS63)。文字Bは、パターン「BB」の最後尾の文字であるため、状態5は、照合状態となる。
The conventional apparatus returns to the initial state (id = 0), extracts the pattern “BB” from the pattern set Π, and selects the character B. Here, since the normal transition destination of the initial state (id = 0) by the letter B is the normal state (id = 3) and has already been created, the current state is transitioned to the normal state (id = 3). Further, the conventional apparatus selects the character B, sets the normal transition destination of the normal state (id = 3) by the character B to the collation state (id = 5), and sets the pattern list to “BB” (FIG. 9). Step S63). Since the character B is the last character of the pattern “BB”, the
従来装置は、初期状態(id=0)に戻り、パターン集合Πからパターン「BAA」を取り出し、文字Bを選択する。ここで、文字Bによる初期状態(id=0)の通常遷移先は、通常状態(id=3)であり、既に作成済みであるため、現在の状態を通常状態(id=3)に遷移する。また、従来装置は、文字Aを選択する。ここで、文字Aによる通常状態(id=3)の通常遷移先は、照合状態(id=4)であり、既に作成済みであるため、現在の状態を照合状態(id=4)に設定する。また、従来装置は、文字Aを選択する。文字Aによる照合状態(id=4)の通常遷移先を照合状態(id=6)に設定し、パターンリストを「BAA」に設定する(図9、ステップS64)。文字Aは、パターン「BAA」の最後尾の文字であるため、状態6は、照合状態となる。
The conventional apparatus returns to the initial state (id = 0), extracts the pattern “BAA” from the pattern set Π, and selects the character B. Here, since the normal transition destination of the initial state (id = 0) by the letter B is the normal state (id = 3) and has already been created, the current state is transitioned to the normal state (id = 3). . Further, the conventional apparatus selects the letter A. Here, since the normal transition destination of the normal state (id = 3) by the character A is the collation state (id = 4) and has already been created, the current state is set to the collation state (id = 4). . Further, the conventional apparatus selects the letter A. The normal transition destination of the collation state (id = 4) by the character A is set to the collation state (id = 6), and the pattern list is set to “BAA” (FIG. 9, step S64). Since the character A is the last character of the pattern “BAA”, the
従来装置は、初期状態(id=0)に戻り、パターン集合Πからパターン「BACD」を取り出し、文字Bを選択する。ここで、文字Bによる初期状態(id=0)の通常遷移先は、通常状態(id=3)であり、既に登録済みであるため、現在の状態を通常状態(id=3)に遷移する。また、従来装置は、文字Aを選択する。ここで、文字Aによる通常状態(id=3)の通常遷移先は、照合状態(id=4)であり、既に作成済みであるため、現在の状態を照合状態(id=4)に設定する。 The conventional apparatus returns to the initial state (id = 0), extracts the pattern “BACD” from the pattern set Π, and selects the character B. Here, since the normal transition destination of the initial state (id = 0) by the letter B is the normal state (id = 3) and has already been registered, the current state transitions to the normal state (id = 3). . Further, the conventional apparatus selects the letter A. Here, since the normal transition destination of the normal state (id = 3) by the character A is the collation state (id = 4) and has already been created, the current state is set to the collation state (id = 4). .
また、従来装置は、文字Cを選択し、文字Cによる照合状態(id=4)の通常遷移先を通常状態(id=7)に設定する。また、従来装置は、文字Dを選択し、文字Dによる通常状態(id=7)の通常遷移先を照合状態(id=8)に設定し、パターンリストを「BACD」に設定する(図10、ステップS65)。文字Dは、パターン「BACD」の最後尾の文字であるため、状態8は、照合状態となる。ステップS65が終了した段階で、パターン集合Πに含まれる全てのパターンの登録が終了し、トライTの構築処理が終了する。
Further, the conventional apparatus selects the character C and sets the normal transition destination of the collation state (id = 4) by the character C to the normal state (id = 7). Further, the conventional apparatus selects the character D, sets the normal transition destination of the normal state (id = 7) by the character D to the collation state (id = 8), and sets the pattern list to “BACD” (FIG. 10). Step S65). Since the character D is the last character of the pattern “BACD”, the
次に、図3のステップS12に示したフェイラ遷移追加処理を、具体例を用いて説明する。図11〜図19は、従来のフェイラ遷移追加処理を説明するための図である。従来装置は、初期状態(id=0)からの通常遷移先となる状態を判定し、判定した状態をキュー(Queue)に登録し、キューに登録された状態のフェイラ遷移先に初期状態0を登録する。ここで、初期状態の通常遷移先は、通常状態1、3となるので、キューに1、3を登録する。また、通常状態1、3のフェイラ遷移先を初期状態0に設定する(図11参照)。
Next, the failer transition addition process shown in step S12 of FIG. 3 will be described using a specific example. FIGS. 11-19 is a figure for demonstrating the conventional failer transition addition process. The conventional device determines the state that is the normal transition destination from the initial state (id = 0), registers the determined state in the queue (Queue), and sets the
次に、従来装置は、キューの先頭の状態1を取り出し、取り出した状態1を状態sに設定する。従来装置は、状態sにおいて、g[code(a)]≠Nullとなる全ての文字aを抽出し、集合Xに格納する。この場合は、従来装置は、文字Cを抽出し、集合Xに文字Cを格納する。
Next, the conventional apparatus takes out
従来装置は、集合Xから文字Cを取り出し、状態sの通常遷移先となる状態2をキューの最後尾に追加する。従来装置は、状態1からフェイラ遷移した初期状態0に移行し、文字Cに対する通常遷移先を判定することで、状態nextのフェイラ遷移先を判定すると、初期状態0となる。従来装置は、状態s(通常状態1)から文字Cにより遷移する状態nextを判定し、判定した状態(照合状態2)のフェイラ遷移先を初期状態0に設定する(図12参照)。
The conventional apparatus extracts the character C from the set X, and adds the
従来装置は、キューの先頭の状態3を取り出し、取り出した状態3を状態sに設定する。従来装置は、状態sにおいて、g[code(a)]≠Nullとなる全ての文字aを抽出し、集合Xに格納する。この場合は、従来装置は、文字A、Bを抽出し、集合Xに文字A、Bを格納する。
The conventional apparatus extracts the
従来装置は、集合Xから文字Aを取り出し、状態sの文字Aの通常遷移先となる状態4をキューの最後尾に追加する。従来装置は、状態sからフェイラ遷移した初期状態(id=0)に移行し、文字Aに対する通常遷移先を判定することで、状態nextのフェイラ遷移先を判定すると、状態1となる。従来装置は、状態s(通常状態3)から文字Aにより遷移する状態nextを判定し、判定した状態(照合状態4)のフェイラ遷移先を状態1に設定する(図13の状態4参照)。
The conventional apparatus extracts the character A from the set X, and adds the
従来装置は、集合Xから文字Bを取り出し、状態s(通常状態3)の文字Bの通常遷移先となる状態5をキューの最後尾に追加する。従来装置は、状態sからフェイラ遷移した初期状態0に移行し、文字Bに対する通常遷移先を判定することで、状態nextのフェイラ遷移先を判定すると、状態3となる。従来装置は、状態sから文字Bにより遷移する状態nextを判定し、判定した状態(照合状態5)のフェイラ遷移先を状態3に設定する(図13の状態5参照)。
The conventional apparatus extracts the character B from the set X and adds the
従来装置は、キューの先頭の状態2を取り出し、取り出した状態2を状態sに設定する。従来装置は、状態sにおいて、g[code(a)]≠Nullとなる全ての文字aを抽出し、集合Xに格納する。状態sに通常遷移先は存在しないので、次のステップに移行する(図14参照)。
The conventional apparatus extracts the
従来装置は、キューの先頭の状態4を取り出し、取り出した状態4を状態sに設定する。従来装置は、状態sにおいて、g[code(a)]≠Nullとなる全ての文字aを抽出し、集合Xに格納する。この場合は、従来装置は、文字A、Cを抽出し、集合Xに文字A、Cを格納する。
The conventional apparatus extracts the
従来装置は、集合Xから文字Aを取り出し、状態s(照合状態4)の文字Aの通常遷移先となる状態6をキューの最後尾に追加する。従来装置は、状態sからフェイラ遷移した状態1に移行する。状態1において、文字Aに対する通常遷移先はNullであるため、再度フェイラ遷移し、初期状態0に移行する。
The conventional apparatus extracts the character A from the set X, and adds the
そして、初期状態0において、文字Aに対する通常遷移先を判定することで、状態nextのフェイラ遷移先を判定すると、状態1となる。従来装置は、状態s(通常状態4)から文字Aにより遷移する状態nextを判定し、判定した状態(照合状態6)のフェイラ遷移先を状態1に設定する(図15の状態6参照)。
Then, in the
従来装置は、集合Xから文字Cを取り出し、状態s(照合状態4)の文字Cの通常遷移先となる状態7をキューの最後尾に追加する。従来装置は、状態sからフェイラ遷移した状態1に移行し、文字Cに対する通常遷移先を判定することで、状態nextのフェイラ遷移先を判定すると、状態2となる。従来装置は、状態sから文字Cによる遷移する状態nextを判定し、判定した状態(通常状態7)のフェイラ遷移先を状態2に設定する。
The conventional apparatus extracts the character C from the set X and adds the
また、従来装置は、状態7のフェイラ遷移先が照合状態2となるため、状態2のパターンリストを状態7のパターンリストに追加することで、状態7を照合状態7に設定する(図15の状態7参照)。
In addition, since the failure transition destination of
従来装置は、キューの先頭の状態5を取り出し、取り出した状態5を状態sに設定する。従来装置は、状態sにおいて、g[code(a)]≠Nullとなる全ての文字aを抽出し、集合Xに格納する。状態sに通常遷移先は存在しないので、次のステップに移行する(図16参照)。
The conventional apparatus extracts the
従来装置は、キューの先頭の状態6を取り出し、取り出した状態6を状態sに設定する。従来装置は、状態sにおいて、g[code(a)]≠Nullとなる全ての文字aを抽出し、集合Xに格納する。状態sに通常遷移先は存在しないので、次のステップに移行する(図17参照)。
The conventional apparatus takes out the
従来装置は、キューの先頭の状態7を取り出し、取り出した状態7を状態sに設定する。従来装置は、状態sにおいて、g[code(a)]≠Nullとなる全ての文字aを抽出し、集合Xに格納する。この場合は、従来装置は、文字Dを抽出し、集合Xに文字Dを格納する。
The conventional apparatus extracts the
従来装置は、集合Xから文字Dを取り出し、状態s(照合状態7)の文字Dの通常遷移先となる状態8をキューの最後尾に追加する。従来装置は、状態sからフェイラ遷移した状態2に移行する。状態2において、文字Dに対する通常遷移先はNullであるため、再度フェイラ遷移し、初期状態0に移行する。
The conventional apparatus extracts the character D from the set X, and adds the
そして、初期状態0において、文字Dに対する通常遷移先を判定することで、状態nextのフェイラ遷移先を判定すると、初期状態0となる。従来装置は、状態s(照合状態7)から文字Dにより遷移する状態nextを判定し、判定した状態(照合状態8)のフェイラ遷移先を初期状態0に設定する(図18の状態8参照)。
Then, by determining the normal transition destination for the character D in the
従来装置は、キューの先頭の状態8を取り出し、取り出した状態8を状態sに設定する。従来装置は、状態sにおいて、g[code(a)]≠Nullとなる全ての文字aを抽出し、集合Xに格納する。状態sに通常遷移先は存在しないので、次のステップに移行する。そして、キューに状態が存在しなくなった場合に、パターン集合ΠのACマシンが完了する(図19参照)。
The conventional apparatus extracts the
次に、従来のACマシンを用いたテキストデータのパターン照合処理について説明する。図20は、従来のパターン照合処理の処理手順を示すフローチャートである。図20に示すように、従来装置は、状態sをACマシンαの初期状態に設定し(ステップS70)、オフセットd=0に設定し、集合Rを空集合に設定する(ステップS71)。 Next, a text data pattern matching process using a conventional AC machine will be described. FIG. 20 is a flowchart showing a processing procedure of conventional pattern matching processing. As shown in FIG. 20, the conventional apparatus sets the state s to the initial state of the AC machine α (step S70), sets the offset d = 0, and sets the set R to an empty set (step S71).
従来装置は、テキストデータDに(d+1)文字目が存在するか否かを判定し(ステップS72)、(d+1)文字目が存在しない場合には(ステップS73,No)、集合Rを出力する(ステップS74)。 The conventional device determines whether the (d + 1) -th character exists in the text data D (step S72). If the (d + 1) -th character does not exist (step S73, No), R is output (step S74).
一方、テキストデータDに(d+1)文字目が存在する場合には(ステップS73,Yes)、従来装置は、(d+1)文字目の文字を文字aに設定し(ステップS75)、d=d+1に設定する(ステップS76)。 On the other hand, when the (d + 1) -th character exists in the text data D (step S73, Yes), the conventional device sets the (d + 1) -th character to the character a (step S75), d = d + 1 is set (step S76).
従来装置は、状態sに文字aの通常遷移先が存在するか否かを判定する(ステップS77)。通常遷移先が存在する場合には(ステップS78,Yes)、状態sのg[code(a)]を状態sに代入し(ステップS79)、状態sが照合状態の場合に、状態sのパターンリストをオフセットdに対応付けて集合Rに登録し(ステップS80)、ステップS72に移行する。 The conventional apparatus determines whether or not the normal transition destination of the character a exists in the state s (step S77). When a normal transition destination exists (step S78, Yes), g [code (a)] of the state s is substituted for the state s (step S79), and when the state s is the collation state, the pattern of the state s The list is registered in the set R in association with the offset d (step S80), and the process proceeds to step S72.
通常遷移先が存在しない場合には(ステップS78,No)、状態sのフェイラ遷移先を状態sに設定し(ステップS81)、状態sが照合状態の場合に、状態sのパターンリストをオフセットdに対応付けて集合Rに登録し(ステップS82)、ステップS77に移行する。 If there is no normal transition destination (No in step S78), the state transition destination of the state s is set to the state s (step S81), and if the state s is the collation state, the pattern list of the state s is offset d. And registered in the set R (step S82), and the process proceeds to step S77.
次に、図20に示したパターン照合処理を、具体例を用いて説明する。図21〜図26は、従来のパターン照合処理を説明するための図である。ここでは一例として、パターン集合ΠをΠ={AC、BA、BB、BAA、BACD}としたACマシンを用い、テキストデータDを「CBAAC」として説明を行う。 Next, the pattern matching process shown in FIG. 20 will be described using a specific example. FIGS. 21 to 26 are diagrams for explaining a conventional pattern matching process. Here, as an example, an AC machine in which the pattern set Π is Π = {AC, BA, BB, BAA, BACD} is used, and the text data D is described as “CBAAC”.
従来装置は、状態sをACマシンαの初期状態0に設定し、集合Rを空集合に設定する(図21参照)。従来装置は、テキストデータDから文字Cを読み出し、オフセットをd=1に設定する。状態sに文字Cによる通常遷移先が存在しないので、従来装置は、状態sをフェイラ遷移させ、状態sをフェイラ遷移先の初期状態0に設定する(図22参照)。
The conventional apparatus sets the state s to the
従来装置は、テキストデータDから文字Bを読み出し、オフセットをd=2に設定する。状態s(初期状態0)において、文字Bによる通常遷移先は、状態3となるので、従来装置は、状態sを状態3に設定する(図23参照)。
The conventional apparatus reads the character B from the text data D and sets the offset to d = 2. In the state s (initial state 0), the normal transition destination by the letter B is the
従来装置は、テキストデータDから文字Aを読み出し、オフセットをd=3に設定する。状態s(通常状態3)において、文字Aによる通常遷移先は、状態4となるので、従来装置は、状態sを状態4に設定する。状態sが照合状態となったので、従来装置は、状態sのパターンリスト「BA」と、オフセット「3」を集合Rに登録する(図24参照)。
The conventional device reads the character A from the text data D and sets the offset to d = 3. In the state s (normal state 3), the normal transition destination by the letter A is the
従来装置は、テキストデータDから文字Aを読み出し、オフセットをd=4に設定する。状態s(照合状態4)において、文字Aによる通常遷移先は、状態6となるので、従来装置は、状態sを状態6に設定する。状態sが照合状態となったので、従来装置は、状態sのパターンリスト「BAA」と、オフセット「4」を集合Rに登録する(図25参照)。
The conventional apparatus reads the character A from the text data D and sets the offset to d = 4. In the state s (collation state 4), since the normal transition destination by the character A is the
従来装置は、テキストデータDから文字Cを読み出し、オフセットをd=5に設定する。状態s(照合状態6)において、文字Cによる通常遷移先は、存在しないので、フェイラ遷移し、状態sを状態1に設定する。状態sにおいて、文字Cによる通常遷移先は、状態2となるので、従来装置は、状態sを状態2に設定する。状態sが照合状態となったので、従来装置は、状態sのパターンリスト「AC」と、オフセット「5」を集合Rに登録する(図26参照)。
The conventional device reads the character C from the text data D and sets the offset to d = 5. In the state s (collation state 6), there is no normal transition destination by the character C, so a failer transition is made and the state s is set to the
従来装置は、図26に示した集合Rを、照合結果として出力する。かかる照合結果を参照すると、テキストデータのオフセット3にキーワード「BA」が存在し、オフセット4にキーワード「BAA」が存在し、オフセット5にキーワード「AC」が存在することが分かる。 The conventional apparatus outputs the set R shown in FIG. 26 as a collation result. Referring to the collation result, it can be seen that the keyword “BA” exists at the offset 3 of the text data, the keyword “BAA” exists at the offset 4, and the keyword “AC” exists at the offset 5.
次に、大文字と小文字(例えば、Aとa)のように、類似した文字を区別しないあいまい検索を、ACマシンを用いて実現させる場合について説明する。ACマシンを用いて、あいまい検索を実現させる場合には、あいまいな文字を同一状態に遷移させるようなオートマトンとして表現すればよい。 Next, a case will be described in which an ambiguous search that does not distinguish similar characters such as uppercase and lowercase letters (for example, A and a) is realized using an AC machine. When an ambiguous search is realized using an AC machine, it may be expressed as an automaton that makes ambiguous characters transition to the same state.
図27は、あいまいパターンを受け付ける従来のACマシンの一例を示す図である。図27に示す例では、パターン集合Π={(A|a)(C|c)、(B|b)(A|a)、(B|b)(B|b)、(B|b)(A|a)(A|a)、(B|b)(A|a)(C|c)(D|d)}により構築されたACマシンである。ここで、(x|y)は、xでもyでも良い旨を示す。例えば、パターン集合Πに含まれるキーワード(A|a)(C|c)に該当するキーワードは、AC、aC、Ac、acが含まれる。 FIG. 27 is a diagram illustrating an example of a conventional AC machine that accepts an ambiguous pattern. In the example shown in FIG. 27, the pattern set Π = {(A | a) (C | c), (B | b) (A | a), (B | b) (B | b), (B | b) (A | a) (A | a), (B | b) (A | a) (C | c) (D | d)}. Here, (x | y) indicates that x or y may be used. For example, the keywords corresponding to the keywords (A | a) (C | c) included in the pattern set Π include AC, aC, Ac, and ac.
ここで、図27に示すACマシンの状態遷移の一例を説明する。例えば、現在の状態が初期状態0であり、テキストデータDの文字がAまたはaの場合には、初期状態0から通常状態1に現在の状態を遷移する。このように、あいまい検索を、ACマシンで実現させると、2本以上(図27に示す例では2本)の通常遷移先が存在することなる。その他の状態遷移方法は、図1に示した従来のACマシンと同様である。
Here, an example of the state transition of the AC machine shown in FIG. 27 will be described. For example, when the current state is the
ところで、図27に示したACマシンを用いてパターン照合処理を実行する場合に、ヒットしたキーワード(集合Rに登録されたキーワード)の内、どの程度が大文字でどの程度が小文字なのかを判定すること(類似度を判定すること)が求められる。 By the way, when the pattern matching process is executed using the AC machine shown in FIG. 27, it is determined how much of the hit keywords (keywords registered in the set R) are uppercase letters and how much are lowercase letters. (Determining the degree of similarity).
しかし、図27に示したACマシンをそのまま適用すると、パターン照合が終了した時点で、ヒットしたキーワードがACマシン上のどの経路を通ってヒットしたのかを判定することが出来ない。図27において、照合状態2に到達するまでに、初期状態0から状態1に向かうまでに「A」または「a」の2通り、状態1から照合状態2に向かうまでに「C」または「c」の2通りが存在する。
However, if the AC machine shown in FIG. 27 is applied as it is, it cannot be determined through which path on the AC machine the hit keyword has been hit when the pattern matching is completed. In FIG. 27, two states, “A” or “a”, from the
従って、照合状態2(キーワード(A|a)(C|c)にヒットする状態)に至る経路は合計で4通り存在するが、いずれの経路でも照合状態2に到達するため、各経路を区別できず、ヒットしたキーワードのうち、どの程度が大文字でどの程度が小文字なのかを判定することができない。
Accordingly, there are a total of four routes that reach the matching state 2 (the state in which the keyword (A | a) (C | c) is hit), but since any route reaches the matching
かかる課題を解消するための手段として、各文字における候補の組合せを全て展開したACマシンを作成すれば、ヒットした文字のうち、どの程度が大文字でどの程度が小文字なのかを判定することが可能となる。例えば、大文字に1点、小文字に0点を割り振り、図28に示すとおり、全ての文字を展開して点数を割り付け、図29に示すACマシンを作成すればよい。図28および図29は、従来技術の問題点を説明するための図である。 As a means to solve this problem, if you create an AC machine that expands all combinations of candidates for each character, it is possible to determine how much of the hit characters are uppercase letters and how much are lowercase letters. It becomes. For example, an AC machine shown in FIG. 29 may be created by assigning 1 point to upper case letters and 0 points to lower case letters, and assigning points by expanding all characters as shown in FIG. 28 and 29 are diagrams for explaining the problems of the prior art.
例えば、図28に示すキーワードACは、大文字を2つ含むので2点となり、キーワードAc、aCは、大文字を一つ含むので1点となり、キーワードacは大文字を含まないので0点となる。そして、キーワード(A|a)(C|c)に対して、4通りの経路を用意してやれば、キーワード(A|a)(C|c)にヒットした際の点数を参照することで、どの程度が大文字でどの程度が小文字なのかを判定することが可能となる。 For example, the keyword AC shown in FIG. 28 has two points because it includes two capital letters, the keywords Ac and aC have one point because they include one capital letter, and the keyword ac has zero points because it does not include capital letters. If four routes are prepared for the keyword (A | a) (C | c), it is possible to refer to the points when the keyword (A | a) (C | c) is hit, It becomes possible to determine the degree of capital letters and the degree of small letters.
しかしながら、図28のように展開した文字列を全てACマシンで表現すると、図29に示すように、ACマシンの状態数が膨大な数となってしまうため、現実的ではない。図29に示すACマシンの状態数は、キーワードサイズに応じて指数的に増加してしまう。 However, if all the character strings developed as shown in FIG. 28 are expressed by an AC machine, the number of states of the AC machine becomes enormous as shown in FIG. 29, which is not realistic. The number of states of the AC machine shown in FIG. 29 increases exponentially according to the keyword size.
次に、本実施例にかかる検索装置の概要について説明する。図30は、本実施例にかかる検索装置の概要を説明するための図である。図30に示すように、本実施例にかかる検索装置は、図27と同様にして、あいまいな文字を同一状態に遷移させるようなACオートマトンを作成すると共に、ACマシンの各辺に点数をつけ、オートマトンの状態を遷移させながら逐次的に点数計算を行う。 Next, an outline of the search device according to the present embodiment will be described. FIG. 30 is a diagram for explaining the outline of the search device according to the present embodiment. As shown in FIG. 30, the search apparatus according to the present embodiment creates an AC automaton that makes ambiguous characters transition to the same state as in FIG. 27, and assigns points to each side of the AC machine. The score is calculated sequentially while changing the state of the automaton.
具体的には、ある状態からある状態に遷移する場合に、大文字により通常遷移した場合には、1点を加算し、小文字により通常遷移した場合には、0点を加算することで、点数計算を行う。例えば、図30において、初期状態0から、文字Aにより状態1に通常遷移した場合には1点を加算し、文字aにより状態1に通常遷移した場合には、0点を加算する。
Specifically, when transitioning from a certain state to a certain state, if a normal transition is made by capital letters, 1 point is added, and if a normal transition is made by lowercase letters, 0 points are added to calculate the score. I do. For example, in FIG. 30, 1 point is added when the normal transition is made from the
更に、本実施例にかかる検索装置は、ある状態からある状態にフェイラ遷移した場合には、遷移元の状態のレベルと、遷移先の状態のレベルとの差に基づいて、点数を補正することで、パターン照合終了時の点数を正確なものとする。ここで、状態のレベルは、初期状態から該当状態までの距離を示す。 Furthermore, the search device according to the present embodiment corrects the score based on the difference between the level of the transition source state and the level of the transition destination state when a failer transition is made from a certain state to a certain state. Thus, the score at the end of pattern matching is made accurate. Here, the state level indicates the distance from the initial state to the corresponding state.
図30を用いて、各状態のレベルを具体的に示すと、状態1、3は、初期状態0からの距離が1なので、レベル1となる。状態6、7は、初期状態0からの距離が3なので、レベル3となる。状態8は、初期状態0からの距離が4なので、レベル4となる。
When the level of each state is specifically shown using FIG. 30, since the distance from the
このように、本実施例にかかる検索装置は、あいまいな文字を同一状態に遷移させるようなACオートマトンを作成すると共に、ACマシンの各辺に点数をつけ、オートマトンの状態を遷移させながら逐次的に点数計算を行っている。したがって、本実施例にかかる検索装置によれば、各文字における候補の組合せを全て展開すること無く、ヒットしたキーワードの内、どの程度が大文字でどの程度が小文字なのかを判定することができる。 As described above, the search device according to the present embodiment creates an AC automaton that makes ambiguous characters transition to the same state, assigns points to each side of the AC machine, and sequentially changes the state of the automaton. The points are calculated. Therefore, according to the search device according to the present embodiment, it is possible to determine how much of a hit keyword is uppercase and what is lowercase without expanding all candidate combinations in each character.
次に、本実施例で用いる用語の定義を行う。Σは、アルファベット(文字の集合)を示し、あいまい文字セットを、Σの部分集合とする。あいまい文字セット{a、b、・・・}⊆Σを(a|b|・・・)と記述することにする。任意のp∈(Σ∪A)*をパターンと呼ぶ。コスト表Cを、Σの各文字に整数を割当てる関数として定義する。検索装置に入力するテキストデータDを、D∈Σ*とする。また、あいまい文字セットの集合をA=Σ2とする。 Next, terms used in this embodiment will be defined. Σ indicates an alphabet (a set of characters), and an ambiguous character set is a subset of Σ. The ambiguous character set {a, b,...} ⊆Σ is described as (a | b | ...). Arbitrary pε (Σ∪A) * is called a pattern. The cost table C is defined as a function that assigns an integer to each character of Σ. The text data D input to the search device is DεΣ * . In addition, a set of ambiguous character set and A = Σ 2.
本実施例にかかる検索装置は一例として、テキストデータD、パターン集合Π、点数を管理するコスト管理テーブルを受け付け、テキストデータDに対して、各パターンp∈Πの全ての照合位置および照合コストを検索結果として出力するものとする。 As an example, the search device according to the present embodiment accepts text data D, a pattern set Π, and a cost management table for managing points, and for text data D, all the matching positions and matching costs of each pattern p∈Π are obtained. It shall be output as a search result.
本実施例では、パターン集合Πとして第1〜3の条件を満たすもののみを取り扱う。第1の条件として、あいまい文字セットで使われている文字は、単独使用できない。例えば、あいまい文字セット(a|A)があるパターンp∈Πで使われている場合には、Πの任意のパターンにおいて、文字a∈ΣおよびA∈Σを単独で用いることが出来ない。 In this embodiment, only patterns satisfying the first to third conditions are handled as the pattern set Π. As a first condition, a character used in an ambiguous character set cannot be used alone. For example, if an ambiguous character set (a | A) is used in a pattern pεΠ, the characters aεΣ and AεΣ cannot be used alone in any pattern of Π.
第2の条件として、Π中のパターンで使われている相違なるあいまい文字セットに、同一の文字を使うことは出来ない。例えば、(a|A)と(a|b)を、Π中で同時に使いことは出来ない。第3の条件として、1つのあいまい文字セットに、2通り以上の得点を割当てることはできない。すなわち、各あいまい文字セットにおける得点割り当ては、Πにおいて共通でなくてはならない。 As a second condition, the same character cannot be used in a different ambiguous character set used in the pattern in the basket. For example, (a | A) and (a | b) cannot be used simultaneously in a cage. As a third condition, two or more scores cannot be assigned to one ambiguous character set. That is, the score assignment in each ambiguous character set must be common in the heels.
次に、本実施例にかかる検索装置100の構成について説明する。図31は、本実施例にかかる検索装置100の構成を示す図である。図31に示すように、この検索装置100は、入力部110、出力部120、入出力制御部130、記憶部140、制御部150を有する。
Next, the configuration of the search device 100 according to the present embodiment will be described. FIG. 31 is a diagram illustrating the configuration of the search device 100 according to the present embodiment. As illustrated in FIG. 31, the search device 100 includes an input unit 110, an output unit 120, an input /
このうち、入力部110は、パターン集合、スコア配列、コスト管理テーブル、テキストデータ等を入力する入力部であり、キーボードやマウス、マイク等に対応する。出力部120は、ACマシンによる照合結果などを出力する出力部であり、モニタ(若しくはディスプレイ、タッチパネル)に対応する。入出力制御部130は、入力部110、出力部120、記憶部140、制御部150によるデータの入出力を制御する処理部である。
Among these, the input unit 110 is an input unit for inputting a pattern set, a score array, a cost management table, text data, and the like, and corresponds to a keyboard, a mouse, a microphone, and the like. The output unit 120 is an output unit that outputs a collation result by an AC machine, and corresponds to a monitor (or display or touch panel). The input /
記憶部140は、制御部150による各種処理に必要なデータおよびプログラムを記憶する記憶部である。この記憶部140は、パターン集合140aと、コスト管理テーブル140bと、ACマシン140cと、スコア配列140dを有する。
The storage unit 140 is a storage unit that stores data and programs necessary for various processes performed by the
このうち、パターン集合140aは、テキストデータから検索するキーワード(あいまいパターン)の集合である。本実施例では一例として、パターン集合140aを、Π={(A|a)(C|c)、(B|b)(A|a)、(B|b)(B|b)、(B|b)(A|a)(A|a)、(B|b)(A|a)(C|c)(D|d)}とする。 Among these, the pattern set 140a is a set of keywords (ambiguous patterns) searched from text data. In this embodiment, as an example, the pattern set 140a is expressed as Π = {(A | a) (C | c), (B | b) (A | a), (B | b) (B | b), (B | B) (A | a) (A | a), (B | b) (A | a) (C | c) (D | d)}.
コスト管理テーブル140bは、文字の種別とコスト(点数)を対応付けて記憶するテーブルである。図32は、本実施例にかかるコスト管理テーブル140bのデータ構造の一例を示す図である。 The cost management table 140b is a table that stores character types and costs (points) in association with each other. FIG. 32 is a diagram illustrating an example of a data structure of the cost management table 140b according to the present embodiment.
ACマシン140cは、パターン集合140aに基づいて生成されるACマシンである。例えば、パターン集合Π={(A|a)(C|c)、(B|b)(A|a)、(B|b)(B|b)、(B|b)(A|a)(A|a)、(B|b)(A|a)(C|c)(D|d)}に対応するACマシンは、図30に示したACマシンとなる。
The
本実施例にかかるACマシンも従来と同様にして、複数の状態構造体から構成されている。図33は、本実施例にかかる状態構造体のデータ構造の一例を示す図である。図33に示すように、本実施例にかかる状態構造体は、各状態を識別する状態ID「id」と、パターンリスト「plist」と、通常遷移先へのポインタg[1]〜g[256]と、フェイラ遷移先へのポインタ「fail」と、初期状態(ルートノード)からの距離「dist」を有する。 The AC machine according to the present embodiment is also composed of a plurality of state structures as in the conventional case. FIG. 33 is a diagram illustrating an example of the data structure of the state structure according to the present embodiment. As shown in FIG. 33, the state structure according to this embodiment includes a state ID “id” for identifying each state, a pattern list “plist”, and pointers g [1] to g [256 to normal transition destinations. ], A pointer “fail” to the failer transition destination, and a distance “dist” from the initial state (root node).
図31の説明に戻ると、スコア配列140dは、ACマシン上で状態が遷移することで変化する初期状態から現在の状態までの距離と、点数とを管理するテーブルである。図34は、本実施例にかかるスコア配列140dのデータ構造の一例を示す図である。図34に示すように、このスコア配列140dは、初期状態からの距離(初期状態から現在の状態までの距離)と点数とを対応付けて記憶している。 Returning to the description of FIG. 31, the score array 140d is a table that manages the distance from the initial state to the current state, which changes as the state changes on the AC machine, and the score. FIG. 34 is a diagram illustrating an example of a data structure of the score array 140d according to the present embodiment. As shown in FIG. 34, the score array 140d stores a distance from the initial state (a distance from the initial state to the current state) and a score in association with each other.
制御部150は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する制御部である。図31に示すように、制御部150は、ACマシン構築処理部150aと、照合処理部150bと、照合結果出力部150cを有する。
The
ACマシン構築処理部150aは、パターン集合140aに基づいて、ACマシン140cを作成する処理部である。ACマシン構築処理部150aは、ACマシン140dを作成する場合に、初めにトライ構築を行った後に、フェイラ遷移追加処理を実行する。
The AC machine construction processing unit 150a is a processing unit that creates the
まず、ACマシン構築処理部150aが実行する、トライT構築について具体的に説明する。ここでは、パターン集合をΠ={(A|a)(C|c)、(B|b)(A|a)、(B|b)(B|b)、(B|b)(A|a)(A|a)、(B|b)(A|a)(C|c)(D|d)}として説明する。図35〜図37は、本実施例にかかるトライT構築処理を説明するための図である。 First, the tri-T construction executed by the AC machine construction processing unit 150a will be specifically described. Here, the pattern set is expressed as Π = {(A | a) (C | c), (B | b) (A | a), (B | b) (B | b), (B | b) (A | A) (A | a), (B | b) (A | a) (C | c) (D | d)} will be described. 35 to 37 are diagrams for explaining the tri-T construction process according to the present embodiment.
まず、ACマシン構築処理部150aは、初期状態0を作成し、初期状態の状態構造体における通常遷移先を全て初期状態に設定する(図35、ステップS90)。そして、ACマシン構築処理部150aは、パターン集合Πからパターン「(A|a)(C|c)」を取り出す。ACマシン構築処理部150aは、文字(A|a)を選択し、文字Aおよびaによる初期状態0の通常遷移先を通常状態1に設定し、distを「1」に設定する。
First, the AC machine construction processing unit 150a creates the
ACマシン構築処理部150aは、文字(C|c)を選択し、文字Cおよびcによる通常状態1の通常遷移先を照合状態2に設定し、照合状態のパターンリストを「(A|a)(C|c)」に設定する。文字(C|c)は、パターン「(A|a)(C|c)」最後尾の文字であるため、状態2は、照合状態となる。また、ACマシン構築処理部150aは、照合状態2のdistを「2」に設定する(図35、ステップS91)。
The AC machine construction processing unit 150a selects the character (C | c), sets the normal transition destination of the
ACマシン構築処理部150aは、初期状態0に戻り、パターン集合Πからパターン「(B|b)(A|a)」を取り出す。ACマシン構築処理部150aは、文字(B|b)を選択し、文字Bおよびbによる初期状態0の通常遷移先を通常状態3に設定し、distを「1」に設定する。
The AC machine construction processing unit 150a returns to the
ACマシン構築処理部150aは、文字(A|a)を選択し、文字Aおよびaによる通常状態3の通常遷移先を照合状態4に設定し、照合状態のパターンリストを「(B|b)(A|a)」に設定する。文字(A|a)は、パターン「(B|b)(A|a)」の最後尾の文字であるため、状態4は、照合状態となる。また、ACマシン構築処理部150aは、照合状態4のdistを「2」に設定する(図35、ステップS92)。
The AC machine construction processing unit 150a selects the character (A | a), sets the normal transition destination of the
ACマシン構築処理部150aは、初期状態0に戻り、パターン集合Πからパターン「(B|b)(B|b)」を取り出し、文字(B|b)を選択する。ここで、文字Bおよびbによる初期状態0の通常遷移先は通常状態3であり、既に作成済みであるため、現在の状態を通常状態3に遷移する。また、ACマシン構築処理部150aは、文字(B|b)を選択し、文字Bおよびbによる通常状態3の通常遷移先を照合状態5に設定し、パターンリストを「(B|b)(B|b)」に設定する。文字(B|b)は、パターン「(B|b)(B|b)」の最後尾の文字であるため、状態5は、照合状態となる。また、ACマシン構築処理部150aは、照合状態2のdistを「2」に設定する(図36、ステップS93)。
The AC machine construction processing unit 150a returns to the
ACマシン構築処理部150aは、初期状態0に戻り、パターン集合Πからパターン「(B|b)(A|a)(A|a)」を取り出し、文字(B|b)を選択する。ここで、文字Bおよびbによる初期状態0の通常遷移先は、通常状態3であり、既に作成済みであるため、現在の状態を通常状態3に遷移する。また、ACマシン構築処理部150aは、文字(A|a)を選択する。ここで、文字Aおよびaによる通常状態3の通常遷移先は、照合状態4であり、既に作成済みであるため、現在の状態を照合状態4に設定する。また、ACマシン構築処理部150aは、文字(A|a)を選択する。文字Aおよびaによる照合状態4の通常遷移先を照合状態6に設定し、パターンリストを「(B|b)(A|a)(A|a)」に設定する。文字(A|a)は、パターン「(B|b)(A|a)(A|a)」の最後尾の文字であるため、状態6は、照合状態となる。また、ACマシン構築処理部150aは、照合状態6のdistを「3」に設定する(図36、ステップS94)。
The AC machine construction processing unit 150a returns to the
ACマシン構築処理部150aは、初期状態0に戻り、パターン集合Πからパターン「(B|b)(A|a)(C|c)(D|d)」を取り出し、文字(B|b)を選択する。ここで、文字Bおよびbによる初期状態0の通常遷移先は、通常状態3であり、既に登録済みであるため、現在の状態を通常状態3に遷移する。また、ACマシン構築処理部150aは、文字(A|a)を選択する。ここで、文字Aおよびaによる通常状態3の通常遷移先は、照合状態4であり、既に作成済みであるため、現在の状態を照合状態4に設定する。
The AC machine construction processing unit 150a returns to the
また、ACマシン構築処理部150aは、文字(C|c)を選択し、文字Cおよびcによる照合状態4の通常遷移先を通常状態7に設定し、distを「3」に設定する。また、ACマシン構築処理部150aは、文字(D|d)を選択し、文字Dおよびdによる通常状態7の通常遷移先を照合状態8に設定し、パターンリストを「(B|b)(A|a)(C|c)(D|d)」に設定する。文字(D|d)は、パターン「(B|b)(A|a)(C|c)(D|d)」の最後尾の文字であるため、状態8は、照合状態となる。
Further, the AC machine construction processing unit 150a selects the character (C | c), sets the normal transition destination of the
また、ACマシン構築処理部150aは、照合状態8のdistを「4」に設定する(図37、ステップS95)。ステップS95が終了した段階で、パターン集合Πに含まれる全てのパターン(あいまいパターン)の登録が終了し、トライTの構築処理が終了する。
Further, the AC machine construction processing unit 150a sets the dist in the
次に、ACマシン構築処理部150aが実行するフェイラ遷移追加処理について説明する。なお、ACマシン構築処理部150aは、上述したトライT構築処理で作成したトライTに対して、フェイラ遷移追加処理を行うものとする。 Next, the failer transition addition process executed by the AC machine construction processing unit 150a will be described. Note that the AC machine construction processing unit 150a performs a failer transition addition process on the trie created by the above-described trie T construction process.
図38〜図46は、本実施例にかかるフェイラ遷移追加処理を説明するための図である。ACマシン構築処理部150aは、初期状態0からの通常遷移先となる状態を判定し、判定した状態をキュー(Queue)に登録し、キューに登録された状態のフェイラ遷移先に初期状態0を登録する。ここで、初期状態の通常遷移先は、通常状態1、3となるので、キューに1、3を登録する。また、通常状態1、3のフェイラ遷移先を初期状態0に設定する(図38参照)。
38 to 46 are diagrams for explaining the failer transition addition processing according to the present embodiment. The AC machine construction processing unit 150a determines the state that is the normal transition destination from the
次に、ACマシン構築処理部150aは、キューの先頭の状態1を取り出し、取り出した状態1を状態sに設定する。ACマシン構築処理部150aは、状態sにおいて、g[code(a)]≠Nullとなる全ての文字aを抽出し、集合Xに格納する。この場合は、ACマシン構築処理部150aは、文字(C|c)を抽出し、集合Xに文字(C|c)を格納する。
Next, the AC machine construction processing unit 150a extracts the
ACマシン構築処理部150aは、集合Xから文字(C|c)を取り出し、状態sの通常遷移先となる状態2をキューの最後尾に追加する。ACマシン構築処理部150aは、状態1からフェイラ遷移した初期状態0に移行し、文字(C|c)に対する通常遷移先を判定することで、状態nextのフェイラ遷移先を判定すると、初期状態0となる。ACマシン構築処理部150aは、状態s(通常状態1)から文字Cまたはcにより遷移する状態nextを判定し、判定した状態(照合状態2)のフェイラ遷移先を初期状態0に設定する(図39参照)。
The AC machine construction processing unit 150a extracts the character (C | c) from the set X, and adds the
ACマシン構築処理部150aは、キューの先頭の状態3を取り出し、取り出した状態3を状態sに設定する。ACマシン構築処理部150aは、状態sにおいて、g[code(a)]≠Nullとなる全ての文字aを抽出し、集合Xに格納する。この場合、従来装置は、文字(A|a)、(B|b)を抽出し、集合Xに文字(A|a)、(B|b)を格納する。
The AC machine construction processing unit 150a extracts the
ACマシン構築処理部150aは、集合Xから文字(A|a)を取り出し、状態sの文字(A|a)の通常遷移先となる状態4をキューの最後尾に追加する。ACマシン構築処理部150aは、状態sからフェイラ遷移した初期状態0に移行し、文字(A|a)に対する通常遷移先を判定することで、状態nextのフェイラ遷移先を判定すると、状態1となる。ACマシン構築処理部150aは、状態s(通常状態3)から文字Aまたはaにより遷移する状態nextを判定し、判定した状態(照合状態4)のフェイラ遷移先を状態1に設定する(図40の状態4参照)。
The AC machine construction processing unit 150a extracts the character (A | a) from the set X, and adds the
ACマシン構築処理部150aは、集合Xから文字(B|b)を取り出し、状態s(通常状態3)の文字(B|b)の通常遷移先となる状態5をキューの最後尾に追加する。ACマシン構築処理部150aは、状態sからフェイラ遷移した初期状態0に移行し、文字Bに対する通常遷移先を判定することで、状態nextのフェイラ遷移先を判定すると、状態3となる。ACマシン構築処理部150aは、状態sから文字Bまたはbにより遷移する状態nextを判定し、判定した状態(照合状態5)のフェイラ遷移先を状態3に設定する(図40の状態5参照)。
The AC machine construction processing unit 150a extracts the character (B | b) from the set X, and adds the
ACマシン構築処理部150aは、キューの先頭の状態2を取り出し、取り出した状態2を状態sに設定する。ACマシン構築処理部150aは、状態sにおいて、g[code(a)]≠Nullとなる全ての文字aを抽出し、集合Xに格納する。状態sに通常遷移先は存在しないので、次のステップに移行する(図41参照)。
The AC machine construction processing unit 150a takes out
ACマシン構築処理部150aは、キューの先頭の状態4を取り出し、取り出した状態4を状態sに設定する。ACマシン構築処理部150aは、状態sにおいて、g[code(a)]≠Nullとなる全ての文字aを抽出し、集合Xに格納する。この場合は、ACマシン構築処理部150aは、文字(A|a)、(C|c)を抽出し、集合Xに文字(A|a)、(C|c)を格納する。
The AC machine construction processing unit 150a takes out the
ACマシン構築処理部150aは、集合Xから文字(A|a)を取り出し、状態s(照合状態4)の文字(A|a)の通常遷移先となる状態6をキューの最後尾に追加する。ACマシン構築処理部150aは、状態sからフェイラ遷移した状態1に移行する。状態1において、文字Aに対する通常遷移先はNullであるため、再度フェイラ遷移し、初期状態0に移行する。
The AC machine construction processing unit 150a extracts the character (A | a) from the set X, and adds the
そして、初期状態0において、文字(A|a)に対する通常遷移先を判定することで、状態nextのフェイラ遷移先を判定すると、状態1となる。ACマシン構築処理部150aは、状態s(通常状態4)から文字(A|a)により遷移する状態nextを判定し、判定した状態(照合状態6)のフェイラ遷移先を状態1に設定する(図42の状態6参照)。
Then, in the
ACマシン構築処理部150aは、集合Xから文字(C|c)を取り出し、状態s(照合状態4)の文字(C|c)の通常遷移先となる状態7をキューの最後尾に追加する。ACマシン構築処理部150aは、状態sからフェイラ遷移した状態1に移行し、文字(C|c)に対する通常遷移先を判定することで、状態nextのフェイラ遷移先を判定すると、状態2となる。ACマシン構築処理部150aは、状態sから文字(C|c)による遷移する状態nextを判定し、判定した状態(通常状態7)のフェイラ遷移先を状態2に設定する。
The AC machine construction processing unit 150a extracts the character (C | c) from the set X, and adds the
また、ACマシン構築処理部150aは、状態7のフェイラ遷移先が照合状態2となるため、状態2のパターンリストを状態7のパターンリストに追加することで、状態7を照合状態7に設定する(図42の状態7参照)。
Further, the AC machine construction processing unit 150a sets the
ACマシン構築処理部150aは、キューの先頭の状態5を取り出し、取り出した状態5を状態sに設定する。ACマシン構築処理部150aは、状態sにおいて、g[code(a)]≠Nullとなる全ての文字aを抽出し、集合Xに格納する。状態sに通常遷移先は存在しないので、次のステップに移行する(図43参照)。
The AC machine construction processing unit 150a takes out the
ACマシン構築処理部150aは、キューの先頭の状態6を取り出し、取り出した状態6を状態sに設定する。ACマシン構築処理部150aは、状態sにおいて、g[code(a)]≠Nullとなる全ての文字aを抽出し、集合Xに格納する。状態sに通常遷移先は存在しないので、次のステップに移行する(図44参照)。
The AC machine construction processing unit 150a takes out the
ACマシン構築処理部150aは、キューの先頭の状態7を取り出し、取り出した状態7を状態sに設定する。ACマシン構築処理部150aは、状態sにおいて、g[code(a)]≠Nullとなる全ての文字aを抽出し、集合Xに格納する。この場合、従来装置は、文字(D|d)を抽出し、集合Xに文字(D|d)を格納する。
The AC machine construction processing unit 150a takes out the
ACマシン構築処理部150aは、集合Xから文字(D|d)を取り出し、状態s(照合状態7)の文字(D|d)の通常遷移先となる状態8をキューの最後尾に追加する。ACマシン構築処理部150aは、状態sからフェイラ遷移した状態2に移行する。状態2において、文字(D|d)に対する通常遷移先はNullであるため、再度フェイラ遷移し、初期状態0に移行する。
The AC machine construction processing unit 150a extracts the character (D | d) from the set X, and adds the
そして、初期状態0において、文字Dに対する通常遷移先を判定することで、状態nextのフェイラ遷移先を判定すると、初期状態0となる。ACマシン構築処理部150aは、状態s(照合状態7)から文字(D|d)により遷移する状態nextを判定し、判定した状態(照合状態8)のフェイラ遷移先を初期状態0に設定する(図45の状態8参照)。
Then, by determining the normal transition destination for the character D in the
ACマシン構築処理部150aは、キューの先頭の状態8を取り出し、取り出した状態8を状態sに設定する。ACマシン構築処理部150aは、状態sにおいて、g[code(a)]≠Nullとなる全ての文字aを抽出し、集合Xに格納する。状態sに通常遷移先は存在しないので、次のステップに移行する。そして、キューに状態が存在しなくなった場合に、パターン集合ΠのACマシンが完了する(図46参照)。
The AC machine construction processing unit 150a extracts the
このように、ACマシン構築処理部150aは、図35〜図37に示したトライT構築処理、図38〜図46に示したフェイラ遷移追加処理を実行することにより、パターン集合140aからACマシン140cを作成する。
As described above, the AC machine construction processing unit 150a performs the tri-T construction processing illustrated in FIGS. 35 to 37 and the failer transition addition processing illustrated in FIGS. 38 to 46, thereby performing the
図31の説明に戻ると、照合処理部150bは、ACマシン140cを用いて、テキストデータを照合し、照合結果を出力する処理部である。また、照合処理部150bは、コスト管理テーブル140bを基にして、通常遷移を行なうたびに、文字に応じた点数をスコア配列140dに登録し、登録された点数を集計することで、照合されたキーワードの点数を算出する。また、照合処理部150bは、照合処理の途中で、フェイラ遷移が発生した場合には、フェイラ遷移元の状態のdistと、フェイラ遷移先の状態のdistとの差分を基にして、スコア配列140dの点数を前に詰める。
Returning to the description of FIG. 31, the collation processing unit 150b is a processing unit that collates text data using the
以下において、照合処理部150bの処理を具体的に説明する。図47〜図52は、本実施例にかかるパターン照合処理を説明するための図である。ここでは一例として、照合対象となるテキストデータを「CbaAC」として、パターン照合処理を説明する。 Hereinafter, the processing of the matching processing unit 150b will be specifically described. 47 to 52 are diagrams for explaining the pattern matching processing according to the present embodiment. Here, as an example, the pattern matching process will be described assuming that text data to be collated is “CbaAC”.
照合処理部150bは、テキストデータの1文字目(オフセット1)の文字Cを読み出し、状態sを初期状態0とする。そして、照合処理部150bは、状態sの文字Cによる遷移先を判定すると、状態sの文字Cによる通常遷移先は初期状態0なので、再び状態sを初期状態0に設定する(図47参照)。
The collation processing unit 150b reads the character C of the first character (offset 1) of the text data and sets the state s to the
照合処理部150bは、テキストデータの2文字目(オフセット2)の文字bを読み出し、状態s(初期状態0)の文字bによる遷移先を判定する。状態sの文字bによる通常遷移先は状態3なので、状態sを状態3に設定する。また、照合処理部150bは、通常遷移した場合に、コスト管理テーブル140bと、文字の種類と比較して点数を判定する。そして、照合処理部150bは、判定した点数と、通常遷移先の状態のdistに応じて、スコア配列140dに点数を登録する。
The matching processing unit 150b reads the second character (offset 2) character b of the text data and determines the transition destination by the character b in the state s (initial state 0). Since the normal transition destination of the character b of the state s is the
文字bのコストは「0」であり、通常遷移先の状態3のdistは「1」であるため、照合処理部150bは、スコア配列140dの「初期状態からの距離1」に対応する点数を0に設定する(図48参照)。
Since the cost of the letter b is “0” and the dist in the
照合処理部150bは、テキストデータの3文字目(オフセット3)の文字aを読み出し、状態s(状態3)の文字aによる遷移先を判定する。状態sの文字aによる通常遷移先は状態4なので、状態sを状態4に設定する。また、文字aのコストは「0」であり、通常遷移先の状態4のdistは「2」であるため、照合処理部150bは、スコア配列140dの「初期状態からの距離2」に対応する点数を0に設定する。
The matching processing unit 150b reads the third character (offset 3) character a of the text data and determines the transition destination of the character a in the state s (state 3). Since the normal transition destination of the character a in the state s is the
また、状態4は、パターン(B|b)(A|a)の照合状態であるため、照合処理部150bは、パターン(B|b)(A|a)にヒットしたと判定する。そして、照合処理部150bは、パターン(B|b)(A|a)と、現在のオフセット3と、現在のスコア配列の点数の合計値「0」を対応付けて集合Rに登録する(図49参照)。
Further, since the
照合処理部150bは、テキストデータの4文字目(オフセット4)の文字Aを読み出し、状態s(状態4)の文字Aによる遷移先を判定する。状態sの文字Aによる通常遷移先は状態6なので、状態sを状態6に設定する。また、文字Aのコストは「1」であり、通常遷移先の状態6のdistは「3」であるため、照合処理部150bは、スコア配列140dの「初期状態からの距離3」に対応する点数を1に設定する。
The verification processing unit 150b reads the fourth character (offset 4) of the character A in the text data and determines the transition destination of the character A in the state s (state 4). Since the normal transition destination by the letter A of the state s is the
また、状態6は、パターン(B|b)(A|a)(A|a)の照合状態であるため、照合処理部150bは、パターン(B|b)(A|a)(A|a)にヒットしたと判定する。そして、照合処理部150bは、パターン(B|b)(A|a)(A|a)と、現在のオフセット4と、現在のスコア配列の点数の合計値「1」を対応付けて集合Rに登録する(図50参照)。
Further, since the
照合処理部150bは、テキストデータの5文字目(オフセット5)の文字Cを読み出し、状態s(状態6)の文字Cによる遷移先を判定する。状態sの文字Cによる通常遷移先は存在しないので、フェイラ遷移となり、フェイラ遷移先となる状態1を状態sに設定する。
The matching processing unit 150b reads the fifth character (offset 5) character C of the text data and determines the transition destination of the character C in the state s (state 6). Since there is no normal transition destination by the letter C in the state s, a failure transition occurs, and the
ここで、フェイラ遷移元となる状態6のdistは「3」であり、フェイラ遷移先となる状態1のdistは「1」であるため、各distの差は「2」となる。従って、照合処理部150bは、スコア配列140dの点数を2だけ前に詰めると共に、点数の存在していた「初期状態からの距離2、3」に対応する点数をNullに設定する(図51参照)。
Here, the dist of the
そして、照合処理部150bは、状態s(状態1)の文字Cによる遷移先を判定する。状態sの文字Cによる通常遷移先は状態2なので、状態sを状態2に設定する。また、文字Cのコストは「1」であり、通常遷移先の状態2のdistは「2」であるため、照合処理部150bは、スコア配列140dの「初期状態からの距離2」に対応する点数を1に設定する。
And the collation process part 150b determines the transition destination by the character C of the state s (state 1). Since the normal transition destination by the character C of the state s is the
また、状態2は、パターン(A|a)(C|c)の照合状態であるため、照合処理部150bは、パターン(A|a)(C|c)にヒットしたと判定する。そして、照合処理部150bは、パターン(A|a)(C|c)と、現在のオフセット5と、現在のスコア配列の点数の合計値2を対応付けて集合Rに登録する(図52参照)。テキストデータの最後の文字に対する遷移先を判定した後に、パターン照合処理を終了する。
Further, since the
このように、照合処理部150bが、フェイラ遷移先と遷移後のdistの差に基づいて、スコア配列140dの点数を詰めることで、初期状態0からフェイラ遷移した先の状態までに至る点数のみをスコア配列140dに残すので、各照合状態の点数を正確に算出することができる。
In this way, the collation processing unit 150b reduces the score array 140d based on the difference between the failer transition destination and the dist after the transition, so that only the number of points from the
例えば、図51において、フェイラ遷移先(状態1)と遷移後(状態6)のdistの差は、2であるため、スコア配列140dを前に2だけ詰めており、初期状態0からフェイラ遷移した先の状態1(dist1)までの点数のみをスコア配列140dに残している(文字Aにより状態1に移行したことをスコア配列140dに残している)。従って、図51の場合では、状態1から照合状態2に通常遷移し、照合したパターン(A|a)(C|c)の点数が2であると正確に算出することができる。
For example, in FIG. 51, the dist difference between the failer transition destination (state 1) and after the transition (state 6) is 2, so the score array 140d is packed by 2 before, and the failer transition from the
図31の説明に戻ると、照合結果出力部150cは、照合処理部150bの照合結果を出力部120に出力する処理部である。例えば、図52等に示したACマシンを用いてテキストデータのパターン照合処理を実行した場合には、図53に示す照合結果を出力する。図53は、照合結果出力部150cが出力する照合結果の一例を示す図である。図53の照合結果を参照することにより、テキストデータに含まれるパターンの種類、テキストデータ中のパターンの存在位置、どの程度大文字が存在するのかを判定することが出来る。
Returning to the description of FIG. 31, the collation
次に、本実施例にかかる検索装置100の処理手順について説明する。図54は、本実施例にかかる検索装置100がACマシンを構築する処理手順を示すフローチャートである。図54に示すように、検索装置100は、パターン集合Πを取得し(ステップS101)、ACマシン構築処理部150aが、パターン集合ΠのトライTの構築処理を実行する(ステップS102)。そして、ACマシン構築処理部150aが、フェイラ遷移追加処理を実行し(ステップS103)、ACマシンを出力する(ステップS104)。 Next, a processing procedure of the search device 100 according to the present embodiment will be described. FIG. 54 is a flowchart of a process procedure in which the search device 100 according to the present embodiment constructs an AC machine. As illustrated in FIG. 54, the search device 100 acquires a pattern set Π (step S101), and the AC machine construction processing unit 150a executes a process for building a pattern set ト ラ イ tri-T (step S102). Then, the AC machine construction processing unit 150a executes a failer transition addition process (step S103) and outputs an AC machine (step S104).
次に、図54のステップS102に示したパターン集合ΠのトライTの構築処理について説明する。かかるパターン集合ΠのトライTの構築処理をACマシン構築処理部150aが実行することにより、パターン集合140aから、トライTが生成される(例えば、図37参照)。 Next, the process of constructing the pattern set ト ラ イ trie T shown in step S102 of FIG. 54 will be described. When the AC machine construction processing unit 150a executes the process for constructing the trie T of the pattern set IV, the trie T is generated from the pattern set 140a (see, for example, FIG. 37).
図55は、本実施例にかかるパターン集合ΠのトライTの構築処理の処理手順を示すフローチャートである。図55に示すように、ACマシン構築処理部150aは、初期状態(id=0)を作成し、トライT(Π)を初期状態のみで構成されるトライに設定する(ステップS201)。 FIG. 55 is a flowchart of a process procedure of a process for constructing a trie T of a pattern set according to the present embodiment. As shown in FIG. 55, the AC machine construction processing unit 150a creates an initial state (id = 0), and sets the trie T (Π) to a trie composed only of the initial state (step S201).
ACマシン構築処理部150aは、初期状態のdistを0に設定し(ステップS202)、初期状態の通常遷移先を全て初期状態に設定し(ステップS203)、パターン集合Πにパターンが存在するか否かを判定する(ステップS204)。 The AC machine construction processing unit 150a sets dist in the initial state to 0 (step S202), sets all normal transition destinations in the initial state to the initial state (step S203), and determines whether or not a pattern exists in the pattern set Π. Is determined (step S204).
パターン集合Πにパターンが存在しない場合には(ステップS205,No)、ACマシン構築処理部150aは、トライT(Π)を出力する(ステップS206)。一方、パターン集合Πにパターンが存在する場合には(ステップS205,Yes)、ACマシン構築処理部150aは、パターン集合Πから1つのパターンを取り出し、取り出したパターンをパターンpに設定し(ステップS207)、パターン登録処理を実行し(ステップS208)、ステップS204に移行する。 If there is no pattern in the pattern set Π (No in step S205), the AC machine construction processing unit 150a outputs a trie T (Π) (step S206). On the other hand, when a pattern exists in the pattern set ((step S205, Yes), the AC machine construction processing unit 150a extracts one pattern from the pattern set 、 and sets the extracted pattern as the pattern p (step S207). ), Pattern registration processing is executed (step S208), and the process proceeds to step S204.
次に、図55のステップS208に示したパターン登録処理について説明する。図56は、本実施例にかかるパターン登録処理の処理手順を示すフローチャートである。図56に示すように、ACマシン構築処理部150aは、状態sをトライTの初期状態に設定し(ステップS301)、距離dを1に設定する(ステップS302)。 Next, the pattern registration process shown in step S208 of FIG. 55 will be described. FIG. 56 is a flowchart of the process procedure of the pattern registration process according to the present embodiment. As shown in FIG. 56, the AC machine construction processing unit 150a sets the state s to the initial state of the trie T (step S301), and sets the distance d to 1 (step S302).
ACマシン構築処理部150aは、パターンpに次の文字が存在するか否かを判定し(ステップS303)、存在しない場合には(ステップS304,No)、状態sのパターンリストplistにパターンpを代入し(ステップS305)、トライTを出力する(ステップS306)。 The AC machine construction processing unit 150a determines whether or not the next character exists in the pattern p (step S303). If the next character does not exist (step S304, No), the pattern p is added to the pattern list plist in the state s. Substitution is performed (step S305), and a trie T is output (step S306).
一方、パターンpに次の文字が存在する場合には(ステップS304,Yes)、ACマシン構築処理部150aは、状態sのdistにdを登録し、d=d+1に設定する(ステップS307)。ACマシン構築処理部150aは、次の文字をaとし、文字aがあいまい文字であるか否かを判定する(ステップS206)。 On the other hand, if the next character exists in the pattern p (Yes in step S304), the AC machine construction processing unit 150a registers d in the dist of the state s and sets d = d + 1 (step S307). The AC machine construction processing unit 150a determines that the next character is a and whether the character a is an ambiguous character (step S206).
次の文字があいまい文字の場合には(ステップS309,Yes)、ACマシン構築処理部150aは、aに含まれる全ての文字に対してasciiコードをcode(a)に設定し(ステップS310)、状態sの通常遷移g[code(a)]がNullであるか否かを判定する(ステップS311)。 If the next character is an ambiguous character (step S309, Yes), the AC machine construction processing unit 150a sets the ascii code to code (a) for all characters included in a (step S310), It is determined whether or not the normal transition g [code (a)] of the state s is Null (step S311).
状態sの通常遷移g[code(a)]がNullの場合には(ステップS312,Yes)、ACマシン構築処理部150aは、状態nを新規作成し、g[code(a)]=nに設定し(ステップS311)、状態sにg[code(a)]を代入する(状態nを状態sとする)(ステップS313)。一方、状態sの通常遷移g[code(a)]がNullではない場合には(ステップS312,No)、ステップS314に移行する。 When the normal transition g [code (a)] of the state s is Null (step S312, Yes), the AC machine construction processing unit 150a creates a new state n and sets g [code (a)] = n It is set (step S311), and g [code (a)] is substituted for state s (state n is set to state s) (step S313). On the other hand, when the normal transition g [code (a)] of the state s is not Null (step S312, No), the process proceeds to step S314.
ところで、ステップS309において、次の文字があいまい文字ではない場合には(ステップS309,No)、文字aのasciiコードをcode(a)に設定し(ステップS315)、状態sの通常遷移g[code(a)]がNullであるか否かを判定する(ステップS316)。 By the way, when the next character is not an ambiguous character in step S309 (step S309, No), the ascii code of the character a is set to code (a) (step S315), and the normal transition g [code of the state s It is determined whether (a)] is Null (step S316).
状態sの通常遷移g[code(a)]がNullの場合には(ステップS317,Yes)、ACマシン構築処理部150aは、状態nを新規作成し、g[code(a)]=nに設定し(ステップS318)、状態sにg[code(a)]を代入し(状態nを状態sとする)(ステップS319)、ステップS303に移行する。一方、状態sの通常遷移g[code(a)]がNullではない場合には(ステップS317,No)、ステップS319に移行する。 When the normal transition g [code (a)] of the state s is Null (step S317, Yes), the AC machine construction processing unit 150a newly creates the state n and sets g [code (a)] = n. It is set (step S318), g [code (a)] is substituted for state s (state n is set to state s) (step S319), and the process proceeds to step S303. On the other hand, when the normal transition g [code (a)] of the state s is not Null (step S317, No), the process proceeds to step S319.
次に、図54のステップS103に示したフェイラ遷移追加処理について説明する。かかるフェイラ遷移追加処理を実行することにより、トライTの各状態にフェイラ遷移先が追加され、ACマシンが完成する。図57および図58は、本実施例にかかるフェイラ遷移追加処理の処理手順を示すフローチャートである。 Next, the failer transition addition process shown in step S103 of FIG. 54 will be described. By executing such a failer transition addition process, a failer transition destination is added to each state of the trie T, and the AC machine is completed. FIGS. 57 and 58 are flowcharts illustrating the processing procedure of the failer transition addition processing according to the present embodiment.
図57に示すように、ACマシン構築処理部150aは、初期状態から通常遷移先となる状態を判定し、判定した状態をキュー(queue)に登録する(ステップS401)。ただし、ステップS401において、ACマシン構築処理部150aは、同一状態を2度以上キューに加えないこととする。 As illustrated in FIG. 57, the AC machine construction processing unit 150a determines a state that is a normal transition destination from the initial state, and registers the determined state in a queue (step S401). However, in step S401, the AC machine construction processing unit 150a does not add the same state to the queue more than once.
続いて、ACマシン構築処理部150aは、キューに登録された状態(状態構造体)のフェイラ遷移先に初期状態を登録し(ステップS402)、キューに状態が存在するか否かを判定する(ステップS403)。キューに状態が存在しない場合には(ステップS404,No)、トライTをACマシンαとして出力する(ステップS405)。 Subsequently, the AC machine construction processing unit 150a registers the initial state in the failer transition destination of the state (state structure) registered in the queue (step S402), and determines whether or not the state exists in the queue (step S402). Step S403). If no state exists in the queue (step S404, No), the trie T is output as the AC machine α (step S405).
一方、キューに状態が存在する場合には(ステップS404,Yes)、ACマシン構築処理部150aは、キューの先頭の状態を取り出し、取り出した状態を状態sに設定し(ステップS406)、状態sの通常遷移先へのポインタが全てNullであるか否かを判定する(ステップS407)。状態sの通常遷移先へのポインタが全てNullの場合には(ステップS408,Yes)、ステップS403に移行する。 On the other hand, if there is a state in the queue (Yes in step S404), the AC machine construction processing unit 150a extracts the head state of the queue, sets the extracted state to state s (step S406), and state s It is determined whether all the pointers to the normal transition destination are null (step S407). When all the pointers to the normal transition destination of the state s are Null (step S408, Yes), the process proceeds to step S403.
一方、状態sの通常遷移先へのポインタが全てNullではない場合には(ステップS408,No)、図58に示すように、ACマシン構築処理部150aは、状態sにおいて、g[code(a)]≠Nullとなる全ての文字aを抽出し、抽出した文字aを集合Xに格納する(ステップS409)。 On the other hand, when all the pointers to the normal transition destination of the state s are not Null (step S408, No), as shown in FIG. 58, the AC machine construction processing unit 150a performs g [code (a )] ≠ Null All characters a are extracted, and the extracted characters a are stored in the set X (step S409).
ACマシン構築処理部150aは、集合Xに文字が存在するか否かを判定し(ステップS410)、集合Xに文字が存在しない場合には(ステップS411,No)、ステップS403に移行する。一方、集合Xに文字が存在する場合には(ステップS411,Yes)、集合Xから文字aを一つ取り出し、取り出した文字aに該当する文字を集合Xから削除する(ステップS412)。 The AC machine construction processing unit 150a determines whether or not a character exists in the set X (step S410). If no character exists in the set X (step S411, No), the process proceeds to step S403. On the other hand, if a character exists in the set X (step S411, Yes), one character a is extracted from the set X, and the character corresponding to the extracted character a is deleted from the set X (step S412).
ACマシン構築処理部150aは、状態sの通常遷移先をキューの最後尾に追加し(ステップS413)、フェイラ遷移を繰り返し、文字aに対する通常遷移先がNullにならない最初の状態を状態fに設定する(ステップS414)。ACマシン構築処理部150aは、フェイラ遷移先の状態から文字aの通常遷移先へのポインタfnext=g[code(a)]を判定する(ステップS415)。 The AC machine construction processing unit 150a adds the normal transition destination of the state s to the tail of the queue (step S413), repeats the failer transition, and sets the first state where the normal transition destination for the character a is not null to the state f. (Step S414). The AC machine construction processing unit 150a determines the pointer fnext = g [code (a)] from the state of the failure transition destination to the normal transition destination of the character a (step S415).
ACマシン構築処理部150aは、状態sから文字aにより遷移する状態nextを判定し(ステップS416)、状態nextのフェイラ遷移先をfnext=g[code(a)]に設定し(ステップS418)、状態nextのフェイラ遷移先の状態にパターンリストが存在する場合に、かかるパターンリストを状態nextのパターンリストに追加し(ステップS417)、ステップS410に移行する。ただし、ステップS418において、ACマシン構築処理部150aは、パターンリスト中に同一パターンの重複登録は実行しないものとする。 The AC machine construction processing unit 150a determines the state next to be transitioned from the state s by the letter a (step S416), sets the failer transition destination of the state next to fnext = g [code (a)] (step S418), If a pattern list exists in the state of the next transition destination of the state next, the pattern list is added to the pattern list of the state next (step S417), and the process proceeds to step S410. However, in step S418, the AC machine construction processing unit 150a does not execute duplicate registration of the same pattern in the pattern list.
次に、本実施例にかかる検索装置が実行する照合処理の処理手順について説明する。図59は、本実施例にかかる照合処理の処理手順を示すフローチャートである。図59に示すように、検索装置100は、照合処理部150bが状態sをACマシンαの初期状態に設定し(ステップS501)、オフセットd=0、集合Rを空集合、スコア配列を空配列に設定する(ステップS502)。 Next, the processing procedure of the collation process executed by the search device according to the present embodiment will be described. FIG. 59 is a flowchart of the verification process according to the present embodiment. As shown in FIG. 59, in the search device 100, the matching processing unit 150b sets the state s to the initial state of the AC machine α (step S501), the offset d = 0, the set R is an empty set, and the score array is an empty array. (Step S502).
照合処理部150bは、テキストデータDに(d+1)文字目が存在するか否かを判定し(ステップS503)、テキストデータDに(d+1)文字目が存在しない場合には(ステップS504,No)、集合R(照合結果)を出力する(ステップS505)。 The collation processing unit 150b determines whether or not the (d + 1) -th character exists in the text data D (step S503). If the (d + 1) -th character does not exist in the text data D (No in step S504). , Set R (matching result) is output (step S505).
一方、テキストデータDに(d+1)文字目が存在する場合には(ステップS504,Yes)、照合処理部150bは、(d+1)文字目の文字をaに設定し(ステップS506)、d=d+1に設定する(ステップS507)。 On the other hand, when the (d + 1) -th character exists in the text data D (step S504, Yes), the collation processing unit 150b sets the (d + 1) -th character to a (step S506), and d = d + 1. (Step S507).
照合処理部150bは、状態sの文字aの通常遷移先が存在するか否かを判定する(ステップS508)。状態sの文字aの通常遷移先が存在しない場合には(ステップS509,No)、状態sのフェイラ遷移先を状態sに設定する(ステップS510)。 The matching processing unit 150b determines whether or not there is a normal transition destination of the character a in the state s (step S508). When the normal transition destination of the character a in the state s does not exist (step S509, No), the failure transition destination in the state s is set to the state s (step S510).
照合処理部150bは、フェイラ遷移により距離差分(遷移元のdistと遷移先のdistとの差分)だけ、スコア配列140dの点数を前に詰め、詰めた後の後方余白をNullに設定する(ステップS511)。また、照合処理部150bは、フェイラ遷移先から文字aにより遷移し、状態sが照合状態の場合に、状態sのパターンリストと、オフセットdとスコアを対応付けて集合Rに登録し(ステップS512)、ステップS508に移行する。ステップS512において、照合処理部150bは、スコア配列140dの点数を合計することで、スコアを算出する。 The collation processing unit 150b prepends the score array 140d by the distance difference (difference between the transition source dist and the transition destination dist) by the failer transition, and sets the back margin after the padding to Null (step) S511). In addition, when the transition processing unit 150b transitions from the failer transition destination by the letter a and the state s is the collation state, the pattern list of the state s, the offset d, and the score are associated and registered in the set R (step S512). ), The process proceeds to step S508. In step S512, the matching processing unit 150b calculates the score by summing the scores of the score array 140d.
ところで、ステップS509において、状態sに文字aの通常遷移先が存在する場合には(ステップS509,Yes)、照合処理部150bは、状態sのg[code]を状態sに代入する(状態sの文字aによる遷移先を新たに状態sとする)(ステップS513)。照合処理部150bは、状態sのdistに対応するコストに文字aのコストを登録し(ステップS514)、状態sが照合状態の場合に、状態sのパターンリストと、オフセットdと、スコアを対応づけて集合Rに登録し(ステップS515)、ステップS503に移行する。 By the way, in step S509, when the normal transition destination of the character a exists in the state s (step S509, Yes), the collation process part 150b substitutes g [code] of the state s for the state s (state s The transition destination by the character a is newly set to the state s) (step S513). The matching processing unit 150b registers the cost of the letter a in the cost corresponding to the dist of the state s (step S514), and when the state s is the matching state, the pattern list of the state s, the offset d, and the score are associated with each other. Then, it registers in the set R (step S515), and proceeds to step S503.
上述してきたように、本実施例にかかる検索装置100は、照合処理部150bがテキストデータを取得した場合に、ACマシン140cとテキストデータの各文字とを順次比較し、通常遷移した際に、文字に対応する点数をスコア配列140dに登録し、フェイラ遷移した場合に、遷移先と遷移元の距離(dist)の差に基づいて、スコア配列140dの点数を前に詰める。そして、照合処理部150bは、状態が照合状態に遷移した場合に、スコア配列140dに含まれる点数(類似度)を合計することで、照合されたキーワードの点数を判定するので、ACマシンの状態数を増加させることなくあいまい検索を実現させ、照合結果となるキーワードの類似度を正確に判定することができる。
As described above, when the collation processing unit 150b acquires the text data, the search device 100 according to the present embodiment sequentially compares the
ところで、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。 By the way, among the processes described in the present embodiment, all or part of the processes described as being automatically performed can be manually performed, or the processes described as being manually performed can be performed. All or a part can be automatically performed by a known method. In addition, the processing procedure, control procedure, specific name, and information including various data and parameters shown in the above-described document and drawings can be arbitrarily changed unless otherwise specified.
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。 Further, each component of each illustrated apparatus is functionally conceptual, and does not necessarily need to be physically configured as illustrated. In other words, the specific form of distribution / integration of each device is not limited to that shown in the figure, and all or a part thereof may be functionally or physically distributed or arbitrarily distributed in arbitrary units according to various loads or usage conditions. Can be integrated and configured. Further, all or any part of each processing function performed in each device may be realized by a CPU and a program analyzed and executed by the CPU, or may be realized as hardware by wired logic.
図60は、実施例に示した検索装置100に対応するコンピュータのハードウェア構成を示す図である。図60に示すように、このコンピュータ(検索装置)10は、入力装置11、モニタ12、RAM(Random Access Memory)13、ROM(Read Only Memory)14、ネットワークを介して他の装置とデータ通信を実行する通信制御装置15、媒体読取装置16、CPU(Central Processing Unit)17、HDD(Hard Disk Drive)18をバス19で接続している。
FIG. 60 is a diagram illustrating a hardware configuration of a computer corresponding to the search device 100 described in the embodiment. As shown in FIG. 60, this computer (search device) 10 performs data communication with other devices via an input device 11, a monitor 12, a RAM (Random Access Memory) 13, a ROM (Read Only Memory) 14, and a network. A
そして、HDD18には、上述した検索装置100の機能と同様の機能を発揮するACマシン構築プログラム18b、照合プログラム18cが記憶されている。CPU17が、ACマシン構築プログラム18b、照合プログラム18cを読み出して実行することにより、ACマシン構築プロセス17a、照合プロセス17bが起動される。 The HDD 18 stores an AC machine construction program 18b and a collation program 18c that exhibit functions similar to the functions of the search device 100 described above. When the CPU 17 reads and executes the AC machine construction program 18b and the collation program 18c, the AC machine construction process 17a and the collation process 17b are activated.
ここで、ACマシン構築プロセス17aは、図31に示したACマシン構築処理部150aに対応する。また、照合プロセス17bは、図31に示した照合処理部150b、照合結果出力部150cに対応する。
Here, the AC machine construction process 17a corresponds to the AC machine construction processing unit 150a shown in FIG. The collation process 17b corresponds to the collation processing unit 150b and the collation
なお、HDD18は、図31で示した記憶部140に記憶されたデータに対応する各種データ18aを記憶している。CPU17は、HDD18に記憶された各種データ18aをRAM13に読み出し、RAM13に格納された各種データ13aを用いてACマシンの構築、テキストデータに対するパターン照合を実行する。
The HDD 18 stores
10 コンピュータ
11 入力装置
12 モニタ
13 RAM
13a,18a 各種データ
14 ROM
15 通信制御装置
16 媒体読取装置
17 CPU
17a ACマシン構築プロセス
17b 照合プロセス
18 HDD
18b ACマシン構築プログラム
18c 照合プログラム
19 バス
100 検索装置
110 入力部
120 出力部
130 入出力制御部
140 記憶部
140a パターン集合
140b コスト管理テーブル
140c ACマシン
140d スコア配列
10 Computer 11 Input Device 12
13a, 18a Various data 14 ROM
15
17a AC machine construction process 17b Verification process 18 HDD
18b AC machine construction program 18c collation program 19 bus 100 search device 110 input unit 120
Claims (3)
複数の条件文字列の文字桁毎に、正解文字および許容文字、各文字に対応する点数を設定するとともに、特定の条件文字列の特定文字桁数までは一致したがその後に不一致が発生した際、あるいは、特定の条件文字列がすべて一致した際に、他の条件文字列の特定の文字桁の文字へ遷移するフェイラ遷移を設定したACオートマトンのトライ構造を生成する生成手段と、
前記トライ構造の文字桁毎に、検索対象である対象文字列が一致した正解文字あるいは許容文字列に対応付けられた点数が管理される点数テーブルと、
前記対象文字列を記憶装置から抽出し、該対象文字列に含まれる文字が前記トライ構造における特定の文字桁の正解文字あるいは許容文字と一致するか照合し、文字が一致する場合は、一致した文字桁に対応付けて正解文字または許容文字に対応する点数を前記点数テーブルに記録し、更に該対象文字列の次の文字について、該トライ構造の次の文字桁の正解文字または許容文字と照合することを順次繰り返す照合手段と、
対象文字列の次の文字を照合する際、前記フェイラ遷移に基づいて前記他の条件文字列の特定の文字列に移動する場合、該フェイラ遷移の遷移元と遷移先の文字桁の桁数の差を識別し、前記点数テーブルに記録された各文字桁の点数を、現在対応付けられた文字桁から該識別した桁数の差分だけ減じた文字桁の点数に変更する変更手段と、
いずれかの条件文字列の全文字桁で文字一致した時点で、前記点数テーブルに記録されている点数の合計を算出し、該合計点数に基づき条件文字列と前記対象文字列に含まれる文字列の類似度を出力する出力手段を、
備えることを特徴とする検索装置。 In a character string search of a plurality of OR conditions, an ambiguous search is performed in which a correct character included in the character string of the OR condition is collated by setting an allowable character that is not the correct character but is regarded as a condition match. A search device executed by an automaton,
For each character digit of multiple condition character strings, correct characters and allowable characters, and the number of points corresponding to each character are set, and when a specific character digit number of a specific condition character string is matched but a mismatch occurs after that Or a generation means for generating a trie structure of an AC automaton in which a failer transition is set to transition to a character of a specific character digit of another condition character string when all of the specific condition character strings match,
For each character digit of the trie structure, a score table for managing the score associated with the correct character or the allowed character string that matches the target character string to be searched;
The target character string is extracted from the storage device, and the characters included in the target character string are collated with a correct character or an allowable character of a specific character digit in the trie structure. The score corresponding to the correct character or the allowable character is recorded in the score table in association with the character digit, and the next character of the target character string is collated with the correct character or the allowable character of the next character digit of the trie structure. Collating means for sequentially repeating the operation,
When the next character of the target character string is collated, when moving to a specific character string of the other conditional character string based on the failer transition, the number of digits of the character digits of the transition source and the destination of the failer transition A change means for identifying a difference and changing the score of each character digit recorded in the score table to a character digit score obtained by subtracting the difference of the identified digit number from the currently associated character digit;
When all the character digits of any of the condition character strings are matched, the sum of the points recorded in the score table is calculated, and the condition character string and the character string included in the target character string are calculated based on the total score. Output means for outputting the similarity of
A search device comprising:
前記検索装置は、トライ構造の文字桁毎に、検索対象である対象文字列が一致した正解文字あるいは許容文字列に対応付けられた点数が管理される点数テーブルを有し、
前記検索装置が、
前記複数の条件文字列の文字桁毎に、正解文字および許容文字、各文字に対応する点数を設定するとともに、特定の条件文字列の特定文字桁数までは一致したがその後に不一致が発生した際、あるいは、特定の条件文字列がすべて一致した際に、他の条件文字列の特定の文字桁の文字へ遷移するフェイラ遷移を設定したACオートマトンのトライ構造を生成する生成ステップと、
前記対象文字列を記憶装置から抽出し、該対象文字列に含まれる文字が前記トライ構造における特定の文字桁の正解文字あるいは許容文字と一致するか照合し、文字が一致する場合は、一致した文字桁に対応付けて正解文字または許容文字に対応する点数を前記点数テーブルに記録し、更に該対象文字列の次の文字について、該トライ構造の次の文字桁の正解文字または許容文字と照合することを順次繰り返す照合ステップと、
対象文字列の次の文字を照合する際、前記フェイラ遷移に基づいて前記他の条件文字列の特定の文字列に移動する場合、該フェイラ遷移の遷移元と遷移先の文字桁の桁数の差を識別し、前記点数テーブルに記録された各文字桁の点数を、現在対応付けられた文字桁から該識別した桁数の差分だけ減じた文字桁の点数に変更する変更ステップと、
いずれかの条件文字列の全文字桁で文字一致した時点で、前記点数テーブルに記録されている点数の合計を算出し、該合計点数に基づき条件文字列と前記対象文字列に含まれる文字列の類似度を出力する出力ステップを、
含んだことを特徴とする検索方法。 In a character string search for a plurality of OR conditions, an ambiguous search is performed in which AC characters are included in the character string of the conditions and collated by setting an allowable character that is not the correct answer character but is regarded as a condition match. The search method of the search device executed in
The search device has a score table for managing the score associated with the correct character or the allowable character string that matches the target character string to be searched for each character digit of the trie structure,
The search device is
For each character digit in the plurality of condition character strings, correct characters and allowable characters, and the number of points corresponding to each character are set, and even a specific character digit number of a specific condition character string is matched, but then a mismatch occurs. Or a generation step for generating an AC automaton trie structure in which a failer transition is set to transition to a character of a specific character digit of another condition character string when all of the specific condition character strings are matched,
The target character string is extracted from the storage device, and the characters included in the target character string are collated with a correct character or an allowable character of a specific character digit in the trie structure. The score corresponding to the correct character or the allowable character is recorded in the score table in association with the character digit, and the next character of the target character string is collated with the correct character or the allowable character of the next character digit of the trie structure. A verification step that repeats sequentially,
When the next character of the target character string is collated, when moving to a specific character string of the other conditional character string based on the failer transition, the number of digits of the character digits of the transition source and the destination of the failer transition A change step of identifying a difference and changing the score of each character digit recorded in the score table to a character digit score obtained by subtracting the difference of the identified digit number from the currently associated character digit;
When all the character digits of any of the condition character strings are matched, the sum of the points recorded in the score table is calculated, and the condition character string and the character string included in the target character string are calculated based on the total score. Output step to output the similarity of
A search method characterized by inclusion.
前記コンピュータは、トライ構造の文字桁毎に、検索対象である対象文字列が一致した正解文字あるいは許容文字列に対応付けられた点数が管理される点数テーブルを有し、
前記コンピュータに、
前記複数の条件文字列の文字桁毎に、正解文字および許容文字、各文字に対応する点数を設定するとともに、特定の条件文字列の特定文字桁数までは一致したがその後に不一致が発生した際、あるいは、特定の条件文字列がすべて一致した際に、他の条件文字列の特定の文字桁の文字へ遷移するフェイラ遷移を設定したACオートマトンのトライ構造を生成する生成機能と、
前記対象文字列を記憶装置から抽出し、該対象文字列に含まれる文字が前記トライ構造における特定の文字桁の正解文字あるいは許容文字と一致するか照合し、文字が一致する場合は、一致した文字桁に対応付けて正解文字または許容文字に対応する点数を前記点数テーブルに記録し、更に該対象文字列の次の文字について、該トライ構造の次の文字桁の正解文字または許容文字と照合することを順次繰り返す照合機能と、
対象文字列の次の文字を照合する際、前記フェイラ遷移に基づいて前記他の条件文字列の特定の文字列に移動する場合、該フェイラ遷移の遷移元と遷移先の文字桁の桁数の差を識別し、前記点数テーブルに記録された各文字桁の点数を、現在対応付けられた文字桁から該識別した桁数の差分だけ減じた文字桁の点数に変更する変更手順と、
いずれかの条件文字列の全文字桁で文字一致した時点で、前記点数テーブルに記録されている点数の合計を算出し、該合計点数に基づき条件文字列と前記対象文字列に含まれる文字列の類似度を出力する出力機能を、
を実現させるためのプログラムを記録した記憶媒体。 In a character string search of a plurality of OR conditions, an ambiguous search is performed on a correct character included in the character string of the condition by setting an allowable character that is not the correct character character but considered to be a condition match and performing a matching process. A computer-readable storage medium storing a program to be executed by an AC automaton,
The computer has a score table for managing the score associated with the correct character or the allowable character string that matches the target character string to be searched for each character digit of the trie structure,
In the computer,
For each character digit in the plurality of condition character strings, correct characters and allowable characters, and the number of points corresponding to each character are set, and even a specific character digit number of a specific condition character string is matched, but then a mismatch occurs. Or a generation function for generating a trie structure of an AC automaton that sets a failer transition to transition to a character of a specific character digit of another condition character string when all of the specific condition character strings match,
The target character string is extracted from the storage device, and the characters included in the target character string are collated with a correct character or an allowable character of a specific character digit in the trie structure. The score corresponding to the correct character or the allowable character is recorded in the score table in association with the character digit, and the next character of the target character string is collated with the correct character or the allowable character of the next character digit of the trie structure. A collation function that sequentially repeats
When the next character of the target character string is collated, when moving to a specific character string of the other conditional character string based on the failer transition, the number of digits of the character digits of the transition source and the destination of the failer transition A change procedure for identifying a difference and changing the score of each character digit recorded in the score table to a character digit score obtained by subtracting the difference of the identified digit number from the currently associated character digit;
When all the character digits of any of the condition character strings are matched, the sum of the points recorded in the score table is calculated, and the condition character string and the character string included in the target character string are calculated based on the total score. Output function to output the similarity of
A storage medium on which a program for realizing the above is recorded.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009063166A JP5293301B2 (en) | 2009-03-16 | 2009-03-16 | SEARCH DEVICE, SEARCH METHOD, AND STORAGE MEDIUM |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009063166A JP5293301B2 (en) | 2009-03-16 | 2009-03-16 | SEARCH DEVICE, SEARCH METHOD, AND STORAGE MEDIUM |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010218140A JP2010218140A (en) | 2010-09-30 |
JP5293301B2 true JP5293301B2 (en) | 2013-09-18 |
Family
ID=42976940
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009063166A Active JP5293301B2 (en) | 2009-03-16 | 2009-03-16 | SEARCH DEVICE, SEARCH METHOD, AND STORAGE MEDIUM |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5293301B2 (en) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5810951B2 (en) * | 2012-02-08 | 2015-11-11 | 富士通株式会社 | Verification device, verification program, and verification method |
JP6136142B2 (en) * | 2012-08-24 | 2017-05-31 | 富士通株式会社 | Character string replacement device, method and program |
CN106708858A (en) | 2015-11-13 | 2017-05-24 | 阿里巴巴集团控股有限公司 | Information recommendation method and device |
CN113051925B (en) * | 2019-12-26 | 2024-06-18 | 中国移动通信集团有限公司 | Time identification method, device, equipment and computer storage medium |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2886868B2 (en) * | 1988-09-07 | 1999-04-26 | 株式会社日立製作所 | Post-processing method for character recognition |
JPH11143893A (en) * | 1997-11-07 | 1999-05-28 | Matsushita Electric Ind Co Ltd | Word collating device |
JP3619825B2 (en) * | 2003-08-25 | 2005-02-16 | 株式会社日立製作所 | Document retrieval and delivery method and apparatus |
-
2009
- 2009-03-16 JP JP2009063166A patent/JP5293301B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2010218140A (en) | 2010-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4998220B2 (en) | Form data extraction program, form data extraction apparatus, and form data extraction method | |
JP5293301B2 (en) | SEARCH DEVICE, SEARCH METHOD, AND STORAGE MEDIUM | |
US20120005234A1 (en) | Storage medium, trie tree generation method, and trie tree generation device | |
CN101460960A (en) | Combiner for improving handwriting recognition | |
JP2017511917A (en) | Method and apparatus for recognizing musical symbols | |
JP5022361B2 (en) | RNA secondary structure prediction apparatus, prediction method, program, and recording medium | |
CN106649218A (en) | Quick binary file comparing method based on SimHash algorithm | |
JP5585472B2 (en) | Information collation apparatus, information collation method, and information collation program | |
WO2016056236A1 (en) | Information processing device, information processing method, and recording medium | |
Preuss et al. | Multimodal optimization: Formulation, heuristics, and a decade of advances | |
JP2009169689A (en) | Data classification method and data processing apparatus | |
Wei et al. | A branch elimination-based efficient algorithm for large-scale multiple longest common subsequence problem | |
WO2016181470A1 (en) | Recognition device, recognition method and program | |
JP5875961B2 (en) | Source code similarity evaluation program, source code similarity evaluation apparatus, and computer-readable storage medium | |
JP7087931B2 (en) | Search program, search method and search device | |
JP6435939B2 (en) | Data classification program, data classification method, and data classification apparatus | |
JP5396843B2 (en) | Search method and search device | |
JP2019148859A (en) | Device and method supporting discovery of design pattern in model development environment using flow diagram | |
JP5365321B2 (en) | Design data merging device, design data merging method, and design data merging program | |
JP6487100B1 (en) | Form processing apparatus and form processing method | |
JP6320089B2 (en) | Recognition device, recognition method and program | |
JP2011154602A (en) | Character string management apparatus, character string registration method, character string search method and character string management program | |
JP5387371B2 (en) | Tri-tree classification program and tri-tree classification method | |
KR102370044B1 (en) | A system and a method for searching prior art information and measuring similarity thereof | |
JP2019144939A (en) | Information processing apparatus, information processing method, and program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20111107 |
|
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: 20130514 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130527 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5293301 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |