(57)【特許請求の範囲】
【請求項１】
ユーザ・インプット・デバイスと、
ディスプレイと、
ユーザによって入力された語を入力順に並べたリストを備える、語のコンテクスト・データベースと、
前記インプット・デバイスと前記ディスプレイと前記語のコンテクスト・データベースとに結合されていて、前記インプット・デバイスからインプットされた文字および記号を受信し、かつ前記ディスプレイへのアウトプットを管理するように、プログラムされているプロセッサと、
を備える、コンピューティング装置であって、
前記ユーザによる語の入力の完了に続く前記インプット・デバイスを介した特定キーの入力に応じて、前記コンピューティング装置が、前記入力された語が前記語のコンテクスト・データベース内に既に存在しているか否かを検索し、かつ、前記入力された語が前記語のコンテクスト・データベース内に発見されると、前記語のコンテクスト・データベース内で前記入力された語の後に発生する1語以上の語を、前記ユーザが入力することを望む予測された次の完全な語の入力として、前記ユーザに提供し、
コンテクストが、カレンダ・アプリケーションを含み、かつ、前記コンピューティング装置の動作モードが、前記カレンダ・アプリケーションの前記コンテクストに基づいて、変化し、
前記コンピューティング装置に対する入力設定モード中に、前記インプット・デバイスに関連したインプット方式または言語の選択に関する特定アクションの前記ユーザによる実行に応じ、かつユーザが好む次のマクロレベルのユーザ・インタフェース行動の学習によるコンテクストに基づいて、ユーザが進むことが予測される次のメッセージング・アプリケーションに対する直接の選択肢を前記ユーザに提供することにより、標準のメニュー・フォーマットを不要にする、
コンピューティング装置。
【請求項２】
ユーザ・インプット・デバイスと、
ディスプレイと、
ユーザによって入力された語を入力順に並べたリストを備える、語のコンテクスト・データベースと、
前記インプット・デバイスと前記ディスプレイと前記語のコンテクスト・データベースとに結合されていて、前記インプット・デバイスからインプットされた文字および記号を受信し、かつ前記ディスプレイへのアウトプットを管理するように、プログラムされているプロセッサと、
を備える、コンピューティング装置であって、
前記ユーザによる語の入力の完了に続く前記インプット・デバイスを介した特定キーの入力に応じて、前記コンピューティング装置が、前記入力された語が前記語のコンテクスト・データベース内に既に存在しているか否かを検索し、かつ、前記入力された語が前記語のコンテクスト・データベース内に発見されると、前記語のコンテクスト・データベース内で前記入力された語の後に発生する1語以上の語を、前記ユーザが入力することを望む予測された次の完全な語の入力として、前記ユーザに提供し、
コンテクストが、ユーザがメニューを選択すると前記コンピューティング装置に与えられるキーワードを含み、前記コンピューティング装置が、前記コンテクストに基づいて、前記キーワード以前のメニュー項目としてコンテクスト・データベース内に格納されている、以前ユーザにより前記メニューから選択されたメニュー項目を生成し、前記メニュー項目が前記メニューの先頭に再順序付けされ、前記メニュー項目が選択されると、前記コンピューティング装置が、将来再順序付けする際のコンテクストとして使用するために、前記メニュー項目にメニュー・タグを自動的にタグ付けし、これにより、次回には、前記ユーザが前記メニューを選択すると、前記ユーザが望むメニュー項目が出現し、
前記コンピューティング装置に対する入力設定モード中に、前記インプット・デバイスに関連したインプット方式または言語の選択に関する特定アクションの前記ユーザによる実行に応じ、かつユーザが好む次のマクロレベルのユーザ・インタフェース行動の学習によるコンテクストに基づいて、ユーザが進むことが予測される次のメッセージング・アプリケーションに対する直接の選択肢を前記ユーザに提供することにより、標準のメニュー・フォーマットを不要にする、
コンピューティング装置。
【請求項３】
前記直接の選択肢を、自動的に実行する手段をさらに備える、請求項１または２に記載のコンピューティング装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インプット・デバイスを有するシステムへのユーザの情報入力に関する。より詳しくは、本発明は、意図されたユーザのインプットおよびアクションのコンテクストによる予測に関する。
【背景技術】
【０００２】
年を追って、携帯型コンピュータは、小さくなって来ている。より小さな携帯型コンピュータを生産しようとする上でサイズ縮小を妨げる主な要素は、キーボードであった。標準のタイプライタ-サイズのキーを使用する場合、携帯型コンピュータは、少なくともキーボードと同じ大きさでなければならない。ミニチュア・キーボードも携帯型コンピュータに使われて来たが、ミニチュア・キーボードのキーは、小さすぎてユーザが容易にまたは軽快に操作することが出来ないことが判明している。携帯型コンピュータにフルサイズのキーボードを組み込むことは、コンピュータを真に携帯して使用することを妨げる。ほとんどの携帯型コンピュータは、それを平坦な作業面に配置しないと、ユーザが両手でタイプすることはできない。ユーザは、立っているときまたは移動中には、携帯型コンピュータを使用することは困難である。
【０００３】
パーソナル携帯情報機器(PDA)またはパームサイズのコンピュータと呼ばれる、小型携帯型コンピュータの最近の世代において、メーカは、装置に手書き文字認識ソフトウェアを組み込むことによって本問題に対処しようとした。ユーザは、タッチセンシティブ・パネルまたはスクリーン上に書くことによってテキストを直接入力させることができる。この手書きのテキストは、次に、認識ソフトウェアによって、デジタルデータに変換される。残念なことに、ペンを用いたプリントまたは書込みは、一般に、タイプより遅いという事実に加えて、手書き文字認識ソフトウェアの精度および速度は、現在までの所、満足であるとは言えない。また、メモリ制約がある。認識ソフトウェアは、しばしば、デバイス上で利用可能なメモリより大きなものを必要とする。このことは、特に、携帯電話に当てはまる。
【０００４】
現在、無線業界の目覚ましい発展は、携帯電話、双方向ポケットベル、PDAなどのような、普通の消費者が利用でき、信頼できる、便利でかつ極めて普及している移動通信デバイスを生み出した。テキスト・インプットを要求するこれらの手持ち型無線通信およびコンピューティング装置は、今もまだ小型化されている。双方向ページング、携帯電話および他のポータブル無線技術の最近の進歩は、小さくて携帯可能な双方向メッセージ通信システム、特に、電子メールを送受信両方できるシステムの需要をもたらした。いくつかの無線通信装置メーカは、更に、消費者がデバイスを保持しているのと同じ手で扱うことができるデバイスを消費者に提供することを望んでいる。
【０００５】
不確定性除去の背景
従来の研究開発活動は、キーの数を減少させたキーボードの使用を考えて来た。タッチ-トーン電話のキーパッド・レイアウトにおいて使用されているように、キーの数を減少させたキーボードには、4行3列のキーが多く使用されてきている。キー配列の各キーは、多数の文字を含む。したがって、各キーストロークは、いくつかの字の内の1字を示すので、ユーザが入力するキーのシークエンスには、不確定性がある。不確定性除去(disambiguation)と呼ばれるいくつかのアプローチが、キーストローク・シークエンスの不確定性を解決するために提案されて来た。
【０００６】
キーの数を減少させたキーボード上に入力された文字を不確定でなく特定するために使用される一つの方法は、ユーザは、各々の文字を特定するために、平均2回以上のキーストロークを入力しなければならない。キーストロークは、同時に（コーディング）、またはシークエンスに（マルチストローク仕様で）入力することができる。コーディングもマルチストローク仕様も、使用方法が極めて簡単でかつ使用効率が良いキーボードをもたらしていない。マルチストローク仕様は、非効率的であり、およびコーディングは、習得し使用することが、多くの場合、複雑である。
【０００７】
不確定のキーストローク・シークエンスに対応する正しい文字シークエンスを決定するための他の提案されたアプローチは、非特許文献1にまとめられている。非特許文献1は、ほとんどの不確定性除去アプローチが、所定のコンテクスト内の文字の不確定性を解決するために、関連する言語の文字シークエンスの既知の統計学を使用していることに言及している。
【０００８】
語レベルの不確定性除去に基づく別の提案されたアプローチは、非特許文献2に開示されている。非特許文献2は、テレフォン・タッチパッドを使用して入力されるテキストから不確定性を減らすためのシステムを論じている。非特許文献2は、24,500語の英語辞書の語のおよそ92%に対して、キーストローク・シークエンスを辞書と比較すれば、不確定性は発生しないと認識している。しかしながら、非特許文献2は、不確定性が発生すると、ユーザに不確定性を示しかつユーザに複数の不確定の入力項目の中で選択するよう依頼するシステムによって、不確定性をインタラクティブに解決しなければならないことを注記している。したがって、ユーザは、各語の最後でシステムの予測に応答しなければならない。このような応答は、システムの効率を低下させ、かつテキストの所定のセグメントを入力するために必要なキーストロークの数を増加させる。
【０００９】
特許文献1は、タイプ可能な(typable)デバイス、および特に、不確定なコードを採用するタッチタイプ・デバイスは、多くの人間工学的な(ergonomical)問題を生じることを開示し、かつこのような問題のためのいくつかのソリューションを提案している。特許文献1は、コンピュータ、PDA等および他の情報機器のようなタッチタイプ可能な(touch-typable)デバイスに対する、強くタッチタイプ可能な(strongly-touch-typable)不確定のコードおよび実質的に最適な不確定のコードのクラスから不確定のコードを選択するための方法、デバイスのサイズ、形状およびコンピュータの容量のような所定の設計制約条件、デバイスの典型的な用途、およびアルファベットの順位付けまたはQwerty順位付けを教示する。
【００１０】
Eatoni Ergonomics Inc.は、標準的なキーボードから構成されるWordWise（著作権 2001 Eatoni Ergonomics Inc.）と呼ばれるシステムを提供する。ここで、大文字は、通常のキーボード上でタイプされ、かつ、意図された字のキーが押される間、シフトキーのような補助キーが、押される。WordWiseの基本となる主要な考えは、テレフォン・キーパッド上の各キー上の字のグループの各々から1つの字を選択することである。このようにして選ばれた字は、意図された字のキーを押したまま、補助キーを押下することよってタイプされる。WordWiseは、不確定の、確定したまたはそれらの組み合わせの入力を解決するために語を検索する語彙データベース／辞書を使用しない。
【００１１】
Zi Corporationは、次の語予測、eZiText（著作権 2002 Zi Corporation）を教示するが、我々が知る限りでは、コンテクストにマッチングする語を優先させるために、複数の予測を提示することも、選択リストを再順序付けすることもどこにも提案していない。
【００１２】
他の公知である、次の語生成システムは、Motorolaの Lexicus事業部により提供されるiTAP(http://www.motorola.com/lexicus/)、およびAIRTXにより提供される適応可能な認識技術(http://www.airtx.com/)を含む。
【００１３】
不確定のキーストローク・シークエンスの不確定性を除去することは、引き続き難しい問題である。例えば、不確定性除去に対する公知のアプローチは、主に、部分的に入力されたシークエンスの完成に重点を置き、まだ入力されていないシークエンスを予測することには重点を置かない。さらに、入力されたシークエンスの不確定性を除去する時、一般的に、ユーザコンテクストは考慮されず、かつ入力されたシークエンスの不確定性除去は、ユーザに代わってアクションを行うことにはならず、意図されたシークエンスの完成およびユーザに対する表示にしか重点を置かない。
【００１４】
まだ入力されていないシークエンスを予測することになる、ユーザのインプットを処理することへのアプローチを提供することは、有利である。さらに、入力されたシークエンスの不確定性を除去する時、ユーザコンテクストが考慮されるアプローチを提供することは、有利である。加えて、入力されたシークエンスの不確定性除去が、ユーザに代わって、アクションを行うことになるアプローチを提供することは、有利である。
【００１５】
【特許文献１】国際公開第00/35091号パンフレット（2000年6月15日出願）（発明者 H. A. Gutowitz ）（発明の名称「不確定の コードに基づくタッチタイプ可能な装置およびこのような装置を設計する方法(Touch-Typable Devices Based on Ambiguous Codes and Methods to Design Such Devices)」）
【非特許文献１】John L. Arnott and Muhammad Y. Javad 著、「短いテキスト・サンプルを使用するキーの数を減少させたキーボード用確率的文字不確定性除去(Probabilistic Character Disambiguation for Reduced Keyboards Using Small Text Samples)」（the Journal of the International Society for Augmentative and Alternative Communication）
【非特許文献２】I. H. Witten 著、「コンピュータ・スピーチの原理(Principles of Computer Speech)」(Academic Press in 1982)
【発明の開示】
【課題を解決するための手段】
【００１６】
本発明は、インプット・デバイスによりシステムにユーザが情報を入力することに関する。ユーザがスペース文字のような特定記号を入力すると、ユーザが入力したい完全な語が、予測される方式が、提供される。ユーザが、予測を受け入れることなく、その後、不確定のキーを押すと、選択リストは、再順序付けされる。例えば、ユーザが、句“Lets run to school. Better yet, lets drive to “.””を入力する。2番目の語“to”を入力した後に、ユーザがスペースを押すと、システムは、ユーザが過去にその語を入力したコンテクストに基づいて、ユーザが、語“school”を入力しようとしていると予測する。ユーザが、以前に、同じコンテクストを有するテキスト（例えば、“to work”、“to camp”）を入力していた場合、他の予測が利用可能である。これらの予測は、ユーザが、“next”キー（リストをスクロールするためのキー）を、押すと、示される。もしも、ユーザが、スペースの後に、不確定のキーを入力すると、語リストは、コンテクストとマッチングする語を優先させるために、再順序付けされる。例えば、ユーザが、字‘a’、‘b’、および‘c’を含む不確定のキー（図１におけるキー2）を押すと、語“camp”が、リストの先頭に来る。
【００１７】
本発明は、また、メッセージの送信先の人、メッセージを書いている人、曜日、週の時刻等のような他の形のコンテクストに基づいて、予測することも可能である。
【００１８】
本発明の他の実施例によると、メニュー項目と関連したユーザのアクション、またはフォームの記入に関連したユーザのアクションのような、ユーザのアクションと語が予測される。
【００１９】
ユーザのアクションまたはインプットは、コンテクストに基づいてデバイスの状態を自動的に変えることができる。例えば、システムは、コンテクストを使用して、カレンダーが、ユーザが会議中であることを示す時間中は、携帯電話を「鳴る」から「振動する」へ、変えることができるであろう。別の実施例の場合、位置のコンテクストを使用し、ユーザが屋外にいる時、または、電話が高レベルのバックグラウンド・ノイズを検出した時、携帯電話の音量を大きくする。
【００２０】
別の実施例では、システムは、ユーザの習慣を学習する。例えば、学習されたユーザのアクションに基づいて、システムは、ユーザに、ユーザが知らないサービスを提供することができる。
【００２１】
別の実施例において、語の予測は、以前の語のコンテクスト（バイグラム(bigram)コンテクスト）に基づいているが、また、以前の「n」個の語（トライグラム(trigram)コンテクスト等）を使用することも可能であろう。
【発明を実施するための最良の形態】
【００２２】
本発明は、インプット・デバイスを有するシステムへのユーザの情報入力に関する。ユーザが入力したい完全な語が、ユーザがスペース文字のような特定記号を入力した後、予測される方式が、提供される。ユーザが、予測を受け入れずに、不確定のキーを押す場合、選択リストは、再順序付けされる。例えば、ユーザは、句“Lets run to school. Better yet, lets drive to “.”” を入力する。ユーザが、2番目の語“to”を入力した後に、スペースを押すと、システムは、ユーザが過去にその語を入力したコンテクストに基づいて、ユーザが、語“school”を入力しようとしていると予測する。ユーザが、以前に、同じコンテクストを有するテキスト（例えば、“to work”、“to camp”）を入力していた場合、他の予測も、利用可能である。これらの予測は、ユーザが、“next”キー（リストをスクロールするために特定されるキー）を、押す場合、示される。もしも、ユーザが、スペースの後に、不確定のキーを入力すると、語のリストは、コンテクストとマッチングする語を優先させるために、再順序付けされる。例えば、ユーザが、字‘a’、‘b’、および‘c’を含む不確定のキーを押すと、語“camp”が、リスト内の先頭に表れる。
【００２３】
本発明は、また、メッセージの送信先の人、メッセージを書いている人、曜日、週の時刻等のような他の形のコンテクストに基づいて、予測することも可能である。
【００２４】
本発明の別の実施例の場合、送信者／受信者／電子メール／SMS／返信／転送／新しい電子メールなどのコンテクスト・パラメータを明確に定義することなく、システムには、関連していても関連していなくてもよいデバイスにより一連のパラメータが渡され、かつ、システムは、どのパラメータが予測に関連しかつどのパラメータが関連しないかを学習する。
【００２５】
本発明の他の実施例の場合、予測は、語を越えて、フレーズを予測することができる。予測は、また、文法、セマンティクス等に依存させることも可能である。
【００２６】
本発明の実施例は、メニュー項目に関連したユーザのアクション、またはフォームの記入に関連したユーザのアクションのような、ユーザのアクション、語および句の予測にも関する。
【００２７】
さらなる実施例の場合、ユーザ・パターンから得られる知識を、サーバーから、アップロード／ダウンロードさせ、および／または供給させて、この情報をデバイスとアプリケーションとの間で共有することを可能にすることができる。
【００２８】
議論
本明細書における議論においては、語のコンテクスト上の完成に関して、用語「次の語予測」(Next Word Prediction(NWP))は、とりわけ、以下を意味する：
1）スペース文字が入力されると、ユーザが入力したい完全な次の語が予測され、および
2）ユーザが、予測を受け入れずに、不確定のキーを押すと、選択リストが、再順序付けされる。
【００２９】
図1は、ディスプレイ10およびユーザ情報インプット・メカニズム12を有し、かつ本発明による次の語予測技術を組み込むデバイス14の線図である。図1において、ユーザは、句“Lets run to school. Better yet, lets drive to.“を入力した。ユーザは、語“to”を入力した後、スペース・キーを押す。すると、システムは、ユーザが、過去に、語“school”を入力したコンテクストに基づいて、ユーザが、次に、語“school”を入力しようとしていることを予測する。この場合、コンテクストについては以前の語しか、調べられていない。前回は、ユーザは、語“to”を入力した後、語“school”を直接入力した。図1の具体例では、ユーザが、語“to”を入力したので、予測語“school”が提示されている。ユーザが、過去に、語“to”の後に、他の語を入力していた場合、これらの語の予測も同様に、例えば、リストで、追加して提供される。この具体例の場合、コンテクスト情報は、このメッセージに入力された前回のテキストのみから得られている。好適な実施例では、コンテクスト情報は、以前のメッセージ／セッションにおいて入力されたテキストからもコンパイルされる。
【００３０】
現在のメッセージにおけるコンテクストが、ユーザが以前に入力したテキストにおけるコンテクストとマッチングすると、予測が、行われる。コンテクストの概念は、極めて一般化することが可能である。コンテクストは、入力されたテキストの特徴を意味することが出来る。コンテクストは、また、例えば、以下のような他のコンテクストと組み合わせることも可能である：
a）メッセージを受信する人；
b）メッセージを書いている人；
c）曜日；
d）時刻。
【００３１】
最後に、予測システムは、コンテクストに対し、何が、最も重要なファクタかを知らないかもしれない、例えば、それらは：
テキストおよびメッセージの受信者?；
テキストおよびメッセージの書き手?；
3つ全て?。
【００３２】
さらなる実施例は、極めて広い可能なセットのファクタで開始し、およびコンテクストとして含むのに最も効果的なファクタを決定するために、ユーザ行動の即時ファクタ分析を実行する。このシステムは、テキスト、受信者、著者、日のような、記録される経験的に特定されたファクタに基づいて、ユーザ行動に適応する以上のことを行うが、さらに、どのファクタが最も重要であり、かつどのファクタがそれらを強調するかを決定することが出来るほど賢い。このことは、より良い予測を可能にする。
【００３３】
本発明により意図された、予測の別の具体例は、時刻に基づく。例えば、ランチタイムにメッセージ"let's meet for"を入力すると、語"lunch"が、自動的にこの句における次の語として予測される。さらにその日の遅い時刻には、語"dinner"が、予測される。蓄積される句は、さらに、それらの属性の1つとして、それらと関連している時刻を有することができる。このことは、どの句が、ユーザがテキストを入力する時刻に関連するかを決めるために使用することができる。
【００３４】
ユーザのアクションの予測
予測は、また、メニューおよびユーザーのアクションのような他の概念にも適用可能である。ユーザが、あるメニューをクリックすると、コンテクスト・モジュールには、そのメニューに対するキーワードが、先行するコンテクスト語として与えられる。以前にそのメニューから選択されたメニュー項目が、そのキーワード以前のメニュー項目としてコンテクスト・データベース内に存在するので、次いで、このコンテクスト・モジュールは、以前にそのメニューから選択されたメニュー項目（"Find"）を生成する。これらの語は、メニューの先頭に再順序付けすることが出来る。メニューのメニュー項目が選択されると、このコンテクスト・モジュールは、次回にはこのメニュー項目が先頭に再順序付けされるコンテクストとなるように、このメニュー項目が既に選択されたたことを、注記するために、このメニュー項目にメニュー・タグを自動的にタグ付けする。
【００３５】
例えば、ユーザが"Edit"メニューをクリックすると、コンテクスト・モジュールには、コンテクスト語として キーワード"Edit：" が与えられる。ユーザが、過去に、 "Edit"メニューをクリックし、次いで、"Find"を選んでいるので、"Find"が、メニューの先頭に示される。ユーザが"Find"を通り越して"Replace"に移動すると、"Edit："メニューのコンテクストには、"Edit"メニューのクリック後、"Replace"が使用されたことが、マークされる。その結果、ユーザが、次回に、"Edit"メニューを選択すると、"Replace"が一番目のメニュー項目となり、"Find"および他のより低い頻度で使用されるメニュー項目が、その後に続く。
【００３６】
スクリーン・スペースが制限されている携帯電話に対して、普通に使用されるメニュー項目を、メニューの先頭に移動させることにより、メニューの先頭に移動させない限りそれらのメニュー項目をスクロール無しに見ることが出来ないのに対し、直ちにそれらを見ることが出来る点に、留意されたい。
【００３７】
一実施例では、簡単なケースのコンテクストおよび再順序付けの場合、ユーザが進むであろう次のマクロレベルのユーザ・インタフェース(UI)行動を予測するために、学習が、使われる。過去の使用に基づいてメニューを再順序付けする代わりに、ユーザが進むであろう次の状態／アプリケーションに対し可能性が高い選択肢を再順序付けすることにより、標準のメニュー・フォーマットを全く不要にすることができる。そして、必要に応じて、最も可能性が高い選択肢を、自動的に、実行させることも出来る。
【００３８】
例えば、ユーザが、電話を設定するモード中で、インプット方式または言語を選択しつつある場合には何時でも、ユーザは、次に、ユーザが好むメッセージング・アプリケーションに移動する可能性が極めて高いことを、システムが、知っている状況を考察しよう。この場合、システムは、メッセージング・アプリケーションに達するための標準のメニュー・ツリーを、ユーザに、提供する代わりに、
a) 自動的にそのメッセージング・アプリケーションに進む、またはそのことが望ましくないと判明した場合、
b)そのメッセージング・アプリケーションを、次に最も可能性が高い選択肢と共に、セッティング・ウィンドウ内に、目に見える明確な選択肢として示す。
【００３９】
最後の選択肢は、"go to standard menu tree"であろう。このようにして、ユーザには、ここから直接最も可能性が高い行動ではなく、最も可能性が高い次の終了状態（標準電話では、メニュー・ツリーに戻ること）が、提示される。ユーザは、メニュー・ツリーをナビゲートする必要は全くなく、次のタスクに進むために、1回、クリックする（またはクリックしない）。
【００４０】
本発明の追加の実施例は、例えば、以下の質問の何れかを提起するコンテクストに適用される：
・メッセージング・アプリケーションの直後に、最も可能性が高いユーザの終了状態は何か？
・電話帳に何かを入力させた後に、最も可能性があるユーザの終了状態は何か？
・ユーザがいた最後の2つの場所が与えられる場合、最も可能性があるユーザの終了状態は何か？
・時刻は与えられたか?
・ファクタ分析は、次の動きが何であるべきかを決定する際に最も関連するファクタを分離するために、即座に実行されるべきか？
【００４１】
フォーム
フォームの記入は、本発明により実行される別の有用な機能である。フィールド属性（例えば、日付）によるコンテクスト依存性(context sensitivity)は、月しか予測せず、日は、数値モードなどに切り替わる。このことは、インプットを作成するためにも、同じように適用することが可能である。ブラウザまたは他のフォーム・インプット・ソフトウェアは、セルのテキスト入力用のコンテクストとして、インプット・セル用のプロンプトを提供することができる。従って、例えば、フォームが"Name:"をプロンプトする場合、ユーザの名前は、数回〜ゼロ回のキー・ストロークで得られ、また彼がフォームに記入するかもしれない他の名前も、入力するのがより容易になる。
【００４２】
TegicのT9テクノロジーにおけるコンテクストの語予測の実施
本明細書において開示される次の語予測の発明は、Tegic CorporationのT9テクノロジーに適用されている（www.tegic.comおよびwww.t9.com を参照）。T9テクノロジーは、インプット・デバイスの各キー上に見出される字のグループ（例えば、各電話キー）を、語の高速アクセス辞書に組み合わせ、かつユーザが、彼がタイプする際にテキストとして何をインプットしたいかを認識する。T9は、デフォルテで入力されたキー・シークエンスごとに、最も一般的に使用される語を提供し、次に、ユーザが、NEXTまたはスペースキーを１回以上押すことで、他の選択にアクセスすることを可能にする。
【００４３】
本発明のT9実施のためのキーの数を減少させたキーボードの不確定性除去システム・ハードウェアの好適な実施例のブロック線図が、図2に提供される。キーボード54およびディスプレイ53は、適切なインタフェース回路を介してプロセッサ100に結合されている。オプションとして、スピーカ102もまた、プロセッサに結合する。この実施例において、プロセッサ100は、キーボードからインプットを受信し、およびディスプレイおよびスピーカへの全てのアウトプットを管理する。プロセッサ100は、メモリ104に結合されている。メモリは、ランダムアクセスメモリ(RAM)のような一時記憶媒体、および読取り専用メモリ(ROM)、フロッピー（登録商標）ディスク、ハードディスクまたはCD-ROMのような恒久的な記憶媒体の組み合わせを含む。好適なメモリ104は、システム・オペレーションを支配するために全てのソフトウェア・ルーチンを含む。メモリは、オペレーティング・システム106、不確定性除去ソフトウェア108、不確定のテキスト入力ソフトウェアの関連づけられたフィルタリング、および／または拡張解釈ソフトウェア110およびコンテクスト・データベース116（後者は以下でさらに詳細に論じられる）を含むことが好ましい。メモリは、また、語彙データベース30を含むことも可能である。オプションとして、メモリは、1つ以上のアプリケーション・プログラム112、114を含むことも可能である。アプリケーション・プログラムの具体例は、ワードプロセッサ、ソフトウェア辞書および外国の言語翻訳プログラムを含む。音声合成ソフトウェアは、また、アプリケーション・プログラムとして提供されることも可能であり、キーの数を減少させたキーボードの不確定性除去システムが通信補助として機能することを可能にする。したがって、この場合、アウトプットは、スピーカから音声でアウトプットさせることが可能であろう。
【００４４】
本明細書における議論が、組み合わされる場合、オブジェクトまたはオブジェクトの部分を作る記号および記号のシークエンスに適用されることは、当業者に理解されるべきである。記号の典型的な具体例は、字、数字、句読記号または言語からの任意の他の記号のような任意の言語の文字である。オブジェクトまたはオブジェクトの部分の典型的な具体例は、語または語の部分である。しかしながら、本明細書における議論は、日本語の仮名および韓国のジャモ(jamo)に等しく適用される。また、或る種の記号ストリング表現が存在する限り、本明細書において請求された不確定性除去システムがアイコン、電話番号または目録記録を予測するために使用可能であるので、オブジェクトは、言語学的である必要はないことも、また、留意するべきである。したがって、字、語、語幹等のような用語の使用が、それらのアプリケーションにのみに限定されず、かつ本明細書における議論を読みかつ理解することを容易にするために使用されることは、理解されるべきである。
【００４５】
本明細書における議論のために、T9システムは、少なくとも3つのコンポーネントを有する：
・インテグレーション・レイヤ。このコンポーネントは、ユーザ・インタフェース(UI)を含み、かつデバイスとT9コアとの間の通信を処理する。通信は、以下で論ずるように、イベントベースまたは機能ベースのAPIの何れかを介して、生じることが可能である。
・コアエンジン、例えば、Tegicにより提供される、T9コアとして公知のコアエンジン。
・1つ以上の言語データベース(LDB)。各LDBは、特定の言語に関する情報を含む。T9は、この言語用の語のリストを生成するために、この情報を使用する。LDBは、例えば、アルファベットT9 LDB、中国語T9 LDB、および韓国語T9 LDBの何れかを含むことができる。
【００４６】
補足的なデータベース
アルファベットT9および中国語T9の実施は、以下の補足的なデータベースを含むことができる：
・ユーザ・データベース（アルファベットT9）。アルファベットT9 UDBは、ユーザにより入力されたカスタム語を含む。一般的に、これらは、名前、電子メールアドレス、およびインスタント・メッセージングIDのような、LDBが生成することができない語である。データベースは、また、ユーザが、語（カスタム語とLDBからの語との両方）を選択する頻度に関する情報を含むことができる。
・コンテクスト・データベース（アルファベットT9）。アルファベットT9 CDBは、ユーザが以前に入力した語に関する情報を含む。T9は、この情報をその次の語予測およびCDB語完成の機能のために必要とする。コンテクスト・データベースは、最近入力された語を含む。アルファベットT9は、この情報を、予測された語および完成された語を選択リストに提供し、かつ選択リスト内の全部のかつ完成された語を再順序付けするために、使用する。
・マニュファクチャ・データベース（アルファベットT9）。アルファベットT9 MDBは、T9ユーザに利用可能としたいが、一般的に、LDBにより、生成可能でない語を含む。MDBの入力項目は、地理学的位置、ストック・チッカー記号、およびURLを含むことができる。
・中国語ユーザ・データベース（中国語T9）。中国語T9 CUDBは、ユーザ入力された文字句、すなわち、一緒に句を形成する中国語文字のストリングを含む。
・中国語自動再順序付けユーザ・データベース（中国語T9）。中国語T9CAUDBは、中国語T9 LDBからの最近入力された文字を含む。
【００４７】
選択リスト語の生成
ユーザがアクティブなキー・シークエンスを入力する時、アルファベットT9は、キー・シークエンスとマッチングする語に関して、そのデータベース(LDB、UDB、CDB、およびMDB)をチェックする。
【００４８】
アルファベットT9選択リストは、1）ユーザがその語をどの程度頻繁に入力するか、2）その語がその言語においてどの程度一般的か、および3）キーが入力された以前のコンテクストに基づいて、ユーザが最も望む可能性がある語を提供するように設計され、その結果、その語は、選択リストの初めに現れる。
【００４９】
選択リスト項目の相対的な順序は、どのデータベースが使用可能であるか、かつ選択リストの再順序付けおよび語完成と語予測のような、どの機能が、使用可能であるかに依存する。
【００５０】
アルファベットT9の選択リスト内の一番目の語は、デフォルトでアクティブである。用語、アクティブな語とは、現在アクティブな選択リスト語を意味する。
【００５１】
選択リスト順序の具体例は、以下に与えられる。キーが既に入力されていて、かつT9データベースもデータベース機能も、無効でないと仮定されている。
１）キー・シークエンスの長さのCDB語。
２）再順序付けされた（高頻度で使用された）LDBおよびキー・シークエンスの長さのカスタムユーザ語。
３）キー・シークエンスの長さの最上位のLDB語。
４）キー・シークエンスの長さの一般に使用される頻度の低いカスタム語。
５）キー・シークエンスの長さの一般に使用される頻度の低いマニュファクチャ(MDB)語。
６）キー・シークエンスの長さの残っているLDB語。
７）入力されたキー・シークエンスより長いCDB語（これらは、T9により完成される）。
８）入力されたキー・シークエンスより長いカスタムおよびマニュファクチャ語（これらは、T9により完成される）。
９）複数のデータベース・ルックアップの結果である語。これらは、URLおよび他の長いシークエンスにマッチするための試みである。
【００５２】
受け入れた語の処理
ユーザが、語からカーソルを移動する（つまり、T9キー値T9KEYRIGHT、またはT9KEYLEFTに対応するキーを押す）ことにより、アクティブな語を受け入れると、アルファベットT9は：
・それがカスタム語としてUDBに存在する場合、語の選択頻度値を調整する。
・それがLDBにあり、かつアルファベットT9の選択リスト再順序付け機能が今まで無効でなかった場合には、語の選択頻度値を調整する。
【００５３】
ユーザが、スペースを入力する（T9キー値T9KEYSPACEに対応するキーを押す）ことにより、アクティブな語を受け入れると、アルファベットT9は、上記のアクション、および以下のアクションを実行する：
・UDBおよびLDBが、まだ、その語を含まない場合、新しく入力されたスペースとその前のスペースとの間の全ての文字を、カスタム語としてUDBに加える。
・新しく入力されたスペースとその前のスペースとの間の全ての文字を、CDBに加える。
【００５４】
次の語の予測
図3は、本発明による次の語予測方法を示しているフロー・ダイヤグラムである。テキストが入力されると、語は、それらがユーザにより入力された順序で、CDB内に格納される。ユーザが語を入力すると(300)、実施がCDBを含む場合、アルファベットT9は、所望の次の語を予測しようとする(302)。アルファベットT9は、最も最近入力された語の以前の最初の発生を求めて、CDBをサーチする(304)。アルファベットT9が、その語を見つけると(306)、データベース内のその後に現れるいかなる語も、予測された語としてユーザに提供される(308)。その語が見つからない場合(306)、処理は、完了し、かつT9は、次のキー入力を待つ(314)。予測された語がユーザにより受け入れられると(310)、その語は、処理される；T9は、語の使用を記録する(316)。ユーザがその語を受け入れないが(310)、‘next’キーを押すと(312)、CDBは、入力されたばかりの語の次の最も最近の発生を求めてサーチされる(318)。見つかると、データベース内でそれの次に来る語が、予測として示される(306および308)。ユーザがその語を受け入れず(310)、かつnextキーを押さない場合、如何なる処理も、完了せず、かつT9は、図4に関連してさらに説明されるように、次のキー入力を待つ(314)。
【００５５】
アルファベットT9は、予測された語の選択リストを作成する。選択リスト内の予測された語の最大数は、#define constant T9MAXCDBMATCHESのリテラル値に依存する。異なる値が割当てられない限り、この定数は、6にセットされている。
【００５６】
ユーザは、語を選択しかつ受け入れるためにT9において使用したものと同じプロセスを使用して、予測された語を選択しかつ受け入れる。ユーザが、予測された語を受け入れた(310)後、アルファベットT9は、その語を処理する(312)。本発明が、T9以外の他の不確定性除去システム及びアルファベットT9以外のT9の他のフォームに適用可能であることは、当業者に明らかであろう。
【００５７】
語の処理
図4は、本発明による次の語予測方法の語の処理を示すフロー・ダイヤグラムである。ユーザが、新しい語のスタートを示すために、スペースキーを押す(400)と、アルファベットT9は：
・UDBおよびLDBが、まだ、その語を含まない場合(402)、新しく入力されたスペースとその前のスペースとの間の全ての文字を、カスタム語としてUDBに加える(404)。
・新しく入力されたスペースとその前のスペースとの間の全ての文字を、CDBに加える(406)。
・それが、カスタム語としてUDB内に存在する場合(408)、語の選択頻度値を調整する(410)。
・それが、LDBの再順序付けされた語としてUDB内に存在する場合(414)、語の選択頻度値を調整する(410)。
・それが、LDB内にあり、かつアルファベットT9の選択リスト再順序付け、またはLDB語完成機能が、今まで無効でなかった場合(412)、その語をUDBにLDBの再順序付けされた語として加える(416)。
【００５８】
アルファベットT9コンテクスト・データベース
以下の議論は、アルファベットT9コンテクスト・データベース(CDB)を実施しかつ扱う方法を記載する。CDBは、最近入力された語に関する情報を含む。アルファベットT9は、この情報を使用して、予測されたおよび完成された語を選択リスト内に含める。アルファベットT9は、現在のアクティブなキー・シークエンスにマッチする語に対してのみ他のデータベースをチェックする一方、アルファベットT9は、また、最も最近受け入れられた語、すなわち最も最近入力された非アクティブな語に対してもCDBをチェックする。CDB語は、必ずしも、選択リスト内に含まれるべきアクティブな語にマッチングする必要はない。アクティブなキー・シークエンスが存在しない時のみ、好適な実施例において現れる予測された語に対して、CDBマッチングは、アクティブな語の以前の語に依存する。完成されたCDB語に対して、このマッチングは、アクティブな語の以前の語とアクティブな語のキー・シークエンスとの両方に依存する。
【００５９】
アルファベットT9が、CDB内にユーザが入力した語を見つけると、アルファベットT9は、CDB内のすぐ後に続く語を予測された語として提案する。例えば、CDBが語の対“text message”を含み、かつユーザが、語“text”を入力し、次に、スペースキーを押すと、アルファベットT9は、予測された語として“message”を選択リスト内に置く。
【００６０】
また、アルファベットT9が、CDB内にユーザが入力した語を見つけると、完成された語が追加の文字を含むが、その語がアクティブなキー・シークエンスとマッチングする場合、アルファベットT9は、CDB内ですぐ後に続くその語を完成された語として提案する。例えば、CDBが、語の対“text message”を含み、かつユーザが、語“text”を入力し、スペースを加え、次に、語“message”の最初の４つの字に対応する、キー・シークエンス6-3-7-7（図１参照）を入力すると、アルファベットT9は、完成された語として“message”を選択リスト内に置く。
【００６１】
好適な実施例では、CDB語完成は、UDBカスタム語完成、LDB語完成、およびMDB語完成とは独立して、動作する。
【００６２】
CDBの実施
アルファベットT9CDBを実施するために、インテグレーション・レイヤは、以下を実行すべきである：
1．データベースのための永続性メモリを割当てる。
2．CDBをアクティブにするために、T9AWCdbActivateを呼び出す。
3．CDBのサイズを示す。
4．データベースを、必要に応じて、リセットする。
5．インテグレーション・レイヤが、データをデータベースに書き込むことを、必要に応じて、示す。
6．次の語予測を、必要に応じて、無効にする。
7．CDB語完成を、必要に応じて、無効にする。
8．T9により実行依頼される要求を処理する。
9．T9終了後、データベースを永続性メモリにコピーする。
【００６３】
上記の実施プロセスは、CDBが、不揮発性メモリに格納されること、かつCDBデータが、CDB動作をアクティブにする前に、RAMにコピーされることを仮定する。異なる記憶モデルが、使用される場合、上記ステップのいくつかは、適用できない可能性がある。
【００６４】
永続性メモリの割当て
インテグレーション・レイヤは、CDBを格納するために、永続性メモリを割当てなければならない。インテグレーション・レイヤが、T9AWCdbActivateを呼び出すことにより、CDB動作をアクティブにする時、それは、CDBを永続性メモリからRAMにコピーする。このデータベースは、CDB Data構造(T9AWCdbInfo)のインスタンスとして参照される。
【００６５】
CDB動作のアクティブ化
既存のCDBがない場合、例えば、最初のCDB動作が、デバイス上で、アクティブにされる場合、インテグレーション・レイヤは、全てのT9AWCdbInfo構造フィールド値を0に初期化しなければならない。インテグレーション・レイヤが、既存のCDBを永続性メモリからRAMへコピーした場合、それは、如何なるT9AWCdbInfo構造フィールド値も修正するべきではない。
【００６６】
インテグレーション・レイヤは、T9AWCdbActivateを呼び出すことにより、CDB動作をアクティブにする。インテグレーション・レイヤが、この関数を呼び出す時、それは、それがメモリを割当てたCDB Data Structure(T9AWCdbInfo)のインスタンスに対して、ポインタを提供する。
【００６７】
インテグレーション・レイヤが使用可能なCDB動作をアクティブにした後で、アルファベットT9は自動的にCDBをサーチする。アルファベットT9がCDBをサーチする情報の種類は、アクティブなキー・シークエンスが存在するか否かに依存する：
・アクティブなキー・シークエンスが存在する場合、アルファベットT9は、キー・シークエンスとマッチングする語をもとめて、CDBをサーチする。
・アクティブなキー・シークエンスが存在しない場合、アルファベットT9は、最も最近入力された語を求めて、CDBをサーチする。アルファベットT9は、次の-語予測のために、この情報を必要とする。
【００６８】
CDBのサイズの表示
CDBのサイズは、T9AWCdbInfo.wDataSizeの値により、示される。WDataSizeフィールドは、T9AWCdbInfoの全体のサイズを示す。これは、CDBデータが格納されるデータエリア、T9により使用されるいくつかの関連する変数、およびコンパイラ環境により加えられる任意の構造-パディングバイト(structure-padding bytes)を含む。
【００６９】
T9の関数APIが、使用される場合、T9AWCdbInfo.wDataSizeの値を直接セットすることは、必要でない。代わりに、CDBデータエリアのサイズは、関数T9AWCdbActivateの引数として、提供される。関数を処理しながら、T9は、T9AWCdbInfo.wDataSizeの値をセットする。
【００７０】
CDBエリアを望む大きさにすることができるが、それは、少なくともT9MINCDBDATABYTESバイトでなければならない。しかしながら、CDBが、サイズにおいて1800 * T9SYMBOLWIDTHバイトであることが推奨される。
【００７１】
CDBのリセット
インテグレーション・レイヤが、CDB動作をアクティブにする時、アルファベットT9は、以下により、データベースの完全性を保証する：
・CDBが、T9が期待している同一サイズであることを保証すること。
・CUDBが、サイズにおいて少なくともT9CCUDBMINSIZEバイトであり、かつ偶数のバイトであることを確認すること。
・CDBが、LDBと同じ文字符号化を使用することを確認すること。
【００７２】
アルファベットT9が、問題を検出する場合、それは、CDBをリセットする。このことは、全てのCDBデータを削除する。このプロセスは、インテグレーション・レイヤによる任意のアクションなしで発生し、かつアルファベットT9は、CDBがリセットされたことをインテグレーション・レイヤに通知しない。インテグレーション・レイヤは、T9AWCdbReset呼び出すことにより、CDBを明確にリセットすることができる。大部分の状況下で、インテグレーション・レイヤは、この関数を呼び出す必要はない。
【００７３】
インテグレーション・レイヤがデータをCDBへ書き込むことの表示
CDBが、アルファベットT9が書き込むことができないメモリエリアに格納される場合、インテグレーション・レイヤは、データをそのデータベースに書き込まなければならない。また、データベースに書かれるものをモニタすることが望まれる、または不揮発性記憶装置内にCDBのシャドウコピーを維持することが望まれる場合、インテグレーション・レイヤに、データをCDBへ書き込ませる可能性がある。
【００７４】
インテグレーション・レイヤは、アルファベットT9に、それが、T9AWSetCdbWriteByOEMを呼び出すことにより、データを書き込むことを知らせる。
【００７５】
インテグレーション・レイヤが、このイベントを呼び出した後、アルファベットT9は、インテグレーション・レイヤが、T9REQCDBWRITEを呼び出すことにより、データを書き込むことを必要とする。インテグレーション・レイヤがデータをCDBへ書き込むことがもはや必要でない場合、インテグレーション・レイヤは、アルファベットT9がデータを直接書き込むことができることを示すために、T9AWClrCdbWriteByOEMを呼び出す。
【００７６】
次の語予測の無効
CDB動作がアクティブにされる時、デフォルトによるT9は、予測された語、すなわち、ユーザが入力したい語をユーザがすでに入力した語に基づいて提供する。次の-語予測は、曖昧およびマルチタップの両方のテキスト-入力・モードにおいて、利用可能である。
【００７７】
アルファベットT9は、ユーザが入力したばかりの語が、１つ以上の語の対の第1の部分として、CDB内に見つけられる時、選択リスト内に予測された語を置く。ユーザが入力したばかりの語の各インスタンスの後に、CDB内に現れるいかなる語も、予測された語として、提供される。
【００７８】
アルファベットT9実施において、CDB語完成のみを使用し、かつ次の-語予測を使用しないことが望まれる場合、この機能性を無効にすることは、可能である。CDB語完成を無効にするために、インテグレーション・レイヤは、T9AWClrCdbPredictionを呼び出す。次の-語予測を再び可能にするために、インテグレーション・レイヤは、T9AWSetCdbPredictionを呼び出す。
【００７９】
CDB語完成の無効
CDB動作がアクティブにされる時、デフォルトによるアルファベットT9は、アクティブな語のすぐ前の語が、CDB内で、完成された語のすぐ前にある場合、アクティブなシークエンスとマッチングする（および追加の文字を含む）完成されたCDB語を選択リスト内に置く。アルファベットT9実施において、次の-語予測のみを使用し、かつCDB語完成を使用しないことが望まれる場合、この機能性を無効にすることは、可能である。CDB語完成を無効にするために、インテグレーション・レイヤは、T9AWClrCdbCompletionを呼び出す。CDB語完成を再び可能にするために、インテグレーション・レイヤは、T9AWClrCdbCompletionを呼び出す。
【００８０】
CDB語完成は、UDBカスタム語完成、LDB語完成、およびMDB語完成とは独立して、動作することに留意されたい。CDB内の語の多くは、また、他のアルファベットT9データベース内にも存在する。アルファベットT9は、選択リストからこれらの複製を抑制する。しかしながら、他のAPIイベント関数上にこの重複の可能性のある効果は、留意されるべきである。例えば、データベースから削除されたUDBカスタム語は、その語がCDB内にもまた存在する場合、なお、選択リストに現れる。同様に、LDB語完成を無効にする場合、LDB内の語は、それらがCDB内にも存在し、かつCDB語完成が使用可能である場合、選択リスト内に完成された語として現れる。
【００８１】
T9要求の処理
CDBが実施される方法に依存して、インテグレーション・レイヤは、以下のT9要求を処理する必要がある可能性がある：
・T9REQCDBWRITE-インテグレーション・レイヤが、データを、CDBに書き込むことを要求する。T9は、インテグレーション・レイヤが、T9に、それが、かつT9ではないものが、データをCDBに書き込むことを知らせる場合のみ、この要求を実行依頼する。
【００８２】
アップデートされたCDBの永続性メモリへのコピー
インテグレーション・レイヤは、データベースが、T9セッション中に修正された場合、それが、アルファベットT9を終了する時、CDBデータを永続性メモリにコピーするべきである。T9は、それがデータベースを修正するときはいつでも、T9AWCdbInfo.wUpdateCounterの値をインクリメントする。インテグレーション・レイヤは、データベースが、セッション後のwUpdateCounterの値をセッションの前のその値と比較することにより、修正されたか否かを決定することができる。その値が異なる場合、インテグレーション・レイヤは、アップデートされたCDBデータを永続性メモリにコピーしなければならない。T9は、各セッション中に、CDBを修正するであろうことに留意されたい。
【００８３】
アルファベットT9 CDBの動作
アルファベットT9CDB動作は、以下のタスクから成る：
・データをCDBに追加すること。
・データをCDBから取り出すこと。
・データをCDBから削除すること。
【００８４】
データのCDBへの追加
アルファベットT9は、自動的に、データをCDBに追加する。CDBが、T9が書き込むことができないメモリエリア内に格納される場合、インテグレーション・レイヤは、データをCDBに書き込まなければならないことに留意されたい。
【００８５】
データのCDBからの取り出し
アルファベットT9は、自動的に、データをCDBから取り出す。
【００８６】
データのCDBからの削除
アルファベットT9は、ユーザまたはインテグレーション・レイヤが語をデータベースから削除することを許可しない。代わりに、アルファベットT9は、それが、ほぼ満杯になる時自動的に、データベース内の最も古い語を削除し始める。この除去プロセスは、ガーベッジ・コレクションと称され、およびそれは、ユーザまたはインテグレーション・レイヤによる任意のアクションなしに発生する。
【００８７】
動作
本発明の本好適な実施例において、保存されたコンテクスト・データは、スペースを押し次第、次の語の予測を戻し、かつキーストロークを入力した後に語完成をフィルタリングするために、使用される。このことは、原則として、ユーザが、1つまたは複数の前の語に基づいて正しく予測された語をすばやく取り出すことによりキーストロークの数を減少することを可能にする。この完成機能は、現在、ユーザにより入力されたテキストをコンテクスト・データベース(CDB)に保存し、かつコンテクストおよびキー・ストロークとマッチングするこれらの語を戻すことにより、実施される。
【００８８】
NWPは、最近入力されたユーザ・テキストを保存し、およびユーザが入力する次の語を予測するために、そのテキストを使用する。例えば、ユーザが、最近、句‘hello Leslie’、’ hello Inger’および‘Hello Helena’をタイプした場合、ユーザがタイプし、かつ語‘hello’をスペースを打つことにより受け入れる時、本発明は、可能な次の語として、以下を提案する：
Leslie
Inger
Helena。
【００８９】
ユーザ が、これらの語の1つを受け入れずに、タイプを続ける場合、本発明はコンテクストを使用して、ユーザに示される完成に優先順位を付ける。12個のキーのインプット・デバイスを使う実施例において、上記ユーザが、スペースを打った後、4キーをタイプすると、ユーザに示される選択リストは、以下のようになる：
i
h
g
4
Inger
Helena
【００９０】
上記ユーザが、スペースを打った後、4キー、3キーをタイプすると、ユーザに示される選択リストは、以下のようになる：
he
if
id
ie
ge
gf
Helena
【００９１】
スペースの後、コンテクスト・データベース(CDB)オブジェクトは、全部の選択リストを構成する。不確定のキーを押した後、CDBオブジェクトは、以下の様に、現れる：
CDBオブジェクトが、アクティブなキー・シークエンスの長さである場合、オブジェクトは、選択リストの最上位に、現れる。
CDBオブジェクトが、アクティブなキー・シークエンスより長い場合、オブジェクトは、リストの完成部分の最上位に現れる。
【００９２】
システム状態は、スペースの後、以下を用いて、完成をトラッキングする：
pFieldInfo->nWordLen      =       0；
pFieldInfo->nComplLen     =      コンテクスト語の長さ。
【００９３】
ユーザ が不確定のキーを選択した後、システム 状態は、 CDB 完成を、 既存の方法でトラッキングする：
pFieldInfo->nWordLen            =      アクティブな キー・シークエンスの長さ；
pFieldInfo->nComplLen           =       完成の長さ。
【００９４】
API 
T9 APIは、語、語リスト、および顧客により使用されるバッファ情報を保持するグローバルな構造、および語をビルドし、受け入れ、および削除し、語リストによりスクロールする等のためのイベントまたは関数のセットから成る。アルファベットT9において、API構造は、T9AWFieldinfo構造と称される（しばしば、pAWFieldInfoと称される）。T9AWFieldInfoは、アルファベットT9に特有のデータを含む。T9AWFieldInfo構造は、日本語、中国語、および韓国語T9にもまた使用されている一般語データを含む、別の構造、T9FieldInfo（しばしばpFieldInfoと称される）を含む。
【００９５】
新しいAPI構造データおよび関数は、NWPを実施するために、T9に加えられる。NWP機能は、ホストがコンテクスト・データベースに対してスペースを割当て、かつpFieldInfo->pCdbInfoを非ゼロ値にセットした場合、アクティブである。
【００９６】
以下の関数APIイベントは、CDBをアクティブにするために、加えられる：
T9AWCdbActivate(T9AWFieldInfo *pAWFieldInfo,
T9AWCdbInfo T9FARUDBPOINTER *pCdbInfo,
T9UINT nDataSize, T9U8 bSymbolClass)；
書き込み構成をセットするために：
T9EVTCDB :T9CTRLSETCDBWRITEBYOEM
Function API - T9AWSetCdbWriteByOEM(T9AWFieldInfo *pAWFieldInfo)
書き込み構成をクリアーするために：
T9CTRLCLRCDBWRITEBYOEM 
Function API - T9AWClrCdbWriteByOEM(T9AWFieldInfo *pAWFieldInfo)
CDBをリセットするために：
T9EVTCDB:T9CTRLCDBRESET 
(Function API call: T9AWUdbReset(T9AWFieldInfo *pAWFieldInfo)
CDBコンテクストをブレークするために：
T9EVTCDB:T9CTRLCDBBREAKCONTEXT 
Function API - T9AWBreakCdbContext (T9AWFieldInfo *pAWFieldInfo)
コンテクスト・バッファに記入するために：
T9EVTCDB : T9CTRLCDBFILLCONTEXTBUFFER 
buffer: pEvent->data.sCDBData.psBuf 
buffer length pEvent->data.sCDBData.nBufLen 
Function API - T9AWFillContextBuffer(T9AWFieldInfo *pAWFieldInfo,
T9SYMB *psBuf, T9UINT nBufLen)
語予測を得るために：
T9EVTCDB : T9CTRLCDBGETWORDPREDICTION 
Function API - T9AWGetWordPrediction (T9AWFieldInfo *pAWFieldInfo)
バッファをクリアーするが、コンテクストを保持するために：
T9EVTCLEARBUFFE 
Function API - T9AWClearBuffer (T9AWFieldInfo *pAWFieldInfo)
CDB完成をターンオフするために：
T9CTRLCLRCDBCOMPLETION 
Function API - T9AWClrCdbCompletion (T9AWFieldInfo *pAWFieldInfo)
CDB完成をターンオンするために：
T9CTRLSETCDBCOMPLETION
Function API - T9AWSetCdbCompletion (T9AWFieldInfo *pAWFieldInfo)
CDB完成をターンオフするために：
T9CTRLCLRCDBPREDICTION 
Function API - T9AWClrCdbPrediction (T9AWFieldInfo *pAWFieldInfo)
CDB完成をターンオンするために：
T9CTRLSETCDBPREDICTION 
Function API - T9AWSetCdbPrediction (T9AWFieldInfo *pAWFieldInfo)
以下の要求タイプは、加えられる：
T9REQCDBWRITE
これは、外部書き込みが進行中の場合、CDBへの書き込みを要求するために、使用される。
【００９７】
APIを通してCDBへ書き込むための、追加の直接のアクセスは存在しない。
【００９８】
内部のCDBインタフェース
本発明のT9実施例において、CDBに対する2つのインタフェースが、存在する：
AddCdbText(pFieldInfo, psWordBuf, nLen)
ここで：
pfieldInfo                  =      T9 fieldinfo
psWordBuf                 =      テキスト保持バッファ
nLen                      =      語長さ
および：
GetCdbObject(pFieldInfo, nUdbObjNum, nWordLen, nCursor, psBuildTxtBuf, nBuildTxtBufSize, pnComplLen, pnUdbObjCnt)
ここで：
pfieldInfo            =      T9 fieldinfo
nUdbObjNum         =      CDB オブジェクト数（1番目のマッチングに対して1、2番目のマッチングに対して2、等）
nWordLen            =      語長さ（スペースの後、0、1キーの後、1、2キーの後、2、等）
nCursor              =      カーソル位置  
psBuildTxtBuf         =      ビルド・バッファに対するポインタ
nBuildTxtBufSize      =      ビルド・バッファサイズ
pnComplLen          =      完成長さホルダに対するポインタ
pnUdbObjCnt         =      オブジェクト・カウント・ホルダに対するポインタ。
【００９９】
関数
T9STATUS T9FARCALL T9AW_SaveAndAddToCdb(T9AWFieldInfo *pAWFieldInfo)
語をコンテクスト・バッファに保存かつ追加し、かつコンテクスト・データベースに加える。この関数は、スペースが入力された後のみ、呼び出される。
【０１００】
T9UINT T9FARCALL T9AW_GetCdbObject (T9AWFieldInfo *pAWFieldInfo, T9UINT nCdbObjNum, T9UINT nWordLen, T9UINT nCursor, T9U8 bObjectType, T9UINT *pnTerminal, T9U8 bRightMost, T9SYMB *psBuildTxtBuf, T9UINT nBuildTxtBufSize, T9UINT *pnComplLen, T9UINT *pnCdbObjCnt)
この関数は、CDBからコンテクスト・マッチングを取り出す。
【０１０１】
T9STATUS T9FARCALL T9AWCdbReset(T9AWFieldInfo *pAWFieldInfo)
この関数は、CDBをリセットする。
【０１０２】
T9STATUS T9FARCALL T9AWCdbActivate(T9AWFieldInfo *pAWFieldInfo, T9AWCdbInfo T9FARUDBPOINTER *pCdbInfo, T9U8 bSymbolClass)
この関数は、CDBをアクティブにする。
【０１０３】
データベース
現在の最小のデータベースサイズ要求条件は、1800 * 記号幅（300語 * 6 文字／語 * 記号幅 バイト／文字）である。これは、1-バイトのシステムに対して1800、および2-バイトのシステムに対して3600である。
【０１０４】
CDBは、最近入力されたテキストをユーザがそれを入力する同じフォームで保存する。このテキストは、環状バッファに格納される。新しい語は、CDB内の最も古い語を上書きする。
【０１０５】
CDBは、そのヘッダーにグローバルな情報を有する：
T9U16 wDataSize；    ／*この構造のバイトの全サイズ*／
T9U16 wUpdateCounter；  ／* ユーザ・データベースが修正された毎にインクリメントされたカウント*／
T9U16 wSymbolClass；  ／*CDBに対してマッピングする記号表を示すT9 enum値*／
T9U16 wDataBeginOffset；    ／* データの開始に対するオフセット *／
T9U16 wDataEndOffset；    ／* データの終わりに対するオフセット *／  
T9U16 wSavedOffset；    ／*データベース内の最後にアクセスされた位置に対するポインタ *／
T9U32 dwOffsetSaver；    ／* 最後にオフセットを保存したスレッドに対する識別子 *／
T9U8 bDataArea[1]；     ／* 実際は可変のサイズ・データ配列 *／
【０１０６】
読出し
CDBから語を要求する時、システム語ビルダーは、コンテクスト・バッファを通過する。コンテクスト・バッファを使用して、CDBは、最近の順序で、コンテクスト・マッチングを取り出す。
【０１０７】
書込み
スペースキーが打たれた、または空白が明確に入力された時、ビルドされた語は、CDBに書き込まれる。このことは、曖昧およびマルチタップ(MT)の両方のモードにおいて、起こる。語は、また、標準のRUDB処理も通過する。CDB内に、ガーベッジ・クリーンアップは存在しない。
【０１０８】
コンテクスト・バッファ
コンテクスト・バッファは、維持される。コンテクスト・バッファは、スペースキーを押すことで、アップデートされ、およびカーソルを移動するおよびクリアーするようなコンテクストを失う傾向のある任意のアクションにより、クリアーされる。語APIにおいて、これは、別個の確認関数のフラッシュ語関数(flush word function)にアタッチされる。
【０１０９】
機能説明
T9実施例において、NWP機能は、以下の場合、アクティブである：
a）コンパイルは、この機能のためのコードを含む；および
b）フィールド情報メンバーpFieldInfo->pCdbinfoは、有効メモリを示す。
【０１１０】
T9において、次の語予測機能がアクティブである時適用する機能要素は、以下に、リストアップされる：
FD100：T9コアは、使用された全ての最近の語をCDBに保存する。保存される語の数は、OEMによりCDBに割当てられたサイズに依存する。
FD200：T9曖昧およびMTモードは、アクティブな語が存在する、または打たれた以前のキーがT9数字キーである場合、スペースの後に次の語予測を戻す。
FD300：T9曖昧およびMTモードは、右矢印が押される前にアクティブな語がある場合、右矢印およびスペースの後に次の語予測を戻す。
FD301：FD300かつFD200の結果は、以下を意味する：
語を離れてカーソルを移動し、かつバッファ内を次々に移動した後に、T9は、スペースが打たれた後、予測を示さない。
バッファ内を次々にカーソルを移動する(“Cursoring around the buffer”)は、左矢印または右矢印の何れかを押し、かつ語の右側でカーソルを終えることを意味する。唯一の例外は、語をフラッシュする（非アクティブにする）ためにのみ、右矢印が、打たれる時である。
予測が、アクティブであり、かつユーザが、その予測をクリアーするために、スペースを打ち、そのスペースをクリアーするためにクリアーを再度打ち、次に、スペースを再度打つ場合、T9は、予測を示す。
FD400：語をスタートする時、その語が、スペースおよび別の語の後にある場合、T9は、いつも、コンテクスト・マッチングを生成する。具体例として、語の右側に、バッファ内を次々にカーソルを移動し、かつキースペースを打った後、如何なる予測も、配信されない。しかしながら、ユーザが、不確定の数字キーをタイプし続ける場合、コンテクスト・マッチングは、選択リスト内に配信される。
FD500：CDB予測／完成は、最近の順序で、取り出される。
FD600：CDBは、言語に依存しない。
FD700：スペースを押した後、CDBマッチングの数の制限は、コンパイル時マクロT9MAXCDBMATCHESにより、決定される。ユーザが、数字キーを押した後、CDBからビルダーに配信されるCDBマッチングの数に制限はない。
FD800：CDB予測／完成は、文句読点を横切って、配信されない。文句読点は、非顔文字に関する後置句読点として、定義される。顔文字の定義に対して、FD1200を参照されたい。
FD900：CDB予測／完成は、アクティブな語とともにクリアーを押した後、除去されるが、完成は、ユーザが再びタイプし始めた時、配信される。
FD1000：CDBのエージングは存在しない；最も古い語は、入力された最も最近の語により置き換えられる。
FD1100：コンテクスト・バイグラムは、アクティブな語が存在する、または以前に打ったキーがT9数字キーである場合、スペースを押し次第、CDB内に記録される。ユーザが、語からカーソルを移動する場合、コンテクストは、CDB内でブレークされる。
FD1200：コンテクスト予測の候補は、以下の処理に従う：
語が先行句読点を有さない場合、後置句読点は、これが顔文字のように見えない限り、取り除かれる。T9は、その語が、1つ以上の文字であり、かつ非アルファベット文字（句読点および数字）の数が、語において、文字の合計数の少なくとも2分の1である場合、後置または先行句読点を有する語は、顔文字であると仮定する。これは、ユーザ・データベース(UDB)処理のために使用される同じルールである。
語が、先行句読点を有する場合、語は、それが顔文字であると思われない限り、拒絶される。
FD1300：ユーザが多くのT9キーを押した場合、キー・シークエンスの長さのコンテクスト選択リスト項目は、選択リストの始めに配信される。完成を伴なったコンテクスト選択リスト項目は、リストの完成部分の最上位に、配信され、後にMDB、UBD、およびLDBが予め特定された順序で、続く。
FD1400：スペースが打たれる時、キャプス・ロックオンの場合、予測された語は、全部大文字である。
FD1500：先行語は、大小文字識別不能であるが、後置語は、大小文字識別可能である。したがって、“cab fee”をタイプし、次に、キャプス・ロックをオンにし、かつ“CAB”とスペースをタイプする場合、システムは、“FEE”を予測する。“cab fee”をタイプし、次に、キャプス・ロックではなくシフトを使用して“CAB”をタイプし、次に、スペースを選択する場合、システムは、“fee”を予測する。同様に、“Cab fee ”をタイプし、次に、“cab”およびスペースをタイプする場合、システムは、“fee”を予測する。
FD1600：スイッチは、コンテクスト予測をオン／オフにする、およびコンテクスト完成をオン／オフにするために、利用可能である。
【０１１１】
T9におけるコンテクスト予測および完成
使用ケース：
1）ユーザは、バイグラム‘my money’、’my time’、および‘my marriage’をこの順序で、最近入力した。
2）ユーザは、語‘my’を入力し、かつ受け入れる。
3）スペースを打つ。
4）選択リストが表示される：
marriage
time 
money
5）ユーザは、 6 キーを入力する。
6）選択リストが表示される：
o
m
n
6
marriage
money
7）ユーザは、再び、6 キーを入力する。
8）選択リストが表示される：
on
no
mm
mo
oo
money
【０１１２】
使用ケース：
1）ユーザは、 バイグラム‘bow tie’を最近入力した。
2）ユーザは、語‘bow’を入力し、かつ受け入れる。
3）スペースを打つ。
4）選択リストが表示される：
tie
5）ユーザは、8キー、4キー、3キーを入力する。
6）選択リストが表示される：
tie
the
vie
vid
tid  
注記：たとえ語‘the’が、英語において、最も一般的な語であっても、このコンテクスト内で、‘tie’は、リストに、最初に示される。語‘bow’が先行する時、それは、最も可能性のある候補である。
【０１１３】
マルチタップにおけるコンテクスト予測および完成
使用ケース：
1）ユーザは、バイグラム‘my money’、’my time’、および‘my marriage’を、この順序で、最近入力した。
2）ユーザは、 語‘my’を入力する。
3）スペースを打つ。
4）選択リストが表示される：
marriage
time 
money
5）ユーザは、‘m’を入力する。
6）ユーザは、next キーを押す。
7）選択リストが表示される：
m
marriage
money
8）ユーザは、‘o’を入力する。
9）ユーザは、次のキーを 押す。
10）選択リストが表示される：
mo
money
T9におけるコンテクストの予測および完成（スペースの前のフラッシング）。
【０１１４】
使用ケース：
1）ユーザは、バイグラム‘my money’、‘my time’、および‘my marriage’をこの順序で、最近入力した。
2）ユーザは、語‘my’を入力する。
3）右矢印を打つ。
4）スペースを打つ。
5）コンテクスト予測は表示されない。
6）ユーザは、6キーを入力する。
7）選択リストが表示される：
o
m
n
6
marriage
money
8）ユーザは、再び、6キーを入力する。
7）選択リストが表示される：
on
no
mm
mo
oo
money
T9におけるUDB完成を伴なうコンテクスト予測および完成
CDB完成は、UDB完成の前に現れる。
【０１１５】
使用ケース：
1）ユーザは、バイグラム‘my money’、‘my time’、および‘my marriage’、およびユニグラム‘mobetterblues’をこの順序で、最近入力した。
2）ユーザは、語‘my’を入力し、かつ受け入れる。
3）スペースを打つ。
4）選択リストが表示される：
marriage
time 
money
5）ユーザは、6 キーを入力する。
6）選択リストが表示される：
o
m
n
6
marriage
money
mobetterblues
7）ユーザは、再度、6キーを入力する。
8）選択リストが表示される：
on
no
mm
mo
oo
money
mobetterblues
T9におけるコンテクスト 予測および完成（大小文字識別）
先行 語 は、大小文字識別不能であり、後置 語は、大小文字識別である。スペース が、キャプスロックオンの状態で、打たれる場合 、予測された語は、 全部、大文字である。
【０１１６】
使用ケース：
1）ユーザは、バイグラム‘my MONEY’、‘my time’、および‘MY marriage’を、この順序で、最近入力した。
2）ユーザは、語‘my’を入力し、かつ受け入れる。
3）スペースを打つ。
4）選択リストが表示される：
marriage
time 
MONEY
5）ユーザは、クリアー・キーを入力する。
6）ユーザは、キャプス・ロックオンの状態ではなく、語‘MY’を入力し、かつ受け入れる。
7）選択リストが表示される：
marriage
time 
MONEY
8）ユーザは、 クリアー・キーを入力する。
9）ユーザは、キャプス・ロック オンの状態で、語‘MY’を入力し、かつ受け入れる。
10）選択リストが表示される：
MARRIAGE
TIME 
MONEY
マルチタップにおけるUDB 完成を伴なうコンテクスト 予測および完成
CDB 完成は、UDB 完成の前に現れる。
【０１１７】
使用ケース： 
1）ユーザは、バイグラム‘my money’、‘my time’、および‘my marriage’、およびユニグラム‘mobetterblues’を、ここに書かれた順序で、最近入力した。
2）ユーザは、語‘my’を入力する。
3）スペースを打つ。
4）選択リストが表示される：
marriage
time 
money
5）ユーザは、‘m’を入力する。
6）ユーザは、nextキーを押す。
7）選択リストが表示される：
m
marriage
money
mobetterblues
8）ユーザは、‘o’を入力する。
9）ユーザは、次のキーを押す。
10）選択リストが表示される ：
mo
money
mobetterblues
T9におけるUDB完成を伴なうコンテクスト予測および完成（ブレークされたコンテクスト）
CDB完成は、UDB完成の前に現れる。
【０１１８】
使用ケース：
1）ユーザは、バイグラム‘my money’、‘my time’、および‘my marriage’、およびユニグラム‘mobetterblues’を、この順序で、最近入力した。
2）ユーザは、語‘my’を入力し、かつ受け入れる。
3）スペースを打つ。
4）クリアーを打つ。
5）クリアーを再度打つ、または、“my”のすぐ右側のカーソルで終わるように、任意の他の カーソル移動をする。
6）スペースを入力する。
7）コンテクスト 予測が表示されない（機能説明 FD200）。
8）ユーザは、6キーを入力する。
9）コンテクストを伴なう選択リストが表示される（機能説明FD400）。
10）選択リストが表示される：
o
m
n
6
marriage
money
mobetterblues
11）ユーザ は、再度6 キーを入力する。
12）選択リストが表示される ：
on
no
mm
mo
oo 
money
mobetterblues
T9におけるコンテクスト予測および完成（新しさが頻度に優先する）
CDB完成は、UDB完成の前に現れる。
【０１１９】
使用ケース：
1）ユーザは、バイグラム‘my money’、‘my money’、’my marriage’を、この順序で、最近入力した。
2）ユーザは、語‘my’を、入力し、かつ受け入れる。
3）スペースを打つ。
4）選択リストが表示される（より最近の‘marriage’は、より頻度の高い‘money’の前に来る）：
marriage
money
5）ユーザは、6キーを入力する。
6）選択リストが表示される：
o
m
n
6
marriage
money
言語
CDBは、言語独立である。
【０１２０】
完成されていない語の再順序付け
完成されていない語を再順序付けすることに関するRUDB処理は、変化しないままである。
【０１２１】
クリアー
コンテクスト予測は、現在の語をクリアーした後、配信されないが、ユーザが再度タイプし始める時、配信される。
【０１２２】
句読点
コンテクスト予測は、文句読点を横切って、配信されない。
【０１２３】
エージング
CDBのエージングは、存在せず、最も古い語は、入力された最も最近の語により置き換えられる。
【０１２４】
ガーベッジ・コレクション
スペースが、新しい語をCDBに入力することを必要とされる時、CDB内の最も古い語は、場所を作るために、除去される。
【０１２５】
MT内への語の入力
CDBのためのデータは、MTの間に集められ、かつコンテクスト予測／完成は、MT内に配信される。
【０１２６】
My Words
CDB処理は、コンテクスト語が、ユーザにより維持されるMyWordsデータベースに、入力されたか否かにかかわらず、スペース文字の追加時に、発生する。
【０１２７】
本発明が好適な実施例を参照して本明細書において説明されるにもかかわらず、当業者は、他のアプリケーションが、本発明の精神および範囲から逸脱することなく、本明細書において記載されるそれらと置換することができることを容易に理解するであろう。例えば、ユーザのアクションまたはインプットは、コンテクストに基づくデバイスの状態を自動的に変えることができる。例えば、システムは、コンテクストを使用し、カレンダーが、ユーザが会議中であることを示す時間中は、携帯電話を「鳴る」から「振動する」へ、変えることができるであろう。別の実施例は、位置のコンテクストを使用し、ユーザが屋外にいる時、または、電話が高レベルのバックグラウンド・ノイズを検出した時、携帯電話の音量を大きくする。
【０１２８】
別の実施例において、システムは、ユーザの習慣を学習する。例えば、学習されたユーザのアクションに基づいて、システムは、ユーザに、ユーザが知らないサービスを提供することができる。
【０１２９】
別の実施例において、語予測は、以前の語のコンテクスト（2-グラム(バイグラム)コンテクスト）に基づくが、また、以前の「n」個の語（3-グラム(trigram)コンテクスト等）を使用することも可能であろう。
【０１３０】
したがって、本発明は、下記で含まれる請求の範囲によりのみ制限されるべきである。
【図面の簡単な説明】
【０１３１】
【図１】ディスプレイ、およびユーザ情報インプット・メカニズムを有し、かつ、本発明による次の語予測テクノロジを組み込んでいるデバイスの線図である。
【図２】本発明によるT9実施のためのキーの数を減少させたキーボードの不確定性除去システムの好適な実施例のブロック線図である。
【図３】本発明による次の語予測方法を示しているフロー・ダイヤグラムである。
【図４】本発明による次の語予測方法の語の処理を示しているフロー・ダイヤグラムである。
【符号の説明】
【０１３２】
10  ディスプレイ
12  インプット・メカニズム
14  次の語予測技術を組み込むデバイス
53  ディスプレイ
54  キーボード
100  プロセッサ
102  スピーカ
104  メモリ
【図１】
0005305592.tif 000002
【図２】
0005305592.tif 000003
【図３】
0005305592.tif 000004
【図４】
0005305592.tif 000005