JPH10177582A - 最長一致検索方法及び装置 - Google Patents
最長一致検索方法及び装置Info
- Publication number
- JPH10177582A JPH10177582A JP8338666A JP33866696A JPH10177582A JP H10177582 A JPH10177582 A JP H10177582A JP 8338666 A JP8338666 A JP 8338666A JP 33866696 A JP33866696 A JP 33866696A JP H10177582 A JPH10177582 A JP H10177582A
- Authority
- JP
- Japan
- Prior art keywords
- record
- search
- longest match
- key
- longest
- 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.)
- Pending
Links
Landscapes
- Machine Translation (AREA)
- Document Processing Apparatus (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
(57)【要約】
【課題】 自然言語処理における単語辞書等の最長一致
検索を高速に実現することが可能であり、高速で効率的
な最長一致検索を実現することが可能な最長一致検索方
法及び装置を提供する。 【解決手段】 本発明は、レコード群をキー項目で昇順
にソートし、任意のレコードより前で該レコードのキー
項目と最長で一致するレコードを指すレコード番号をポ
インタとしてレコード毎に設定し、レコードからなるレ
コード群中の検索キーワードの並びの位置を探索し、探
索した位置のレコード中のキーと検索キーワードの長さ
分について照合し、一致した場合には、該レコードを最
長一致解とし、一致しない場合には、該レコードに設定
されているポインタにより次候補のレコードを検索す
る。
検索を高速に実現することが可能であり、高速で効率的
な最長一致検索を実現することが可能な最長一致検索方
法及び装置を提供する。 【解決手段】 本発明は、レコード群をキー項目で昇順
にソートし、任意のレコードより前で該レコードのキー
項目と最長で一致するレコードを指すレコード番号をポ
インタとしてレコード毎に設定し、レコードからなるレ
コード群中の検索キーワードの並びの位置を探索し、探
索した位置のレコード中のキーと検索キーワードの長さ
分について照合し、一致した場合には、該レコードを最
長一致解とし、一致しない場合には、該レコードに設定
されているポインタにより次候補のレコードを検索す
る。
Description
【0001】
【発明の属する技術分野】本発明は、最長一致検索方法
及び装置に係り、特に、自然言語処理の形態素解析など
で、頻繁に使用される単語辞書の検索に関するものであ
り、入力された検索キーワードに最長で一致するキーを
もつレコードを検索したり、検索キーワードの先頭か
ら、辞書にあるレコードを検索する場合に利用すること
が可能な最長一致検索方法及び装置に関する。
及び装置に係り、特に、自然言語処理の形態素解析など
で、頻繁に使用される単語辞書の検索に関するものであ
り、入力された検索キーワードに最長で一致するキーを
もつレコードを検索したり、検索キーワードの先頭か
ら、辞書にあるレコードを検索する場合に利用すること
が可能な最長一致検索方法及び装置に関する。
【0002】
【従来の技術】従来、最長一致検索を実現するには、シ
ーケンシャル・サーチ方式やトライ方式、バイナリ・サ
ーチ方式等がある。シーケンシャル・サーチ方式は、キ
ー項目を含む表のデータを先頭から順に探索する方法で
ある。
ーケンシャル・サーチ方式やトライ方式、バイナリ・サ
ーチ方式等がある。シーケンシャル・サーチ方式は、キ
ー項目を含む表のデータを先頭から順に探索する方法で
ある。
【0003】トライ方式は、文字列の長さをkとすると
O(k)の計算量で探索、挿入等の操作が可能である。
バイナリ・サーチ方式は、一つの群の項目をある基準で
2つに分け、検索対象が含まれる方を選択する方式であ
り、データがソートされている時に有効な探索法であ
り、計算量は、O(log n)である。
O(k)の計算量で探索、挿入等の操作が可能である。
バイナリ・サーチ方式は、一つの群の項目をある基準で
2つに分け、検索対象が含まれる方を選択する方式であ
り、データがソートされている時に有効な探索法であ
り、計算量は、O(log n)である。
【0004】
【発明が解決しようとする課題】しかしながら、上記従
来の自然言語処理で頻繁に用いられている単語辞書等の
最長一致検索を高速に行うには、以下のような問題があ
る。上記従来のシーケンシャル・サーチ方式は、表の大
きさがnの場合、目的のデータが終端にある場合には、
サーチをn回行うことになる。サーチの平均オーダはO
((n+1)/2)となり、データ量が多い場合には、
極端に処理量が多くなるという問題がある。
来の自然言語処理で頻繁に用いられている単語辞書等の
最長一致検索を高速に行うには、以下のような問題があ
る。上記従来のシーケンシャル・サーチ方式は、表の大
きさがnの場合、目的のデータが終端にある場合には、
サーチをn回行うことになる。サーチの平均オーダはO
((n+1)/2)となり、データ量が多い場合には、
極端に処理量が多くなるという問題がある。
【0005】また、上記従来のトライ方式では、単語辞
書の検索には有効であるが、ノード間のリンク等、管理
が複雑で、記憶領域の無駄が大きい。また、データベー
ス等で頻繁に使うテーブル(表)と異なる管理が必要と
なり、レコード単位の管理には不向きである。
書の検索には有効であるが、ノード間のリンク等、管理
が複雑で、記憶領域の無駄が大きい。また、データベー
ス等で頻繁に使うテーブル(表)と異なる管理が必要と
なり、レコード単位の管理には不向きである。
【0006】また、上記従来のバイナリ・サーチ方式で
は、キーワードの前方一致する検索に有効であり、辞書
メンテが容易で高速に処理を行うことが可能であるが、
この方式のみでは、最長一致検索を実現できないという
問題がある。本発明は、上記の点に鑑みなされたもの
で、上記従来の問題点を解決し、自然言語処理における
単語辞書等の最長一致検索を高速に実現することが可能
であり、高速で効率的な最長一致検索を実現することが
可能な最長一致検索方法及び装置を提供することを目的
とする。
は、キーワードの前方一致する検索に有効であり、辞書
メンテが容易で高速に処理を行うことが可能であるが、
この方式のみでは、最長一致検索を実現できないという
問題がある。本発明は、上記の点に鑑みなされたもの
で、上記従来の問題点を解決し、自然言語処理における
単語辞書等の最長一致検索を高速に実現することが可能
であり、高速で効率的な最長一致検索を実現することが
可能な最長一致検索方法及び装置を提供することを目的
とする。
【0007】更なる本発明の目的は、単語辞書の検索の
ようなバックトラックにより候補を検索する必要がある
場合でも、ポインタを管理するだけで記憶容量も少な
く、辞書の検索回数も少なくすることが可能な最長一致
検索方法及び装置を提供することである。
ようなバックトラックにより候補を検索する必要がある
場合でも、ポインタを管理するだけで記憶容量も少な
く、辞書の検索回数も少なくすることが可能な最長一致
検索方法及び装置を提供することである。
【0008】
【課題を解決するための手段】図1は、本発明の原理を
説明するための図である。本発明は、可変長のキー項目
を有するレコード群から、任意の検索キーワードで最長
で一致するキーを有するレコードを検索する最長一致検
索方法において、レコード群をキー項目で昇順にソート
し(ステップ1)、任意のレコードより前で該レコード
のキー項目と最長で一致するレコードを指すレコード番
号をポインタとしてレコード毎に設定し(ステップ
2)、レコードからなるレコード群中の検索キーワード
の並びの位置を探索し(ステップ3)、探索した位置の
レコード中のキーと検索キーワードの長さ分について照
合し(ステップ4)、一致した場合には、該レコードを
最長一致解とし(ステップ5)、一致しない場合には、
該レコードに設定されているポインタにより次候補のレ
コードを検索する(ステップ6)。
説明するための図である。本発明は、可変長のキー項目
を有するレコード群から、任意の検索キーワードで最長
で一致するキーを有するレコードを検索する最長一致検
索方法において、レコード群をキー項目で昇順にソート
し(ステップ1)、任意のレコードより前で該レコード
のキー項目と最長で一致するレコードを指すレコード番
号をポインタとしてレコード毎に設定し(ステップ
2)、レコードからなるレコード群中の検索キーワード
の並びの位置を探索し(ステップ3)、探索した位置の
レコード中のキーと検索キーワードの長さ分について照
合し(ステップ4)、一致した場合には、該レコードを
最長一致解とし(ステップ5)、一致しない場合には、
該レコードに設定されているポインタにより次候補のレ
コードを検索する(ステップ6)。
【0009】また、本発明は、レコード群中の検索キー
ワードの並びの位置を探索する際に、バイナリ・サーチ
を用いる。また、本発明は、レコード中に設定されるポ
インタを、該レコードからの相対番号とする。
ワードの並びの位置を探索する際に、バイナリ・サーチ
を用いる。また、本発明は、レコード中に設定されるポ
インタを、該レコードからの相対番号とする。
【0010】図2は、本発明の原理構成図である。本発
明は、可変長のキー項目を有するレコード群から、任意
の検索キーワードで最長で一致するキーを有するレコー
ドを検索する最長一致検索装置であって、各レコードを
キー項目で昇順にソートし、各レコード毎に、当該レコ
ードより前で該レコードのキーと最長で一致するレコー
ドを指すレコード番号をポインタとして設定されたレコ
ード群10と、レコード群10中のキー項目の並びの位
置を探索し、最長一致候補のレコードを検索するレコー
ド位置検索手段20と、検索キーワードとレコード群の
レコード中のキー項目の長さ分を照合する最長一致照合
手段30と、レコードのポインタを用いて次候補のレコ
ードを検索する次候補検索手段40とを有する。
明は、可変長のキー項目を有するレコード群から、任意
の検索キーワードで最長で一致するキーを有するレコー
ドを検索する最長一致検索装置であって、各レコードを
キー項目で昇順にソートし、各レコード毎に、当該レコ
ードより前で該レコードのキーと最長で一致するレコー
ドを指すレコード番号をポインタとして設定されたレコ
ード群10と、レコード群10中のキー項目の並びの位
置を探索し、最長一致候補のレコードを検索するレコー
ド位置検索手段20と、検索キーワードとレコード群の
レコード中のキー項目の長さ分を照合する最長一致照合
手段30と、レコードのポインタを用いて次候補のレコ
ードを検索する次候補検索手段40とを有する。
【0011】また、上記のレコード位置検索手段20
は、バイナリ・サーチを用いる。また、上記のレコード
群のポインタは、レコード群のレコードからの相対番号
とする。上記のレコード位置検索手段では、バイナリ・
サーチを使用することにより、入力されたキーワードの
並びの位置と最長一致候補のレコードを検索し、最長一
致照合手段では、検索したレコードのキー値を検索キー
ワードを当該レコードのキー長分照合して一致するかを
照合する。一般に、バイナリ・サーチでは、検索キーワ
ードとレコードのキーが最長で一致するレコードが得ら
れる保証はない。しかし、本発明では、最初の文字とレ
コードのキー項目の最初の文字が一致していれば、ポイ
ンタを辿ることにより、必ず最長一致レコードに到達で
きる。
は、バイナリ・サーチを用いる。また、上記のレコード
群のポインタは、レコード群のレコードからの相対番号
とする。上記のレコード位置検索手段では、バイナリ・
サーチを使用することにより、入力されたキーワードの
並びの位置と最長一致候補のレコードを検索し、最長一
致照合手段では、検索したレコードのキー値を検索キー
ワードを当該レコードのキー長分照合して一致するかを
照合する。一般に、バイナリ・サーチでは、検索キーワ
ードとレコードのキーが最長で一致するレコードが得ら
れる保証はない。しかし、本発明では、最初の文字とレ
コードのキー項目の最初の文字が一致していれば、ポイ
ンタを辿ることにより、必ず最長一致レコードに到達で
きる。
【0012】従って、次候補検索手段により、ポインタ
に基づいて次候補となるレコードを検索し、最長一致照
合手段において最長一致照合することで、キーワードに
最長一致するレコードを検索することが可能となる。ポ
インタを用いた次候補検索手段により最大でも文字列の
長さのオーダの検索で実現できる。
に基づいて次候補となるレコードを検索し、最長一致照
合手段において最長一致照合することで、キーワードに
最長一致するレコードを検索することが可能となる。ポ
インタを用いた次候補検索手段により最大でも文字列の
長さのオーダの検索で実現できる。
【0013】また、自然言語処理の形態素解析における
単語辞書の検索では、「あおき」「あお」「あ」等のよ
うに、最長一致候補のみでなく、次候補に最長で一致す
る単語を取り出すことが必要になる。本発明では、レコ
ード群に設定されたポインタは、次候補と連結している
ので、検索処理なしで、次候補を取得できる。
単語辞書の検索では、「あおき」「あお」「あ」等のよ
うに、最長一致候補のみでなく、次候補に最長で一致す
る単語を取り出すことが必要になる。本発明では、レコ
ード群に設定されたポインタは、次候補と連結している
ので、検索処理なしで、次候補を取得できる。
【0014】
【発明の実施の形態】図3は、本発明の最長一致検索装
置の構成を示す。同図に示す最長一致検索装置は、レコ
ード群を格納するスタックを有する記憶部10、レコー
ド位置検索部20、最長一致照合部30、次候補検索部
40、キーワード入力部50及び出力部60から構成さ
れる。
置の構成を示す。同図に示す最長一致検索装置は、レコ
ード群を格納するスタックを有する記憶部10、レコー
ド位置検索部20、最長一致照合部30、次候補検索部
40、キーワード入力部50及び出力部60から構成さ
れる。
【0015】記憶部10は、図4に示すように、レコー
ド番号、キー項目、キー長、次ポインタからなるレコー
ドをスタックに格納しており、各レコードは、キー項目
で昇順にソートされている。記憶部10に格納される各
レコードの次ポインタは、図5に示すように、元辞書デ
ータが入力されると(ステップ10)、当該元辞書デー
タをキー項目で昇順(50音順・キー長)ソートし(ス
テップ11)、レコード毎に、当該レコードより以前に
位置し、当該レコードのキー項目と最長で一致するレコ
ードを指すレコード番号をポインタとして設定し(ステ
ップ12)、生成辞書データ、つまり、ソート済かつ次
ポインタが設定されたレコード群が生成される(ステッ
プ13)。
ド番号、キー項目、キー長、次ポインタからなるレコー
ドをスタックに格納しており、各レコードは、キー項目
で昇順にソートされている。記憶部10に格納される各
レコードの次ポインタは、図5に示すように、元辞書デ
ータが入力されると(ステップ10)、当該元辞書デー
タをキー項目で昇順(50音順・キー長)ソートし(ス
テップ11)、レコード毎に、当該レコードより以前に
位置し、当該レコードのキー項目と最長で一致するレコ
ードを指すレコード番号をポインタとして設定し(ステ
ップ12)、生成辞書データ、つまり、ソート済かつ次
ポインタが設定されたレコード群が生成される(ステッ
プ13)。
【0016】レコード位置検索部20は、入力されたキ
ーワードに対応する記憶部10内のレコード群のキー項
目の位置を探索し、最長一致候補となるレコードを検索
する。最長一致照合部30は、探索されたキー項目を有
するレコードのキーと入力されたキーワードの長さにつ
いて照合し、一致した場合には、当該レコードを最長一
致解として出力部60に転送し、一方、一致しない場合
には、次候補検索部40に制御を移す。
ーワードに対応する記憶部10内のレコード群のキー項
目の位置を探索し、最長一致候補となるレコードを検索
する。最長一致照合部30は、探索されたキー項目を有
するレコードのキーと入力されたキーワードの長さにつ
いて照合し、一致した場合には、当該レコードを最長一
致解として出力部60に転送し、一方、一致しない場合
には、次候補検索部40に制御を移す。
【0017】次候補検索部40は、最長一致照合部30
において一致しなかった当該レコードの次ポインタによ
り次候補のレコードを検索し、再度検索されたレコード
の情報を最長一致照合部30に転送する。キーワード入
力部50は、検索キーワードの入力を受け付ける。
において一致しなかった当該レコードの次ポインタによ
り次候補のレコードを検索し、再度検索されたレコード
の情報を最長一致照合部30に転送する。キーワード入
力部50は、検索キーワードの入力を受け付ける。
【0018】出力部は60は、最長一致照合部30にお
いて最長一致した最長一致解を検索結果として出力す
る。次に、本発明の概要動作を説明する。図6は、本発
明の最長一致検索の概要動作を示すフローチャートであ
る。
いて最長一致した最長一致解を検索結果として出力す
る。次に、本発明の概要動作を説明する。図6は、本発
明の最長一致検索の概要動作を示すフローチャートであ
る。
【0019】ステップ101) まず、キーワード入力
部50から検索キーワードが入力される。 ステップ102) レコード位置検索部20は、入力さ
れた検索キーワードについてバイナリ・サーチを行い、
検索キーワードの並びの位置を探索し、最長一致候補の
レコードを記憶部10のレコード群から取り出す。
部50から検索キーワードが入力される。 ステップ102) レコード位置検索部20は、入力さ
れた検索キーワードについてバイナリ・サーチを行い、
検索キーワードの並びの位置を探索し、最長一致候補の
レコードを記憶部10のレコード群から取り出す。
【0020】ステップ103) 最長一致照合部30
は、検索キーワードとレコード位置検索部20により取
得した最長一致候補のレコードのキー項目の長さ分を比
較する。例えば、検索キーワードがn文字、取得したレ
コードのキー項目がm文字(但し、n≧m)である場合
には、m文字分について比較する。
は、検索キーワードとレコード位置検索部20により取
得した最長一致候補のレコードのキー項目の長さ分を比
較する。例えば、検索キーワードがn文字、取得したレ
コードのキー項目がm文字(但し、n≧m)である場合
には、m文字分について比較する。
【0021】ステップ104) 比較した結果、一致し
た場合には、ステップ105に移行し、不一致の場合に
はステップ106に移行する。 ステップ105) 当該レコードのキー項目を最長一致
解として出力部60より出力する。
た場合には、ステップ105に移行し、不一致の場合に
はステップ106に移行する。 ステップ105) 当該レコードのキー項目を最長一致
解として出力部60より出力する。
【0022】ステップ106) 次候補検索部40は、
取得したレコードと検索キーワードの先頭の文字が一致
するかを判定し、一致する場合には、ステップ107に
移行し、不一致の場合には、解なしの旨を出力部60か
ら出力する。 ステップ107) 次候補検索部40は、取得したレコ
ードのポインタを参照して次ポインタを取得し、その情
報を最長一致照合部30に転送し、ステップ103に移
行する。
取得したレコードと検索キーワードの先頭の文字が一致
するかを判定し、一致する場合には、ステップ107に
移行し、不一致の場合には、解なしの旨を出力部60か
ら出力する。 ステップ107) 次候補検索部40は、取得したレコ
ードのポインタを参照して次ポインタを取得し、その情
報を最長一致照合部30に転送し、ステップ103に移
行する。
【0023】
【実施例】以下、図面と共に本発明の実施例を説明す
る。 [第1の実施例]最初に記憶部10に格納されるレコー
ド群の次ポインタの設定方法について説明する。
る。 [第1の実施例]最初に記憶部10に格納されるレコー
ド群の次ポインタの設定方法について説明する。
【0024】記憶部10に格納されるレコード群を図7
を用いて説明する。同図において、レコードは、キー項
目の昇順にソートされ、キー値の長さと次ポインタが設
定されている。例えば、記憶部10のレコード番号6
「アオキガオカ」のスタックには、レコード番号6以前
のレコード番号5のキー「アオキ」と先頭からキー値の
長さ3文字分「アオキガオカ」と一致するので、次ポイ
ンタとして、レコード番号5を指すポインタ“5”が格
納され、「アオキ」のキー値を持つレコード番号5のス
タックには、レコード番号3の「アオ」が最長で一致す
るので、ポインタとして“3”が設定される。
を用いて説明する。同図において、レコードは、キー項
目の昇順にソートされ、キー値の長さと次ポインタが設
定されている。例えば、記憶部10のレコード番号6
「アオキガオカ」のスタックには、レコード番号6以前
のレコード番号5のキー「アオキ」と先頭からキー値の
長さ3文字分「アオキガオカ」と一致するので、次ポイ
ンタとして、レコード番号5を指すポインタ“5”が格
納され、「アオキ」のキー値を持つレコード番号5のス
タックには、レコード番号3の「アオ」が最長で一致す
るので、ポインタとして“3”が設定される。
【0025】次に、元辞書データから記憶部10に格納
される生成辞書データを生成する際の動作を説明する。
図8は、本発明の第1の実施例のレコード群の次ポイン
タの設定方法を説明するための図である。
される生成辞書データを生成する際の動作を説明する。
図8は、本発明の第1の実施例のレコード群の次ポイン
タの設定方法を説明するための図である。
【0026】同図に示す、レコード番号、元辞書データ
キー項目及びキー長からなる元辞書データが入力される
と、元辞書データのキー項目について50音順、キー長
によりソートする。この例では、先頭には、50音の先
頭であり、キー長が最も短い「ア」が生成辞書データの
先頭に設定され、その次ポインタは“0”となる。次に
50音順には「アイオイ」のレコードが位置し、当該レ
コードより以前のレコードの「ア」と先頭の1文字が一
致するので、次ポインタは“1”となる。このような処
理を繰り返すことにより、生成辞書データが構成され
る。
キー項目及びキー長からなる元辞書データが入力される
と、元辞書データのキー項目について50音順、キー長
によりソートする。この例では、先頭には、50音の先
頭であり、キー長が最も短い「ア」が生成辞書データの
先頭に設定され、その次ポインタは“0”となる。次に
50音順には「アイオイ」のレコードが位置し、当該レ
コードより以前のレコードの「ア」と先頭の1文字が一
致するので、次ポインタは“1”となる。このような処
理を繰り返すことにより、生成辞書データが構成され
る。
【0027】このような手順を図9に示すフローチャー
トに沿って具体的に説明する。まず、最初の処理対象レ
コード(レコード番号1)を取り出す(ステップ20
1)。取り出されたレコードは、キー項目に「ア」を持
ち、記憶部10のスタックトップを参照する(ステップ
202,203)。ここで、スタックが空であるので
(ステップ204)、次ポインタに“0”を設定する
(ステップ209)。該当レコードのキーとレコード番
号“1”が記憶部10のスタックに格納され(ステップ
210)、図8に示すレコード“1”のように次ポイン
タ“0”が記憶部10上に格納される(ステップ21
1)。この状態における記憶部10のスタックは、図1
0(a)の状態になっている。
トに沿って具体的に説明する。まず、最初の処理対象レ
コード(レコード番号1)を取り出す(ステップ20
1)。取り出されたレコードは、キー項目に「ア」を持
ち、記憶部10のスタックトップを参照する(ステップ
202,203)。ここで、スタックが空であるので
(ステップ204)、次ポインタに“0”を設定する
(ステップ209)。該当レコードのキーとレコード番
号“1”が記憶部10のスタックに格納され(ステップ
210)、図8に示すレコード“1”のように次ポイン
タ“0”が記憶部10上に格納される(ステップ21
1)。この状態における記憶部10のスタックは、図1
0(a)の状態になっている。
【0028】次に、次のレコード(キー項目の値「アイ
オイ」)が取得されると(ステップ201)、現在の状
態では、記憶部10のスタックは空ではないので(ステ
ップ204,No)、スタックの「ア」と「アイオイ」
をスタックのキー長1文字で比較する(ステップ20
5)。その結果、一致するので(ステップ206,Ye
s)、レコード“2”の次のポインタとして、一致した
記憶部10のスタックに「ア」を持つレコード番号
“1”を設定して(ステップ207)、「アイオイ」の
レコードを記憶部10のスタックに積む(ステップ21
0)。これにより、記憶部10にレコード“2”が出力
される(ステップ211)。この状態の記憶部10のス
タックは、図10(b)の状態になっている。
オイ」)が取得されると(ステップ201)、現在の状
態では、記憶部10のスタックは空ではないので(ステ
ップ204,No)、スタックの「ア」と「アイオイ」
をスタックのキー長1文字で比較する(ステップ20
5)。その結果、一致するので(ステップ206,Ye
s)、レコード“2”の次のポインタとして、一致した
記憶部10のスタックに「ア」を持つレコード番号
“1”を設定して(ステップ207)、「アイオイ」の
レコードを記憶部10のスタックに積む(ステップ21
0)。これにより、記憶部10にレコード“2”が出力
される(ステップ211)。この状態の記憶部10のス
タックは、図10(b)の状態になっている。
【0029】次に、「アオ」のレコードが取得され(ス
テップ201)、記憶部10のスタックトップの「アイ
オイ」と「アオ」がスタックのキー長4文字分の比較が
行われ(ステップ205)、この場合、不一致となり、
当該「アイオイ」のレコードが記憶部10のスタックか
ら除かれ(ステップ208)、ステップ203に移行
し、「ア」のキーを参照する。次に、「ア」と「アオ」
が1文字分比較され(ステップ205)、一致するた
め、「アオ」のレコードにキー項目の値「ア」のレコー
ド番号が次ポインタとして設定され(ステップ20
7)、「アオ」のレコードが記憶部10のスタックに積
まれる(ステップ210)。さらに、生成辞書データの
レコード“3”が出力される(ステップ211)。この
状態の記憶部10のスタックは図10(c)の状態とな
る。
テップ201)、記憶部10のスタックトップの「アイ
オイ」と「アオ」がスタックのキー長4文字分の比較が
行われ(ステップ205)、この場合、不一致となり、
当該「アイオイ」のレコードが記憶部10のスタックか
ら除かれ(ステップ208)、ステップ203に移行
し、「ア」のキーを参照する。次に、「ア」と「アオ」
が1文字分比較され(ステップ205)、一致するた
め、「アオ」のレコードにキー項目の値「ア」のレコー
ド番号が次ポインタとして設定され(ステップ20
7)、「アオ」のレコードが記憶部10のスタックに積
まれる(ステップ210)。さらに、生成辞書データの
レコード“3”が出力される(ステップ211)。この
状態の記憶部10のスタックは図10(c)の状態とな
る。
【0030】上記のように、図8に示す生成辞書データ
のように次ポインタが設定される。次に、本実施例にお
ける最長一致検索の処理を具体的に説明する。図11
は、本発明の第1の実施例の最長一致検索処理のフロー
チャートである。同図のフローチャートは、図12に示
す記憶部10の生成辞書データから「アオキガオカシ
タ」と最長一致するレコードを検索する場合を示す。
のように次ポインタが設定される。次に、本実施例にお
ける最長一致検索の処理を具体的に説明する。図11
は、本発明の第1の実施例の最長一致検索処理のフロー
チャートである。同図のフローチャートは、図12に示
す記憶部10の生成辞書データから「アオキガオカシ
タ」と最長一致するレコードを検索する場合を示す。
【0031】まず、レコード位置検索部20は、入力部
50から入力されたキーワード『アオキガオカシタ』に
対する並びの位置を検索する。記憶部10のレコード群
は、ソートされているので、検索アルゴリズムとして
は、高速なバイナリサーチアルゴリズムが適用でき、
「アオキガオカ」と「アオバ」の間に、「アオキガオカ
シタ」が位置付けられる(ステップ301)。
50から入力されたキーワード『アオキガオカシタ』に
対する並びの位置を検索する。記憶部10のレコード群
は、ソートされているので、検索アルゴリズムとして
は、高速なバイナリサーチアルゴリズムが適用でき、
「アオキガオカ」と「アオバ」の間に、「アオキガオカ
シタ」が位置付けられる(ステップ301)。
【0032】「アオキガオカシタ」に、辞書データのキ
ー長で一致するレコードは、ソート条件から、「アオ
バ」以降には存在しない。従って、「アオキガオカ」が
最長一致候補のレコードとなる。次に、最長一致照合部
30により、「アオキガオカ」と「アオキガオカシタ」
を記憶部10の「アオキガオカ」のキー長6文字で比較
すると(ステップ302)、一致が得られる(ステップ
303)。これから、「アオキガオカシタ」と最長で一
致する「アオキガオカ」を有するレコードが検索され
た。
ー長で一致するレコードは、ソート条件から、「アオ
バ」以降には存在しない。従って、「アオキガオカ」が
最長一致候補のレコードとなる。次に、最長一致照合部
30により、「アオキガオカ」と「アオキガオカシタ」
を記憶部10の「アオキガオカ」のキー長6文字で比較
すると(ステップ302)、一致が得られる(ステップ
303)。これから、「アオキガオカシタ」と最長で一
致する「アオキガオカ」を有するレコードが検索され
た。
【0033】次候補検索部40において、次のポインタ
が「アオキ」を指していることを検索する(ステップ3
04)。順次、「アオキ」の次のポインタは「アオ」を
指すというように、入力されたキーワード「アオキガオ
カシタ」を4文字、3文字、2文字で一致する次の候補
を、次候補検索部40でポインタが指すレコードを読み
出すことにより検索なしで取得できる。
が「アオキ」を指していることを検索する(ステップ3
04)。順次、「アオキ」の次のポインタは「アオ」を
指すというように、入力されたキーワード「アオキガオ
カシタ」を4文字、3文字、2文字で一致する次の候補
を、次候補検索部40でポインタが指すレコードを読み
出すことにより検索なしで取得できる。
【0034】次に、図13に示す具体例に基づいて最長
一致検索の具体的な例を説明する。図13の例は、キー
ワード入力部50からキーワード「アンドウ」が入力さ
れた場合の例である。レコード位置検索部20は、図1
2の場合と同様に、「アワジ」と「イアイ」の間に「ア
ンドウ」が位置付けられる。「イアイ」以降には一致す
るものがないので、「アワジ」が候補として取得され
る。
一致検索の具体的な例を説明する。図13の例は、キー
ワード入力部50からキーワード「アンドウ」が入力さ
れた場合の例である。レコード位置検索部20は、図1
2の場合と同様に、「アワジ」と「イアイ」の間に「ア
ンドウ」が位置付けられる。「イアイ」以降には一致す
るものがないので、「アワジ」が候補として取得され
る。
【0035】最長一致照合部30で、「アワジ」と「ア
ンドウ」を「アワジ」のキー長3文字で比較すると、不
一致となり、「アワジ」のレコードは最長一致解ではな
い。先頭の1文字は、両者との「ア」であるので、次候
補検索部40で「アワジ」の次ポインタを指すレコード
(レコード番号1)を取得する。最長一致照合部30
で、キーワード「アンドウ」と次候補の「ア」とを1文
字で比較することで、一致が得られる。従って、「アン
ドウ」と最長一致するレコードとして「ア」を有するレ
コードが検索される。「ア」のレコードの次のポインタ
は“0”であり、これ以上最長一致するレコードがない
ことを示している。
ンドウ」を「アワジ」のキー長3文字で比較すると、不
一致となり、「アワジ」のレコードは最長一致解ではな
い。先頭の1文字は、両者との「ア」であるので、次候
補検索部40で「アワジ」の次ポインタを指すレコード
(レコード番号1)を取得する。最長一致照合部30
で、キーワード「アンドウ」と次候補の「ア」とを1文
字で比較することで、一致が得られる。従って、「アン
ドウ」と最長一致するレコードとして「ア」を有するレ
コードが検索される。「ア」のレコードの次のポインタ
は“0”であり、これ以上最長一致するレコードがない
ことを示している。
【0036】更に、図14に示す具体例に基づいて最長
一致検索の具体的な例を説明する。図14は、キーワー
ド「イア」が入力された場合の例である。まず、レコー
ド位置検索部20により、「アワジ」と「イアイ」の間
に「イア」が位置づけられる。「イアイ」以降には一致
するものがないので、「アワジ」が候補として取得され
る。最長一致照合部30で、「アワジ」と「イア」を
「アワジ」のキー長3文字で比較すると不一致となり、
「アワジ」のレコードは、最長一致解とはならない。先
頭の1文字が異なるので、「アワジ」の次のポインタで
次候補を取得しても最長一致解は存在しないことにな
る。これにより、入力されたキーワード「イア」と最長
一致するレコードがないことがわかる。
一致検索の具体的な例を説明する。図14は、キーワー
ド「イア」が入力された場合の例である。まず、レコー
ド位置検索部20により、「アワジ」と「イアイ」の間
に「イア」が位置づけられる。「イアイ」以降には一致
するものがないので、「アワジ」が候補として取得され
る。最長一致照合部30で、「アワジ」と「イア」を
「アワジ」のキー長3文字で比較すると不一致となり、
「アワジ」のレコードは、最長一致解とはならない。先
頭の1文字が異なるので、「アワジ」の次のポインタで
次候補を取得しても最長一致解は存在しないことにな
る。これにより、入力されたキーワード「イア」と最長
一致するレコードがないことがわかる。
【0037】更に、図15に示す具体例に基づいて最長
一致検索の具体的な例を説明する。図15は、キーワー
ド「アカサカ」が入力された例である。レコード位置検
索部20は、「アカサカ」と完全一致するレコードを検
索する。重複キーを許すレコードでは、同一キーの最後
を見つけてレコード(レコード番号“12”)の「アカ
サカ」を候補とする。最長一致照合部30で、完全一致
の「アカサカ」のレコード(レコード番号“12”)が
得られる。次候補検索部40における次候補の検索は、
前述の図12、図13と同様であるので、説明を省略す
る。
一致検索の具体的な例を説明する。図15は、キーワー
ド「アカサカ」が入力された例である。レコード位置検
索部20は、「アカサカ」と完全一致するレコードを検
索する。重複キーを許すレコードでは、同一キーの最後
を見つけてレコード(レコード番号“12”)の「アカ
サカ」を候補とする。最長一致照合部30で、完全一致
の「アカサカ」のレコード(レコード番号“12”)が
得られる。次候補検索部40における次候補の検索は、
前述の図12、図13と同様であるので、説明を省略す
る。
【0038】[第2の実施例]次に、第2の実施例とし
てポインタとして相対レコード番号を用いる例を説明す
る。図16は、本発明の第2の実施例の記憶部のレコー
ド群の例であり、前述の第1の実施例でポインタとして
使用していた欄に相対レコード番号を設定した例であ
る。
てポインタとして相対レコード番号を用いる例を説明す
る。図16は、本発明の第2の実施例の記憶部のレコー
ド群の例であり、前述の第1の実施例でポインタとして
使用していた欄に相対レコード番号を設定した例であ
る。
【0039】レコードにおいて当該レコードのレコード
番号から相対レコード番号を減算することにより、ポイ
ントしているレコードを取得することが可能である。例
えば、レコード番号“12”のレコードの相対レコード
番号は、“3”であるので、ポイントしているレコード
は、レコード番号“9”となる。
番号から相対レコード番号を減算することにより、ポイ
ントしているレコードを取得することが可能である。例
えば、レコード番号“12”のレコードの相対レコード
番号は、“3”であるので、ポイントしているレコード
は、レコード番号“9”となる。
【0040】このように設定することで、前述の第1の
実施例と同様の最長一致検索を行うことが可能である。
なお、本発明は、上記の実施例に限定されることなく、
特許請求の範囲内で種々変更・応用が可能である。
実施例と同様の最長一致検索を行うことが可能である。
なお、本発明は、上記の実施例に限定されることなく、
特許請求の範囲内で種々変更・応用が可能である。
【0041】
【発明の効果】上述のように本発明の最長一致検索方法
及び装置によれば、自然言語処理における単語辞書等の
最長一致検索を高速に実現することができ、バイナリサ
ーチ方式と次候補を連結するポインタを辞書作成時に設
定することにより、高速で効率的な最長一致検索が可能
となる。
及び装置によれば、自然言語処理における単語辞書等の
最長一致検索を高速に実現することができ、バイナリサ
ーチ方式と次候補を連結するポインタを辞書作成時に設
定することにより、高速で効率的な最長一致検索が可能
となる。
【0042】また、ポインタを設定したことにより、次
候補を管理するため、単語辞書の検索のようなバックト
ラックにより候補を検索する必要がある場合でも、ポイ
ンタを管理するだけで、記憶容量も少なく、辞書の検索
回数も少なくできる。また、ポインタとして相対レコー
ド番号を設定することも可能である。
候補を管理するため、単語辞書の検索のようなバックト
ラックにより候補を検索する必要がある場合でも、ポイ
ンタを管理するだけで、記憶容量も少なく、辞書の検索
回数も少なくできる。また、ポインタとして相対レコー
ド番号を設定することも可能である。
【図1】本発明の原理を説明するための図である。
【図2】本発明の原理構成図である。
【図3】本発明の最長一致検索装置の構成図である。
【図4】本発明の記憶部に格納されるレコード群の構成
を示す図である。
を示す図である。
【図5】本発明の記憶部におけるレコードのポインタ設
定のフローチャートである。
定のフローチャートである。
【図6】本発明の最長一致検索の概要動作のフローチャ
ートである。
ートである。
【図7】本発明の第1の実施例の検索対象レコードの作
成方法を示す図である。
成方法を示す図である。
【図8】本発明の第1の実施例のレコード群の次ポイン
タの設定方法を説明するための図である。
タの設定方法を説明するための図である。
【図9】本発明の第1の実施例の次ポインタの設定動作
のフローチャートである。
のフローチャートである。
【図10】本発明の第1の実施例の記憶部のスタックの
遷移を示す図である。
遷移を示す図である。
【図11】本発明の第1の実施例の最長一致検索処理の
フローチャートである。
フローチャートである。
【図12】本発明の第1の実施例の最長一致検索の第1
の具体例である。
の具体例である。
【図13】本発明の第1の実施例の最長一致検索の第2
の具体例である。
の具体例である。
【図14】本発明の第1の実施例の最長一致検索の第3
の具体例である。
の具体例である。
【図15】本発明の第1の実施例の最長一致検索の第4
の具体例である。
の具体例である。
【図16】本発明の第2の実施例の記憶部のレコード群
の例である。
の例である。
10 検索対象レコード群、記憶部 20 レコード位置検索手段、レコード位置検索部 30 最長一致照合手段、最長一致照合部 40 次候補検索手段、次候補検索部 50 キーワード入力部 60 出力部
Claims (6)
- 【請求項1】 可変長のキー項目を有するレコード群か
ら、任意の検索キーワードで最長で一致するキーを有す
るレコードを検索する最長一致検索方法において、 前記レコード群をキー項目で昇順にソートし、 任意のレコードより前で該レコードのキー項目と最長で
一致するレコードを指すレコード番号をポインタとして
レコード毎に設定し、 前記レコードからなるレコード群中の前記検索キーワー
ドの並びの位置を探索し、 探索した位置のレコード中のキーと前記検索キーワード
の長さ分について照合し、一致した場合には、該レコー
ドを最長一致解とし、一致しない場合には、該レコード
に設定されているポインタにより次候補のレコードを検
索することを特徴とする最長一致検索方法。 - 【請求項2】 前記レコード群中の前記検索キーワード
の並びの位置を探索する際に、バイナリ・サーチを用い
る請求項1記載の最長一致検索方法。 - 【請求項3】 前記レコード中に設定されるポインタ
を、該レコードからの相対番号とする請求項1記載の最
長一致検索方法。 - 【請求項4】 可変長のキー項目を有するレコード群か
ら、任意の検索キーワードで最長で一致するキーを有す
るレコードを検索する最長一致検索装置であって、 各レコードをキー項目で昇順にソートし、各レコード毎
に、当該レコードより前で該レコードのキーと最長で一
致するレコードを指すレコード番号をポインタとして設
定されたレコード群と、 前記レコード群中のキー項目の並びの位置を探索し、最
長一致候補のレコードを検索するレコード位置検索手段
と、 前記検索キーワードと前記レコード群のレコード中のキ
ー項目の長さ分を照合する最長一致照合手段と、 前記最長一致照合手段において、最長一致するレコード
が取得できない場合に、前記レコードのポインタを用い
て次候補のレコードを検索する次候補検索手段とを有す
ることを特徴とする最長一致検索装置。 - 【請求項5】 前記レコード位置検索手段は、 バイナリ・サーチを用いる請求項4記載の最長一致検索
装置。 - 【請求項6】 前記レコード群の各々のポインタは、 前記レコード群のレコードからの相対番号とする請求項
4記載の最長一致検索装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP8338666A JPH10177582A (ja) | 1996-12-18 | 1996-12-18 | 最長一致検索方法及び装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP8338666A JPH10177582A (ja) | 1996-12-18 | 1996-12-18 | 最長一致検索方法及び装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH10177582A true JPH10177582A (ja) | 1998-06-30 |
Family
ID=18320327
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP8338666A Pending JPH10177582A (ja) | 1996-12-18 | 1996-12-18 | 最長一致検索方法及び装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH10177582A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001125907A (ja) * | 1999-10-26 | 2001-05-11 | Nippon Telegr & Teleph Corp <Ntt> | 辞書検索方法、装置、および辞書検索プログラムを記録した記録媒体 |
US6839703B2 (en) | 2000-05-15 | 2005-01-04 | Fujitsu Limited | Information apparatus, table retrieval apparatus, table retrieval method, and recording medium |
WO2009004796A1 (ja) | 2007-07-03 | 2009-01-08 | S.Grants Co., Ltd. | ビット列検索方法及びプログラム |
CN109510904A (zh) * | 2018-12-25 | 2019-03-22 | 携程旅游网络技术(上海)有限公司 | 呼叫中心外呼录音的检测方法及*** |
-
1996
- 1996-12-18 JP JP8338666A patent/JPH10177582A/ja active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001125907A (ja) * | 1999-10-26 | 2001-05-11 | Nippon Telegr & Teleph Corp <Ntt> | 辞書検索方法、装置、および辞書検索プログラムを記録した記録媒体 |
US6839703B2 (en) | 2000-05-15 | 2005-01-04 | Fujitsu Limited | Information apparatus, table retrieval apparatus, table retrieval method, and recording medium |
WO2009004796A1 (ja) | 2007-07-03 | 2009-01-08 | S.Grants Co., Ltd. | ビット列検索方法及びプログラム |
JP2009015530A (ja) * | 2007-07-03 | 2009-01-22 | S Grants Co Ltd | ビット列検索方法及びプログラム |
JP4527753B2 (ja) * | 2007-07-03 | 2010-08-18 | 株式会社エスグランツ | ビット列検索装置、検索方法及びプログラム |
US8145665B2 (en) | 2007-07-03 | 2012-03-27 | S. Grants Co., Ltd. | Bit string search apparatus, search method, and program |
CN109510904A (zh) * | 2018-12-25 | 2019-03-22 | 携程旅游网络技术(上海)有限公司 | 呼叫中心外呼录音的检测方法及*** |
CN109510904B (zh) * | 2018-12-25 | 2020-10-27 | 携程旅游网络技术(上海)有限公司 | 呼叫中心外呼录音的检测方法及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3143079B2 (ja) | 辞書索引作成装置と文書検索装置 | |
Baeza-Yates | Introduction to Data Structures and Algorithms Related to Information Retrieval. | |
US6741985B2 (en) | Document retrieval system and search method using word set and character look-up tables | |
US5721899A (en) | Retrieval apparatus using compressed trie node and retrieval method thereof | |
US5450580A (en) | Data base retrieval system utilizing stored vicinity feature valves | |
US6430557B1 (en) | Identifying a group of words using modified query words obtained from successive suffix relationships | |
JP2001345710A (ja) | データ圧縮装置および方法 | |
JP2000163442A (ja) | 記号辞書作成方法及び記号辞書検索方法 | |
JPH09288676A (ja) | 全文インデックス作成装置および全文データベース検索装置 | |
JPH04205560A (ja) | 情報検索処理方式および検索ファイル作成装置 | |
CN117763077A (zh) | 数据查询方法及装置 | |
JPH10177582A (ja) | 最長一致検索方法及び装置 | |
JPH06282587A (ja) | 文書の自動分類方法及び装置並びに分類用の辞書作成方法及び装置 | |
JP3151730B2 (ja) | データベース検索システム | |
JP2519130B2 (ja) | マルチキ―ワ―ド情報検索処理方式および検索ファイル作成装置 | |
JP2519129B2 (ja) | マルチキ―ワ―ド情報検索処理方式および検索ファイル作成装置 | |
JPH056398A (ja) | 文書登録装置及び文書検索装置 | |
JPH07105237A (ja) | 索引作成方法およびその装置と文書検索装置 | |
JPH06325091A (ja) | 類似度評価型データベース検索装置 | |
EP0649106B1 (en) | Compactly stored word groups | |
JPH04215181A (ja) | 情報検索処理方式および検索ファイル作成装置 | |
JPH0261768A (ja) | 電子辞書装置及び電子辞書検索方法 | |
JP3720060B2 (ja) | 関連ワードを得る方法及びシステム | |
JPH10149367A (ja) | テキスト蓄積検索装置 | |
JP3104893B2 (ja) | 情報検索方式 |