(57)【特許請求の範囲】
【請求項１】
情報処理装置における転置インデックスの生成方法であって、
前記情報処理装置は、文書データを記憶している記憶手段と、前記記憶手段に記憶されている文書データに対する転置インデックスを生成する制御手段とを有し、
前記制御手段が、
前記文書データから、「Ｎ文字の文字列であるＮグラム（Ｎは自然数）」を、当該文書データ中での出現位置と対応付けて、抽出する文書抽出ステップと、
先頭のＭ文字（ＭはＮより小さい自然数）が共通なＮグラムを要素とするＮグラム群のいずれかに、前記抽出されたＮグラムを分類する分類ステップと、
前記Ｎグラム群のそれぞれについて、前記Ｎグラム群に分類されたＮグラムに対応付けられた出現位置を対応付けて、転置インデックスを生成する生成ステップと、
を実行することを特徴とする転置インデックスの生成方法。
【請求項２】
前記制御手段が実行する前記分類ステップでは、前記抽出されたＮグラムを分類しようとしているＮグラム群に分類されたＮグラムに対応付けられた出現位置の個数と、前記抽出されたＮグラムに対応付けられた出現位置の個数と、の和が所定の第１の個数を超える場合、当該Ｎグラム群とは異なるＮグラム群に前記抽出されたＮグラムを分類する、
ことを特徴とする請求項１に記載の転置インデックスの生成方法。
【請求項３】
前記制御手段が実行する前記分類ステップでは、前記抽出されたＮグラムを分類しようとしているＮグラム群に分類されたＮグラムの個数が所定の第２の個数である場合、当該Ｎグラム群とは異なるＮグラム群に、前記抽出されたＮグラムを分類する、
ことを特徴とする請求項１または２に記載の転置インデックスの生成方法。
【請求項４】
前記制御手段が実行する前記分類ステップでは、前記Ｎグラム群が所定の条件を満たすと、当該Ｎグラム群を複数のＮグラム群に分割する、
ことを特徴とする請求項１に記載の転置インデックスの生成方法。
【請求項５】
文書データから、「Ｎ文字の文字列であるＮグラム（Ｎは自然数）」を、当該文書データ中での出現位置と対応付けて、抽出する文書抽出手段と、
先頭のＭ文字（ＭはＮより小さい自然数）が共通なＮグラムを要素とするＮグラム群のいずれかに、前記抽出されたＮグラムを分類する分類手段と、
前記Ｎグラム群のそれぞれについて、前記Ｎグラム群に分類されたＮグラムに対応付けられた出現位置を対応付けて、転置インデックスを生成する生成手段と、
を備えることを特徴とする転置インデックスの生成装置。
【請求項６】
文書データを記憶している記憶手段と、
前記請求項１から４に記載された転置インデックスの生成方法で生成された転置インデックスを記憶する転置インデックス記憶手段と、
前記転置インデックスを用いて前記文書データを検索する制御手段とを有する情報処理装置における検索方法であって、
前記制御手段は、
検索文字列からＮグラムを抽出する検索抽出ステップと、
前記転置インデックスから、前記抽出されたＮグラムが分類されたＮグラム群に対応付けられた出現位置を取得する位置取得ステップと、
前記取得された出現位置に基づいて、前記文書データ中の前記検索文字列の位置を特定する文書特定ステップと、
を実行することを特徴とする検索方法。
【請求項７】
検索文字列からＮグラムを抽出する検索抽出手段と、
請求項１から４に記載の生成方法によって生成された転置インデックスから、前記抽出されたＮグラムが分類されたＮグラム群に対応付けられた出現位置を取得する位置取得手段と、
前記取得された出現位置に基づいて、前記文書データ中の前記検索文字列の位置を特定する文書特定手段と、
を備えることを特徴とする検索装置。
【請求項８】
コンピュータを、
文書データから、「Ｎ文字の文字列であるＮグラム（Ｎは自然数）」を、当該文書データ中での出現位置と対応付けて、抽出する文書抽出手段、
先頭のＭ文字（ＭはＮより小さい自然数）が共通なＮグラムを要素とするＮグラム群のいずれかに、前記抽出されたＮグラムを分類する分類手段、
前記Ｎグラム群のそれぞれについて、前記Ｎグラム群に分類されたＮグラムに対応付けられた出現位置を対応付けて、転置インデックスを生成する生成手段、
として機能させるためのコンピュータプログラム。
【請求項９】
コンピュータを、
検索文字列からＮグラムを抽出する検索抽出手段、
請求項１から４に記載の生成方法によって生成された転置インデックスから、前記抽出されたＮグラムが分類されたＮグラム群に対応付けられた出現位置を取得する位置取得手段、
前記取得された出現位置に基づいて、前記文書データ中の前記検索文字列の位置を特定する文書特定手段、
として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Ｎグラム検索に関し、とくにＮグラム検索のための転置インデックスの生成方法および生成装置、当該転置インデックスを用いた検索方法および検索装置、ならびにコンピュータプログラムに関する。
【背景技術】
【０００２】
文書の電子化の増大に伴い、これまでに蓄積されてきた大量の文書群から所望の文書を見つけ出す検索技術の重要性が高まっている。
【０００３】
英語などの多くの言語においては、単語を索引単位として索引ファイルを作成して、これを用いて高速な検索処理を実現することが一般的である。しかし、日本語の場合、スペース等によって単語の切れ目が明示的に示されないため、しばしば、Ｎグラムを索引単位とする方法が用いられている。
【０００４】
Ｎグラムとは、連続するＮ文字からなる部分文字列のことである。Ｎグラムによる索引ファイル（以下、転置インデックスと呼称する）の作成には、文字列にのみ基づくため、単語を認識する必要がないという利点がある。しかし、Ｎグラムによる索引ファイルは、単語を単位とするものに比べて、一般的にはデータサイズが大きくなりやすい。また、検索処理においても、検索時間が増大しやすいという問題がある。
【０００５】
上記のような索引ファイルのデータサイズや検索時間は、ＮグラムのＮの値をどのように設定したかによって変動する。Ｎの値を大きくすると、文書から抽出されるＮグラムの種類が多くなるため、一般的には索引ファイルのデータサイズは増大する。一方で、検索時間については、検索したい文字列の長さとの関係によっても異なるが、Ｎの値を大きくすると検索時間が短縮される場合が多い。例えば、非特許文献１には、異なるＮの値における検索処理の高速化の比較が記載されている。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】小川泰嗣，松田透，”ｎ−ｇｒａｍ索引を用いた効率的な文書検索法”，電子情報通信学会論文誌(D-I)，Vol.J82-D-I，No.1，pp.121-129，1999年1月
【発明の概要】
【発明が解決しようとする課題】
【０００７】
このようなＮグラムを用いた検索において、索引ファイルのデータサイズを抑えつつ、検索処理にかかる検索時間を短縮したい、との要望がある。とくに、例えば携帯電話や電子辞書などのような小型の電子機器では、使用できるデータ容量が限られているため、その中で用いられる索引ファイルはデータサイズを抑制せざるをない。このような限られた環境においても、高速な検索処理の実現が求められている。
【０００８】
本発明は、以上のような課題を解決するためのものであり、文書データ中の所望の文字列を効率的に検索でき、データサイズが適切に抑えられた転置インデックスの生成方法および生成装置、当該転置インデックスを用いた検索方法および検索装置、ならびに、コンピュータプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明の第１の観点に係る転置インデックスの生成方法は、
情報処理装置における転置インデックスの生成方法であって、
前記情報処理装置は、文書データを記憶している記憶手段と、前記記憶手段に記憶されている文書データに対する転置インデックスを生成する制御手段とを有し、
前記制御手段が、
前記文書データから、「Ｎ文字の文字列であるＮグラム（Ｎは自然数）」を、当該文書データ中での出現位置と対応付けて、抽出する文書抽出ステップと、
先頭のＭ文字（ＭはＮより小さい自然数）が共通なＮグラムを要素とするＮグラム群のいずれかに、前記抽出されたＮグラムを分類する分類ステップと、
前記Ｎグラム群のそれぞれについて、前記Ｎグラム群に分類されたＮグラムに対応付けられた出現位置を対応付けて、転置インデックスを生成する生成ステップと、
を実行することを特徴とする。
【００１０】
前記制御手段が実行する前記分類ステップでは、前記抽出されたＮグラムを分類しようとしているＮグラム群に分類されたＮグラムに対応付けられた出現位置の個数と、前記抽出されたＮグラムに対応付けられた出現位置の個数と、の和が所定の第１の個数を超える場合、当該Ｎグラム群とは異なるＮグラム群に前記抽出されたＮグラムを分類する、
ことが望ましい。
【００１１】
前記制御手段が実行する前記分類ステップでは、前記抽出されたＮグラムを分類しようとしているＮグラム群に分類されたＮグラムの個数が所定の第２の個数である場合、当該Ｎグラム群とは異なるＮグラム群に、前記抽出されたＮグラムを分類する、
ことが望ましい。
【００１２】
前記制御手段が実行する前記分類ステップでは、前記Ｎグラム群が所定の条件を満たすと、当該Ｎグラム群を複数のＮグラム群に分割する、
ことが望ましい。
【００１３】
上記目的を達成するため、本発明の第２の観点にかかる転置インデックスの生成装置は、
文書データから、「Ｎ文字の文字列であるＮグラム（Ｎは自然数）」を、当該文書データ中での出現位置と対応付けて、抽出する文書抽出手段と、
先頭のＭ文字（ＭはＮより小さい自然数）が共通なＮグラムを要素とするＮグラム群のいずれかに、前記抽出されたＮグラムを分類する分類手段と、
前記Ｎグラム群のそれぞれについて、前記Ｎグラム群に分類されたＮグラムに対応付けられた出現位置を対応付けて、転置インデックスを生成する生成手段と、
を備えることを特徴とする。
【００１４】
上記目的を達成するため、本発明の第３の観点に係る検索方法は、
文書データを記憶している記憶手段と、
上記の転置インデックスの生成方法で生成された転置インデックスを記憶する転置インデックス記憶手段と、
前記転置インデックスを用いて前記文書データを検索する制御手段とを有する情報処理装置における検索方法であって、
前記制御手段は、
検索文字列からＮグラムを抽出する検索抽出ステップと、
前記転置インデックスから、前記抽出されたＮグラムが分類されたＮグラム群に対応付けられた出現位置を取得する位置取得ステップと、
前記取得された出現位置に基づいて、前記文書データ中の前記検索文字列の位置を特定する文書特定ステップと、
を実行することを特徴とする。
【００１５】
上記目的を達成するため、本発明の第４の観点にかかる検索装置は、
検索文字列からＮグラムを抽出する検索抽出手段と、
上記の生成方法によって生成された転置インデックスから、前記抽出されたＮグラムが分類されたＮグラム群に対応付けられた出現位置を取得する位置取得手段と、
前記取得された出現位置に基づいて、前記文書データ中の前記検索文字列の位置を特定する文書特定手段と、
を備えることを特徴とする。
【００１６】
上記目的を達成するため、本発明の第５の観点にかかるコンピュータプログラムは、
コンピュータを、
文書データから、「Ｎ文字の文字列であるＮグラム（Ｎは自然数）」を、当該文書データ中での出現位置と対応付けて、抽出する文書抽出手段、
先頭のＭ文字（ＭはＮより小さい自然数）が共通なＮグラムを要素とするＮグラム群のいずれかに、前記抽出されたＮグラムを分類する分類手段、
前記Ｎグラム群のそれぞれについて、前記Ｎグラム群に分類されたＮグラムに対応付けられた出現位置を対応付けて、転置インデックスを生成する生成手段、
として機能させる。
【００１７】
上記目的を達成するため、本発明の第６の観点にかかるコンピュータプログラムは、
コンピュータを、
検索文字列からＮグラムを抽出する検索抽出手段、
上記の生成方法によって生成された転置インデックスから、前記抽出されたＮグラムが分類されたＮグラム群に対応付けられた出現位置を取得する位置取得手段、
前記取得された出現位置に基づいて、前記文書データ中の前記検索文字列の位置を特定する文書特定手段、
として機能させる。
【発明の効果】
【００１８】
本発明によれば、文書データ中の所望の文字列を効率的に検索でき、データサイズが適切に抑えられた転置インデックスの生成方法および生成装置、当該転置インデックスを用いた検索方法および検索装置、ならびに、コンピュータプログラムを提供することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明に係る転置インデックスを生成する生成装置の概要構成の例を示す図である。
【図２】本発明に係る転置インデックスを搭載した検索装置の概要構成の例を示す図である。
【図３】本発明に係る生成装置の生成処理の流れを示すフローチャートである。
【図４】文書データから抽出されたＮグラムと、Ｎグラムの文書データ中での出現位置と、の対応関係の例を示す図である。
【図５】実施形態１に係る、ＮグラムをＮグラム群へ分類する分類処理を示すフローチャートである。
【図６】ＮグラムがＮグラム群へ分類される様子を示す図である。
【図７】実施形態１に係る生成装置によって生成された転置インデックスの例を示す図である。
【図８】本発明に係る検索装置の検索処理の流れを示すフローチャートである。
【図９】実施形態２に係る、ＮグラムをＮグラム群へ分類する分類処理を示すフローチャートである。
【図１０】実施形態２に係る生成装置によって生成された転置インデックスの例を示す図である。
【図１１】実施形態３に係る生成装置の生成処理の流れを示すフローチャートである。
【図１２】本発明に係る転置インデックスを生成する生成装置の概要構成の別の例を示す図である。
【図１３】本発明に係る転置インデックスを搭載した検索装置の概要構成の別の例を示す図である。
【発明を実施するための形態】
【００２０】
以下、本発明の実施形態に係る転置インデックスの生成方法および生成装置、当該転置インデックスを用いた検索方法および検索装置について説明する。以下に説明する実施形態は説明のためのものであり、本発明の範囲を制限するものではない。
【００２１】
（実施形態１）
本実施形態では、コンピュータ装置を、図１に示されるような転置インデックスの生成装置として構成する。また、図１に示される生成装置１０によって、本実施形態に係る転置インデックスの生成方法が実現される。
【００２２】
生成装置１０は、ＣＰＵ（Central Processing Unit）１１、ＲＯＭ（Read Only Memory）１２、ＲＡＭ（Random Access Memory）１３、ＨＤＤ（Hard Disk Drive）１４、入力装置１５、出力装置１６、通信制御装置１７により構成される。各構成要素は、命令やデータを転送するための伝送経路であるシステムバスにより、相互に接続されている。
【００２３】
ＣＰＵ１１は、生成装置１０全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。
ＲＯＭ１２は、生成装置１０全体の動作制御に必要なコンピュータプログラムや各種データを記憶する。
ＲＡＭ１３は、データやコンピュータプログラムを一時的に記憶するためのもので、ＲＯＭ１２から読み出したコンピュータプログラムやデータ、その他処理の進行に必要なデータが保持される。
ＨＤＤ１４は、転置インデックスの生成処理の動作のために必要なデータ等を記憶する。
入力装置１５は、例えばキーボードやタッチパネル等によって構成され、ユーザからの各種入力を受け付ける。
出力装置１６は、例えばディスプレイ等によって構成され、生成装置１０の種々の処理結果を出力する。
通信制御装置１７は、生成装置１０をインターネット等のコンピュータ通信網に接続するためのものであり、コンピュータ通信網に接続してデータをやり取りする場合に必要となる。
【００２４】
そして、文書データ１８がＨＤＤ１４に記憶される。この文書データ１８は、検索の対象であり、ユーザは、所望の文字列がこの文書データ１８の中のどこに出現するかを、後述する検索装置２０を用いて検索する。このような検索に用いるために、生成装置１０は、文書データ１８をもとにして、転置インデックスを生成する。
【００２５】
具体的に、本実施形態では、生成装置１０の文書抽出手段が、文書データ１８から、「Ｎ文字の文字列であるＮグラム（Ｎは自然数）」を、当該文書データ１８中での出現位置と対応付けて、抽出する。このような文書抽出手段として、例えばＣＰＵ１１が、ＨＤＤ１４に記憶された文書データ１８にアクセスし、ＲＯＭ１２やＲＡＭ１３と協働することにより、実現される。
【００２６】
例えば、文書データ１８が、「あいうえお」という文字列で構成されている場合、この文書データ１８から、Ｎ＝２のときのＮグラム（バイグラム）を、「あい」、「いう」、「うえ」、「えお」の４個抽出する。そして、出現位置、すなわち各バイグラムが文書データ１８中の先頭の文字から何文字目に出現するかの情報を、各バイグラムに対応付ける。
【００２７】
そして、生成装置１０の分類手段が、先頭のＭ文字（ＭはＮより小さい自然数）が共通なＮグラムを要素とするＮグラム群のいずれかに、抽出されたＮグラムを分類する。このような分類手段として、例えばＣＰＵ１１が、同じくＲＯＭ１２やＲＡＭ１３と協働することで機能する。
【００２８】
ここで、Ｎグラム群とは、いくつかの（１つでもよい）Ｎグラムをまとめたグループを意味する。ここではＮグラム群にまとめることのできる条件として、ＮグラムのＮ文字列のうち、先頭のＭ文字が共通のＮグラム同士であることをとり、そうでないＮグラム同士は１つのＮグラム群には分類しない。
【００２９】
さらに、生成装置１０の生成手段が、Ｎグラム群のそれぞれについて、Ｎグラム群に分類されたＮグラムに対応付けられた出現位置を対応付けて、転置インデックスを生成する。このような生成手段として、ＣＰＵ１１が、ＲＯＭ１２やＲＡＭ１３と協働しながら、出力装置１６やＨＤＤ１４、あるいは通信制御装置１７を介して、生成された転置インデックスを出力することで機能する。  
【００３０】
すなわち、Ｎグラム群に対応付けられる出現位置の数は、そこに分類されたＮグラムの出現位置の数の和になる。生成された転置インデックスは、例えばＨＤＤ１４に記憶されて保存されることになる。
【００３１】
このような生成装置１０によって生成された転置インデックスは、検索装置に搭載され、検索処理に用いられる。本実施形態では、コンピュータ装置を、図２に示されるような検索装置として構成する。また、図２に示される検索装置２０によって、本実施形態に係る転置インデックスの検索方法が実現される。
【００３２】
検索装置２０は、ＣＰＵ２１、ＲＯＭ２２、ＲＡＭ２３、ＨＤＤ２４、入力装置２５、出力装置２６、通信制御装置２７により構成される。各構成要素は、命令やデータを転送するための伝送経路であるシステムバスにより、相互に接続されている。
【００３３】
これらの構成要素は、基本的には図１に示された生成装置１０の構成要素と同等なものである。すなわち、図１では、文書データ１８から転置インデックスを生成するために機能した各構成要素が、ここでは生成された転置インデックスを用いて検索処理を行うために機能する。
【００３４】
すなわち、ＣＰＵ２１は、検索装置２０全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。
ＲＯＭ２２は、検索装置２０全体の動作制御に必要なコンピュータプログラムや各種データを記憶する。
ＲＡＭ２３は、データやコンピュータプログラムを一時的に記憶するためのもので、ＲＯＭ２２から読み出したコンピュータプログラムやデータ、その他処理の進行に必要なデータが保持される。
ＨＤＤ２４は、検索処理の動作のために必要なデータ等を記憶する。
入力装置２５は、例えばキーボードやタッチパネル等によって構成され、ユーザからの各種入力を受け付ける。
出力装置２６は、例えばディスプレイ等によって構成され、検索装置２０の種々の処理結果を出力する。
通信制御装置２７は、検索装置２０をインターネット等のコンピュータ通信網に接続するためのものであり、コンピュータ通信網に接続してデータをやり取りする場合に必要となる。
【００３５】
そして、文書データ１８と、生成装置１０によって生成された転置インデックス１９とが、ＨＤＤ２４に記憶される。検索装置２０は、ＨＤＤ２４内の転置インデックス１９をもとに、ユーザによって指定された検索文字列が文書データ１８の中のどこに出現するかを特定する。
【００３６】
具体的に、本実施形態では、検索装置２０の検索抽出手段が、検索文字列からＮグラムを抽出する。このような検索抽出手段として、ＣＰＵ２１が、入力装置２５を介してユーザから検索文字列を受け付け、ＲＯＭ２２やＲＡＭ２３と協働することで機能する。
【００３７】
ここで検索文字列は、例えば入力装置２５によってユーザから受け付けられ、受け付けられた検索文字列から、例えばＣＰＵ２１が、一時的記憶領域としてのＲＡＭ２３と協働することによって、Ｎグラムを抽出する。
【００３８】
そして、検索装置２０の位置取得手段が、転置インデックス１９から、抽出されたＮグラムが分類されたＮグラム群に対応付けられた出現位置を取得する。このような位置取得手段として、ＣＰＵ２１が、ＨＤＤ２４に記憶された転置インデックス１９にアクセスし、ＲＯＭ２２やＲＡＭ２３と協働することで機能する。
【００３９】
すなわち、上記の生成装置１０によって生成された転置インデックス１９には、Ｎグラム群と、そこに分類されるＮグラムの出現位置と、が対応付けられている。ここでは、上記の検索抽出手段によって抽出されたＮグラムについて、分類されたＮグラム群を特定する。そして、特定されたＮグラム群に対応付けられた出現位置を取得することで、検索抽出手段によって抽出されたＮグラムの文書データ１８内での出現位置の候補を取得する。
【００４０】
さらに、検索装置２０の文書特定手段が、取得された出現位置に基づいて、文書データ１８中の検索文字列の位置を特定する。このような文書特定手段として、ＣＰＵ１１が、ＲＯＭ２２やＲＡＭ２３と協働しながら、出力装置２６や通信制御装置２７を介して、特定された結果を出力することで機能する。
【００４１】
このような構成によって実現される生成装置１０と検索装置２０における、処理の流れの詳細を説明する。ここではまず、図３を参照して、転置インデックス１９の生成処理について、フローチャートを用いて説明する。
【００４２】
生成装置１０が、例えば入力装置１５を介してユーザからの生成処理の開始の指示を受け付けることで、転置インデックス１９の生成処理を開始する。転置インデックス１９の生成処理が開始されると、まず生成装置１０の文書抽出手段は、ＣＰＵ１１の機能により、文書データ１８からＮグラムを抽出する（ステップＳ１０１）。すなわち、ＨＤＤ１４などに記録されている文書データ１８にアクセスして、文書データ１８を構成する文字列から、抽出できるＮグラムを抽出する。このとき、文書データ１８がＮｄｏｃ文字の文字列から構成されるとすると、Ｎｄｏｃ−Ｎ＋１個のＮグラムが抽出される。ここでＮの値は、生成装置１０によって予め定められている１種類の値であり、Ｎ＝２、Ｎ＝３、あるいはそれ以外の自然数の値をとるが、以下では説明のために、その都度Ｎ＝２やＮ＝３などの場合を用いて説明をする。
【００４３】
具体的に、例えば文書データ１８が「携帯電話」という文字列で構成されるとする。このとき、Ｎ＝２の場合、抽出されるＮグラム（バイグラム）は、前から順に「携帯」、「帯電」、「電話」、の３個（４−２＋１個）である。また、例えば、Ｎ＝３の場合、抽出されるＮグラム（トリグラム）は、前から順に「携帯電」、「帯電話」、の２個（４−３＋１個）である。
【００４４】
なお、ここで実際には、Ｎ＝２の場合は、「携帯電話」という文字列の末尾から「話」というＮグラム（モノグラム）も、上記の３個のバイグラムとともに抽出する。また、Ｎ＝３の場合は、末尾から「電話」というバイグラムと「話」というモノグラムも、上記の２個のトリグラムとともに抽出する。すなわち、文書データ１８の末尾の文字列からは、Ｎより小さいものも抽出する。この理由は、ここで生成された転置インデックス１９を用いて検索を行う際に、例えば「話」という検索語が指定された場合に、文書データ１８の末尾が正しく特定されるために必要となるからである。
【００４５】
次に、生成装置１０の文書抽出手段は、ＣＰＵ１１の機能により、抽出されたＮグラムのそれぞれについて、文書データ１８中の出現位置を対応付ける（ステップＳ１０２）。すなわち、ステップＳ１０１で抽出されたＮグラムが、文書データ１８中のどの位置にあったのかの情報を、抽出されたＮグラムそれぞれについて対応付ける。
【００４６】
具体的に、例えば上記のように文書データ１８が「携帯電話」という文字列で構成され、そこからバイグラム（Ｎ＝２）を抽出したとする。このとき、抽出された「携帯」というバイグラムは、文書データ１８の先頭に位置するので、例えば「１」という数字が対応付けられる。また、「帯電」というバイグラムは、先頭から２文字目に位置するので、「２」という数字が対応付けられる。さらに、「電話」というバイグラムは、先頭から３文字目に位置するので、「３」という数字が対応付けられる。
【００４７】
なお、ステップＳ１０２における対応付けの処理は、ステップＳ１０１における抽出処理がすべてのＮグラムについて終了した後に行われるように示されているが、本実施形態では必ずしもこれに限られない。すなわち、文書データ１８からＮグラムを１個抽出するごとに、同時にそのＮグラムに出現位置を対応付けながら抽出してもよい。
【００４８】
そして、生成装置１０のＣＰＵ１１は、出現位置が対応付けられたＮグラムを、文字の配列順に並べて保持する（ステップＳ１０３）。すなわち、Ｎグラムを構成する文字の配列順（例えば五十音順やアルファベット順）に並べて、それらを例えばＲＡＭ１３に記憶して保持する。
【００４９】
このように並べられたＮグラムと出現位置との対応関係について、図４を参照してより詳細に説明する。図４では、上記のように文書データ１８が「携帯電話」という４個の文字で構成されるものではなく、より大きな文書データ１８であって、より多数の文字を含む文書データ１８を用いた場合を想定している。そして、図４には、このような多数の文字を含む文書データ１８から抽出されたバイグラムと、各バイグラムが文書データ１８中の何文字目に位置しているかを表す出現位置とが、対応付けられて配置されている。
【００５０】
具体的に、図４では、最初に配置された「ああ」というバイグラムには、「５」、「２２」、「３３」、「３５」、「８７」、「１２０」という６個の出現位置が対応付けられている。これはすなわち、文書データ１８中に「ああ」というバイグラムが、先頭からそれぞれの文字列目の位置に６回出現するということを意味するものである。同様に、図４では、次に配置された「あい」というバイグラムには、「６９」、「１５５」が対応付けられ、さらに「あう」というバイグラムには、「１０」、「４８」、「９８」、「１３４」が対応付けられ、等というように、文書データ１８から抽出されるすべてのバイグラムについて、出現位置が対応付けられている。
【００５１】
このように、Ｎグラム（図４の例ではバイグラム）とそのＮグラムが文書データ１８中に出現する位置とが対応付けられたものについて、いわゆる通常のＮグラム検索においては、これが転置インデックスとして用いられる。すなわち、従来から公知のＮグラム検索では、あらかじめ検索対象の文書データ１８から、典型的には図４のように構成される転置インデックスを作成し、保持しておく。そして、検索時には、保持された転置インデックスを参照して、検索文字列を構成するＮグラムの出現位置を取得し、これをもとに検索文字列が文書データ１８中のどの位置にあるのかを特定する。これに対して本発明では、このような従来から公知の転置インデックスをさらに改良して、転置インデックスのデータサイズと検索処理の効率とを、より柔軟に設計可能な転置インデックスの生成方法を提供する。
【００５２】
そのために、図３に戻って、生成装置１０の分類手段が、ＣＰＵ１１やＲＡＭ１３等の機能により、このように出現位置が対応付けられた保持されているＮグラムを、Ｎグラム群に分類する（ステップＳ１０４）。ここでＮグラム群とは、いくつか（１つでもよい）のＮグラムをまとめたグループのことである。以下、このようなグループへ、それぞれのＮグラムがどのように分類されていくかの流れの詳細を、図５のフローチャートを参照しながら説明する。
【００５３】
図５において、Ｎグラムの分類処理が開始されると、生成装置１０の分類手段は、まず、最初のＮグラムに着目する（ステップＳ２０１）。文書データ１８から抽出されたＮグラムは、ステップＳ１０３において文字の配列順に並べられているので、ここでは文字の配列順に先頭のＮグラムに着目する。上記の図４を例にとって説明すると、最初のバイグラム「ああ」に着目することになる。
【００５４】
次に、生成装置１０の分類手段は、ＲＡＭ１３等を用いて、空のＮグラム群を作成し、そこに最初のＮグラムを分類する（ステップＳ２０２）。すなわちここでは、ステップＳ２０１にて着目された最初のＮグラムを分類するための最初のＮグラム群が作成されることになる。上記の図４の例では、着目された「ああ」というバイグラムを分類するための新たなバイグラム群が作成されることになる。
【００５５】
そして、生成装置１０の分類手段は、次のＮグラムに着目する（ステップＳ２０３）。上記の図４の例では、文字列順に２番目のバイグラムである「あい」に着目することになる。
【００５６】
ここで、生成装置１０の分類手段は、ＣＰＵ１１の機能により、着目されたＮグラムの先頭のＭ文字は、最後に作成されたＮグラム群に分類されたＮグラムの先頭のＭ文字に、一致するか、を判定する（ステップＳ２０４）。ここで、ＭはＮより小さい自然数であるとする。すなわち、上記の図５の例の場合は、Ｎグラムとしてバイグラムを採用しているので、Ｎ＝２であり、Ｍはそれより小さい自然数、すなわちＭ＝１となる。
【００５７】
なお、例えば別の例として、Ｎが２より大きな値の場合は、Ｍの値のとり方として、Ｍ＝１〜Ｎ−１まで複数の候補があることになる。この場合は、これら複数の候補のうち、生成装置１０によっていずれか１種類の値が予め定められている。そして、そのＭの値をもとに、ステップＳ２０４では、着目されたＮグラムの先頭のＭ文字が、最後に作成されたＮグラム群に分類されたＮグラムの先頭のＭ文字に一致するか、が判定される。
【００５８】
そして、最後に作成されたＮグラム群は、ここではステップＳ２０２において作成されたＮグラム群となり、上記の図４の例の場合は、最初のバイグラム「ああ」が分類されているバイグラム群ということになる。このとき、現在着目されているバイグラム「あい」の先頭の１文字「あ」は、最後に作成されたバイグラム群に分類されたバイグラム「ああ」の先頭の１文字「あ」に、一致しているので、ここでの判定はＹＥＳとなる。
【００５９】
このように、一致していると判定されると（ステップＳ２０４；ＹＥＳ）、生成装置１０の分類手段は、着目されたＮグラムをその（最後に作成された）Ｎグラム群に分類すると、出現位置の個数の和は、所定の個数を超えるか、を判定する（ステップＳ２０５）。
【００６０】
具体的に、例えばここでは、所定の個数を「１０個」として説明する。このとき、上記の図４の例では、着目されたバイグラム「あい」には２個の出現位置が対応付けられており、最後に作成されたバイグラム群に分類されたバイグラム「ああ」には６個の出現位置が対応付けられているので、出現位置の個数の和は、「８個」となる。これは、所定の個数である「１０個」よりも小さいので、ステップＳ２０５での判定はＮＯとなる。
【００６１】
出現位置の個数の和が所定の個数を超えないと判定されると（ステップＳ２０５；ＮＯ）、生成装置１０は、着目されたＮグラムを、その（最後に作成された）Ｎグラム群に分類する（ステップＳ２０６）。上記の図４の例では、着目されたバイグラム「あい」を、バイグラム「ああ」がすでに分類されているＮグラム群に分類する。その結果、「ああ」と「あい」という２個のバイグラムを要素にもつＮグラム群ができる。
【００６２】
この後、生成装置１０の分類手段は、すべてのＮグラムに着目し終えたか、を判定する（ステップＳ２０７）。着目し終えてなければ（ステップＳ２０７；ＮＯ）、処理はステップＳ２０３へ戻り、次のＮグラムに着目して、再び分類処理を行うことになる。上記の図４の例では、３番目のバイグラム「あう」が着目されて、２番目のバイグラム「あい」に対して行われた分類処理が行われることになる。
【００６３】
ここでは具体的に、バイグラム「あう」が着目されたとして説明する。まず、着目されたバイグラム「あう」について、ステップＳ２０４において、先頭の１文字は、最後に作成されたバイグラム群に分類されたバイグラムの先頭の１文字に、一致するか、が判定される。ここでは、最後に作成されたバイグラム群にはすでに「ああ」と「あい」が分類されており、このバイグラム群に分類されたバイグラムの先頭の１文字「あ」は、着目されたバイグラム「あう」の先頭の１文字「あ」と、一致するので、ここでの判定はＹＥＳとなる。
【００６４】
そして、バイグラム「あう」について、ステップＳ２０５において、そのバイグラム群に分類すると、出現位置の個数の和は所定の個数を超えるか、が判定される。バイグラム群の要素である「ああ」と「あい」は、図４のようにそれぞれ６個と２個の出現位置が対応付けられている。一方、着目されたバイグラム「あう」は、図４により、出現位置が４個対応付けられている。従って、出現位置の個数の和は、「１２個」（６＋２＋４個）となる。そのため、所定の個数を上記のように「１０個」とすると、所定の個数を超えることになるので、ここではＹＥＳと判定される。
【００６５】
このように、出現位置の個数の和が所定の個数を超えると判定されると（ステップＳ２０５；ＹＥＳ）、生成装置１０は、新たなＮグラム群を作成し、そこに着目されたＮグラムを分類する（ステップＳ２０８）。すなわち、ここではすでに存在するＮグラム群とは別のＮグラム群を作成することになる。具体的に、「ああ」と「あい」という２個のバイグラムを要素とするバイグラム群とは別の新たなバイグラム群を作成して、そこにここで着目されているバイグラム「あう」を分類する。
【００６６】
そして、生成装置１０の処理は再びステップＳ２０７へ移行し、すべてのＮグラムに着目し終えてなければ、またステップＳ２０３へ戻って、次のＮグラムに着目して分類することになる。
【００６７】
そしてここから、処理がさらに先に進んだ場合について説明する。具体的には、上記の図４の例において、バイグラム「ああ」、「あい」、「あう」からさらに処理が進んで、バイグラム「あ和」までの処理が完了して、次にバイグラム「いあ」がステップＳ２０３において着目された場合を例にとる。すなわち、先頭の１文字が「あ」であるバイグラムはすべて分類処理が終了し、先頭の１文字が「い」である最初のバイグラムに着目された場合について、以下に説明する。
【００６８】
このとき、これまでと同様に、ステップＳ２０４において、着目されたバイグラム「いあ」の先頭の１文字は、最後に作成されたバイグラム群に分類されたバイグラムの先頭の１文字に、一致するか、が判定される。ここで、最後に作成されたバイグラム群は、少なくとも１個前に着目されたバイグラム「あ和」を要素にもつので、他に要素をもっていたとしても、先頭の１文字が「あ」であるバイグラムを要素にもつことになる。従って、着目されたバイグラム「いあ」の先頭の１文字「い」とは一致しないことになり、ここでの判定はＮＯとなる。
【００６９】
一致しないと判定されると（ステップＳ２０４；ＮＯ）、生成装置１０の処理は、ステップＳ２０８へ移行する。すなわち、「いあ」を分類するべき新たなバイグラム群を作成し、そこに着目されたバイグラムである「いあ」を分類する。
【００７０】
このステップＳ２０８には、上述したバイグラム「あう」を例にとって説明したときは、ステップＳ２０５でＹＥＳと判定されることを経由して到達した。すなわち、着目されているＮグラムと、分類しようとしているＮグラム群の要素と、の先頭のＭ文字が一致している場合は、着目されているＮグラムをそのＮグラム群に分類してしまうと、出現位置の個数の和が所定の個数を超えてしまう場合に、新たなＮグラム群を作成した。しかし、着目されているＮグラムと、分類しようとしているＮグラム群の要素と、の先頭のＭ文字が一致していない場合は、出現位置の個数の和にかかわらずに、新たなＮグラム群を作成して、そこに着目されているＮグラムを分類することになる。
【００７１】
このように、着目されたＮグラムを、すでにあるＮグラム群に分類してよいかを判定していくことで、先頭のＭ文字が共通なＮグラムを要素とし、かつ要素であるＮグラムの出現位置の個数の和が所定の個数を超えないＮグラム群を作成することができる。
【００７２】
このような分類処理を、抽出されたＮグラムの種類の数だけ繰り返し、ＮグラムをＮグラム群に分類していく。そして、ステップＳ２０７において、すべてのＮグラムに着目し終えたと判定されると（ステップＳ２０７；ＹＥＳ）、この分類処理は終了する。
【００７３】
その結果、図６に示されるように、Ｎグラムが先頭から数個ごとにＮグラム群としてまとめられる。すなわち、図６は、図４のように文書データ１８中での出現位置が対応付けられて並べられたバイグラムが、図５の分類処理を経て、バイグラム群に分類された後の様子を示している。具体的に、先頭から、バイグラム「ああ」と「あい」が１つのバイグラム群に分類され、「あう」と「あえ」と「あお」が１つのバイグラム群に分類され、というように、すべてのバイグラムがいずれかのバイグラム群に分類されることになる。
【００７４】
このようにＮグラム群に分類された後、図３に戻って、転置インデックス１９の生成処理はステップＳ１０５へ移行する。すなわち、生成装置１０は、Ｎグラム群のそれぞれについて、そこに分類されたＮグラムの文書データ１８中の出現位置を対応付ける（ステップＳ１０５）。すなわち、文書データ１８中でのＮグラムの出現位置は、図４および図６では個々のＮグラムに対応付けられていたが、ここでそれぞれのＮグラムが分類されたＮグラム群に改めて対応付け直す。
【００７５】
具体的に、図４および図６では、バイグラム「ああ」には、「５」、「２２」、「３３」、「３５」、「８７」、「１２０」という６個の出現位置が対応付けられており、バイグラム「あい」には、「６９」、「１５５」という２個の出現位置が対応付けられている。ここでは、これら２個のバイグラムを要素とするバイグラム群に、これらあわせて８個の出現位置が対応付けられることになる。
【００７６】
そして、最後に生成装置１０は、対応付けられた出現位置を昇順に並べて、転置インデックス１９を生成する（ステップＳ１０６）。その結果、図７に示されるような転置インデックス１９が生成される。図７では、図６においてバイグラム群に分類されて、さらにそれまで個々のバイグラムに対応付けられていた出現位置が、バイグラム群に対応付けられている。具体的に、「ああ」と「あい」のバイグラムを要素とするバイグラム群には、「５」、「２２」、「３３」、「３５」、「６９」、「８７」、「１２０」、「１５５」という出現位置が、昇順に並べられて対応付けられている。
【００７７】
このように、本実施形態における生成装置１０は、先頭のＭ文字が共通なＮグラムを要素とし、かつ要素であるＮグラムの出現位置の個数の和が所定の個数を超えないＮグラム群を作成し、それぞれのＮグラム群に分類されたＮグラムに対応付けられた出現位置が対応付けられた転置インデックス１９を生成することができる。
【００７８】
このような転置インデックス１９は、Ｎグラム群に分類されない通常の転置インデックスに比べて、データサイズを小さく抑えることができる。なぜなら、いくつかのＮグラムがＮグラム群にまとめられている分だけ、種類が少なくなり、１種類あたりに対応付けられる出現位置の個数が多くなって、よりデータの圧縮効率を上げることができるからである。このとき、上述した図５のステップＳ２０５において用いられた、１つのＮグラム群に分類できる出現位置の個数の上限を表す「所定の個数」を大きな値にすればするほど、１つのＮグラム群にまとめられるＮグラムの種類が多くなり、よりデータサイズを小さく抑えることができるようになる。
【００７９】
しかし一方で、１つのＮグラム群に分類できる「所定の個数」を大きな値にすると、１つのＮグラム群に分類される先頭のＭ文字が共通なＮグラムの個数が多くなる。これはすなわち、Ｍグラムを単位とする転置インデックスが生成されることと、同じことになる。一般的に、単位となるＮグラムのＮの値が小さくなると、転置インデックスのデータサイズは小さくなるが、それを用いた検索処理の速度が遅くなる場合が多い。データサイズが小さくなる理由については、Ｎの値が小さいと、上記と同じ理由により、１つのＮグラムの単位に対応付けられる出現位置の個数が多くなって、よりデータサイズを小さく抑えることができるからである。一方で、検索処理の速度が遅くなる理由については、後述する検索処理のフローチャートにおいて説明するように、１つのＮグラムの単位に対応付けられる出現位置の個数が多くなることで、検索時に、検索したい文字列の文書データ１８中での位置の候補が多くなって、絞り込むのに時間がかかるからである。
【００８０】
そのため、本実施形態では、「所定の個数」を適切な値に設定することで、Ｎグラムを単位とする転置インデックスと、Ｍグラムを単位とする転置インデックスとの間の特徴をもつ転置インデックス１９を生成する。一般的に、「所定の個数」が小さな値のときは、生成される転置インデックス１９はＮグラムを単位とする転置インデックスに近いものとなり、逆に、「所定の個数」が大きな値のときは、生成される転置インデックス１９はＭグラムを単位とする転置インデックスに近いものとなる。
【００８１】
そして、ここからは、このようにして生成された転置インデックス１９を用いたとき、検索処理がどのようになるかを、以下に図８のフローチャートを参照して、説明する。
【００８２】
図８のフローチャートにおいて、検索処理が開始されると、まず検索装置２０は、ユーザから入力された検索文字列を受け付ける（ステップＳ３０１）。すなわちここで、ユーザは検索したい文字列を例えば入力装置２５を用いて入力する。そして、検索装置２０は、その検索文字列を受け付ける。
【００８３】
次に、検索装置２０の検索抽出手段は、ＣＰＵ２１とＲＡＭ２３等の機能により、受け付けられた検索文字列からＮグラムを抽出する（ステップＳ３０２）。このとき、検索文字列がＮｓ文字の文字列であるとすると、ＮｓがＮよりも大きい場合は、最大でＮｓ−Ｎ＋１個のＮグラムが抽出されうる。具体的に、例えばユーザが「あいうえお」という検索文字列を入力したとして、ここからバイグラム（Ｎ＝２）を抽出する場合を例にとって説明をする。この「あいうえお」という５文字の検索文字列からは、先頭から、「あい」、「いう」、「うえ」、「えお」という４個（５−２＋１個）のバイグラムが抽出される。
【００８４】
なお、ここではさらに、検索文字列の末尾の文字である「お」が、モノグラムとして抽出される。このモノグラムは、後述するステップＳ３０４において、検索文字列の位置を特定するために必要となるものである。
【００８５】
このように検索文字列からＮグラムが抽出された後、検索装置２０の位置取得手段は、ＣＰＵ２１とＲＡＭ２３等の機能により、転置インデックス１９を用いて、抽出されたＮグラムが分類されたＮグラム群を特定し、特定されたＮグラム群に対応付けられた出現位置を取得する（ステップＳ３０３）。すなわち、生成装置１０によって生成され、例えばＨＤＤ２４に記憶された転置インデックス１９にアクセスして、文書データ１８中における出現位置の候補を拾い上げる。
【００８６】
この後、検索装置２０の文書特定手段は、ＣＰＵ２１の機能により、取得された出現位置に基づいて、文書データ１８中の検索文字列の位置を特定する（ステップＳ３０４）。すなわち、ステップＳ３０３において取得された出現位置は、Ｎグラム群単位での出現位置であったため、ここではまだ、所望の検索文字列の出現位置の候補である。そのため、ここでは、取得された出現位置の中から、所望の検索文字列の位置を指し示すものを絞り込む。具体的には、Ｎグラムそれぞれについて取得された出現位置の連続性を調べる。
【００８７】
具体的に、上記のような検索文字列「あいうえお」から４個のバイグラム「あい」、「いう」、「うえ」、「えお」が抽出された例の場合であって、図７のような転置インデックス１９が生成装置１０によって生成されていた場合について説明する。このとき、バイグラム「あい」が分類されたバイグラム群には、「５」、「２２」、「３３」、「３５」、「６９」、「８７」、「１２０」、「１５５」という８個の出現位置が対応付けられているので、これらを取得する。そして、バイグラム「いう」が分類されたバイグラム群には、「８」、「２９」、「５０」、「５４」、「６４」、「７０」、「８９」、「１８５」という８個の出現位置が対応付けられているので、これらを取得する。
【００８８】
このとき、取得された「いう」についての８個の出現位置のうち、「あい」についての出現位置との連続性を考慮して、１文字ずれた出現位置にあるものに着目する。具体的に、「あい」の出現位置「６９」と、「いう」の出現位置「７０」に、着目する。すなわち、これら以外の出現位置については、検索文字列を構成するバイグラムの出現位置ではないとして、候補から除外することになる。
【００８９】
同様に、「うえ」と「えお」についても、転置インデックス１９からこれらが分類されたバイグラム群に対応付けられた出現位置を取得する。そして、検索文字列を構成する前後のバイグラムとの連続性を考慮して、取得された出現位置からさらに絞り込む。具体的には、「いう」についての出現位置「７０」に対して、１文字ずつずれた位置である「うえ」についての出現位置「７１」と、「えお」についての出現位置「７２」に、着目する。
【００９０】
さらに、検索文字列の末尾について抽出されたモノグラム「お」についても同様な処理をとる。ここで、上記のようなバイグラムと異なり、この場合だけモノグラムであるため、転置インデックス１９のバイグラム群のうち、「お」から始まるバイグラムを要素とするすべてのバイグラム群についての出現位置を取得する。そして、そのような「お」から始まるバイグラム群の中に、上記の「えお」についての出現位置「７２」よりも１文字ずれた「７３」を出現位置にもつバイグラム群があれば、検索文字列「あいうえお」について抽出されたすべてのバイグラム（およびモノグラム）の出現位置についての連続性があると判断できることになる。
【００９１】
この後、最後に、検索装置２０は、特定された位置をユーザへ出力して（ステップＳ３０５）、検索処理を終える。すなわち、例えば出力装置２６によって、ユーザから受け付けられた検索文字列が文書データ１８中のどこにあるのかを検索結果として出力して、検索を終える。
【００９２】
このように、本実施形態における検索装置２０は、あらかじめ生成装置１０によって生成された転置インデックス１９を用いることで、文書データ１８にアクセスすることなく、所望の検索文字列が文書データ１８内のどの位置にあるのかを検索することができる。
【００９３】
このような検索処理は、上述したように、Ｎグラムを単位とする転置インデックスを用いた場合と、Ｍグラムを単位とする転置インデックスを用いた場合との、間の特徴を示すものとなる。この理由を、以下に説明する。
【００９４】
本実施形態における生成装置１０によって生成された転置インデックス１９は、先頭のＭ文字（ＭはＮより小さい自然数）が共通のＮグラムが、「所定の個数」を上限としてＮグラム群を単位として、まとめられている。まず、Ｎグラム単位の転置インデックスを用いた場合と比べて、１単位に対応付けられた出現位置の個数は多くなるため、図８のステップＳ３０３において、検索文字列から抽出されたＮグラムについての出現位置を転置インデックス１９から取得する際に、多くの出現位置が取得されることになって、ステップＳ３０４での位置の特定処理に時間がかかり、検索処理の速度が遅くなることにつながる。一方で、Ｍグラム単位の転置インデックスを用いた場合と比べて、１単位に対応付けられた出現位置の個数は少なくなるため、上記とは逆の理由により、検索処理の速度が速くなることにつながる。
【００９５】
そのため、生成装置１０によって生成された転置インデックス１９によって、検索装置２０は、Ｎグラムを単位とする転置インデックスを用いた場合と、Ｍグラムを単位とする転置インデックスを用いた場合との、間の特徴を示すことになる。
【００９６】
以上により、実施形態１では、生成装置１０が、先頭のＭ文字が共通なＮグラムを要素とするＮグラム群と、その要素であるＮグラムの文書データ１８中の出現位置と、が対応付けられた転置インデックス１９を生成する。そして、検索装置２０が、生成された転置インデックス１９に基づいて、ユーザにより指定された検索文字列が文書データ１８中のどこに出現するのかを検索する。
【００９７】
このような生成装置１０によって生成された転置インデックス１９は、Ｎグラムを単位とする転置インデックスに比べて、データサイズを小さくなり、Ｍグラムを単位とする転置インデックスに比べて、データサイズが大きくなる。また、このような転置インデックス１９を用いた検索装置２０では、Ｎグラムを単位とする転置インデックスを用いた場合に比べて、処理速度が遅くなる場合が多く、Ｍグラムを単位とする転置インデックスを用いた場合に比べて、処理速度が速くなる場合が多い。
【００９８】
その結果として、Ｎグラムを用いた場合と、Ｍグラムを用いた場合と、の間の特徴をもった検索装置等を提供することができる。すなわち、転置インデックスのデータサイズを抑えることと、高い検索処理速度と、を両立することができる。そのため、例えば携帯電話や電子辞書といった小型の電子機器のような、使用可能なデータ容量が制限されている環境においても、転置インデックスのデータサイズを小さく抑えつつ、なるべく高い処理速度で検索したいという要望を満たすことができるようになる。
【００９９】
（実施形態２）
次に、本発明の実施形態２について説明する。実施形態１では、生成装置１０は、Ｎグラムの出現位置の個数と、そのＮグラムを分類しようとしているＮグラム群にすでに分類されているＮグラムの出現位置の個数と、の和が所定の個数を超えている場合に、そのＮグラムを分類するための新たなＮグラム群を別に作成した。
【０１００】
それに対して、実施形態２では、出現位置の個数ではなく、Ｎグラム群に分類されているＮグラムの個数（何種類のＮグラムがあるか）に着目する。すなわち、実施形態２における生成装置１０は、Ｎグラムを分類しようとしているＮグラム群にすでに分類されているＮグラムの個数が、所定の個数であった場合に、そのＮグラムを分類するための新たなＮグラム群を別に作成する。以下に、図９のフローチャートを参照して、本実施形態における生成装置１０の生成処理の流れを説明する。
【０１０１】
図９におけるフローチャートは、上述した実施形態１におけるフローチャート（図５）と基本的には同様のものであるが、ここでは、図５におけるステップＳ２０５の処理が、別の処理（図９の点線内）に置き換わっている。
【０１０２】
すなわち、ステップＳ２０４において、着目されたＮグラムの先頭のＭ文字が、最後に作成されたＮグラム群に分類されたＮグラムの先頭のＭ文字に一致すると判定された後（ステップＳ２０４；ＹＥＳ）、実施形態１における生成装置１０は、着目されたＮグラムを、最後に作成されたＮグラム群に分類する際に、出現位置の個数の和をとり、その和が所定の個数を超えるか、を判定した。これに対して、本実施形態における生成装置１０は、最後に作成されたＮグラム群にすでに分類されているＮグラムの個数が、所定の個数（実施形態１における所定の個数と同じ個数である必要はない）であるか、を判定する（ステップＳ４０１）。
【０１０３】
所定の個数でなかった場合は（ステップＳ４０１；ＮＯ）、着目されたＮグラムを、そのＮグラム群に分類する（ステップＳ２０６）。一方で、所定の個数であった場合は（ステップＳ４０１；ＹＥＳ）、新たなＮグラム群を作成し、そこに着目されたＮグラムを分類する（ステップＳ２０８）。すなわち、ここでの「所定の個数」は、１つのＮグラム群に分類可能なＮグラムの個数の上限に相当するものである。そして、１つのＮグラム群がもつＮグラムの個数に上限を設けて、分類されたＮグラムがその上限に達すると、次のＮグラムについては、それを分類するための新たなＮグラム群を作成する。
【０１０４】
このような生成処理によって生成された転置インデックス１９は、図１０に示すようなものになる。図１０では、例として、１つのバイグラム群に分類可能なバイグラムの個数の上限である「所定の個数」を、「３個」に設定した場合について示している。このとき、１つのバイグラム群には、基本的には３個ずつのバイグラムが分類される。
【０１０５】
具体的に、図１０では、先頭から、バイグラム「ああ」、「あい」、「あう」が１つのバイグラム群にまとめられ、バイグラム「あえ」、「あお」、「あか」が１つのバイグラム群にまとめられ、というように、３個ずつのバイグラムが１つのバイグラム群にまとめられている。そして、図１０では、まとめられたバイグラム群のそれぞれには、文書データ１８中における出現位置が対応付けられている。これらの出現位置は、実施形態１と同様に、バイグラム群の要素のバイグラムのいずれかが、文書データ１８中において出現する位置に相当し、出現する数だけバイグラム群に対応付けられている。
【０１０６】
すなわち、実施形態１において生成された転置インデックス１９（図７）は、出現位置の個数の和をもとにして、バイグラムをバイグラム群に分類されていたので、１つのバイグラム群がもつバイグラムの数は一定でなく、１つのバイグラム群に対応付けられた出現位置の個数がほぼ一定なものとなった。これに対して、本実施形態での転置インデックス１９（図１０）は、１つのバイグラム群に対応付けられた出現位置の個数はあまり一定なものとはならずに、要素となるバイグラムの個数が、ほぼ一定なものとなる。
【０１０７】
以上により、実施形態２では、出現位置の個数ではなく、Ｎグラム群に分類されているＮグラムの個数に着目して、Ｎグラムの個数が上限を超えないように、ＮグラムをＮグラム群に分類していく。その結果、１つのＮグラム群にほぼ同じ個数のＮグラムが分類された転置インデックス１９を生成することができ、この転置インデックス１９を用いて、転置インデックスのデータサイズを抑えることと、高い検索処理速度と、を両立させることのできる検索装置２０を提供することができる。
【０１０８】
（実施形態３）
次に、本発明の実施形態３について説明する。実施形態１および実施形態２では、生成装置１０は、ＮグラムをＮグラム群に分類しようとしている際に、そのＮグラム群に分類可能かを判断して、分類できなければ、そのＮグラムを分類するための新たなＮグラム群を作成した。
【０１０９】
それに対して、実施形態３では、分類処理のアルゴリズムを変更して、先頭のＭ文字が共通なすべてのＮグラムを１つのＮグラム群に分類した後で、そのＮグラム群を複数のＮグラム群に分割していく。以下に、図１１のフローチャートを参照して、本実施形態における生成装置１０の生成処理の流れを説明する。
【０１１０】
図１１におけるフローチャートは、上述した実施形態１における生成装置１０の生成処理を説明したフローチャート（図３）と基本的には同様のものであるが、ここでは、図３におけるステップＳ１０４の処理が、別の処理（図１１の点線内）に置き換わっている。
【０１１１】
すなわち、上述した実施形態１および実施形態２では、文書データ１８からＮグラムを抽出し（ステップＳ１０１）、抽出されたＮグラムのそれぞれについて、文書データ１８中の出現位置を対応付け（ステップＳ１０２）、出現位置の対応付けられたＮグラムを、文字の配列順に並べて保持（ステップＳ１０３）した後、ステップＳ１０４において、保持されたＮグラムを、Ｎグラム群に分類する処理へ移行した。
【０１１２】
これに対して本実施形態の生成装置１０の分類手段は、まず、先頭のＭ文字が共通なすべてのＮグラムを、１つのＮグラム群に分類する（ステップＳ５０１）。すなわち、これまでは、１つのＮグラム群に分類されるＮグラムの数に対して、対応付けられた出現位置の個数の和に所定の上限を（実施形態１）、あるいは分類されるＮグラムの個数に所定の上限を（実施形態２）設けていた。一方で、本実施形態では、分類されるＮグラムの数に上限を設けずに、先頭のＭ文字が共通なＮグラムをすべて、１つのＮグラムにまとめる。
【０１１３】
その後、生成装置１０は、Ｎグラム群が所定の条件を満たす場合、複数のＮグラム群に分割する（ステップＳ５０２）。すなわち、ステップＳ５０１の時点では、１つのＮグラム群は、先頭のＭ文字が共通なＮグラムをすべて要素にもっているので、これを分割して、１つのＮグラム群あたりがもつＮグラムの数を少なくする。
【０１１４】
このときの所定の条件としては、種々の条件を設定することができる。例えば、実施形態１のように出現位置の個数の和に着目して、Ｎグラム群にすでに分類されているＮグラムに対応付けられた出現位置の個数の和が所定の個数を超えた場合に、分割することにしてもよい。あるいは、実施形態２のように要素の個数に着目して、Ｎグラム群にすでに分類されているＮグラムの個数が所定の個数を超えた場合に、分割することにしてもよい。
【０１１５】
そして、上記のような所定の条件を満たした場合におけるＮグラム群を分割する方法も、種々の方法が考えられる。例えば、Ｎグラム群に分類されたＮグラムを、文字の配列順に先頭から、所定の条件を満たす分だけ抽出していき、それらを新たなＮグラム群に分類していってもよい。あるいは、Ｎグラム群を、そこに分類されたＮグラムを文字の配列順に並べ、その中央あたりで２つに分割し、分割されたＮグラム群が所定の条件を満たすまでこの分割を繰り返すようにしてもよい。
【０１１６】
その後、本実施形態における転置インデックス１９の生成処理はステップＳ１０５へ移行する。すなわち、上述した実施形態１および実施形態２と同様に、生成装置１０は、Ｎグラム群のそれぞれについて、そこに分類されたＮグラムの文書データ１８中の出現位置を対応付ける（ステップＳ１０５）。そして、最後に生成装置１０は、対応付けられた出現位置を昇順に並べて、転置インデックス１９を生成する（ステップＳ１０６）。
【０１１７】
生成された転置インデックス１９は、所定の条件として、実施形態１のように出現位置の個数の和に着目して設定した場合には、図７のように、Ｎグラム群に分類されたＮグラムに対応付けられた出現位置の個数の和がほぼ一定なものになる。あるいは、所定の条件として、実施形態２のように要素の個数に着目して設定した場合には、転置インデックス１９は、図１０のように、Ｎグラム群に分類されたＮグラムの個数がほぼ一定なものになる。
【０１１８】
以上により、実施形態３では、Ｎグラム群を複数に分割する方法によって、所定の条件を満たしたＮグラム群を単位とする転置インデックスを生成することができる。そして、この転置インデックス１９を用いて、転置インデックスのデータサイズを抑えることと、高い検索処理速度と、を両立させることのできる検索装置２０を提供することができる。
【０１１９】
なお、本実施形態における生成装置１０では、文書データ１８は、例えば図１のようにＨＤＤ１４内に記憶されるなどして生成装置１０内に存在することに限られない。すなわち、例えば図１２のように、文書データ１８は、生成装置１０内ではなくインターネット上に存在し、通信制御装置１７を介して取得されうるものであってもよい。
【０１２０】
また、本実施形態における検索装置２０では、上記の生成装置１０と同様に、文書データ１８は、例えば図２のようにＨＤＤ１４内に記憶されるなどして検索装置２０内に存在することに限られない。すなわち、例えば図１３のように、文書データ１８は、検索装置２０内ではなくインターネット上に存在し、通信制御装置１７を介して取得されうるものであってもよい。
【０１２１】
このような構成をとることで、図１３の実施形態では図２でのものに比べ、検索装置２０内に文書データ１８を記憶する必要がなく、インターネットに適切に接続可能な環境であれば、小型の電子辞書のような限られた容量の装置においても実現しやすくなる。
【０１２２】
また、本発明での実施形態は、上述した実施形態に加え、上記生成装置１０としてコンピュータ装置を機能させるためのコンピュータプログラムであってもよい。また、上記検索装置２０としてコンピュータ装置を機能させるためのコンピュータプログラムであってもよい。
【０１２３】
上記コンピュータプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記憶することができる。
【０１２４】
また、上記コンピュータプログラムは、コンピュータプログラムが実行されるコンピュータ装置とは独立して、コンピュータ通信網を介して配付・販売することができる。また、上記情報記憶媒体は、コンピュータ装置とは独立して配付・販売することができる。
【符号の説明】
【０１２５】
１０…生成装置、１１…ＣＰＵ、１２…ＲＯＭ、１３…ＲＡＭ、１４…ＨＤＤ、１５…入力装置、１６…出力装置、１７…通信制御装置、１８…文書データ、１９…転置インデックス、２０…検索装置、２１…ＣＰＵ、２２…ＲＯＭ、２３…ＲＡＭ、２４…ＨＤＤ、２５…入力装置、２６…出力装置、２７…通信制御装置
【図１】
0005601116.tif 000002
【図２】
0005601116.tif 000003
【図３】
0005601116.tif 000004
【図４】
0005601116.tif 000005
【図５】
0005601116.tif 000006
【図６】
0005601116.tif 000007
【図７】
0005601116.tif 000008
【図８】
0005601116.tif 000009
【図９】
0005601116.tif 000010
【図１０】
0005601116.tif 000011
【図１１】
0005601116.tif 000012
【図１２】
0005601116.tif 000013
【図１３】
0005601116.tif 000014