説明

ダイナミックソフトキーボード

ダイナミックソフトキーボードの1つまたは複数の態様によると、ユーザー入力は複数のキーを有するソフトキーボードを介して受信される。ソフトキーボードの現在の入力環境を表す情報が取得され、複数のキーのうちどの1つまたは複数のキーをユーザー入力によって選択する意図だったのかが決定される。この決定は、少なくとも部分的に現在の入力環境に基づいて行われる。

【発明の詳細な説明】
【技術分野】
【0001】
本願の実施例は、例えば、ダイナミックソフトキーボードに関する。
【背景技術】
【0002】
現在、様々な種類のモバイルコンピューティングデバイスが利用可能であり、典型的には小型パッケージで大きな計算能力を提供している。しかし、モバイルデバイスが直面している課題の1つはデータ入力である。ユーザーは、大きくて持ち運びが困難であり、多くの場合、モバイルコンピューティングデバイス自体より大きいキーボードを介してデータを入力することに慣れている。一部のモバイルコンピューティングデバイスは、ソフトキーボードを使用することによって、この問題を解決している。ソフトキーボードとは、モバイルデバイスのディスプレイ上に表示されるキーボードのことであり、(たとえば、スタイラス、ユーザーの指などを使用して)ユーザーが表示されたキーを選択できるようにするものである。残念なことに、キーが物理的に分離されておらず、多くの場合はソフトキーボードのサイズが小さいため、ソフトキーボード上のキーを選択するのは、ユーザーにとって困難なままである。
【発明の概要】
【課題を解決するための手段】
【0003】
この概要は、以下に「発明を実施するための形態」においてさらに詳しく記述する概念を選択して簡単な形で紹介するために提供する。この概要は、請求される主題の重要な特徴または基本的な特徴を識別することを意図するものではなく、また、請求される主題の範囲を制限するために使用することを意図するものでもない。
【0004】
本明細書ではダイナミックソフトキーボードについて記述する。1つまたは複数の態様によると、ユーザー入力はソフトキーボードを介して受信される。ソフトキーボードは複数のキーを含む。ソフトキーボードの現在の入力環境を表す情報が取得され、複数のキーのうちどの1つまたは複数のキーをユーザー入力によって選択する意図だったのかが決定される。この決定は、少なくとも部分的に現在の入力環境に基づいて行われる。
【0005】
全図面を通して、同じ機能を参照するために同じ番号を使用する。
【図面の簡単な説明】
【0006】
【図1】1つまたは複数の実施形態に従ってダイナミックソフトキーボードを実装する例示的なコンピューティングデバイスを示すブロック図である。
【図2】1つまたは複数の実施形態に従ってソフトキーボードを表示する例示的なディスプレイデバイスを示す図である。
【図3】1つまたは複数の実施形態に従ってダイナミックソフトキーボードを実装する例示的なシステムを示す図である。
【図4】1つまたは複数の実施形態に従ってダイナミックソフトキーボードの例示的なプロセスを示すフローチャートである。
【図5】1つまたは複数の実施形態に従ってダイナミックソフトキーボードを実装するように構成できる例示的なコンピューティングデバイスを示す図である。
【発明を実施するための形態】
【0007】
本明細書ではダイナミックソフトキーボードについて記述する。ソフトキーボードのユーザーインターフェイスがユーザーに表示される。ソフトキーボードのユーザーインターフェイスに関する現在の入力環境を表す様々な情報も取得される。現在の入力環境を表すこの情報は、たとえば、ユーザーによって入力されている現在のデータの種類を表す情報(たとえば、電子メールアドレス、郵便番号、市など)、ユーザーによって典型的に使用される言語を表す情報、ユーザーによって一般的に入力されるデータ、物理的な操作環境(たとえば、机上、歩いている途中、移動中の自動車内など)、データ入力フィールドの近くの文字および/または単語などを含むことができる。現在のユーザーの入力環境を表すこの情報は、ユーザー入力が受信されたときに、ユーザーが選択しようとしたソフトキーボードのキーを検出するために使用される。このようにダイナミックソフトキーボードは、ユーザー入力速度およびユーザー満足度を促進することができる。
【0008】
図1は、1つまたは複数の実施形態に従ってダイナミックソフトキーボードを実装する例示的なコンピューティングデバイス100を示すブロック図である。コンピューティングデバイス100は、任意の様々な異なるデバイスでもよい。たとえば、コンピューティングデバイス100は、デスクトップコンピューター、移動局、娯楽装置、通信するようにディスプレイデバイスに結合されたセットトップボックス、テレビ、無線電話、デジタルカメラ、ゲームコンソール、車載型コンピューターなどでもよい。このため、コンピューティングデバイス100は、十分なメモリーおよびプロセッサーリソースを備えた完全なリソースデバイス(たとえば、パーソナルコンピューター、ゲームコンソール)から、メモリーおよび/または処理リソースが制限されている低リソースデバイス(たとえば、従来のセットトップボックス、携帯型のゲームコンソール)まで及ぶことができる。
【0009】
コンピューティングデバイス100は、ソフトキーボード制御モジュール102および予測キーボードモジュール104を含む。ソフトキーボード制御モジュール102は、ユーザーに表示するソフトキーボード108を生成する。ソフトキーボード108は、ディスプレイデバイスに表示されるユーザーインターフェイスである。ソフトキーボード108は、以下により詳細に記述するユーザーによって選択できる複数のキーを含む。コンピューティングデバイス100は、ソフトキーボード108を表示できるディスプレイコンポーネントを含むことができる。あるいは、ソフトキーボード108を表示できる別のデバイスまたはコンポーネントに信号またはデータを出力することができる。
【0010】
ソフトキーボード108は、任意の様々な異なるレイアウトで配列することが可能で、任意の様々な異なる英数字、漢字記号、文字または単語のグループ(たとえば、「http://」、「www.」など)、他の記号などに対応することが可能な複数のキーを含む。キーのレイアウトの例を1つ挙げるとQWERTYレイアウトがあるが、この代わりに他のレイアウトを提供することもできる。さらに、ソフトキーボード108はダイナミックである。このダイナミックな性質とは、時間とともに変化する予測キーボードモジュール104および/または時間とともに変化するソフトキーボード108として表示されるユーザーインターフェイスの振る舞いを示す。より詳細には以下に記述するように、この変更は、キーボードのレイアウトの変更、キーに対応する様々な英数字または記号の変更、ソフトキーボード108上のどの位置がどのキーに対応するかの変更、衝突目標ロジックの変更などを含むことができる。
【0011】
ソフトキーボード108はディスプレイデバイスに表示され、また、ユーザー入力はこのディスプレイデバイスを介して入力される。1つまたは複数の実施形態では、ソフトキーボード108を表示するディスプレイデバイスは、タッチスクリーンまたはタッチパッドであるか、またはそれが組み込まれており、これを介してユーザーがソフトキーボード108のキーを表示するディスプレイデバイスの領域に接触することによって、または領域に物理的に接近することによって、ユーザー入力を入力することができる。この接触または物理的な接近は、スタイラス、ペン、指などを使用して行うことができる。他の実施形態では、タッチスクリーンまたはタッチパッド以外の他のポインティングデバイスが使用される。ポインターを移動して、ソフトキーボード108を使用して入力するために、マウス、サムスティック、トラックパッド、トラックボールのような相対ポインティングデバイスなど、任意の様々な他のポインティングデバイスを使用することができる。ペンタブレットのような完全に分離されたポインティングデバイスなど、他の種類のポインティングデバイスも使用することができる。これらの様々なポインティングデバイスは、典型的には、ソフトキーボード108の特定の位置を選択するためにユーザーが作動させることができる1つもしくは複数のボタンまたは他の選択メカニズムを含む(たとえば、ポインターがソフトキーボード108の希望する領域に位置したときに、ユーザーはマウスボタンを押すことができる)。ユーザー入力を入力するソフトキーボード108に対応する物理的なキーを有する個別の物理的なキーボードはいずれも必要ない。
【0012】
図2は、1つまたは複数の実施形態に従ってソフトキーボード202を表示する例示的なディスプレイデバイス200を示している。ソフトキーボード202は、たとえば、図1のソフトキーボード108でもよい。例示的なレイアウトおよびソフトキーボード202のキーに対応する英数字は一例に過ぎず、上記のように、任意の様々な異なるレイアウトおよび/または対応する文字もしくは記号を使用できることを理解されたい。図2の例では、ソフトキーボード202は、ディスプレイデバイス200の表示領域をすべては占めておらず、デバイス200のユーザーに他の情報を表示する余地を残している。あるいは、ソフトキーボード202は、ディスプレイデバイス200の表示領域のすべて、またはほぼすべてを占めることができる。また、ソフトキーボード202は、オプションで、表示非表示機能のためのユーザーインターフェイスメカニズムを含むことができ、これにより、キーボード202を特定のときに非表示にすることができる。
【0013】
上記のように、ソフトキーボード202で入力を行うために、任意の様々な異なるポインティングデバイスを使用することができる。ポインティングデバイスの例として、図2に、キーボード202の特定のキーに接触したり、または上方で静止させたりするためにユーザーが使用できるスタイラス204を示している。ユーザーが、(スタイラス204または別のポインティングデバイスによって制御されたポインターを用いて)キーボード202の特定の領域に接触したり、またはキーボード202の特定の領域の上方にスタイラス204(または他のポインター)を移動させたりすると、スタイラスまたは他のポインティングデバイスの接触または移動によってユーザーが選択しようとした特定のキーが自動的に検出される。より詳細には以下に記述するように、この自動検出が実行される方法は、少なくとも部分的に現在の入力環境に基づいている。
【0014】
1つまたは複数の実施形態では、ディスプレイデバイス200はタッチスクリーンまたはタッチパッドを含み、ユーザーは、ディスプレイデバイス200の様々な領域にスタイラスを接触させたり、またはその近くにスタイラスを移動したりして、ユーザーはユーザー入力を入力することができる。そのようなタッチスクリーンまたはタッチパッドは、電磁気による入力デバイス、容量性の入力デバイス、抵抗性の入力デバイス、表面弾性波入力デバイス、光学的画像入力デバイスなどでもよい。そのようなタッチスクリーンまたはタッチパッドは、当業者にはよく知られている。他のポインティングデバイスが使用される場合(マウス、ペンタブレットなど)、ディスプレイデバイス200は、タッチスクリーンやタッチパッドを含む必要がないことを理解されたい。
【0015】
図1に戻ると、ソフトキーボード制御モジュール102は、ユーザー入力110も受信する。ユーザー入力110は、ソフトキーボード108の特定の位置(複数可)の選択を示している。上記のように、この選択は、スタイラス、ペン、指、ポインティングデバイスによって制御されたポインターなどを使用して行うことができる。ユーザー入力110は、典型的にはモジュール102によって1組の1つまたは複数の座標として表され(たとえば、X−Y座標、X−Y−Z座標など)、ユーザーによって選択されたソフトキーボード108の位置(複数可)を識別する。上記のように、この選択は、タッチスクリーンもしくはタッチパッドに接触したり、これらの近くに移動したりすること、または他のポインティングデバイスからの他の入力を含むことができる。XおよびYの座標は、入力面(たとえば、タッチスクリーン、タッチパッド、ペンタブレットなどの面)の水平および垂直の位置をそれぞれ示している。Z座標は、入力面からの距離を表しており、ユーザーが入力面の一部の上方で静止しているかどうかを判断するために使用することができる。
【0016】
1つまたは複数の実施形態では、ユーザー入力110は連続したデータである(たとえば、連続したX−Y座標、連続したX−Y−Z座標など)。この連続したデータは、1つまたは複数の接近軌道、1つまたは複数のペン降下軌道、および離脱軌道を含む。接近軌道は、ポインティングデバイスが面に衝突する前(またはユーザーによって選択メカニズムが作動される前)の連続した座標を示している。ペン降下軌道は、ポインティングデバイスが衝突する(または、ユーザーによって選択メカニズムが作動されたときにポインターが位置している)面上の位置を示している。多くの場合、ペン降下軌道は1つだが、複数のペン降下軌道を受信することができる(たとえば、ペンが面に衝突するときにユーザーがペンを弾ませた場合)。離脱軌道は、ポインティングデバイスが面を離れるとき(またはユーザーによって選択メカニズムが作動された後)の連続した座標を示している。
【0017】
予測キーボードモジュール104は、ユーザー入力110をソフトキーボード制御モジュール102から受信する。予測キーボードモジュール104は、ユーザー入力110およびソフトキーボード108の現在の入力環境を表す情報の両方に基づいて、ユーザー入力110を用いて、ユーザーが選択しようとしたソフトキーボード108の1つまたは複数のキーを決定する。より詳細には以下に記述するように、この現在の入力環境は、ユーザーによって入力されている現在のデータの種類(たとえば、電子メールアドレス、郵便番号、市など)、ソフトキーボード108のユーザーによって典型的に使用される言語、ソフトキーボード108のユーザーによって一般的に入力されるデータなど、ソフトキーボード108が表示される環境の様々な態様を表している。
【0018】
1つまたは複数の実施形態では、また、予測キーボードモジュール104は、ユーザー入力110および/またはソフトキーボード108の現在の入力環境を表す情報に基づいて、ソフトキーボード108に加える変更を決定する。これらの変更は、より詳細には以下に記述するように、キーボードのレイアウトの変更および/またはキーに対応する様々な英数字もしくは記号の変更などでもよい。
【0019】
図3は、1つまたは複数の実施形態に従ってダイナミックソフトキーボードを実装する例示的なシステムを示している。システム300は、たとえば、図1のコンピューティングデバイス100でもよい。システム300は、ソフトキーボード制御モジュール302(図1のソフトキーボード制御モジュール102でもよい)、および予測キーボードモジュール304(図1の予測キーボードモジュール104でもよい)を含む。モジュール302および304は、同じデバイスの一部として実装することも、あるいは異なるデバイスによって実装することもできる。さらに、モジュール302および304自体のそれぞれは、単一のデバイス、または複数のデバイスによって実装することができる。
【0020】
ソフトキーボード制御モジュール302はソフトキーボード308を生成し、ユーザー入力310を受信する(図1のソフトキーボード108およびユーザー入力110に類似)。ユーザー入力310は、ソフトキーボード308のユーザーによって行われた選択であり、この選択は、ソフトキーボード308の1つまたは複数の特定の位置の選択である。この選択は、たとえば、指、ペン、スタイラスなどを用いてディスプレイデバイスに接触したり、ソフトキーボードの位置の上方にポインターを移動させたり、ペンまたはスタイラスをディスプレイデバイスの近くに移動させたりするなど、様々な方法で行うことができる。この選択は、上記の1つまたは複数の接近軌道、1つまたは複数のペン降下軌道、および離脱軌道を含む。ソフトキーボード制御モジュール302は、任意の様々な異なる方法においてユーザー入力310を表すことができる。
【0021】
1つまたは複数の実施形態では、ユーザー入力310は、1組の1つまたは複数のX−Y座標として表される。1組のX−Y座標は、ソフトキーボード308の特定の位置を2次元空間において識別する。ソフトキーボード308の特定の位置が原点として決定され(たとえば、ソフトキーボード308の左下の角、ソフトキーボード308の中心など)、X−Y値は、X軸およびY軸に沿った原点に対する位置を表す。
【0022】
さらに、1つまたは複数の実施形態では、ソフトキーボード308が表示されるディスプレイデバイスはZ軸をサポートする。このZ軸は、X−Y座標の2次元空間に対して垂直である。そのようなディスプレイデバイスは、たとえば、ディスプレイデバイスの近くに位置するが、接触していないスタイラスを検出することができる。スタイラスとディスプレイデバイスの間の距離はZ値として記録される。このため、そのようなディスプレイデバイスと共に使用される場合、ユーザー入力310は、1組の1つまたは複数のX−Y−Z座標として表される。
【0023】
さらに、1つまたは複数の実施形態では、追加的な時間値Tがユーザー入力に対して記録される。時間値Tは、ユーザーの選択の期間を示しており、たとえば、ユーザーのスタイラスがキーボード308の特定のX−Y位置に接触していた時間、ユーザーのスタイラスがキーボード308の特定のX−Y位置から特定の距離Zで保持された時間、ポインターがキーボード308の特定のX−Y位置の上方で保持(上方で静止)された時間などである。このため、そのような実施形態では、ユーザー入力310は、1組の1つもしくは複数のX−Y−T、または、その代わりとしてX−Y−Z−T座標として表される。より詳細には以下に記述するように、時間値Tは予測キーボードエンジン320への入力であり、ユーザーが期待するテキスト入力について、より優れた予測を行うために使用することができる。
【0024】
さらに、1つまたは複数の実施形態では、キーボード308の複数の位置を同時に選択することができる。たとえば、これらの複数の位置は、(たとえば、2本の指を使用して)「Shift」キーと文字キー、「Control」キーと文字キーなど、同時に選択された2つ以上の位置でもよい。また、これらの複数の位置は、ある位置から別の位置への移動などでもよい(たとえば、スタイラスを用いてキーボード308のある位置に接触し、ディスプレイデバイスを横切るようにスタイラスを滑らせ、次に別の位置でスタイラスを持ち上げる)。そのような状況では、ユーザー入力310は、1組の複数の座標として表される(たとえば、X−Y、X−Y−Z、X−Y−T、X−Y−Z−Tなど)。また、1つまたは複数の座標は、オプションで、ディスプレイデバイスに接触したとき、またはディスプレイデバイスの近くに位置したときに(たとえば、ディスプレイデバイスから距離Z)、スタイラス(または指、ペンなど)がディスプレイデバイスに沿って移動される方向を識別する軌道パラメーターを含むことができる。いくつかの実施形態では、現在のハードウェアについて、ユーザーは、典型的には、垂直方向に目標を捕らえる際により多くのエラーが発生し、水平方向ではより正確である。
【0025】
予測キーボードモジュール304は、ソフトキーボード制御モジュール302からユーザー入力310を受信して、ユーザー入力310およびソフトキーボード308の現在の入力環境を表す情報の両方に基づいて、ユーザー入力310を用いてユーザーが選択しようとしたソフトキーボード308の1つまたは複数のキーを決定する。1つまたは複数の実施形態では、また、予測キーボードモジュール304は、少なくとも部分的に現在の入力環境に基づいて、ソフトキーボード308に加える変更を決定する。これらの変更の指示はソフトキーボード制御モジュール302に送信され、ソフトキーボード制御モジュール302は、それに応じてソフトキーボード308の表示を変更する。
【0026】
予測キーボードモジュール304は、予測キーボードエンジン320、動作モード検出モジュール322、言語辞書モジュール324、ユーザー固有の辞書モジュール326、コンテキストマッピングモジュール328、言語検出モジュール330、および単語および句のnグラム統計モジュール332を含む。モジュール322から332のそれぞれは、予測キーボードエンジン320に、ソフトキーボード308の現在の入力環境に関する様々な情報を提供する。予測キーボードエンジン320は、次に、現在の入力環境に関するこの情報を使用してソフトキーボード308を変更し(たとえば、レイアウトまたは特定のキーに対応する文字もしくは記号)、また、ユーザー入力310を用いてユーザーが選択しようとしたソフトキーボード308の1つまたは複数のキーを決定する。
【0027】
予測キーボードエンジン320は、特定のユーザー入力を用いてユーザーがどのキーを選択しようとしたかに関する指示340を出力する。この指示340は、典型的には、ソフトキーボード308のユーザーインターフェイスを更新するために使用され、また、文字(複数可)入力に利用するために別のコンポーネント(図示せず)に提供することもできる。また、この指示340は、現在の入力環境の決定を支援するために、1つまたは複数のモジュール322〜332に返すこともできる。たとえば、より詳細には以下に記述するように、ユーザー固有の辞書モジュール326は、ユーザーによって入力される単語を監視することができる。
【0028】
さらに、1つまたは複数の実施形態では、予測キーボードエンジン340は、ユーザーが入力している特定の単語または句のエンジン340による予測である予測入力文字列360も出力する。この予測の出力により、予測された単語または句が入力されるため、ユーザーは単語または句の文字をそれ以上入力する必要がなくなる「オートコンプリート」オプションを選択できるようになる。予測入力文字列360は、予測された単語または句をユーザーに表示できるように、ソフトキーボード制御モジュール302、または、その代わりとしてシステムの別のコンポーネント(図示せず)に提供される。ユーザーは、ソフトキーボード308を介して、たとえば、「Enter」キーを選択したり、「オートコンプリート」キーを選択したり、予測された単語または句の特定の文字を選択したりするなど、様々な方法で、表示されたこの予測された単語または句を選択することができる。また、ユーザーは、オプションで、予測された単語または句の一部だけを選択できることにも注意されたい。
【0029】
動作モード検出モジュール322は、ソフトキーボード308が表示されているデバイスの動作モードを検出する。動作モードは、たとえば、デバイスの物理的状況および/または地理的位置を含むことができる。物理的状況は、デバイスがどのように使用されているかの物理的概要を示している。この物理的概要は、たとえば、デバイスは静止しているか移動しているか、デバイスは特定方向を向いているかなどを含むことができる。物理的状況は、デバイスのユーザーが指定したり、デバイスのモーションセンサーを使用したり、デバイスが結合されている周辺機器または他のコンポーネントに基づいて、無線基地局またはアクセスポイントとの通信に基づいてなど、様々な方法で決定することができる。
【0030】
地理的位置は、デバイスが位置している地理的概要を示している。地理的位置は、デバイスのユーザーが指定したり、デバイスの全地球測位システム(GPS)を使用したり、デバイスに割り当てられているアドレス(たとえば、インターネットプロトコル(IP)アドレス)に基づいてなど、様々な方法で決定することができる。
【0031】
動作モード検出モジュール322からのデバイスの動作モードを表す情報は、様々な異なる方法で、予測キーボードエンジン320によって使用することができる。たとえば、予測キーボードエンジン320は、デバイスが静止しているときより、移動しているときのほうが特定のキーを正確に識別するのが難しいと想定できるため、デバイスが静止しているときより、デバイスが移動しているときに、エンジン320は、ソフトキーボード308のより大きな領域を特定のキーに割り当ててもよい。より詳細には以下に記述するように、これらの大きな領域は、ソフトキーボード308に表示されるより大きなキーに対応することも、または特定のキーのより大きな衝突目標に対応することもできる。
【0032】
言語辞書モジュール324は、1つまたは複数の言語固有の辞書を予測キーボードエンジン320で利用できるようにする。予測キーボードエンジン320は、ユーザーによって入力されている特定の単語または句を識別することを自動的に試みることができるため、ユーザーによって入力される可能性がある次の文字(または他の記号)を決定することができる。たとえば、ユーザーが「uni」と入力すると、予測キーボードエンジン320は、ユーザーが「united」という単語を入力することを試みているため、ユーザーが入力する次の文字は文字「t」の可能性があると自動的に識別できる。予測キーボードエンジン320は、様々なモジュール322〜332からの様々な情報を使用して、ユーザーによって入力されている特定の単語または句を識別することを試みることができる。その1つは、ユーザーによって典型的に使用されている特定の言語である。この決定を支援するために言語辞書モジュール324によって予測キーボードエンジン320に提供される情報の1つは、ユーザーによって典型的に使用されている言語(複数可)の単語および/または句の辞書である。
【0033】
ユーザーによって典型的に使用されている言語(複数可)は、様々な方法で識別することができる。たとえば、言語は、ユーザーが指定することができ、システム300が販売される場所に基づいた既定の言語でもよく(たとえば、システム300がフランスで販売された場合、既定の言語はフランス)、ユーザーによる以前の入力に基づかせることができ(たとえば、以前の入力の大部分が英語であれば、言語は英語)、別のモジュールから取得することができる(より詳細には以下に記述する言語検出モジュール330など)、などである。
【0034】
ユーザー固有の辞書モジュール326は、ユーザーによって一般的に入力される単語(または数値、記号などの他のデータ)に関する情報を収集して維持する。この情報は、様々な異なる方法で収集して維持することができる。1つまたは複数の実施形態では、ユーザーによって入力された単語、およびそれらの単語がどれくらい頻繁に入力されるかを示す対応頻度が維持される。この頻度は、たとえば、単語が入力されるたびに増分される単語カウント、モジュール326によって維持されている他の単語に比べて、その単語がどれくらい頻繁に出現するかを示す割合などでもよい。さらに、ユーザーまたは(たとえば、ユーザーが働く企業の)管理者は、オプションで、ユーザーが入力したときに単語を追加する(かつ/またはオプションで、既定の単語およびユーザーの頻度を含む)新しいカスタム辞書をインストールすることができる。
【0035】
さらに、モジュール326によって追跡または維持される単語は、時間の経過にあわせて老化させて、同じ頻度で使われていても、より古い時期に使われた単語は、より最近に入力された単語より、ユーザーによる使用頻度が低いと識別されるようにすることができる。この老化は、たとえば、特定の単語がどの位前に使用されたかのレコードを維持することによって(たとえば、分、時間、日など)、少なくともしきい値の時間だけ使用されていない単語に対応する頻度を変更(たとえば減少)するなどによって、異なる方法で実行することができる。
【0036】
上記のように、予測キーボードエンジン320は、ユーザーによって入力されている特定の単語または句の識別を自動的に試みることができる。ユーザー固有の辞書モジュール326によって予測キーボードエンジン320に提供される情報との1つは、ユーザーによって一般的に入力される単語(または他のデータ)に関する情報である。
【0037】
コンテキストマッピングモジュール328は、ユーザーがデータを入力する特定のフィールドと、各特定のフィールドに対して有効なデータの種類とのマッピングを維持する。たとえば、フィールドが郵便番号フィールドである場合、有効なデータは文字ではなく数値の可能性がある。別の例を挙げると、フィールドが電子メールアドレスフィールドである場合、有効なデータは、文字、数値、およびいくつかの記号(「@」など)などであり、他の記号(「!」または「#」など)ではない可能性がある。
【0038】
コンテキストマッピングモジュール328は、任意の様々な異なる方法で、ソフトキーボード308と共にユーザーに表示されている特定のフィールドを識別することができる。たとえば、画面に表示されているデータを分析し、特定のフィールドを識別することができる(たとえば、「郵便(zip)」または「郵便番号(zip code)」のラベルを有するフィールド、「電子メール」または「電子メールアドレス」のラベルを有するフィールドなど)。別の例を挙げると、ソフトキーボード308と共に表示されているデータに様々なタグまたは識別子を含ませることができる。これらのタグまたは識別子は、表示されている特定のフィールドをコンテキストマッピングモジュール328に示すものである。別の例を挙げると、入力フィールドは、システム300のオペレーティングシステムのアプリケーション・プログラミング・インターフェイス(API)経由で、それらの存在および「種類」または法的な入力制限を明示的に宣言することができる。
【0039】
特定のフィールドに対して有効なデータの種類は、異なる方法で識別することができる。1つまたは複数の実施形態では、特定のフィールドに対して有効なデータの種類は、あらかじめプログラムされているか、または、そうでない場合は、コンテキストマッピングモジュールに対して識別される。たとえば、ソフトキーボードと共に表示されるデータに対応する様々なタグ、識別子、または他のメタデータは、特定のフィールドに対して有効なデータの種類を識別することができる。または他のリモートデバイスにアクセスして、特定のフィールドに対して有効なデータの種類を取得することができる。別の例を挙げると、特定のフィールドに対する有効なデータの種類を取得するために、システム300のオペレーティングシステムのAPIを呼び出すことができる。他の実施形態では、特定のフィールドに対する1つまたは複数の有効なデータの種類は、コンテキストマッピングモジュール328によって自動的に識別することができる。たとえば、ユーザーがある種類のデータの入力を試みて、入力を処理するプログラムまたは他のコンポーネントによってユーザーにエラーが返された場合、コンテキストマッピングモジュール328は、特定のデータの種類は特定のフィールドに対して有効ではないことを学習することができる。
【0040】
コンテキストマッピングモジュール328からのコンテキストマッピング情報は、任意の様々な異なる方法で、予測キーボードエンジン320によって使用することができる。1つまたは複数の実施形態では、予測キーボードエンジン320は、特定のフィールドに対して有効でない特定の種類のデータは、ユーザー入力310によって選択される意図がないと決定する。たとえば、特定のフィールドが数値だけを受け入れる場合、予測キーボードエンジン302は、ユーザーが選択しようとしたキーは、ユーザー入力310に最も近いソフトキーボード308上の番号キーであろうと決定することができる。別の例を挙げると、特定のフィールドが数値だけを受け入れる場合、予測キーボードエンジン320は、ソフトキーボード308に数値だけを含めて文字は含めないことを、ソフトキーボード制御モジュール302に示すことができる。
【0041】
あるいは、予測キーボードエンジン320は、有効な特定の種類のデータが、他の種類のデータよりユーザーにとって選択するのが簡単になるように決定することができる。たとえば、記号「@」が特定のフィールドに対して有効なシンボルであるが、記号「!」および「#」は、そのフィールドに対して有効なシンボルではない場合、予測キーボードエンジン320によって実装された衝突目標ロジックは、「@」記号が選択される可能性を増加させることができる。この可能性は、「@」記号の衝突目標を「!」および「#」の記号より大きくするなどによって、異なる方法で増加することができる。特定のキーに対するソフトキーボード308の衝突目標は、その特定のキーに対応するソフトキーボード308の位置を示している。「!」および「#」の記号は、多くのキーボードにおいて「@」記号の左右いずれかにあるため、衝突目標サイズを変更することで、ソフトキーボード308で「@」記号またはその近くに接触することによって、ユーザーは「@」記号を選択しやすくなる。予測キーボードエンジン320によって実装される衝突目標と衝突目標ロジックの使用については、より詳細には以下に記述する。
【0042】
言語検出モジュール330は、システム300のユーザーによって使用されている言語を識別する。言語は、たとえば、ユーザーが言語を指定する、またはモジュール330が自動的に言語を識別するなど、異なる方法で識別することができる。モジュール330は、たとえば、(たとえば、オペレーティングシステムによって記録されている)システム300の既定の言語にアクセスしたり、コンテキストマッピングモジュール328にアクセスしたりして、データの種類およびそれらの対応する言語を識別する(たとえば、漢字記号が有効なデータの種類である場合、その言語は日本語であると自動的に識別することができる)などによって、言語を自動的に識別することができる。
【0043】
言語検出モジュール330によって識別される言語は、システム300のユーザーによって典型的に使用される言語でもよく、または、その代わりに、ユーザーによって行われている特定の入力に対して、システム300のユーザーによって使用される言語でもよい。たとえば、ユーザーが部分的な単語(たとえば「uni」)を入力した場合、言語検出モジュール330は、ユーザーによって入力されている言語を自動的に検出することができる。これは、スタンドアロンの検出(たとえば、部分的な単語のみに基づく)でもよく、あるいは、他の情報(たとえば、システム300のユーザーによって典型的に使用される言語(複数可))と併せてもよい。
【0044】
単語および句のnグラム統計モジュール332は、部分的な入力に基づいて、他の単語または句より可能性の高い単語または句を識別する。これは、たとえば、部分的な単語の入力に基づいた単語の識別、および1つ(または複数の)単語の入力に基づいた句の識別を含めることができる。1つまたは複数の実施形態では、この識別は、(たとえば、言語辞書モジュール324によって提供された辞書の)実際の単語に基づく。たとえば、「united」という単語が入力された場合、モジュール332は、「states」という単語のほうが、「run」という単語より可能性が高いと示すことができる。
【0045】
他の実施形態では、モジュール332によるこの識別は、文法ルールまたは他のルールに基づく。たとえば、典型的には2つの動詞が隣接することはないため、動詞が最初の単語として入力された場合、モジュール332は、句内の次の単語が動詞ではない可能性が高いと示すことができる。別の例を挙げると、モジュール332は、「United States of America」という句が、システム300のユーザーによってしばしば入力されると決定できるため、モジュール332は「United States」とユーザーによって入力された場合、他の言葉の組み合わせより「of America」が次に句に含まれる可能性が高いと決定することができる。
【0046】
単語および句のnグラム統計モジュール332からの可能性のある単語または句を識別する情報は、任意の様々な異なる方法で、予測キーボードエンジン320によって使用することができる。コンテキストマッピングモジュール328に関する記述に類似しているが、可能性のある単語または句を識別する情報は、特定の単語、文字、または他の記号が、ユーザー入力310によって選択される意図がないことを決定するために使用できるため、そのような単語、文字、または他の記号の入力を却下したり、あるいは、衝突目標を変更して、ユーザーが特定の単語、文字、または他の記号を選択しやすくしたりすることができる。
【0047】
上記のように、予測キーボードエンジン320は、様々なモジュール322〜332から現在の入力環境を表す情報を受信する。予測キーボードエンジン320は、現在の入力環境を表すこの情報を使用して、レイアウトおよび/もしくはソフトキーボード308のキーに対応する英数字または記号を変更し、かつ/または特定のユーザー入力を用いてユーザーがどのキーを選択しようとしたかを決定する。キー(複数可)の選択がユーザーによって行われた後に、毎回、予測キーボードエンジン320は、この変更および/または決定を繰り返す。現在の入力環境は、ユーザーによってキー(複数可)が選択されるたびに変更することが可能で、新しい現在の入力環境は、ユーザーによってキー(複数可)が選択されるたびに予測キーボードエンジン320によって考慮することができる。
【0048】
上記のように、現在の入力環境を表す情報は、特定の入力は他の入力より可能性が高いことを示すことができる。1つまたは複数の実施形態では、この情報はソフトキーボード308のレイアウトを変更するために使用される。たとえば、情報を使用して、ソフトキーボード308のレイアウトをQWERTYレイアウトから数字パッドレイアウトに変更し、QWERTYレイアウトの特定のキーだけを含ませるなどが可能である。
【0049】
他の実施形態では、現在の入力環境を表す情報は、どの英数字または他の記号がソフトキーボード308のキーに対応するかを変更するために使用する。そのような変更に応じて、ソフトキーボード308は、以前に表示されていた文字または記号ではなく、それらのキーに対して新しい対応する文字または記号を表示して、それらのキーの1つを選択すると、表示されている対応する文字または記号がユーザー入力されることになる。たとえば、ソフトキーボード308のキーの列は、数値への対応から記号への対応に変更することができる。別の例を挙げると、特定のキーは、特定の言語に固有の文字および/または記号に対応するように変更することができる。
【0050】
他の実施形態では、現在の入力環境を表す情報は、ソフトキーボード308のキーの表面を変更するために使用される。そのような変更に応じて、ソフトキーボード308は、キーに対して異なる表面を表示する。たとえば、入力されている単語の後に入力される可能性が高いかつ/または可能性がある文字のキーを強調表示することができる。別の例を挙げると、(既に入力された文字に基づいて)入力しても単語にならない文字のキーを暗く表示して、視覚的に目標を定めるのを援助し、かつユーザーの負担を軽減することができる。
【0051】
他の実施形態では、現在の入力環境を表す情報は、特定のユーザー入力を用いてユーザーがどのキーを選択しようとしたかを決定するために使用される。衝突目標ロジックを含む予測キーボードエンジン320は、現在の入力環境およびユーザー入力310を使用して、ユーザーが選択しようとしたソフトキーボード308上の特定のキーを識別する。
【0052】
予測キーボードエンジンが、現在の入力環境およびユーザー入力310を使用できる方法の1つは、特定のキーの衝突目標のサイズを変更することである。上記のように、ソフトキーボード308上の各キーは、対応する衝突目標を有することができ、予測キーボードエンジン320は、衝突目標を各キーに割り当てることができる。特定のキーのこの衝突目標は、その特定のキーに対応するソフトキーボード308上の位置を示している。特定のキーの衝突目標は変更することができる。つまり、衝突目標は、予測キーボードエンジン320によってサイズを大きくして、ソフトキーボード308上のより多くの位置がその特定のキーに対応するようにすることも、または予測キーボードエンジン320によってサイズを小さくして、ソフトキーボード308上のより少ない位置がその特定のキーに対応するようにすることもできる。したがって、典型的には、キーの衝突目標を大きくすると、ユーザーがそのキーを選択しやすくなるのに対して、典型的には、キーの衝突目標を小さくすると、ユーザーがそのキーを選択しにくくなる。
【0053】
この結果として、あるキーの衝突目標が隣接するキーより大きくなる可能性があり、実際に、隣接するキーの表示の一部を覆うように延在することに注意されたい。たとえば、予測キーボードエンジン320が、文字「d」がユーザーによって入力される次の文字の可能性があると決定したと仮定する。文字「d」の衝突目標を大きくするのに対して、隣接する文字「f」の衝突目標を小さくすることができる。文字「d」の衝突目標は、実際には文字「f」のキーがソフトキーボード308に表示されている位置を含むことができる。このため、この例では、ユーザーが文字「f」のキーの端部の位置を押した場合、予測キーボードエンジン320は、文字「d」がユーザーが選択しようとしたキーであると決定する。そのような状況は、様々な異なる理由から生じる可能性がある。たとえば、ユーザーが歩きながら入力している場合などである(その場合には、希望するキーを正確に打つのはユーザーにとってより困難である)。
【0054】
さらに、予測キーボードエンジン320は、ソフトキーボード308上の特定のキーを無効化することができる。このため、予測キーボードエンジン320は、特定のユーザー入力が何であるかに関係なく、特定のユーザー入力を用いて無効なキーを選択しようとしたとは示さない。たとえば、「!」記号が無効であると決定された場合、予測キーボードエンジン320は、その特定のユーザー入力が何であるかに関係なく、特定のユーザー入力を用いて「!」記号を選択しようとしたとは示さない。
【0055】
予測キーボードエンジン320は、レイアウトおよび/またはソフトキーボード308のキーに対応する英数字もしくは記号を変更する方法を決定することができ、かつ/または、様々な異なる方法において、特定のユーザー入力を用いてユーザーがどのキーを選択しようとしかたを決定することができる。1つまたは複数の実施形態では、予測キーボードエンジン320は、様々な入力(ユーザー入力310と現在の入力環境を表す様々な異なる情報の組み合わせ)を用いてトレーニングされる学習システムである。このトレーニングには、エンジン320に様々な入力および正解を提供することが含まれるため、エンジン320は、様々な入力に応じて、どのような応答を与えるかを学習することができる。最初のトレーニングは、典型的には、予測キーボードエンジン320の設計者によって実行され、補足的なトレーニングは、システム300の操作中に実行することができる。この補足的なトレーニングは、たとえば、エンジン320に与えられる、特定の出力340が正しい出力だったかどうか示すフィードバックに基づいて行うことができる。人工知能システムおよび他の統計に基づくシステムを含む、様々な異なる学習システムのいずれかを使用することができる。たとえば、そのような学習システムは、人工ニューラルネットワーク、ベイズの推論によるシステム、k近傍法アルゴリズムなどを含むことができる。
【0056】
あるいは、予測キーボードエンジン320は他のシステムとして実装することができる。たとえば、エンジン320は、ユーザー入力310および現在の入力環境を表す様々な異なる情報を評価するために、様々な統計解析システムのいずれかを使用して実装することができる。別の例を挙げると、エンジン320は、ユーザー入力310に適用される様々な他のルール、基準、または重み付け、および現在の入力環境を表す様々な異なる情報を使用して実装することができる。
【0057】
このように、ソフトキーボード308はダイナミックであると認めることができる。1つまたは複数の実施形態では、ソフトキーボード308は、レイアウトおよび/またはキーに対応する英数字もしくは記号を変更して、ダイナミックソフトキーボードを構成することができる。さらに、1つまたは複数の実施形態では、特定のユーザー入力を用いてユーザーがどのキーを選択しようとしたかを変更して、ダイナミックソフトキーボードを構成することができる。特定のユーザー入力を用いてユーザーがどのキーを選択しようとしたかに関するこのような変更は、そのような変更の指示をユーザーに表示して、または表示しないで行うことができる。
【0058】
図4は、1つまたは複数の実施形態に従ったダイナミックソフトキーボードの例示的なプロセス400を示すフローチャートである。プロセス400は、図3のシステム300などのシステムで実行することができ、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わせに実装することができる。プロセス400は、1つまたは複数のデバイスによって実行される操作を指定する1組の処理として示されていて、それぞれの処理による操作を実行するために示された順序に制限されるものではない。プロセス400は、ダイナミックソフトキーボードの例示的なプロセスである。ダイナミックソフトキーボードに関する追加的な記述は、本明細書において他の図に関連して記述されている。
【0059】
最初に、ユーザー入力がソフトキーボードを介して受信される(処理402)。このユーザー入力は、上記のように、ソフトキーボードの特定の1つまたは複数の位置である。さらに、現在の入力環境を表す情報が取得される(処理404)。この情報は、図3のモジュール322〜332に関して上記の情報など、任意の様々な異なる種類の情報でもよい。
【0060】
少なくとも部分的に処理404で得られた情報に基づいて、ユーザー入力によって選択する意図であった特定の1つまたは複数のキーが決定される(処理406)。ユーザーによって選択されたと決定された1つまたは複数のキーの指示が出力される(処理408)。オプションで、予測入力文字列の指示も出力される(処理410)。さらに、1つまたは複数の実施形態では、少なくとも部分的に処理404で取得された情報に基づいて、ソフトキーボードは変更される(処理412)。上記のように、この変更は、たとえば、レイアウトの変更および/またはソフトキーボードのキーに対応する英数字もしくは記号の変更でもよい。
【0061】
図5は、1つまたは複数の実施形態に従ってダイナミックソフトキーボードを実装するように構成できる例示的なコンピューティングデバイス500を示している。コンピューティングデバイス500は、たとえば、図1のコンピューティングデバイス100でもよい。
【0062】
コンピューティングデバイス500は、1つまたは複数のプロセッサーまたは処理装置502、1つまたは複数のメモリーおよび/または記憶域コンポーネント506を含むことができる1つまたは複数のコンピューターで読み取り可能なメディア504、図1のユーザー入力110(または図3のユーザー入力310)を介して受信される1つまたは複数の入出力(I/O)デバイス508、および様々なコンポーネントおよびデバイスが相互に通信することを可能にするバス510を含む。コンピューターで読み取り可能なメディア504および/またはI/Oデバイス(複数可)508は、コンピューティングデバイス500の一部として含むことも、または結合することもできる。バス510は、1つまたは複数の任意の複数の種類のバス構造を示しており、メモリーバスまたはメモリーコントローラー、周辺バス、アクセラレーテッド・グラフィックス・ポート、および任意の様々なバス構造を使用するプロセッサーまたはローカルバスを含む。バス510は、有線および/または無線のバスを含むことができる。
【0063】
メモリー/記憶域コンポーネント506は1つまたは複数のコンピューター記憶域メディアを示している。コンポーネント506は、揮発性のメディア(ランダムアクセスメモリー(RAM)など)および/または不揮発性のメディア(読み取り専用メモリー(ROM)、フラッシュメモリー、光ディスク、磁気ディスクなど)を含むことができる。コンポーネント506は、固定メディア(たとえば、RAM、ROM、固定ハードドライブなど)およびリムーバブルメディア(たとえば、フラッシュメモリードライブ、リムーバブルハードディスク、光ディスクなど)を含むことができる。
【0064】
本明細書に記述した技術はソフトウェアに実装して、処理装置(複数可)502によって命令を実行することができる。異なる命令を、処理装置502、処理装置502の様々なキャッシュメモリー、デバイス500の他のキャッシュメモリー(図示せず)、他のコンピューターで読み取り可能なメディアなど、コンピューティングデバイス500の異なるコンポーネントに格納できることを理解されたい。さらに、コンピューティングデバイス500において命令が格納される場所は、時間とともに変更できることを理解されたい。
【0065】
1つまたは複数の入出力デバイス508は、ユーザーがコマンドおよび情報をコンピューティングデバイス500に入力することを可能にし、また、情報がユーザーおよび/または他のコンポーネントもしくはデバイスに提示されることを可能にする。ユーザーに提示されるこの情報は、図1のソフトキーボード108または図3のソフトキーボード308を含むことができる。入力デバイスの例としては、キーボード、カーソル、またはポインター制御デバイス(たとえば、マウス、トラックパッド、サムスティック、ペンタブレットなど)、マイク、スキャナー、タッチスクリーン、タッチパッドなどが挙げられる。出力デバイスの例としては、ディスプレイデバイス(たとえば、モニターまたはプロジェクター)、スピーカー、プリンター、ネットワークカードなどが挙げられる。
【0066】
本明細書では、ソフトウェアまたはプログラムモジュールの一般的な内容に関して様々な技術について記述する。一般的に、ソフトウェアは、特定のタスクを実行したり、または特定の抽象データ型を実装したりするルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。これらのモジュールと技術の実装は、何らかの形式のコンピューターで読み取り可能なメディアに格納されるか、またはそれらの両端間で送信することができる。コンピューターで読み取り可能なメディアは、コンピューティングデバイスによってアクセスできる任意の利用可能なメディア(複数可)でよい。限定ではなく例として、コンピューターで読み取り可能なメディアは、「コンピューター記憶域メディア」および「通信メディア」を含むことができる。
【0067】
「コンピューター記憶域メディア」は、コンピューターで読み取り可能な命令、データ構造、プログラムモジュール、他のデータなどの情報を格納するための任意の方法またはテクノロジーを使って実装された揮発性および不揮発性、リムーバブルメディアおよびリムーバブルでないメディアを含む。コンピューター記憶域メディアは、RAM、ROM、EEPROM、フラッシュメモリーもしくは他のメモリーテクノロジー、CD−ROM、デジタルバーサタイルディスク(DVD)もしくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または希望する情報を格納するために使用可能で、かつコンピューターによってアクセス可能な任意の他のメディアを含むが、これらに制限するものではない。
【0068】
「通信メディア」は、典型的にはコンピューターで読み取り可能な命令、データ構造、プログラムモジュール、または、搬送波もしくは他の搬送メカニズムなど変調データ信号内の他のデータとして実施するものである。また、通信メディアは任意の情報送達メディアも含む。「変調データ信号」という用語は、信号内に情報が符号化されるように、その1つまたは複数の特性が設定または変更された信号を意味する。限定ではなく例として、通信媒体は、有線ネットワークまたは直接線接続のような有線メディア、ならびに音響、RF、赤外線、および他の無線メディアなどの無線メディアを含む。上記の任意の組み合わせも、コンピューターで読み取り可能なメディアの範囲に含まれる。
【0069】
一般的に、本明細書に記述した任意の機能または技術は、ソフトウェア、ファームウェア、ハードウェア(たとえば固定論理回路)、手動処理、またはこれらの実装の組み合わせを使用して実装することができる。本明細書で使用する「モジュール」、「機能」、および「ロジック」という用語は、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わせを一般的に示している。ソフトウェア実装の場合には、モジュール、機能、またはロジックは、プロセッサー(たとえばCPU(複数可))で実行されるときに指定されたタスクを実行するプログラムコードを示している。プログラムコードは、1つまたは複数のコンピューターで読み取り可能なメモリーに格納することができる。この詳細については、図5を参照して確認することができる。本明細書に記述したダイナミックソフトキーボード技術の特徴は、プラットフォームに依存していない。これが意味するには、この技術は、様々なプロセッサーを有する様々な商用のコンピューティングプラットフォームに実装できるということである。
【0070】
主題について、構造上の特徴および/または方法論的な処理に特有の言葉で記述してきたが、添付の特許請求の範囲に定義した主題は、上記の具体的な特徴または処理に制限されるものではないことを理解されたい。むしろ、上記の具体的な特徴および処理は、特許請求の範囲を実装するための例として示すものである。

【特許請求の範囲】
【請求項1】
複数の命令が1つまたは複数のコンピューター記憶域メディア(computer storage media)に格納された、当該1つまたは複数のコンピューター記憶域メディアであって、デバイス(device)の1つまたは複数のプロセッサーによって実行されたときに、前記1つまたは複数のプロセッサーに、
ソフトキーボードを介して(via)ユーザー入力を受信(receive)し(402)、前記ソフトキーボードは複数のキーを含み、
前記ソフトキーボードの現在の入力環境(input environment)を表す情報を取得(obtain)し(404)、かつ
少なくとも部分的に前記現在の入力環境に基づいて、前記複数のキーのうちどの1つまたは複数のキーを前記ユーザー入力によって選択する意図だった(intended to be)のかを決定(determine)する(406)、
ようにさせる、複数の命令がそこに格納された1つまたは複数のコンピューター記憶域メディア。
【請求項2】
前記ユーザー入力は、ユーザーによって選択された前記ソフトキーボードの1つまたは複数の位置を示す1組の1つまたは複数の座標(coordinates)によって表される(represented)、請求項1に記載の1つまたは複数のコンピューター記憶域メディア。
【請求項3】
前記現在の入力環境を表す前記情報は、前記デバイスの動作モードを表す情報を含む、請求項1に記載の1つまたは複数のコンピューター記憶域メディア。
【請求項4】
前記デバイスの前記動作モードを表す前記情報は、前記デバイスの地理的位置(geographical location)を含む、請求項3に記載の1つまたは複数のコンピューター記憶域メディア。
【請求項5】
前記現在の入力環境を表す前記情報は、言語固有の辞書(language-specific dictionary)を含む、請求項1に記載の1つまたは複数のコンピューター記憶域メディア。
【請求項6】
前記現在の入力環境を表す前記情報は、前記デバイスのユーザーによって一般的に(commonly)入力される単語(words)に関する情報を含む、請求項1に記載の1つまたは複数のコンピューター記憶域メディア。
【請求項7】
前記現在の入力環境を表す前記情報は、ユーザーがデータを入力できる1つまたは複数のフィールドのそれぞれに対して、前記フィールドを、前記フィールドに対して有効なデータの種類(types)にマッピングする情報を含む、請求項1に記載の1つまたは複数のコンピューター記憶域メディア。
【請求項8】
前記現在の入力環境を表す前記情報は、前記デバイスのユーザーによって使用されている言語を表す情報を含む、請求項1に記載の1つまたは複数のコンピューター記憶域メディア。
【請求項9】
前記現在の入力環境を表す前記情報は、部分的な入力(partial inputs)に基づいて、他の単語または句より可能性の高い(more likely)特定(particular)の単語(words)または句(phrases)を表す情報を含む、請求項1に記載の1つまたは複数のコンピューター記憶域メディア。
【請求項10】
前記現在の入力環境を表す前記情報は、
前記デバイスの動作モードを表す情報と、
言語固有の辞書と、
前記デバイスのユーザーによって一般的に入力される単語に関する情報と、
前記ユーザーがデータを入力できる1つまたは複数のフィールドのそれぞれに対して、前記フィールドを前記フィールドに対して有効なデータの種類にマッピングする情報と、
前記ユーザーによって使用されている言語を表す情報と、
部分的な入力に基づいて、他の単語または句より可能性が高い特定の単語または句を表す情報と、
を含む、請求項1に記載の1つまたは複数のコンピューター記憶域メディア。
【請求項11】
前記命令は、前記現在の入力環境を表す前記情報に少なくとも部分的に基づいて、前記1つまたは複数のプロセッサーに、前記ソフトキーボードを変更(alter)するようにさらにさせる、請求項1に記載の1つまたは複数のコンピューター記憶域メディア。
【請求項12】
前記命令は、前記1つまたは複数のプロセッサーに、前記複数のキーの1つまたは複数のキーの衝突目標(hit target)を変更するようにさらにさせる、請求項1に記載の1つまたは複数のコンピューター記憶域メディア。
【請求項13】
予測(predictive)キーボードエンジン(320)と、
前記予測キーボードエンジンに、ソフトキーボードの現在の入力環境を表す情報を提供するために結合された(coupled)1つまたは複数のモジュール(322、324、326、328、330、332)と、
を含むシステムであって、
前記予測キーボードエンジン(304)は、前記現在の入力環境を表す前記情報に少なくとも部分的に基づいて、
前記複数のキーの1つまたは複数の衝突目標を変更し、かつ
前記ソフトキーボードの複数のキーのうちどの1つまたは複数のキーが前記システムのユーザーによって選択されたかを決定するために前記変更された衝突目標を使用する
システム。
【請求項14】
前記予測キーボードエンジンは、人工知能システムを含む、請求項13に記載のシステム。
【請求項15】
前記予測キーボードエンジンは、前記現在の入力環境を表す前記情報に少なくとも部分的に基づいて、前記ソフトキーボードのレイアウトを変更(change)する方法を決定するようにさらに構成された、請求項13に記載のシステム。
【請求項16】
前記1つまたは複数のモジュールは、
前記システムの動作モードを表す情報を提供する動作モード検出(detection)モジュールと、
前記システムのユーザーによって一般的に(commonly)入力される単語(words)に関する情報を提供するユーザー固有の辞書(lexica)モジュールと、
を含む、請求項13に記載のシステム。
【請求項17】
デバイスに実装される方法であって、
前記デバイスのユーザーによって選択されたソフトキーボードの1つまたは複数の位置を示す1組の1つまたは複数の座標を受信(receiving)するステップであって、前記ソフトキーボードは複数(multiple)のキーを有し、前記複数のキーのそれぞれは、対応する衝突目標(hit target)を有するステップ(402)と、
前記1組の1つまたは複数の座標および前記ソフトキーボードの現在の入力環境を使用する衝突目標ロジックの両方に少なくとも一部分的には基づいて、前記複数のキーのどの1つまたは複数が前記ユーザーによって選択されたかを決定するステップ(406)と、
を含む方法。
【請求項18】
前記現在の入力環境に少なくとも部分的に基づいて、どの文字(characters)、数値(numbers)、または記号(symbols)がどの前記複数のキーに対応(corresponding)するかを変更(changing)することをさらに含む、請求項17に記載の方法。
【請求項19】
前記現在の入力環境は、
前記デバイスのユーザーによって一般的に入力される単語(words)に関する情報と、
前記ユーザーがデータを入力できる1つまたは複数のフィールドのそれぞれに対して、前記フィールドを、前記フィールドに対して有効なデータの種類にマッピングする情報と、
を含む、請求項17に記載の方法。
【請求項20】
前記現在の入力環境は、
前記ユーザーによって使用されている言語を表す情報と、
部分的な入力に基づいて他の単語または句より可能性の高い特定の単語または句を表す情報と、
を含む、請求項17に記載の方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公表番号】特表2011−511370(P2011−511370A)
【公表日】平成23年4月7日(2011.4.7)
【国際特許分類】
【出願番号】特願2010−545046(P2010−545046)
【出願日】平成21年1月9日(2009.1.9)
【国際出願番号】PCT/US2009/030539
【国際公開番号】WO2009/099704
【国際公開日】平成21年8月13日(2009.8.13)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】