JP6012414B2 - 情報処理装置及び情報処理方法及びプログラム - Google Patents

情報処理装置及び情報処理方法及びプログラム Download PDF

Info

Publication number
JP6012414B2
JP6012414B2 JP2012246410A JP2012246410A JP6012414B2 JP 6012414 B2 JP6012414 B2 JP 6012414B2 JP 2012246410 A JP2012246410 A JP 2012246410A JP 2012246410 A JP2012246410 A JP 2012246410A JP 6012414 B2 JP6012414 B2 JP 6012414B2
Authority
JP
Japan
Prior art keywords
state transition
state
transition information
information
digit
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
Application number
JP2012246410A
Other languages
English (en)
Other versions
JP2014095993A (ja
Inventor
光則 郡
光則 郡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2012246410A priority Critical patent/JP6012414B2/ja
Publication of JP2014095993A publication Critical patent/JP2014095993A/ja
Application granted granted Critical
Publication of JP6012414B2 publication Critical patent/JP6012414B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

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

Description

本発明は、オートマトンを用いて検査を行う技術に関する。
本発明は、例えば、オートマトンを用いて、入力された文字列が検査条件に合致するか否かを検査する技術に関する。
近年、個人情報等の機密情報の漏洩を防止するため、文書やデータベース等に含まれる個人情報等の秘匿すべき情報を効率的に検出するニーズが高まっている。
そのような秘匿すべき情報の一つとして、クレジットカード番号、口座番号、証券番号等の番号がある。
例えば、クレジットカード番号の形式の一例として、16桁の数字からなり、4桁ごとにハイフンで区切られた19文字の文字列であるが、このような番号は、例えば図3に示す正規表現を用いて、公知の検出方法により検出することができる。
このような正規表現による文字列パタンの検出は、有限オートマトン(Finite State Automaton)と呼ばれる方法により実現可能である。
有限オートマトンを用いる文字列パタンの一般的な検出方法では、正規表現から状態遷移表を生成する手順については、例えば特許文献1、特許文献2、特許文献3に記載の公知の手順を用い、正規表現で記載された検査条件を状態遷移表に変換する。
この時、例えば図47に示す拡張BNF(Backus−Naur Form)で表現される構文規則に基づき、字句解析および構文解析の手順を行うことにより、状態遷移表を生成する。
状態遷移表は(現状態、入力文字、次状態)の組の集合で表現される。
有限オートマトンは初期状態から開始し、1文字入力されるごとに状態遷移表に含まれる現状態と入力文字の組に対応する次状態に遷移し、受理状態に到達すると文字列の検出が行われたものとする。
特に、現状態と入力文字の組に対して次状態が一意に決まる有限オートマトンを決定性有限オートマトン(DFA:Deterministic Finite Automaton)、2以上の次状態が存在する有限オートマトンを非決定性有限オートマトン(NFA: Non−Deterministic Finite Automaton)と呼ぶ。
NFAはDFAに変換可能であることが知られており、DFAを用いると文字列を一度読むことにより、後戻りすることなく照合を行うことができる。
ところで、文書やデータベース中には、例えば図3に示すクレジットカード番号と同一の形式を持つが、クレジットカード番号ではない番号列が使用されることがある。
このため、図3の正規表現による文字列パタン検出では、クレジットカード番号とこのような番号列を区別することができないため、このような番号列も過剰に検出される。
一方、クレジットカード番号、口座番号、証券番号等などの番号には、誤入力防止を目的としてチェックディジットが付加されている。
チェックディジットの方式としては、例えば「ANSI規格X4.13」に定義されている「Luhnの式」や、「モジュラス10、ウェイト3」、「モジュラス11 ウェイト10−2」などの方式が知られており、例えばクレジットカード番号では右端の桁(最終桁)がLuhnの式によるチェックディジットである。
チェックディジットの正当性を検査することにより、右端の桁をチェックディジットとして使用していない番号列や異なる計算手順によるチェックディジットを使用している番号列を除外することができ、上記の過剰な検出を削減することができる。
「Luhnの式」、「モジュラス10、ウェイト3」、「モジュラス11 ウェイト10−2」等のチェックディジット方式では、まず、各桁の文字を数値に変換し、ついで変換された数値を全桁に渡る総和を取り、その総和を予め決めた数による剰余を取る、という共通的な手順を使用している。
たとえばLuhnの式では以下の手順に従って計算を行う。
右端のチェックディジットを1番目として、偶数番目の桁を2倍にする。
2倍にしていない桁も含め、各数字の総和を求める(2倍にした桁が2桁になった場合は、それぞれを別々の数字として加える)。
この総和の下1桁が0なら、この番号は正しく、そうでない場合は正しくない。
クレジットカード番号の検出とともにチェックディジットを検査する方法は、例えば特許文献4に示されており、まず、正規表現による文字列パタンの検出を行った後、検出された文字列パタンのチェックディジット検査を行うという2段階の処理で実現できる。
しかし、この方法では、文字列パタンの検出を行い、検出位置を特定した後、チェックディジットの計算を行うという処理の切り替えが必要になり、処理時間を要する。
特許第3852757号 特許第4535130号 特開2010−225156号公報 特許第4354182号
別の方法として、有限オートマトンによって文字列パタンの検出を行うのと同時にチェックディジットの検査を行う方法が存在する。
すなわち、全ての正当な文字列パタンを列挙した正規表現を入力とする有限オートマトンにより、文字列パタンの検出とチェックディジットの検査を同時に実行することができる。
例えば、図3の正規表現で表現されるクレジットカード番号でLuhnの式によるチェックディジットを備えている場合、正当なチェックディジットを持つ文字列パタンの一例として、文字列「4023−9970−3986−5763」などがある。
このような正当な文字列パタンの全てを記号「|」により列挙した正規表現を作成することが論理的には可能である。
しかし、この方法では、有限オートマトンの入力となる正規表現が極めて長大になるという課題がある。
一般に剰余を用いたチェックディジット検査の場合、チェックディジット自身を含む検査対象の数字の桁数をd、剰余の種類をMとするとき、この方法による正規表現検査条件の長さrは、(式1)に示す程度となる。
r=M(d−2)・・・(式1)
すなわち、検査対象の数字の桁数に対して指数オーダの長さとなる。
本例の場合、M=10,d=16から、(式2)のようになる。
r=1014・・・(式2)
このため、正当な文字列パタンの全てを記号「|」により列挙した正規表現の規模は、今日の一般的なコンピュータのメモリに保持することが困難な程度になる。
つまり、一般に剰余計算に基づくチェックディジット検査を公知の有限オートマトンにより検査しようとすると、正規表現の記述が長大になり、処理が困難になるという課題がある。
本発明は、上記の課題を解決することを主な目的としており、オートマトンへの入力として、長大な正規表現を記述することなく、オートマトンによる検査を高速に実行することを主な目的とする。
本発明に係る情報処理装置は、
オートマトンによる検査に用いられる、状態遷移パスが表される状態遷移情報を1つ以上記憶する状態遷移情報記憶部と、
正規表現で記述され、いずれかの状態遷移情報の識別子が選択識別子として含まれている検査条件を取得する検査条件取得部と、
前記選択識別子に対応する状態遷移情報である選択状態遷移情報を前記状態遷移情報記憶部から読み出すとともに、前記検査条件内の記述のうち前記選択識別子以外の記述に対応する状態遷移パスを生成し、生成した状態遷移パスを前記選択状態遷移情報の状態遷移パスに追加して、前記選択状態遷移情報から新たな状態遷移情報を生成する状態遷移情報更新部とを有することを特徴とする。
本発明では、検査条件に含まれる選択識別子に対応する選択状態遷移情報を取得するとともに、検査条件内の記述のうち選択識別子以外の記述に対応する状態遷移パスを生成し、生成した状態遷移パスを選択状態遷移情報の状態遷移パスに追加して、選択状態遷移情報から新たな状態遷移情報を生成する。
このため、検査条件内の選択識別子以外の記述と選択状態遷移情報とを連携させることができ、オートマトンへの入力として長大な正規表現を記述しなくても、オートマトンによる検査を高速に実行することができる。
実施の形態1に係る文字列照合装置の構成例を示す図。 実施の形態1に係る正規表現検索条件の例を示す図。 実施の形態1に係る、クレジットカード番号に対応する、チェックディジット検査を行わない正規表現の一例を示す図。 実施の形態1に係る外部状態遷移定義の例を示す図。 実施の形態1に係る状態遷移定義名の例を示す図。 実施の形態1に係る文字集合定義の例を示す図。 実施の形態1に係る桁数定義の例を示す図。 実施の形態1に係る除数定義の例を示す図。 実施の形態1に係る剰余定義の例を示す図。 実施の形態1に係る変換関数定義の例を示す図。 実施の形態1に係る外部状態遷移表の例を示す図。 実施の形態1に係る外部個別状態遷移表名の例を示す図。 実施の形態1に係る外部初期状態の例を示す図。 実施の形態1に係る外部受理状態の例を示す図。 実施の形態1に係る外部状態集合の例を示す図。 実施の形態1に係る外部状態遷移集合の例を示す図。 実施の形態1に係る外部状態遷移集合の例を示す図。 実施の形態1に係るNFA状態遷移表の例を示す図。 実施の形態1に係るNFA初期状態の例を示す図。 実施の形態1に係るNFA受理状態の例を示す図。 実施の形態1に係るNFA状態集合の例を示す図。 実施の形態1に係るNFA状態遷移集合の例を示す図。 実施の形態1に係るNFA状態遷移集合の例を示す図。 実施の形態1に係るNFA状態遷移集合の例を示す図。 実施の形態1に係るDFA状態遷移表の例を示す図。 実施の形態1に係るDFA初期状態の例を示す図。 実施の形態1に係るDFA受理状態の例を示す図。 実施の形態1に係るDFA状態集合の例を示す図。 実施の形態1に係るDFA状態遷移集合の例を示す図。 実施の形態1に係るDFA状態遷移集合の例を示す図。 実施の形態1に係るDFA状態遷移集合の例を示す図。 実施の形態1に係る入力文字列の例(正しいチェックディジット)を示す図。 実施の形態1に係る入力文字列の例(正しくないチェックディジット)を示す図。 実施の形態1に係る入力文字列の例(形式不正)を示す図。 実施の形態1に係る文字列照合装置の全体処理の例を示すフローチャート図。 実施の形態1に係る状態遷移表生成部の動作例を示すフローチャート図。 実施の形態1に係る外部状態遷移表生成部の動作例を示すフローチャート図。 実施の形態1に係る手続き「個別状態遷移表の生成」の詳細を示すフローチャート図。 実施の形態1に係る手続き「状態の生成」の詳細を示すフローチャート図。 実施の形態1に係る手続き「状態遷移の生成」の詳細を示すフローチャート図。 実施の形態1に係る手続き「状態の生成」によって生成される状態遷移グラフの例を示す図。 実施の形態1に係る手続き「状態遷移の生成」によって生成される状態遷移グラフの例を示す図。 実施の形態1に係る手続き「状態遷移の生成」によって生成される状態遷移グラフの例を示す図。 実施の形態1に係る手続き「状態遷移の生成」によって生成される状態遷移グラフの例を示す図。 実施の形態1に係る手続き「状態遷移の生成」によって生成される状態遷移グラフの例を示す図。 実施の形態1に係る手続き「状態遷移の生成」によって生成される状態遷移グラフの例を示す図。 通常の正規表現の構文規則の例を示す図。 実施の形態1に係る正規表現構文規則の例を示す図。 実施の形態1に係る外部定義出現時の処理の例を示すフローチャート図。 実施の形態1に係る3文字目「=」を読んだ直後の状態遷移表を示す図。 実施の形態1に係る3文字目「=」を読んだ直後の状態遷移グラフを示す図。 実施の形態1に係る3文字目「=」を読んだ直後の状態遷移グラフ、空文字遷移を含む例を示す図。 実施の形態1に係る(??{CREDIT}??)を読んだ直後の状態遷移グラフを示す図。 実施の形態1に係る全て読んだ後の状態遷移グラフを示す図。 実施の形態1に係る非決定的遷移を除去した後の状態遷移グラフを示す図。 実施の形態1に係る照合による状態遷移の例1を示す図。 実施の形態1に係る照合による状態遷移の例2を示す図。 実施の形態1に係る照合による状態遷移の例3を示す図。 実施の形態2に係る文字列照合装置の構成例を示す図。 実施の形態3に係る文字列照合装置の構成例を示す図。 実施の形態1〜3に係る文字列照合装置のハードウェア構成例を示す図。
実施の形態1.
本実施の形態では、オートマトンに入力する正規表現を長大な記述にしなくとも、チェックディジットを含む文字列パタンの検出を高速に実行することができる文字列照合装置を説明する。
より具体的には、本実施の形態に係る文字列照合装置は、現状態と文字の組に対し次状態を記述した状態遷移を1または複数個含む外部状態遷移表と、外部状態遷移表と正規表現で記述された検査条件から、状態遷移表を生成する状態遷移表生成部と、入力文字列と状態遷移表から照合結果を出力する有限オートマトンを備える。
また、本実施の形態に係る文字列照合装置は、正規表現検査条件と外部状態遷移表から生成される状態遷移表による照合を行うことにより、長大な正規表現を記述することなく、文字列パタンの検出とチェックディジット検査を同時に行うことができ、チェックディジットを含む文字列パタンを高速に検出できる。
図1は、実施の形態1における文字列照合装置1を示す図である。
文字列照合装置1は、情報処理装置の例に相当する。
図1に示すように、文字列照合装置1は、状態遷移表生成部6と照合部7とに大別される。
状態遷移表生成部6は、外部状態遷移定義3を入力して、外部状態遷移表9を生成し、更に、正規表現検査条件2を入力して、外部状態遷移表9と正規表現検査条件2とからNFA状態遷移表11を生成し、更に、NFA状態遷移表11からDFA状態遷移表13を生成する。
照合部6は、入力文字列4を入力し、入力文字列4が正規表現検査条件2で規定されている検査条件を満たすか否かをDFA状態遷移表13を用いて判定し、照合結果6を出力する。
状態遷移表生成部6において、外部状態遷移表生成部8は、外部状態遷移定義3を入力して、1又は複数の外部状態遷移表9を生成し、生成した外部状態遷移表9を外部状態遷移表記憶部90に格納する。
外部状態遷移表9は、後述する決定性有限オートマトン14による検査に用いられる。
また、外部状態遷移表9には、複数の状態における状態遷移の経緯である状態遷移パスが定義されている。
なお、外部状態遷移表9は状態遷移情報の例に相当し、外部状態遷移表生成部8は状態遷移情報生成部の例に相当し、外部状態遷移表記憶部90は状態遷移情報記憶部の例に相当する。
NFA状態遷移表生成部10は、正規表現検査条件2を入力し、正規表現検査条件2に対応する外部状態遷移表9を外部状態遷移表記憶部90から読み出す。
また、NFA状態遷移表生成部10は、正規表現検査条件2に正規表現で記述されている検査条件と、外部状態遷移表記憶部90から読み出した外部状態遷移表9とを関連付ける状態遷移表であるNFA状態遷移表11を生成する。
そして、NFA状態遷移表生成部10は、生成したNFA状態遷移表11をNFA状態遷移表記憶部110に格納する。
正規表現検査条件2には、いずれかの外部状態遷移表9の識別子が含まれている。
この識別子を選択識別子ともいう。
また、正規表現検査条件2には選択識別子以外の記述も含まれている。
また、NFA状態遷移表生成部10は、正規表現検査条件2内の選択識別子以外の記述に対応する状態遷移パスを生成し、選択識別子に対応する外部状態遷移表9に、生成した状態遷移パスを追加して、NFA状態遷移表11を生成する。
なお、NFA状態遷移表生成部10は、検査条件取得部及び状態遷移情報更新部の例に相当する。
DFA状態遷移表生成部12は、NFA状態遷移表記憶部110からNFA状態遷移表11を読み出し、読み出したNFA状態遷移表11から非決定的状態遷移を除去して、DFA状態遷移表13を生成する。
そして、DFA状態遷移表生成部12は、生成したDFA状態遷移表13をDFA状態遷移表記憶部130に格納する。
また、DFA状態遷移表生成部12は、DFA状態遷移表13をDFA状態遷移表記憶部130から決定性有限オートマトン14に出力する。
DFA状態遷移表生成部12は、状態遷移情報修正部及び状態遷移情報出力部の例に相当する。
照合部7において、決定性有限オートマトン14は、入力文字列4とDFA状態遷移表13を入力し、DFA状態遷移表13を用いて入力文字列4を検査する。
例えば、クレジットカード番号についての検査の場合は、決定性有限オートマトン14は、複数桁の文字列を入力文字列4として入力し、DFA状態遷移表13を用いて、桁ごとの文字の適性検査(0−9の数字又はハイフンであるか否かの検査)とチェックディジット検査(Luhnの式の計算)とを並行して行う。
決定性有限オートマトン14が検査した結果は、照合結果5として出力される。
次に、本実施の形態に係る文字列照合装置1の動作の概要を説明する。
以下では、決定性有限オートマトン14が、入力文字列4がクレジットカード番号に該当するか否かの検査を行う場合を例にして説明を進める。
また、クレジットカード番号のチェックディジットは、Luhnの式によるものとする。
外部状態遷移表生成部8は、外部状態遷移定義3を入力して、クレジットカード番号の照合のための外部状態遷移表9を生成し、生成した外部状態遷移表9を外部状態遷移表記憶部90に格納する。
この外部状態遷移表9は、入力文字列4に対して、桁ごとの文字の適性検査と桁ごとのチェックディジット検査とを並行して行うことができる状態遷移表である。
また、この外部状態遷移表9の名称(識別子)を「CREDIT」とする。
名称「CRDIT」の外部状態遷移表9は、例えば、図42の状態遷移グラフと等価である。
図42の状態遷移グラフでは、桁ごとの文字の適性検査と桁ごとのチェックディジット検査とを並行して行うための状態遷移パスが定義されている。
なお、図42の状態遷移グラフの詳細、図42の状態遷移グラフの生成手順は後述する。
NFA状態遷移表生成部10は、正規表現検査条件2を入力し、正規表現検査条件2に対応する外部状態遷移表9を外部状態遷移表記憶部90から読み出す。
NFA状態遷移表生成部10は、例えば、図2に示す正規表現検査条件2を入力する。
図2の正規表現検査条件2では、(??{CREDIT}??)が選択識別子である。
NFA状態遷移表生成部10は、選択識別子に従い、名称「CREDIT」の外部状態遷移表9を外部状態遷移表記憶部90から読み出す。
更に、NFA状態遷移表生成部10は、正規表現検査条件2内の選択識別子に先行する記述である先行記述(図2の例では「No=」)に対応する状態遷移パス(先行記述状態遷移パスという)を生成し、先行記述状態遷移パスの最後尾の状態を、名称「CREDIT」の外部状態遷移表9の初期状態に連結する。
図2の正規表現検査条件2の場合は、「No=」に対応する状態遷移パスとして図51の状態遷移パスが生成され、図51の状態遷移パスの最後尾の状態(状態:S)が図42の状態遷移グラフの初期状態(状態:S1000)に連結されると、図53の状態遷移グラフとなる。
更に、NFA状態遷移表生成部10は、正規表現検査条件2内の選択識別子に後続する記述である後続記述(図2の例では「#」)に対応する状態遷移パス(後続記述状態遷移パスという)を生成し、後続記述状態遷移パスの先頭の状態(状態:S)を、名称「CREDIT」の外部状態遷移表9の受理状態(状態:S1190)に連結する。
図54は、図53の状態遷移グラフに図2の正規表現検査条件2の後続記述状態遷移パスが連結された後の状態遷移グラフを示す。
図54の状態遷移グラフに対応する状態遷移表が、NFA状態遷移表11に相当する。
図43の状態遷移グラフ(外部状態遷移表9に相当)では、図54の状態:S1000に相当する状態が初期状態であり、状態:S1190に相当する状態が受理状態であったが、図54の状態遷移グラフでは、状態:Sが新たな初期状態であり、状態:Sが新たな受理状態である。
本実施の形態では、NFA状態遷移表生成部10が、図54の状態遷移グラフに相当するNFA状態遷移表11を生成することで、決定性有限オートマトン14への入力として長大な正規表現を記述しなくてもよく、図2に示す正規表現検査条件2のように、簡潔な検査条件とすることができる。
DFA状態遷移表生成部12は、図54の状態遷移グラフのうちの非決定的状態遷移を除去して、DFA状態遷移表13を生成する。
具体的には、図54の状態遷移グラフの空文字遷移「ε」を除去して、図55の状態遷移グラフを生成する。
図55の状態遷移グラフは、DFA状態遷移表13に相当する。
次に、本実施の形態に係る外部状態遷移表生成部8、NFA状態遷移表生成部10及びDFA状態遷移表生成部12の詳細を説明する。
図2は、実施の形態1における正規表現検査条件2の一例を示す図である。
図3は、クレジットカード番号に対応する、チェックディジット検査を行わない正規表現の一例を示す図である。
図4は、実施の形態1における外部状態遷移定義3の構成を示す図である。
図4において、21は状態遷移定義であり、外部状態遷移定義3の中に1または複数の状態遷移定義21が含まれ、図4ではN個の状態遷移定義21が含まれている。
22は状態遷移名定義、23は文字集合定義、24は桁数定義、25は除数定義、26は受理剰余定義、27は変換関数定義である。
図5は、実施の形態1における外部状態遷移名指定22の一例を示す図である。
図6は、実施の形態1における文字集合定義23の一例を示す図であり、図3の形式のクレジットカード番号に対応する。
図7は、実施の形態1における桁数定義24の一例を示す図であり、図3の形式のクレジットカード番号に対応する。
図8は、実施の形態1における除数定義25の一例を示す図であり、Luhnの式によるチェックディジット検査に対応する。
図9は、実施の形態1における剰余定義26の一例を示す図であり、Luhnの式によるチェックディジット検査に対応する。
図10は、実施の形態1における変換関数定義27の一例を示す図であり、Luhnの式によるチェックディジットを備えたクレジットカード番号に対応する。
図10において、桁位置:1は、クレジットカード番号の左端の桁であり、桁位置:19は、クレジットカード番号の右端の桁である。
前述のように、Luhnの式では、右端のチェックディジットを1番目として、偶数番目の桁を2倍にする。
このため、桁位置:19では、奇数番目の桁なので、入力文字の数値は2倍されず、入力文字の数値がそのままチェックディジット計算の結果として利用される。
一方、桁位置:18では、偶数番目の桁なので、入力文字の数値は2倍される。
入力文字が0〜4の場合は2倍後の数値(0、2、4、6、8)も1桁なので、チェックディジット計算の結果は、2倍後の数値(0、2、4、6、8)である。
一方、入力文字が5の場合は、5×2=10となり、「1」と「0」の加算結果である「1」がチェックディジット計算の結果となる。
同様にして、入力文字が9の場合は、9×2=18となり、「1」と「8」の加算結果である「9」がチェックディジット計算の結果となる。
図11は、実施の形態1における外部状態遷移表9の構成の一例を示す図である。
図11において、31は外部個別状態遷移表であり、外部状態遷移表9の中に1又は複数の外部個別状態遷移表31が含まれ、図11ではN個の外部個別状態遷移表31が含まれている。
32は外部個別状態遷移表名、33は外部初期状態、34は外部受理状態、35は外部状態集合、36は外部状態遷移集合である。
図12は、実施の形態1における外部個別状態遷移表名32の一例を示す図である。
図12は、外部状態遷移表9の名称が「CREDIT」であることを表している。
図13は、実施の形態1における外部初期状態33の一例を示す図である。
図13は、外部状態遷移表9の初期状態が、状態:Sであることを表している。
図14は、実施の形態1における外部受理状態34の一例を示す図である。
図14は、外部状態遷移表9の受理状態が、状態:S190であることを表している。
図15は、実施の形態1における外部状態集合35の一例を示す図である。
図15は、外部状態遷移表9に含まれる状態の状態名が定義されている。
図16、図17は、実施の形態1における外部状態遷移集合36の一例を示す図である。
図16、図17では、外部状態遷移表9における現状態と入力文字と次状態との関係が示されている。
例えば、現状態:Sのときに、決定性有限オートマトン14が入力文字として「0」を入力した場合には、次状態:S10に遷移することを表している。
図18は、実施の形態1におけるNFA状態遷移表11の一例を示す図である。
図18において、41はNFA初期状態、42はNFA受理状態、43はNFA状態集合、44はNFA状態遷移集合である。
図19は、実施の形態1におけるNFA初期状態41の一例を示す図である。
図19は、NFA状態遷移表11の初期状態が、状態:Sであることを表している。
図20は、実施の形態1におけるNFA受理状態42の一例を示す図である。
図20は、NFA状態遷移表11の受理状態が、状態:Sであることを表している。
図21は、実施の形態1におけるNFA状態集合43の一例を示す図である。
図21では、NFA状態遷移表11に含まれる状態の状態名が定義されている。
図22、図23、図24は、実施の形態1におけるNFA状態遷移集合44の一例を示す図である。
図22、図23、図24では、NFA状態遷移表11における現状態と入力文字と次状態との関係が示されている。
例えば、現状態:S1000のときに、決定性有限オートマトン14が入力文字として「0」を入力した場合には、次状態:S1010に遷移することを表している。
図25は、実施の形態1におけるDFA状態遷移表13の一例を示す図である。
図25において、51はDFA初期状態、52はDFA受理状態、53はDFA状態集合、54はDFA状態遷移集合である。
図26は、実施の形態1におけるDFA初期状態51の一例を示す図である。
図26は、DFA状態遷移表13の初期状態が、状態:Sであることを表している。
図27は、実施の形態1におけるDFA受理状態52の一例を示す図である。
図27は、DFA状態遷移表13の受理状態が、状態:Sであることを表している。
図28は、実施の形態1におけるDFA状態集合53の一例を示す図である。
図28では、DFA状態遷移表13に含まれる状態の状態名が定義されている。
図29、図30、図31は、実施の形態1におけるDFA状態遷移集合54の一例を示す図である。
図29、図30、図31では、DFA状態遷移表13における現状態と入力文字と次状態との関係が示されている。
例えば、現状態:S1000のときに、決定性有限オートマトン14が入力文字として「0」を入力した場合には、次状態:S1010に遷移することを表している。
図32は、実施の形態1における入力文字列4の第一の例を示す図である。
図33は、実施の形態1における入力文字列4の第二の例を示す図である。
図34は、実施の形態1における入力文字列4の第三の例を示す図である。
次に動作について説明する。
以下では、図3の正規表現で表記されるクレジットカード番号、すなわち16桁の数字からなり、4桁ごとにハイフンで区切られた19文字の文字列で、右端の桁がLuhnの式によるチェックディジットとなっている文字列を検出する場合の動作を例に説明する。
実施の形態1の文字列照合装置の動作を図35に示す。
まず、状態遷移表生成部6が正規表現検査条件2と外部状態遷移定義3からDFA状態遷移表13を生成する(ステップS101)。
次いで、照合部7が、DFA状態遷移表13を用いて入力文字列4の照合を行い、照合結果5を生成する(ステップS102)。
次に、状態遷移表生成部6の動作(ステップS101)の詳細を図36により説明する。
状態遷移表生成部6では、まず外部状態遷移表生成部8が、外部状態遷移定義3に基づき外部状態遷移表9を生成する(ステップS111)。
次いで、NFA状態遷移表生成部10が、正規表現検査条件2と外部状態遷移表9からNFA状態遷移表11を生成する(ステップS112)。
次いで、DFA状態遷移表生成部12が、NFA状態遷移表11からDFA状態遷移表13を生成する(ステップS113)。
次に、外部状態遷移表生成部8の動作(ステップS111)の詳細を図37により説明する。
まず、外部状態遷移表生成部8は、状態遷移定義の番号nを1とする(ステップS121)。
次いで、状態遷移定義#nに対して手続き「個別状態遷移表の生成」を実行する(ステップS122)。
次いで、nに1を加え(ステップS123)、nが状態遷移定義の数Nを超えていなければステップS122を繰り返し、超えていれば終了する(ステップS124)。
次に、手続き「個別状態遷移表の生成」の動作について図38により説明する。
まず、外部状態遷移表生成部8は、状態遷移表名32に状態遷移表定義21に含まれる状態遷移定義名22を設定する(ステップS131)。
本例では図12のように状態遷移表名「CREDIT」が設定される。
次に、外部状態遷移表生成部8は、初期状態33に初期状態の番号0を設定する(ステップS132)。
次に、外部状態遷移表生成部8は、受理状態34に、受理状態の番号PMを設定する(ステップS133)。
本例ではP=19(図7)、M=10(図8)からPM=190が設定される。
次いで、外部状態遷移表生成部8は、手続き「状態の生成」を実行する(ステップS131)。
次いで、外部状態遷移表生成部8は、手続き「状態遷移の生成」を実行する(ステップS134)。
次いで、外部状態遷移表生成部8は、手続き「個別状態遷移表の書き込み」を実行する(ステップS135)。
次に、手続き「状態の生成」の動作について図39により説明する。
まず、外部状態遷移表生成部8は、Mを除数定義25(図8)で定義された除数とし、Pを桁数定義24(図7)で定義された桁数とする(ステップS141)。
本例ではM=10、P=19となる。
次いで、外部状態遷移表生成部8は、初期状態Sを生成する(ステップS142)。
次いで、外部状態遷移表生成部8は、ステップS143〜S149にて、桁位置p=1,2,…P−1、剰余m=0,1,…(M−1)の組に対して状態を生成する。
まず、桁位置pを1とする(ステップS143)。
次いで、剰余mを0とする(ステップS144)。
次いで、状態Ss(p,m,M)を生成し、状態集合35に格納する(ステップS145)。
ただし、関数s(p,m,M)は、式3に従う。
s(p,m,M)=pM+m・・・(式3)
次いで、mに1を加え(ステップS146)、m≧Mすなわち全ての剰余に対して処理が完了したらステップS148に進み、そうでなければステップS145に進む(ステップS147)。
次いで、pに1を加え(ステップS148)、p≧PとなったらステップS150に進み、そうでなければステップS144に進む(ステップS149)。
次いで、受理状態SPM+Dを生成する(ステップS150)。
ただし、Dは受理剰余定義26にて指定された受理剰余である。
手続き「状態の生成」は、図39に示すように、各状態に対して、入力文字ごとに、入力文字のLuhnの式の計算結果を求め、計算結果に対応する新たな状態を生成する処理である。
図41は、手続き「状態の生成」(図39)によって生成される状態を状態遷移グラフの形式で示したものである。
手続き「状態の生成」では状態遷移グラフのうち状態だけを生成しているので、図41には状態遷移を示す矢印は示されていない。
初期状態Sと受理状態SPM+Dがそれぞれ生成され、一方、ステップS143〜S149では(P−1)種類の桁位置とM種類の剰余の組に対して(P−1)M個の状態が生成される。
なお、受理剰余Dが複数ある場合はそれぞれの受理剰余に対して複数の受理状態を生成する。
以上の手続きにより生成された状態は外部状態集合35に格納される。
図15に本例における外部状態集合35の一例を示す。
図15は状態Sの番号iを示しており、状態S(初期状態),S10,S11,…,S189,S190(受理状態)が生成されたことを示している。
次に、手続き「状態遷移の生成」の動作について図40により説明する。
以下では、現状態をS入力文字をc、次状態をS、とする状態遷移を(S,c,S)と表記する。
まず、外部状態遷移表生成部8は、Mを除数定義25(図8)で定義された除数、Pを桁数定義24(図7)で定義された桁数、Cを文字集合定義23(図6)で定義された文字集合とする(ステップS161)。
本例では、M=10、P=19、C={0,1,2,3,4,5,6,7,8,9,−}となる。
以下、文字集合Cの各要素を{c}(k=1,2,…|C|)と添字(文字番号)つきで表記する。
ただし、|C|は文字集合Cに含まれる要素数、すなわち文字の種類である。
次いで、外部状態遷移表生成部8は、ステップS162〜S175にて、桁位置p=1,2,…P、剰余m=0,1,…(M−1)、文字c=0,1,…,9,−の組に対して状態遷移を生成する。
まず、桁位置pを1とする(ステップS162)。
次いで剰余mを0とする(ステップS163)。
次いで文字番号kを1とする(ステップS164)。
次いで、変換関数定義27を参照し、桁位置=p、入力文字=cの場合の剰余trans(p,c)を求める(ステップS165)。
ここで、変換関数定義による剰余の計算方法について説明する。
変換関数定義27は桁位置pと入力文字cの組に対して剰余の計算法を示すものであり、図10の例では、桁位置1,3,6,8,12,14,16,18は、「−」を除くと右端から偶数番目の桁に相当するので、Luhnの式の規則により、「各桁の値を2倍し、1桁の場合はその値を、2桁(10以上)になった場合は各桁の合計をとる」という規則に従って剰余を計算する。
すなわち、入力文字「0,1,2,3,4,5,6,7,8,9」が、それぞれ、剰余「0,2,4,6,8,1,3,5,7,9」に変換される。
ただし、数字でない文字「−」が出現した場合は正しい文字列形式ではないので剰余は変換不能(Xと表記)とする。
また、図10の桁位置2,4,7,9,12,14,17,19は「−」を除くと右端から奇数番目の桁に相当するので、Luhnの式の規則により、「各桁の値をとる」という規則に従って剰余を計算する。
すなわち、入力文字「0,1,2,3,4,5,6,7,8,9」が、それぞれ、剰余「0,1,2,3,4,5,6,7,8,9」に変換される。
ただし、数字でない文字「−」が出現した場合は正しい文字列形式ではないので剰余は変換不能(Xと表記)とする。
更に、図10の桁位置5,10,15は「−」が出現すべき桁位置であるので、入力文字「0,1,2,3,4,5,6,7,8,9」に対しては変換不能となる。
一方「−」が出現してもLuhnの式の剰余計算には影響しないので、剰余は0(不変)とする。
ステップS165で変換関数27により得られたtが変換不能を示す「X」である場合は状態遷移を生成できないのでステップS170に進み、それ以外の場合はステップS167に進む。(ステップS166)。
次に、現状態番号i、次状態番号jをそれぞれ、式4及び式5によって計算する(ステップS167)。
ただし、式5において、mod(x,y)は整数xを整数yで除算したときの剰余である。
i=(p−1)M+m・・・(式4)
j=pM+mod(trans(p,c)+m,M)・・・(式5)
もし状態S、状態Sがともに存在する、すなわち手続き「状態の生成」によって生成済みであれば、ステップS169に進む。
状態S、状態Sの一方もしくは両方が存在しなければステップS170に進む(ステップS168)。
次いで、外部状態遷移表生成部8は、状態遷移(S,c,S)を生成し、外部状態遷移集合36に格納する(ステップS169)。
次いで、kに1を加え(ステップS170)、k>|C|すなわち文字集合Cに含まれる全ての文字に対して処理が完了したらステップS172に進み、そうでなければステップS165に進む(ステップS171)。
次いで、mに1を加え(ステップS172)、m≧Mすなわち全ての剰余に対して処理が完了したらステップS174に進み、そうでなければステップS164に進む(ステップS173)。
次いで、pに1を加え(ステップS174)、p>Pすなわち全ての桁に対して処理が完了したら終了し、そうでなければステップS163に進む(ステップS175)。
以上の手続きにより生成された状態遷移は外部状態遷移集合36に格納される。
図16、図17に外部状態遷移集合36の一例を表の形式で示す。
図16、図17では、現状態と入力文字の組に対する次状態が示されており、例えば、現状態が10となっている行は状態S10において入力文字「0,1,2,3,4,5,6,7,8,9」が入力された場合の次状態が、それぞれ,「S20、S21、S22、S23、S24、S25、S26、S27、S28、S29」であり、入力文字「−」が入力された場合は次状態が存在しないことを示している。
ここで、状態遷移グラフを用いて「状態遷移の生成」の動作について説明する。
図42は手続き「状態遷移の生成」によって生成される状態遷移グラフを示したものである。
ただし、表記の都合で図42では入力文字を省略している。
図43は図42の状態遷移グラフのうち、桁位置p=1に関わる部分を示したものである。
剰余の初期値はm=0なので、現状態Sは式4でp=1,m=0,M=10とすることにより、式6から、初期状態Sとなる。
i=(p−1)M+m
=0 ・・・(式6)
一方、次状態Sは入力文字cごとに異なる。
入力文字「0,1,2,3,4,5,6,7,8,9,−」のそれぞれにつき、桁位置p=1の変換関数定義27に従って決まる次の剰余trans(1,c)は「0,2,4,6,8,1,3,5,7,9,X(k=0,1,…9)」である。
入力文字「−」については変換不能のため状態遷移は生成できない。
それ以外の入力文字「0,1,2,3,4,5,6,7,8,9」について式5にp=1,m=0,M=10を適用すると、式7から、それぞれ次状態は「S10、S12、S14、S16、S18、S11、S13、S15、S17、S19」となる。
j=pM+mod(t+m,M)
=10+mod(trans(p,c),10)
=10+trans(1,c) ・・・(式7)
以上から、図43の矢印で表記される次の状態遷移が追加される。
(S,0,S10
(S,1,S12
(S,2,S14
(S,3,S16
(S,4,S18
(S,5,S11
(S,6,S13
(S,7,S15
(S,8,S17
(S,9,S19
図44は、図42の状態遷移グラフのうち、例として桁位置p=2で剰余m=1に関わる部分を示したものである。
現状態Sは、式4でp=2,m=1,M=10とすることにより、式8から状態S11となる。
i=(p−1)M+m
=11 ・・・(式8)
一方、次状態Sは、入力文字cごとに異なる。
入力文字「0,1,2,3,4,5,6,7,8,9,−」のそれぞれにつき、桁位置p=2の変換関数定義27に従って決まる次の剰余trans(2,c)は「0,1,2,3,4,5,6,7,8,9,X(k=0,1,…9)」である。
入力文字「−」については変換不能のため状態遷移は生成できない。
それ以外の入力文字「0,1,2,3,4,5,6,7,8,9」について式5にp=2,m=1,M=10を適用すると、式9から、それぞれ次状態Sは「S21、S22、S23、S24、S25、S26、S27、S28、S29、S20」となる。
j=pM+mod(t+m,M)
=20+mod(trans(p,c)+1,10)・・・(式9)
以上から、図44の矢印で表記される次の状態遷移が追加される。
(S11,0,S21
(S11,1,S22
(S11,2,S23
(S11,3,S24
(S11,4,S25
(S11,5,S26
(S11,6,S27
(S11,7,S28
(S11,8,S29
(S11,9,S20
図45は、図42の状態遷移グラフのうち、例として桁位置p=5に関わる部分を示したものである。
現状態Sは式4でp=5,M=10とすることにより、式10から、状態S40〜S49となる。
i=(p−1)M+m
=40+m ・・・(式10)
一方、次状態Sであるが、入力文字「0,1,2,3,4,5,6,7,8,9,−」のそれぞれにつき、桁位置p=5の変換関数定義27に従って決まる次の剰余trans(5,c)は「X,X,X,X,X,X,X,X,X,0(k=0,1,…9)」である。
すなわち、入力文字「0,1,2,3,4,5,6,7,8,9」については変換不能のため状態遷移は生成できない。
=「−」について式4、式5にp=5,M=10を適用すると、trans(p,c)=0であるから、式11及び式12のようになる。
i=(p−1)M+m
=40+m ・・・(式11)
j=pM+mod(t+m,M)
=50+mod(m,10)
=50+m (0≦m<10より)・・・(式12)
すなわちm=0,1,…9に対して、図45の矢印で表記される次の状態遷移が追加される。
(S40,−,S50
(S41,−,S51
(S42,−,S52
(S43,−,S53
(S44,−,S54
(S45,−,S55
(S46,−,S56
(S47,−,S57
(S48,−,S58
(S49,−,S59
図46は、図42の状態遷移グラフのうち、例として桁位置p=19に関わる部分を示したものである。
現状態Sは式4でp=19,M=10とすることにより、式13から、状態S180〜S189となる。
i=(p−1)M+m
=180+m・・・(式13)
一方、次状態Sであるが、入力文字「0,1,2,3,4,5,6,7,8,9,−」のそれぞれにつき、桁位置p=19の変換関数定義27に従って決まる次の剰余trans(p,c)は「0,1,2,3,4,5,6,7,8,9,X」である。
入力文字「−」については変換不能のため状態遷移は生成できない。
更に、式5において、状態の生成手順から状態の生成手順からS(j≧PM)となるjはj=PMだけであり、従って、ステップS168において生成可能なjは、式14から、190の場合に限られる。
j=pM+mod(trans(p,c)+m,M)
=190・・・(式14)
従って、式15を満足するm,cの組について現状態がS180〜S189、次状態がS190となる状態遷移が生成される。
mod(trans(p,c)+m,10)=0・・・(式15)
(ただし、p=19)
すなわちm=0,1,…9に対して、図46の矢印で表記される次の状態遷移が追加される。
(S180,0,S190
(S181,9,S190
(S182,8,S190
(S183,7,S190
(S184,6,S190
(S185,5,S190
(S186,4,S190
(S187,5,S190
(S188,6,S190
(S189,1,S190
次に、NFA状態遷移表生成部10の動作(ステップS112)について説明する。
以下では、NFA状態遷移表生成部10の入力となる正規表現検査条件2の一例として図2に示す正規表現検査条件2を使用する場合について示す。
NFA状態遷移表生成部10におけるNFA状態遷移表9の生成方法は、公知の手順を拡張したものであり、例えば図47に拡張BNF記法にて記載の一般的な正規表現の構文規則に代えて図48に示す構文規則により構文解析を行う。
図47および図48において<>で囲われた記号は非終端記号を表す。
図48の構文規則では図47に示す構文規則に対して非終端記号<external_def>の定義が追加されており(符号4801、4802)、図48の<external_def>の定義に示されている<identifier>により状態遷移名定義32を指定する。
本実施の形態では、図12のように「CREDIT」という状態遷移名が指定されているものとする。
次いで、公知のNFA生成の手順と同様の手順により、正規表現検査条件2から図48の構文規則に従い、公知の方法を使用して、正規表現を1文字ずつ読み取りながら字句解析、構文解析を行い、NFA状態遷移表11を生成する。
この過程で、<external_def>が検出されると、図49に示す手順を実行する。
本例では、正規表現検査条件2の3文字目すなわち「=」を読んだ直後には図50に示す中間的なNFA状態遷移表46が生成されている。
図50のNFA状態遷移表46を状態遷移グラフで表現すると図51のようになる。
状態遷移グラフの生成手順によっては、中間的な状態遷移グラフの中に図52に示すように冗長な空文字遷移が含まれる場合があるが、このような場合であっても同様の手順でNFA状態遷移表11を生成することが可能であるので、本例では図50のNFA状態遷移表が生成されたものとして説明する。
次に、正規表現検査条件2の(??{CREDIT}??)の部分を読むことにより「CREDIT」を<identifier>とする<external_def>が検出され、図49の外部定義出現時の処理が実行される。
図49において、NFA状態遷移表生成部10は、まず、外部状態遷移表9を探索し、状態遷移表名31が「CREDIT」となる外部状態遷移集合36を取得する(ステップS181)。
次いで、NFA状態遷移表生成部10は、外部状態遷移集合に含まれる状態遷移をNFA状態遷移表11に追加する(ステップS182)。
この時、外部状態遷移集合36に含まれる状態とNFA状態遷移表11の状態の番号が重複しないように、外部状態遷移集合36から追加された状態に一意の番号を割り当てる。
本例の場合、例えば、外部状態遷移集合36から追加された状態の番号に一律1000を加え、外部状態遷移集合36の初期状態Sから初期状態に由来する状態S1000、外部状態遷移集合36の受理状態S190から受理状態に由来する状態S1190などを生成する。
次いで、NFA状態遷移表生成部10は、現在の状態を現状態、外部状態遷移集合36の初期状態に由来する状態を次状態とする空文字(ε)による遷移をNFA状態遷移表11に追加する(ステップS183)。
本例では(S,ε,S1000)という状態遷移を追加する。
この段階の状態遷移グラフは図53の通りとなる。
次いで、NFA状態遷移表生成部10は、新しい状態を生成し、NFA状態遷移表11に追加する(ステップS184)。
本例では追加された状態をSとする。
次いで、NFA状態遷移表生成部10は、外部状態遷移集合36の受理状態に由来する状態を現状態とし、ステップS184にて生成された状態を次状態とする空文字による遷移を追加する(ステップS185)。
本例では(S1190,ε,S)という状態遷移が追加される。
この段階の状態遷移グラフは図54の通りとなる。
以上の手順が、<external_def>が検出されるたびに実行される。
以上の動作により、生成されるNFA状態遷移表11の一例を図22、図23、図24に示す。
次に、DFA状態遷移表生成部の動作(ステップS113)について説明する。
DFA状態遷移表生成部12は、公知の手順により、NFA状態遷移表11に含まれる非決定的状態遷移を除去し、DFA状態遷移表13を生成する。
本例では、図18〜図24に示すNFA状態遷移表11、すなわち図54の状態遷移グラフから空文字遷移を含む非決定的状態遷移を除去することにより、図25〜図31のDFA状態遷移表13が生成される。
図25〜図31のDFA状態遷移表13を状態遷移グラフの形式で表記すると図55のようになる。
以上で状態遷移表生成部6の説明を終わり、次に照合部7の動作(ステップS102)について説明する。
照合部7は、DFA状態遷移表13と入力文字列4を入力とし、公知の有限オートマトンによる照合を行い、最終的に受理状態に到達すれば、文字列パタンの検出と同時にチェックディジットの検査に成功したものとする。
照合部7により、文字列パタンの検出とチェックディジットの検査が同時に行われることを例により示す。
第一の例として、図32に示す、正当なチェックディジットを持つ入力文字列4と図25〜図31のDFA状態遷移表13を入力とする場合を示す。
本例ではまず初期状態Sにおいて入力文字「N」を読むと、DFA状態遷移表13において状態Sと入力文字「N」に対応する次状態がSであることから、状態Sに遷移する。
以下、図56に示すとおり、入力文字「o,=,4,0,2,3,−,…」を順次読み進めると状態「S、S1000、S1018、S1028、S1032、S1045、S1055・・・」と読み進め、最後に入力文字#を読むと受理状態Sに到達する。
すなわち図32の入力文字列は決定性有限オートマトン14により受理され、文字列パタンの検出と同時にチェックディジットの検査に成功するので、パタンが検出されたことを示す照合結果5を出力する。
第二の例として、図33に示す、正当でないチェックディジットを持つ入力文字列4と図25〜図31のDFA状態遷移表13を入力とする場合を示す。
本例では、第一の例の正当なチェックディジット「3」を「0」で置き換えている。
本例では図57に示すとおり、入力文字「N,o,=,4,0,2,3,−,…」を順次読み進めると状態「S、S、S、S1000、S1018、S1028、S1032、S1045、S1055・・・」と読み進めるが、状態S1187にて文字「0」を読むと、次状態が存在しないため、照合に失敗する。
すなわち図33の入力文字列4決定性有限オートマトン14により受理されず、パタンが検出されなかったことを示す照合結果5を出力する。
第三の例として、図34に示すような文字列パタンとして適合しない文字「A」を含む入力文字列4と図25〜図31のDFA状態遷移表13を入力とする場合を示す。
本例では図58に示すとおり、入力文字「N,o,=,4,0,2,3,−,…」を順次読み進めると状態「S、S、S、S1000、S1018、S1028、S1032、S1045、S1055・・・」と読み進めるが、状態S1088にて文字「A」を読むと、次状態が存在しないため、照合に失敗する。
すなわち図34の入力文字列4決定性有限オートマトン14により受理されず、パタンが検出されなかったことを示す照合結果5を出力する。
実施の形態1における文字列照合装置1は以上のように構成されているので、入力文字数をP、チェックディジット検査対象の数字の桁数をd、剰余の種類をMとするとき、外部状態遷移表9およびそれに由来する状態遷移表に含まれる状態の数をs、状態遷移の数をtとすると、式16及び式17の程度の多項式オーダで実現できる。
s=(P−2)M+2・・・(式16)
t=(P−d)M+(d−2)・m・・・(式17)
本例のLuhnの式によるクレジットカード番号検査の場合、P=19、d=16、M=10であり、s=172、t=1430となる。
従って、状態、状態遷移の数とも、今日のコンピュータを用いて容易に保持できる規模である。
このように、本実施の形態によれば、長大な正規表現検査条件を記述することなく有限オートマトンを用いた文字列パタンの検出とチェックディジット検査を同時に実行するという効果を奏する。
なお、本実施の形態では、変換関数定義27は図10のような表の形式で指定するものとしたが、桁位置と入力文字から剰余が一意に決まるような手段であればよく、例えば手続き(プログラム)や数式を含むコンピュータプログラムや論理回路によって実現してもよい。
なお、実施の形態1では正規表現検査条件2や外部状態遷移定義3を外部から入力するとしたが、検出すべき文字列パタンおよびチェックディジットが既知の場合は文字列照合装置1の中に組み込んでおいてもよい。
実施の形態2.
実施の形態1では外部状態遷移定義3から外部状態遷移表9を生成するものとしたが、予め外部状態遷移表9を人手等により作成しておきそれを入力としてもよい。
図59は、実施の形態2における文字列照合装置1を示す図である。
実施の形態2では、実施の形態1における外部状態遷移表9を文字列照合装置1の入力とする。
本実施の形態では、NFA状態遷移表生成部10が外部状態遷移表9を入力し、NFA状態遷移表記憶部110に外部状態遷移表9を格納し、正規表現検査条件2を入力した際に、NFA状態遷移表記憶部110から外部状態遷移表9を読み出して、実施の形態1で説明した手法により、NFA状態遷移表11を生成する。
これ以外の動作は、実施の形態1と同様である。
なお、本実施の形態では、NFA状態遷移表生成部10は、検査条件取得部、状態遷移情報更新部の例に相当するとともに、状態遷移情報入力部の例に相当する。
また、NFA状態遷移表記憶部110が状態遷移情報記憶部の例に相当する。
実施の形態2では、外部状態遷移表9を直接記述できるため、実施の形態1では指定不可能な詳細な定義が可能になる。
例えば、クレジットカード番号は桁ごとに対象とする種類や割り当て可能な値が決められているので、一部の種類のカードに限定した状態遷移表を事前に作成し、それを入力とすることにより、種類を限定したクレジットカード番号の検出を行ったり、割り当ての行われていない数値を除外することにより、より精度良くクレジットカード番号の検出を行うことが可能になる。
なお、実施の形態2では正規表現検査条件2や外部状態遷移表9を外部から入力するとしたが、検出すべき文字列パタンおよびチェックディジットが既知の場合は文字列照合装置1の中に組み込んでおいてもよい。
実施の形態3.
実施の形態1では外部状態遷移定義3からDFA状態遷移表13を生成し、決定性有限オートマトン14の入力とするものとしたが、NFA状態遷移表11を非決定性有限オートマトンの入力としてもよい。
図60は、実施の形態3における文字列照合装置1を示す図である。
実施の形態3では、実施の形態1における決定性有限オートマトン14の代わりに非決定性有限オートマトン15を使用する。
本実施の形態では、NFA状態遷移表生成部10がNFA状態遷移表記憶部110で記憶されているNFA状態遷移表11を非決定性有限オートマトン15に出力する。
これ以外の動作は、実施の形態1と同様である。
なお、本実施の形態では、NFA状態遷移表生成部10は、検査条件取得部、状態遷移情報更新部の例に相当するとともに、状態遷移情報出力部の例に相当する。
一般に決定性有限オートマトンでは、条件によりDFA状態遷移表のサイズが極めて大きくなることがある。
このため、実施の形態1において、正規表現検査条件2や外部状態遷移定義3の指定内容によっては、DFA状態遷移表13の規模が極めて大きくなり、処理が困難になる場合がある。
決定性有限オートマトン14の代わりに非決定性有限オートマトン15を使用することにより、よりサイズの小さいNFA状態遷移表11を入力として処理を行うことができる。
以上の実施の形態1〜3ではLuhnの式を用いたチェックディジットを対象としたが、「モジュラス10、ウェイト3」、「モジュラス11 ウェイト10−2」等の剰余を利用するチェックディジットに適用できる。
また、各桁の数字を合計する「チェックサム」や、「パリティチェック」も剰余を利用するチェックディジットの一種とみなすことができ、実施の形態1〜3に示した方式を適宜変更して文字列パタンの検出と同時に正当性の検査を行うことができる。
なお、例えば、特許文献2や特許文献3には、有限オートマトンの動作を拡張し、状態遷移表を格納するのに必要な記憶容量を削減する方法について記載されているが、このような拡張されたオートマトンであっても、実施の形態1〜3に示した方法を適用することにより、文字列パタンの検出とチェックディジットの正当性の検査を同時に行うことができる。
また、実施の形態1〜3に示した方式のうち、2つ以上を組み合わせて実施しても構わない。
あるいは、これらの実施の形態のうち、1つを部分的に実施しても構わない。
あるいは、これらの実施の形態のうち、2つ以上を部分的に組み合わせて実施しても構わない。
なお、本発明は、実施の形態1〜3に限定されるものではなく、必要に応じて種々の変更が可能である。
以上の実施の形態1〜3では、以下の手段を備えた文字列照合装置を説明した。
現状態と文字の組に対し次状態を記述した状態遷移を1または複数個含む外部状態遷移表、
外部状態遷移表と正規表現で記述された検査条件から、状態遷移表を生成する状態遷移表生成部、
入力文字列と状態遷移表から照合結果を出力する有限オートマトン。
また、実施の形態1〜3では、以下を説明した。
状態遷移表生成部は、正規表現で記述された検査条件から生成される状態において空文字により外部状態遷移表の初期状態に遷移する状態遷移を生成する。
状態遷移表生成部は、外部状態遷移表の受理状態から空文字により正規表現で記述された検査条件の状態に遷移する状態遷移を生成する。
また、実施の形態1及び3に係る文字列照合装置が、
文字集合、桁数、除数と、桁位置と文字の組に対する剰余を記述する変換関数から成る外部状態遷移定義を備え、
外部状態遷移定義から外部状態遷移表を生成する外部状態遷移表生成部を備えることを説明した。
また、実施の形態1〜3では、変換関数が、各桁ごとにチェックディジット計算に利用する剰余を生成することを説明した。
また、実施の形態1〜3では、変換関数が、区切り文字を含む桁に対して剰余を計算しないことを説明した。
また、実施の形態1〜3では、変換関数が、右端のチェックディジットを1番目として、奇数番目の桁と偶数番目の桁で異なる値を乗じた後各桁の数字を合計した数値を剰余とする(Luhnやモジュラス10ウェイト3)ことを説明した。
また、実施の形態1〜3では、変換関数が、各桁ごとに異なる数字を乗じて剰余とする(モジュラス11 ウェイト10−2など)ことを説明した。
また、実施の形態1及び2では、有限オートマトンが決定性有限オートマトンであることを説明した。
最後に、実施の形態1〜3に示した文字列照合装置1のハードウェア構成例について説明する。
図61は、実施の形態1〜3に示す文字列照合装置1のハードウェア資源の一例を示す図である。
なお、図61の構成は、あくまでも文字列照合装置1のハードウェア構成の一例を示すものであり、文字列照合装置1のハードウェア構成は図61に記載の構成に限らず、他の構成であってもよい。
図61において、文字列照合装置1は、プログラムを実行するCPU911(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。
CPU911は、バス912を介して、例えば、ROM(Read Only Memory)913、RAM(Random Access Memory)914、通信ボード915、表示装置901、キーボード902、マウス903、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。
更に、CPU911は、FDD904(Flexible Disk Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907と接続していてもよい。また、磁気ディスク装置920の代わりに、SSD(Solid State Drive)、光ディスク装置、メモリカード(登録商標)読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。
これらは、記憶装置の一例である。
実施の形態1〜3で説明した「〜記憶部」は、RAM914、磁気ディスク装置920等により実現される。
通信ボード915、キーボード902、マウス903、スキャナ装置907などは、入力装置の一例である。
また、通信ボード915、表示装置901、プリンタ装置906などは、出力装置の一例である。
通信ボード915は、ネットワークに接続されている。
例えば、通信ボード915は、LAN(ローカルエリアネットワーク)、インターネット、WAN(ワイドエリアネットワーク)、SAN(ストレージエリアネットワーク)などに接続されている。
磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。
プログラム群923のプログラムは、CPU911がオペレーティングシステム921、ウィンドウシステム922を利用しながら実行する。
また、RAM914には、CPU911に実行させるオペレーティングシステム921のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、RAM914には、CPU911による処理に必要な各種データが格納される。
また、ROM913には、BIOS(Basic Input Output System)プログラムが格納され、磁気ディスク装置920にはブートプログラムが格納されている。
文字列照合装置1の起動時には、ROM913のBIOSプログラム及び磁気ディスク装置920のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステム921が起動される。
上記プログラム群923には、実施の形態1〜3の説明において「〜部」(「〜記憶部」以外、以下同様)として説明している機能を実行するプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。
ファイル群924には、実施の形態1〜3の説明において、「〜の判断」、「〜の計算」、「〜の生成」、「〜の更新」、「〜の設定」、「〜の選択」、「〜の入力」、「〜の出力」等として説明している処理の結果を示す情報やデータや信号値や変数値が、ディスクやメモリなどの記憶媒体にファイルとして記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記憶媒体に記憶される。
ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出される。
そして、読み出された情報やデータや信号値や変数値やパラメータは、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態1〜3で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示す。
データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ブルーレイ(登録商標)ディスク、DVD等の記憶媒体に記録される。
また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
また、実施の形態1〜3の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。
すなわち、実施の形態1〜3で説明したフローチャートに示すステップ、手順、処理により、本発明に係る「情報処理方法」を実現することができる。
また、「〜部」として説明しているものは、ROM913に記憶されたファームウェアで実現されていても構わない。
或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD等の記憶媒体に記憶される。
プログラムはCPU911により読み出され、CPU911により実行される。
すなわち、プログラムは、実施の形態1〜3の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態1〜3の「〜部」の手順や方法をコンピュータに実行させるものである。
このように、実施の形態1〜3に示す文字列照合装置1は、処理装置たるCPU、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータである。
そして、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
1 文字列照合装置、2 正規表現検査条件、3 外部状態遷移定義、4 入力文字列、5 照合結果、6 状態遷移表生成部、7 照合部、8 外部状態遷移表生成部、9 外部状態遷移表、10 NFA状態遷移表生成部、11 NFA状態遷移表、12 DFA状態遷移表生成部、13 DFA状態遷移表、14 決定性有限オートマトン、15 非決定性有限オートマトン、90 外部状態遷移表記憶部、110 NFA状態遷移表記憶部、130 DFA状態遷移表記憶部。

Claims (11)

  1. オートマトンによる検査に用いられる、状態遷移パスが表される状態遷移情報を1つ以上記憶する状態遷移情報記憶部と、
    正規表現で記述され、いずれかの状態遷移情報の識別子が選択識別子として含まれている検査条件を取得する検査条件取得部と、
    前記選択識別子に対応する状態遷移情報である選択状態遷移情報を前記状態遷移情報記憶部から読み出すとともに、前記検査条件内の記述のうち前記選択識別子以外の記述に対応する状態遷移パスを生成し、生成した状態遷移パスを前記選択状態遷移情報の状態遷移パスに追加して、前記選択状態遷移情報から新たな状態遷移情報を生成する状態遷移情報更新部とを有することを特徴とする情報処理装置。
  2. 前記状態遷移情報記憶部は、
    初期状態と受理状態とを有し、初期状態から受理状態に至るまでの状態遷移パスが表される状態遷移情報を1つ以上記憶し、
    前記検査条件取得部は、
    前記選択識別子に先行する記述である先行記述と、前記選択識別子に後続する記述である後続記述と、前記選択識別子とで構成される検査条件を取得し、
    前記状態遷移情報更新部は、
    前記検査条件内の先行記述に対応する状態遷移パスである先行記述状態遷移パスを生成するとともに、先行記述状態遷移パス内の最後尾の状態を前記選択状態遷移情報の初期状態に連結し、前記検査条件内の後続記述に対応する状態遷移パスである後続記述状態遷移パスを生成するとともに、後続記述状態遷移パス内の先頭の状態を前記選択状態遷移情報の受理状態に連結し、前記先行記述状態遷移パス内の先頭の状態を新たな初期状態とし、前記後続記述状態遷移パス内の最後尾の状態を新たな受理状態とする新たな状態遷移情報を生成することを特徴とする請求項1に記載の情報処理装置。
  3. 前記情報処理装置は、更に、
    前記状態遷移情報更新部により生成された新たな状態遷移情報から、非決定的状態遷移を除去する状態遷移情報修正部を有することを特徴とする請求項1又は2に記載の情報処理装置。
  4. 前記情報処理装置は、更に、
    前記状態遷移情報更新部により生成された新たな状態遷移情報、又は、前記状態遷移情報修正部により非決定的状態遷移が除去された後の状態遷移情報を、前記オートマトンに出力する状態遷移情報出力部を有することを特徴とする請求項3に記載の情報処理装置。
  5. 前記状態遷移情報記憶部は、
    非決定性有限オートマトンによる検査に用いられる状態遷移情報を記憶しており、
    前記状態遷移情報出力部は、
    前記状態遷移情報更新部により生成された新たな状態遷移情報を、前記非決定性有限オートマトンに出力することを特徴とする請求項4に記載の情報処理装置。
  6. 前記状態遷移情報記憶部は、
    決定性有限オートマトンによる検査に用いられる状態遷移情報を記憶しており、
    前記状態遷移情報出力部は、
    前記状態遷移情報修正部により非決定的状態遷移が除去された後の状態遷移情報を、前記決定性有限オートマトンに出力することを特徴とする請求項4に記載の情報処理装置。
  7. 前記状態遷移情報記憶部は、
    前記オートマトンが、前記オートマトンに入力される複数桁の文字列に対して、桁ごとの文字の適性検査と桁ごとのチェックディジット検査とを並行して行うことができる状態遷移情報を1つ以上記憶していることを特徴とする請求項1〜6のいずれかに記載の情報処理装置。
  8. 前記情報処理装置は、更に、
    前記オートマトンが、前記オートマトンに入力される複数桁の文字列に対して、桁ごとの文字の適性検査と桁ごとのチェックディジット検査とを並行して行うことができる状態遷移情報を生成する状態遷移情報生成部を有し、
    前記状態遷移情報記憶部は、
    前記状態遷移情報生成部により生成された状態遷移情報を記憶していることを特徴とする請求項7に記載の情報処理装置。
  9. 前記情報処理装置は、更に、
    前記オートマトンが、前記オートマトンに入力される複数桁の文字列に対して、桁ごとの文字の適性検査と桁ごとのチェックディジット検査とを並行して行うことができる状態遷移情報を入力する状態遷移情報入力部を有し、
    前記状態遷移情報記憶部は、
    前記状態遷移情報入力部により入力された状態遷移情報を記憶していることを特徴とする請求項7に記載の情報処理装置。
  10. オートマトンによる検査に用いられる、状態遷移パスが表される状態遷移情報を1つ以上記憶する状態遷移情報記憶部を有するコンピュータが行う情報処理方法であって、
    正規表現で記述され、いずれかの状態遷移情報の識別子が選択識別子として含まれている検査条件を前記コンピュータが取得する検査条件取得ステップと、
    前記コンピュータが、前記選択識別子に対応する状態遷移情報である選択状態遷移情報を前記状態遷移情報記憶部から読み出すとともに、前記検査条件内の記述のうち前記選択識別子以外の記述に対応する状態遷移パスを生成し、生成した状態遷移パスを前記選択状態遷移情報の状態遷移パスに追加して、前記選択状態遷移情報から新たな状態遷移情報を生成する状態遷移情報更新ステップとを有することを特徴とする情報処理方法。
  11. オートマトンによる検査に用いられる、状態遷移パスが表される状態遷移情報を1つ以上記憶する状態遷移情報記憶部を有するコンピュータに、
    正規表現で記述され、いずれかの状態遷移情報の識別子が選択識別子として含まれている検査条件を取得する検査条件取得ステップと、
    前記選択識別子に対応する状態遷移情報である選択状態遷移情報を前記状態遷移情報記憶部から読み出すとともに、前記検査条件内の記述のうち前記選択識別子以外の記述に対応する状態遷移パスを生成し、生成した状態遷移パスを前記選択状態遷移情報の状態遷移パスに追加して、前記選択状態遷移情報から新たな状態遷移情報を生成する状態遷移情報更新ステップとを実行させることを特徴とするプログラム。
JP2012246410A 2012-11-08 2012-11-08 情報処理装置及び情報処理方法及びプログラム Active JP6012414B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012246410A JP6012414B2 (ja) 2012-11-08 2012-11-08 情報処理装置及び情報処理方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012246410A JP6012414B2 (ja) 2012-11-08 2012-11-08 情報処理装置及び情報処理方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2014095993A JP2014095993A (ja) 2014-05-22
JP6012414B2 true JP6012414B2 (ja) 2016-10-25

Family

ID=50939025

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012246410A Active JP6012414B2 (ja) 2012-11-08 2012-11-08 情報処理装置及び情報処理方法及びプログラム

Country Status (1)

Country Link
JP (1) JP6012414B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7466274B2 (ja) * 2017-12-19 2024-04-12 グローリー株式会社 自動取引装置、自動取引システム、自動取引方法、及び自動取引プログラム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3852757B2 (ja) * 2002-02-05 2006-12-06 インターナショナル・ビジネス・マシーンズ・コーポレーション 文字列照合方法、これを用いた文書処理装置及びプログラム
JP4047053B2 (ja) * 2002-04-16 2008-02-13 富士通株式会社 繰り返しを含む順序パターンを用いた検索装置および方法
JP2004240766A (ja) * 2003-02-06 2004-08-26 Toshiba Corp パターン検出処理プログラム生成システムおよびパターン検出処理プログラム生成方法
WO2010018710A1 (ja) * 2008-08-13 2010-02-18 日本電気株式会社 有限オートマトン生成装置、パターンマッチング装置、有限オートマトン回路生成方法およびプログラム
CN102075511B (zh) * 2010-11-01 2014-05-14 北京神州绿盟信息安全科技股份有限公司 一种数据匹配设备和方法以及网络入侵检测设备和方法

Also Published As

Publication number Publication date
JP2014095993A (ja) 2014-05-22

Similar Documents

Publication Publication Date Title
US9830314B2 (en) Error correction in tables using a question and answer system
CN106796585A (zh) 条件验证规则
JP5911878B2 (ja) 双方向テキストチェッカー
Lobo et al. Identifying human phenotype terms by combining machine learning and validation rules
US11687534B2 (en) Method and system for detecting sensitive data
KR20190095099A (ko) 거래 시스템 에러 검출 방법, 장치, 저장 매체 및 컴퓨터 장치
JP2017041171A (ja) テストシナリオ生成支援装置およびテストシナリオ生成支援方法
Tsai et al. Rtlfixer: Automatically fixing rtl syntax errors with large language models
CN114936158A (zh) 一种基于图卷积神经网络的软件缺陷定位方法
JP6012414B2 (ja) 情報処理装置及び情報処理方法及びプログラム
JP6451417B2 (ja) デバッグ支援装置、デバッグ支援システム、デバッグ支援方法、および、デバッグ支援プログラム
JP6790905B2 (ja) 検出方法、検出装置および検出プログラム
JP5799823B2 (ja) テストデータ生成装置、テストデータ生成プログラムおよびテストデータ生成方法
JP2000181807A (ja) 記録媒体のデータ検査方法及び装置
JP6123372B2 (ja) 情報処理システム、名寄せ判定方法及びプログラム
US20170031892A1 (en) System and method for representing sequences of bits
JP6369269B2 (ja) 検証支援装置、検証支援方法およびコンピュータプログラム
JP5808264B2 (ja) コード生成装置及びコード生成方法及びプログラム
JP2010237909A (ja) 知識補正プログラム、知識補正装置および知識補正方法
JP6954806B2 (ja) 不具合検出装置、及び不具合検出方法
Wang et al. MeTMaP: Metamorphic Testing for Detecting False Vector Matching Problems in LLM Augmented Generation
JP2016040707A (ja) ソフトウェア検証プログラム、ソフトウェア検証方法及びソフトウェア検証装置
CN115244539B (zh) 单词或词段词元化的推断方法
JP6556091B2 (ja) システム仕様検証支援装置及びシステム仕様検証支援方法
JP7355303B2 (ja) レセプトデータ有意性判定プログラム、レセプトデータ有意性判定方法、及び、情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151007

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160816

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: 20160823

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160920

R150 Certificate of patent or registration of utility model

Ref document number: 6012414

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250