JP5522017B2 - 情報処理装置、情報処理装置の制御方法、及びコンピュータプログラム - Google Patents

情報処理装置、情報処理装置の制御方法、及びコンピュータプログラム Download PDF

Info

Publication number
JP5522017B2
JP5522017B2 JP2010278635A JP2010278635A JP5522017B2 JP 5522017 B2 JP5522017 B2 JP 5522017B2 JP 2010278635 A JP2010278635 A JP 2010278635A JP 2010278635 A JP2010278635 A JP 2010278635A JP 5522017 B2 JP5522017 B2 JP 5522017B2
Authority
JP
Japan
Prior art keywords
character string
node
data
search
reached
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
JP2010278635A
Other languages
English (en)
Other versions
JP2012128604A (ja
JP2012128604A5 (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.)
Canon Marketing Japan Inc
Canon IT Solutions Inc
Original Assignee
Canon Marketing Japan Inc
Canon IT Solutions Inc
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 Canon Marketing Japan Inc, Canon IT Solutions Inc filed Critical Canon Marketing Japan Inc
Priority to JP2010278635A priority Critical patent/JP5522017B2/ja
Publication of JP2012128604A publication Critical patent/JP2012128604A/ja
Publication of JP2012128604A5 publication Critical patent/JP2012128604A5/ja
Application granted granted Critical
Publication of JP5522017B2 publication Critical patent/JP5522017B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、文字列をキーワードとして取り扱う検索を行う技術に関し、キーワードを検索するために効率的な、データ構造を作成し、該作成したデータ構造を用いた文字列をキーワードとしたデータの検索処理を行う技術に関する。
文字列をキーワードとして取り扱う検索装置、例えば、国語辞書などを搭載した電子辞書は、入力として与えた文字列をキーワードとし、キーワードに該当するレコードを出力する。検索装置における検索方法としては、検索文字列と完全に一致するキーワードを検索する「完全一致検索」、検索文字列を前方に含むキーワードを検索する「前方一致検索」、検索文字列を後方に含むキーワードを検索する「後方一致検索」、検索文字列を含むキーワードを検索する「部分一致検索」などがある。ユーザビリティの観点から、これら全ての検索が可能な検索装置が求められるが、後述する理由により、「後方一致検索」や「部分一致検索」をサポートしていない検索装置も多い。
以下、説明を簡略化するため、文字列とキーワードに関する語句を次のように定める。まず、検索装置に登録する文字列を構成する文字を通常文字と呼び、通常文字の集合を「Σ」と表記する。次に、キーワードの終端を表す文字を終端文字と呼び、「#」と表記する。ここで、#はΣに含まれない。次に、Σに含まれる任意の一文字を表す記号を「?」、任意の複数文字を表す記号を「*」と表記する。
これにより、各検索方法に対応する検索キーワードをそれぞれ以下のように表せる。ここで、各検索キーワード中のα、βは、Σに含まれる文字から構成される文字列を表す。
・完全一致検索に対応する検索キーワード: α#
・前方一致検索に対応する検索キーワード: α*#
・後方一致検索に対応する検索キーワード: *α#
・部分一致検索に対応する検索キーワード: *α*#
上記の検索キーワードの他にも、部分的に任意の文字を含むような検索(例えば「α*β??#」など)も検索要件に含まれることがある。検索装置に大量のキーワードが登録されている場合、これらの様々な検索要求に対して、検索装置から検索キーワードをシーケンシャルに照合すると時間的効率に問題がある。そこで、高速な検索処理を実現するため、トライ構造やN-gram構造をインデクスとして用いる方法が提案されている。
トライ構造は、登録対象の文字列集合における共通接頭辞を併合した木構造で、キーワードの検索時間がキーワードの長さに依存するため、インデクスに登録するキーワードの数が増加しても検索の高速性を保つことが可能である。
しかし、トライ構造を用いた検索方法では、検索キーワードを先頭から一文字ずつ読込み、初期節点(木構造の根にあたる節点)から読込んだ文字によって順次遷移する必要があるため、検索キーワードにおける先頭の文字が定まっていない後方一致検索や部分一致検索を効率的に行うことができない。
一方、N-gram構造は、各キーワードにおける長さNの部分文字列の出現位置を保持するデータ構造で、前述の検索方法をすべて実行可能である。
しかし、N-gram構造を用いた検索方法では、検索キーワードをN文字ずつ区切って各部分文字列の位置情報を抽出した後、各部分文字列の位置関係を照合する必要があり、トライ構造を用いた検索方法と比べて検索に時間を要する。また、N-gram構造を構築するためには、各キーワードにおける全部分文字列の位置情報を保持する必要があり、インデクスに必要なサイズがトライ構造と比較して大きい。
この問題に対し、N-gram構造のインデクスをコンパクトに実現する方法として、様々な方法が提案されている。例えば、特許文献1には、キーワードから単語(形態素)を切り出して辞書順に並べたインデクスを作成し、単語に出現する文字の1-gramインデクスを別途作成することで位置情報の格納に必要な記憶領域を削減する技術が開示されている。また、特許文献2には、キーワードから一定の長さの部分文字列を切り出してインデクスを作成し、部分文字列に出現する2-gramインデクスを別途作成することで位置情報の格納に必要な記憶領域を削減する技術が開示されている。さらに特許文献3には、位置情報の集合である転置リストを格納するためのメモリ領域を3種類設け、転置リストの長さによって使い分けることでコンパクトに転置リストを管理する技術が開示されている。下記非特許文献1には、トークンの位置情報の代わりにハッシュ値を用いることでインデクスに要する情報量の抑制を図る技術が開示されている。
特開平8−249354 特許第4414989号 特開2008−217122
平林幹雄ほか,"N.M-gram: ハッシュ値付きN-gram法における転置インデクスの実現", 情報処理学会研究報告,2006-DBS-140, pp215-222, 2006.
しかしながら、上記の文献で開示されているいずれの技術も、通常のN-gram構造と比べて記憶領域の削減を図ることができるが、トライ構造と比較して検索速度が高速であるとは言えない。
トライ構造は、完全一致検索や前方一致検索を効率的に行うことができるが、後方一致検索、部分一致検索、前後一致検索を容易に実行できず、使用用途が限られる。一方、N-gram構造は、これらの検索も可能であるが、トライ構造と比較して、完全一致検索や前方一致検索が高速とは言えず、また、インデクスに必要となる記憶領域が大きい。
本発明は上記の課題を解決するためになされたものであり、検索対象とするキーワードに一致する文字列を検索するにあたり、当該文字列の検索の方法に依らずに、高速な検索を行うことを可能とする技術を提供することを目的とする。
上記した目的を達成するために、本発明の情報処理装置は、トライ構造の節点に対して文字列の検索に用いるデータを管理する情報処理装置であって、第1の文字列に含まれるN‐gramのデータが到達可能な節点を前記トライ構造のデータへ追加する追加手段と、前記追加手段によって追加された節点及び前記節点に到達可能とする前記N‐gramのデータを対応づけてインデックス情報を生成する生成手段と、前記生成手段によって生成したインデックス情報を用いて求まる検索する文字列のN‐gramのデータが到達可能な節点を用いて、前記検索する文字列を前記トライ構造のデータから検索する検索手段と、を備え、前記検索手段は、前記検索する文字列の先頭が任意の複数文字を示す場合、前記任意の複数文字の次のN‐gramのデータが到達可能な節点を前記インデックス情報から求め、前記次のN‐gramのデータの後に連続する文字を連結した文字が到達可能な節点を、前記インデックス情報から求めた節点を用いて検索することを特徴とする。
上記した目的を達成するために、本発明の情報処理装置の制御方法は、トライ構造の節点に対して文字列の検索に用いるデータを管理する情報処理装置の制御方法であって、前記情報処理装置の追加手段が、第1の文字列に含まれるN‐gramのデータが到達可能な節点を前記トライ構造のデータへ追加する追加工程と、前記情報処理装置の生成手段が、前記追加工程によって追加された節点及び前記節点に到達可能とする前記N‐gramのデータを対応づけてインデックス情報を生成する生成工程と、前記情報処理装置の検索手段が、前記生成工程によって生成したインデックス情報を用いて求まる検索する文字列のN‐gramのデータが到達可能な節点を用いて、前記検索する文字列を前記トライ構造のデータから検索する検索工程と、を実行し、前記情報処理装置の検索手段が、前記検索工程によって、前記検索する文字列の先頭が任意の複数文字を示す場合、前記任意の複数文字の次のN‐gramのデータが到達可能な節点を前記インデックス情報から求め、前記次のN‐gramのデータの後に連続する文字を連結した文字が到達可能な節点を、前記インデックス情報から求めた節点を用いて検索すること、を実行することを特徴とする。
上記した目的を達成するために、本発明のログラムは、トライ構造の節点に対して文字列の検索に用いるデータを管理する情報処理装置において読取実行可能なプログラムであって、前記情報処理装置を、第1の文字列に含まれるN‐gramのデータが到達可能な節点を前記トライ構造のデータへ追加する追加手段と、前記追加手段によって追加された節点及び前記節点に到達可能とする前記N‐gramのデータを対応づけてインデックス情報を生成する生成手段と、前記生成手段によって生成したインデックス情報を用いて求まる検索する文字列のN‐gramのデータが到達可能な節点を用いて、前記検索する文字列を前記トライ構造のデータから検索する検索手段と、して機能させ、前記検索手段は、前記検索する文字列の先頭が任意の複数文字を示す場合、前記任意の複数文字の次のN‐gramのデータが到達可能な節点を前記インデックス情報から求め、前記次のN‐gramのデータの後に連続する文字を連結した文字が到達可能な節点を、前記インデックス情報から求めた節点を用いて検索するように、機能させることを特徴とする。
本発明によれば、検索対象とするキーワードに一致する文字列を検索するにあたり、トライ構造における検索方法を用いると共に、N-gram構造の特徴をさらに取り込んだ検索方法を用いることで、当該文字列の検索の方法に依らずに、高速な検索を行うことができる、という効果を奏する。
本発明の実施形態における文字列キーワード検索装置の構成を示す図である。 本発明の実施形態における各種端末のハードウェア構成を示す図である。 本発明の実施形態における追加キーワード集合の一例である。 本発明の実施形態におけるキーワードインデクス構造の一例である。 本発明の実施形態におけるキーワード追加処理のフローチャートである。 本発明の実施形態におけるキーワード削除処理のフローチャートである。 本発明の実施形態におけるキーワード検索処理のフローチャートである。 本発明の実施形態における検索初期設定処理のフローチャートである。 本発明の実施形態における正解パス検索処理のフローチャートである。 本発明の実施形態におけるレコード情報出力処理のフローチャートである。
以下、図面を参照して、本発明の実施形態を詳細に説明する。
図1は、本発明の実施形態における文字列キーワード検索装置の構成を示す図である。
文字列キーワード検索装置100は、キーワードインデクス追加部102と、キーワードインデクス削除部103と、検索結果表示部104と、キーワード検索部105とを備える。
キーワードインデクス追加部102は、追加キーワード101を入力としてキーワードインデクス103にレコードを追加する。キーワードインデクス削除部108は、削除キーワード107を入力としてキーワードインデクス103から該当するレコードを削除する。キーワード検索部105は検索キーワード106を入力としてキーワードインデクス103を検索し、検索結果を検索結果表示部104に表示する。これらのキーワード追加処理、削除処理、及び検索処理については、詳しく後述する。
次に、図1の文字列キーワード検索装置100のハードウェア構成について、図2を用いて説明する。
図中、CPU201は、システムバス204に接続される後述の各デバイスやコントローラを統括的に制御する。また、ROM203あるいは外部メモリ211には、CPU201の制御プログラムであるBIOS(Basic Input / Output System)やオペレーティングシステムプログラム(以下、OS)や、文字列キーワード検索装置100に後述する各種の処理を実行させるために必要な各種プログラムやデータ等が記憶されている。RAM202は、CPU201の主メモリ、ワークエリア等として機能する。
CPU201は、処理の実行に際して必要なプログラム等をRAM202にロードして、プログラムを実行することで後述する各種処理を実現するものである。また、入力コントローラ(入力C)205は、キーボードやポインティングデバイス等で構成される入力装置209からの入力を制御する。ビデオコントローラ(VC)206は、ディスプレイ装置210等の表示装置への表示を制御する。ディスプレイ装置210は、例えばCRTディスプレイや液晶ディスプレイ等で構成される。
メモリコントローラ(MC)207は、ブートプログラム、ブラウザソフトウエア、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、各種データ等を記憶するハードディスク(HD)やフロッピーディスク(登録商標 FD)或いはPCMCIAカードスロットにアダプタを介して接続されるコンパクトフラッシュメモリ等の外部メモリ211へのアクセスを制御する。
通信I/Fコントローラ(通信I/FC)208は、ネットワークを介して、外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、TCP/IPを用いたインターネット通信等が可能である。
なお、CPU201は、例えばRAM202内の表示情報用領域へアウトラインフォントの展開(ラスタライズ)処理を実行することにより、ディスプレイ装置210上での表示を可能としている。また、CPU201は、ディスプレイ装置210上の不図示のマウスカーソル等でのユーザ指示を可能とする。以上が、文字列キーワード検索装置100のハードウェア構成の説明であるが、後述する各種の処理を実行可能であれば、必ずしも図2に記載のハードウェア構成を有していなくとも構わないことは言うまでもない。
次に、文字列キーワード検索装置100におけるキーワードインデクス103について、図3と図4を用いて詳しく説明する。
図3は、追加キーワード101の集合の一例である。追加キーワード集合300の各要素は、キーワードとなる文字列とキーワードのID番号から成る。ここで、ID番号はキーワード集合を利用するソフトウェアにおいて意味をもつ値である。例えば、追加キーワード301は、文字列「情報資産管理#」に対してキーワードのID番号「1」が定義されている。
図4は、キーワード検索装置100におけるキーワードインデクス103の一例であり、図3に示す追加キーワード集合300の各要素を全て登録したときの状態を表す。キーワードインデクス103はトライインデクス410と遷移1-gramインデクス420から成る。遷移1-gramインデクス420は、本発明が課題を解決するために新たに導入したデータ構造である遷移N-gramインデクスの一例である。ここで、遷移N-gramインデクスとは、トライ構造において連続するN遷移の各ラベルを順次連結して生成した文字列αをキーとし、任意の節点からαにより到達できる節点の集合を値とする転置インデクスである。例えば、トライインデクス410において、1遷移のラベルによる文字列「情」によって、任意の節点から到達できる節点の集合は{2, 21}であるため、1-gramインデクス420において、文字列「情」に対応する項目421は節点集合{2, 21}を値として保持する。
遷移Nグラムインデクスを構築することで、トライ上で任意のN文字により遷移できる節点の集合を高速に取得でき、後述する文字列キーワード検索方法によって、部分一致検索や前後一致検索を効率的に行うことが可能になる。
次に、図5を参照して、文字列キーワード検索装置100のCPU201によって行われるキー追加処理の詳細について説明する。この処理は、文字列キーワード検索装置100のCPU201をキーワードインデクス追加部102として機能させるためのプログラムによる制御に従って行われる処理である。この処理が行われることで、キーワードインデクス103に新たなキーワードが登録されることになる。
キーワードインデクス追加部102は、追加キーワード101を読込み、キーワードインデクス103にインデクスを追加する。なお、図4のトライインデクス410における初期節点411、初期節点411から終端文字による遷移先の節点412は、キーワードを登録する前からあらかじめ作成する節点である。
このキーワード追加処理では、追加キーワード101の文字列によってトライインデクス410上を走査し、遷移が存在しない節点から新たに節点を構築する処理を行う。また、節点を構築する際に1-gramインデクス420を更新する処理を行う。
まず、ステップS501において、節点ポインタに初期節点を設定し、その後、追加キーワードの1文字目を読込む(ステップS502)。ここで、節点ポインタとは、トライインデクス410を走査するためのポインタである。その後、読込んだ文字が通常文字(以下、通常文字を「a」と表現する)であるかを判定する(ステップS503)。このステップS503の判定処理でaであると判定した場合、CPU201は、参照中の節点、すなわち、節点ポインタが指す節点からaによる遷移先があるかを判定する(ステップS504)。
ステップS504の判定処理で、遷移がある(YES)と判定した場合には、CPU201は、遷移先の節点へポインタを移動する(ステップS505)。その後、ステップS506において次の1文字を読込み、ステップS503から同様の処理を繰り返す。ステップS503において、読込んだ文字が終端文字(以下、終端文字を「#」とも表現する)であると判定した場合には、処理をステップS511に進める。
ステップS504の判定処理で、遷移先の節点が存在しない(NO)と判定した場合には、ステップS503からステップS506の繰り返し処理を終え、ステップS507に処理を進める。例えば、追加キーワード「情報管理#:7」を新たにキーワードインデクス400に登録する場合、トライインデクス410における節点0から、文字「情」、「報」により、それぞれ節点2、節点3へ移動し、節点3において次の文字「管」による遷移先が存在しないため、ステップS504でNOと判定し、繰り返し処理を終える。
次に、遷移先の節点が存在しない場合と判定し、処理をステップS507進め、CPU201は、ステップS506(若しくはステップS502)において、読込んだ文字が通常文字aであるかを判定する。このステップS507で通常文字aである(YES)と判定した場合、参照中の節点から通常文字aによる遷移先の節点を作成し、節点ポインタに新規作成した節点を設定する(ステップS508)。その後、1-gramインデクス420のaに対応する項目に、作成した節点を加え、1-gramインデクス420を更新する(ステップS509)。その後、処理をステップS510に進め、次の1文字を読込む。その後、ステップS507からS510の処理を、ステップS507でCPU201が終端文字を読込んだと判定するまで繰り返し行う。例えば、前述した例の場合、節点3から文字「管」による遷移先の節点24を新たに作成し、1-gramインデクス420における「管」の項目に節点24を追加する。同様に、文字「理」による遷移先の節点25を作成し、1-gramインデクス420における「理」の項目に節点25を追加する。ここで、次に読込む文字が終端文字であるため、繰り返し処理を終える。
最後に、ステップS511において、参照中の節点から終端文字による遷移先の節点を作成し、作成した節点にキーワードIDなどの
レコード情報を格納してキーワードの追加処理を終える。以上が、キーワード検索装置100のCPU201によって行われるキーワード追加処理の説明である。
次に、図6を参照して、キーワード検索装置100のCPU201によって行われるキーワード削除処理について説明する。この処理は、文字列キーワード検索装置100のCPU201をキーワードインデクス削除部108として機能させるためのプログラムによる制御に従って行われる処理である。この処理が行われることで、指定を受け付けたキーワードがキーワードインデクス103から削除される。
キーワードインデクス削除部108は、削除キーワード107を読込み、キーワードインデクス103から該当するインデクスを削除する。ここで、削除キーワード107は、通常文字を組み合わせた文字列に終端記号を連結した文字列であり、任意の1文字「?」や、任意の複数文字「*」を含まないものとする。
このキーワード削除処理では、削除キーワード107の文字列によってトライインデクス410上を走査し、末端の節点から初期節点に向かって節点を削除する。また、節点を削除する際に遷移1-gramインデクス420を更新する。
トライインデクス410上を走査する処理、すなわち、ステップS601〜S606までの処理は、前述したキーワード追加処理におけるステップS501〜S506と同様であるので、詳細な説明は割愛する。尚、ステップS604で参照先の節点からaによる遷移先が存在しない(NO)と判定した場合には、トライインデクス410に削除キーワードとして入力されたキーワードが存在しないので、本処理を終了することになる。
ステップS603で読み込んだ文字が終端文字であると判定することにより、ステップS601〜S606の処理が終了すると、CPU201は、処理をステップS607に処理を進め、参照中の節点に終端文字による遷移先が存在するかを判定する。この処理でNOと判定した場合にも、トライインデクス410に削除キーワードとして入力されたキーワードが存在しないので、本処理を終了することになる。
ステップS607の判定処理で、CPU201がYESと判定した場合には、処理をステップS608に進め、終端文字による遷移先の節点と、該当するレコード情報を削除する。
その後、ステップS609において、参照中の節点に子節点が存在しない(NO)と判定した場合、削除キーワード107から1つ前の文字aを読込み(ステップS610)、1-gramインデクス420のaに対応する項目から参照中の節点を削除する(ステップS611)。その後、トライインデクス410上から節点を削除して節点ポインタを節点の親節点に設定する(ステップS612)。参照中の節点に子節点が存在しない間、ステップS609〜S612の処理を繰り返し、ステップS609でNOと判定するとキーワードの削除処理を終了する。以上が、キーワード検索装置100のCPU201によって行われる削除処理の説明である。
次に、図7を参照して、キーワード検索装置100のCPU201によって行われるキーワード検索処理について説明する。この処理は、文字列キーワード検索装置100のCPU201をキーワード検索部105として機能させるためのプログラムによる制御に従って行われる処理である。この処理が行われることで、検索キーワードとして入力された文字列を含むキーワードインデクス中のキーワードのレコード情報が検索されることになる。
キーワード検索部105は、検索キーワード106を読込み、キーワードインデクス103を用いて該当キーワードのレコード情報を検索し、検索結果表示部104に検索結果を表示する。ここで、検索キーワード106は、通常文字、任意の1文字「?」、任意の複数文字「*」を組み合わせた文字列に終端文字を連結した文字列である。
キーワード検索装置100のCPU201は、まず、ステップS701において検索初期設定処理を行う。
検索初期設定処理では、検索キーワードの書式をキーワード検索部105が処理しやすい形式に変換した後、検索キーワードにおける1文字目の文字種によって、アクティブリストと呼ぶリスト構造にトライ上の節点を格納する。この検索初期設定処理の詳細は、図8を参照して説明する。
ここで、図8は、図7のステップS701の検索初期設定処理の詳細な処理を示すフローチャートである。
まずステップS801で、検索キーワードの書式を変換する。具体的には、検索キーワードを以下のルールR1、R2に従って変換する。例えば、検索キーワード「**資産*??*システム#」を以下のルールに従って変換すると「*資産??*システム#」となる。
R1:「*」と隣接する「?」を「*」の前方に移動する。
R2:連続する「*」を1つにする。
次に、ステップS802において検索キーワードから先頭1文字を読込み、読込んだ文字の文字種によって、ステップS803〜S810においてアクティブリストに格納する節点を求める。
ステップS803で、先頭1文字が終端文字であるとCPU201が判定した場合、すなわちステップS802で読込んだ文字が「#」である場合には、何も行わずに検索初期設定を終える。
ステップS803で、先頭1文字が通常文字aであるとCPU201が判定した場合、処理をステップS804に進め、初期節点から文字列αにより遷移可能な節点をアクティブリストに加える。ここで、文字列αは、検索キーワードにおいて、読込んだ文字aから後続する通常文字を連結した文字列を表す。例えば、検索キーワードが「情報資産*#」である場合、通常文字aは「情」、文字列αは「情報資産」であり、アクティブリストには初期節点から文字列「情報資産」により遷移可能な節点5を加える。
ステップS803で、先頭1文字が任意の1文字であるとCPU201が判定した場合、すなわちステップS802で読込んだ文字が「?」である場合、処理をステップS805に進め、連続する「?」を検索キーワードから読込み、「?」の数nをカウントする。その後、ステップS806において、初期節点からn文字分の遷移で到達可能な節点を全てアクティブリストに加える。例えば、検索キーワードが「??管理*#」である場合、「?」の数nは2であり、アクティブリストには初期節点から2文字分の遷移で到達可能な節点3と節点11を加える。
ステップS803で、先頭1文字が任意の複数文字であるとCPU201が判定した場合、すなわちステップS802で読込んだ文字が「*」である場合、処理をステップS807に進め、検索キーワードからさらに次の1文字を読込む。前述した書式変換により、「*」の後に存在する可能性のある文字は、通常文字、または終端文字「#」である。
ステップS807で読み込んだ1文字が終端文字「#」であるとステップS808で判定した場合、処理をステップS810に進め、アクティブリストに初期節点を加える。
一方、ステップS807で読み込んだ1文字が通常文字aであるとステップS808で判定した場合、処理をステップS809に進め、1-gramインデクスのaに対応する節点から文字列βにより遷移可能な節点をアクティブリストに加える。ここで、文字列βは検索キーワードにおいて、文字aの次の文字から連続する通常文字を連結した文字列を表す。例えば、検索キーワードが「*情報資産*#」である場合、通常文字aは「情」であり、文字列βは「報資産」である。ここで、1-gramインデクスの「情」に対応する節点は節点2と節点21であり、節点2において、文字列「報資産」により遷移可能な節点5をアクティブリストに加える。
以上が、図7のステップS701の検索初期設定処理の詳細な説明である。
図7の説明に戻る。ステップS701の検索初期設定処理終了後、CPU201は、検索初期設定処理において、検索キーワードを終端文字まで読み込んだかを判定する(ステップS702)。
ステップS702で検索キーワードを終端文字まで読み込んでいない(NO)とCPU201が判定した場合、処理をステップS703に進め、正解パス検索処理を行う。ここで、正解パスとは、検索結果として出力するキーワードをトライインデクス上で構成する節点の順序リストで、節点番号を用いて表す。
例えば、キーワードインデクス400から、検索キーワード「*管理#」を検索する場合について考える。このとき、検索結果として出力するキーワードは、「情報資産管理#」、「資産管理#」の2つであり、正解パスはそれぞれ、(0, 2, 3, 4, 5, 6, 7, 8)、(0, 10, 11, 12, 13, 20)となる。
ここで、木構造の性質から、ある節点から初期節点までのパスは親節点を辿ることで一意に定まる。よって、初期節点を開始点とするトライ上のパスは、パスの最後方に位置する節点を保持することで管理できる。以下、検索処理過程において、正解パス候補となるパス上に存在する節点のうち、最後方に位置する節点をアクティブ節点と呼ぶ。前述したアクティブリストに格納する節点はこのアクティブ節点である。
正解パス検索処理では、検索キーワードから終端文字を読み込むまで、適宜アクティブリストを更新することで正解パスを求める。ただし、検索キーワードにおいて、終端文字「#」の直前に任意の複数文字「*」が存在する場合、この処理で求めるパスは「*」の直前までの文字列γを構成するトライ上のパスである。例えば、検索キーワードが「情報資産*#」である場合、文字列γは「情報資産」であり、求めるトライ上のパスは(0, 2, 3, 4, 5)となる。この正解パス検索処理の詳細については、図9を参照して説明する。
ここで、図9を参照して、図7のステップS703の正解パス検索処理の詳細について説明する。
まず、CPU201はステップS901において、アクティブリスト内に節点が存在するかを判定する。ステップS901で節点が存在する(YES)と判定した場合は、処理をステップS902に進める。一方、アクティブリスト内に節点が存在しない(ステップS901でNO)と判定した場合には、本処理を終了する。
ステップS902では、検索キーワードから次の1文字(検索初期設定処理で読み込んだ最後の文字の次の1文字)を読み込み、読み込んだ文字の文字種によって、ステップS903〜S911でアクティブリストを更新する。
ステップS903の判定処理で、ステップS902で読み込んだ文字が終端文字「#」であるとCPU201が判定した場合、処理をステップS911に進め、アクティブリスト内の各節点を終端文字により遷移可能な節点で置き換える。このとき、終端文字による遷移先が存在しない節点はアクティブリストから削除する。
ステップS903の判定処理で、ステップS902で読み込んだ文字が通常文字aであると判定した場合、処理をステップS904に進め、アクティブリスト内の各節点を文字列αにより遷移可能な節点で置き換える。ここで、文字列αは、前述したステップS804と同様に、検索キーワードにおいて、読み込んだ文字aから連続する通常文字を連結した文字列を表す。ステップS911と同様に、文字列αによる遷移先が存在しない節点はアクティブリストから削除する。
ステップS903の判定処理で、ステップS902で読み込んだ文字が任意の1文字「?」であると判定した場合、処理をステップS905に進め、前述したステップS805と同様に、「?」の数nをカウントし、その後、アクティブリスト内の各節点をn文字分の遷移により到達可能な節点で置き換える(ステップS906)。ステップS911と同様に、遷移先が存在しない節点はアクティブリストから削除する。
ステップS903の判定処理で、ステップS902で読み込んだ文字が任意の複数文字「*」であると判定した場合、処理をステップS907に進め、前述したステップS807と同様に、さらに次の文字を読込む。
その後、ステップS908において、ステップS907で読み込んだ文字種別を判定する。この判定処理で、CPU201が、ステップS907で読み込んだ文字が終端文字「#」であると判定した場合には、本図に示す正解パス検索処理を終了する。
一方、ステップS908において、ステップS907で読み込んだ文字が通常文字aであると判定した場合には、処理をステップS909に進め、1-gramインデクスのaに対応する節点のうち、アクティブリスト内の節点を祖先にもつ節点から文字列βにより遷移可能な節点を一時リスト(アクティブ節点を一時的に保持するリスト)に加える。ここで、前述したステップS809と同様に、文字列βは検索キーワードにおいて、文字aの次の文字から連続する通常文字を連結した文字列を表す。その後、ステップ910において、アクティブリストを一時リストの内容で差し替え、一時リストを空にする。
ステップS904、ステップS906、ステップS910の処理終了後、処理をステップS901に進める。そして、上記説明したステップS901〜S911の処理を、ステップS903、またはステップS908で終端文字を読み込んだとCPU201が判定する、若しくは、ステップS901でアクティブリストに節点が存在しないとCPU201が判定するまで繰り返し、正解パス検索処理を終える。以上が、図7のステップS703の正解パス検索処理の詳細な説明である。
図7の説明に戻る。ステップS702でYESと判定した場合、またはステップS703の正解パス検索処理終了後、CPU201は、処理をステップS704に進め、レコード情報の出力を行う。このレコード情報出力処理の詳細は、図10を参照して説明する。
ここで、図10を参照して、図7のステップS704のレコード情報出力処理の詳細について説明する。
このレコード情報出力処理では、ステップS1001〜S1004において、アクティブリスト内に存在する節点から派生するすべての節点を走査し、ステップS1003においてレコード情報をもつ節点が存在する場合、ステップS1004において、該当するレコード情報を検索結果表示部104に出力する。
以上、キーワード検査部は、検索初期設定処理、正解パス検索処理、レコード情報出力処理によってキーワード検索処理を実現するが、検索初期設定を終えた段階で検索キーワードの末尾まで読み終えた場合、すなわち、ステップS702において終端文字まで読込んでいる場合は、正解パス検索処理が不要となるため、ステップS704において直接レコード情報の出力処理を行う。
以上説明したように、本実施形態によれば、トライ構造の遷移N-gramを構築することによって、前述の各検索方法を高速に実行可能なインデクスを実装できる。また、遷移N-gramインデクスは、通常のN-gramインデクスよりもデータ構造の実現に要する記憶領域を抑制できる。これは、通常のN-gramインデクスがキーワードのID番号と位置情報の組を値として保持することに対し、遷移N-gramインデクスはトライ上の節点番号のみを値として保持するためである。また、トライ構造がキーワードの共通接頭辞を併合するデータ構造であるため、登録キーワード集合に共通接頭辞が多いほど、通常のN-gramインデクスよりも必要な記憶領域を抑制できる。
なお、本発明におけるキーワードインデクスは、図4を見ても明らかであるが、構築済みのトライインデクスを走査し、遷移N-gramインデクスを作成することでも容易に構築可能である。よって、動的にキーワードの更新が発生しないような要件においては、簡潔木などの非常にコンパクトなトライインデクスに対して遷移N-gramを作成することが可能である。
以上、実施形態例を詳述したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
なお、上述した各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な内容で構成されることは言うまでもない。
また、本発明は、システム或いは装置にプログラムを供給することにとって達成される場合にも適用できることは言うまでもない。この場合、本発明を達成するためのソフトウェアによって表されるプログラムを格納した記録媒体を該システム或いは装置に読み出すことによって、そのシステム或いは装置が、本発明の効果を享受することが可能となる。
さらに、本発明を達成するためのソフトウェアによって表されるプログラムをネットワーク上のサーバー、データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステム或いは装置が、本発明の効果を享受することが可能となる。
なお、上述した各実施形態及びその変形例を組み合わせた構成もすべて本発明に含まれるものである。
100 文字列キーワード検索装置
101 追加キーワード
102 キーワードインデクス追加部
103 キーワードインデクス
104 検索結果表示部
105 キーワード検索部
106 検索キーワード
107 削除キーワード
108 キーワードインデクス削除部
201 CPU
202 RAM
203 ROM
204 システムバス
205 入力コントローラ
206 ビデオコントローラ
207 メモリコントローラ
208 通信I/F(インターフェース)コントローラ
209 キーボード
210 ディスプレイ装置
211 外部メモリ

Claims (11)

  1. トライ構造の節点に対して文字列の検索に用いるデータを管理する情報処理装置であって、
    第1の文字列に含まれるN‐gramのデータが到達可能な節点を前記トライ構造のデータへ追加する追加手段と、
    前記追加手段によって追加された節点及び前記節点に到達可能とする前記N‐gramのデータを対応づけてインデックス情報を生成する生成手段と、
    前記生成手段によって生成したインデックス情報を用いて求まる検索する文字列のN‐gramのデータが到達可能な節点を用いて、前記検索する文字列を前記トライ構造のデータから検索する検索手段と、
    を備え、
    前記検索手段は、前記検索する文字列の先頭が任意の複数文字を示す場合、前記任意の複数文字の次のN‐gramのデータが到達可能な節点を前記インデックス情報から求め、前記次のN‐gramのデータの後に連続する文字を連結した文字が到達可能な節点を、前記インデックス情報から求めた節点を用いて検索する
    ことを特徴とする情報処理装置。
  2. 記検索手段は、前記検索する文字列の先頭のN‐gramのデータが通常の文字を示す場合、前記通常の文字を含む連続する文字を連結した文字が到達可能な節点を、前記トライ構造のデータのルートから検索を行うことを特徴とする請求項1に記載の情報処理装置。
  3. トライ構造の節点に対して文字列の検索に用いるデータを管理する情報処理装置であって、
    第1の文字列に含まれるN‐gramのデータが到達可能な節点を前記トライ構造のデータへ追加する追加手段と、
    前記追加手段によって追加された節点及び前記節点に到達可能とする前記N‐gramのデータを対応づけてインデックス情報を生成する生成手段と、
    前記生成手段によって生成したインデックス情報を用いて求まる検索する文字列のN‐gramのデータが到達可能な節点を用いて、前記検索する文字列を前記トライ構造のデータから検索する検索手段と、
    を備え、
    前記検索手段は、前記検索する文字列の先頭が任意の文字を示す場合、任意の文字の次のN‐gramのデータが到達可能な節点を、前記トライ構造のデータのルートから検索を行うことを特徴とする情報処理装置。
  4. トライ構造の節点に対して文字列の検索に用いるデータを管理する情報処理装置であって、
    第1の文字列に含まれるN‐gramのデータが到達可能な節点を前記トライ構造のデータへ追加する追加手段と、
    前記追加手段によって追加された節点及び前記節点に到達可能とする前記N‐gramのデータを対応づけてインデックス情報を生成する生成手段と、
    前記生成手段によって生成したインデックス情報を用いて求まる検索する文字列のN‐gramのデータが到達可能な節点を用いて、前記検索する文字列を前記トライ構造のデータから検索する検索手段と、
    を備え、
    前記検索手段は、前記検索する文字列が到達可能な節点を検索した後、前記文字列の後の文字が任意の複数文字、及び前記任意の複数文字の次の文字が通常の文字の場合、前記通常の文字が到達可能な節点及び前記検索する文字列が到達可能な節点から、検索する文字列を特定することを特徴とする情報処理装置。
  5. トライ構造の節点に対して文字列の検索に用いるデータを管理する情報処理装置であって、
    第1の文字列に含まれるN‐gramのデータが到達可能な節点を前記トライ構造のデータへ追加する追加手段と、
    前記追加手段によって追加された節点及び前記節点に到達可能とする前記N‐gramのデータを対応づけてインデックス情報を生成する生成手段と、
    前記生成手段によって生成したインデックス情報を用いて求まる検索する文字列のN‐gramのデータが到達可能な節点を用いて、前記検索する文字列を前記トライ構造のデータから検索する検索手段と、
    を備え、
    前記第1の文字列は、文字列の終端を示す終端文字列を含み、前記追加手段は、前記第1の文字列の先頭から前記終端文字に達するまで、前記節点の追加を行うことを特徴とする情報処理装置。
  6. トライ構造の節点に対して文字列の検索に用いるデータを管理する情報処理装置であって、
    第1の文字列に含まれるN‐gramのデータが到達可能な節点を前記トライ構造のデータへ追加する追加手段と、
    前記追加手段によって追加された節点及び前記節点に到達可能とする前記N‐gramのデータを対応づけてインデックス情報を生成する生成手段と、
    前記生成手段によって生成したインデックス情報を用いて求まる検索する文字列のN‐gramのデータが到達可能な節点を用いて、前記検索する文字列を前記トライ構造のデータから検索する検索手段と、
    を備え、
    前記第1の文字列は、文字列の終端を示す終端文字列を含み、前記追加手段は、前記第1の文字列の先頭から前記終端文字に達するまで、前記節点の追加を行い、
    前記検索手段は、前記検索する文字列に終端文字列が含まれる場合、前記終端文字列が到達可能な節点を検索することを特徴とする情報処理装置。
  7. トライ構造の節点に対して文字列の検索に用いるデータを管理する情報処理装置であって、
    第1の文字列に含まれるN‐gramのデータが到達可能な節点を前記トライ構造のデータへ追加する追加手段と、
    前記追加手段によって追加された節点及び前記節点に到達可能とする前記N‐gramのデータを対応づけてインデックス情報を生成する生成手段と、
    前記生成手段によって生成したインデックス情報を用いて求まる検索する文字列のN‐gramのデータが到達可能な節点を用いて、前記検索する文字列を前記トライ構造のデータから検索する検索手段と、
    を備え、
    前記第1の文字列は、文字列の終端を示す終端文字列を含み、前記追加手段は、前記第1の文字列の先頭から前記終端文字に達するまで、前記節点の追加を行い、
    前記トライ構造の節点に追加された終端文字列に対応させて、前記第1の文字列を一意に識別する識別情報をデータとして管理し、
    前記検索手段は、前記検索する文字列に終端文字列が含まれる場合、前記終端文字列が到達可能な節点の識別情報に基づいて、第1の文字列を検索することを特徴とする情報処理装置。
  8. トライ構造の節点に対して文字列の検索に用いるデータを管理する情報処理装置であって、
    第1の文字列に含まれるN‐gramのデータが到達可能な節点を前記トライ構造のデータへ追加する追加手段と、
    前記追加手段によって追加された節点及び前記節点に到達可能とする前記N‐gramのデータを対応づけてインデックス情報を生成する生成手段と、
    前記生成手段によって生成したインデックス情報を用いて求まる検索する文字列のN‐gramのデータが到達可能な節点を用いて、前記検索する文字列を前記トライ構造のデータから検索する検索手段と、
    を備え、
    前記検索手段によって検索した節点を含む文字列を検索結果レコードとして出力する出力手段を備えたことを特徴とする情報処理装置。
  9. トライ構造の節点に対して文字列の検索に用いるデータを管理する情報処理装置であって、
    第1の文字列に含まれるN‐gramのデータが到達可能な節点を前記トライ構造のデータへ追加する追加手段と、
    前記追加手段によって追加された節点及び前記節点に到達可能とする前記N‐gramのデータを対応づけてインデックス情報を生成する生成手段と、
    前記生成手段によって生成したインデックス情報を用いて求まる検索する文字列のN‐gramのデータが到達可能な節点を用いて、前記検索する文字列を前記トライ構造のデータから検索する検索手段と、
    を備え、
    前記第1の文字列は、文字列の終端を示す終端文字列を含み、前記追加手段は、前記第1の文字列の先頭から前記終端文字に達するまで、前記節点の追加を行い、
    前記トライ構造のデータから削除する文字列の終端文字列が到達可能な場合、前記文字列に対応するデータを前記トライ構造から削除するとともに、前記インデックス情報から前記文字列のN‐gramのデータ及び節点を削除する削除手段を備えたことを特徴とする情報処理装置。
  10. トライ構造の節点に対して文字列の検索に用いるデータを管理する情報処理装置の制御方法であって、
    前記情報処理装置の追加手段が、第1の文字列に含まれるN‐gramのデータが到達可能な節点を前記トライ構造のデータへ追加する追加工程と、
    前記情報処理装置の生成手段が、前記追加工程によって追加された節点及び前記節点に到達可能とする前記N‐gramのデータを対応づけてインデックス情報を生成する生成工程と、
    前記情報処理装置の検索手段が、前記生成工程によって生成したインデックス情報を用いて求まる検索する文字列のN‐gramのデータが到達可能な節点を用いて、前記検索する文字列を前記トライ構造のデータから検索する検索工程と、
    を実行し、
    前記情報処理装置の検索手段が、前記検索工程によって、前記検索する文字列の先頭が任意の複数文字を示す場合、前記任意の複数文字の次のN‐gramのデータが到達可能な節点を前記インデックス情報から求め、前記次のN‐gramのデータの後に連続する文字を連結した文字が到達可能な節点を、前記インデックス情報から求めた節点を用いて検索すること、
    を実行することを特徴とする情報処理装置の制御方法。
  11. トライ構造の節点に対して文字列の検索に用いるデータを管理する情報処理装置において読取実行可能なプログラムであって、
    前記情報処理装置を、
    第1の文字列に含まれるN‐gramのデータが到達可能な節点を前記トライ構造のデータへ追加する追加手段と、
    前記追加手段によって追加された節点及び前記節点に到達可能とする前記N‐gramのデータを対応づけてインデックス情報を生成する生成手段と、
    前記生成手段によって生成したインデックス情報を用いて求まる検索する文字列のN‐gramのデータが到達可能な節点を用いて、前記検索する文字列を前記トライ構造のデータから検索する検索手段と、
    して機能させ、
    前記検索手段は、前記検索する文字列の先頭が任意の複数文字を示す場合、前記任意の複数文字の次のN‐gramのデータが到達可能な節点を前記インデックス情報から求め、前記次のN‐gramのデータの後に連続する文字を連結した文字が到達可能な節点を、前記インデックス情報から求めた節点を用いて検索するように、
    機能させることを特徴とするプログラム。
JP2010278635A 2010-12-14 2010-12-14 情報処理装置、情報処理装置の制御方法、及びコンピュータプログラム Active JP5522017B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010278635A JP5522017B2 (ja) 2010-12-14 2010-12-14 情報処理装置、情報処理装置の制御方法、及びコンピュータプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010278635A JP5522017B2 (ja) 2010-12-14 2010-12-14 情報処理装置、情報処理装置の制御方法、及びコンピュータプログラム

Publications (3)

Publication Number Publication Date
JP2012128604A JP2012128604A (ja) 2012-07-05
JP2012128604A5 JP2012128604A5 (ja) 2013-04-11
JP5522017B2 true JP5522017B2 (ja) 2014-06-18

Family

ID=46645565

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010278635A Active JP5522017B2 (ja) 2010-12-14 2010-12-14 情報処理装置、情報処理装置の制御方法、及びコンピュータプログラム

Country Status (1)

Country Link
JP (1) JP5522017B2 (ja)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2683870B2 (ja) * 1994-05-23 1997-12-03 日本アイ・ビー・エム株式会社 文字列検索システム及び方法
JP3459053B2 (ja) * 1995-01-12 2003-10-20 株式会社日立製作所 文書検索方法および装置
JPH0916616A (ja) * 1995-06-30 1997-01-17 Toyo Joho Syst:Kk 索引データ生成検索装置
JP3696745B2 (ja) * 1999-02-09 2005-09-21 株式会社日立製作所 文書検索方法及び文書検索システム及び文書検索プログラムを記録したコンピュータ読み取り可能な記録媒体
WO2010026804A1 (ja) * 2008-09-05 2010-03-11 日本電信電話株式会社 近似照合装置、近似照合方法、プログラム及び記録媒体

Also Published As

Publication number Publication date
JP2012128604A (ja) 2012-07-05

Similar Documents

Publication Publication Date Title
KR20150000566A (ko) 텍스트 입력에 따른 실시간 이미지 출력 장치 및 방법
JP5211266B1 (ja) 閲覧システム、端末、画像サーバ、プログラム、プログラムを記録したコンピュータ読み取り可能な記録媒体、及び方法
JP3852757B2 (ja) 文字列照合方法、これを用いた文書処理装置及びプログラム
JP2011100208A (ja) 行動推定装置、行動推定方法および行動推定プログラム
KR101245631B1 (ko) 근사조합장치, 근사조합방법, 프로그램 및 기록매체
JP5522017B2 (ja) 情報処理装置、情報処理装置の制御方法、及びコンピュータプログラム
KR102531507B1 (ko) 정보 출력 방법, 장치, 기기 및 저장 매체
JP2009211599A (ja) マッピング定義作成システムおよびマッピング定義作成プログラム
JP2019121164A (ja) 文書作成装置、文書作成方法、データベース構築装置、データベース構築方法、およびプログラム
JP7275816B2 (ja) 情報処理装置及びプログラム
JP4416644B2 (ja) 予測機能付き文字処理装置、方法、記録媒体およびプログラム
JP6753190B2 (ja) 文書検索装置及びプログラム
JP5428316B2 (ja) 識別子短縮表示プログラム,識別子短縮表示装置および識別子短縮表示方法
JP6805927B2 (ja) インデックス生成プログラム、データ検索プログラム、インデックス生成装置、データ検索装置、インデックス生成方法、及びデータ検索方法
JP5771971B2 (ja) 情報処理装置、情報処理方法、及びコンピュータプログラム
JP4628258B2 (ja) グラフ検索装置
JP7083473B2 (ja) 入力支援装置
KR20230124420A (ko) 번역된 콘텐츠의 편집 인터페이스 제공 방법 및 컴퓨터 프로그램
JP5160120B2 (ja) 情報検索装置、情報検索方法及び情報検索プログラム
JP5481095B2 (ja) 文字列入力装置、文字列入力方法、およびプログラム
JP6511874B2 (ja) コンピュータプログラム、検索装置及び検索方法
JP2005092688A (ja) 検索システム、検索プログラム及び記録媒体
JP2005115753A (ja) 検索結果処理装置、検索結果処理方法、検索結果処理プログラム、記録媒体及び検索結果処理システム
JP4057166B2 (ja) 文字列検索装置および方法ならびに文字列検索プログラムを記録したコンピュータで読取可能な記録媒体
JP5481094B2 (ja) 文字列入力装置、文字列入力方法、および、プログラム

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130226

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130528

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20130531

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130531

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130726

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130820

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131009

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140324

R150 Certificate of patent or registration of utility model

Ref document number: 5522017

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313115

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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