説明

Nグラム検索のための転置インデックスの生成方法および生成装置、当該転置インデックスを用いた検索方法および検索装置、ならびに、コンピュータプログラム

【課題】データ容量が効率的に抑えられた転置インデックスの生成方法等を提供する。
【解決手段】文書入換ステップと、生成ステップと、合成ステップと、を備えた転置インデックスの生成方法であって、文書入換ステップでは、それぞれが、見出し語と対応する複数の説明文とから構成される複数の文書データ18のうち、少なくとも1つの文書データ18の複数の説明文の順序を入れ換えて、入換文書データを作成し、生成ステップでは、文書データ18もしくは作成された入換文書データから、「N文字の文字列であるNグラム(Nは自然数)」を抽出し、抽出されたNグラムのそれぞれについて、当該文書データ18もしくは当該入換文書データ中の出現位置を対応付けて、部分転置インデックスを生成し、複数の文書データ18について生成された複数の部分転置インデックスから、転置インデックスを合成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、Nグラム検索に関し、とくにNグラム検索のための転置インデックスの生成方法および生成装置、当該転置インデックスを用いた検索方法および検索装置、ならびにコンピュータプログラムに関する。
【背景技術】
【0002】
文書の電子化の増大に伴い、これまでに蓄積されてきた大量の文書群から所望の文書を見つけ出す検索技術の重要性が高まっている。
【0003】
英語などの多くの言語においては、単語を索引単位として索引ファイルを作成して、これを用いて高速な検索処理を実現することが一般的である。しかし、日本語の場合、スペース等によって単語の切れ目が明示的に示されないため、しばしば、Nグラムを索引単位とする方法が用いられている。
【0004】
Nグラムとは、連続するN文字からなる部分文字列のことである。Nグラムによる索引ファイル(以下、転置インデックスと呼称する)の作成には、文字列にのみ基づくため、単語を認識する必要がない。しかし、Nグラムによる転置インデックスは、単語を索引単位とするものに比べて、文書から抽出される索引単位の数が多くなるため、データ容量が大きくなりやすい。
【0005】
このようなNグラムによる転置インデックスのデータ容量を圧縮するための手法として、例えば非特許文献1には、以下のような方法が紹介されている。すなわち、Nグラムが文書中に出現する位置や回数などの値を転置インデックスに記録する際に、前の値との差分を取得し、その差分をゴロム符号やガンマ符号などの方式で可変長符号化することによって、転置インデックスを圧縮する。
【先行技術文献】
【非特許文献】
【0006】
【非特許文献1】小川泰嗣,松田透,”n−gram索引を用いた効率的な文書検索法”,電子情報通信学会論文誌(D-I),Vol.J82-D-I,No.1,pp.121-129,1999年1月
【発明の概要】
【発明が解決しようとする課題】
【0007】
上記のような転置インデックスの圧縮方法は、取得された差分が小さな値であったときは圧縮率が大きくなるが、大きな値のときは圧縮率が小さくなる。すなわち、文書中におけるNグラムの出現の仕方によって、あまり圧縮率されない場合もありうる。そこで、文書中におけるNグラムの出現の仕方による影響を極力減らして、転置インデックスの圧縮効率を高めたい、との要望がある。
【0008】
本発明は、以上のような課題を解決するためのものであり、データ容量が効率的に抑えられた転置インデックスの生成方法および生成装置、当該転置インデックスを用いた検索方法および検索装置、ならびに、コンピュータプログラムを提供することを目的とする。
【課題を解決するための手段】
【0009】
上記目的を達成するため、本発明の第1の観点にかかる転置インデックスの生成方法は、
それぞれが、見出し語と対応する複数の説明文とから構成される複数の文書データのうち、少なくとも1つの文書データの前記複数の説明文の順序を入れ換えて、入換文書データを作成する文書入換ステップと、
前記文書データもしくは前記作成された入換文書データから、「N文字の文字列であるNグラム(Nは自然数)」を抽出し、抽出されたNグラムのそれぞれについて、当該文書データもしくは当該入換文書データ中の出現位置を対応付けて、部分転置インデックスを生成する生成ステップと、
前記複数の文書データについて生成された複数の前記部分転置インデックスから、転置インデックスを合成する合成ステップと、
を備えることを特徴とする。
【0010】
上記生成方法において、
前記生成ステップでは、前記文書データおよび当該文書データから作成された入換文書データから、それぞれ前記部分転置インデックスを生成し、当該それぞれ生成された部分転置インデックスのうち、容量が小さい部分転置インデックスを選定し、
前記合成ステップでは、前記複数の文書データについて選定された複数の前記部分転置インデックスから、転置インデックスを合成する、
ことが望ましい。
【0011】
上記生成方法において、
前記文書入換ステップでは、前記文書データから、前記順序の入れ換え可能な組合せで前記順序を入れ換えて、当該組合せの数の入換文書データを作成し、
前記生成ステップでは、前記文書データおよび当該文書データから作成された前記組合せの数の入換文書データから、それぞれ前記部分転置インデックスを生成し、当該それぞれ生成された部分転置インデックスのうち、容量が最小の部分転置インデックスを選定する、
ことが望ましい。
【0012】
上記生成方法において、
前記生成ステップでは、複数の文書データのうち、見出し語と対応する単一の説明文とから構成される文書データからも、前記部分転置インデックスを生成する、
ことが望ましい。
【0013】
上記生成方法において、
前記生成ステップでは、前記抽出されたNグラムのそれぞれについて、当該Nグラムに対応付けられた出現位置と隣接する出現位置との差分を対応付けて、部分転置インデックスを生成する、
ことが望ましい。
【0014】
上記目的を達成するため、本発明の第2の観点にかかる検索方法は、
検索文字列からNグラムを抽出する抽出ステップと、
上記の生成方法によって生成された転置インデックスから、前記検索文字列から抽出されたNグラムに対応付けられた出現位置を取得する位置取得ステップと、
前記取得された出現位置に基づいて、前記複数の文書データのうちから、前記検索文字列を含む文書データを特定する文書特定ステップと、
を備えることを特徴とする。
【0015】
上記目的を達成するため、本発明の第3の観点にかかる転置インデックスの生成装置は、
それぞれが、見出し語と対応する複数の説明文とから構成される複数の文書データのうち、少なくとも1つの文書データの前記複数の説明文の順序を入れ換えて、入換文書データを作成する文書入換手段と、
前記文書データもしくは前記作成された入換文書データから、「N文字の文字列であるNグラム(Nは自然数)」を抽出し、抽出されたNグラムのそれぞれについて、当該文書データもしくは当該入換文書データ中の出現位置を対応付けて、部分転置インデックスを生成する生成手段と、
前記複数の文書データについて生成された複数の前記部分転置インデックスから、転置インデックスを合成する合成手段と、
を備えることを特徴とする。
【0016】
上記目的を達成するため、本発明の第4の観点にかかる検索装置は、
検索文字列からNグラムを抽出する抽出手段と、
上記の生成方法によって生成された転置インデックスから、前記検索文字列から抽出されたNグラムに対応付けられた出現位置を取得する位置取得手段と、
前記取得された出現位置に基づいて、前記複数の文書データのうちから、前記検索文字列を含む文書データを特定する文書特定手段と、
を備えることを特徴とする。
【0017】
上記目的を達成するため、本発明の第5の観点にかかるコンピュータプログラムは、
コンピュータを、
それぞれが、見出し語と対応する複数の説明文とから構成される複数の文書データのうち、少なくとも1つの文書データの前記複数の説明文の順序を入れ換えて、入換文書データを作成する文書入換手段、
前記文書データもしくは前記作成された入換文書データから、「N文字の文字列であるNグラム(Nは自然数)」を抽出し、抽出されたNグラムのそれぞれについて、当該文書データもしくは当該入換文書データ中の出現位置を対応付けて、部分転置インデックスを生成する生成手段、
前記複数の文書データについて生成された複数の前記部分転置インデックスから、転置インデックスを合成する合成手段、
として機能させる。
【0018】
上記目的を達成するため、本発明の第6の観点にかかるコンピュータプログラムは、
コンピュータを、
検索文字列からNグラムを抽出する抽出手段、
上記の生成方法によって生成された転置インデックスから、前記検索文字列から抽出されたNグラムに対応付けられた出現位置を取得する位置取得手段、
前記取得された出現位置に基づいて、前記複数の文書データのうちから、前記検索文字列を含む文書データを特定する文書特定手段、
として機能させる。
【発明の効果】
【0019】
本発明によれば、データ容量が効率的に抑えられた転置インデックスの生成方法および生成装置、当該転置インデックスを用いた検索方法および検索装置、ならびに、コンピュータプログラムを提供することができる。
【図面の簡単な説明】
【0020】
【図1】本発明に係る転置インデックスを生成する生成装置の概要構成の例を示す図である。
【図2】本発明に係る転置インデックスを搭載した検索装置の概要構成の例を示す図である。
【図3】本発明に係る複数の文書データの構成を示す図である。
【図4】本発明に係る生成装置の生成処理の流れを示すフローチャートである。
【図5】本発明に係る生成装置において、個々の文書データから部分転置インデックスを生成する処理の流れを示すフローチャートである。
【図6】(a)出現位置について隣接する出現位置との差分をとる前の部分転置インデックスの構成を示す図である。(b)出現位置について隣接する出現位置との差分をとった後の部分転置インデックスの構成を示す図である。
【図7】文書データから作成可能な入換文書データの構成を示す図である。
【図8】複数の文書データ全体の転置インデックスの構成を示す図である。
【図9】本発明に係る検索装置の検索処理の流れを示すフローチャートである。
【図10】本発明に係る転置インデックスを生成する生成装置の概要構成の別の例を示す図である。
【図11】本発明に係る転置インデックスを搭載した検索装置の概要構成の別の例を示す図である。
【発明を実施するための形態】
【0021】
以下、本発明の実施形態に係る転置インデックスの生成方法および生成装置、当該転置インデックスを用いた検索方法および検索装置、ならびに、これらをコンピュータ上にて実現するためのコンピュータプログラムについて説明する。以下に説明する実施形態は説明のためのものであり、本発明の範囲を制限するものではない。
【0022】
本実施形態では、コンピュータ装置を、図1に示されるような転置インデックスの生成装置として構成する。また、図1に示される生成装置10によって、本実施形態に係る転置インデックスの生成方法が実現される。
【0023】
生成装置10は、CPU(Central Processing Unit)11、ROM(Read Only Memory)12、RAM(Random Access Memory)13、HDD(Hard Disk Drive)14、入力装置15、出力装置16、通信制御装置17により構成される。各構成要素は、命令やデータを転送するための伝送経路であるシステムバスにより、相互に接続されている。
【0024】
CPU11は、生成装置10全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。
ROM12は、生成装置10全体の動作制御に必要なコンピュータプログラムや各種データを記憶する。CPU11は、ROM12に記憶されたコンピュータプログラムによって動作し、各種制御を実行する。
RAM13は、データやコンピュータプログラムを一時的に記憶するためのもので、ROM12から読み出したコンピュータプログラムやデータ、その他処理の進行に必要なデータが保持される。
HDD14は、転置インデックスの生成処理の動作のために必要なデータ等を記憶する。このHDD14には、複数の文書データ18が記憶される。生成装置10は、この複数の文書データ18をもとにして、転置インデックスを生成する。
入力装置15は、例えばキーボードやタッチパネル等によって構成され、ユーザからの各種入力を受け付ける。
出力装置16は、例えばディスプレイ等によって構成され、生成装置10の種々の処理結果を出力する。
通信制御装置17は、生成装置10をインターネット等のコンピュータ通信網に接続するためのものであり、コンピュータ通信網に接続してデータをやり取りする場合に必要となる。
【0025】
本実施形態では、生成装置10は、文書入換手段と、生成手段と、合成手段と、を備える。これらは、上述したCPU11が、ROM12やRAM13と協働し、HDD14に記憶されたデータにアクセスしながら、入力装置15や出力装置16、通信制御装置17を用いて外部とやり取りすることで、実現される。
【0026】
具体的に、生成装置10の文書入換手段は、それぞれが、見出し語と対応する複数の説明文とから構成される複数の文書データ18のうち、少なくとも1つの文書データ18の複数の説明文の順序を入れ換えて、入換文書データを作成する。このような文書入換手段として、例えばCPU11が、ROM12やRAM13と協働しながら、HDD14に記憶された文書データ18にアクセスし、入換文書データをRAM13に一時的に保持することにより、実現される。
【0027】
そして、生成装置10の生成手段は、文書データ18もしくは作成された入換文書データから、「N文字の文字列であるNグラム(Nは自然数)」を抽出し、抽出されたNグラムのそれぞれについて、当該文書データ18もしくは当該入換文書データ中の出現位置を対応付けて、部分転置インデックスを生成する。このような生成手段として、例えばCPU11が、ROM12やRAM13と協働しながら、保持された入換文書データから部分転置インデックスを生成して、生成された部分転置インデックスを再びRAM13に保持することにより、実現される。
【0028】
さらに、生成装置10の合成手段は、複数の文書データ18について生成された複数の部分転置インデックスから、転置インデックスを合成する。このような合成手段として、例えばCPU11が、ROM12やRAM13と協働しながら、出力装置16やHDD14、あるいは通信制御装置17を介して、合成された転置インデックスを出力することで機能する。
【0029】
このような生成装置10によって生成された転置インデックスは、検索装置に搭載され、検索処理に用いられる。本実施形態では、コンピュータ装置を、図2に示されるような検索装置として構成する。また、図2に示される検索装置20によって、本実施形態に係る転置インデックスの検索方法が実現される。
【0030】
検索装置20は、CPU21、ROM22、RAM23、HDD24、入力装置25、出力装置26、通信制御装置27により構成される。各構成要素は、命令やデータを転送するための伝送経路であるシステムバスにより、相互に接続されている。
【0031】
これらの構成要素は、基本的には図1に示された生成装置10の構成要素と同等なものである。すなわち、図1では、文書データ18から転置インデックスを生成するために機能した各構成要素が、ここでは生成された転置インデックスを用いて検索処理を行うために機能する。
【0032】
すなわち、CPU21は、検索装置20全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。
ROM22は、検索装置20全体の動作制御に必要なコンピュータプログラムや各種データを記憶する。CPU21は、ROM22に記憶されたコンピュータプログラムによって動作し、各種制御を実行する。
RAM23は、データやコンピュータプログラムを一時的に記憶するためのもので、ROM22から読み出したコンピュータプログラムやデータ、その他処理の進行に必要なデータが保持される。
HDD24は、検索処理の動作のために必要なデータ等を記憶する。このHDD24には、複数の文書データ18と、生成装置10によって生成された転置インデックス19とが、記憶される。検索装置20は、転置インデックス19をもとに、ユーザによって指定された検索文字列が複数の文書データ18の中のどの文書データ18中に出現するかを特定する。
入力装置25は、例えばキーボードやタッチパネル等によって構成され、ユーザからの各種入力を受け付ける。
出力装置26は、例えばディスプレイ等によって構成され、検索装置20の種々の処理結果を出力する。
通信制御装置27は、検索装置20をインターネット等のコンピュータ通信網に接続するためのものであり、コンピュータ通信網に接続してデータをやり取りする場合に必要となる。
【0033】
本実施形態では、検索装置20は、抽出手段と、位置取得手段と、文書特定手段と、を備える。これらは、上述したCPU21が、ROM22やRAM23と協働し、HDD24に記憶されたデータにアクセスしながら、入力装置25や出力装置26、通信制御装置27を用いて外部とやり取りすることで、実現される。
【0034】
具体的に、検索装置20の抽出手段は、検索文字列からNグラムを抽出する。このような抽出手段として、例えばCPU21が、ROM22やRAM23と協働しながら、入力装置25を介してユーザから検索文字列を受け付け、抽出されたNグラムをRAM23に保持することにより、実現される。
【0035】
そして、検索装置20の位置取得手段は、生成装置10によって生成された転置インデックス19から、検索文字列から抽出されたNグラムに対応付けられた出現位置を取得する。このような位置取得手段として、例えばCPU21が、ROM22やRAM23と協働しながら、HDD24に記憶された転置インデックス19にアクセスし、取得された出現位置をRAM23に保持することにより、実現される。
【0036】
さらに、検索装置20の文書特定手段は、取得された出現位置に基づいて、複数の文書データ18のうちから、検索文字列を含む文書データ18を特定する。このような文書特定手段として、例えばCPU21が、ROM22やRAM23と協働しながら、出力装置26や通信制御装置27を介して、特定された文書データ18をユーザへ出力することにより、実現される。
【0037】
文書データ18は、図3に示されるように構成される。本実施形態では、図3に示されるような複数の文書データ18a〜18zの中から、所望の検索文字列を含む文書データ18を見つけ出すための検索方法等が提供される。1つの文書データ18は、1つの見出し語と複数の説明文から構成される。
【0038】
具体的に、最初の文書データ18aにおいて、見出し語Aには、3つの説明文A1、A2、A3が対応付けられている。また、次の文書データ18bでは、見出し語Bに、2つの説明文B1、B2が対応付けられ、文書エータ18cでは、見出し語Cに、3つの説明文C1、C2、C3が対応付けられている。ここで、説明文の数は、必ずしも複数に限られず、文書データ18dでの見出し語Dと説明文D1のように、説明文が1つであってもよい。また、図3のように1〜3個に限られず、4個以上であってもよい。
【0039】
ここで、見出し語とは、その文書データ18を表現する代表的な言葉を意味する。そして、説明文とは、対応する見出し語を説明する言葉を意味する。このような見出し語と対応する説明文とで構成される文書データ18を複数有するものとして、例えば辞書のような文書が挙げられる。
【0040】
そして、見出し語と説明文との間はスペースで区切られ、2つの説明文の間は読点で区切られる。以降、これらのスペースや読点を、「セパレータ」と称する。ここで、セパレータは、検索の対象にはならない。すなわち、本実施形態の検索装置20は、例えば、見出し語Aと説明文A1にまたがるような、あるいは説明文A1と説明文A2にまたがるような、セパレータを含む検索文字列を検索の対象としない。
【0041】
ここから、このような複数の文書データ18から、転置インデックス19を生成するための生成装置10と、当該転置インデックス19を用いて検索するための検索装置20における、処理の流れの詳細を説明する。ここではまず、図4を参照して、転置インデックス19の生成処理について、フローチャートを用いて説明していく。
【0042】
生成装置10は、例えば入力装置15を介してユーザからの生成処理の開始の指示を受け付けることで、転置インデックス19の生成処理を開始する。転置インデックス19の生成処理が開始されると、まず生成装置10の文書入換手段は、CPU11とRAM13等の機能により、複数の文書データ18のうちから、最初の文書データ18を選択する(ステップS101)。すなわち、HDD14に記憶されている図3に示されたような複数の文書データ18から、最初の文書データ18を選択する。ここでは例えば、先頭の見出し語Aの文書データ18が選択される。
【0043】
次に、生成装置10の生成手段は、CPU11がRAM13等と協働することで、選択された文書データ18から、部分転置インデックスを生成し保持する(ステップS102)。ここで、部分転置インデックスとは、複数の文書データ18全体から生成される転置インデックス19と区別するため、複数の文書データ18のうち個々の文書データ18から生成された転置インデックス19のことを指すものとする。このステップS102の処理については、詳細を図5のフローチャートを参照して説明する。
【0044】
選択された文書データ18から部分転置インデックスを生成するために、まず、文書データ18から「N文字の文字列であるNグラム(Nは自然数)」を抽出する(ステップS201)。すなわち、文書データ18を構成する見出し語と説明文との文字列から、抽出可能なN文字列(Nグラム)をすべて抽出する。このとき、スペースや読点などのセパレータからはNグラムを抽出しない。また、セパレータをまたぐようにNグラムを抽出することもしない。
【0045】
例えば、文書データ18が、N文字の見出し語と、N文字とN文字の2つの説明文から構成されるとする。Nの値が、N、N、Nのいずれよりも大きな値でないとき、見出し語からはN−N+1個のNグラムが、2つの説明文からはそれぞれN−N+1個とN−N+1個のNグラムが、抽出される。すなわち、文書データ18からは、これらの和であるN+N+N−3N+3個のNグラムが抽出されることになる。
【0046】
次に、生成装置10の生成手段は、CPU11がRAM13等と協働することで、抽出されたNグラムのそれぞれについて、選択された文書データ18中の出現位置を対応付ける(ステップS202)。すなわち、抽出されたNグラムが、選択された文書データ18中のどの位置にあったのかの情報を、抽出されたNグラムそれぞれについて対応付ける。
【0047】
そして、生成装置10の生成手段は、CPU11がRAM13等と協働することで、対応付けられた出現位置を昇順に並べて、隣接する出現位置との差分をとり(ステップS203)、部分転置インデックスを生成する(ステップS204)。昇順に並べられた出現位置と、モノグラム(N=1のNグラム)とを対応付けた部分転置インデックスは、例えば図6(a)のようになる。
【0048】
この図6(a)では、選択された1つの文書データ18から、「A」〜「Z」のモノグラムが抽出され、その文書データ18中での出現位置が数字で対応付けられている。具体的に、例えばモノグラム「A」には、「5」、「22」、「33」、「35」、「87」、「120」という6個の出現位置が対応付けられている。これはすなわち、選択された文書データ18中に「A」というモノグラムが、文書の先頭からそれぞれの文字列目の位置に6回出現するということを意味するものである。
【0049】
ステップS203では、このようなNグラム(図6(a)ではモノグラム)と出現位置とが対応付けられたものから、出現位置について隣接する出現位置との差分をとって、当該差分をNグラムに対応付ける。図6(b)は、図6(a)の出現位置について、隣接する出現位置との差分をとった後の様子を示している。
【0050】
具体的に、例えばモノグラム「A」では、図6(a)で2番目の出現位置であった「22」は、1番目の出現位置「5」との差分をとられることで、「17」となっている。また、3番目の出現位置であった「33」は、2番目の出現位置であった「22」との差分をとられることで、「11」となっている。同様に図6(b)では、4番目には「2(=35−33)」が、5番目には「52(=87−35)」が、6番目には「33(=120−87)」が、それぞれ前の出現位置との差分をとられて表示されている。なお、1番目の出現位置である「5」については、差分をとるべき前の出現位置がないため、図6(a)と図6(b)で変化しない。
【0051】
このように、選択された文書データ18から抽出されたNグラムのそれぞれについて、出現位置の差分を対応付けられたものを、生成装置10は、部分転置インデックス29としてRAM13等に一時的に保持する。そして、図5におけるステップS102の処理を終える。
【0052】
本実施形態では以上のように、部分転置インデックス29を生成する際に出現位置についての差分をとる。これによって、部分転置インデックス29に保存される出現位置の値は、差分をとる前に比べて小さな値に抑えられることができる。このような小さな値に抑えられた出現位置の情報に対して、例えばゴロム符号やガンマ符号などの方式で可変長符号化を用いて、小さな値ほど割り当てられる符号の長さを抑えることにより、差分をとる前の大きな値で出現位置を対応付けて生成した部分転置インデックス29よりも、データ容量が抑えられた部分転置インデックス29、さらにはそれらをあわせた全体の転置インデックス19を生成することが可能となる。
【0053】
本実施形態では、ここから、さらに部分転置インデックス29のデータ容量を抑えるために、文書データ18に含まれる説明文の順序を入れ換えて改めて部分転置インデックス29を生成し、データ容量のより小さい方を採用する処理を行う。すなわち、後述する検索装置20の処理では、上記図3に示されたような複数の文書データ18のうちから、所望の検索文字列を含む文書データ18(見出し語)を特定する。このとき、見出し語と説明文あるいは説明文同士を区切るセパレータを含んだ、あるいはまたいだ検索は行わないため、セパレータで区切られた複数の説明文の順番が入れ替わっていたとしても、検索結果には影響を与えない。そのため、本実施形態では、複数の説明文の順序を入れ換えて部分転置インデックス29を生成して、データ容量のより小さい方を採用する処理を行う。
【0054】
そのために、図4に戻って、生成装置10の文書入換手段は、CPU11がRAM13等と協働することで、選択された文書データ18の説明文について、入れ換え可能な組合せを算出する(ステップS103)。例えば、上記図3の文書データ18aのように、3個の説明文A1、A2、A3を有する場合、入れ換え可能な組合せは、「A1、A2、A3」、「A1、A3、A2」、「A2、A1、A3」、「A2、A3、A1」、「A3、A1、A2」、「A3、A2、A1」の6通り(入れ換え前を除けば5通り)がある。また、文書データ18bのように、2個の説明文B1、B2を有する場合、入れ換え可能な組合せは、「B1、B2」、「B2、B1」の2通り(入れ換え前を除けば1通り)がある。一般的に、文書データ18がX個の説明文を有する場合、X!(!は階乗)個の組合せがある。ここで、算出された組合せは、例えばRAM13に一時的に保持される。
【0055】
そして、生成装置10の文書入換手段は、CPU11がRAM13等と協働することで、すべての組合せを選択し終えたか、を判定する(ステップS104)。選択し終えてない場合(ステップS104;NO)、組合せを1つ選択し、その組合せで説明文を入れ換えて、入換文書データを作成する(ステップS105)。例えば、上記図3の文書データ18aのように、6個の入れ換え可能な組合せのうち、「A1、A3、A2」を選択したとする。このとき、作成される入換文書データは、図7に示されるような入換文書データ28aのようになる。すなわち、入換文書データ28aでは、「見出し語A」の後に、スペースを挟んで「説明文A1、説明文A3、説明文A2」、というように、入れ換えられる前の文書データ18aから比べて、説明文A2と説明文A3の順序が、間の読点を挟んで入れ換えられている。作成された入換文書データ28は、例えばRAM13に一時的に保持される。
【0056】
図4に戻って、この後、生成装置10の生成手段は、CPU11がRAM13等と協働することで、このような入換文書データ28から、部分転置インデックス29を生成する(ステップS106)。ここでの部分転置インデックス29の生成処理は、上述したステップS102における処理と同じく、図5のフローチャートに示される。すなわち、ステップS102では、選択された(入換前の)文書データ18から部分転置インデックス29を生成したが、このステップS106では、ステップS102で用いられた文書データ18から複数の説明文の順序が入れ換えられた入換文書データ28から、部分転置インデックス29を生成する。
【0057】
そして、生成装置10の生成手段は、CPU11がRAM13等と協働することで、ステップS106で生成された部分転置インデックス29を、ステップS102で生成された部分転置インデックス29と比較して、容量が小さくなったかを判定する(ステップS107)。すなわち、入換文書データ28から生成された部分転置インデックス29では、入れ換え前の文書データ18から生成された部分転置インデックス29に比べて、説明文の順序が入れ換えられて生成されているので、抽出されるNグラムに変化はないが、それぞれのNグラムに対応付けられる出現位置(の差分)の値が変化する。そのため、値の大小によって割り当てられる符号が変化する可変長符号化を用いて生成された部分転置インデックス29のデータ容量は、入れ換え前後で変化しうる。ステップS107では、生成装置10の生成手段が、新たに生成された部分転置インデックス29のデータ容量が、元の部分転置インデックス29に比べて小さくなったかを判定する。
【0058】
部分転置インデックス29のデータ容量が小さくなっていれば(ステップS107;YES)、今回の部分転置インデックス29を採用して保持し(ステップS108)、ステップS104へと戻る。一方で、小さくなっていなければ(ステップS107;NO)、何もせずにステップS104へと戻る。すなわち、比較された2個の部分転置インデックス29のうち、容量の小さい方が、RAM13に保持される。
【0059】
その後、生成装置10は、処理をステップS104へと戻し、すべての組合せを選択し終えたか、を判定する。すなわち、選択された文書データ18が有する複数の説明文の順序についての入れ換え可能な組合せのうち、すべての組合せが選択され終わるまで、ステップS105〜S108の処理を繰り返す。例えば、図7のように文書データ18aが選択されている場合、入換文書データ28a〜28eまでの5個の組合せについて、順にステップS105〜S108の処理を繰り返す。その中で、それぞれの入換文書データ28a〜28eごとに部分転置インデックス29を生成して、それまでに保持された部分転置インデックス29よりも容量が小さくなると、新たに生成された部分転置インデックス29を保持し直す。このような処理によって、選択された文書データ18について、入れ換え可能な組合せのうちの最も容量の小さい部分転置インデックス29が、保持されることになる。
【0060】
そして、すべての組合せを選択し終えると(ステップS104;YES)、次に生成装置10の文書入換手段は、すべての文書データ18を選択し終えたか、を判定する(ステップS109)。選択し終えていないと(ステップS109;NO)、次の文書データ18を選択し(ステップS110)、処理はステップS102へと戻る。すなわち、複数の文書データ18のうち、すべての文書データ18が選択され終わるまで、ステップS102〜S108の処理を繰り返す。例えば、図3のように複数の文書データ18a〜18zのうち、それまで文書データ18aが選択されていた場合、ステップS110では次の文書データ18bが選択される。このように、生成装置10は、最後の文書データ18zについての処理が終わるまで、ステップS102〜S108の処理を繰り返す。
【0061】
その結果として、各文書データ18について、含まれる複数の説明文の順序についての入れ換え可能な組合せのうち、生成される部分転置インデックス29のデータ容量が最小となる組合せから生成された部分転置インデックス29が、それぞれRAM13に保持されることになる。
【0062】
最終的に、すべての文書データ18を選択し終えたら(ステップS109;YES)、生成装置10の合成手段は、CPU11がRAM13に保持されたすべての部分転置インデックス29から、全体の転置インデックス19を合成する(ステップS111)。そして、生成装置10は処理を終える。すなわち、ここまで生成されてきた各文書データ18についての部分転置インデックス29には、抽出されたNグラムが個別の文書データ18(または対応する入換文書データ28)においてどこに出現するかの情報が記載されていたが、ここでは最後に、複数の文書データ18の全体においてのNグラムの出現位置の情報を記載した転置インデックス19を生成する。
【0063】
それぞれの文書データ18ごとの部分転置インデックス29では、上記図6(b)で示したように、文書データ18から抽出されたNグラム(図6(b)ではモノグラム)と、その出現位置の差分とが対応付けられている。ステップS109では、このような部分転置インデックス29をあわせて、全体として1つの転置インデックス19とする。すなわち、異なる部分転置インデックス29が共通のNグラムを有し、それぞれに出現位置(の差分)が対応付けられていた場合、これらの出現位置(の差分)をまとめて、同じ1種類のNグラムに対応付けられるようにする。その結果、図8に示されるような転置インデックス19となる。
【0064】
転置インデックス19は、モノグラムの出現位置に関するファイルと、文書データ18の文字数に関するファイルと、から構成される。モノグラムの出現位置に関するファイルの構成は、上記図6(b)にて示された部分転置インデックス29の構成と同様であり、抽出されたモノグラムについて、隣接する出現位置との差分をとられた出現位置が対応付けられている。ここで、図6(b)の部分転置インデックス29は個別の文書データ18から生成されたものであったのに対して、図8の転置インデックス19は複数の文書データ18全体に対応するものであるため、各モノグラムに対してより多くの出現位置(の差分)が対応付けられている。
【0065】
また、文書データ18の文字数に関するファイルでは、それぞれの文書データ18a〜18z中の見出し語と説明文が、何文字の文字列から構成されるかの情報が記載されている。この情報は、述する検索装置20での検索処理において、検索文字列を構成するNグラムの出現位置が、複数の文書データ18のうちどの文書データ18における位置であるのかを特定するために使用される。
【0066】
なお、上記図6(b)における個別の文書データ18から生成された部分転置インデックス29の各Nグラムに対応付けられた最初の出現位置は、その文書データ18における先頭文字から何文字目に位置しているかの値であった。しかし、部分転置インデックス29から全体の転置インデックス19を合成する際、複数の文書データ18全体における出現位置を示すようにするために、前の文書データ18から抽出された同じNグラムに対応付けられた最後の出現位置からの差分を算出して、値を付け直す処理を行う。
【0067】
このような生成装置10における転置インデックス19の生成処理によって、それぞれの文書データ18においてデータ容量が最小となる部分転置インデックス29を用いて、複数の文書データ18全体の転置インデックス19を生成する。そのため、例えば携帯電話や電子辞書などのような小型の電子機器のような、使用できるデータ容量が限られた環境においても、データ容量が最小限に抑えられた転置インデックス19を用いて、検索処理を実現することができる。
【0068】
次に、生成装置10によって生成された転置インデックス19を用いて、所望の検索文字列が、複数の文書データ18のうちどの文書データ18に含まれているのかを特定するための検索装置20の検索処理について、図9のフローチャートを参照して説明する。
【0069】
検索処理が開始されると、まず検索装置20は、ユーザから入力された検索文字列を受け付ける(ステップS301)。すなわち、検索装置20の入力装置25に対して、ユーザが検索文字列を入力することで、検索処理が開始される。
【0070】
次に、検索装置20の抽出手段は、CPU21がRAM23等と協働することにより、受け付けられた検索文字列からNグラムを抽出する(ステップS302)。このとき、検索文字列がN文字の文字列であるとすると、NがNよりも大きい場合は、最大でN−N+1個のNグラムが抽出される。抽出されたNグラムは、RAM23に一時的に保持される。
【0071】
検索文字列からNグラムが抽出されると、検索装置20の位置取得手段は、CPU21の機能により、HDD24に記憶された転置インデックス19を用いて、抽出されたNグラムに対応付けられた出現位置を取得する(ステップS303)。例えば、検索文字列から「A」、「X」というモノグラムが抽出された場合は、転置インデックス19のモノグラム「A」およびモノグラム「X」に対応付けられた出現位置を取得する。
【0072】
このとき、転置インデックス19から直接取得される出現位置の値は、差分をとられた値であるので、複数の文書データ18の先頭文字から何文字目にあるかを示す値に変換する。具体的には、あるNグラムに対応付けられたi番目の出現位置については、1番目からi番目までの値の和をとることで、先頭文字から何文字目にあるかを示す値に変換することができる。このように取得され、変換された出現位置は、RAM23に一時的に保持される。
【0073】
そして、検索装置20の文書特定手段は、CPU21がRAM23等と協働することにより、取得された出現位置の連続性から、検索文字列を含む文書データ18を特定する(ステップS304)。すなわち、ここではまず、ステップS303において取得されたNグラムの出現位置が、1つの文書データ18の中で、検索文字列を構成するような連続した出現位置になっているかを判定する。
【0074】
例えば、検索文字列が「ABC」であったとして、そこからは「A」、「B」、「C」というモノグラムが順に抽出される。転置インデックス19から取得されるこれらのモノグラムの(上記変換された)出現位置の中にが、1文字ずつずれた値を示す出現位置があれば、その位置に所望の検索文字列「ABC」が存在することになる。
【0075】
そして、ステップS304では、そのような検索文字列を構成するような連続した出現位置が、複数の文書データ18のうちどの文書データ18の中に存在するのかを特定する。具体的には、検索文字列「ABC」を構成するような連続した位置にあるモノグラム「A」の(上記変換された)出現位置の値が、例えば「180」であるとする。このとき、転置インデックス19に記載された文書データ18の文字数に関するファイルから、個別の文書データ18の文字数を先頭から足していって、その和が「180」をはじめて超えたときの文書データ18の中に、所望の検索文字列が存在すると分かる。
【0076】
図8の例では、文書データ18aの文字数「120」と、文書データ18bの文字数「23」との和は「143」であり、「180」を超えない。一方で、次の文書データ18cの文字数を足すと「200」となり、「180」を超える。そのため、所望の検索文字列「ABC」は、文書データ18cの中にあることが分かる。ステップS304では、検索装置20の文書特定手段が、このように特定された文書データ18が複数あれば、それらをすべてRAM13に一時的に保持する。
【0077】
最後に、検索装置20は、出力装置26を用いることにより、特定された文書データ18をユーザへ出力する(ステップS305)。すなわち、例えばディスプレイ等に検索結果を表示する。そして、検索装置20は、検索処理を終了する。
【0078】
このとき、文書データ18の見出し語を表示するようにしてもよいし、HDD24に記憶されている(説明文の順序が入れ換えられる前の)文書データ18にアクセスして、特定された文書データ18を表示するようにしてもよい。また、検索結果は、出力装置26を用いて表示することに限られず、HDD24に記憶されるようにしてもよいし、通信制御装置27を介して出力されるようにしてもよい。
【0079】
このように、個別の文書データ18の中で説明文の順序が入れ換えられていても、そこから生成された転置インデックス19を用いて、複数の文書データ18のうちから所望の検索文字列を含む文書データ18を特定するという検索処理には影響を与えない。そのため、データ容量が小さくなるように、文書データ18を構成する説明文の順序を入れ換えて転置インデックス19を生成し、それを用いて検索をすることができる。このようなデータ容量が抑えられた転置インデックス19を用いることで、例えば携帯電話や電子辞書などのような小型の電子機器のような、使用できるデータ容量が限られた環境においても、使用するデータ容量を効率的に抑えながら、検索処理を実現することができる。
【0080】
なお、本発明は上記の実施形態に限定されず、種々の変形及び応用が可能である。
【0081】
例えば、本実施形態では、図3に示したように、文書データ18は見出し語と複数の説明文とから構成された。しかしこれに限られず、文書データ18の構成要素として、当該見出し語が説明された図面など、別の構成要素があってもよい。また、セパレータは、図3のようにスペースと読点とに限られない。句点、カンマ、ピリオド、ハイフン、コロン、セミコロン、括弧など、通常ユーザが検索文字列に含めないと考えられるものであれば、何でもセパレータになりうる。
【0082】
そして、転置インデックス19の構成要素は、図8に示したような構成要素に限られない。例えば、転置インデックス19は、文書データ18の文字数に関するファイルのかわりに、文書データ18の先頭文字位置に関するファイルを有していてもよい。すなわち、文書データ18の先頭文字が、複数の文書データ18全体の先頭文字から何文字目に位置するかの情報を、転置インデックス19が有していてもよい。
【0083】
文書データ18の先頭文字位置の情報は、先頭からその文書データ18までの文字数の和の情報に相当するので、文書データ18の文字数の情報に比べて、大きな値になりやすい。そのため、可変長符号化によって転置インデックス19を生成する場合、転置インデックス19のデータ容量が大きくなりやすい。しかし、その転置インデックス19を用いた検索時には、上記図9のステップS304にて、検索文字列を含む文書データ18を特定する処理の際に、文書データ18の文字数の和をとる必要がないため、検索処理を効率的なものにすることができる。
【0084】
また、本実施形態における生成装置10では、文書データ18は、例えば図1のようにHDD14内に記憶されるなどして生成装置10内に存在することに限られない。すなわち、例えば図10のように、文書データ18は、生成装置10内ではなくインターネット上に存在し、通信制御装置17を介して取得されうるものであってもよい。
【0085】
また、本実施形態における検索装置20では、上記の生成装置10と同様に、文書データ18は、例えば図2のようにHDD24内に記憶されるなどして検索装置20内に存在することに限られない。すなわち、例えば図11のように、文書データ18は、検索装置20内ではなくインターネット上に存在し、通信制御装置27を介して取得されうるものであってもよい。
【0086】
このような構成をとることで、図11の実施形態では図2でのものに比べ、検索装置20内に文書データ18を記憶する必要がなく、インターネットに適切に接続可能な環境であれば、小型の電子辞書のような限られた容量の装置においても実現しやすくなる。
【0087】
また、本発明での実施形態は、上述した実施形態に加え、上記生成装置10としてコンピュータ装置を機能させるためのコンピュータプログラムであってもよい。また、上記検索装置20としてコンピュータ装置を機能させるためのコンピュータプログラムであってもよい。
【0088】
上記コンピュータプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記憶することができる。
【0089】
また、上記コンピュータプログラムは、コンピュータプログラムが実行されるコンピュータ装置とは独立して、コンピュータ通信網を介して配付・販売することができる。また、上記情報記憶媒体は、コンピュータ装置とは独立して配付・販売することができる。
【符号の説明】
【0090】
10…生成装置、11…CPU、12…ROM、13…RAM、14…HDD、15…入力装置、16…出力装置、17…通信制御装置、18…文書データ、19…転置インデックス、20…検索装置、21…CPU、22…ROM、23…RAM、24…HDD、25…入力装置、26…出力装置、27…通信制御装置、28…入換文書データ、29…部分転置インデックス

【特許請求の範囲】
【請求項1】
それぞれが、見出し語と対応する複数の説明文とから構成される複数の文書データのうち、少なくとも1つの文書データの前記複数の説明文の順序を入れ換えて、入換文書データを作成する文書入換ステップと、
前記文書データもしくは前記作成された入換文書データから、「N文字の文字列であるNグラム(Nは自然数)」を抽出し、抽出されたNグラムのそれぞれについて、当該文書データもしくは当該入換文書データ中の出現位置を対応付けて、部分転置インデックスを生成する生成ステップと、
前記複数の文書データについて生成された複数の前記部分転置インデックスから、転置インデックスを合成する合成ステップと、
を備えることを特徴とする転置インデックスの生成方法。
【請求項2】
前記生成ステップでは、前記文書データおよび当該文書データから作成された入換文書データから、それぞれ前記部分転置インデックスを生成し、当該それぞれ生成された部分転置インデックスのうち、容量が小さい部分転置インデックスを選定し、
前記合成ステップでは、前記複数の文書データについて選定された複数の前記部分転置インデックスから、転置インデックスを合成する、
ことを特徴とする請求項1に記載の転置インデックスの生成方法。
【請求項3】
前記文書入換ステップでは、前記文書データから、前記順序の入れ換え可能な組合せで前記順序を入れ換えて、当該組合せの数の入換文書データを作成し、
前記生成ステップでは、前記文書データおよび当該文書データから作成された前記組合せの数の入換文書データから、それぞれ前記部分転置インデックスを生成し、当該それぞれ生成された部分転置インデックスのうち、容量が最小の部分転置インデックスを選定する、
ことを特徴とする請求項2に記載の転置インデックスの生成方法。
【請求項4】
前記生成ステップでは、複数の文書データのうち、見出し語と対応する単一の説明文とから構成される文書データからも、前記部分転置インデックスを生成する、
ことを特徴とする請求項1から3のいずれか1項に記載の転置インデックスの生成方法。
【請求項5】
前記生成ステップでは、前記抽出されたNグラムのそれぞれについて、当該Nグラムに対応付けられた出現位置と隣接する出現位置との差分を対応付けて、部分転置インデックスを生成する、
ことを特徴とする請求項1から4のいずれか1項に記載の転置インデックスの生成方法。
【請求項6】
検索文字列からNグラムを抽出する抽出ステップと、
請求項1から5のいずれか1項に記載の生成方法によって生成された転置インデックスから、前記検索文字列から抽出されたNグラムに対応付けられた出現位置を取得する位置取得ステップと、
前記取得された出現位置に基づいて、前記複数の文書データのうちから、前記検索文字列を含む文書データを特定する文書特定ステップと、
を備えることを特徴とする検索方法。
【請求項7】
それぞれが、見出し語と対応する複数の説明文とから構成される複数の文書データのうち、少なくとも1つの文書データの前記複数の説明文の順序を入れ換えて、入換文書データを作成する文書入換手段と、
前記文書データもしくは前記作成された入換文書データから、「N文字の文字列であるNグラム(Nは自然数)」を抽出し、抽出されたNグラムのそれぞれについて、当該文書データもしくは当該入換文書データ中の出現位置を対応付けて、部分転置インデックスを生成する生成手段と、
前記複数の文書データについて生成された複数の前記部分転置インデックスから、転置インデックスを合成する合成手段と、
を備えることを特徴とする転置インデックスの生成装置。
【請求項8】
検索文字列からNグラムを抽出する抽出手段と、
請求項1から5のいずれか1項に記載の生成方法によって生成された転置インデックスから、前記検索文字列から抽出されたNグラムに対応付けられた出現位置を取得する位置取得手段と、
前記取得された出現位置に基づいて、前記複数の文書データのうちから、前記検索文字列を含む文書データを特定する文書特定手段と、
を備えることを特徴とする検索装置。
【請求項9】
コンピュータを、
それぞれが、見出し語と対応する複数の説明文とから構成される複数の文書データのうち、少なくとも1つの文書データの前記複数の説明文の順序を入れ換えて、入換文書データを作成する文書入換手段、
前記文書データもしくは前記作成された入換文書データから、「N文字の文字列であるNグラム(Nは自然数)」を抽出し、抽出されたNグラムのそれぞれについて、当該文書データもしくは当該入換文書データ中の出現位置を対応付けて、部分転置インデックスを生成する生成手段、
前記複数の文書データについて生成された複数の前記部分転置インデックスから、転置インデックスを合成する合成手段、
として機能させるためのコンピュータプログラム。
【請求項10】
コンピュータを、
検索文字列からNグラムを抽出する抽出手段、
請求項1から5のいずれか1項に記載の生成方法によって生成された転置インデックスから、前記検索文字列から抽出されたNグラムに対応付けられた出現位置を取得する位置取得手段、
前記取得された出現位置に基づいて、前記複数の文書データのうちから、前記検索文字列を含む文書データを特定する文書特定手段、
として機能させるためのコンピュータプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate