(57)【要約】【課題】検索時に代案クエリをユーザに提供する。【解決手段】本発明は、アプリケーションにとって利用可能なドキュメントのコーパス内におけるすべてのワードのインデックスを作成すること、そのインデックス内の各ワードに関するコーパス内におけるそのワードの出現に基づく頻度の値を有するそのインデックス用の頻度テーブルを作成すること、その頻度テーブル内の各項目をワードジェネレータからの提案と比較すること、その頻度テーブル内で見つかるワードジェネレータによる提案ワードのレキシコンを編集すること、提案ワードを決定するために検索クエリ内の各ワードをワードジェネレータに提案すること、クエリワードよりも頻度の高いレキシコンからの提案ワードの１つまたは複数をユーザに表示することを含む。【選択図】図１
2006236318.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアアプリケーション内で検索クエリを作成するユーザにクエリの代案を提供する方法において、
ドキュメントのコーパス内のワードのための頻度テーブルであって、前記コーパス内の各ワードに関する前記コーパス内における前記ワードの出現に基づく頻度の値を有する頻度テーブルを作成することと、
前記頻度テーブル内の各項目をワードジェネレータからの提案と比較することと、
前記頻度テーブル内で見つかるワードジェネレータによる提案ワードのレキシコンを作成することと、
提案ワードを決定するために前記検索クエリ内の各ワードを前記ワードジェネレータに提案することと、
前記クエリワードよりも頻度の高い前記レキシコンからの前記提案ワードの１つまたは複数を作成することを含むことを特徴とする方法。
【請求項２】
前記頻度テーブル内の各値は、前記コーパス内のすべてのドキュメントにおけるワードの出現回数に基づくことを特徴とする請求項１に記載の方法。
【請求項３】
前記頻度テーブル内の各値は、前記コーパス内の単独のドキュメントにおいて前記ワードが出現する最大頻度に基づくことを特徴とする請求項１に記載の方法。
【請求項４】
各提案ワードに関する前記頻度の値は、前記提案ワードを含むドキュメントの総数に基づくことを特徴とする請求項１に記載の方法。
【請求項５】
クエリの代案をユーザに提供するためのシステムにおいて、
プロセッサと、
前記プロセッサに結合され、前記プロセッサによって読み取り可能なメモリであって、前記プロセッサによって実行されると、
提案ワードを決定するためにクエリ内の各ワードをワードジェネレータによって分析すること、
頻度の高い提案ワードを決定するために、前記ワードジェネレータから得られた各提案ワードをワードの頻度テーブル内の項目と比較すること、および
前記クエリワードよりも頻度の高い前記提案ワードの１つまたは複数を提供することを前記プロセッサに実行させる一連の命令を含むメモリを含むことを特徴とするシステム。
【請求項６】
前記一連の命令は、
前記アプリケーションにとって利用可能なドキュメントのコーパス内におけるすべてのワードのインデックスを作成することと、
前記インデックス内の各ワードに関する前記コーパス内における前記ワードの出現に基づく頻度の値を有する前記頻度テーブルを作成することによって、前記プロセッサに各ワードを分析させることを特徴とする請求項５に記載のシステム。
【請求項７】
前記一連の命令は、
前記アプリケーションにとって利用可能なドキュメントのコーパス内におけるすべてのワードのインデックスを作成することと、
前記インデックス内の各ワードに関する前記コーパス内における前記ワードの出現に基づく頻度の値を有する前記インデックス用の前記頻度テーブルを作成することと、
前記頻度テーブル内で見つかるワードジェネレータによる提案ワードのレキシコンを編集することと、
提案ワードを決定するために前記検索クエリ内の各ワードを前記ワードジェネレータに提案することと、
前記クエリワードよりも頻度の高い前記レキシコンからの前記提案ワードの１つまたは複数を提供することを前記プロセッサに実行させることを特徴とする請求項５に記載のシステム。
【請求項８】
前記頻度テーブルは、前記コーパス内の前記すべてのドキュメントにおける前記ワードの前記出現回数に基づくことを特徴とする請求項７に記載のシステム。
【請求項９】
各提案ワードに関する前記頻度の値は、前記提案ワードを含むドキュメントの前記総数に基づくことを特徴とする請求項７に記載のシステム。
【請求項１０】
各提案ワードに関する前記頻度の値は、前記コーパス内における任意の単独のドキュメント内で前記ワードが出現する回数の総計に基づくことを特徴とする請求項７に記載のシステム。
【請求項１１】
ユーザクエリの代案をユーザに提供するためのコンピュータプロセスを実行するための命令のコンピュータプログラムをコード化しているコンピュータ可読媒体であって、前記コンピュータプロセスは、
提案ワードを決定するために前記ユーザクエリ内の各ワードをワードジェネレータによって分析することと、
頻度の高い提案ワードを決定するために、前記ワードジェネレータから得られた各提案ワードをワードの頻度テーブル内の項目と比較することと、
前記クエリワードよりも頻度の高い前記提案ワードの１つまたは複数を提供することを含むことを特徴とするコンピュータ可読媒体。
【請求項１２】
前記分析することは、
前記アプリケーションにとって利用可能なドキュメントのコーパス内におけるすべてのワードのインデックスを作成することと、
前記インデックス内の各ワードに関する前記コーパス内における前記ワードの出現に基づく頻度の値を有する前記頻度テーブルを作成することを含むことを特徴とする請求項１１に記載のコンピュータ可読媒体。
【請求項１３】
前記頻度テーブル内の各値は、前記コーパス内の単独のドキュメントにおいて前記ワードが出現する前記最大頻度に基づくことを特徴とする請求項１２に記載のコンピュータ可読媒体。
【請求項１４】
各提案ワードに関する前記頻度の値は、前記提案ワードを含むドキュメントの前記総数に基づくことを特徴とする請求項１２に記載のコンピュータ可読媒体。
【請求項１５】
前記頻度テーブル内で見つかるワードジェネレータによる提案ワードのレキシコンを編集することをさらに含むことを特徴とする請求項１２に記載のコンピュータ可読媒体。
【請求項１６】
前記頻度テーブル内の各値は、前記コーパス内の単独のドキュメントにおいて前記ワードが出現する前記最大頻度に基づくことを特徴とする請求項１５に記載のコンピュータ可読媒体。
【請求項１７】
前記頻度テーブル内の各ワードに関する前記頻度の値は、前記コーパス内における前記ワードを含むドキュメントの前記総数に基づくことを特徴とする請求項１５に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にコンピュータソフトウェアに関し、より詳細には、アプリケーション内でのクエリ(query)の間にクエリワードの別のスペルをユーザに提案するための方法およびシステムに関する。
【背景技術】
【０００２】
ユーザは、アプリケーション内またはオペレーティングシステム上で検索クエリを発して所望のドキュメント等を見つける。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、ユーザは、アプリケーション内またはオペレーティングシステム上で検索クエリを発する際にスペルミスを犯すことがある。検索エンジンは、これらのミススペルを検知しない場合が多い。ユーザは、このミスを自覚できないことがあり、検索エンジンが悪いと考える。さらにユーザは、自分が探していたドキュメントを見つけることができない。
【課題を解決するための手段】
【０００４】
この問題を解決する１つの方法は、ミススペルを検知するためのＭｉｃｒｏｓｏｆｔ（登録商標）Ｏｆｆｉｃｅワードジェネレータ(word generator)等のワードジェネレータを使用することである。訂正されたワードは、代わりのクエリ提案(query suggestions)として表示し、ユーザへ返すことができる。
【０００５】
本発明によれば、アプリケーション内のクエリを処理するためのシステムであって、各クエリワードが分析され、普及度(prevalence)、すなわちそのアプリケーションにとって利用可能なドキュメントのコーパス内におけるそのワードの頻度(popularity of the word's usage)に基づいてユーザへの提案として頻度の高い代案が提供されるシステムによって、前述の問題およびその他の問題が解決される。このシステムはまた、クエリワードに類似したスペルを提供するワードジェネレータと、そのアプリケーションにとって利用可能なドキュメントのコーパス内に登場するすべてのワードのインデックスと、そのインデックス内の各項目に与えられる頻度(popularity)すなわち関連度(relevance)の値を提供する頻度テーブルと、その頻度テーブル内に登場するワードジェネレータワードのレキシコン(lexicon)とを含む。
【０００６】
本発明の実施形態による、アプリケーション内でのクエリ中にユーザへのクエリ提案を作成する方法は、提案ワード(suggestion words)を決定するためにクエリ内の各ワードをワードジェネレータによって分析することと、頻度の高い提案ワードを決定するために、ワードジェネレータから得られた各ワードの提案をワードの頻度テーブル内の項目と比較することと、クエリワードよりも頻度の高い提案ワードの１つまたは複数をユーザに表示することを含む。分析オペレーションは、アプリケーションにとって利用可能なドキュメントのコーパス内におけるすべてのワードのインデックスを作成することと、そのインデックス内の各ワードに関するコーパス内におけるそのワードの出現に基づく頻度の値を有する頻度テーブルを作成することとを含む。
【０００７】
より詳細には、本発明の実施形態による方法、システム、およびコンピュータ可読媒体製品は、アプリケーションにとって利用可能なドキュメントのコーパス内におけるすべてのワードのインデックスを作成することと、そのインデックス内の各ワードに関するコーパス内におけるそのワードの出現に基づく頻度の値を有するそのインデックス用の頻度テーブルを作成することと、その頻度テーブル内で見つかるワードジェネレータによる提案ワードのレキシコンをワードジェネレータが編集することと、提案ワードを決定するために検索クエリ内の各ワードをワードジェネレータに提案することと、ワードジェネレータからの各提案ワードに関する頻度の値を頻度テーブルから割り出すことと、クエリワードよりも頻度の高いレキシコンからの提案ワードの１つまたは複数をユーザに表示することとを含む。
【０００８】
本発明は、コンピュータプロセスやコンピューティングシステムとして、またはコンピュータプログラム製品などの製品として実装することができる。このコンピュータプログラム製品は、コンピュータシステムによって読み取り可能な、コンピュータプロセスを実行するための命令のコンピュータプログラムをコード化しているコンピュータストレージ媒体とすることができる。このコンピュータプログラム製品は、コンピューティングシステムによって読み取り可能な、コンピュータプロセスを実行するための命令のコンピュータプログラムをコード化している、搬送波上で伝搬される信号とすることもできる。
【０００９】
本発明およびその改良形態については、以降で簡単に要約されている添付の図面と、現時点で好ましい本発明の実施形態に関する以降の詳細な説明と、添付の特許請求の範囲とを参照することによって、より完全に理解することができる。
【発明を実施するための最良の形態】
【００１０】
次いで以降では、本発明の実施形態が示されている添付の図面を参照して、本発明についてさらに十分な説明を行う。しかし本発明は、多くの異なる形態において具体化することができ、本明細書で説明されている実施形態に限定されるものと解釈すべきではなく、むしろこれらの実施形態は、本開示が徹底した完全なものになるように、また本発明の範囲を当業者に十分に伝えるように提供されている。本発明の実施形態によれば、本明細書に記載の方法は、単独のスタンドアロンのコンピュータシステム上で実行することもできるが、相互に接続されて分散コンピュータネットワークを形成する複数のコンピュータシステム上で実行するのが、より一般的である。図１は、本発明によるクエリ提案システム１００の一実施形態を示している。システム１００は、任意のソフトウェアアプリケーションまたはオペレーティングシステム内で動作することができる。このシステムは、ユーザクエリ１０２を受け取り、そのクエリを従来の方法で検索エンジン（図示せず）に渡す。また同時に、このユーザクエリ１０２は、クエリ提案モジュール１０４にも渡される。クエリ提案モジュール１０４は、ユーザクエリ１０２を受け取り、そのクエリを分析し、以降でさらに十分に論じる一定の条件の下で、ユーザが選択して利用する可能性のある代案クエリ１０６をユーザに提供する。
【００１１】
クエリ提案モジュール１０４は、基本的にクエリ分析モジュール１０８および関連度プロセッサモジュール１１０という２つのモジュールを含む。クエリ分析モジュール１０８は、代替可能性があるクエリワードに関する関連度情報を得るために関連度プロセッサモジュールにクエリを提供する。これらの代替クエリワードおよびその関連度は、クエリ分析モジュール１０８へフィードバックされ、次いでクエリ分析モジュール１０８は、１つまたは複数の代案クエリ１０６を提供するか否かを決定する。
【００１２】
図２は、本発明の実施形態を実装するための典型的な環境２００を示している。この環境２００は、汎用コンピューティングデバイスをコンピュータ２１０の形態で含む。コンピュータ２１０のコンポーネントは、処理装置２２０と、システムメモリ２３０と、システムメモリを含むさまざまなシステムコンポーネントを処理装置２２０に結合するシステムバス２２１とを含むことができるが、これらには限定されない。システムバス２２１は、メモリバスまたはメモリコントローラと、ペリフェラルバスと、さまざまなバスアーキテクチャのいずれかを使用するローカルバスとを含む複数のタイプのバス構造のいずれにすることもできる。たとえばこのようなアーキテクチャは、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＥＩＳＡ（Ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカルバス、ＡＧＰ（Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）バス、およびメザニンバスとしても知られているＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスを含むが、これらには限定されない。
【００１３】
コンピュータ２１０は通常、さまざまなコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ２１０によってアクセスできる利用可能な任意の媒体とすることができ、揮発性媒体および不揮発性媒体、ならびに着脱式媒体および固定式媒体の双方を含む。たとえばコンピュータ可読媒体は、コンピュータストレージ媒体および通信媒体を含むことができるが、これらには限定されない。コンピュータストレージ媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、その他のデータなどの情報を記憶するための任意の方法または技術において実装される揮発性媒体および不揮発性媒体、ならびに着脱式媒体および固定式媒体を含む。コンピュータストレージ媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは希望の情報を保存するために使用可能で、コンピュータ２１０によってアクセス可能な他の任意の媒体を含むが、これらには限定されない。通信媒体は通常、搬送波やその他の伝送メカニズムなどの変調されたデータ信号内のコンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを具体化し、任意の情報伝達媒体を含む。「変調されたデータ信号」という用語は、情報をその信号内でコード化するような方法で設定または変更されたその特性のうちの１つまたは複数を有する信号を意味する。たとえば通信媒体は、有線ネットワークや直接有線接続などの有線媒体と、音波媒体、ＲＦ媒体、赤外線媒体、その他の無線媒体などの無線媒体とを含むが、これらには限定されない。また上記のいずれの組合せも、コンピュータ可読媒体の範囲内に含まれるものである。
【００１４】
システムメモリ２３０は、コンピュータストレージ媒体を読み取り専用メモリ（ＲＯＭ）２３１およびランダムアクセスメモリ（ＲＡＭ）２３２などの揮発性メモリおよび／または不揮発性メモリの形態で含む。基本入出力システム２３３（ＢＩＯＳ）は、起動中などにコンピュータ２１０内の要素間における情報伝達を補助する基本ルーチンを含み、通常はＲＯＭ２３１内に格納されている。ＲＡＭ２３２は通常、処理装置２２０がすぐにアクセスできるか、および／または処理装置２２０によってその時点で操作されているデータモジュールおよび／またはプログラムモジュールを含む。図４は、例としてオペレーティングシステム２３４、アプリケーションプログラム２３５、その他のプログラムモジュール２３６、およびプログラムデータ２３７を示しているが、これらには限定されない。
【００１５】
またコンピュータ２１０は、その他の着脱式／固定式、揮発性／不揮発性コンピュータストレージ媒体を含むこともできる。図２は、例示のみを目的として、固定式の不揮発性の磁気媒体との間で読み取りや書き込みを行うハードディスクドライブ２４１と、着脱式の不揮発性の磁気ディスク４５２との間で読み取りや書き込みを行う磁気ディスクドライブ４５１と、ＣＤ−ＲＯＭやその他の光媒体などの着脱式の不揮発性の光ディスク２５６との間で読み取りや書き込みを行う光ディスクドライブ２５５とを示している。典型的な動作環境において使用できるその他の着脱式／固定式、揮発性／不揮発性コンピュータストレージ媒体としては、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどがあるが、これらには限定されない。ハードディスクドライブ２４１は通常、インターフェース２４０などの固定式のメモリインターフェースを介してシステムバス２２１に接続されており、磁気ディスクドライブ２５１および光ディスクドライブ２５５は通常、インターフェース２５０などの着脱式のメモリインターフェースによってシステムバス２２１に接続されている。
【００１６】
図２に示されている上述のドライブおよびそれらに関連するコンピュータストレージ媒体は、コンピュータ２１０用のコンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータの記憶を提供する。たとえば図２において、ハードディスクドライブ２４１は、オペレーティングシステム２４４、アプリケーションプログラム２４５、その他のプログラムモジュール２４６、およびプログラムデータ２４７を記憶するものとして示されている。これらのコンポーネントは、オペレーティングシステム２３４、アプリケーションプログラム２３５、その他のプログラムモジュール２３６、およびプログラムデータ２３７と同一とするか、または異なっていてもよいという点に留意されたい。ここでは、オペレーティングシステム２４４、アプリケーションプログラム２４５、その他のプログラムモジュール２４６、およびプログラムデータ２４７が最低限異なるコピーであることを示すために、異なる番号を割り当てている。ユーザは、タブレット（電子デジタイザ）２６４、マイクロフォン２６３、キーボード２６２、および通常はマウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイス２６１などの入力デバイスを介してコンピュータ２１０にコマンドおよび情報を入力することができる。その他の入力デバイス（図示せず）は、ジョイスティック、ゲームパッド、衛星放送受信用アンテナ、スキャナなどを含むことができる。これらおよびその他の入力デバイスは、システムバスに結合されているユーザ入力インターフェース１６０を介して処理装置２２０に接続される場合が多いが、パラレルポート、ゲームポート、ユニバーサルシリアルバス（ＵＳＢ）などの他のインターフェース構造およびバス構造によって接続することもできる。またモニタ２９１やその他のタイプのディスプレイデバイスも、ビデオインターフェース２９０などのインターフェースを介してシステムバス２２１に接続される。モニタ２９１は、タッチスクリーンインターフェース２９２などのインターフェースを介してコンピュータシステム２１０に手書きなどのデジタル化された入力を入力できるタッチスクリーンパネル２９３などと一体化することもできる。モニタおよび／またはタッチスクリーンパネルは、タブレットタイプのパーソナルコンピュータにおけるように、コンピューティングデバイス２１０が内蔵されている筐体に物理的に結合することができ、タッチスクリーンパネル２９３は基本的にタブレット２６４として機能するという点に留意されたい。さらに、コンピューティングデバイス２１０などのコンピュータは、スピーカ２９５およびプリンタ２９６などの他の周辺出力デバイスを含むこともでき、これらは周辺出力インターフェース２９４などを介して接続することができる。
【００１７】
コンピュータ２１０は、リモートコンピュータ２８０などの１つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク化された環境内で動作することができる。リモートコンピュータ２８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、またはその他の一般的なネットワークノードとすることができ、図２にはメモリストレージデバイス２８１しか示されていないが、通常はコンピュータ２１０に関連する上述の要素の多くまたはすべてを含む。図２に示されている論理接続は、ローカルエリアネットワーク（ＬＡＮ）２７１およびワイドエリアネットワーク（ＷＡＮ）２７３を含むが、その他のネットワークを含むこともできる。このようなネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいてよく見受けられる。
【００１８】
ＬＡＮネットワーキング環境において使用する場合、コンピュータ２１０は、ネットワークインターフェースまたはアダプタ２７０を介してＬＡＮ２７１に接続される。ＷＡＮネットワーキング環境において使用する場合、コンピュータ２１０は通常、モデム２７２、またはインターネットなどのＷＡＮ２７３上で通信を確立するためのその他の手段を含む。モデム２７２は、内蔵型または外付け型とすることができ、ユーザ入力インターフェース２６０またはその他の適切なメカニズムを介してシステムバス２２１に接続することができる。ネットワーク化された環境では、コンピュータ２１０に関連して示されているプログラムモジュール、またはその一部をリモートメモリストレージデバイス内に格納することができる。図２は、例としてリモートアプリケーションプログラム２８５をメモリデバイス２８１上に常駐するものとして示しているが、この形態には限定されない。示されているネットワーク接続は代表的なものであり、コンピュータ間に通信リンクを確立するその他の手段も使用できることが理解できるであろう。
【００１９】
このコンピューティング環境を念頭に置いて、本発明のさまざまな実施形態を具体化するプロセスを実施するために実行される論理オペレーションを参照して、本発明の実施形態について説明する。これらの論理オペレーションは、（１）コンピュータによって実施されるステップのシーケンスや、コンピューティングシステム上で実行されるプログラムモジュールとして、および／または（２）コンピューティングシステム内で相互に接続された機械論理回路や回路モジュールとして実装される。この実装は、本発明を実施するコンピューティングシステムのパフォーマンス要件に応じた選択の問題である。したがって本明細書に記載されている本発明の実施形態を構成する論理オペレーションは、オペレーション、構造的なデバイス、行為、あるいはモジュールなど、さまざまに呼ばれる。これらのオペレーション、構造的なデバイス、行為、およびモジュールは、本明細書に添付されている特許請求の範囲内に記載された本発明の趣旨および範囲から逸脱することなく、ソフトウェア、ファームウェア、専用のデジタル論理、およびそれらの任意の組合せにおいて実装できることを当業者なら認識するであろう。
【００２０】
次いで図３を参照すると、クエリ提案モジュール１０４のさらに詳細なモジュール図が提供されている。クエリ分析モジュール１０８は、コーパスインデックス３０２、頻度テーブルモジュール３０４、およびワードジェネレータモジュール３０６という、関連度モジュール１１０内における３つの定義されたソースから情報を引き出す。
【００２１】
コーパスインデックス３０２は、基本的にアプリケーションがアクセスできるドキュメントのコーパス（ドメイン）内に存在するすべてのワードのレキシコンである。フルテキストインデックシングは、ドキュメントからワードを抽出して、迅速な検索のためにそれらのワードを語彙の面から整理するプロセスである。各ワードは、そのワードを含むドキュメントのリストに関連付けられる。このワードのリストとドキュメントセットとの関連付けを（逆）インデックスと呼ぶ。コーパスインデックス３０２は動的であり、呼び出し中のアプリケーションによってドキュメントがアクセスされるたびに、それらのドキュメントをコーパスに追加することができ、これによって、システム１００が使用されるにつれて、コーパスのサイズは継続的に増大する。コーパスインデックス３０２は、コーパス内におけるすべての言語のワードを含み、ワードだけでなくｎ−ｇｒａｍも含む。アプリケーションにとって利用可能なドキュメントのコーパス内における各ワード／ｎ−ｇｒａｍは、そのワード／ｎ−ｇｒａｍが使用されているドキュメントに関連付けられる。したがって各ワードは、ドキュメントのリストに関連付けられる。このリストを逆インデックスと呼ぶ。さらに各ワードは、１つのドキュメント内におけるその頻度に関連付けることができる。この頻度の値はまた、各ワードごとにインデックス３０２内に含まれる。
【００２２】
頻度テーブルモジュール３０４は、コーパスインデックス３０２を点検し、コーパスインデックス３０２内の各ワードに関連付けられている頻度の値を編集する。この頻度の値はまた、呼び出し中のアプリケーションがアクセスできるドキュメントのコーパス内でドキュメントが新規に追加されたり、削除されたり、修正されたりするたびに、継続的に更新される。この頻度の値は、１つのドキュメント内に特定のワードまたはｎ−ｇｒａｍが登場する回数、コーパス内におけるそのワードまたはｎ−ｇｒａｍを含むドキュメントの数、あるいはすべてのコーパスドキュメント全体にそのワードまたはｎ−ｇｒａｍが登場する回数の絶対数に基づくことができる。この頻度の値は、そのワードまたはｎ−ｇｒａｍが登場するコーパスドキュメントの数に基づくこと、したがってワードの登場頻度の指標であることが好ましい。頻度のリストを管理可能なサイズに維持するために、頻度の低いワードを頻度のリストに追加しない場合がある。
【００２３】
頻度テーブルモジュール３０４内のワードを使用して、ワードジェネレータレキシコン３０８が作成される。レキシコン３０８は、ノイズワードを除去するための１つまたは複数のフィルタ３１２を内部に有する。ノイズワードとは、あまりに頻繁に登場するためにクエリ提案プロセスにまったく寄与しないワードである。このようなワードとしては、冠詞、前置詞など、ならびに英語の「ａｎｄ」および「ｏｒ」、ドイツ語の「ｕｎｄ」、スペイン語の「ｙ」などの接続語がある。したがってレキシコン３０８は、頻度テーブルから複数のワードを引き出し、ノイズワードを除去し、結果として生じるワードのリストをワードジェネレータモジュール３０６が使用する。あるいはフィルタ３１２を頻度テーブルモジュール３０４に組み込むこともできる。いずれの場合も、フィルタ３１２は、所定の値を上回る登場頻度を有するワードをすべて拒絶するように動作することができる。極端に頻度の低いワードを除去するためのフィルタを提供することもできる。
【００２４】
ワードジェネレータモジュール３０６は、レキシコン３０８からの引き出しを行う。ワードジェネレータモジュール３０６は、クエリ分析モジュール１０８内で点検されているクエリワードに類似したスペルおよびシンタックスを探してレキシコン３０８内のワードを分析し、類似したスペルおよび／またはシンタックスに基づいて提案ワードをクエリ分析モジュール１０８に提供する。ワードジェネレータモジュール３０６は、基本的に近似したスペルのリストを作成するワードジェネレータまたはスペルチェッカーである。本発明の実施形態においてワードジェネレータとして使用できるスペルチェッカーは、従来のＭｉｃｒｏｓｏｆｔ（登録商標）Ｗｏｒｄ  ＳｐｅｌｌＡＰＩであり、これは、クエリ分析モジュール１０８に提供する提案を作成するために、クエリワードに近似したスペルを提案し、その結果をレキシコン３０８と比較する。あるいは、点検対象のワードに類似したスペルのワードを作成するＵＮＩＸ（登録商標）関数のファミリー（ｇｒｅｐ、ａｇｒｅｐ、ｅｇｒｅｐなど）もある。たとえば「ａｉｒｐａｌｎｅ」に近似したスペルのワードのためのディレクトリを検索するために、「ａｇｒｅｐ  −ｅ  ａｉｒｐａｌｎｅ」と書き、また「ａｉｒｐｌａｎｅ」というワードを有するファイルを受け取ることが予想される。一般に、類似したワードを作成するために、いかなる近似パターンマッチングアルゴリズムを使用することもできる。これらの１つを、前述したスペルチェッカーの代わりに使用することもできる。
【００２５】
図４は、ユーザのクエリ１０２に対する代案を作成するためにクエリ分析モジュール１０８内で発生するオペレーション４００のオペレーショナルフロー図である。プロセス４００は、オペレーション４０２において開始し、ユーザクエリ１０２が感知される。次いで制御は、オペレーション４０４に渡る。
【００２６】
オペレーション４０４では、クエリ（通常は複数のワードである）が、個々のワードまたはｎ−ｇｒａｍへとトークン化される。各ワードは、以降のステップにおいて個々に分析される。しかしこの時点でクエリを解析して、分析用の２つまたは３つのワードグループへと分けることもできることを理解されたい。その場合、この方法は、本明細書に記載されている個々のワードのアプローチにきわめて類似したものとなる。その上、この複数のワードのケースで関心のある頻度のいくつかは、単にコーパス内における句の頻度ではなく、１つのワードが別のワードの後に続く可能性を示す頻度とすることができる。これらの頻度は、調整して評価することもできる。クエリが別々のワードへとトークン化または解析されると、制御はオペレーション４０６に移る。
【００２７】
オペレーション４０６では、最初の／次のワードが点検される。クエリ分析モジュール１０８は、ワードジェネレータモジュール３０６を呼び出し、ワードジェネレータモジュール３０６に最初のワードを提供する。そしてワードジェネレータモジュール３０６は、レキシコン３０８内に存在する最初の／次のクエリワードに近似したスペルをすべてクエリ提案ワードとして返す。次いでクエリ分析モジュール１０８は、制御をオペレーション４０８に移す。
【００２８】
オペレーション４０８では、頻度テーブルモジュール３０４がアクセスされ、クエリ提案ワードのそれぞれについて頻度の値を返す。そして制御はオペレーション４１０に移り、点検されている最初の／次のクエリワードに関する頻度の値もクエリ分析モジュール１０８に提供される。次いで制御は、オペレーション４１２へ移る。
【００２９】
オペレーション４１２では、最初の／次のクエリワードに関する頻度の値が、代案ワードに関する各頻度の値と比較される。そして制御はクエリオペレーション４１４に移り、ユーザの最初の／次のクエリワードよりも頻度の高いクエリ提案ワードがあるかどうかについて質問がなされる。ユーザの最初の／次のクエリワードに関する頻度の値が、（１つまたは複数の）提案ワードに関する頻度の値よりも大きい場合、答えは「いいえ」であり、代案はまったく返されない。制御は、次のクエリワードを点検するためにオペレーション４０６へ戻る。一方、提案ワードの１つまたは複数が、ユーザのクエリワードよりも頻度が高い場合、オペレーション４１４の答えは「はい」であり、制御はオペレーション４１６に移る。
【００３０】
オペレーション４１６では、クエリ提案ワードまたはｎ−ｇｒａｍが、クエリ分析モジュール１０８によって代替クエリワードとしてユーザに返されるための提案として立てられ、すぐにユーザに表示するか、またはクエリ内のすべてのワードの点検が済むまで保留することができる。いずれの場合も、制御はオペレーション４１８へ渡り、クエリ分析モジュール１０８は、次のクエリワード用の点検を行う。そして制御は、クエリオペレーション４２０に移る。
【００３１】
クエリオペレーション４２０では、評価すべきトークン化されたユーザクエリワードがほかにあるかどうかについてクエリを行う。答えが「はい」である場合、制御は再びオペレーション４０６へ戻り、次のワードが点検される。一方、答えが「いいえ」である場合、ユーザクエリ内にさらなるワードはなく、制御は終了オペレーション４２２へ渡り、送信すべき代替クエリワードが残っている場合は、それらのワードが選択肢としてユーザに表示される。
【００３２】
はじめにすべてのドキュメントが点検され、ドキュメントのコーパス内に登場するワードのインデックスが作成される。ドキュメントがコーパスに追加される際に、新規のインデックス、頻度テーブル、およびレキシコンを作成して、既存のインデックス、頻度テーブル、およびレキシコンと置き換えることができる。あるいは新たなドキュメントが追加されるたびに、それらの既存のインデックス、頻度テーブル、およびレキシコンを更新することもできる。
【００３３】
本発明について、構造的な特徴、方法論的な行為、およびそのような行為を含むコンピュータ可読媒体に特有の言葉で説明したが、添付の特許請求の範囲において定義される本発明は、説明した特定の構造、行為、または媒体に必ずしも限定されるものではないことを理解されたい。したがってそうした特定の構造、行為、または媒体は、特許請求されている本発明を実施する好ましい形態としてのみ、本明細書に開示されている。それらは、本発明の範囲を限定するものとして解釈すべきではない。さらに、多くの変形形態および変更ならびに代替形態を当業者なら容易に想起するであろう。したがってそうした変形形態、変更、および代替形態はすべて、添付の特許請求の範囲によって定義されるように意図されている本発明の広い範囲および意味の中に収まるものでもある。
【図面の簡単な説明】
【００３４】
【図１】本発明の一実施形態による典型的な代案クエリ提供システムを示す図である。
【図２】本発明の特定の態様に従って動作するソフトウェアを組み込むことができるコンピュータシステム環境を示す図である。
【図３】図１に示されている代案クエリ提供システムをより詳細に示す図である。
【図４】図１に示されている実施形態のオペレーションを示すプロセスフロー図である。
【符号の説明】
【００３５】
１０２  ユーザクエリ
１０４  クエリ提案モジュール
１０６  代案クエリ
１０８  クエリ分析モジュール
１１０  関連度プロセッサモジュール
【図１】
2006236318.tif 000003
【図２】
2006236318.tif 000004
【図３】
2006236318.tif 000005
【図４】
2006236318.tif 000006