(57)【要約】【課題】適応的スペル・チェック及び訂正のためのシステム及び方法を提供する。【解決手段】この方法は、複数の過去に置き換えた文字列のそれぞれについての各頻度を追跡するステップと、以前に変更されたかまたは認識されていない文字列に応答して、複数の過去に置き換えた文字列のうちの「ｎ」個の文字列からなるリストを提供するステップとを含む。【選択図】図４
2008159044.tif 000002
【特許請求の範囲】
【請求項１】
複数の過去に置き換えた文字列のそれぞれについての各頻度を追跡するステップと、
以前に変更されたかまたは認識されていない文字列に応答して、前記複数の
過去に置き換えた文字列のうちの「ｎ」個の文字列からなるリストを提供するステップと
を含む方法。
【請求項２】
前記追跡するステップと前記提供するステップとの少なくとも１つを、加入ベース、広告ベース及び手数料ベースのいずれか１つまたは任意の組み合わせで実行するステップを更に含む、請求項１に記載の方法。
【請求項３】
前記追跡するステップと前記提供するステップとはサービス・プロバイダによって実行される、請求項１に記載の方法。
【請求項４】
前記追跡するステップは、前記各頻度と前記複数の過去に置き換えた文字列とをデータとして格納するステップを含む、請求項１に記載の方法。
【請求項５】
前記格納するステップは、前記データをデータベースに格納するステップを含む、請求項４に記載の方法。
【請求項６】
前記文字列を、前記複数の過去に置き換えた文字列のうちから選択された１つの文字列と置き換えるステップを更に含む、請求項１に記載の方法。
【請求項７】
前記複数の過去に置き換えた文字列のうちから選択された前記１つの文字列の頻度を更新するステップを更に含む、請求項６に記載の方法。
【請求項８】
前記更新するステップは、前記複数の過去に置き換えた文字列のうちから選択された前記１つの文字列の前記頻度の値を増大させるステップを含む、請求項７に記載の方法。
【請求項９】
前記提供するステップは、前記複数の過去に置き換えた文字列のそれぞれについての前記各頻度に基づいて行われる、請求項１に記載の方法。
【請求項１０】
前記提供するステップは、
前記各頻度に従って前記リストを順位付けるステップと、
前記順位付けるステップに基づいて前記リストを表示するステップと
を含む、請求項１に記載の方法。
【請求項１１】
前記追跡するステップは、複数ユーザからなる集団に係る複数の過去に置き換えた文字列のそれぞれについての各頻度を追跡するステップを含む、請求項１に記載の方法。
【請求項１２】
前記複数の過去に置き換えた文字列のそれぞれについての前記各頻度に重み付けをするステップを更に含む、請求項１１に記載の方法。
【請求項１３】
前記重み付けをするステップは、
個々のユーザの頻度と関連する第１重み係数と、前記第１重み係数と異なり、前記集団の頻度と関連する第２重み係数と、に基づいて前記複数の過去に置き換えた文字列のそれぞれについて重み付けがされた頻度を生成するステップ
を含む、請求項１２に記載の方法。
【請求項１４】
前記提供するステップは、
前記重み付けがされた頻度に従って前記リストを順位付けるステップと、
前記順位付けるステップに基づいて前記リストを表示するステップと
を含む、請求項１３に記載の方法。
【請求項１５】
複数のユーザにスペル・チェックを提供する方法であって、
前記複数のユーザの少なくとも１つからデータを取り出すかまたは受信するステップと、
前記データに基づいてデータ構造を更新するステップと、
文字列を識別するステップと、
前記識別された文字列に対し、前記データ構造に基づいて少なくとも１つの置き換え文字列を提供するステップと
を含む方法。
【請求項１６】
前記取り出すかまたは受信するステップは、前記複数のユーザの２つ以上からデータを取り出すかまたは受信するステップを含む、請求項１５に記載の方法。
【請求項１７】
前記データ構造は、第１置き換え文字列と、それに関連する第１頻度とを備える、請求項１５に記載の方法。
【請求項１８】
前記データ構造は、第２置き換え文字列と、それに関連する第２頻度とを更に備える、請求項１７に記載の方法。
【請求項１９】
前記提供するステップは、前記第１頻度及び前記第２頻度に基づいて前記第１置き換え文字列及び前記第２置き換え文字列を順位付けするステップを含む、請求項１８に記載の方法。
【請求項２０】
前記提供するステップは、前記第１置き換え文字列及び前記第２置き換え文字列を、前記順位付けするステップに基づく順に表示するステップを更に含む、請求項１９に記載の方法。
【請求項２１】
前記更新するステップは、前記少なくとも１つの置き換え文字列から選択された１つの置き換え文字列の頻度の値を増大させるステップを含む、請求項１５に記載の方法。
【請求項２２】
コンピュータ使用可能媒体に備えられた、コンピュータ可読のコンピュータ・プログラムであって、コンピュータ上で実行されるとき、前記コンピュータに、
認識されていないかまたは以前に変更された文字列を識別するステップと、
前記認識されていないかまたは以前に変更された文字列に  対して、少なくとも１つの置き換え文字列を、前記認識されていないかまたは以前に変更された文字列の過去の置き換えと関連するデータに基づいて提供するステップと、
前記文字列を置き換えるステップと、
前記置き換えるステップに基づいて前記データを更新するステップと
を実行させるためのコンピュータ・プログラム。
【請求項２３】
前記少なくとも１つの置き換え文字列は、第１置き換え文字列及び第２置き換え文字列を備え、
前記データは、前記第１置き換え文字列の第１置き換え頻度と前記第２置き換え文字列の第２置き換え頻度とを備える、
請求項２２に記載のコンピュータ・プログラム。
【請求項２４】
前記更新するステップは、前記第１置き換え頻度または前記第２置き換え頻度の値を増大させるステップを含む、請求項２３に記載のコンピュータ・プログラム。
【請求項２５】
スペルをチェックするためのアプリケーションを配備する方法であって、
複数の過去に置き換えた文字列の頻度を追跡し、
以前に変更されたかまたは認識されていない文字列に応答して、前記複数の過去に置き換えた文字列のうちの「ｎ」個の文字列からなるリストを提供する
ように動作するコンピュータ・インフラストラクチャを提供するステップ
を含む方法。
【請求項２６】
前記コンピュータ・インフラストラクチャは、以前に変更されたかまたは認識されていない前記文字列を、前記過去の置き換え文字列の１つと置き換えるように更に動作する、請求項２５に記載の方法。
【請求項２７】
文字列の過去の置き換えと関連するデータを含むデータベースを有するサーバと、スペルをチェックするハードウェア及びソフトウェア・コンポーネントの少なくとも１つとを備えるシステムであって、
電子テキスト内の認識されていないかまたは以前に置き換えられた文字列を識別し、
文字列の過去の置き換えと関連する前記データに基づいて、前記認識されていないかまたは以前に置き換えられた文字列に対する少なくとも１つの置き換え文字列を提供する
ように動作するシステム。
【請求項２８】
複数ユーザから文字列置き換えデータを受信し、
前記受信された文字列置き換えデータに基づいて前記データベースを更新する
ように更に動作する、請求項２７に記載のシステム。
【請求項２９】
前記データベースは、異なるソフトウェア・アプリケーションから文字列置き換えデータを受信するように配置されたオープン・スタンダード・データベースを備える、請求項２７に記載のシステム。
【請求項３０】
前記データは、置き換え文字列及び関連する頻度を備える、請求項２７に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的に、スペル・チェック及び訂正のためのシステム及び方法に関し、特に、個々のユーザまたはユーザのコミュニティの過去のスペル・パターンのマッピングに基づく適応的スペル・チェッカのためのシステム及び方法に関する。
【背景技術】
【０００２】
一般的なワード・プロセッシング・アプリケーションで見られる文書のような電子文書に対する従来のスペル訂正システム（例えば、スペル・チェッカ）は単語単位で動作し、辞書内で文書内の各単語が検出されるかどうかをチェックする。辞書は、例えば、スペル・チェッカによって格納またはアクセスあるいはその両方が行われる有効な文字列の予め決定されたリストを備えることができる。辞書内に一致する単語が検出された場合、この単語は、正確につづられたとして取り扱われる。しかし、辞書内で単語が検出されない場合、単語は、不正確につづられたとして示される。不正確につづられた単語を、例えば、下線表示または強調表示あるいはその両方によってユーザが識別することができる。
【０００３】
多くの従来のスペル・チェック・プログラムは、誤ってつづられた単語を検出するだけでなく、誤ってつづられた単語の置き換えとして提案された代替単語の選択項目をも提示する。これら代替単語の選択項目を、ユーザがタイプしようとした単語である可能性に従って順位付けられた順で表示することができる。提案された置き換えのリストに投入する代替単語は、場合によれば、適用される数個の有効な代替接尾辞規則を有する置き換え単語の選択項目の静的セット（例えば、辞書）から選択される。
【０００４】
例えば、ユーザが単語「ｒｅｃｅｄｅ」をタイプしようとしたが、代わりに「ｒｅｓｅａｄ」をタイプした場合、一般的なスペル・チェッカは、誤ってつづられた単語を検出し、提案された置き換えとして、以下の代替単語を、以下の順位付けられた順で表示することができる。
【０００５】
ｒｅｓｅｅｄ
【０００６】
ｒｅｓｅａｔ
【０００７】
ｒｅｓｅｎｄ
【０００８】
ｒｅｒｅａｄ
【０００９】
ｒｅｓｅａｌ
【００１０】
これらは、誤ってつづられた単語の文字列にほぼ一致する有効な単語の静的リスト（例えば、辞書）からの単に正確につづられた単語である。このような代替単語のリストは、スペル間違いが「タイプミス」（例えば、単語の文字の脱落、単語内の余分な文字の追加、単語の文字に対する文字の置き換え、または、単語内の文字の順序の入れ替え）の結果であるときに有用であることが多い。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかし、タイプミスの代わりに、間違いが実際のスペル間違いである場合、例えば、正確な単語（この場合、「ｒｅｃｅｄｅ」）をどのようにつづるかを辞書で探すか人に尋ねるかした後、ユーザは正確な単語を手動で入力する必要がある。従って、従来のスペル・チェッカを用いる場合、誤ってつづられた単語が単なるタイプミス以外の何かの結果である場合にユーザは不便を感じることがある。
【００１２】
従って、当該技術分野において、前述した欠陥及び制限を克服する必要がある。
【課題を解決するための手段】
【００１３】
本発明の第１側面では、方法は、複数の過去に置き換えた文字列のそれぞれについての各頻度を追跡するステップを含む。この方法は、以前に変更されたかまたは認識されていない文字列に応答して、複数の過去に置き換えた文字列のうちの「ｎ」個の文字列からなるリストを提供するステップを更に含む。
【００１４】
本発明の第２側面では、複数のユーザにスペル・チェックを提供する方法は、複数のユーザの少なくとも１つからデータを取り出すかまたは受信するステップを含む。この方法は、データに基づいてデータ構造を更新するステップと、文字列を識別するステップと、識別された文字列に対し、データ構造に基づいて少なくとも１つの置き換え文字列を提供するステップとを更に含む。
【００１５】
本発明の第３側面では、コンピュータ使用可能媒体に備えられたコンピュータ・プログラムは、コンピュータ可読プログラムを含む。コンピュータ可読プログラムはコンピュータ上で実行されると、コンピュータに、認識されていないかまたは以前に変更された文字列を識別させる。コンピュータ可読プログラムはコンピュータ上で実行されると、コンピュータに更に、認識されていないかまたは以前に変更された文字列に対して、少なくとも１つの置き換え文字列を、認識されていないかまたは以前に変更された文字列の過去の置き換えと関連するデータに基づいて提供させる。コンピュータ可読プログラムはコンピュータ上で実行されると、コンピュータに更に、文字列を置き換えさせ、この置き換えに基づいてデータを更新させる。
【００１６】
本発明の第４側面では、スペルをチェックするためのアプリケーションを配備する方法は、複数の過去に置き換えた文字列の頻度を追跡するように動作するコンピュータ・インフラストラクチャを提供するステップを含む。コンピュータ・インフラストラクチャは、以前に変更されたかまたは認識されていない文字列に応答して、複数の過去に置き換えた文字列のうちの「ｎ」個の文字列からなるリストを提供するように更に動作する。
【００１７】
本発明の第５側面では、システムは、文字列の過去の置き換えと関連するデータを含むデータベースを有するサーバを備える。システムは、スペルをチェックするハードウェア及びソフトウェア・コンポーネントの少なくとも１つを更に備える。システムは、電子テキスト内の認識されていないかまたは以前に置き換えられた文字列を識別するように動作する。システムは、文字列の過去の置き換えと関連する前記データに基づいて、認識されていないかまたは以前に置き換えられた文字列に対する少なくとも１つの置き換え文字列を提供するように更に動作する。
【発明を実施するための最良の形態】
【００１８】
本発明は、スペル訂正のためのシステム及び方法に関する。本発明は、直接のユーザまたは同じコミュニティ内の他のユーザあるいはその両方によって選択された以前の置き換え単語と、直接のユーザまたは同じコミュニティ内の他のユーザあるいはその両方によって入力された新たな置き換え単語とから学習するスペル・チェッカを提供する。このように、スペル・チェッカは、単語置き換え選択項目のリストにおいて、ユーザの過去の置き換えパターンに適応させることによって更に正確になる。更に、複数ユーザの１つ以上の集団の過去の置き換えから学習し適応させる実施形態を用いることができる。このように、スペル・チェッカは、新たな単語を集団の語彙に入れることができる。従って、本発明を用いて、特に電子文書における単語のスペルのチェックまたは訂正あるいはその両方を改善させることができる。
【００１９】
図１には、本発明による処理を管理する例示的な環境１０を示す。この範囲まで、環境１０は、本明細書に記載されている処理を実行することができるコンピュータ・インフラストラクチャ１２を含む。特に、アプリケーション３０を備えるコンピュータ装置１４を含むコンピュータ・インフラストラクチャ１２が示されている。アプリケーション３０は、本明細書に記載されている処理を実行するようにコンピュータ装置１４を動作させる。プロセッサ２０、メモリ２２Ａ、入出力（Ｉ／Ｏ）インターフェース２４及びバス２６を含むコンピュータ装置１４が示されている。更に、外部のＩ／Ｏ装置（リソース）２８及びストレージ・システム２２Ｂと通信するコンピュータ装置１４が示されている。一般的に、プロセッサ２０は、メモリ２２Ａまたはストレージ・システム２２Ｂあるいはその両方に格納されたコンピュータ・プログラム・コードを実行する。コンピュータ・プログラム・コードを実行している間、プロセッサ２０は、メモリ２２Ａ、ストレージ・システム２２Ｂ及びＩ／Ｏインターフェース２４のいずれか１つまたは任意の組み合わせへ／からデータを読み出しまたは書き込みあるいはその両方を行うことができる。バス２６は、コンピュータ装置１４内の各構成要素間で通信リンクを行う。Ｉ／Ｏ装置２８は、個人がコンピュータ装置１４と対話することができる任意の装置、または、コンピュータ装置１４が任意タイプの通信リンクを用いて１つ以上の他のコンピュータ装置と通信することができる任意の装置を備えることができる。
【００２０】
いずれにしても、コンピュータ装置１４は、インストールされたコンピュータ・プログラム・コードを実行することができる任意の汎用コンピュータ製品（例えば、パーソナル・コンピュータ、サーバ、ハンドヘルド装置など）を備えることができる。しかし、当然のことながら、コンピュータ装置１４は、本明細書に記載されている処理を実行することができる様々な可能な等価のコンピュータ装置の一例にすぎない。この範囲まで、他の実施形態において、コンピュータ装置１４によって行われる機能を、汎用または特殊目的あるいはその両方のハードウェアまたはコンピュータ・プログラム・コードあるいはその両方の任意の組み合わせを含むコンピュータ製品によって実施することができる。各実施形態では、標準のプログラミング及びエンジニアリング技術をそれぞれ用いてプログラム・コード及びハードウェアを生成することができる。
【００２１】
これと同様に、コンピュータ・インフラストラクチャ１２は、本発明を実施する様々なタイプのコンピュータ・インフラストラクチャの一例にすぎない。例えば、一実施形態では、コンピュータ・インフラストラクチャ１２は、ネットワークまたは共有メモリなどのような任意タイプの通信リンクを介して通信して、本明細書に記載されている処理を実行する２つ以上のコンピュータ装置（例えば、サーバ・クラスタ）を備える。更に、本明細書に記載されている処理を実行している間、コンピュータ・インフラストラクチャ１２内の１つ以上のコンピュータ装置は、任意タイプの通信リンクを用いて、コンピュータ・インフラストラクチャ１２の外部にある１つ以上の他のコンピュータ装置と通信することができる。いずれにしても、通信リンクは、様々なタイプの有線リンクまたは無線リンクあるいはその両方の任意の組み合わせを備えるか、１つ以上のタイプのネットワーク（例えば、インターネット、広域ネットワーク、ローカル・エリア・ネットワーク、仮想プライベート・ネットワークなど）の任意の組み合わせを備えるか、または、様々なタイプの伝送技術及びプロトコルの任意の組み合わせを用いることができ、あるいは、これらを任意の組み合わせで行うことができる。本明細書に記載されているように、アプリケーション３０は、例えば、１つ以上のユーザの過去の単語の置き換えから学習する適応的スペル・チェッカを提供するというような、本明細書に記載されている処理をコンピュータ・インフラストラクチャ１２に実行させることができる。
【００２２】
複数の実施形態では、本発明は、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むがこれらに限定されないソフトウェアによって実施される。更に、本発明は、コンピュータまたは任意の命令実行システムによって用いられるかまたはこれと接続するプログラム・コードを提供するコンピュータ使用可能媒体またはコンピュータ可読媒体からアクセスできるコンピュータ・プログラムの形態をとることができる。この説明の目的のため、コンピュータ使用可能媒体またはコンピュータ可読媒体を、命令実行システム、装置またはデバイスによって用いられるかまたはこれと接続するプログラムを含み、格納し、伝達し、伝搬し、または転送することができる任意の装置とすることができる。媒体を、電子、磁気、光、電磁気、赤外線または半導体システム（または装置またはデバイス）あるいは伝搬媒体とすることができる。コンピュータ可読媒体の例として、半導体または固体メモリ、磁気テープ、取り外し可能なコンピュータ・ディスケット、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、固定磁気ディスク及び光ディスクが挙げられる。現在の光ディスクの例として、コンパクト・ディスク読み取り専用メモリ（ＣＤ‐ＲＯＭ）、コンパクト・ディスク読み取り／書き込み（ＣＤ‐Ｒ／Ｗ）及びＤＶＤが挙げられる。
【００２３】
プログラム・コードを格納または実行し、あるいはその両方を行うのに適するデータ処理システムは、システム・バスを介してメモリ素子に直接または間接的に結合された少なくとも１つのプロセッサを含む。メモリ素子は、プログラム・コードの実際の実行中に用いられるローカル・メモリと、大容量ストレージと、実行中にコードを大容量ストレージから取り出さなければならない回数を減少させるため、少なくとも一部のプログラム・コードの一時的なストレージを行うキャッシュ・メモリとを含むことができる。（キーボード、ディスプレイ、ポインティング装置などを含むがこれらに限定されない）入出力またはＩ／Ｏ装置を直接に、または介在するＩ／Ｏコントローラを介してシステムに結合することができる。介在するプライベート・ネットワークまたはパブリック・ネットワークを介してデータ処理システムが他のデータ処理システムまたは遠隔プリンタまたはストレージ装置に結合されるようにするネットワーク・アダプタをもシステムに結合することができる。モデム、ケーブル・モデム及びイーサネット（登録商標）カードは、現在使用可能なタイプのネットワーク・アダプタのごく一部である。
【００２４】
複数の実施形態では、本発明は、加入ベース、広告ベース及び手数料ベースのいずれか１つまたは任意の組み合わせで本発明の処理ステップを実行するビジネス方法を提供する。すなわち、ソリューション・インテグレータのようなサービス・プロバイダは、スペル・チェックを行うように提示することができる。この場合、サービス・プロバイダは、１つ以上のカスタマに対して本発明の処理ステップを実行するコンピュータ・インフラストラクチャの作成、配備、維持、サポートなどのいずれか１つまたは任意の組み合わせを行うことができる。その報酬として、サービス・プロバイダは、加入契約または手数料契約あるいはその両方の契約の下、（１つ以上の）カスタマから支払いを受けることができ、または、サービス・プロバイダは、１つ以上の第３機関に対する広告内容の売り上げから支払いを受けることができ、あるいは、これらの両方を行うことができる。
【００２５】
複数の実施形態では、本発明は、誤ってつづられた単語と、それぞれの誤ってつづられた単語を置き換えるため、ユーザによって選択または入力された置き換えとのリストを維持することを含む。誤ってつづられた単語、置き換え及び他のデータのリストを、例えば、ローカル・メモリに格納するか、データベースに遠隔的に格納することによって適切に維持することができる。データを格納しアクセスする技術は、当該技術分野において既知である。本発明を単語に関して説明するが、当然のことながら、単語は、ユーザによって入力された（例えば、タイプされ、ペーストされ、ダウンロードされるなどした）任意の文字列を備える。文字列（すなわち、個々の文字の列）は、例えば、文字、数、符号、特殊文字などのような任意タイプの文字を備えることができる。更に、文字列のような単語を取り扱うことによって、本発明は特別な言語の単語に限定されない。
【００２６】
複数の実施形態では、誤ってつづられた単語を適切に識別することができる。誤ってつづられた単語を識別する技術と、データを格納しアクセスする技術とは既知であって、更なる説明を必要としないと考えられる。例えば、単語をハッシュし、ハッシュされた単語を、事前に定義された単語のリスト（例えば、辞書）に対応するハッシュ・テーブルと比較することによって、単語のスペルを、事前に定義された単語のリストと比較することができる。
【００２７】
本発明の一実施形態では、誤ってつづられた単語（または、以下に説明するような、以前に変更された単語）を訂正するユーザの置き換え履歴データをテーブル内に提供することができる。例えば、誤ってつづられた（または、以前に変更された）単語「ｒｅｓｅａｄ」に対する置き換え履歴データを表１に示す。第１列には、ユーザによって入力された（例えば、タイプされた）ときに誤ってつづられた単語を示す。第２列には、誤ってつづられた単語を置き換えるためユーザによって（リストから、または、新たにタイプしたことによって）選択された単語を示す。第３列には、置き換えの頻度（例えば、ユーザが第１列の単語を第２列の単語と置き換えた回数）を示す。
【００２８】
【表１】
2008159044.tif 000003
【００２９】
特定の誤ってつづられた（または、以前に変更された）単語に対する置き換えの履歴を追跡することによって、本発明のスペル・チェッカは、この次、単語が誤ってつづられるか、または、ユーザによって以前に変更された単語として認識されるとき、「ｎ」個の最も頻度の高い置き換えをユーザに表示することができる。「ｎ」を、ゼロよりも大きい適切な任意の整数値とすることができることに留意すべきである。更に、ユーザに表示された「ｎ」個の最も頻度の高い置き換えを、リストの一番上の最も頻度の高い置き換えから始まる順位付けられた降順で表示することができる。例えば、この次、ユーザが単語「ｒｅｓｅａｄ」をタイプするとき、本発明のスペル・チェッカは、単語「ｒｅｃｅｄｅ」が４の頻度を有するのでリストの一番上に単語「ｒｅｃｅｄｅ」が現れ、単語「ｒｅｓｅｅｄ」が２の頻度を有するのでリスト内で次に単語「ｒｅｓｅｅｄ」が現れ、単語「ｒｅｒｅａｄ」が１の頻度を有するのでリスト内で次に単語「ｒｅｒｅａｄ」が現れる可能な置き換えのリストをユーザに表示することができる。
【００３０】
置き換え及び頻度（及び他の適切なデータ）を既知の方法で（例えば、コンピュータ・メモリ、データベースなどを用いて）格納し、アクセスし、更新することができることに留意すべきである。更に、単語が誤ってつづられている（または、以前に変更されたとして認識された）場合、可能な置き換えのリストを、例えば、重ね合わせたリスト、ダイアログ・ボックスなどによって任意の既知の方法でユーザに表示することができる。更に、「ｎ」の値を、ゼロよりも大きい任意の整数とすることができ、例えば、システム設計者、管理者またはユーザによって指定することができる。
【００３１】
複数の実施形態では、特定の誤ってつづられた単語（または、以前に変更された単語）に対する置き換え履歴データに初期の置き換え単語のリストをシードすることができる。初期の置き換え単語を、例えば、従来のスペル・チェック・ルーチン（例えば、ハッシュ法）を用いて決定することができる。更に、それぞれの初期の置き換え単語に、例えば、１の頻度のような初期頻度を割り当てることができる。例えば、誤ってつづられた単語「ｒｅｓｅａｄ」に対する置き換え履歴データに、表２に示すデータをシードすることができる。
【００３２】
【表２】
2008159044.tif 000004
【００３３】
表２に示された初期のシードされた置き換え履歴データから開始し、ユーザが単語「ｒｅｓｅａｄ」を７回誤ってつづり、「ｒｅｓｅａｄ」を「ｒｅｃｅｄｅ」で４回置き換え、「ｒｅｓｅｅｄ」で２回置き換え、「ｒｅｒｅａｄ」で１回置き換えた場合、置き換え履歴データは、表３に示すようになる。
【００３４】
【表３】
2008159044.tif 000005
【００３５】
この例を続け、「ｎ」が４の値を有する場合、この次、ユーザが単語「ｒｅｓｅａｄ」をタイプするとき、スペル・チェッカは、４つの提案された置き換えのリストを「ｒｅｃｅｄｅ」、「ｒｅｓｅｅｄ」、「ｒｅｒｅａｄ」及び「ｒｅｓｅａｔ」の順序で表示する。
【００３６】
前述した例を、誤ってつづられた単語に関して説明したが、本発明の実施形態は、ユーザによって入力され（例えば、タイプされ）次に変更された（例えば、タイプし直された）いかなる単語（すなわち、以前に変更された単語）にも同様に動作する。例えば、ユーザは、誤ってつづられた単語として検出されない単語（例えば、「ｎｉｇｈｔ」）を入力することができる。その後、ユーザは、この単語を別の単語に（例えば、「ｎｉｇｈｔ」から「ｋｎｉｇｈｔ」へ）変更することができる。本発明の実施形態は、この訂正を認識し、前述したように適切なデータ（元の単語、置き換え単語、頻度など）を格納する。このように、単語が最初誤ってつづられたかどうかに関係なく、いかなる単語に対しても、置き換え履歴データと、関連する学習され提案された置き換えとを提供することができる。
【００３７】
本発明の実施形態では、自動置き換え機構を用いることができる。例えば、自動置き換えに対して事前に定義されたしきい値をシステム設計者、管理者またはユーザによって指定することができる。特に、単語が入力されたとき、置き換え履歴データ内のただ１つの置き換えの頻度が、しきい値を上回る全頻度の合計のパーセンテージを占める場合、入力された単語は、ユーザ入力なしに、この置き換えと自動的に置き換えられる。例えば、ユーザが入力した単語「ｃｈｅｍｐ」は、表４に示すような置き換え履歴データを有することができる。
【００３８】
【表４】
2008159044.tif 000006
【００３９】
置き換え「ｃｈｉｍｐ」の頻度は、全部の置き換えの約９２．４％（すなわち、５３のうちの４９）に達する。しきい値が例えば、９０％に設定されている場合、置き換えの総数に比較された「ｃｈｉｍｐ」の頻度がしきい値を上回るので、本発明の実施形態は元の単語「ｃｈｅｍｐ」を「ｃｈｉｍｐ」と自動的に置き換える。このような比較及び自動置き換えの技術は既知であって、更なる説明を必要としないと考えられる。
【００４０】
本発明の実施形態を、独立型アプリケーションとして、または別のアプリケーションのコンポーネントとして実施することができる。例えば、本発明の処理を、ワード・プロセッシング・ソフトウェア、表計算ソフトウェア及び電子メール・ソフトウェアのいずれか１つまたは任意の組み合わせのスペル・チェック機能として統合することができる。このようなアプリケーションでは、本発明のスペル・チェック処理を用いて、単語単位で、または、例えば文書単位で単語をチェックし訂正することができる。あるいはまた、本発明の処理を、コンピュータ装置（例えば、デスクトップ・パーソナル・コンピュータ）上で実行する独立型の実行可能なアプリケーションで実施することができる。例えば、本発明が独立型アプリケーションで実施される場合、ユーザは、別のアプリケーション（例えば、ワード・プロセッサ）からテキストのブロックを独立型アプリケーションへエクスポート（例えば、カット・アンド・ペースト、送信、電子メールなど）することができる。本発明の処理をテキストのブロックについて実行することができ、次に、処理されたテキストのブロックを最初のアプリケーションに返信することができる。これと同様に、本発明の処理を、中央位置（例えば、サーバ、サービス・プロバイダなど）に存在するアプリケーションにおいて実施することができる。個々のユーザは、本発明に従って処理するため、テキストのブロック（または、全文書）を中央位置に送信することができ、処理されたテキストのブロック（または、全文書）を受信することができる。
【００４１】
前述した単一ユーザと同様にユーザの集団は本発明の実施形態を用いることができる。例えば、コミュニティを、個々のユーザの集団として定義することができる。コミュニティのユーザごとの個々の置き換え履歴データを組み合わせ、コミュニティ置き換え履歴データとして格納することができる。個々のユーザが単語を入力するとき、スペル・チェッカは、コミュニティ置き換え履歴データに基づいて、提案された置き換えを表示する。このように、スペル・チェッカは複数のユーザから学習することができる。例えば、表５には、単語「ｒｅｓｅａｄ」に対する例示的なコミュニティ置き換え履歴データを示す。
【００４２】
【表５】
2008159044.tif 000007
【００４３】
表５に示す値に基づいて、コミュニティの個々のユーザが単語「ｒｅｓｅａｄ」を入力し、「ｎ」が４に等しい場合、本発明のスペル・チェッカは、「ｒｅｓｅｅｄ」、「ｒｅｓｅａｔ」、「ｒｅｓｅｎｄ」及び「ｒｅｒｅａｄ」を（コミュニティ頻度に基づく順に）提案された置き換えとして表示する。
【００４４】
表５に示す例から明らかなように、コミュニティの置き換えの頻度は、特定のユーザの置き換えの頻度よりもかなり上回ることがある。従って、複数の実施形態では、コミュニティのユーザに対して提案された置き換えの優先順位を所望に応じて公式化することができる。例示的な公式化は、ユーザ頻度及びコミュニティ頻度を正規化し、それぞれの正規化された頻度を重み付けし、それぞれの重み付けられた頻度を結合し、それぞれの結合された値に基づいて、提案された置き換えを順序付けることを含む。図２に示す式を用いて例示的な公式化を実施することができる。
【００４５】
例えば、コミュニティの個々のユーザは、表３に示すような置き換え履歴データを有することができる。更に、コミュニティ置き換え履歴データを、表５に示すものとすることができる。０．７５の重み係数を仮定すると、可能な置き換えごとの結合重みは、図２の式（１）、（２）及び（３）に従って図３に明らかにされている。
【００４６】
図３の表から明らかなように、この次、この特定のユーザが単語「ｒｅｓｅａｄ」を入力するとき、「ｎ」を４の値と仮定して、提案された置き換えは結合重みに従って順位付けられ、「ｒｅｃｅｄｅ」、「ｒｅｓｅｅｄ」、「ｒｅｒｅａｄ」及び「ｒｅｓｅａｔ」のように表示される。このように、提案された置き換えは、コミュニティからのデータに依然として基づくが、個々のユーザ自身の個人履歴に偏られている。結合重みに達するためにいかなる公式化をも用いることができることに留意すべきである。更に、前述した公式化（すなわち、式（１）、（２）及び（３））が用いられる場合、重み係数は０．７５に限定されるものではなく、むしろ、いかなる所望の数にもすることができる。
【００４７】
コミュニティ置き換え履歴データに投入するデータを、中央位置（例えば、サーバ、データベースなど）で格納することができる。中央位置は、コミュニティの個々のユーザの各々からデータを受動的に受信するか、または能動的に収集するか、あるいはその両方を行うアプリケーションを含むことができる。例えば、コミュニティのユーザのネットワークにリンクされたサーバは全ユーザの活動（例えば、置き換え）を継続的に監視し、これに従ってコミュニティ置き換え履歴データを更新することができる。あるいはまた、コミュニティのユーザがオフラインで作業していた場合、ユーザが次にネットワークに接続するとき、ユーザの置き換えデータを自動または手動でサーバへアップロードすることができる。
【００４８】
複数の実施形態では、コミュニティ置き換え履歴データは、オープン・スタンダードに基づくリポジトリに格納される。例えば、データを、多数の異なるタイプのアプリケーション及びオペレーティング・システムと通信するように動作するデータベースに格納することができる。このように、異なるタイプのハードウェアまたはソフトウェアあるいはその両方を用いる複数のユーザは、前述したようなコミュニティとして取り扱うことができる。
【００４９】
個人を適切にコミュニティと関連付けることができる。例えば、特定のマシン（例えば、ワークステーション）をコミュニティと関連付け、これによって、マシンを用いる者をコミュニティの一部と見なすことができる。このように、（例えば、ワード・プロセッサ、表計算及び電子メールなどのような任意のアプリケーションの使用中、）このマシンに生じるいかなる置き換えも、コミュニティ置き換え履歴データに含まれる。あるいはまた、ユーザ・アカウントをコミュニティと関連付け、これによって、（例えば、ユーザ名、パスワードなどによって）アカウントにログオンする者をコミュニティの一部と見なすことができる。このように、（例えば、ワード・プロセッサ、表計算及び電子メールなどのような任意のアプリケーションの使用中、）このアカウントの使用中に生じるいかなる置き換えも、コミュニティ置き換え履歴データに含まれる。あるいはまた、ユーザを複数のコミュニティの一員とすることができ、ユーザは、例えば、特定のコミュニティを（例えば、ドロップダウン・メニュー内の）利用可能なコミュニティのリストから選択することによって、ユーザが動作しているアプリケーション（例えば、ワード・プロセッサ）において特定のコミュニティを選択することができる。このように、このアプリケーションの使用中に生じるいかなる置き換えも、特定のコミュニティ置き換え履歴データに含まれる。
【００５０】
使用方法
図４には、本発明のステップを実施するフローチャートである。図４（及び他のすべてのフローチャート）は、本発明のブロック図を等しく表すことができる。クライアント・サーバ関係にあるサーバから、または、図４（及び他のすべてのフローチャート）のステップがユーザ・ワークステーション上で実行することができ、動作情報が、上記で概説したナビゲーションを行うためにユーザ・ワークステーションに搬送されるサーバから、これらのステップを実施し実行することができる。更に、本発明は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、または、ハードウェア要素及びソフトウェア要素の両方を含む実施形態の形をとることができる。
【００５１】
図４には、本発明の側面によってテキストのスペルをチェックする方法２００を表すフローチャートを示す。方法２００は、単一ユーザと関連する実施形態に関する。ステップ２０５では、スペル・チェッカを開始する。このステップは、例えば、独立型ソフトウェア・アプリケーションを実行すること、大規模なアプリケーションのコンポーネント・アプリケーションを実行することなどを含むことができる。このステップは、（単語がタイプされたとき、単語単位で動作することを含む）分析すべき文書またはテキストのブロックを識別または受信することをも含むことができる。
【００５２】
ステップ２１０では、チェックすべき単語が残っているかどうかを決定する。このステップを、例えば、文書の終わり、別の単語の始まりなどを示す文字を検索するプログラミングを実行することによって適切に達成することができる。分析すべき単語がもはや残っていない場合、ステップ２２０においてスペル・チェッカを停止する。分析すべき単語が残っている場合、ステップ２３０においてアプリケーションは、分析すべき次の単語に進む。
【００５３】
更に図４を参照して、ステップ２４０では、分析すべき単語が誤ってつづられているか、または、過去に変更されたかどうかを決定する。誤ってつづられた単語を、例えば、当業者にとって既知であって前述したようなハッシュ法のルーチンを用いることによって適切に識別することができる。誤ってつづられたと見なされないが過去にユーザによって手動で変更された単語は、例えば表３に示すような置き換え履歴データ・テーブルを有する。過去に変更された単語を決定するため、システム及び方法は、ハッシュ法のルーチンを介して、利用可能な置き換え履歴データ・テーブルをすべての単語に対して検査するルーチンを用いることによってこのような識別を行うことができる。しかし、当業者は明らかなように、誤ってつづられていないが過去に変更された単語を識別する他の技術を用いることができる。
【００５４】
単語が誤ってつづられているかまたは過去に変更されたと識別されない（例えば、認識されない）場合、方法はステップ２１０に戻る。しかし、単語が誤ってつづられているかまたは過去に変更されたと識別された場合、ステップ２５０において、この単語に対するユーザ置き換え履歴データに基づいて上位「ｎ」個の置き換え単語を表示する。複数の実施形態では、このステップは、この特定の単語に対する置き換え履歴データを検査し、（提案された置き換えとして）上位「ｎ」個の置き換え単語を、前述したように過去の置き換え頻度の順位付けられた順に表示することを含む。この表示を、例えば、ダイアログ・ボックス、重ね合わせたリストなどのような適切な任意の形態で具体化することができる。更に、前述したように、「ｎ」の値を、方法設計者、システム管理者またはユーザによって指定されるゼロよりも大きい任意の整数値とすることができる。
【００５５】
ステップ２５０の任意選択の機能として、方法は、「ｎ」よりも多くの提案された置き換えをユーザに表示することができる。例えば、「ｎ」の値が４であり、特定の単語に対する置き換え履歴データに１０個の過去の置き換えがある場合、「ｎ」よりも大きい任意の数（例えば、４の代わりに７）を用いてユーザに任意選択に表示することができる。しかも、複数の実施形態では、この方法は、ユーザが上位「ｎ」個の置き換えに満足しない場合にユーザが置き換え履歴データの可能な置き換えのすべてを見るためのオプションを含む。例えば、上位「ｎ」個の置き換えが表示された後、ユーザは、例えば、事前に定義されたキー入力、マウス・ポインタを用いるボタンのクリックなどのような特定のタスクを実行することによって「ｎ」よりも多くの可能な置き換えを表示するように表示を変更することができる。
【００５６】
更に図４を参照して、ステップ２６０では、提案された置き換えの表示されたリストからユーザが置き換えを選択したかどうかを決定する。（例えば、表示されたリストの置き換え単語の１つにマウス・カーソルをクリックすることによって）ユーザが置き換えを選択した場合、ステップ２７０において、誤ってつづられているかまたは以前に変更された元の単語を、選択された置き換え単語と置き換える。この置き換えを、当業者に明らかな適切な任意の方法で達成することができる。更に、ステップ２７０で単語を置き換えた後、ステップ２８０において、誤ってつづられているかまたは以前に変更された元の単語に対するユーザ置き換え履歴データを更新する。例えば、複数の実施形態では、置き換え単語の頻度の値を１の値だけ増大させることができる。この時点で、この方法はステップ２１０に戻る。
【００５７】
ステップ２６０において、提案された置き換え単語の１つをユーザが選択しなかった場合、この方法はステップ２９０に進む。ステップ２９０では、誤ってつづられているかまたは以前に変更された元の単語に対してユーザが置き換え単語を手動で入力したかどうかを決定する。例えば、ユーザは、誤ってつづられているかまたは以前に変更された元の単語を強調表示し削除し、異なる単語をタイプし直すことがある。誤ってつづられているかまたは以前に変更された元の単語に対して手動で置き換え単語を入力する他の方法は、本発明によって意図され、当業者に明らかである。
【００５８】
ステップ２９０において、誤ってつづられているかまたは以前に変更された元の単語に対してユーザが置き換え単語を手動で入力した場合、この方法は、前述したようにステップ２７０，２８０に進む。ステップ２９０において、ユーザが置き換え単語を手動で入力しなかった場合、この方法はステップ２１０に進む。すなわち、誤ってつづられているかまたは以前に変更された単語には変化がなく、次の単語が存在する場合にスペル・チェッカは次の単語に進む。
【００５９】
図５には、本発明の側面によってテキストのスペルをチェックする方法３００を表すフローチャートを示す。方法３００は、前述したようなユーザのコミュニティと関連する個々のユーザを含む実施形態に関する。ステップ３０５では、スペル・チェッカを開始する。このステップは、例えば、独立型ソフトウェア・アプリケーションを実行すること、大規模なアプリケーションのコンポーネント・アプリケーションを実行することなどを含むことができる。このステップは、（単語がタイプされたとき、単語単位で動作することを含む）分析すべき文書またはテキストのブロックを識別または受信することをも含むことができる。
【００６０】
ステップ３１０では、チェックすべき単語が残っているかどうかを決定する。このステップを、例えば、文書の終わり、別の単語の始まりなどを示す文字を検索するプログラミングを実行することによって適切に達成することができる。分析すべき単語がもはや残っていない場合、ステップ３２０においてスペル・チェッカを停止する。分析すべき単語が残っている場合、ステップ３３０においてアプリケーションは、分析すべき次の単語に進む。
【００６１】
更に図５を参照して、ステップ３４０では、分析すべき単語が誤ってつづられているかまたはコミュニティ内のいずれかのユーザによって過去に変更されたかどうかを決定する。誤ってつづられた単語を、例えば、前述したようなハッシュ法のルーチンを用いることによって適切に識別することができる。誤ってつづられたと見なされないがコミュニティ内のいずれかのユーザによって過去に手動で変更された単語は、例えば表５に示すような置き換え履歴データ・テーブルを有する。従って、誤ってつづられていないが過去に変更された単語を、前述したように利用可能な置き換え履歴データ・テーブルを検査するルーチンによって識別することができる。しかし、当業者は明らかなように、誤ってつづられなかったが過去に変更された単語を識別する他の技術を用いることができる。
【００６２】
単語が誤ってつづられているかまたは過去に変更されたと識別されない場合、方法はステップ３１０に戻る。しかし、単語が誤ってつづられているかまたは過去に変更されたと識別された場合、ステップ３５０において、この単語に対するコミュニティ置き換え履歴データに基づいて上位「ｎ」個の置き換え単語を表示する。複数の実施形態では、このステップは、この特定の単語に対する置き換え履歴データを検査し、（提案された置き換えとして）上位「ｎ」個の置き換え単語を、前述したように過去の置き換え頻度の順位付けられた順に表示することを含む。例えば、提案された置き換えをコミュニティ頻度の順に順位付けることができる。あるいはまた、ステップ３５０は、例えば、上記に図２及び図３に関して説明したような可能な置き換えに対する優先順位を公式化することを含むことができる。順位付けられて提案された置き換えの表示を、例えば、ダイアログ・ボックス、重ね合わせたリストなどのような適切な任意の形態で具体化することができる。更に、前述したように、「ｎ」の値を、方法設計者、システム管理者またはユーザによって指定されるゼロよりも大きい任意の整数値とすることができる。
【００６３】
ステップ３５０の任意選択の機能として、方法は、「ｎ」よりも多くの提案された置き換えをユーザに表示することができる。例えば、「ｎ」の値が４であり、特定の単語に対する置き換え履歴データに１０個の過去の置き換えがある場合、「ｎ」よりも大きい任意の数（例えば、４の代わりに７）を用いてユーザに任意選択に表示することができる。しかも、複数の実施形態では、この方法は、ユーザが上位「ｎ」個の置き換えに満足しない場合にユーザが置き換え履歴データの可能な置き換えのすべてを見るためのオプションを含む。例えば、上位「ｎ」個の置き換えが表示された後、ユーザは、例えば、事前に定義されたキー入力、マウス・ポインタを用いるボタンのクリックなどのような特定のタスクを実行することによって「ｎ」よりも多くの可能な置き換えを表示するように表示を変更することができる。
【００６４】
更に図５を参照して、ステップ３６０では、提案された置き換えの表示されたリストからユーザが置き換えを選択したかどうかを決定する。（例えば、表示されたリストの置き換え単語の１つにマウス・カーソルをクリックすることによって）ユーザが置き換えを選択した場合、ステップ３７０において、誤ってつづられているかまたは以前に変更された元の単語を、選択された置き換え単語と置き換える。この置き換えを、当業者に明らかな適切な任意の方法で達成することができる。更に、ステップ３７０で単語を置き換えた後、ステップ３８０において、誤ってつづられているかまたは以前に変更された元の単語に対するユーザの置き換え履歴データを更新する。複数の実施形態では、置き換え単語の頻度の値を、例えば１の値だけ増大させることができる。
【００６５】
更に、誤ってつづられているかまたは以前に変更された元の単語に対するコミュニティ置き換え履歴データをステップ３９０において更新する。例えば、置き換え単語の頻度の値を１の値だけ増大させることができる。前述したように、コミュニティ置き換え履歴データを遠隔アプリケーションによって遠隔位置で格納しアクセスし変更することができる。この時点で、この方法はステップ３１０に戻る。
【００６６】
ステップ３６０において、提案された置き換え単語の１つをユーザが選択しなかった場合、この方法はステップ３９５に進む。ステップ３９５では、誤ってつづられているかまたは以前に変更された元の単語に対してユーザが置き換え単語を手動で入力したかどうかを決定する。例えば、ユーザは、誤ってつづられているかまたは以前に変更された元の単語を強調表示し削除し、異なる単語をタイプし直すことがある。誤ってつづられているかまたは以前に変更された元の単語に対して手動で置き換え単語を入力する他の方法は、本発明によって意図され、当業者に明らかである。
【００６７】
ステップ３９５において、誤ってつづられているかまたは以前に変更された元の単語に対してユーザが置き換え単語を手動で入力した場合、この方法は、前述したようにステップ３７０，３８０，３９０に進む。ステップ３９５において、ユーザが置き換え単語を手動で入力しなかった場合、この方法はステップ３１０に進む。すなわち、誤ってつづられているかまたは以前に変更された単語には変化がなく、次の単語が存在する場合にスペル・チェッカは次の単語に進む。
【００６８】
本発明の実施形態は、アプリケーションに統合するかまたは独立型アプリケーションとして実行することができる改善されたスペル・チェック及び訂正機能を提供する。複数の実施形態は過去の訂正パターンを適応的に用いて、特定の単語に対する好適な置き換えを学習する。この方法及びシステムは、個々のユーザまたはユーザのコミュニティあるいはその両方の過去の訂正パターンに基づくことができる。このように、本発明の実施形態は、提案された単語置き換え選択項目の正確なリストを提供する。更に、複数の実施形態は、新たな単語をコミュニティ語彙に入力することができ、置き換えの頻度に基づいて増大または減少した順位付けの優先順位を提供する。
【００６９】
本発明は複数の実施形態に関して説明したが、当然のことながら、当業者は、本発明に変更を加え、本発明の意図及び特許請求の範囲内で本発明を実行することができることを理解するであろう。
【図面の簡単な説明】
【００７０】
【図１】本発明の側面による環境を示す図である。
【図２】提案された置き換えを順位付ける例示的な公式化を示す図である。
【図３】図２の公式化による順位付けを示す図である。
【図４】本発明の側面による方法を表すフローチャートである。
【図５】本発明の側面による方法を表すフローチャートである。
【符号の説明】
【００７１】
２００  テキストのスペルをチェックする方法
【図１】
2008159044.tif 000008
【図２】
2008159044.tif 000009
【図３】
2008159044.tif 000010
【図４】
2008159044.tif 000011
【図５】
2008159044.tif 000012