(57)【要約】スペル変更アナライザー（１６０）は、検索エンジン（１００）にサブミットされる検索文字列の有用な代替スペルを特定する。スペル変更アナライザー（１６０）は、ユーザによって行われるスペル変更を考慮に入れる。スペル変更は、検索エンジンユーザの母集団の検索履歴（１５０）をプログラム的に分析することにより検出される。一実施形態では、第２の検索文字列が第１の検索文字列の有用な代替スペルを表すかどうかの評価は、（１）前記第１の検索文字列及び前記第２の検索文字列間の編集距離、および（２）前記第１の検索文字列をサブミットするユーザが、その後、前記第２の検索文字列をサブミットするであろう見込みを考慮に入れる。これらは、ユーザのアクションを観測および分析することにより決定される。【選択図】図１
2009505221.tif 000002
【特許請求の範囲】
【請求項１】
検索文字列スペル変更イベントを検出するために、複数のユーザそれぞれの検索文字列サブミッションを分析することと、
検出された前記検索文字列スペル変更イベントを、少なくとも部分的に分析することにより、前記検索文字列サブミッションに含まれている複数の検索文字列それぞれについて、それぞれの前記検索文字列の１つ以上の代替スペルを特定することとを含み、
前記検索文字列スペル変更イベントそれぞれが、ユーザが、第１の検索文字列を検索エンジンにサブミットし、続いて、スペルが前記第１の検索文字列に類似するが前記第１の検索文字列とは異なる第２の検索文字列を、前記検索エンジンにサブミットするイベントである、コンピュータにインプリメントされた方法。
【請求項２】
検出された前記スペル変更イベントを分析することが、文字列Ａから文字列Ｂへのスペル変更が、文字列Ｂから文字列Ａへのスペル変更よりも著しく頻繁に起こるかどうかを、少なくとも部分的に評価することにより、文字列Ｂが文字列Ａの有用な代替スペルかどうかを評価することを含む請求項１の方法。
【請求項３】
検出された前記スペル変更イベントを分析することが、文字列Ａにスペル変更を加えるユーザが、どれくらい頻繁に文字列Ｂをサブミットすることにより文字列Ａにスペル変更を加えるかを考慮に入れることにより、文字列Ｂが文字列Ａの有用な代替スペルかどうかを評価することを含む請求項１の方法。
【請求項４】
前記検索文字列サブミッションを分析することが、複数の前記ユーザのうち特定のユーザによってサブミットされた検索文字列間の編集距離を計算すること含む請求項１の方法。
【請求項５】
前記スペル変更イベントが、ユーザが、１つ以上の介在する検索を、前記第１の検索文字列の前記サブミッションと前記第２の検索文字列の前記サブミッションとの間に行なうイベントを含む請求項１の方法。
【請求項６】
検出された前記スペル変更イベントを分析することが、文字列Ａおよび文字列Ｂをサブミットしたユーザのアクションを分析することを含み、文字列Ａから文字列Ｂへのスペル変更について、文字列Ａをサブミットするユーザに対して文字列Ｂの有用性を評価する請求項１の方法。
【請求項７】
文字列Ａをサブミットするユーザに対して文字列Ｂの前記有用性を評価することが、文字列Ｂをサブミットしたユーザのブラウジングアクションを分析することを含み、文字列Ｂをサブミットしたユーザが、文字列Ｂに対応する検索結果に満足したかどうかを評価する請求項６の方法。
【請求項８】
文字列Ａをサブミットするユーザに対して文字列Ｂの前記有用性を評価することが、文字列Ａと文字列Ｂとの間の編集距離を考慮に入れることを含む請求項６の方法。
【請求項９】
文字列Ａをサブミットするユーザに対して文字列Ｂの前記有用性を評価することが、文字列Ａから文字列Ｂへのスペル変更が、文字列Ｂから文字列Ａへのスペル変更よりも頻繁に起こるかどうかを考慮に入れる請求項６の方法。
【請求項１０】
検出された前記スペル変更イベントを分析することが、異なるスペル変更イベントに対して、対応する前記スペル変更イベントが起こったブラウジングセッションにおいて実行された他のユーザアクションに依存する異なる重みを割り当てることを含む請求項１の方法。
【請求項１１】
検出された前記スペル変更イベントを分析することが、特定のスペル変更について、前記スペル変更についての重みを生成するために、特定の前記スペル変更に関連する複数のイベントの前記重みを組み合わせることを、さらに含む請求項１０の方法。
【請求項１２】
検出された前記スペル変更イベントを分析することが、前記スペル変更イベントが起こったブラウジングセッションの一部として行われた他のユーザアクションに、少なくとも部分的に基づいて、スペル変更イベントに重み付けすることを含む請求項１の方法。
【請求項１３】
検出された前記スペル変更イベントを分析することが、より古いスペル変更イベントよりも、最近のスペル変更イベントに、より大きな重みを与えることを含む請求項１の方法。
【請求項１４】
複数の前記検索文字列のうち特定の検索文字列の、対応する代替検索文字列へのマッピングを、コンピュータ記憶装置に生成することを、さらに含む請求項１の方法。
【請求項１５】
前記マッピングを使用して、代替検索文字列のスペルをユーザに提示することを、さらに含む請求項１４の方法。
【請求項１６】
前記マッピングを使用して、ユーザによってサブミットされた検索文字列中のスペルエラーを自動的に修正することを、さらに含む請求項１４の方法。
【請求項１７】
コンピュータ記憶装置中に表されて、請求項１の前記方法を具現化するコンピュータプログラム。
【請求項１８】
検索を行なうために、ユーザによって検索エンジンにサブミットされた検索文字列を特定するための、複数の前記ユーザの検索履歴を格納するデータリポジトリと、
前記検索履歴中の検索文字列スペル変更イベントを検出するスペル変更検出コンポーネントと、
集計基準に基づいて検出された前記スペル変更を分析し、特定のスペル変更がユーザにとって有用かどうかを評価する分析コンポーネントとを備え、
前記検索文字列スペル変更イベントそれぞれが、ユーザが、第１の検索文字列をサブミットし、続いて、スペルが前記第１の検索文字列に類似するが前記第１の検索文字列とは異なる第２の検索文字列をサブミットするイベントであるコンピュータシステム。
【請求項１９】
前記スペル変更検出コンポーネントが、ユーザによってサブミットされた検索文字列間の編集距離を計算して、前記編集距離を使用してスペル変更イベントを検出する請求項１８のコンピュータシステム。
【請求項２０】
前記分析コンポーネントが、文字列Ａから文字列Ｂへのスペル変更が、文字列Ｂから文字列Ａへのスペル変更よりも著しく頻繁に起こるかどうかを、少なくとも部分的に評価することにより、検索文字列Ｂが文字列Ａの有用な代替スペルかどうかを評価する請求項１８のコンピュータシステム。
【請求項２１】
前記分析コンポーネントが、文字列Ａから文字列Ｂへのスペル変更が、文字列Ｂから文字列Ａへのスペル変更よりも著しく頻繁に起こるかどうかを、少なくとも部分的に評価することにより、検索文字列Ｂが文字列Ａの有用な代替スペルかどうかを評価する請求項１８のコンピュータシステム。
【請求項２２】
前記分析コンポーネントが、文字列Ａおよび文字列Ｂをサブミットしたユーザのアクションを分析するために構成されて、文字列Ａから文字列Ｂへのスペル変更について、文字列Ａをサブミットするユーザに対して文字列Ｂの有用性を評価する請求項１８のコンピュータシステム。
【請求項２３】
前記分析コンポーネントが、文字列Ｂをサブミットしたユーザのブラウジングアクションを、少なくとも部分的に分析することにより、文字列Ａをサブミットするユーザに対して文字列Ｂの前記有用性を評価し、文字列Ｂをサブミットしたユーザが、文字列Ｂに対応する検索結果に満足したかどうかを評価する請求項２２のコンピュータシステム。
【請求項２４】
前記分析コンポーネントによって、ユーザにとって有用であるとして選択されるスペル変更を特定するマッピング構造と、
前記マッピング構造を使用して、検索を行なうユーザに代替スペルを提示するクエリープロセッサとを、さらに備える請求項１８のコンピュータシステム。
【請求項２５】
少なくとも１人のユーザによって検索エンジンに別々にサブミットされた第１の検索文字列および第２の検索文字列を特定することと、
少なくとも
（１）前記第１の検索文字列および前記第２の検索文字列がスペルにおいて類似する程度、および
（２）複数のユーザそれぞれによって、前記第１の検索文字列に対して行なわれた、検出されたスペル変更
を考慮に入れて、前記第２の検索文字列が前記第１の検索文字列の有用な代替スペルを表すかどうかをプログラム的に評価することとを含む、コンピュータにインプリメントされた方法。
【請求項２６】
前記第１の検索文字列および前記第２の検索文字列がスペルにおいて類似する程度が、前記第１の検索文字列及び前記第２の検索文字列間の編集距離を、少なくとも部分的に計算することにより決定される請求項２５の方法。
【請求項２７】
複数の前記ユーザそれぞれについて、前記第１の検索文字列のサブミッションに続いて、類似したスペルの検索文字列のサブミッションを検出することにより、前記第１の検索文字列に対して行なわれた前記スペル変更を検出することを、さらに含む請求項２５の方法。
【請求項２８】
前記第２の検索文字列が前記第１の検索文字列の有用な代替スペルを表すかどうかをプログラム的に評価することが、前記第１の検索文字列に修正を加えるユーザが、どれくらい頻繁に前記第２の検索文字列をサブミットすることにより前記第１の検索文字列に修正を加えるかを考慮に入れることを含む請求項２５の方法。
【請求項２９】
前記第２の検索文字列が前記第１の検索文字列の有用な代替スペルを表すかどうかをプログラム的に評価することが、前記第１の検索文字列から前記第２の検索文字列への遷移が、前記第２の検索文字列から前記第１の検索文字列への遷移よりも頻繁に起こるかどうかを考慮に入れることを含む請求項２５の方法。
【請求項３０】
前記方法が、前記第１の検索文字列及び前記第２の検索文字列間の異なる遷移に、異なる量の重みを与えることを含む請求項２９の方法。
【請求項３１】
前記第２の検索文字列が前記第１の検索文字列の有用な代替スペルを表すかどうかをプログラム的に評価することが、前記第２の検索文字列から前記第１の検索文字列への検出された遷移を考慮に入れることを含む請求項２５の方法。
【請求項３２】
前記方法は、前記第１の検索文字列から前記第２の検索文字列へのスペル変更が、前記第２の検索文字列から前記第１の検索文字列へのスペル変更よりも、実質的に頻繁に起こる場合にのみ、前記第１の検索文字列の有用な代替スペルとして、前記第２の検索文字列を扱うことを含む請求項２５の方法。
【請求項３３】
前記第２の検索文字列が前記第１の検索文字列の有用な代替スペルを表すかどうかをプログラム的に評価することが、前記第２の検索文字列をサブミットしたユーザによる検索結果ブラウジングアクションが、ユーザが前記第２の検索文字列を使用して生成された検索結果に満足したことを明らかにする程度、を考慮に入れることを含む請求項２５の方法。
【請求項３４】
前記第２の検索文字列が前記第１の検索文字列の有用な代替スペルを表すとの決定に応じて、コンピュータ記憶装置中に、前記第１の検索文字列の前記第２の検索文字列へのマッピングを生成することを、さらに含む請求項２５の方法。
【請求項３５】
前記第２の検索文字列が前記第１の検索文字列の有用な代替スペルを表すとの決定に応じて、検索エンジンに前記第１の検索文字列をサブミットするユーザに、前記第２の検索文字列を提示することを、さらに含む請求項２５の方法。
【請求項３６】
コンピュータ記憶装置中に表されて、請求項２５の前記方法を具現化するコンピュータプログラム。
【請求項３７】
検索を行うユーザによって検索エンジンにサブミットされた第１の検索文字列を受信することと、
前記第１の検索文字列をサブミットした先のユーザによって行なわれた、検出されたスペル変更を考慮に入れて、前記第１の検索文字列の代替スペルを表す代替検索文字列を選択することと、
前記第１の検索文字列の受信に応じて、少なくとも
（ａ）前記ユーザに前記代替検索文字列を提示すること、または
（ｂ）前記第１の検索文字列を前記代替検索文字列に自動的に置き換えること、
の何れかを行うことを含み、
前記スペル変更が、ユーザの検索文字列サブミッションを比較することによって自動的に検出される、コンピュータにインプリメントされた検索文字列サブミッションを処理する方法。
【請求項３８】
前記方法が、マッピングテーブルにアクセスして前記代替文字列を調べることを含み、前記マッピングテーブルが、前記検索エンジンの複数のユーザによってなされた、検出されたスペル変更の分析に、少なくとも部分的に基づいて生成される、請求項３７の方法。
【請求項３９】
前記代替検索文字列の前記選択が、前記第１の検索文字列と前記代替検索文字列との間の編集距離を、さらに考慮に入れる請求項３７の方法。
【請求項４０】
請求項３７の前記方法を実行する検索エンジンシステム。
【請求項４１】
コンピュータ記憶装置に表されて、請求項３７の前記方法を具現化するコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検索エンジンにサブミットされた検索文字列の代替スペルを特定する方法を含むスペル修正アルゴリズムに関する。
【背景技術】
【０００２】
多くのワールドワイドウェブサイト及びオンラインサービスは、ユーザが興味のあるアイテムを見つけるのを支援するために、検索エンジンシステム（「検索エンジン」）を提供する。例えば、多くのウェブサイトは、ウェブページ及び他のタイプのインターネットコンテンツを見つけるためにインターネット検索エンジンを提供し、また、ＬｅｘｉｓＮｅｘｉｓ及びＷｅｓｔｌａｗのようなオンラインサービスは、記事、法廷意見および他のタイプの刊行物を見つけるために検索エンジンを提供する。さらに、オンライン商店主は、ユーザが電子カタログに記載された製品及び他のタイプのアイテムを見つけるのを支援するために、一般に検索エンジンを提供する。
【０００３】
テキストベースの検索エンジンを使用して検索を実行するために、ユーザは、検索文字列を含むもしくは検索文字列から成る検索クエリーをサブミットする。検索文字列は、単一の検索語（例えば“Ｏｌｙｍｐｉｃｓ”）もしくは複数の検索語（例えば“Ｏｌｙｍｐｉｃ  ｍａｒａｔｈｏｎ”）から成ることができる。検索フィールド識別子および論理演算子のような他のタイプの要素も、検索クエリーに含まれることができる。検索エンジンのクエリーサーバは、検索クエリーを処理し、検索文字列に一致する任意のアイテムを特定する。クエリーサーバプログラムによって特定されたアイテム（ウェブページ、ニュース記事、製品など）のセットは、「検索結果セット」と呼ばれ、また、見つけ出されたアイテムのリストとしてユーザに提示される。ウェブベースのインプリメンテーションにおいて、検索結果セットは、通常、見つけ出されたアイテムのハイパーテキストのリストとしてユーザに提示される。
【０００４】
タイプミスをするもしくは用語を思い出さないことにより、検索エンジンのユーザが検索文字列中の用語をミススペルする場合、ミススペルされた用語は、一般に、検索によって網羅されたデータベース用語のうちのいずれとも一致しない、あるいは、ユーザが意図しなかったデータベース用語と一致するであろう。したがって、検索エンジンは、検索結果ｎｕｌｌ（空）を返す、或いは、たとえ有るとしても、ユーザの目的に関連するアイテムをほとんど含まない検索結果セットを返す場合がある。この問題を軽減するために、いくつかの検索エンジンは、ユーザが入力した検索文字列にスペルが類似する代替文字列を提示する。しかしながら、これらの代替検索文字列は、ユーザの意図を表さないか、もしくはユーザにとって有用ではないことが多い。
【発明の開示】
【０００５】
本発明は、ＳＴＲＩＮＧ１からＳＴＲＩＮＧ２への変更のような、ユーザにとって有用であろう検索文字列のスペル変更を特定するための、コンピュータにインプリメントされたプロセスを提供する。プロセスは、ユーザによってなされたスペル変更の自己修正を考慮に入れ、このスペル変更の自己修正は、検索エンジンユーザの母集団の検索履歴がプログラム的に分析されることにより検出される。その結果、特定されたスペル変更は、ユーザによってサブミットされた検索文字列を修正もしくは訂正するために非常に有用となる傾向を有する。
【０００６】
一実施形態では、スペル変更イベントは、個々のユーザによってサブミットされた検索文字列のシーケンスを分析することにより検出される。例えば、ユーザが第１の検索文字列をサブミットし、続いて第２の検索文字列をサブミットすると、第１の検索文字列と第２の検索文字列とがスペルで十分に類似する場合、サブミッションのペアは、スペル変更イベントとして扱われることができる。２つのサブミッション間の時間の合計、および／または、（もしあれば）２つのサブミッション間でユーザによって実行されたアクションもまた評価されることができ、サブミッションのペアが意図したスペル修正として解釈されるべきかどうか、あるいはそれがどの程度まで解釈されるべきかどうかが決定され、したがって考慮に入れられる。
【０００７】
このプロセスを通じて検出されたスペル変更イベントは、ユーザの母集団の全体にわたって集計され、ユーザにとって有用であろうスペル変更を特定もしくは予測するための集計基準に基づいて、プログラム的に分析される。例えば、プロセスは、ＳＴＲＩＮＧ１を検索するユーザが、スペルが類似するＳＴＲＩＮＧ２の検索から利益を得るであろうと予測することができる。この予測は、例えば、次に述べる１つ以上の内容を考慮に入れることができる：（１）ＳＴＲＩＮＧ１を検索するユーザがその後、ＳＴＲＩＮＧ２を比較的頻繁に検索するかどうか；（２）ＳＴＲＩＮＧ１からＳＴＲＩＮＧ２へのスペル変更が、ＳＴＲＩＮＧ２からＳＴＲＩＮＧ１へのスペル変更よりも著しく頻繁に生じるかどうか。特定の検索クエリーが成功したかどうかを反映するアクションのような、他のタイプのユーザアクションが、追加的もしくは代替的に考慮に入れられることができる。
【０００８】
潜在的に有用であると特定されたスペル変更は、ユーザがアイテムを見つけるのを支援する様々な方法で使用され得る。例えば、検索を行なうためにユーザが検索文字列をサブミットする場合、スペルが類似する１つ以上の代替文字列が、ユーザに対して提示され得る。あるいは、サブミットされた検索文字列が、自動的に代替文字列に置き換えられ得る。あるいは、オリジナルの文字列と代替文字列との論理的なＯＲを取ることにより、クエリーが自動的に拡大され得る。
【０００９】
本発明は、様々な異なるタイプのアイテムすべての検索を促進するために使用され得る。アイテムは、ウェブサイト、ウェブページ、他のタイプのドキュメント、ニュース記事、ジャーナル記事、電子カタログに記載された製品、オークション、ビジネスリスト、企業イントラネット上のドキュメント、人々、画像、音楽ファイル、ポッドキャスト、ビデオクリップ、ウェブログ、およびテレビ番組を含むが、これらに制限されない。さらに、本発明は、テキストベースの検索をサポートする任意のタイプの対話型のシステムの一部としてインプリメントされ得る。対話型のシステムは、ウェブサイトシステム、オンラインサービスネットワーク、双方向テレビシステム、および個人の特性の音声を通じた発音による検索を支援するシステムを含むが、これらに制限されない。
【００１０】
本発明のスペル変更分析法はまた、ユーザによってなされたスペル変更を分析するために、ドキュメントスペルチェックプログラムを通じて使用されることもできる。さらに、有用であると特定されたスペル変更は、ユーザがドキュメント中のスペルエラーを修正するのを支援するために使用されることができる。
【００１１】
従って、本発明は、検索文字列スペル変更イベントを検出するために、複数のユーザそれぞれの検索文字列サブミッションを分析することを含む。検索文字列スペル変更イベントそれぞれは、ユーザが、第１の検索文字列を検索エンジンにサブミットし、続いて、スペルが前記第１の検索文字列に類似するが前記第１の検索文字列とは異なる第２の検索文字列を、前記検索エンジンにサブミットするイベントである。検出された前記検索文字列スペル変更イベントを、少なくとも部分的に分析することにより、前記検索文字列サブミッションに含まれている複数の検索文字列それぞれについて、それぞれの前記検索文字列の１つ以上の代替スペルが特定される。一実施形態では、文字列Ｂが文字列Ａの有用な代替スペルかどうかを評価することは、文字列Ａから文字列Ｂへのスペル変更が、文字列Ｂから文字列Ａへのスペル変更よりも著しく頻繁に起こるかどうかを評価することを含む。
【００１２】
さらに、本発明は、複数のユーザの検索履歴を格納するデータリポジトリを備えるコンピュータシステムを含む。検索履歴は、検索を行なうために前記ユーザによって検索エンジンにサブミットされた検索文字列を特定する。前記コンピュータシステムは、さらに、前記検索履歴中の検索文字列スペル変更イベントを検出するスペル変更検出コンポーネントを備える。検索文字列スペル変更イベントそれぞれは、ユーザが、第１の検索文字列をサブミットし、続いて、スペルが前記第１の検索文字列に類似するが前記第１の検索文字列とは異なる第２の検索文字列をサブミットするイベントである。前記システムは、さらに、集計基準に基づいて検出された前記スペル変更を分析し、特定のスペル変更がユーザにとって有用かどうかを評価する分析コンポーネントを備える。
【００１３】
さらに、本発明は、少なくとも１人のユーザによって検索エンジンに別々にサブミットされた第１の検索文字列および第２の検索文字列を特定することと、前記第２の検索文字列が前記第１の検索文字列の有用な代替スペルを表すかどうかをプログラム的に評価することとを含むコンピュータにインプリメントされた方法を含む。前記評価することは、少なくとも、（１）前記第１の検索文字列および前記第２の検索文字列がスペルにおいて類似する程度、および（２）複数のユーザそれぞれによって、前記第１の検索文字列に対して行なわれた、検出されたスペル変更、を考慮に入れる。
【００１４】
さらに、本発明は、コンピュータにインプリメントされた検索文字列サブミッションを処理する方法を含む。前記方法は、検索を行うユーザによって検索エンジンにサブミットされた第１の検索文字列を受信することと、前記第１の検索文字列をサブミットした先のユーザによって行なわれた、検出されたスペル変更を考慮に入れて、前記第１の検索文字列の代替スペルを表す代替検索文字列を選択することとを含む。前記スペル変更は、ユーザの検索文字列サブミッションを比較することによって自動的に検出される。さらに、前記方法は、前記第１の検索文字列の受信に応じて、少なくとも、（ａ）前記ユーザに前記代替検索文字列を提示すること、または（ｂ）前記第１の検索文字列を前記代替検索文字列に自動的に置き換えること、何れかを行うことを含む。
【００１５】
さらに、本発明は、複数のコンピューターユーザそれぞれによって行われたスペル変更を表しているスペル変更イベントデータを集計することと、少なくとも第１の文字列および第２の文字列について、前記第２の検索文字列が前記第１の検索文字列の有用な代替スペルを表すかどうかを評価するために、少なくとも、集計されたスペル変更イベントデータをプログラム的に分析することとを含むコンピュータにインプリメントされた方法を含む。前記評価の結果、前記第２の文字列が前記第１の文字列の有用な代替スペルであると特定される場合、第１の文字列から第２の文字列へのマッピングがコンピュータ記憶装置に生成される。一実施形態では、集計されたスペル変更イベントデータをプログラム的に分析する前記ステップは、第１の文字列から第２の文字列へのスペル変更が、第２の文字列から第１の文字列へのスペル変更よりも著しく頻繁に生じるかどうかを考慮に入れることを含む。
【００１６】
本発明のこれらおよび他の特徴は、以下にまとめられた図面に基づいて記述されるであろう。これらの図面およびそれらに関連する記述は、発明の特定の実施形態および変形例を図示するために提供されるものであり、発明の範囲を制限するものではない。
【００１７】
同一もしくは機能的に類似したコンポーネントを特定するために、図面の全体にわたって参照番号が繰り返し使用される。各参照番号の１桁目の数字は、参照されるアイテムが最初に現れる図面を特定する。
【発明を実施するための最良の形態】
【００１８】
以下、図面を参照して本発明の特定の実施形態を説明する。これら実施形態、およびインプリメンテーションに特有なそれらの様々な詳細は、発明を図示するために示されるものであり、発明の範囲を制限するものではない。発明の範囲は特許請求の範囲により定められる。
【００１９】
Ｉ．概要
本発明の１つの様相は、検索エンジンユーザの母集団の「自己修正」アクションを検出および分析するための、コンピュータにインプリメントされたプロセスを含み、その後のユーザが検索クエリーを修正もしくは変更するのを支援するための情報を抽出する。一実施形態において、スペル変更イベントを検出するために、個々のユーザの検索文字列のサブミッションのシーケンスが分析される。例えば、ユーザがＫＩＯＴＯ  ＰＲＯＴＯＣＯＬの検索を行ない、その後間もなく（おそらく１つ以上の他の検索クエリーをサブミットした後に）ＫＹＯＴＯ  ＰＲＯＴＯＣＯＬを検索すると仮定する。２つの検索文字列がスペルにおいて類似し、且つ接近した時間でサブミットされたので、一方の検索文字列から他方の検索文字列へのこの「遷移」は、スペル変更イベントとして扱われることができる。
【００２０】
このプロセスを通じて検出されるスペル変更イベントは、ユーザの全体にわたって集計され、その後のユーザにとって有用であろうスペル変更を特定するために、全体として分析される。このプロセスは、スペル変更イベントデータに対して１つ以上の統計規則を適用することを含むことができる。一例として、特定の検索文字列を修正しようとしたすべてのユーザのアクションに基づいて、ユーザが最も頻繁に遷移する類似したスペルの検索文字列を特定しようとする規則が適用され得る。この規則は、ＳＴＲＩＮＧ１を修正しようと試みるユーザが、ＳＴＲＩＮＧ２をサブミットすることにより、比較的頻繁にＳＴＲＩＮＧ１を修正しようと試みる場合、ＳＴＲＩＮＧ２はＳＴＲＩＮＧ１に対する有用な代替であるという仮定に基づく。
【００２１】
別の例として、スペルが類似した２つの検索文字列であるＳＴＲＩＮＧ１とＳＴＲＩＮＧ２との間を遷移するユーザが、特定の方向、即ちＳＴＲＩＮＧ１→ＳＴＲＩＮＧ２もしくはＳＴＲＩＮＧ２→ＳＴＲＩＮＧ１の方向に、スペルが類似した２つの検索文字列であるＳＴＲＩＮＧ１とＳＴＲＩＮＧ２との間を遷移する傾向があるかどうかを考慮に入れるという「オッズ差」規則が適用され得る。この規則は、検索文字列を最初にミススペルするユーザが、多くの場合ミススペルの修正を試みるであろう一方、検索文字列を正確にスペルするユーザは、概して、ミススペルされたバージョンの文字列をサブミットし続けないであろうという仮定に基づく。例えば、ユーザがＳＴＲＩＮＧ２をサブミットし、続いてＳＴＲＩＮＧ１をサブミットするよりも著しく頻繁に、ユーザがＳＴＲＩＮＧ１をサブミットし、続いてＳＴＲＩＮＧ２をサブミットする傾向があることを、ユーザの母集団のクエリーサブミッションの履歴が明らかにすると仮定する。この履歴データに基づいて、オッズ差の規則は、ＳＴＲＩＮＧ２をＳＴＲＩＮＧ１の潜在的に有用な代替であると特定することができ、ＳＴＲＩＮＧ１がＳＴＲＩＮＧ２の有用な代替ではないと結論を下すことができる。異なる言い方をすれば、オッズ差の規則は、ＳＴＲＩＮＧ２を、有望なＳＴＲＩＮＧ１の「修正」バージョンであると特定することができる。
【００２２】
一実施形態では、有用でないであろうスペル変更を削除するためのフィルタとしてそれぞれが機能する複数の統計規則が、検出されたスペル変更に対して適用される。例えば、ＳＴＲＩＮＧ１からＳＴＲＩＮＧ２への所与のスペル変更について、ＳＴＲＩＮＧ２をサブミットしたことによりＳＴＲＩＮＧ１にスペル変更をするユーザが、比較的ほとんどいない場合、第１の規則は、このスペル変更をフィルタアウトする（即ち、ＳＴＲＩＮＧ２を、ＳＴＲＩＮＧ１の非有用な代替であると特定する）ことができる。この第１の規則によってスペル変更がフィルタアウトされない場合、オッズ差の規則は、ＳＴＲＩＮＧ１からＳＴＲＩＮＧ２への遷移がＳＴＲＩＮＧ２からＳＴＲＩＮＧ１への遷移よりもそれほど頻繁に起こっていなければ、スペル変更をフィルタアウトすることができる。
【００２３】
特定のスペル変更の有用性を評価するために、様々な他の規則および基準が、追加的もしくは代替的に使用されてもよい。例えば、分析は、特定の検索クエリーサブミッションが成功したかどうかを証明する或るクエリーサブミッション後のユーザアクションを考慮に入れることができる。例えば、分析は、ユーザが検索した結果によるブラウジングアクションが、別の類似したスペルの検索文字列にわたる１つの検索文字列の結果に、より大きなレベルの関心を明らかにするかどうかを考慮に入れることができる。
【００２４】
この分析プロセスを通じて特定される「修正された」検索文字列（「代替」文字列もしくはスペルとも呼ばれる）は、それらが、成功する場合もあり成功しない場合もある、クエリーを自己修正するユーザの試みに由来するので、技術的に正確でないスペルとなる場合がある。（従って、本明細書で使用される用語「正確な」及びその派生語は、「エラーのない」を完全には意味しない。）しかしながら、所与の文字列ＳＴＲＩＮＧ１及び特定された「修正」バージョンのＳＴＲＩＮＧ２については、ＳＴＲＩＮＧ２は、概して、ＳＴＲＩＮＧ１よりもスペルエラーがなさそうである。さらに、ＳＴＲＩＮＧ２がミススペルされるかどうかにかかわらず、図示する実施形態においては、ＳＴＲＩＮＧ２はＳＴＲＩＮＧ１の有用な代替となりそうである。この点に関しては、有用な検索結果を提供するために検索されているデータリポジトリ内に、ミススペルされた用語が十分に頻繁に現われる場合のように、ミススペルされた用語を含む検索文字列は、いくつかの場合において有用となり得る。
【００２５】
以下の記述において、文字列Ａから文字列Ｂへのスペル変更もしくは「遷移」は、Ａ→Ｂあるいは（Ａ，Ｂ）と表される。この遷移は即時である必要がない。例えば、ユーザは、Ａ及びＢをサブミッションする間に、１つ以上の介在するアクション（他の検索文字列のサブミッションを含む）を実行してもよい。ユーザにとって潜在的に有用なものとして、ＡからＢへのスペル変更が選択される場合、検索文字列の順序付けされたペアは「マッピング」と呼ばれる。
【００２６】
ＩＩ．検索エンジンコンポーネント（図１）
このサブセクションおよび以下のサブセクション中の記述は、本発明を実施する特定の方法の例示である。本発明を実施する他の方法は、当業者には明白であろう。
【００２７】
図１は、本発明の一実施形態に係る検索エンジンシステム１００（「検索エンジン」）のコンポーネントおよび一般的なプロセスフローを示す。検索エンジン１００は、ＰＣ、携帯情報端末、無線電話、ＴＶセットトップボックスなどのようなユーザコンピューティングデバイス１１０によって、インターネット１２０のようなコンピュータネットワークを通じてアクセスされる。本発明はそのように制限されていないが、典型的には、検索エンジンシステム１００はウェブサイトシステムの一部としてインプリメントされる。検索エンジン１００はサーバシステム１３０を含み、サーバシステム１３０は、ユーザが検索を行なうことができる１つ以上のタイプのアイテム（ウェブページ、記事、製品など）の、即ちそれに関連づけられたアイテムコンテンツのリポジトリ１３２へのアクセスを提供する。
【００２８】
サーバシステム１３０は、ユーザコンピューティングデバイス１１０から要求を受信する。これらの要求は、アイテムコンテンツのリポジトリ１３２内に表されている希望のアイテムを見つけるために、ユーザによってサブミットされる検索クエリーを含む。検索クエリーはクエリープロセッサ１３５によって処理される。クエリープロセッサ１３５は、対応するアイテムを特定するために、１つ以上の検索インデックス１４０にアクセスする。いくつかの実施形態では、アイテムの異なるコレクションもしくはカテゴリーについて、異なるインデックスが提供されてもよい。例えば、検索エンジンシステムに関連した電子カタログを検索するために、１つ以上の他の検索インデックスが提供されてもよい一方、ワールドワイドウェブを検索するために、１つの検索インデックスが提供されてもよい。
【００２９】
図１に示されるように、サーバシステム１３０は、個々のユーザによってサブミットされた検索クエリーのシーケンスを反映する検索履歴を維持する。これらの検索履歴は、個々のユーザによって特定の検索クエリーがサブミットされたオーダーに関する情報を保存する、年代順のログファイルもしくはリレーショナルデータベースのような、任意の適切なタイプのデータリポジトリ１５０中で維持され得る。一実施形態において、それぞれの検索クエリーサブミッションについて記録されたイベントデータは、サブミットされた検索文字列（それは検索語をいくらでも含むことができる）、ユーザのブラウジングセッションのセッションＩＤ、および、適用可能な場合、検索したアイテムコレクション又はカテゴリーを含む。タイム／日付スタンプおよびユーザ識別子のような他のデータエレメントが含まれてもよい。いくつかの実施形態では、検索イベントデータが、他のタイプのユーザアクション（例えば、検索結果を「クリックスルーする」イベント、他のＵＲＬを選択するイベント、アイテムに関連するトランザクションなど）を記述するイベントデータと共に格納されてもよい。
【００３０】
図示する実施形態におけるスペル修正の特徴は、スペル変更アナライザー１６０を通じて、そして、スペル変更アナライザーによって生成される検索文字列修正マッピングを格納するマッピングテーブル１８０によって実現される。スペル変更アナライザー１６０は、（１）検索履歴リポジトリ１５０に格納されたイベントデータを分析し、ユーザによってなされたスペル変更を特定すること、および（２）その後の検索を行なうユーザにとってそのスペル変更が有用となりそうかどうかを評価するために、これらスペル変更を行うユーザのアクションを全体的に分析することの責任を負う。有用であると特定されたスペル変更は、マッピングテーブル１８０に格納され、それは次に、クエリープロセッサ１３５によって使用され、ユーザがユーザの検索クエリーを修正もしくは訂正するのを支援する。
【００３１】
一実施形態において、スペル変更アナライザー１６０は、同じブラウジングセッション（即ち同じユーザによる）の間にサブミットされた特定のペアの検索文字列のスペルを比較することにより、スペル変更を検出する。スペルは、編集距離アルゴリズム、および／または文字列のスペルを比較するための他のアルゴリズムを使用して比較され得る。この「セッションベースの」実施形態において、同じブラウジングセッション中の、スペルが類似した２つの検索文字列Ａ及びＢのユーザのサブミッションは、１つ以上の介在する検索文字列をユーザがサブミットしたかもしれないにもかかわらず、スペル変更イベントとして扱われることができる。他の実施形態においては、スペルが類似した２つの検索文字列のユーザのサブミッションは、介在する検索文字列がサブミットされなかった場合にのみ、あるいは、互いのサブミッションが、所定の時限もしくはクリック数内において生じた場合にのみ、スペル変更イベントとして扱われることができる。
【００３２】
一実施形態におけるＡからＢへの特定のスペル変更の有用性を評価するために、スペル変更アナライザー１６０は、Ａの修正を試みるユーザが、どれくらい頻繁に、ＢをサブミットすることによりＡの修正を試みるかを考慮する（以下で説明されるように、これは、Ａに対してスペル変更を加えるユーザが、ＢをサブミットすることによりＡに対してスペル変更を加えるであろう確率を計算することにより達成され得る）。さらに、上記したように、スペル変更アナライザー１６０は、ユーザのＢからＡへの遷移よりも、ユーザのＡからＢへの遷移が著しく頻繁であるかどうかを考慮することもできる。その分析は、最新のＮ日又は数週間のデータのような、イベントデータの特定の時間セグメントに制限されてもよい。あるいは、その分析は、収集した全てのイベントデータを考慮に入れることができるが、より最近のイベントには、より大きな重みが適用され得る。
【００３３】
図１において「他のユーザイベントデータ」と表記される矢印によって示されるように、スペル変更アナライザー１６０は、特定のスペル変更の有用性を評価する際に、１つ以上の他のタイプのユーザアクションを追加的もしくは代替的に考慮してもよい。例えば、ＡからＢへの所与のスペル変更については、スペル変更アナライザー１６０は、ＡからＢへ切り換えたユーザが、Ａの結果よりもＢの結果でより満足したかどうかを反映するユーザアクションを考慮することができる。例えば、ユーザが、通常、Ａの検索結果よりもＢの検索結果を閲覧してより多くの時間を過ごすという事実は、ＢがＡに対する有用な置き換えであるという証拠と考えられてもよい。
【００３４】
さらに、図１に示される「他のユーザイベントデータ」は、Ａ及びＢのサブミッションの間にユーザによって実行された、介在するアクションに関するデータを含んでもよい。例えば、これら介在するアクションは、ユーザがＢをサブミットする前に、既に新しい検索目的に「移動」していたであろうことを明らかにすることができる。例えば、これは、ユーザがＡを検索し、その後この検索によって場所が指定されるアイテムを購入もしくはダウンロードし、その後Ｂを検索する場合に正しいであろう。ユーザの介在するアクションが、Ａ及びＢのサブミッション間の弱い結びつきを明らかにする場面において、この特定の、ＡからＢへのユーザの遷移は無視されてもよく、あるいは、より少ない重みが与えられてもよい。
【００３５】
スペル変更アナライザー１６０の特定の実施形態は、図４〜７に示され、以下のセクションＩＶにおいて記述される。
【００３６】
スペル変更アナライザー１６０の出力は、Ａ→Ｂの形式をした、検索文字列マッピングのデータセットである。ここで、ＢはＡの修正バージョンである（Ａの「代替」バージョンもしくはスペルとも呼ばれる）。例えば、そのようなマッピングの１つは、修正バージョン“Ａｌｄｏｕｓ  Ｈｕｘｌｅｙ”に対して、キー検索文字列“Ａｌｄｕｓ  Ｈｕｘｌｅｙ”をマッピングすることができる。所与の検索文字列は、１つ以上の置き換え候補に対してマッピングされてもよい。例えば、第２の修正バージョン“Ａｌｄｕｓ  Ｈｕｘｌｙ”に対して、“Ａｌｄｕｓ  Ｈｕｘｌｅｙ”がマッピングされてもよい。上記の例におけるマッピングは、フレーズからフレーズへのマッピング（即ち、検索文字列がそれぞれ複数の用語を含む）の形式をしているが、さらに、個々の用語のマッピング（例えば、ＫｉｏｔｏからＫｙｏｔｏへの）が生成されてもよい。さらに、マッピングに含まれる検索文字列は、アルファベット文字および空白から成る必要はなく、むしろ、数字、記号、および句読点のような、検索文字列に含まれることができる他のタイプの文字を含んでもよい。
【００３７】
図１に示されるように、図示する実施形態におけるスペル変更アナライザー１６０は、さらに、それぞれのマッピングについて、確率値Ｐの形式でスコアを出力する。例えば、“Ａｌｄｏｕｓ  Ｈｕｘｌｅｙ”への“Ａｌｄｕｓ  Ｈｕｘｌｅｙ”のマッピングは、０．８の確率値を持つことができ、また、“Ａｌｄｕｓ  Ｈｕｘｌｙ”への“Ａｌｄｕｓ  Ｈｕｘｌｅｙ”のマッピングは、０．１の確率値を持つことができる。そのような確率値はそれぞれ、一般に、関連する修正が技術的に正確か、もしくはそうでなければ、ユーザに対して有用であろう確率を表す。一実施形態では、確率値Ｐはそれぞれ、ＡをサブミットするユーザがＡに対して修正を試みる場合に、Ｂをサブミットすることによりユーザが修正するであろう見込みを、より明確に表す。
【００３８】
図１に示されるように、スペル変更アナライザー１６０によって生成されるマッピングは、関連する確率値を含み、それぞれのテーブルエントリー（２つのエントリーが示されている）として、マッピングテーブル１８０に格納される。代わりに、マッピングは別の形式で格納されてもよい。例えば、確率値が除外されてもよい。別の例として、文字列から文字列へのマッピングのそれぞれに対して個別のテーブルエントリーを持つのではなく、単一のテーブルエントリーが、検索文字列の代替スペルのすべてをランクしたリストに対して、所与の検索文字列をマッピングしてもよい。さらに別の例として、所与のマッピングの検索文字列Ａ及びＢの両方を格納するのではなく、これらの２つの文字列のうちの一方が、他方を生成するために必要とされる１つ以上の編集の指示と共に格納されてもよい。
【００３９】
典型的には、何千から何百万もの異なるエントリーが、マッピングテーブル１８０に含まれる。各々のマッピングテーブル１８０は、特定の入力文字列Ａを、特定の代替もしくは修正されたスペルＢへマッピングする。典型的に、そのようなマッピングのそれぞれは、検索エンジン１００のユーザによってなされた共通のミススペル、およびミススペルを修正するために行なわれた共通のスペル変更を表す。マッピングに含まれる検索文字列は、アルファベット文字列から成る必要はなく、むしろ、数字、およびおそらくは他のタイプの文字を含んでもよい。典型的には、テーブル１８０に含まれるマッピングは、関連する時限中に観測されたすべてのスペル変更の比較的小さなサブセット、および、特に最も有用であると特定されたスペル変更を表す。以下に記述されるように、マッピングテーブル１８０は、時間とともに再生成もしくは更新されることができ、それにより、所与の任意の時間におけるマッピングテーブル１８０に表されたスペル変更は、現在の検索パターンおよびユーザの動作に密接に対応する。
【００４０】
マッピングテーブルエントリー（Ａ→Ｂ，Ｐ）のうちのいくつかあるいはすべては、特定の検索インデックスもしくはアイテムコレクションに関連して格納され得る。例えば、検索エンジンのユーザインタフェースが、ユーザに、ユーザの検索を本のタイトルに制限することを可能にする場合、マッピングの個別のセットは、ユーザが本を検索するアクションにのみ基づいて生成されてもよい。ユーザが本の検索を行なうのを支援するために、コレクションに特定のこのマッピングのセットが単独で使用されてもよい。この特徴をインプリメントするために、個別に検索可能であるそれぞれのアイテムコレクションについて、個別のマッピングテーブル１８０が生成されてもよい。あるいは、それぞれのマッピングテーブルエントリーはフィールドを含むことができ、フィールドは、エントリーが対応する１つ以上の検索インデックスを特定する。
【００４１】
以下に記述された特定の実施形態では、スペル変更アナライザー１６０は、１日当たり１回実行し、収集したイベントデータのうち、価値がある最近のＮ日分を操作するオフラインプロセスとして動作する。ここで、Ｎは典型的に３〜１００の範囲の整数である。この実施形態におけるマッピングテーブル１８０は、このプロセスが実行される度に再生成される。したがって、マッピングテーブルは、最も最近のユーザの検索動作を強く反映する。さらに、最も最近のユーザのクエリー検索動作の影響を増大させるために、分析されたイベントデータに対して、線形もしくは非線形の減衰アルゴリズムが適用されることができ、それにより、より古い検索クエリーサブミッションには、より新しいものよりも少ない重みが与えられることができる。以下に記述する実施形態では１日の実行間隔が使用されるが、代わりに、１時間、１２時間、１週間もしくは１か月のような他の実行間隔が使用されてもよい。さらに、マッピングテーブル１８０を周期的に再生成するのではなく、選択されたテーブルエントリーを連続的にもしくは周期的に更新するプロセスが使用されてもよい。
【００４２】
動作中、クエリープロセッサ１３５は、検索クエリーサブミッションに応じてマッピングテーブル１８０にアクセスし、ユーザの検索文字列についての代替スペルを探査する。特に、検索クエリーを受信すると、クエリープロセッサ１３５は、１つ以上の検索インデックス１４０にアクセスして、検索クエリーに対応するアイテムを特定し、さらに、マッピングテーブル１８０にアクセスして、ユーザによって入力された検索文字列について、何らかの代替文字列があるかどうかを決定する。検索クエリーが特定のアイテムインデックスを指定する場合、任意で、テーブル探査動作が、このインデックスに対応するマッピングの範囲に制限されてもよい。
【００４３】
クエリープロセッサ１３５がテーブル１８０に如何なる代替文字列も見つけない場合、検索エンジン１００は、単に、検索結果（対応するアイテムのリスト）をユーザに返すことができる。クエリープロセッサ１３５が１つ以上の代替を見つける場合、クエリープロセッサ１３５は、ユーザが検索を行なうのを支援するために、様々なアクションのうちの１つを実行することができる。例えば、検索エンジン１００は、１つ以上の代替スペルをユーザに提示することができる。あるいは、検索エンジンは、ユーザが入力した検索文字列を、マッピングテーブル１８０から検索された代替文字列に自動的に置き換えることができる。図８に示され、以下のセクションＶにおいて記述される一実施形態では、クエリープロセッサ１３５は、いずれかの検索結果が見つけられたかどうかに基づいて、そしてさらに、関連するマッピングの確率値Ｐに基づいて、これら２つのアクション（自動的に検索文字列を置き換えること  対  代替を提示すること）間から選択する。
【００４４】
いくつかの実施形態では、クエリープロセッサ１３５は、ユーザの検索クエリーの範囲を増大させるためのクエリー展開ツールとして、追加的もしくは代替的にマッピングテーブル１８０を使用することができる。これは、オリジナルの検索文字列と、テーブル１８０から検索された１つ以上の代替文字列との論理的なＯＲを取ることにより達成され得る。
【００４５】
図１に示されるクエリープロセッサ１３５及びスペル変更アナライザー１６０は、１台以上の汎用計算機によって実行されるソフトウェアモジュール中にインプリメントされ得る。マッピングテーブル１８０は、Ｂツリーもしくは他の任意の１以上の適切なデータ構造としてインプリメントされることができ、例えば、サーバの、半導体ランダムアクセスメモリもしくは磁気ディスクドライブ記憶装置に維持されることができる。図１に示されたデータリポジトリ１３２、１４０、１５０は、データベース、フラットファイル、および／または他のタイプのコンピュータベースの記憶装置システムとしてインプリメントされることができる。
【００４６】
ＩＩＩ．ユーザインタフェース例
図２および３は、図１のシステムによって提供され得る検索ユーザインタフェースの一般形式を示す。この特定の例では、検索インタフェースは、ウェブブラウザによって表示されるウェブページを使用してインプリメントされる。他の実施形態では、検索インタフェースは、ユーザコンピューティングデバイス１１０上で動作する非ブラウザ型のアプリケーションプログラムの一部であってもよい。あるいは、検索インタフェースは、音声ベースのインタフェースとしてインプリメントされてもよく、それを通じて、ユーザは、ユーザの検索クエリーの文字を発音することができる。
【００４７】
図２は、ユーザが検索クエリーを入力しサブミットすることができる検索ページ２１０を示す。この例では、ユーザは、検索フィールド２２０へ検索文字列を入力し、次に、ボタン２３０を選択することにより、検索を実行することができる。さらに、ドロップダウンリストを使用して、ユーザは、アイテム（例えばウェブサイト、ニュース記事、本、画像など）の特定のコレクションもしくはカテゴリーに、検索を制限することを選択することができる。あるいは、特定のアイテムコレクションもしくはカテゴリーに検索の範囲を制限する能力が除外されてもよい。図２には示されないが、検索インタフェースは、例えば、主題、著者、タイトル、および製作者などのような、特定のアイテム属性に対応する個別の検索フィールドも含むことができる。
【００４８】
図３は、図２に示される検索クエリーに対応する検索結果ページの例を示す。この例では、検索結果ページは、ユーザが提供した検索文字列“Ａｌｄｕｓ  Ｈｕｘｌｅｙ”に対して一致するアイテムの検索結果リスト３００を表示し、さらに、代替文字列３１０である“Ａｌｄｏｕｓ  Ｈｕｘｌｅｙ”を表示する。代替スペル“Ａｌｄｏｕｓ  Ｈｕｘｌｅｙ”３１０は、ユーザによって選択されることができ、新しい検索クエリー中の代替文字列をサブミットするためのハイパーテキストリンクとして表示される。この例では、ユーザに単一の代替文字列３１０が提示されているが、検索結果ページ上で、各々が別々に選択可能である２つ以上の代替文字列がユーザに提示されてもよい。
【００４９】
図３に示される実施形態において、提示されたスペル変更が検索語のすべてを含まない場合、１以上の訂正された用語が強調される。したがって、図３の例では、提示された置き換え３１０中の用語“Ａｌｄｏｕｓ”が協調されており、それが、ユーザによって入力された対応する用語“Ａｌｄｕｓ”と異なることが示されている。
【００５０】
一実施形態では、検索フィールド２２０へ文字列を入力することによってではなく、提示された代替文字列３１０をクリックすることによりサブミットされる検索クエリーは、マッピングテーブル１８０を生成する目的のためのスペル変更アナライザー１６０によって、考慮に入れられないであろう。これは、提示された代替文字列が有効ではない「自己達成的な予言」効果を避けるためである。しかし、多くの場合、ユーザは検索結果ページから代替文字列を選択するので、このことは単に繰り返し提示される。あるいは、そのようなクエリーサブミッションは考慮されることができ、より少ない重みが与えられる。
【００５１】
ＩＶ．スペル変更アナライザー（図４〜７）
図４は、本発明の一実施形態に係るスペル変更アナライザー１６０のブロック図である。この実施形態では、スペル変更アナライザー１６０は、スペル変更イベント検出フェーズ、スペル変更イベント集計フェーズ、およびスペル変更フィルタリングフェーズの、３つの個別のフェーズを含むプロセスをインプリメントする。それぞれのフェーズは、それぞれのソフトウェアコンポーネント４２５、４３５、および４４５によってインプリメントされる。
【００５２】
図４に示されるように、マッピングテーブル１８０の新しいバージョンを生成するために、スペル変更アナライザー１６０が実行される度に、スペル変更イベント検出コンポーネント４２５は、最初に、イベントデータの最も最近のセットを検索し分析する。このイベントデータは検索クエリーサブミッションデータから成ることができ、あるいは、このイベントデータは、他のタイプのユーザアクション（例えば、閲覧、ダウンロード、および購入などのための、検索結果アイテムの選択）に関するイベントデータをさらに含んでもよい。この実施形態におけるそれぞれの記録されたイベントについて、イベントデータはセッションＩＤを含み、それにより、同じユーザのブラウジングセッションに対応するイベントが、直ちに特定され得る。図４において破線で示されるように、さらに、そのままのイベントデータが、イベント集計フェーズ４３５および／またはフィルタリングフェーズ４４５において追加的に分析されてもよい。
【００５３】
一実施形態では、スペル変更アナライザー１６０は、一日単位で実行され、先の２４時間にわたって収集されたイベントデータを操作する。一実施形態において、スペル変更イベント検出フェーズ４２５の間に実行される処理は、図５に示され、以下の個別の表題において説明される。スペル変更イベント検出コンポーネント４２５の出力は、重み付けされたスペル変更イベント（Ａ→Ｂ，Ｗ）のデータセット４３２である。それらの多くは、ＡからＢへの同じスペル変更に対応することができる。以下で説明されるように、それぞれの重み値Ｗは、その後の分析に対応するイベントの重要性を表す。最も最近の時限について新しく生成されたデータセット４３２は、スペル変更イベントリポジトリ４３０に加えられる。
【００５４】
新しいデータセット４３２が一旦生成されると、スペル変更イベント集計コンポーネント４３５は、最新のＮ時限に対応するデータセット４３２を検索し、本発明に特有なスペル変更によってイベントを集計する。以下で説明されるように、一実施形態では、この集計タスクは、連続的により古い時限からのデータセットに、連続的により少ない重みを与えることを含む。スペル変更イベント集計フェーズの間に実行される処理は、図６に示され、以下で説明される。
【００５５】
集計フェーズ４３５が完了した後、スペル変更フィルタリングコンポーネント４４５は、所定の基準を満たさないスペル変更をフィルタアウトする。（以下に記述されるプロセスフローにおいて、スペル変更イベント集計フェーズの間に、いくつかのスペル変更もまたフィルタアウトされる。）例えば、一実施形態では、「オッズ差」のスレショルドを満たさないスペル変更はフィルタアウトされる。一実施形態では、スペル変更フィルタリングフェーズ４４５の間に実行される処理は、図７に示され、以下に記述される。
【００５６】
フェーズ１：スペル変更イベントの検出（図５）
図５は、図４のスペル変更イベント検出フェーズ４２５をインプリメントするために使用され得るプロセスフローを示す。状態５０５では、分析のために履歴ログファイル又はセグメントが選択される。一実施形態では、検出プロセス４２５は、実行される度に、最も最近の時限（例えば最新の２４時間）について、クエリーサブミッションデータとおそらく他のタイプのイベントデータとを含む履歴ファイルを分析する。しかしながら、いくつかのインプリメンテーションでは、同じ時限をカバーする複数の履歴ファイルが別々に分析されてもよい。例えば、登録されたユーザ対未登録のユーザを表す履歴ファイルが、互いに別々に分析されることができ、これにより、登録されたユーザのアクションには、より大きな重みが与えられることができる。したがって、複数の履歴ログファイル又はセグメントが分析されるであろう可能性を提供するために、図５中にループ（ブロック５０５および５６５によって表される）が示されている。
【００５７】
次のものは、２つの仮説的なブラウジングセッションについて分析するために検索され得る、個別の検索クエリーサブミッションを分離するために使用されるカンマを伴っている検索履歴データのセット例である。
【００５８】
セッションＩＤ１２３４５についての検索履歴：
Aldus Huxley, Alldus Huxley, Aldous Huxley, George Orwell
セッションＩＤ５６７８９についての検索履歴：
Aldous Hucksley, Brave New World, Aldous Huxley
さらに、インデックス又はコレクションの検索された識別子、イベントタイムスタンプ、および／またはユーザ識別子のような他の情報要素が、検索されるデータに任意で含まれることができる。典型的に、スペル変更イベント検出プロセス４２５の特定の反復中において検索および分析された検索履歴データは、数百、数千、もしくは数百万もの特定のユーザの検索履歴を含むであろう。
【００５９】
状態５１０では、検出プロセス４２５は、選択された履歴ファイル又はセグメント内でアイテムインデックスを任意に選択し、これにより、特定のインデックスを含む検索が互いに別々に分析されてもよい。その後、状態５１５では、特定のセッション識別子が選択される。
【００６０】
状態５２０では、検出プロセス４２５は、状態５１５において選択されたユーザセッションに関連する範囲内で動作し、ユーザによってサブミットされた検索クエリーＱ１，Ｑ２，Ｑ３，．．．ＱＮから、すべての順序付けられた検索文字列のペア（Ａ，Ｂ）を特定する。ここで、文字列Ａは少なくとも４文字を有し、Ｂの前にサブミットされる（文字列Ａが３文字もしくはそれ未満である場合のマッピングを排除するために、Ａ≧４の制約が課される）。状態５１０において特定のインデックスが選択された場合、このインデックスに対応しない検索クエリーは無視される。上記の検索履歴サンプルのセッションＩＤ１２３４５について、順序付けられた検索文字列ペアは、（“Ａｌｄｕｓ  Ｈｕｘｌｅｙ”，“Ａｌｌｄｕｓ  Ｈｕｘｌｅｙ”）；（“Ａｌｄｕｓ  Ｈｕｘｌｅｙ”，“Ａｌｄｏｕｓ  Ｈｕｘｌｅｙ”）；（“Ａｌｄｕｓ  Ｈｕｘｌｅｙ”，“Ｇｅｏｒｇｅ  Ｏｒｗｅｌｌ”）；（“Ａｌｌｄｕｓ  Ｈｕｘｌｅｙ”，“Ａｌｄｏｕｓ  Ｈｕｘｌｅｙ”）；（“Ａｌｌｄｕｓ  Ｈｕｘｌｅｙ”，“Ｇｅｏｒｇｅ  Ｏｒｗｅｌｌ”）；（“Ａｌｄｏｕｓ  Ｈｕｘｌｅｙ”，“Ｇｅｏｒｇｅ  Ｏｒｗｅｌｌ”）である。セッションＩＤ５６７８９について、順序付けられた検索文字列ペアは、（“Ａｌｄｏｕｓ  Ｈｕｃｋｓｌｅｙ”，“Ｂｒａｖｅ  Ｎｅｗ  Ｗｏｒｌｄ”）；（“Ａｌｄｏｕｓ  Ｈｕｃｋｓｌｅｙ”，“Ａｌｄｏｕｓ  Ｈｕｘｌｅｙ”）；（“Ｂｒａｖｅ  Ｎｅｗ  Ｗｏｒｌｄ”，“Ａｌｄｏｕｓ  Ｈｕｘｌｅｙ”）である。
【００６１】
或る類似性の基準に従うと、各ペアの文字列のスペルが十分に類似する場合、状態５２０において特定された検索文字列ペアは、スペル変更イベントを表すことができる。状態５２５及び５３０において、検出プロセス４２５は、各ペアについてそのような類似性の値を計算する。一実施形態では、これは、各ペア（Ａ，Ｂ）の検索文字列間の編集距離Ｅ（文字の追加、削除および転置の回数）を計算することにより達成される。この目的のために、Ｌｅｖｅｎｓｈｔｅｉｎ法もしくは他の任意の編集距離アルゴリズムが使用され得る。他の実施形態において、検索文字列の類似性の他の基準が、追加的もしくは代替的に使用されてもよい。例えば、文字列Ａ及びＢの発音（それは、Ｓｏｕｎｄｅｘのようなアルゴリズムを使用して決定され得る）が、考慮に入れられてもよい。
【００６２】
上記の例では示されなかったが、分析された検索履歴中に表されたすべての検索文字列は、まず最初に小文字（もしくは大文字）に変換されることができ、これにより、大文字使用時の差異が無視される。さらに、検索文字列は、例えば句読点および余分な空白を削除することにより、他の方法で標準化されることができる。
【００６３】
状態５３５では、検出プロセス４２５は、状態５３０において計算された編集距離を、スレショルドＴ１と比較する。検索文字列ペア（Ａ，Ｂ）の編集距離がＴ１を越える場合、そのペアはさらなる考慮から除外される（状態５４５）。編集距離がＴ１以下に下がる場合、そのペアはスペル変更イベントであると特定される。編集距離が０である場合には、そのペアもまたフィルタアウトされてもよい。
【００６４】
一実施形態では、スレショルドＴ１は固定ではなく調整可能である。２つの文字列の類似性を表現する編集距離の基準の有効性が、文字列の長さに一部依存するので、これは有用である。例えば、短い文字列“Ｃａｔｓ”と“Ｄｏｇｓ”との間の編集距離は３であり、２つの単語は明白に異なる。しかしながら、より長い文字列“Ａｌｌｄｕｓ  Ｈｕｘｌｙ”と“Ａｌｄｏｕｓ  Ｈｕｘｌｅｙ”との間の編集距離もまた３であり、合理的に２番目は１番目の変形と考えられることができる。したがって、Ｔ１について使用される値は、関連する検索文字列の長さに正比例し得る。一実施形態では、例えば、Ｔ１は最小値１を有し、Ａ内の７文字毎に１だけインクリメントされる。例えば、Ａが６文字以下である場合は、Ｔ１＝１であり、Ａが７〜１３文字である場合は、Ｔ１＝２などである。ステップ５２０においてＡ≧４の制約が課されたので、Ａが３文字以下となることはできないことに注意する。
【００６５】
状態５４０では、現在のスペル変更イベント（Ａ，Ｂ）について、重みＷが計算される。ユーザのＡ及びＢのサブミッション間の「距離」もしくは「結びつき」の量を計るために、重みは部分的に使用され、従って、（Ａ，Ｂ）が本当に自己修正するイベントである見込みを反映する。例えば、ユーザが、Ａをサブミットした直後にＢをサブミットした場合、このことは、同じ日にユーザが単にＡ及びＢをサブミットした場合と比較して、ＢがＡの自己修正であるという、より強い指示とみなされることができる。一実施形態では、重みは最大値から開始し、Ａ及びＢのサブミッション間に介在するそれぞれのイベントと共に、直線的にもしくは指数関数的に、減少もしくは減衰する。またユーザのブラウジング状況における変化（例えば、アイテムの購入）を証拠づけるような或るタイプのイベントが、他のタイプのイベントよりも、重み値のより大きな低下を引き起こしてもよい。介在するイベントの数とタイプとを分析するのではなく、重み値は、検索イベントタイムスタンプを使用して決定されることができる、Ａ及びＢのサブミッション間に経過した時間の合計に基づいて（且つ反比例して）もよい。
【００６６】
さらに、状態５４０における重み計算は、ユーザのアクションが、スペル変更が成功したことを明らかにする範囲を考慮に入れてもよい。例えば、Ｂを検索した直後に、ユーザが閲覧、ダウンロード、レンタル、および購入のために検索結果アイテムを選択した場合は、ＡからＢへの遷移に関連付けられた重みは、適切に増大されることができる。
【００６７】
状態５５０〜５６５では、検出プロセス４２５は、残りの検索文字列ペア、ユーザ識別子、アイテムインデックス（考慮される場合）、および履歴ログ（複数のログ又はセグメントが処理される場合）について、状態５２０〜５４０間をループする。検出プロセス４２５の結果として生じる出力は、タプル（Ａ，Ｂ，Ｗ）のデータセット４３２である。ここで、Ａ及びＢはスペル変更イベントの検索文字列の順序付けされたペアであり、Ｗはイベントの計算された重みである。さらに、そのようなイベントのそれぞれについて、その後の使用のために編集距離Ｅが格納されてもよい。図４に示されるように、重み付けされたスペル変更イベントのこのデータセット４３２は、それに対応する、例えば特定の日付のような時限と関連付けられて、イベントリポジトリ４３０に格納される。
【００６８】
図５に示されるプロセスに対して、多くの変形が可能であることは明白であろう。一例として、セッション毎に基づいて、各ユーザの検索クエリーサブミッションを分析するのではなく、ユーザの検索クエリーサブミッションは、それらが生じた場面におけるブラウジングセッションを考慮せずに分析されることができる。例えば、ユーザが第１の検索クエリーをサブミットし、そして、第１の検索クエリーのスレショルド時限内で、もしくはクリックのスレショルド回数内で（しかし異なるブラウジングセッション中に）、第２の検索クエリーをサブミットすれば、たとえ２つのサブミッションが異なるセッションで生じたとしても、第１のクエリーから第２のクエリーへのこの遷移は、ブロック５２５〜５５０において、潜在的なスペル変更イベントとしてみなされることができる。
【００６９】
フェーズ２：スペル変更イベントの集計（図６）
図６は、図４のスペル変更イベント集計プロセス又はフェーズ４３５のプロセスフローを示す。このプロセス４３５は、図５のプロセスの完了時に実行される。状態６０５では、最も最近の時限Ｎについての、重み付けされたスペル変更イベントのデータセット４３２が検索される。ここで、Ｎは選択された整数である。Ｎの値は、最近のイベント履歴データの量を、もしくは、マッピングテーブル１８０を生成するために使用される「ルックバック範囲」を指定する。例えば、各データセット４３２が、１日周期およびＮ＝１０にそれぞれ対応すれば、マッピングテーブル１８０は、先の１０日間に生じるユーザアクションに基づくであろう。
【００７０】
状態６１０では、最も最近の時限を除く全ての時限に関連付けられたスペル変更イベントの重みＷは、「時間減衰され」る。時間減衰は、スペル変更イベントの重みを、その経過時間に正比例して減少させるプロセスを意味する。例えば、図４の検出プロセス４２５によって、１日前にタプル（“Ａｌｄｕｓ  Ｈｕｘｌｅｙ”，“Ａｌｄｏｕｓ  Ｈｕｘｌｅｙ”，０．８）が生成されたと仮定する。さらに、２日前にタプル（“Ａｌｌｄｕｓ  Ｈｕｘｌｅｙ”，“Ａｌｄｕｓ  Ｈｕｘｌｅｙ”，０．４）が生成されたと仮定する。１日当たりの減衰係数に０．５が使用される場合、その複数のタプルの重みは、それぞれ０．４と０．１とに減衰されるであろう。この例では線形の減衰関数が使用されるが、例えば指数関数のような、非線形の減衰関数が使用されてもよい。イベント重みを時間減衰させることの効力は、より古いスペル変更イベントに対するよりも、最近のスペル変更イベントに対して、より大きな重みを与えることである。
【００７１】
古くなったイベントが時間減衰された後、結合されたデータセット中の複数のタプルは、それらイベントが表す特定のスペル変更に従ってグループ化される。大文字使用でのみ異なる検索文字列は、このタスクの目的のために、同じ検索文字列として扱われてもよい。例えば、“ｋｉｏｔｏ”から“Ｋｙｏｔｏ”へのスペル変更、および“Ｋｉｏｔｏ”から“Ｋｙｏｔｏ”へのスペル変更は、同じ検索文字列として扱われることができる。
【００７２】
次に、ＡからＢ（状態６１５）への特定のスペル変更のそれぞれの状況では、状態６２０において、集計プロセス４３５が確率値Ｐを計算する。一実施形態では、確率値Ｐは、一般に、Ａを検索するユーザが続いてＢを検索する確率を表す。また、この確率値は、一般に、（１）文字列Ｂが技術的に正確にスペルされているかどうか、および（２）文字列Ｂが文字列Ａに対する有用な代替であるかどうか、の両方の良い指標である。Ｐを計算するために、様々な異なるタイプの確率方程式のどれもが使用されることができる。
【００７３】
一実施形態では、ＡからＢへの特定のスペル変更のそれぞれについてのＰの計算は、（１）このスペル変更に関して検出されたスペル変更イベントの回数、および（２）Ａから他のある文字列への、検出されたスペル変更イベントの回数、を考慮に入れる。さらに、Ｐの計算が、これらスペル変更の重みＷを考慮に入れてもよい（しかし必須ではない）。例えば、Ｐが次のように計算されてもよい。ここで、Ｓ１は、ＡからＢへのスペル変更イベントのすべての重みＷの合計であり、Ｓ２は、Ａから任意の文字列へのスペル変更イベントのすべての重みＷの合計である。
【００７４】
Ｐ´（Ａ，Ｂ）＝Ｓ１／Ｓ２
Ｐ（Ａ，Ｂ）＝Ｐ´（Ａ，Ｂ）−α＊ｓｑｒｔ（Ｐ´＊（１−Ｐ´（Ａ，Ｂ））／Ｓ１＋ｋ）
上記の第１の方程式は、ＡからＢへの検出されたスペル変更イベント、およびＡから他のある文字列への検出されたスペル変更イベントの割合に基づいて、ＡからＢへのスペル変更の「観測された確率」を（イベント重みによって修正されるように）計算する。第２の方程式は、観測された確率に基づいて実際の確率値Ｐを計算し、ＡからＢへの検出されたスペル変更イベントの回数の合計を（それらの重みによって修正されるように）考慮に入れる。この第２の方程式は、（Ａ，Ｂ）について存在するスペル変更イベントデータの量に基づいて、観測された確率を調節するためのメカニズムである。特に、Ｐは、このスペル変更に関するイベントデータの量が少ない場合に、より低くなる傾向があり、データの量が多い場合に、より高くなる傾向がある。所与のスペル変更に関する大量のイベントデータは、概して、多くの特定のユーザが、関連する時限内に、このスペル変更を加えたことを意味する。しかしながら、例えば自動化されたエージェントのような単一の「ユーザ」が、結果に対して不当に影響を及ぼさないことを保証するために、Ｐの計算に先立って、同じユーザもしくはセッションからのスペル変更イベントの複製物が、フィルタアウトされてもよい。
【００７５】
上記の第２の方程式では、αは標準偏差の数値を表し、典型的には１にセットされる。定数ｋは、典型的には２または３にセットされ、検出されないスペル変更イベントを説明するために使用される。
【００７６】
状態６２５では、集計プロセス４３５は、計算された確率値Ｐを、例えば０．０１のような、信頼のあるスレショルドＴ２と比較する。このステップは、低い確率値を有するそれらスペル変更をフィルタアウトするように設計されている。ＰがＴ２以下である場合、Ｐはスペル変更アナライザー１６０によって、さらなる考慮から除外される。
【００７７】
ＰがＴ２より大きい場合、集計プロセス４３５は、ＡからＢへの所与のスペル変更について、「ｌｉｆｔ」と呼ばれる別の値を計算する。ｌｉｆｔ値は、ユーザが、ランダムな機会に加えてＡからＢへの修正を行うであろうという見込みを反映する。一実施形態では、ＡからＢへのスペル変更についてのｌｉｆｔは、次のように計算される。ここで、Ｐ（Ｂ）は、単に、ユーザが検索エンジンに対してＢをサブミットする確率を表す。
【００７８】
ｌｉｆｔ  ＝  Ｐ（Ａ，Ｂ）／Ｐ（Ｂ）
状態６３５では、計算されたｌｉｆｔが、スレショルドＴ３と比較される。この比較は、ユーザが、検索文字列Ａをサブミットした後に検索文字列Ｂをサブミットする機会よりも、少なくともＴ３倍になりそうであろうことを本質的に示す。ｌｉｆｔがＴ３未満である場合、スペル変更は、スペル変更アナライザーによって、さらなる考慮から除外される。Ｔ３は、典型的には１０〜２０の範囲をとることができる。
【００７９】
状態６４５では、データセット中のすべての残りの特定のスペル変更について、集計プロセス４３５は状態６１５へループバックする。図示する実施形態では、集計プロセス４３５の結果として生じる出力は、タプル（Ａ，Ｂ，Ｐ）のデータセットである。ここで、Ｐは計算された確率値、もしくはＡからＢへのスペル変更についてのスコアである。
【００８０】
フェーズ３：スペル変更のフィルタリング（図７）
スペル変更アナライザー１６０のスペル変更フィルタリングフェーズ４４５は、１つ以上の規則に基づいて、集計フェーズ４３５によって出力される特定のスペル変更を、フィルタアウトすることを含む。このフェーズは完全に除外されてもよく、また、集計フェーズ４３５からの出力は、図１のマッピングテーブル１８０を生成するために使用されてもよい。しかしながら、フィルタリングフェーズ４４５において実行される処理は、類似の文字列を含み、且つ、高い確率値を有する検出されたスペル変更を、考慮から除外するのには有用であるが、ユーザにとってはそれほど有用ではないであろう。
【００８１】
図７は、フィルタリングフェーズ４４５中に実行される処理を示す。状態７０５では、ＡからＢへの特定のスペル変更は、重み付けされたスペル変更のデータセットから選択される。状態７１０および７１５では、「オッズ差」分析が、選択されたスペル変更に対して実行される。この分析は、ユーザがＢからＡへ遷移するよりも著しく頻繁に、ＡからＢへ遷移する場合にのみ、ＡからＢへのスペル変更が正確もしくは有用であろうという仮定に基づく。
【００８２】
一実施形態では、オッズ差Ｄは、Ｄ＝Ｐ（Ａ，Ｂ）／Ｐ（Ｂ，Ａ）として計算される。ここで、Ｐは、集計プロセス４３５中に計算される、スペル変更についての確率値を表す。あるいはＤは、例えば、（Ａ，Ｂ）及び（Ｂ，Ａ）に対応するそのままのイベントカウントなどの、他のいくつかの基準を使用して計算されてもよい。ブロック７１５において、ＤがスレショルドＴ４以下である場合、ＡからＢへのスペル変更は、スペル変更アナライザー１６０によって、さらなる考慮から除外される。データセットが、ＢからＡへのスペル変更についてのデータを含まない場合、スレショルドＴ４は、満たされたとして扱われることができる。
【００８３】
例として、５のスレショルドＴ４を仮定し、さらに、（“ｄｖｄ  ｐｌａｙｅｒ”，“ｄｖｄ  ｐｌａｙｅｒｓ”）及び（“ｄｖｄ  ｐｌａｙｅｒｓ”，“ｄｖｄ  ｐｌａｙｅｒ”）のそれぞれのスペル変更が、それぞれ０．６及び０．４の確率値を有すると仮定する。他方の方向に修正する場合と比較して、一方の方向に修正するための明確な理由がないため、確率値は比較的接近していると仮定される。この場合は、Ｄは、５未満である１．５と等しい。したがって、“ｄｖｄ  ｐｌａｙｅｒ”の“ｄｖｄ  ｐｌａｙｅｒｓ”へのスペル変更は、フィルタアウトされるであろう。対照的に、それぞれが０．９及び０．１の確率値を有する（“Ａｌｄｕｓ  Ｈｕｘｌｅｙ”，“Ａｌｄｏｕｓ  Ｈｕｘｌｅｙ”）及び（“Ａｌｄｏｕｓ  Ｈｕｘｌｅｙ”，“Ａｌｄｕｓ  Ｈｕｘｌｅｙ”）のスペル変更を考慮する。ここで、多くのユーザは、正確なスペル“Ａｌｄｏｕｓ  Ｈｕｘｌｅｙ”をサブミットした後に、正しくないスペル“Ａｌｄｕｓ  Ｈｕｘｌｅｙ”をサブミットすることはなさそうなので、（“Ａｌｄｏｕｓ  Ｈｕｘｌｅｙ”，“Ａｌｄｕｓ  Ｈｕｘｌｅｙ”）の確率値は低いと仮定される。この場合は、Ｄは、５より大きい９と等しいであろう。したがって、（“Ａｌｄｕｓ  Ｈｕｘｌｅｙ”，“Ａｌｄｏｕｓ  Ｈｕｘｌｅｙ”）は、フィルタアウトされないであろう。
【００８４】
スレショルド値Ｔ４は、静的もしくは動的であることができる。一実施形態では、所与のスペル変更（Ａ，Ｂ）についてのスレショルドＴ４は、ＡとＢとの間の編集距離Ｅに応じて変化し得る。例えば、編集距離Ｅが特に小さい（即ち、文字列ＡとＢとが非常に類似している）場合、状態７１５における比較を満たすことにおいて、より大きい余地を与えるために、Ｔ４は減少させられ得る。反対に、Ｅが大きい場合、その比較を満たすことをより困難にするために、Ｔ４は増大させられ得る。
【００８５】
状態７２０および７３０では、状態７１０において計算されたオッズ差Ｄを考慮に入れるために、各スペル変更（Ａ，Ｂ）についての編集距離Ｅが再評価される。特に、編集距離Ｅは、Ｄに応じて変化するスレショルドＴ５と比較されることができる。例えばＴ４よりもわずかに大きいような、Ｄがかなり小さい場合は、Ａ及びＢのスペルが非常に類似していることを要求するために、比較的低い値がＴ５に使用されてもよい。反対に、Ｄが大きい場合は、より大きな値がＴ５に使用されてもよく、あるいは、状態７２０の比較が完全に除外されてもよい。さらに、Ｐが比較的高い場合に、より大きな編集距離が許容されるように、スレショルドＴ５が、特定のスペル変更についてのＰの値に依存することができる。現在のスペル変更（Ａ，Ｂ）についての編集距離Ｅが、Ｔ５以上とならない場合、スペル変更は、状態７３０においてフィルタアウトされる。
【００８６】
状態７２５によって示されるように、Ｂがストップリストにある場合、スペル変更（Ａ，Ｂ）もまたフィルタアウトされる。一実施形態では、ストップリストは、代替の検索文字列として使用されることができない文字列のリストを含む。これらの文字列は、人間の分析によって、および／または自動化されたプロセスを通じて決定され得る。例えば、ストップリストは、自動化された分析に基づいて、検索結果アイテムの選択もしくは購入に導くことがほとんど無い、通常の検索文字列を含むことができる。図７には示されなかったが、Ｂが、Ｂについての検索クエリーを実行することにより決定され得るｎｕｌｌのクエリー結果を生成する場合、スペル変更（Ａ，Ｂ）もまた、フィルタアウトされ得る。
【００８７】
状態７３５では、フィルタリングプロセスは、すべての残りのスペル変更について、状態７０５へループバックする。フィルタリングプロセス４４５からの出力は、スペル変更アナライザー１６０の出力を構成し、複数のタプル（Ａ，Ｂ，Ｐ）のデータセットを含む。ここで、Ｐは、ＡからＢへのスペル変更に関連した確率値である。マッピングテーブル１８０を作成するために、このデータセットは、Ｂツリーもしくは他の探査構造として格納され得る。図示する実施形態では、確率値はマッピングテーブル１８０に格納されるが、確率値は破棄されてもよい。
【００８８】
Ｖ．検索クエリープロセスフロー（図８）
図８は、ユーザからの検索クエリーに応答するための、図１のクエリープロセッサ１３５によって実行され得るプロセスの１つの例を示す。ここで、クエリープロセッサ１３５は、適用可能であれば、ユーザがサブミットされた検索文字列のスペルを修正もしくは変更するのを支援する。検索クエリーがユーザ／コンピューティングデバイス１１０から受信される場合は常に、あるいは、特定のフォーマット（例えば、フィールド制限を欠くもの）の検索クエリーが受信される場合は常に、このプロセスは実行され得る。
【００８９】
状態８０５では、検索クエリーは、何れかの一致するアイテムを特定するために実行される。さらに、マッピングテーブル１８０は、受信した検索文字列について、何れかの代替スペルが存在するかどうかを決定するためにアクセスされる。いくつかの実施形態では、これは、検索されている特定の検索インデックスもしくはアイテムコレクションに対応するテーブルエントリー（マッピング）をチェックすることを含むことができる。状態８１０及び８３０によって示されるように、マッピングテーブル１８０中に代替スペルが見つからない場合、クエリーの検索結果を表す一致アイテムリスト（もしくはその一部分）がユーザに返され、プロセスは終了する。
【００９０】
マッピングテーブル１８０中に１つ以上の代替スペルが見つかる場合、状態８１５において、見つけられたアイテムの数が考慮される。見つけられたアイテムの数が０よりも多い場合、最も高い確率値Ｐを有する代替が、マッピングテーブル１８０から選択される。状態８２０では、この「トップランクの」代替が、一致アイテムリストと共にユーザに返され、代替スペル（図３に示される検索結果ページの例を参照）として提示される。単一の代替スペルを提示するのではなく、検索結果ページ上で２つ以上の代替スペルが提示されてもよい。
【００９１】
見つけられたアイテムの数が０と等しい場合、トップランクの代替の確率Ｐが、スレショルドＴ６と比較される（状態８２５）。ＰがＴ６以下である場合、検索結果ｎｕｌｌがユーザに返される（状態８４５）。このシナリオでは、ユーザが提供した検索文字列についての代替スペルのリスト（もしあれば）が、ｎｕｌｌ検索結果ページ上に追加的に示されてもよい。
【００９２】
トップランクの代替スペルに関連づけられた確率Ｐが、スレショルドＴ６よりも大きい場合、その後、ユーザが提供した検索文字列は、このトップランクの代替と置き換えられ、検索クエリーが再実行される（状態８３５）。その後、この修正された検索の結果（アイテムと一致するリスト）は、表示のためにユーザに返される（状態８４０）。このシナリオでは、ユーザの検索文字列に対してなされた置き換えを特定するメッセージが表示されてもよい。
【００９３】
図８の方法を通じて処理される検索文字列が、単一のミススペルされた検索語（例えば用語“ｋｉｏｔｏ”）から成り得ることに注意されるべきである。この点に関しては、ミススペルされた用語の正確なスペルを予測するために、検索クエリーの範囲内で他の用語を使用するいくつかの先行技術の方法と異なり、本明細書に開示された方法は、単一の用語の検索クエリーを修正する（もしくは、修正を提示する）能力を有する。
【００９４】
上記の説明から明白となるであろうが、図８のプロセスは、検索エンジンユーザがユーザ自身の検索クエリーを洗練及び修正するのを支援する目標を達成するための様々な方法に、変更されることができる。例えば、代替スペルが、その確率値にかかわらず、もしくはオリジナルの検索によって見つけられたアイテムの数にかかわらず、マッピングテーブル１８０内に見つけられた時、代替スペルがユーザに常に提示されてもよい。別の例として、１つ以上のトップランクの代替スペルを含むために、オリジナルのクエリーが自動的に拡張されてもよい。
【００９５】
さらに、図８に示されるプロセスは、先に存在するスペル修正方法と組み合わされて使用されることができる。一例として、図８に示されるプロセスは、米国特許第６，１４４，９５８号に記述されているスペル修正プロセスと並行して実行されることができる（即ち、両方のプロセスは、ユーザが供給した検索文字列についての代替を特定するために、互いに依存せずに使用されることができる）。多くの場合において、これらの２つのプロセスは異なる代替文字列を特定することができる。その場合には、そのような代替文字列のそれぞれが、ユーザに提示され得る。
【００９６】
ＶＩ．ウェブサイトインプリメンテーション例（図９）
図９は、サービスに基づいたウェブサイトシステム９００の一部として、図１のシステムがどのようにインプリメントされ得るかの一例を示す。ここで、ウェブサイトシステム９００は、例えば、システム９００を通じてオーダーされ得る製品のような、アイテムの電子カタログへのアクセスを提供する。図１の参照番号のうちのいくつかは、コンポーネントの一致を示すために、図９において再使用される。一例として、図９の実施形態では、図１のサーバ１３０は、ユーザコンピューティングデバイス１１０からのページ要求に応答するウェブサーバであり、ユーザコンピューティングデバイス１０のそれぞれは、ブラウザソフトウェアを実行する。何万もの同時のブラウジングセッションを提供することができる大規模システムでは、ウェブサーバシステムは、典型的に、複製された多くの物理的サーバ（例えば１００以上）を使用してインプリメントされる。一実施形態では、ユーザ１１０がウェブサイトシステムにアクセスする際に、先の２４時間以内にユーザがシステムにアクセスしていなければ、ウェブサーバ１３０は新しいセッションを開始する（新しいセッションＩＤを割り当てる）。
【００９７】
ウェブサーバ１３０は、ネットワークを通じて、カタログサービス９０４、クエリーサービス９１０、およびスペル修正サービス９２０を含む様々なサービスと通信する。さらに、ウェブサーバ１３０は、例えば、ユーザアカウントデータ、およびオーダー処理などを管理するためのサービスのような、様々な他のサービス９１４と通信することができる。それぞれのサービス９０４、９１０、９１４、および９２０は、関連するサービスコードを実行する１つ以上の物理的サーバとしてインプリメントされ得る。
【００９８】
図９に示されるように、ウェブサーバ１３０は、ウェブページテンプレートのリポジトリにアクセスするテンプレートプロセッサ９０２を含む。これらのテンプレートは、特定のウェブページを動的に生成する目的のために発行されるサービス要求を含み、実行される処理を明示する。例えば、ユーザが、特定の製品もしくは製品カテゴリーに関連したウェブページを要求する場合、関連するテンプレートは、テンプレートプロセッサ９０２に、カタログサービス９０４からの関連するカタログコンテンツを要求させる。カタログサービス９０４は、例えば、電子カタログに表された特定の製品の説明及び画像を含むことができるアイテムコンテンツのリポジトリ１３２から、このコンテンツを検索することができる。リポジトリ１３２に格納されたアイテムコンテンツは、インデクサ９０６によって、周期的にもしくは連続的にインデックス付けされ、対話型の検索を実行するために使用される１つ以上の検索インデックス１４０を生成する。
【００９９】
ユーザが検索クエリーをサブミットする際に、テンプレートプロセッサ９０２は、それぞれのサービスコールを通じて、クエリーサービス９１０およびスペル修正サービス９２０に検索クエリーを渡す。クエリーサービス９１０は、一致するアイテムの何れかのリストを生成して返すために、関連する検索インデックスを使用することにより応答する。カタログ検索の場合、一致するアイテムのリストは、一致する製品から成ることができる。スペル修正サービス９２０は、任意の代替検索文字列を探査するためのマッピングテーブル１８０を使用することにより、また、これら代替文字列とそれらの確率値とをテンプレートプロセッサ９０２に返すことにより、検索クエリーに応答する。テンプレートプロセッサ９０２は、図８のブロック８１０〜８４５に従って検索結果ページを生成するために、クエリーサービス９１０およびスペル修正サービス９２０によって返される情報を使用することができる。
【０１００】
いくつかの実施形態では、スペル修正サービス９２０によって返される代替文字列が、行われている検索のタイプに依存してもよい。例えば、ユーザが本の検索を行う（ここで本は、カタログに表された製品の複数のカテゴリーのうちの１つを表す）場合に、代替文字列が、他のユーザによって行なわれた本の検索に、単独でもしくは主に基づいてもよい。上記に説明されるように、これは、各マッピングテーブルエントリーに、そのエントリーが対応する１以上の検索インデックスの識別子を含むことにより、および／または、異なる検索インデックスについて、異なるマッピングテーブル１８０を生成することにより達成され得る。
【０１０１】
さらに、図９を参照すると、ウェブサーバ１３０は、検索クエリーサブミッションイベントと、任意で他のタイプのイベント（例えば、すべてのクリックイベント）を、イベント履歴リポジトリ１５０に報告する。このリポジトリ１５０は、例えば、当該技術において周知であるウェブログファイルとしてインプリメントされてもよい。あるいは、例えば、米国公開番号第２００５／００３３８０３Ａ１において記述されているように、イベント履歴リポジトリ１５０は、リレーショナルデータベースシステムを使用してインプリメントされてもよい。さらに、イベント履歴リポジトリ１５０は、他の情報源から収集されたイベントデータを格納してもよい。例えば、検索／イベント履歴は、検索エンジンをインプリメントする他のウェブサイトシステムから集められることができ、これにより、マッピングテーブル１８０は、複数の検索エンジンシステムおよびウェブサイトに関してモニターされた検索活動を反映する。
【０１０２】
１つ以上のマッピングテーブル１８０を生成するために、イベント履歴リポジトリ１５０で収集されたイベント履歴データは、スペル変更アナライザー１６０によって分析される。図４〜７に示されたプロセスが、この目的のために使用されることができる。あるいは、イベント履歴を分析し、そして、対応するブラウジングセッションが生じる時に実質的に実時間で、マッピングテーブル１８０に対して更新を実行するプロセスが使用されてもよい。
【０１０３】
一実施形態では、スペル修正サービス９２０は、インターネットを通じて他のコンピュータシステムによって直接的にアクセスされ得るウェブサービスとしてインプリメントされる。したがって、例えば、他の検索エンジンシステム（例えば、他のウェブサイトのもの）は、特定の検索文字列の代替スペルを得るために、スペル修正サービス９２０に対してサービス要求を送信することができる。この点に関しては、これら他のシステムが、マッピングを生成するために使用されるイベントデータのどれを供給したかどうかにかかわらず、スペル修正サービス９２０によって供給された代替スペルは、通常、他のユーザ、独立したウェブサイト、および検索エンジンシステムにとって有用である。
【０１０４】
スペル変更アナライザー１６０も同様に、ウェブサービスとしてインプリメントされ得る。例えば、スタンダード・ログ・ファイル・フォーマットのような標準形式の検索履歴データを受理して、検索文字列マッピング（Ａ，Ｂ，Ｐ）の対応するデータセットを返すように、アナライザー１６０は設定され得る。したがって、例えば、他の検索エンジンプロバイダは、それらの検索エンジンそれぞれについて、検索エンジンに特有のマッピングテーブル１８０を生成するために、スペル変更アナライザー１６０を使用することができ、また、それらのユーザが検索クエリーを修正するのを支援するために、これらマッピングテーブルを使用することができる。
【０１０５】
ＶＩＩ．ドキュメントのスペルチェック
本発明に従って生成された文字列から文字列へのマッピングはまた、ドキュメントのスペルチェックに使用される既存のスペルチェックプログラムを増強するために使用されることもできる。そのようなドキュメントスペルチェッカーは、一般に、例えばＭｉｃｒｏｓｏｆｔ  Ｗｏｒｄのようなワードプロセッサ・プログラム、およびＭｉｃｒｏｓｏｆｔ  Ｏｕｔｌｏｏｋのような電子メールクライアント・プログラムに含まれる。
【０１０６】
一例として、代替スペルが辞書中に見つからない（あるいは、ユーザによって望ましいと指示されたものが何もない）未認識の用語に遭遇する場合、ドキュメントスペルチェッカーは、この用語の代替スペルのリストを検索するために、スペル修正サービス９２０（図９）へ、サービス要求を送信することができる。その後、著者名、商号、製品番号、およびドキュメントスペルチェッカーの辞書中には一般に見つからない他の文字列を含み得る代替スペルのこのリストは、ユーザに提示され得る。これら代替スペルは、それら代替スペルが検索エンジンユーザのアクションに基づくことと、それら代替スペルが技術的に正確ではない可能性を有することとを示すメッセージと共に表示されてもよい。
【０１０７】
ＶＩＩＩ．スペル変更イベントデータの他の情報源に基づいたマッピングの生成
文字列を代替文字列にマッピングするために本明細書に記述された方法はまた、スペル変更イベントデータの他の情報源を用いる使用に対して適用されることもできる。一例として、ドキュメントスペルチェッカープログラムのユーザには、スペル変更イベントデータを集計および分析するサービスに賛同するオプションが与えられ得る。賛同したユーザのドキュメントスペルチェッカーが、未認識の用語Ａに遭遇すると、スペルチェッカーは、ユーザに、リストから選択するように、あるいは代替用語Ｂをタイプ入力するように促すことができる。ユーザがそのような代替用語を選択もしくはタイプ入力すれば、スペルチェッカーは、そのサービスに、ＡからＢへのスペル変更を報告することができる。多くの異なる賛同者のコンピューティングデバイスからサービスへ報告されたスペル変更は、代替文字列への文字列のマッピングを生成するために、上記に記述されたのと同じ方法を使用して、全体的に分析されることができる。例えば、これらのマッピングは、先のサブセクションにおいて記述されているように、ユーザがドキュメントをスペルチェックするのを支援するために、および／または、ユーザがユーザ自身の検索クエリー中のスペルエラーを修正するのを支援するために使用されてもよい。
【０１０８】
ＩＸ．結論
本発明が、ある実施形態および変形例によって記述されたが、本明細書に述べられた特徴および利点のすべてを提供するとは限らない実施形態を含む、当業者にとっては明白な他の実施形態および変形例もまた、本発明の範囲に属する。従って、本発明の範囲は、特許請求の範囲を参照することによってのみ定義されるであろう。
【図面の簡単な説明】
【０１０９】
【図１】図１は本発明の一実施形態に係る検索エンジンシステムのコンポーネントおよびプロセスフローを示す。
【図２】図２は図１のシステムにおける検索ページの例を示す。
【図３】図３は図１のシステムにおける検索結果ページの例を示す。
【図４】図４は本発明の一実施形態に係る図１のスペル変更アナライザーのブロック図である。
【図５】図５は図４のスペル変更イベント検出フェーズ中に実行される処理を示す。
【図６】図６は図４のスペル変更イベント集計フェーズ中に実行される処理を示す。
【図７】図７は図４のスペル変更フィルタリングフェーズ中に実行される処理を示す。
【図８】図８は図１のシステムにおけるクエリープロセッサによって検索クエリーがどのように処理され得るかを示す。
【図９】図９はアイテムの電子カタログへのアクセスを提供するウェブサイトシステムの一部として図１〜７のシステムがどのようにインプリメントされ得るかの一例を示す。
【図１】
2009505221.tif 000003
【図２】
2009505221.tif 000004
【図３】
2009505221.tif 000005
【図４】
2009505221.tif 000006
【図５】
2009505221.tif 000007
【図６】
2009505221.tif 000008
【図７】
2009505221.tif 000009
【図８】
2009505221.tif 000010
【図９】
2009505221.tif 000011
【手続補正書】
【提出日】平成20年5月29日(2008.5.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
検索文字列スペル変更イベントを検出するために、複数のユーザそれぞれの検索文字列サブミッションを分析することと、
特定のスペル変更がユーザにとって有用かどうかを評価するための集計基準に基づいて、少なくとも部分的に、検出された前記検索文字列スペル変更イベントを分析することにより、前記検索文字列サブミッションに含まれている複数の検索文字列それぞれについて、それぞれの前記検索文字列の１つ以上の代替スペルを特定することとを含み、
前記検索文字列スペル変更イベントそれぞれが、ユーザが、第１の検索文字列を検索エンジンにサブミットし、続いて、スペルが前記第１の検索文字列に類似するが前記第１の検索文字列とは異なる第２の検索文字列を、前記検索エンジンにサブミットするイベントであり、
検出された前記検索文字列スペル変更イベントを分析することが、前記検索文字列スペル変更イベントが起こったブラウジングセッションの一部として行われた他のユーザアクションに、少なくとも部分的に基づいて、検索文字列スペル変更イベントに重み付けすることを含む、コンピュータにより実行される方法。
【請求項２】
前記検索文字列スペル変更イベントに重み付けすることが、前記検索文字列スペル変更イベントについて重み値を計算することを含み、前記重み値が、前記検索文字列スペル変更イベントが自己修正するイベントである見込みを反映する請求項１の方法。
【請求項３】
前記重み値が、前記第１の検索文字列及び前記第２の検索文字列のサブミッション間に経過した時間の合計に依存する請求項２の方法。
【請求項４】
前記重み値が、前記第１の検索文字列及び前記第２の検索文字列のサブミッション間に起こった介在イベントの数と、前記介在イベントのタイプとに依存する請求項２の方法。
【請求項５】
前記重み値を計算することが、対応するユーザのアクションが前記スペル変更が成功したことを明らかにする範囲を考慮に入れることを含む請求項２の方法。
【請求項６】
検出された前記検索文字列スペル変更イベントを分析することが、文字列Ａから文字列Ｂへのスペル変更が、文字列Ｂから文字列Ａへのスペル変更よりも著しく頻繁に起こるかどうかを、少なくとも部分的に評価することにより、文字列Ｂが文字列Ａの有用な代替スペルかどうかを評価することを含む請求項１の方法。
【請求項７】
検出された前記検索文字列スペル変更イベントを分析することが、文字列Ａにスペル変更を加えるユーザが、どれくらい頻繁に文字列Ｂをサブミットすることにより文字列Ａにスペル変更を加えるかを考慮に入れることにより、文字列Ｂが文字列Ａの有用な代替スペルかどうかを評価することを含む請求項１の方法。
【請求項８】
前記検索文字列サブミッションを分析することが、複数の前記ユーザのうち特定のユーザによってサブミットされた検索文字列間の編集距離を計算すること含む請求項１の方法。
【請求項９】
前記検索文字列スペル変更イベントが、ユーザが、１つ以上の介在する検索を、前記第１の検索文字列の前記サブミッションと前記第２の検索文字列の前記サブミッションとの間に行なうイベントを含む請求項１の方法。
【請求項１０】
検出された前記検索文字列スペル変更イベントを分析することが、文字列Ａおよび文字列Ｂをサブミットしたユーザのアクションを分析することを含み、文字列Ａから文字列Ｂへのスペル変更について、文字列Ａをサブミットするユーザに対して文字列Ｂの有用性を評価する請求項１の方法。
【請求項１１】
文字列Ａをサブミットするユーザに対して文字列Ｂの前記有用性を評価することが、文字列Ｂをサブミットしたユーザのブラウジングアクションを分析することを含み、文字列Ｂをサブミットしたユーザが、文字列Ｂに対応する検索結果に満足したかどうかを評価する請求項１０の方法。
【請求項１２】
文字列Ａをサブミットするユーザに対して文字列Ｂの前記有用性を評価することが、文字列Ａと文字列Ｂとの間の編集距離を考慮に入れることを含む請求項１０の方法。
【請求項１３】
文字列Ａをサブミットするユーザに対して文字列Ｂの前記有用性を評価することが、文字列Ａから文字列Ｂへのスペル変更が、文字列Ｂから文字列Ａへのスペル変更よりも頻繁に起こるかどうかを考慮に入れる請求項１０の方法。
【請求項１４】
検出された前記検索文字列スペル変更イベントを分析することが、異なる検索文字列スペル変更イベントに対して、対応する前記検索文字列スペル変更イベントが起こったブラウジングセッションにおいて実行された他のユーザアクションに依存する異なる重みを割り当てることを含む請求項１の方法。
【請求項１５】
検出された前記検索文字列スペル変更イベントを分析することが、特定のスペル変更について、前記スペル変更についての重みを生成するために、特定の前記スペル変更に関連する複数のイベントの前記重みを組み合わせることを、さらに含む請求項１４の方法。
【請求項１６】
検出された前記検索文字列スペル変更イベントを分析することが、より古い検索文字列スペル変更イベントよりも、最近の検索文字列スペル変更イベントに、より大きな重みを与えることを含む請求項１の方法。
【請求項１７】
複数の前記検索文字列のうち特定の検索文字列の、対応する代替検索文字列へのマッピングを、コンピュータ記憶装置に生成することを、さらに含む請求項１の方法。
【請求項１８】
前記マッピングを使用して、代替検索文字列のスペルをユーザに提示することを、さらに含む請求項１７の方法。
【請求項１９】
前記マッピングを使用して、ユーザによってサブミットされた検索文字列中のスペルエラーを自動的に修正することを、さらに含む請求項１７の方法。
【請求項２０】
コンピュータ記憶装置中に表されて、請求項１の前記方法を具現化するコンピュータプログラム。
【請求項２１】
検索を行なうために、ユーザによって検索エンジンにサブミットされた検索文字列を特定するための、複数の前記ユーザの検索履歴を格納するデータリポジトリと、
前記検索履歴中の検索文字列スペル変更イベントを検出するスペル変更検出コンポーネントと、
集計基準に基づいて、検出された前記検索文字列スペル変更イベントを分析し、特定のスペル変更がユーザにとって有用かどうかを評価する分析コンポーネントとを備え、
前記検索文字列スペル変更イベントそれぞれが、ユーザが、第１の検索文字列をサブミットし、続いて、スペルが前記第１の検索文字列に類似するが前記第１の検索文字列とは異なる第２の検索文字列をサブミットするイベントであり、
前記分析コンポーネントが、前記検索文字列スペル変更イベントが起こったブラウジングセッションの一部として行われた他のユーザアクションに、少なくとも部分的に基づいて、検索文字列スペル変更イベントに重み付けするコンピュータシステム。
【請求項２２】
前記分析コンポーネントが、前記検索文字列スペル変更イベントについて重み値を計算することにより、前記検索文字列スペル変更イベントに重み付けし、前記重み値が、前記検索文字列スペル変更イベントが自己修正するイベントである見込みを反映する請求項２１のコンピュータシステム。
【請求項２３】
前記重み値が、前記第１の検索文字列及び前記第２の検索文字列のサブミッション間に経過した時間の合計に依存する請求項２２のコンピュータシステム。
【請求項２４】
前記重み値が、前記第１の検索文字列及び前記第２の検索文字列のサブミッション間に起こった介在イベントの数と、前記介在イベントのタイプとに依存する請求項２２のコンピュータシステム。
【請求項２５】
前記重み値を計算することが、対応するユーザのアクションが前記スペル変更が成功したことを明らかにする範囲を考慮に入れることを含む請求項２２のコンピュータシステム。
【請求項２６】
前記スペル変更検出コンポーネントが、ユーザによってサブミットされた検索文字列間の編集距離を計算して、前記編集距離を使用して検索文字列スペル変更イベントを検出する請求項２２のコンピュータシステム。
【請求項２７】
前記分析コンポーネントが、文字列Ａから文字列Ｂへのスペル変更が、文字列Ｂから文字列Ａへのスペル変更よりも著しく頻繁に起こるかどうかを、少なくとも部分的に評価することにより、検索文字列Ｂが文字列Ａの有用な代替スペルかどうかを評価する請求項２２のコンピュータシステム。
【請求項２８】
前記分析コンポーネントが、文字列Ａから文字列Ｂへのスペル変更が、文字列Ｂから文字列Ａへのスペル変更よりも著しく頻繁に起こるかどうかを、少なくとも部分的に評価することにより、検索文字列Ｂが文字列Ａの有用な代替スペルかどうかを評価する請求項２２のコンピュータシステム。
【請求項２９】
前記分析コンポーネントが、文字列Ａおよび文字列Ｂをサブミットしたユーザのアクションを分析するように準備されており、文字列Ａから文字列Ｂへのスペル変更について、文字列Ａをサブミットするユーザに対して文字列Ｂの有用性を評価する請求項２２のコンピュータシステム。
【請求項３０】
前記分析コンポーネントが、文字列Ｂをサブミットしたユーザのブラウジングアクションを、少なくとも部分的に分析することにより、文字列Ａをサブミットするユーザに対して文字列Ｂの前記有用性を評価し、文字列Ｂをサブミットしたユーザが、文字列Ｂに対応する検索結果に満足したかどうかを評価する請求項２９のコンピュータシステム。
【請求項３１】
前記分析コンポーネントによって、ユーザにとって有用であるとして選択されるスペル変更を特定するマッピング構造と、
前記マッピング構造を使用して、検索を行なうユーザに代替スペルを提示するクエリープロセッサとを、さらに備える請求項２２のコンピュータシステム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１１
【補正方法】変更
【補正の内容】
【００１１】
従って、本発明は、検索文字列スペル変更イベントを検出するために、複数のユーザそれぞれの検索文字列サブミッションを分析することを含む。検索文字列スペル変更イベントそれぞれは、ユーザが、第１の検索文字列を検索エンジンにサブミットし、続いて、スペルが前記第１の検索文字列に類似するが前記第１の検索文字列とは異なる第２の検索文字列を、前記検索エンジンにサブミットするイベントである。特定のスペル変更がユーザにとって有用かどうかを評価するための集計基準に基づいて、少なくとも部分的に、検出された前記検索文字列スペル変更イベントを分析することにより、前記検索文字列サブミッションに含まれている複数の検索文字列それぞれについて、それぞれの前記検索文字列の１つ以上の代替スペルが特定される。検出された前記検索文字列スペル変更イベントを分析することは、前記検索文字列スペル変更イベントが起こったブラウジングセッションの一部として行われた他のユーザアクションに、少なくとも部分的に基づいて、検索文字列スペル変更イベントに重み付けすることを含む。一実施形態では、文字列Ｂが文字列Ａの有用な代替スペルかどうかを評価することは、文字列Ａから文字列Ｂへのスペル変更が、文字列Ｂから文字列Ａへのスペル変更よりも著しく頻繁に起こるかどうかを評価することを含む。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１２
【補正方法】変更
【補正の内容】
【００１２】
さらに、本発明は、複数のユーザの検索履歴を格納するデータリポジトリを備えるコンピュータシステムを含む。検索履歴は、検索を行なうために前記ユーザによって検索エンジンにサブミットされた検索文字列を特定する。前記コンピュータシステムは、さらに、前記検索履歴中の検索文字列スペル変更イベントを検出するスペル変更検出コンポーネントを備える。検索文字列スペル変更イベントそれぞれは、ユーザが、第１の検索文字列をサブミットし、続いて、スペルが前記第１の検索文字列に類似するが前記第１の検索文字列とは異なる第２の検索文字列をサブミットするイベントである。前記システムは、さらに、集計基準に基づいて、検出された前記検索文字列スペル変更イベントを分析し、特定のスペル変更がユーザにとって有用かどうかを評価する分析コンポーネントを備える。前記分析コンポーネントは、前記検索文字列スペル変更イベントが起こったブラウジングセッションの一部として行われた他のユーザアクションに、少なくとも部分的に基づいて、検索文字列スペル変更イベントに重み付けする。
【手続補正４】
【補正対象書類名】図面
【補正対象項目名】図１
【補正方法】変更
【補正の内容】
【図１】
2009505221.tif 000012
【国際調査報告】
2009505221.tif 000013