JP2006106896A - データベース登録システム、データベース検索システム、語彙索引登録方法及び異表記同一視検索方法 - Google Patents
データベース登録システム、データベース検索システム、語彙索引登録方法及び異表記同一視検索方法 Download PDFInfo
- Publication number
- JP2006106896A JP2006106896A JP2004289280A JP2004289280A JP2006106896A JP 2006106896 A JP2006106896 A JP 2006106896A JP 2004289280 A JP2004289280 A JP 2004289280A JP 2004289280 A JP2004289280 A JP 2004289280A JP 2006106896 A JP2006106896 A JP 2006106896A
- Authority
- JP
- Japan
- Prior art keywords
- character string
- notation
- hash value
- gram
- database
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】異表記を同一視する場合としない場合の、いずれの検索も効果的に実現することを可能とする
【解決手段】Nグラム分割部121は、データベース10にテキストデータが登録される際に、当該データに含まれる文字列をNグラムに分割する。ハッシュ値変換部122は、分割された各グラムについて、そのグラムを構成する文字列の表記に異表記同一視の対象となり得る複数の表記が存在するものとして、当該複数の表記のいずれの場合にも同一の値となるハッシュ値に変換する。語彙索引登録部123は、分割された各グラムについて、そのグラムを構成する文字列の語彙索引を、ハッシュ値変換部122によって変換されたハッシュ値で特定されるハッシュテーブル103のエントリまたは当該エントリにリンクしたコリジョンチェーン104に登録する。
【選択図】 図1
【解決手段】Nグラム分割部121は、データベース10にテキストデータが登録される際に、当該データに含まれる文字列をNグラムに分割する。ハッシュ値変換部122は、分割された各グラムについて、そのグラムを構成する文字列の表記に異表記同一視の対象となり得る複数の表記が存在するものとして、当該複数の表記のいずれの場合にも同一の値となるハッシュ値に変換する。語彙索引登録部123は、分割された各グラムについて、そのグラムを構成する文字列の語彙索引を、ハッシュ値変換部122によって変換されたハッシュ値で特定されるハッシュテーブル103のエントリまたは当該エントリにリンクしたコリジョンチェーン104に登録する。
【選択図】 図1
Description
本発明は、テキストデータをデータベースに登録するデータベース登録システム及びデータベースに格納されたテキストデータ中の文字列を検索するデータベース検索システムに係り、特に異表記同一視検索に適した語彙索引の登録と、登録された語彙索引を利用した異表記同一視検索に好適な、データベース登録システム、データベース検索システム、語彙索引登録方法及び異表記同一視検索方法に関する。
複数の文書(文書のテキストデータ)が格納されたデータベースから、ユーザの指定する検索条件に合致した文書等を検索するデータベース検索システムが種々開発されている。このデータベースに文書を格納する場合、検索の高速化のために、当該文書中のテキストデータ(文字列)に索引付けがなされるのが一般的である。例えば、テキストデータを細かい語彙に分割し、それらを語彙索引として利用する索引付けの手法は、従来からよく知られた技術である。今、データベース検索システム内に、語彙索引"発明"と、語彙索引"特許"と、語彙索引"提案者"を含む語彙索引集合が存在するものとする。このデータベース検索システムにおいて、「発明」という文字列を検索する際は、まず語彙索引集合の中から語彙索引"発明"を検索する。この語彙索引"発明"には、対応する語彙索引情報がデータベース内のどこに格納されているかを示すポインタ情報が付加されている。語彙索引"発明"のポインタ情報で指定される語彙索引情報は、"発明"という語彙がデータベース内のどこに格納されているかを示す格納位置情報を含む。そこで、この語彙索引情報を参照することで検索処理を実行することができる。また、「特許提案者」のような長い文字列を検索する際は、「特許」と「提案者」のように短い文字列に分割して、それぞれの語彙索引情報を参照する。そのため、「特許提案者」を含むテキストデータをデータベースに格納する際に、「特許提案者」を「特許」と「提案者」とに分割して、それぞれの語彙索引を生成しておくのが一般的である。ここでは、語彙索引集合の中から"特許"と"提案者"とを検索して、それぞれの語彙索引情報を取得し、それらをマージすることにより、文字列"特許提案者"の検索が実行できる。
長い文字列を分割する技術として、主に、予め用意された単語辞書と照らし合わせながら細かい文字列(単語)に分割していく形態素解析技術と、一定の文字数で分割していくNグラム(N-gram)技術との2通りがよく知られている。
以下、単語辞書を必要とせずに、また新しい単語が出現しても分割に失敗することのないNグラム技術を適用した、語彙索引の作成手法について、"patent"という文字列をデータベースに格納する場合の索引付けを例に述べる。まず初めに、この文字列をNグラムに分割する。N=3の場合、グラム分割により"pat","ate","ten","ent","nt","t"の各グラムが得られる。これらの各グラムについて、それぞれハッシュ値を計算し、対応する語彙索引を、そのハッシュ値で特定されるハッシュテーブルのエントリに登録する。ここで語彙索引には、対応する語彙がデータベース内のどこに格納されたかを示す位置情報(データベース内の格納位置の情報)を含む語彙索引情報へのポインタの情報が付加されている。計算されたハッシュ値で特定されるハッシュテーブルのエントリに、当該ハッシュ値の計算の対象となったグラム(文字列)とは異なるグラム(文字列)の語彙索引が既に登録されている場合、即ちハッシュ値が衝突した場合は、重複する語彙索引をリストでつないで管理する。このリストを、コリジョンチェーンと呼ぶ。以上の処理を全てのグラムに対して行い、語彙索引をハッシュテーブルまたはコリジョンチェーンに登録する。上述の"patent"をNグラム分割した場合、"ten"と"ent"の両グラムのハッシュ値が衝突したとする。
次に、語彙索引の集合(ハッシュテーブル及びコリジョンチェーン)を利用した検索処理について述べる。文字列"patent"を検索する場合は、まず当該文字列を分割し、それぞれのハッシュ値を計算する。ここで、登録時は"patent"をNグラム(N=3)分割して、"pat","ate","ten","ent","nt","t"の6つのグラムに区分したが、検索時は"pat"と"ent"とに2分割する。
次に、得られたハッシュ値からハッシュテーブルを参照する。ここでは、"pat"の語彙索引はハッシュテーブルに登録され、"ten"との間でハッシュ値が衝突した"ent"の語彙索引は、コリジョンチェーンにつながれているものとする。このような場合、"pat"の語彙索引はハッシュテーブルから簡単に取得できる。これに対し、"ent"の語彙索引を取得するにはコリジョンチェーンを走査しなければならない。"pat"と"ent"の両グラムについて語彙索引を取得できたなら、対応する語彙索引情報をマージすることにより、文字列"patent"のデータベース内の格納位置を知ることができる。
このように、上記した先行技術(以下、第1の先行技術と称する)において、ハッシュ値が衝突したグラム(語彙)の語彙索引を検索する場合、コリジョンチェーンを走査する必要がある。このため、第1の先行技術において異表記の語彙を同一視して検索する際には、以下に述べるように、ハッシュテーブル参照とコリジョンチェーン走査という処理を多数実施しなければならないという問題がある。ここでは大文字/小文字を同一視して検索する場合を想定するが、上記の問題は、大文字/小文字以外にも全角/半角、ひらがな/カタカナ等、異表記された語彙を同一視しようとする際に生じる。
そこで、第1の先行技術において、文字列"patent"の大文字/小文字(異表記)同一視検索を行う場合について、図7を参照して説明する。まず、図7において矢印A1で示すように、"patent"を"pat"と"ent"の2つのグラムに分割する。次に、図7において矢印A2で示すように、"pat"のハッシュ値を計算する。次に、得られたハッシュ値からハッシュテーブル71及びコリジョンチェーン72を参照し、語彙索引情報を取得する。ここまでの処理は、前述した場合と同様である。ところが、大文字/小文字同一視検索を実施する場合、例えば"pat"に関しては、"paT","PAt","PAT"等についても、図7において矢印A3で示すように、"pat"と同様にハッシュ値を計算して、ハッシュテーブル71及びコリジョンチェーン72の参照を行わなければならない。
アルファベット3文字の文字列で大文字/小文字のみが異なる文字列の組み合わせは全部で8通りある。このため、大文字/小文字を同一視する場合には、ハッシュ値計算からハッシュテーブル参照、コリジョンチェーン走査という処理を8回実施しなければならないことになる。また、ここでは大文字/小文字の同一視についてのみを想定しているが、全角/半角の同一視等とも組み合わせて考えると、前述の処理を繰り返す数が更に飛躍的に増加する。
一方、特許文献1には、大文字/小文字、全角/半角、ひらがな/カタカナ等、異表記された語彙を同一視するのに適した語彙索引(インデックス)の作成と、検索のための技術(以下、第2の先行技術と称する)が記載されている。この第2の先行技術では、異表記同一視の対象となり得る複数の表記に共通のインデックス(語彙索引)が作成され、そのインデックスにリンクしたリーフ(語彙索引情報)の集合が作成される。各リーフは、データベース中の対応する文字列(語彙)の格納位置を示す場所情報と、当該文字列(語彙)の表記(大文字/小文字、全角/半角など)の違いを識別するための特別の構造の文字情報とから構成される。
第2の先行技術においては、異表記を同一視する検索の場合、検索対象文字列に対応するインデックスにリンクした全てのリーフの情報を取得すれば良い。これにより、大文字/小文字同一視検索を効率的に実行できる。一方、異表記を同一視しない検索の場合には、検索対象文字列に対応するインデックスにリンクした全てのリーフの情報、つまり検索対象文字列と同一視可能なデータベース中の全文字列のリーフの情報(語彙索引情報)を参照して、そのリーフ中の文字情報と検索対象文字列とを比較し、検索対象文字列と表記が一致する文字情報を含むリーフの情報だけを取得すれば良い。しかし、検索対象文字列と同一視可能なデータベース中の全文字列のリーフの情報を参照して上記比較を行うことは、極めて効率が悪い。また、データベース中の文字列毎に、対応する文字情報と格納位置の情報とを含むリーフの情報を必要とするため、情報量が膨大となる。
特開平8−77188号公報(段落0008乃至0010)
上記した第1の先行技術においては、異表記同一視検索を行う場合に、同一視の対象となる異なる表記毎に、ハッシュ値計算、ハッシュテーブル参照及びコリジョンチェーン走査を含む一連の処理を行わなければならないため、効率が悪いという問題がある。
一方、第2の先行技術においては、異表記同一視検索の効率向上を図ることはできるものの、データベース中の文字列毎に、対応する文字情報と格納位置の情報とを含むリーフの情報を必要とするため、情報量が膨大となるという問題がある。また、異表記を同一視しない検索では、検索対象文字列と同一視可能なデータベース中の全文字列のリーフの情報を参照して、そのリーフ中の文字情報と検索対象文字列とを比較しなければならないため、検索効率が著しく低下するという問題もある。
本発明は上記事情を考慮してなされたものでその目的は、異表記を同一視する場合としない場合の、いずれの検索も効果的に実現することを可能とする、データベース登録システム、データベース検索システム、語彙索引登録方法及び異表記同一視検索方法を提供することにある。
本発明の第1の観点によれば、テキストデータをデータベースに登録するデータベース登録システムが提供される。このデータベース登録システムは、上記データベースにテキストデータが登録される際に、当該テキストデータに含まれている文字列を登録対象文字列としてNグラムに分割する分割手段と、この分割手段によって分割された各グラムについて、そのグラムを構成する文字列の表記に異表記同一視の対象となり得る複数の表記が存在するものとして、当該複数の表記のいずれの場合にも同一の値となるハッシュ値に変換するハッシュ値変換手段と、上記分割手段によって分割された各グラムについて、そのグラムを構成する文字列の語彙索引を、上記ハッシュ値変換手段によって変換されたハッシュ値で特定されるハッシュテーブルのエントリまたは当該エントリにリンクしたリストに登録する語彙索引登録手段とを備える。
このような構成においては、語彙索引の登録対象となる語彙(文字列)の表記が、異表記同一視の対象となり得る複数の表記のいずれの場合でも、同一の値となるハッシュ値にハッシュ値変換手段によって変換される。このハッシュ値変換手段によるハッシュ値変換によって、異表記同一視の対象となり得る、表記の異なる全ての語彙のハッシュ値が揃えられる。これにより、異表記同一視の対象となり得る語彙の語彙索引は全て、上記揃えられたハッシュ値で特定されるハッシュテーブルのエントリまたは当該エントリにリンクしたリストに登録される。この結果、異表記同一視検索時には、上記統一されたハッシュ値で特定されるハッシュテーブルのエントリにリンクしたリスト(コリジョンチェーン)を走査するだけで良く、ハッシュテーブルの複数のエントリにそれぞれリンクした同数のリストを個々に走査する先行技術に比べて、走査すべきリストを減らすことができ、検索性能を向上できる。特に、上記リストがデータベース内に格納される構成を適用する場合、異表記同一視の対象となり得る語彙の語彙索引が、当該データベース内で近接した局所領域に集中して配置されることから、先行技術に比べて一層走査効率が高くなり、より検索性能を向上できる。また、異表記を同一視しない場合には、上記統一されたハッシュ値で特定されるハッシュテーブルのエントリまたは当該エントリにリンクしたリストの中から、目的の表記の語彙索引だけを検索するだけで良く、異表記を同一視しない場合の検索も簡単に実行できる。
ここで、上記ハッシュ値変換手段によるハッシュ値変換を、上記分割手段によって分割された各グラムについて、そのグラムを構成する文字列の表記に異表記同一視の対象となり得る複数の表記が存在するものとして、当該グラムを構成する文字列の表記を当該複数の表記のうちの予め定められた表記に統一するための表記変換を行う表記統一変換手段と、この表記統一変換手段によって表記変換された文字列のハッシュ値を計算するハッシュ値計算手段とにより実現すると良い。
本発明の第2の観点によれば、上記構成のデータベース登録システムによって登録された語彙索引を用いて、上記データベースに格納されたテキストデータ中の文字列を検索するデータベース検索システムが提供される。このデータベース検索システムは、検索対象文字列をNグラムに分割する分割手段と、この分割手段によって分割された各グラムについて、そのグラムを構成する文字列の表記に異表記同一視の対象となり得る複数の表記が存在するものとして、当該複数の表記のいずれの場合にも同一の値となるハッシュ値に変換するハッシュ値変換手段と、上記分割手段によって分割された各グラムについて、上記ハッシュ値変換手段によって変換されたハッシュ値で特定される上記ハッシュテーブルのエントリまたは当該エントリにリンクしたリストを走査することによって、当該グラムを構成する文字列の語彙索引を検索する語彙索引検索手段と、この語彙索引検索手段の語彙索引検索結果に基づいて、上記検索対象文字列と完全に一致する文字列のみ、または上記検索対象文字列と同一視可能な全ての文字列を取得する検索結果処理手段とを備える。
このような構成においては、異表記同一視検索時には、ハッシュ値変換手段によって揃えられたハッシュ値で特定されるハッシュテーブルのエントリ及びリストを走査して語彙索引が調べられるため、異表記を同一視する場合、しない場合のどちらの検索も容易に実行できる。
本発明によれば、語彙索引の登録時に、異表記同一視の対象となり得る語彙に対応するハッシュ値を揃えることにより、異表記同一視の対象となり得る語彙の語彙索引を全て、当該揃えられたハッシュ値で特定されるハッシュテーブルのエントリまたは当該エントリにリンクしたリストに登録することができるため、異表記同一視検索時に走査すべきリストの数を減らして検索性能の向上を図ることができる。しかも、異表記同一視の対象となり得る語彙に対応するハッシュ値を揃えながら、表記の異なる語彙毎に語彙索引が用意されるため、異表記同一視検索をしない場合に、目的の表記の語彙索引だけを検索するだけで良く、異表記を同一視しない場合の検索も簡単に実行できる。
以下、本発明の一実施形態につき図面を参照して説明する。
図1は本発明の一実施形態に係る、データベース登録機能を有するデータベース検索システムの構成を示すブロック図である。図1のデータベース検索システムは、データベース10と、データベース登録のための文字列入力部11と、データベース登録部12と、データベース検索のための文字列入力部13と、データベース検索部14とを備える。
図1は本発明の一実施形態に係る、データベース登録機能を有するデータベース検索システムの構成を示すブロック図である。図1のデータベース検索システムは、データベース10と、データベース登録のための文字列入力部11と、データベース登録部12と、データベース検索のための文字列入力部13と、データベース検索部14とを備える。
データベース10は、データ格納領域101と語彙索引情報格納領域102とを含む。データ格納領域101には、テキストデータ、例えばXML(Extensible Markup Language)に代表される、論理構造を有する構造化文書のデータが格納される。語彙索引情報格納領域102には、語彙索引情報が格納される。語彙索引情報は、対応する語彙が格納されているデータベース10内の全ての格納位置の情報を含む。
データベース10にはまた、ハッシュテーブル103及びコリジョンチェーン104の群も格納される。ハッシュテーブル103は、語彙索引を保持するためのエントリの群を有する。ハッシュテーブル103内の各エントリは、それぞれ固有のハッシュ値によって特定される。ここで、ハッシュテーブル103のエントリを特定するハッシュ値は、先行技術とは異なって、必ずしも当該エントリに登録される語彙のハッシュ値に一致するとは限らない。本実施形態において、ハッシュテーブル103のエントリを特定するハッシュ値は、当該エントリに登録される語彙索引の示す語彙の表記に複数の表記が存在する場合に、その複数の表記のうちの予め定められた表記を用いて算出されるハッシュ値である。コリジョンチェーン104は、ハッシュテーブル103のあるエントリにリンクされ、当該エントリに既に登録されている語彙索引との間でハッシュ値が衝突した場合に、重複する語彙索引を登録するのに用いられる。
文字列入力部11は、ユーザの入力操作に応じてアプリケーションから与えられるデータベース登録要求に従い、データベース10への登録対象となるテキストデータを入力すると共に、当該テキストデータから、語彙索引を付与すべき文字列(登録対象文字列)を抽出する。
データベース登録部12は、文字列入力部11により入力されたテキストデータをデータベース10に登録する機能を有する。データベース登録部12はまた、このテキストデータをデータベース10に登録する際に、文字列入力部11によって当該テキストデータから抽出される文字列の語彙索引の群をハッシュテーブル103またはコリジョンチェーン104に登録する機能(語彙索引登録機能)を有する。データベース登録部12は、Nグラム分割部121、ハッシュ値変換部122及び語彙索引登録部123を含む。
Nグラム分割部121は、登録対象となる文字列をNグラムに分割する。ハッシュ値変換部122は、Nグラム分割部121によって分割された各グラムについて、そのグラムを構成する文字列の表記に異表記同一視の対象となり得る複数の表記が存在するものとして、当該複数の表記のいずれの場合にも同一の値となるハッシュ値に変換する。ハッシュ値変換部122は、表記統一変換部122a及びハッシュ値計算部122bを含む。
表記統一変換部122aは、Nグラム分割部121によって分割された各グラムについて、そのグラムを構成する文字列の表記に異表記同一視の対象となり得る複数の表記が存在するものとして、当該グラムを構成する文字列の表記を当該複数の表記のうちの予め定められた表記に統一するための表記変換を行う。本実施形態では、説明を簡略化するために、登録または検索対象となる文字列の文字種が英字のみであり、且つ全角/半角のうちの半角文字のみに限られているものとする。この場合、表記統一変換部122aは、文字列を構成する文字の表記を全て大文字または小文字のいずれか一方、例えば大文字に統一するように表記変換を行う。表記統一変換部122aの表記変換の対象となる文字列の文字種と、変換後の表記との関係を図2に示す。図2において、統一表記に関する「文字種」と「全角/半角」の両項目に記載された「−」は、「文字種」と「全角/半角」の表記は変換の対象外であることを示す。
明らかなように、文字列を構成する全ての文字(英字)が大文字の場合には表記変換は不要である。しかし本実施形態における表記統一変換部122aは、表記変換の対象となる文字の大文字/小文字に無関係に、その文字を大文字に形式的に変換するように構成されている。この例では、変換前の文字が大文字の場合、その変換前の文字と変換後の文字とは、結果的に同一表記となる。勿論、表記統一変換部122aが、変換前の文字が大文字であるか小文字であるかを識別し、大文字である場合には、その文字をそのまま表記変換結果として出力することも可能である。
ハッシュ値計算部122bは、表記統一変換部122aによって表記が統一された文字列(各グラム)のハッシュ値を計算する。
ハッシュ値計算部122bは、表記統一変換部122aによって表記が統一された文字列(各グラム)のハッシュ値を計算する。
語彙索引登録部123は、表記統一変換部122aによる表記変換前の文字列の語彙索引を、ハッシュテーブル103のエントリに登録する。この語彙索引が登録される、ハッシュテーブル103のエントリは、ハッシュ値計算部122bによって算出された、表記統一変換部122aによる表記変換後の文字列のハッシュ値で特定される。但し、上記特定されるハッシュテーブル103のエントリに、上記表記変換前の文字列とは表記(ここでは大文字/小文字)が異なる語彙索引が既に登録されている場合、つまりハッシュ値が衝突した場合には、語彙索引登録部123は対応する語彙索引を、当該エントリにリンクしたコリジョンチェーン(リスト)104に登録する。
文字列入力部13は、ユーザの入力操作に応じてアプリケーションから与えられるデータベース検索要求に従い、検索の対象となる文字列(検索対象文字列)を入力する。
データベース検索部14は、文字列入力部13により入力された検索対象文字列をデータベース10から検索する機能を有する。データベース検索部14は、データベース登録部12内のNグラム分割部121及びハッシュ値変換部122にそれぞれ相当する、Nグラム分割部141及びハッシュ値変換部142を含むと共に、語彙索引検索部143及び検索結果処理部144を含む。
Nグラム分割部141は、検索対象文字列をNグラムに分割する。ハッシュ値変換部142は、Nグラム分割部141によって分割された各グラムについて、そのグラムを構成する文字列の表記に異表記同一視の対象となり得る複数の表記が存在するものとして、当該複数の表記のいずれの場合にも同一の値となるハッシュ値に変換する。ハッシュ値変換部142は、ハッシュ値変換部122内の表記統一変換部122a及びハッシュ値計算部122bにそれぞれ相当する、表記統一変換部142a及びハッシュ値計算部142bを含む。
語彙索引検索部143は、ハッシュ値計算部142bによって算出された、表記統一変換部142aによる表記変換後の文字列のハッシュ値で特定されるハッシュテーブル103のエントリを参照することによって対応する語彙索引を検索する。また語彙索引検索部143は、ハッシュテーブル103のエントリの参照時には、ハッシュ値衝突の有無を判定する。語彙索引検索部143は、ハッシュ値衝突を判定した場合、当該ハッシュ値で特定されるハッシュテーブル103のエントリにリンクしたコリジョンチェーン104を走査することによって、対応する語彙索引を検索する。
検索結果処理部144は、語彙索引検索部143による語彙索引検索結果に基づいて、検索対象文字列と完全に一致する文字列のみ、または検索対象文字列と同一視可能な全ての文字列を取得する。
データベース登録部12及びデータベース検索部14は、計算機システムにインストールされた特定のソフトウェアプログラムを当該計算機システム(内のCPU)が読み取って実行することにより実現可能である。このプログラムは、コンピュータで読み取り可能な記憶媒体(フロッピー(登録商標)ディスクに代表される磁気ディスク、CD−ROM、DVDに代表される光ディスク、フラッシュメモリに代表される半導体メモリ等)に予め格納して頒布可能である。また、このプログラムが、ネットワークを介してダウンロード(頒布)されても構わない。
次に、図1のデータベース検索システムにおける動作を、語彙索引の登録処理を例に、図3及び図4を参照して説明する。なお、図3は語彙索引の登録処理の手順を示すフローチャート、図4は異表記の文字列"patent","Patent"または"PATENT"を対象とする語彙索引の登録処理を説明するための図である。
まず、ユーザの入力操作に応じてアプリケーションから与えられるデータベース登録要求に従い、文字列入力部11がデータベース10への登録対象となるテキストデータを入力したものとする。このテキストデータはデータベース登録部12によってデータベース10のデータ格納領域101に格納される。このとき文字列入力部11は、データ格納領域101に格納されるテキストデータから、語彙索引を付与すべき登録対象文字列を順次抽出する。今、登録対象文字列として"patent"が抽出されたものとする。文字列入力部11は、この登録対象文字列"patent"をデータベース登録部12内のNグラム分割部121に渡す。
Nグラム分割部121は、文字列入力部11から渡された登録対象文字列"patent"を、図4において矢印B1で示すように、Nグラムに分割する(ステップS1)。ここでは、Nは例えば3である。Nグラム分割部121によって分割されたグラム列は、ハッシュ値変換部122内の表記統一変換部122aに渡される。このグラム列は、登録対象文字列が"patent"である本実施形態では、グラム(文字列)"pat"を含む。
表記統一変換部122aは、Nグラム分割部121から渡されたグラム列の中から未処理のグラムを1つ選択する(ステップS2)。そして表記統一変換部122aは、選択されたグラムについて、そのグラムを構成する文字列(英文字列)の表記を予め定められた表記、例えば大文字表記に統一するための表記変換を行う(ステップS3)。これにより、変換対象グラムが上述の"pat"の場合には、当該"pat"は大文字表記の"PAT"に変換される。つまり、英字の文字列の表記が大文字表記に統一される。この表記統一変換部122aによる表記の統一のための表記変換は、同一視(ここでは大文字/小文字同一視)の対象となり得る異表記のグラムについて、表記変換後のグラムのハッシュ値を同一値に揃えるために行われる。
表記統一変換部122aによる表記変換後(大文字表記への変換後)のグラム(文字列)はハッシュ値計算部122bに渡される。このとき、表記統一変換部122aによる表記変換前のグラムが語彙索引登録部123に渡される。
ハッシュ値計算部122bは、表記変換後のグラム(文字列)のハッシュ値を計算する(ステップS4)。ハッシュ値計算部122bによるハッシュ値計算結果は語彙索引登録部123に渡される。語彙索引登録部123は、ハッシュ値計算部122bから渡されたハッシュ値で特定される、ハッシュテーブル103のエントリを参照することにより、ハッシュ値の衝突の有無を判定する(ステップS5)。即ち語彙索引登録部123は、参照されたハッシュテーブル103のエントリに、表記統一変換部122aによる表記変換前のグラム(文字列)とは異なる表記の文字列の語彙索引が既に登録されているならば、ハッシュ値の衝突があったと判定する。これに対し、参照されたハッシュテーブル103のエントリに語彙索引が登録されていないか、或は語彙索引が登録されていても、その語彙索引が表記統一変換部122aによる表記変換前のグラム(文字列)と同一表記の文字列の語彙索引であるならば、ハッシュ値の衝突がなかったと判定する。
今、ハッシュ値計算部122bから語彙索引登録部123に渡されたハッシュ値が、表記統一変換部122aによって"pat"から変換された"PAT"のハッシュ値HPであるものとする。また、このハッシュ値HPで特定される、ハッシュテーブル103のエントリが、図4に示すようにエントリ103aであり、当該エントリ103aには語彙索引が登録されていないものとする。この場合、語彙索引登録部123はハッシュ値の衝突がなかったと判定し、ハッシュテーブル103のエントリ103aに、表記統一変換部122aによる表記変換前のグラム"pat"の語彙索引を登録する(ステップS6)。このステップS6では、データベース10のデータ格納領域101における"pat"の格納位置の情報を含む語彙索引情報が、データベース10の語彙索引情報格納領域102に登録される。この"pat"の格納位置は、データベース10にテキストデータが格納される際に、当該テキストデータから抽出された登録対象文字列"patent"中の"pat"の格納位置である。ハッシュテーブル103のエントリ103aに登録された、"pat"の語彙索引(つまり表記統一変換部122aによる表記変換前の文字列"pat")には、この登録対象文字列"patent"中の"pat"の格納位置の情報を含む語彙索引情報を指し示すポインタ情報が付加される。
なお、"pat"の語彙索引が既にハッシュテーブル103のエントリ103aに登録され、したがって当該語彙索引により指し示される語彙索引情報がデータベース10の語彙索引情報格納領域102に既に登録されている場合には、当該語彙索引情報に、上記"pat"の格納位置の情報が語彙索引登録部123によって追加される。ここでは、この"pat"の格納位置の情報が、ハッシュテーブル103のエントリ103aに登録された語彙索引により指し示される語彙索引情報に追加されるだけの場合も、当該"pat"の語彙索引が等価的にハッシュテーブル103のエントリ103aに登録されたものとして扱う。
さて、語彙索引登録部123によってステップS6または後述するS7が実行されると、表記統一変換部122aは、Nグラム分割部121によって分割されたグラム列中に未処理のグラムが存在するかを判定する(ステップS8)。もし、未処理のグラムが存在するならば、表記統一変換部122aは未処理のグラムを1つ選択して(ステップS2)、そのグラムを構成する文字列の表記を大文字表記に統一するための表記変換を行う(ステップS3)。以下、上述した"pat"の場合と同様の動作が行われる。この動作の繰り返しによって、Nグラム分割部121によって分割されたグラム列中に未処理のグラムが存在しなくなったならば、つまりNグラム分割部121によって分割された全てのグラムについて、対応する語彙索引を登録する処理が行われたならば、指定された登録対象文字列"patent"に関する一連の語彙索引の登録処理は終了となる。
その後、文字列入力部11によって"Patent"または"PATENT"が登録対象文字列として抽出されたものとする。この場合、Nグラム分割部121は、登録対象文字列"Patent"または"PATENT"を、それぞれ図4において矢印B2またはB3で示すように、Nグラム(N=3)に分割する(ステップS1)。Nグラム分割部121によって分割されたグラム列は表記統一変換部122aに渡される。このグラム列は、登録対象文字列が"Patent"または"PATENT"の場合、それぞれグラム(文字列)"Pat"または"PAT"を含む。
表記統一変換部122aは、Nグラム分割部121から渡されたグラム列の中から未処理のグラムを1つ選択する(ステップS2)。表記統一変換部122aは、選択されたグラムについて、そのグラムを構成する文字列(英文字列)の表記を大文字表記に統一するための表記変換を行う(ステップS3)。これにより、変換対象グラムが"Pat"の場合には、当該"Pat"は、上述の"pat"の場合と同様に大文字表記"PAT"に変換される。また、変換対象グラムが"PAT"の場合には、その表記は既に大文字表記であることから、表記統一変換部122aによる変換結果は、表記変換が行われない場合と同一の表記となる。この表記統一変換部122aによる変換結果、つまり大文字表記に統一されたグラムが、ハッシュ値計算部122bによるハッシュ値計算の対象となる。したがって、表記統一変換部122aによる表記変換前のグラムが"Pat"またはPAT"の場合、ステップS4においてハッシュ値計算部122bによって算出されるハッシュ値は、上述の"pat"の場合と同一値HPとなる。
ハッシュ値計算部122bによって算出されたハッシュ値は語彙索引登録部123に渡される。このハッシュ値が、表記統一変換部122aによって"Pat"またはPAT"から変換された"PAT"のハッシュ値HPであるものとする。語彙索引登録部123は、このハッシュ値HPで特定される、ハッシュテーブル103のエントリを参照することにより、ハッシュ値の衝突の有無を判定する(ステップS5)。ハッシュ値HPで特定される、ハッシュテーブル103のエントリは、上述したように"pat"の語彙索引が既に登録されているエントリ103aである。この場合、語彙索引登録部123はハッシュ値の衝突があったと判定する。すると語彙索引登録部123は、図4において矢印C1で示すように、ハッシュテーブル103のエントリ103aにリンクした、データベース10内のコリジョンチェーン104を辿って、当該チェーン104に、"Pat"またはPAT"の語彙索引を登録する(ステップS7)。このステップS7では、データベース10のデータ格納領域101における登録対象文字列"Patent"または"PATENT"中の"Pat"またはPAT"の格納位置の情報を含む語彙索引情報が、データベース10の語彙索引情報格納領域102に登録される。コリジョンチェーン104に登録された、"Pat"またはPAT"の語彙索引(つまり表記統一変換部122aによる表記変換前の文字列"Pat"またはPAT")には、この登録対象文字列"Patent"または"PATENT"中の"Pat"またはPAT"の格納位置の情報を含む語彙索引情報を指し示すポインタ情報が付加される。
なお、"Pat"またはPAT"の語彙索引が既にコリジョンチェーン104に登録され、したがって当該語彙索引により指し示される語彙索引情報がデータベース10の語彙索引情報格納領域102に既に登録されている場合には、当該語彙索引情報に、上記"Pat"またはPAT"の格納位置の情報が追加される。ここでは、この"Pat"またはPAT"の格納位置の情報が、コリジョンチェーン104に登録された語彙索引により指し示される語彙索引情報に追加されるだけの場合も、当該"Pat"またはPAT"の語彙索引が等価的にコリジョンチェーン104に登録されたものとして扱う。また、ハッシュテーブル103のエントリ103aにリンクしたコリジョンチェーン104が存在しない場合には、語彙索引登録部123は、当該エントリ103aにリンクしたコリジョンチェーン104をデータベース10内に新たに生成し、当該チェーン104に、"Pat"またはPAT"の語彙索引を登録する。このとき語彙索引登録部123は、生成されたコリジョンチェーン104を指し示すポインタ情報を、ハッシュテーブル103のエントリ103aに付加する。また語彙索引登録部123は、データベース10のデータ格納領域101における登録対象文字列"patent"中の"Pat"またはPAT"の格納位置の情報を含む語彙索引情報を、データベース10の語彙索引情報格納領域102に登録する。
このように本実施形態においては、表記が異なるグラム(文字列)"pat","Pat"及び"PAT"の表記を全てハッシュ値変換部122内の表記統一変換部122aによって大文字"PAT"に統一し、その統一された表記"PAT"を対象にハッシュ値変換部122内のハッシュ値計算部122bによるハッシュ値計算が行われるようにした。これにより、表記が異なる"pat","Pat"及び"PAT"に対応するハッシュ値を、大文字表記"PAT"のハッシュ値HPに揃えることができる。この結果、表記が異なる"pat","Pat"及び"PAT"に対応するハッシュ値をHPに揃えたにも拘わらずに、"pat","Pat"及び"PAT"に共通の語彙索引を作成せずに、"pat","Pat"及び"PAT"個々の語彙索引を作成していながら、これら共通のハッシュ値HPのグラムの集合("pat","Pat"及び"PAT")に対応する語彙索引の集合を、当該ハッシュ値HPで特定される、ハッシュテーブル103のエントリ103a及び当該エントリ103aにリンクされたコリジョンチェーン104に集中して登録することができる。
つまり本実施形態によれば、異表記されたグラム("pat","Pat"及び"PAT")に対応するハッシュ値をハッシュ値変換部122によって揃えることで、当該異表記されたグラムの語彙索引の集合を、データベース10内の局所領域に集中して配置することができる。これにより、後述するように、異表記された語彙を同一視して検索する場合に、ハッシュテーブル103のエントリ103aにリンクされた1つのコリジョンチェーン104を辿る(走査する)だけで、対応する全ての語彙索引を高速に検索することが可能となる。また、異表記を同一視しないで検索する場合には、上記揃えられたハッシュ値で特定されるハッシュテーブル103のエントリまたは当該エントリにリンクしたコリジョンチェーン104の中から、目的の表記の語彙索引だけを検索するだけで良く、異表記を同一視しない場合の検索も簡単に実行できる。
通常、データベース10が置かれるディスクドライブからのデータ読み出しは、ページ或はブロックと呼ばれる、一定のサイズのデータ単位で行われる。ディスクドライブ(データベース10)から読み出された一定サイズのデータは、キャッシュメモリに保持されるのが一般的である。したがって、異表記されたグラムの語彙索引の集合に含まれている語彙索引をディスクドライブ(データベース10)から読み出す際には、当該語彙索引の集合がまとめて読み出されてキャッシュメモリに保持される可能性が高い。この場合、上記集合中の他の語彙索引のキャッシュヒット率が高くなるため、当該他の語彙索引の一層の高速検索が可能となる。
次に、データベース10を対象に大文字/小文字同一視検索を行う文字列検索処理について、図5及び図6を参照して説明する。なお、図5は文字列検索処理の手順を示すフローチャート、図6は検索対象文字列が"patent"の場合の文字列検索処理を説明するための図である。
まず、ユーザの入力操作に応じてアプリケーションから与えられるデータベース検索要求に従い、文字列入力部13によって検索対象文字列"patent"が入力されたのとする。文字列入力部13は、この検索対象文字列"patent"をデータベース検索部14内のNグラム分割部141に渡す。
Nグラム分割部141は、文字列入力部13から渡された検索対象文字列"patent"を、図6において矢印D1で示すように、Nグラム(N=3)に分割する(ステップS11)。Nグラム分割部141によって分割されたグラム列は表記統一変換部142aに渡される。このグラム列は、検索対象文字列が"patent"である本実施形態では、グラム(文字列)"pat"を含む。
表記統一変換部142aは、Nグラム分割部141から渡されたグラム列の中から未処理のグラムを1つ選択する(ステップS12)。表記統一変換部142aは、選択されたグラムについて、そのグラムを構成する文字列(英文字列)の表記を大文字表記に統一するための表記変換を行う(ステップS13)。これにより、変換対象グラムが"pat"の場合には、当該"pat"は大文字表記"PAT"に変換される。明らかにように、変換対象グラムが、"pat"とは表記の異なる"paT","Pat","PAt"などである場合にも、大文字表記"PAT"に変換される。この表記統一変換部142aによる変換結果、つまり大文字表記に統一されたグラムが、ハッシュ値計算部142bによるハッシュ値計算の対象となる。
ハッシュ値計算部142bは、表記統一変換部142aによって"pat"から変換された"PAT"のハッシュ値を計算する。このハッシュ値は、上述した語彙索引登録時の動作から明らかにように、HPとなる。この"PAT"のハッシュ値HPで特定される、ハッシュテーブル103のエントリ103aと、当該エントリ103aにリンクされたコリジョンチェーン104とには、図6に示すように、"PAT"だけでなく、"pat","paT","Pat"及び"PAt"のように、大文字/小文字のみ異なる異表記のグラムが、全て同じハッシュ値HPで登録されている。
そこで語彙索引検索部143は、ハッシュ値計算部142bによって算出されたハッシュ値HPで特定される、ハッシュテーブル103のエントリ103aに、"pat"の語彙索引または"pat"とは大文字/小文字のみ異なるグラムの語彙索引が登録されているかを判定する(ステップS15)。もし、登録されているならば、語彙索引検索部143はハッシュテーブル103のエントリ103aに登録されている語彙索引に従って、対応する語彙索引情報を取得する(ステップS16)。ここでは、ハッシュテーブル103のエントリ103aには、"pat"の語彙索引が登録されている。これにより語彙索引検索部143は、この"pat"の語彙索引から、"pat"が格納されているデータベース10内の全ての格納位置を示す語彙索引情報を取得する。
語彙索引検索部143は、ステップS16を実行すると、ステップS17に進む。このステップ17において、語彙索引検索部143は、ハッシュテーブル103のエントリ103aにリンクしたコリジョンチェーン104に、"pat"または"pat"とは大文字/小文字のみ異なるグラムの語彙索引が登録されているかを判定する。もし、登録されているならば、語彙索引検索部143は上記コリジョンチェーン104に登録されている語彙索引に従って、対応する語彙索引情報を取得する(ステップS18)。ハッシュテーブル103のエントリ103aにリンクしたコリジョンチェーン104には、図6に示すように、"pat"とは大文字/小文字のみ異なるグラム("paT","Pat","PAt","PAT"など)の語彙索引が登録されている。これにより語彙索引検索部143は、この"pat"とは大文字/小文字のみ異なるグラムに対応する各語彙索引から、対応する表記の文字列("paT","Pat","PAt","PAT"など)が格納されているデータベース10内の全ての格納位置を示す語彙索引情報を取得する。一方、ハッシュテーブル103のエントリ103aに目的とする語彙索引が登録されていない場合には(ステップS15)、語彙索引検索部143はそのままステップS17に進む。
このように本実施形態においては、大文字/小文字のみ異なるグラムについては全て同じハッシュ値で登録されている。このため、検索対象文字列”patent”からNグラムに分割されたグラム列中の”pat”について、"pat"と、当該"pat"とは大文字/小文字のみ異なる"paT","Pat"及び"PAt"などのグラムに共通となるハッシュ値HPを計算するならば、当該ハッシュ値HPに対応するハッシュテーブル103のエントリ103aと、当該エントリ103aにリンクしたコリジョンチェーン104を1回走査するするだけで、"pat"は勿論、"paT","Pat"及び"PAt"などに関する語彙索引情報を取得できる。従来は、"pat"に関して大文字/小文字を同一視して検索する場合は、8回の走査を必要とする。このことから、本実施形態においては、大文字/小文字を同一視して検索する場合の検索性能を向上できることが理解されよう。つまり本実施形態によれば、同一視したい表記の語彙を含むグラムの語彙索引をハッシュテーブル103またはコリジョンチェーン104に登録する際に、当該グラムの表記を統一してハッシュ値が同一値となるような処理を施すことにより、ハッシュテーブル103の参照からコリジョンチェーン104の走査という処理を1度しか行わなくてよくなるため、検索性能を向上させることができる。しかも、データベース10(が置かれるディスクドライブ)内で、図6のコリジョンチェーン104のように、"pat"とは大文字/小文字のみ異なる"paT"や"PAt","PAT"の語彙索引を、局所的に集中して配置することができるため、これらの語彙索引の検索や対応する情報の取得も高速に実行できる。
さて、語彙索引検索部143によってステップS18が実行された場合、或はハッシュテーブル103のエントリ103aにリンクしたコリジョンチェーン104に、"pat"または"pat"とは大文字/小文字のみ異なるグラムの語彙索引のいずれも登録されていないことが語彙索引検索部143によって判定された場合(ステップS15,S17)、表記統一変換部142aは、Nグラム分割部141によって分割されたグラム列中に未処理のグラムが存在するかを判定する(ステップS19)。もし、未処理のグラムが存在するならば、表記統一変換部142aは未処理のグラムを1つ選択して(ステップS12)、そのグラムを構成する文字列の表記を大文字表記に統一するための表記変換を行う(ステップS13)。以下、上述した"pat"の場合と同様の動作が行われる。この動作の繰り返しにより、Nグラム分割部141によって分割されたグラム列中に未処理のグラムが存在しなくなったならば、データベース検索部14内の検索結果処理部144は、Nグラム分割部141によって分割された全グラムについて、語彙索引検索部143によって取得された語彙索引情報をマージする(ステップS20)。これにより検索結果処理部144は、データベース10上の文字列"patent"の検索が実行できる。
次に、大文字/小文字(異表記)を同一視しない検索について、検索対象文字列"patent"から分割された文字列"pat"に対応する語彙索引を検索する場合を例に説明する。まず、文字列"pat"に対する表記統一変換部142aの表記変換結果は"PAT"となり、この"PAT"に対するハッシュ値計算部142bのハッシュ値計算結果はHPとなる。この場合、語彙索引検索部143は、ハッシュ値HPで特定される、ハッシュテーブル103のエントリ103aと、当該エントリ103aにリンクしたコリジョンチェーン104の中から、表記統一変換部142aによる表記変換前の文字列"pat"に対応する唯一の語彙索引を探して、その"pat"の語彙索引で指し示される語彙索引情報だけを取得すれば良い。このため本実施形態においては、文字列"pat"と同一視可能なデータベース中の全文字列のリーフの情報を参照して、そのリーフ中の文字情報と文字列"pat"とを比較する必要のある前記第2の先行技術と異なって、異表記を同一視しない検索を効率的に行える。しかも本実施形態においては、システムに唯一存在する"pat"の語彙索引で指し示される語彙索引情報に、データベース10中の全文字列"pat"のそれぞれの格納位置情報を含めるだけで良いため、全文字列"pat"のそれぞれにリーフの情報を作成して、そのリーフの情報に文字列"pat"の文字情報と格納位置情報を含める必要のある第2の先行技術と異なって、情報量を著しく削減できる。
ところで、ハッシュ値を揃えて同一視検索を高速化するのに、図1のデータベース検索システムの外側(アプリケーション側)で、同一視したい複数の語彙を1つの語彙に統一して登録する手法を適用することも可能である。しかしこの手法では、語彙索引がどれも同じものとして登録されるため、同一視しない検索ができなくなってしまう。本実施形態ではこのような問題は起きず、同一視する場合/しない場合のどちらの検索も可能である。
上記実施形態では、登録または検索対象となる文字列の文字種が英字であり、且つ全角/半角のうちの半角文字のみに限られている場合を想定して、ハッシュ計算に用いられるグラムの表記を大文字に統一する構成(つまり大文字/小文字が異なる語彙についてハッシュ値を揃える構成)を適用している。しかし、ハッシュ計算に用いられるグラムの表記を小文字に統一する構成であっても構わない。また、登録または検索対象となる文字列を構成する英字に全角文字及び半角文字の両方が存在し得る場合には、ハッシュ計算に用いられるグラムの表記を、大文字または小文字で且つ全角または半角のいずれかに統一する構成とすれば良い。この構成は、「カタカナ」の大文字/小文字の違い(ソフトウェアとソフトウエア等)などを同一視する場合にも適用可能である。また、登録または検索対象となる文字列を構成する文字の文字種として「ひらがな」と「カタカナ」の両方が存在し得る場合には、ハッシュ計算に用いられるグラムの表記を「ひらがな」または「カタカナ」のいずれか一方に統一する構成とすれば良い。同様に、漢字の「斉,斎,齊,齋」のような字体の違いを同一視する場合には、字体を「斉,斎,齊,齋」のうちのいずれか1つ、例えば「斉」に統一する構成とすれば良い。そのためには、図1のハッシュ値変換部122,142内に、「斉,斎,齊,齋」を、統一すべき表記「斉」に対応付けるための、異表記統一辞書122c,142c(図1参照)を設けると良い。ここでは、表記統一変換部122a,142aは、「斉」「斎」「齊」または「齋」で異表記統一辞書122c,142cを参照することにより、その文字に対応付けられている「斉」を表記変換結果として出力すれば良い。この異表記統一辞書122c,142cが、データベース10に格納されていても構わない。
このように、ある1つの語彙を検索する際、同時に検索する可能性の高い語彙が複数あることが想定される場合、ハッシュ値を揃えてグループ化することにより、検索性能の向上を図ることが可能となる。
また上記実施形態では、図1のデータベース検索システムが、テキストデータ登録及び語彙索引の登録を含むデータベース登録機能を有している場合を想定している。しかし、データベース検索システムが、必ずしもデータベース登録機能を有している必要はない。この場合、文字列入力部11及びデータベース登録部12は不要となる。つまり、データベース登録機能を有するデータベース登録システムと、データベース検索機能を有するデータベース検索システムとが分離された構成であっても構わない。ここで、データベース登録システムには、少なくともデータベース登録部12を持たせればよい。
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
10…データベース、11,13…文字列入力部、12…データベース登録部、14…データベース検索部、101…データ格納領域、102…語彙索引情報格納領域、103…ハッシュテーブル、104…コリジョンチェーン(リスト)、121,141…Nグラム分割部、122,142…ハッシュ値変換部、122a,142a…表記統一変換部、122b,142b…ハッシュ値計算部、122c,142c…異表記統一辞書、123…語彙索引登録部、143…語彙索引検索部、144…検索結果処理部。
Claims (7)
- テキストデータをデータベースに登録するデータベース登録システムにおいて、
前記データベースにテキストデータが登録される際に、当該テキストデータに含まれている文字列を登録対象文字列としてNグラムに分割する分割手段と、
前記分割手段によって分割された各グラムについて、そのグラムを構成する文字列の表記に異表記同一視の対象となり得る複数の表記が存在するものとして、当該複数の表記のいずれの場合にも同一の値となるハッシュ値に変換するハッシュ値変換手段と、
前記分割手段によって分割された各グラムについて、そのグラムを構成する文字列の語彙索引を、前記ハッシュ値変換手段によって変換されたハッシュ値で特定されるハッシュテーブルのエントリまたは当該エントリにリンクしたリストに登録する語彙索引登録手段と
を具備することを特徴とするデータベース登録システム。 - 前記ハッシュ値変換手段は、
前記分割手段によって分割された各グラムについて、そのグラムを構成する文字列の表記に異表記同一視の対象となり得る複数の表記が存在するものとして、当該グラムを構成する文字列の表記を当該複数の表記のうちの予め定められた表記に統一するための表記変換を行う表記統一変換手段と、
前記表記統一変換手段によって表記変換された文字列のハッシュ値を計算するハッシュ値計算手段と
を含むことを特徴とする請求項1記載のデータベース登録システム。 - 各語彙毎に、当該語彙に対応付けて当該語彙の代表的な表記の語彙を保持する表記変換辞書を更に具備し、
前記表記統一変換手段は、前記分割手段によって分割された各グラムについて、そのグラムを構成する文字列で前記表記変換辞書を参照することにより、当該グラムを構成する文字列の表記変換を行うことを特徴とする請求項2記載のデータベース登録システム。 - 前記語彙索引登録手段は、
前記ハッシュ値変換手段によって変換されたハッシュ値で特定される前記ハッシュテーブルのエントリに、前記ハッシュ値変換手段による当該ハッシュ値への変換の対象となった文字列とは異なる表記の文字列の語彙索引が既に登録されているか否かによって、ハッシュ値の衝突の有無を判定する衝突判定手段と、
前記衝突判定手段によってハッシュ値の衝突がないことが判定された場合に、前記ハッシュ値変換手段による前記ハッシュ値への変換の対象となった文字列の語彙索引を、当該ハッシュ値で特定される前記ハッシュテーブルのエントリに登録する第1の登録手段と、
前記衝突判定手段によってハッシュ値の衝突があることが判定された場合に、前記ハッシュ値変換手段による前記ハッシュ値への変換の対象となった文字列の語彙索引を、当該ハッシュ値で特定される前記ハッシュテーブルのエントリにリンクしたリストに登録する第2の登録手段と
を含むことを特徴とする請求項1記載のデータベース登録システム。 - 請求項1記載のデータベース登録システムによって登録された語彙索引を用いて、前記データベースに格納されたテキストデータ中の文字列を検索するデータベース検索システムにおいて、
検索対象文字列をNグラムに分割する分割手段と、
前記分割手段によって分割された各グラムについて、そのグラムを構成する文字列の表記に異表記同一視の対象となり得る複数の表記が存在するものとして、当該複数の表記のいずれの場合にも同一の値となるハッシュ値に変換するハッシュ値変換手段と、
前記分割手段によって分割された各グラムについて、前記ハッシュ値変換手段によって変換されたハッシュ値で特定される前記ハッシュテーブルのエントリまたは当該エントリにリンクしたリストを走査することによって、当該グラムを構成する文字列の語彙索引を検索する語彙索引検索手段と、
前記語彙索引検索手段の語彙索引検索結果に基づいて、前記検索対象文字列と完全に一致する文字列のみ、または前記検索対象文字列と同一視可能な全ての文字列を取得する検索結果処理手段と
を具備することを特徴とするデータベース検索システム。 - 異表記同一視検索のための語彙索引登録方法であって、
データベースにテキストデータを登録する際に、当該テキストデータに含まれている文字列を登録対象文字列としてNグラムに分割するステップと、
前記分割された各グラムについて、そのグラムを構成する文字列の表記に異表記同一視の対象となり得る複数の表記が存在するものとして、当該複数の表記のいずれの場合にも同一の値となるハッシュ値に変換するステップと、
前記分割された各グラムについて、そのグラムを構成する文字列の語彙索引を、当該文字列から変換されたハッシュ値で特定されるハッシュテーブルのエントリまたは当該エントリにリンクしたリストに登録するステップと
を具備することを特徴とする語彙索引登録方法。 - 請求項6記載の語彙索引登録方法によって登録された語彙索引を用いて異表記同一視検索を行うための異表記同一視検索方法であって、
検索対象文字列をNグラムに分割するステップと、
前記分割された各グラムについて、そのグラムを構成する文字列の表記に異表記同一視の対象となり得る複数の表記が存在するものとして、当該複数の表記のいずれの場合にも同一の値となるハッシュ値に変換するステップと、
前記変換されたハッシュ値で特定される前記ハッシュテーブルのエントリまたは当該エントリにリンクしたリストを走査することによって対応する語彙索引を検索するステップと、
前記語彙索引の検索結果に基づいて、前記検索対象文字列と完全に一致する文字列のみ、または前記検索対象文字列と同一視可能な全ての文字列を取得するステップと
を具備することを特徴とする異表記同一視検索方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004289280A JP2006106896A (ja) | 2004-09-30 | 2004-09-30 | データベース登録システム、データベース検索システム、語彙索引登録方法及び異表記同一視検索方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004289280A JP2006106896A (ja) | 2004-09-30 | 2004-09-30 | データベース登録システム、データベース検索システム、語彙索引登録方法及び異表記同一視検索方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006106896A true JP2006106896A (ja) | 2006-04-20 |
Family
ID=36376598
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004289280A Pending JP2006106896A (ja) | 2004-09-30 | 2004-09-30 | データベース登録システム、データベース検索システム、語彙索引登録方法及び異表記同一視検索方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006106896A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006236305A (ja) * | 2005-01-31 | 2006-09-07 | Canon Inc | 画像処理装置、画像処理方法 |
JP2009223520A (ja) * | 2008-03-14 | 2009-10-01 | Toshiba Corp | テキスト検索システム及びプログラム |
JP2018170036A (ja) * | 2012-09-07 | 2018-11-01 | クロール・インフォメーション・アシュアランス,エルエルシー | ファイル共有ネットワークにおけるスニペット照合 |
-
2004
- 2004-09-30 JP JP2004289280A patent/JP2006106896A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006236305A (ja) * | 2005-01-31 | 2006-09-07 | Canon Inc | 画像処理装置、画像処理方法 |
JP2009223520A (ja) * | 2008-03-14 | 2009-10-01 | Toshiba Corp | テキスト検索システム及びプログラム |
JP2018170036A (ja) * | 2012-09-07 | 2018-11-01 | クロール・インフォメーション・アシュアランス,エルエルシー | ファイル共有ネットワークにおけるスニペット照合 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5794177A (en) | Method and apparatus for morphological analysis and generation of natural language text | |
KR100318762B1 (ko) | 외래어 음차표기의 음성적 거리 계산방법 | |
JP2001043236A (ja) | 類似語抽出方法、文書検索方法及びこれらに用いる装置 | |
JP2002189747A (ja) | 文書情報の検索方法 | |
US20120109994A1 (en) | Robust auto-correction for data retrieval | |
US9965546B2 (en) | Fast substring fulltext search | |
US8682900B2 (en) | System, method and computer program product for documents retrieval | |
JP3784060B2 (ja) | データベース検索システム、その検索方法及びプログラム | |
JP2004348489A (ja) | 顧客データ管理システム、顧客データ管理装置、顧客データ管理方法および顧客データ管理用プログラム | |
JP2006106896A (ja) | データベース登録システム、データベース検索システム、語彙索引登録方法及び異表記同一視検索方法 | |
JP2001137788A (ja) | 地名表記辞書作成方法および地名表記辞書作成装置 | |
JP2008059389A (ja) | 語彙候補出力システム、語彙候補出力方法及び語彙候補出力プログラム | |
JP2009271819A (ja) | 文書検索システム、文書検索方法および文書検索プログラム | |
JP4734400B2 (ja) | 文書検索装置およびプログラム | |
JP2007133682A (ja) | 全文検索システム、及び、その全文検索方法 | |
US11763083B2 (en) | Inference methods for word or wordpiece tokenization | |
JPH04340164A (ja) | マルチキーワード情報検索処理方式および検索ファイル作成装置 | |
EP1072986A2 (en) | System and method for extracting data from semi-structured text | |
US20080177729A1 (en) | Apparatus, method and computer program product for searching document | |
JP4139805B2 (ja) | 字句をデータに変換する装置、方法及びプログラム | |
JP3508312B2 (ja) | キーワード抽出装置 | |
JPH0232467A (ja) | 機械翻訳方式 | |
JP2000311170A (ja) | テキスト情報抽出方法 | |
JP4061283B2 (ja) | 字句をデータに変換する装置、方法及びプログラム | |
JP2000339335A (ja) | 記号列解析方法およびその装置ならびに記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070828 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071029 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080212 |