IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ グーグル インコーポレイテッドの特許一覧

特許7438238動的空間モデルに基づく仮想キーボードエラー訂正
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-15
(45)【発行日】2024-02-26
(54)【発明の名称】動的空間モデルに基づく仮想キーボードエラー訂正
(51)【国際特許分類】
   G06F 3/04886 20220101AFI20240216BHJP
   G06F 3/023 20060101ALI20240216BHJP
   G06F 40/216 20200101ALI20240216BHJP
【FI】
G06F3/04886
G06F3/023 460
G06F40/216
【請求項の数】 21
(21)【出願番号】P 2021560740
(86)(22)【出願日】2020-12-11
(65)【公表番号】
(43)【公表日】2023-01-19
(86)【国際出願番号】 US2020064545
(87)【国際公開番号】W WO2022086573
(87)【国際公開日】2022-04-28
【審査請求日】2021-11-16
(31)【優先権主張番号】17/079,492
(32)【優先日】2020-10-25
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】リウ,シュ
(72)【発明者】
【氏名】ヂャイ,シュウミン
(72)【発明者】
【氏名】ピットマン,エイドリアン
(72)【発明者】
【氏名】ダウ,ビリー
【審査官】菅原 浩二
(56)【参考文献】
【文献】特開2009-252076(JP,A)
【文献】特開2009-245031(JP,A)
【文献】特開2014-010688(JP,A)
【文献】特開2000-066817(JP,A)
【文献】特開2014-192687(JP,A)
【文献】特開2011-150489(JP,A)
【文献】特開2009-003704(JP,A)
【文献】特開2012-248153(JP,A)
【文献】米国特許出願公開第2020/0081974(US,A1)
【文献】国際公開第2010/035574(WO,A1)
【文献】特表2014-517602(JP,A)
【文献】特開2004-341813(JP,A)
【文献】特表2008-539476(JP,A)
【文献】萩谷 俊幸 他,第74回(平成24年)全国大会講演論文集(4) インタフェース コンピュータと人間社会,日本,一般社団法人情報処理学会,2012年03月06日,第4-13~4-14頁
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/048-3/04895
G06F 3/023
G06F 40/216
(57)【特許請求の範囲】
【請求項1】
コンピュータによって実現される方法であって、
仮想キーボード上の位置におけるユーザによるタッチ入力を検出することと、
空間モデルを適用して、前記仮想キーボードの1つ以上の第1の候補キーに前記タッチ入力をマッピングすることとを備え、前記空間モデルを適用して、前記仮想キーボードの前記1つ以上の第1の候補キーに前記タッチ入力をマッピングすることは、
キー中心付近の以前のタッチ入力のヒートマップに基づいてグローバルキー中心オフセットを前記タッチ入力に適用することと、
1つ以上のキーについて訂正するためにキーレベル訂正を前記タッチ入力に適用することと、
前記グローバルキー中心オフセットと前記キーレベル訂正とに基づいて、前記1つ以上の第1の候補キーに前記タッチ入力をマッピングすることとによって行なわれ、前記方法は、さらに、
言語モデルを適用して、前記仮想キーボードの1つ以上の第2の候補キーに前記タッチ入力をマッピングすることを備え、前記言語モデルは、前記タッチ入力の前記位置を1つ以上の次の予測キーと比較することに基づいて、前記1つ以上の第2の候補キーに前記タッチ入力をマッピングし、前記方法は、さらに、
前記タッチ入力で示されるような前記1つ以上の第1のおよび第2の候補キーのうちの特定のキーを選択することを備える、方法。
【請求項2】
前記空間モデルは、前記キー中心付近の以前のタッチ入力の前記ヒートマップに基づく第1のガウス分布を用いて、前記グローバルキー中心オフセットを求める、請求項1に記載の方法。
【請求項3】
前記キーレベル訂正を適用することは、第2のガウス分布に基づいて、前記タッチ入力にキーレベル中心オフセットを適用することをさらに備え、前記空間モデルは、さらに前記キーレベル中心オフセットに基づいて前記タッチ入力をマッピングする、請求項2に記載の方法。
【請求項4】
前記空間モデルは、キーボードレイアウト内のすべてのキーが1つのパラメータを共有するグローバルレベル訂正と、各キーがそれ自体のガウスパラメータを有する前記キーレベル訂正とを提供する、請求項1~3のいずれか1項に記載の方法。
【請求項5】
前記ヒートマップに基づいて、前記仮想キーボードの少なくとも一部の外観を調整することをさらに備える、請求項1~4のいずれか1項に記載の方法。
【請求項6】
前記仮想キーボードの前記少なくとも一部の前記外観を調整することは、スペースバーの前記外観を調整して、前記スペースバーの少なくとも上または下のスペースを拡張することを含む、請求項5に記載の方法。
【請求項7】
前記特定のキーに対応する文字を含む1つ以上の単語を判断することと、
前記1つ以上の単語を修正して、前記言語モデルに基づいてスペースを追加または削除することとをさらに備える、請求項1~6のいずれか1項に記載の方法。
【請求項8】
前記ヒートマップを更新して、所定量の時間よりも古い以前のタッチを破棄することをさらに備える、請求項1~7のいずれか1項に記載の方法。
【請求項9】
前記タッチ入力を提供するユーザのアイデンティティを判断することをさらに備え、前記アイデンティティは、前記ユーザによって提供される認証入力に基づいて判断され、前記方法は、さらに、
前記ユーザに対応する前記ヒートマップを検索することを備える、請求項1~8のいずれか1項に記載の方法。
【請求項10】
コンピューティングデバイスであって、
プロセッサと、
前記プロセッサに連結され、前記プロセッサによって実行されると、前記プロセッサに動作を行わせる命令を格納したメモリとを備え、前記動作は、
仮想キーボード上の位置におけるユーザによるタッチ入力を検出することと、
空間モデルを適用して、前記仮想キーボードの1つ以上の第1の候補キーに前記タッチ入力をマッピングすることとを含み、前記空間モデルを適用して、前記仮想キーボードの前記1つ以上の第1の候補キーに前記タッチ入力をマッピングすることは、
キー中心付近の以前のタッチ入力のヒートマップに基づいてグローバルキー中心オフセットを前記タッチ入力に適用することと、
1つ以上のキーについて訂正するためにキーレベル訂正を前記タッチ入力に適用することと、
前記グローバルキー中心オフセットと前記キーレベル訂正とに基づいて、前記1つ以上の第1の候補キーに前記タッチ入力をマッピングすることとによって行なわれ、前記動作は、さらに、
言語モデルを適用して、前記仮想キーボードの1つ以上の第2の候補キーに前記タッチ入力をマッピングすることを含み、前記言語モデルは、前記タッチ入力の前記位置を1つ以上の次の予測キーと比較することに基づいて、前記1つ以上の第2の候補キーに前記タッチ入力をマッピングし、前記動作は、さらに、
前記タッチ入力で示されるような前記1つ以上の第1のおよび第2の候補キーのうちの特定のキーを選択することを含む、コンピューティングデバイス。
【請求項11】
前記空間モデルは、前記キー中心付近の以前のタッチ入力の前記ヒートマップに基づく第1のガウス分布を用いて、前記グローバルキー中心オフセットを求める、請求項10に記載のコンピューティングデバイス。
【請求項12】
前記キーレベル訂正はさらに、第2のガウス分布に基づいて前記タッチ入力にキーレベル中心オフセットを適用することを含み、前記空間モデルは、さらに前記キーレベル中心オフセットに基づいて前記タッチ入力をマッピングする、請求項11に記載のコンピューティングデバイス。
【請求項13】
前記空間モデルは、キーボードレイアウト内のすべてのキーが1つのパラメータを共有するグローバルレベル訂正と、各キーがそれ自体のガウスパラメータを有するキーレベル訂正とを提供する、請求項10~12のいずれか1項に記載のコンピューティングデバイス。
【請求項14】
前記動作はさらに、前記ヒートマップに基づいて、前記仮想キーボードの少なくとも一部の外観を調整することを含む、請求項10~13のいずれか1項に記載のコンピューティングデバイス。
【請求項15】
前記仮想キーボードの前記少なくとも一部の前記外観を調整することは、スペースバーの前記外観を調整して、前記スペースバーの少なくとも上または下のスペースを拡張することを含む、請求項14に記載のコンピューティングデバイス。
【請求項16】
1つ以上のコンピュータによって実行されると、前記1つ以上のコンピュータに動作を行わせる命令を格納した非一時的コンピュータ読取可能媒体であって、前記動作は、
仮想キーボード上の位置におけるユーザによるタッチ入力を検出することと、
空間モデルを適用して、前記仮想キーボードの1つ以上の第1の候補キーに前記タッチ入力をマッピングすることとを含み、前記空間モデルを適用して、前記仮想キーボードの前記1つ以上の第1の候補キーに前記タッチ入力をマッピングすることは、
キー中心付近の以前のタッチ入力のヒートマップに基づいてグローバルキー中心オフセットを前記タッチ入力に適用することと、
1つ以上のキーについて訂正するためにキーレベル訂正を前記タッチ入力に適用することと、
前記グローバルキー中心オフセットと前記キーレベル訂正とに基づいて、前記1つ以上の第1の候補キーに前記タッチ入力をマッピングすることとによって行なわれ、前記動作は、さらに、
言語モデルを適用して、前記仮想キーボードの1つ以上の第2の候補キーに前記タッチ入力をマッピングすることを含み、前記言語モデルは、前記タッチ入力の前記位置を1つ以上の次の予測キーと比較することに基づいて、前記1つ以上の第2の候補キーに前記タッチ入力をマッピングし、前記動作は、さらに、
前記タッチ入力で示されるような前記1つ以上の第1のおよび第2の候補キーのうちの特定のキーを選択することを含む、非一時的コンピュータ読取可能媒体。
【請求項17】
前記空間モデルは、前記キー中心付近の以前のタッチ入力の前記ヒートマップに基づく第1のガウス分布を用いて、前記グローバルキー中心オフセットを求め、前記空間モデルは、前記グローバルキー中心オフセットに基づいて前記タッチ入力をマッピングする、請求項16に記載の非一時的コンピュータ読取可能媒体。
【請求項18】
前記キーレベル訂正はさらに、第2のガウス分布に基づいて前記タッチ入力にキーレベル中心オフセットを適用することを含み、前記空間モデルは、さらに前記キーレベル中心オフセットに基づいて前記タッチ入力をマッピングする、請求項17に記載の非一時的コンピュータ読取可能媒体。
【請求項19】
前記動作はさらに、前記ヒートマップに基づいて、前記仮想キーボードの少なくとも一部の外観を調整することを含む、請求項16~18のいずれか1項に記載の非一時的コンピュータ読取可能媒体。
【請求項20】
前記仮想キーボードの前記少なくとも一部の前記外観を調整することは、スペースバーの前記外観を調整して、前記スペースバーの少なくとも上または下のスペースを拡張することを含む、請求項19に記載の非一時的コンピュータ読取可能媒体。
【請求項21】
コンピューティング装置によって実行されると、前記コンピューティング装置に請求項1~9のいずれか1項に記載の方法を実行させる命令を含む、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2020年10月25日に出願された、「VIRTUAL KEYBOARD ERROR CORRECTION BASED ON A DYNAMIC SPATIAL MODEL(動的空間モデルに基づく仮想キーボードエラー訂正)」と題された米国特許出願第17/079,492号の利益を主張し、その全体が本明細書において参照によって援用される。
【背景技術】
【0002】
背景
モバイルデバイスの普及とともに、仮想キーボードの使用が一般的になっている。しかしながら、仮想キーボードは、仮想キーボード上の予想されるユーザの位置と実際にタッピングされる位置との間の差によって、使用がイライラすることがある。たとえば、タイピングミスの種類についての近年の研究によると、英語の仮想キーボードにおけるタイピングミスの37%はスペースバーが省略されることによるものであり、タイピングミスの60%がスペースバーに関するもの、たとえば、仮想キーボードのスペースバーと最後の行におけるC、V、BおよびNの文字との間の混同によるものであった。これは、ユーザの指の幅が広いこと、十分正確なタッチを用いずに片手のみでタッピングすること、タッチスクリーンまたはジェスチャベースのキーストローク入力の内在する不正確さなどに起因する場合がある。
【0003】
本明細書に記載される背景技術の説明は、本開示の文脈を概して提示することを目的としている。本発明者らの研究は、この背景技術の項で説明される範囲で、出願時に他の態様では先行技術とみなされないであろう説明の態様とならんで、本開示に対する先行技術として明示的にも暗黙的にも認められるものではない。
【発明の概要】
【0004】
概要
方法は、仮想キーボード上の位置におけるユーザによるタッチ入力を検出することと、空間モデルを適用して、仮想キーボードの1つ以上の第1の候補キーにタッチ入力をマッピングすることとを備えてもよく、空間モデルは、以前のタッチ入力のヒートマップに基づいて、1つ以上の第1の候補キーにタッチ入力をマッピングし、方法はさらに、言語モデルを適用して、仮想キーボードの1つ以上の第2の候補キーにタッチ入力をマッピングすることを備えてもよく、言語モデルは、タッチ入力の位置を1つ以上の次の予測キーと比較することに基づいて、1つ以上の第2の候補キーにタッチ入力をマッピングし、方法はさらに、タッチ入力で示されるような1つ以上の第1のおよび第2の候補キーのうちの特定のキーを選択することを備えてもよい。
【0005】
いくつかの実施形態では、空間モデルは、キー中心付近の以前のタッチ入力のヒートマップに基づく第1のガウス分布を用いて、グローバルキー中心オフセットを求め、空間モデルは、グローバルキー中心オフセットに基づいてタッチ入力をマッピングする。いくつかの実施形態では、方法はさらに、第2のガウス分布に基づいてタッチ入力にキーレベル中心オフセットを適用することを備え、空間モデルは、キーレベル中心オフセットに基づいてタッチ入力をマッピングする。いくつかの実施形態では、空間モデルは、キーボードレイアウト内のすべてのキーが1つのパラメータを共有するグローバルレベル訂正、同じクラスタ内のすべてのキーが1つのパラメータを共有するクラスタレベル訂正、または各キーがそれ自体のガウスパラメータを有するキーレベル訂正のうちの1つ以上を提供する。いくつかの実施形態では、方法はさらに、ヒートマップに基づいて、仮想キーボードの少なくとも一部の外観を調整することを備える。いくつかの実施形態では、仮想キーボードの少なくとも一部の外観を調整することは、スペースバーの外観を調整して、スペースバーの少なくとも上または下のスペースを拡張することを含む。いくつかの実施形態では、方法はさらに、特定のキーに対応する文字を含む1つ以上の単語を判断することと、1つ以上の単語を修正して、言語モデルに基づいてスペースを追加または削除することとを備える。いくつかの実施形態では、方法はさらに、ヒートマップを更新して、所定量の時間よりも古い以前のタッチを破棄することを備える。いくつかの実施形態では、方法はさらに、タッチ入力を提供するユーザのアイデンティティを判断することを備え、アイデンティティは、ユーザによって提供される認証入力に基づいて判断され、方法はさらに、ユーザに対応するヒートマップを検索することを備える。
【0006】
コンピューティングデバイスは、プロセッサと、プロセッサによって実行されるとプロセッサに動作を行わせる命令を格納したメモリとを備えてもよく、動作は、仮想キーボード上の位置におけるユーザによるタッチ入力を検出することと、空間モデルを適用して、仮想キーボードの1つ以上の第1の候補キーにタッチ入力をマッピングすることとを含み、空間モデルは、以前のタッチ入力のヒートマップに基づいて、1つ以上の第1の候補キーにタッチ入力をマッピングし、動作はさらに、言語モデルを適用して、仮想キーボードの1つ以上の第2の候補キーにタッチ入力をマッピングすることを含み、言語モデルは、タッチ入力の位置を1つ以上の次の予測キーと比較することに基づいて、1つ以上の第2の候補キーにタッチ入力をマッピングし、動作はさらに、タッチ入力で示されるような1つ以上の第1のおよび第2の候補キーのうちの特定のキーを選択することを含む。
【0007】
いくつかの実施形態では、空間モデルは、キー中心付近の以前のタッチ入力のヒートマップに基づく第1のガウス分布を用いて、グローバルキー中心オフセットを求め、空間モデルは、グローバルキー中心オフセットに基づいてタッチ入力をマッピングする。いくつかの実施形態では、動作はさらに、第2のガウス分布に基づいてタッチ入力にキーレベル中心オフセットを適用することを含み、空間モデルは、さらにキーレベル中心オフセットに基づいてタッチ入力をマッピングする。いくつかの実施形態では、空間モデルは、キーボードレイアウト内のすべてのキーが1つのパラメータを共有するグローバルレベル訂正、同じクラスタ内のすべてのキーが1つのパラメータを共有するクラスタレベル訂正、または各キーがそれ自体のガウスパラメータを有するキーレベル訂正のうちの1つ以上を提供する。いくつかの実施形態では、動作はさらに、ヒートマップに基づいて、仮想キーボードの少なくとも一部の外観を調整することを含む。いくつかの実施形態では、仮想キーボードの少なくとも一部の外観を調整することは、スペースバーの外観を調整して、スペースバーの少なくとも上または下のスペースを拡張することを含む。
【0008】
1つ以上のコンピュータによって実行されると、1つ以上のコンピュータに動作を行わせる命令を格納した非一時的コンピュータ読取可能媒体であって、動作は、仮想キーボード上の位置におけるユーザによるタッチ入力を検出することと、空間モデルを適用して、仮想キーボードの1つ以上の第1の候補キーにタッチ入力をマッピングすることとを含み、空間モデルは、以前のタッチ入力のヒートマップに基づいて、1つ以上の第1の候補キーにタッチ入力をマッピングし、動作はさらに、言語モデルを適用して、仮想キーボードの1つ以上の第2の候補キーにタッチ入力をマッピングすることを含み、言語モデルは、タッチ入力の位置を1つ以上の次の予測キーと比較することに基づいて、1つ以上の第2の候補キーにタッチ入力をマッピングすることを含み、動作はさらに、タッチ入力で示されるような1つ以上の第1のおよび第2の候補キーのうちの特定のキーを選択することを含む。
【0009】
いくつかの実施形態では、空間モデルは、キー中心付近の以前のタッチ入力のヒートマップに基づく第1のガウス分布を用いて、グローバルキー中心オフセットを求め、空間モデルは、グローバルキー中心オフセットに基づいてタッチ入力をマッピングする。いくつかの実施形態では、動作はさらに、第2のガウス分布に基づいてタッチ入力にキーレベル中心オフセットを適用することを含み、空間モデルは、さらにキーレベル中心オフセットに基づいてタッチ入力をマッピングする。いくつかの実施形態では、動作はさらに、ヒートマップに基づいて、仮想キーボードの少なくとも一部の外観を調整することを含む。いくつかの実施形態では、仮想キーボードの少なくとも一部の外観を調整することは、スペースバーの外観を調整して、スペースバーの少なくとも上または下のスペースを拡張することを含む。
【0010】
本特許または本出願ファイルは、少なくとも1つのカラー図面を含む。カラー図面を有する本特許または本特許出願公報のコピーは、請求および必要な料金の支払いに応じて庁から提供される。
【図面の簡単な説明】
【0011】
図1】本明細書で説明するいくつかの実施形態に係る、ネットワーク環境の例を示すブロック図である。
図2】本明細書で説明するいくつかの実施形態に係る、コンピューティングデバイスの例を示すブロック図である。
図3A】本明細書で説明するいくつかの実施形態に係る、仮想キーボード上のタッチ入力から生成されるヒートマップの例を示す図である。
図3B】本明細書で説明するいくつかの実施形態に係る、図3Aに示すヒートマップに基づいて求められるキーごとのキー中心オフセットの例を示す図である。
図4】本明細書で説明するいくつかの実施形態に係る、キー訂正を仮想キーボードのキーに適用するための方法の例を示すフローチャートである。
図5A】仮想キーボード上のキー中心とユーザのタッチ入力との間のx寸法の差およびy寸法の差の例を示す図である。
図5B】仮想キーボード上のスペースバーについてのタッチ入力の例を示す図である。
図5C】本明細書で説明するいくつかの実施形態に係る、スペースバーに関するタッチ入力についてのx寸法の変化およびy寸法の変化の計算の例を示す図である。
図5D】本明細書で説明するいくつかの実施形態に係る、スペースバーにマッピングされるタッチ入力の数を増やすために空間モデルによって使用されるガウス分布の他の例を示す図である。
図6A】本明細書で説明するいくつかの実施形態に係る、スペースバーの位置を修正する2つの異なる方法の例を示す図である。
図6B】スペースバーについてのユーザのタッチ入力が傾斜しているとヒートマップが示す、仮想キーボードの例を示す図である。
図6C】本明細書で説明するいくつかの実施形態に係る、文字キーとファンクションキーとの間の仮想的な区別を有する仮想キーボードの例を示す図である。
図6D】本明細書で説明するいくつかの実施形態に係る、スペースバーキーが隣接するキーから下方向にシフトしずれている仮想キーボードの例を示す図である。
図6E】本明細書で説明するいくつかの実施形態に係る、スペースバーキーの代わりにブランクスペースを有する仮想キーボードの例を示す図である。
図6F】本明細書で説明するいくつかの実施形態に係る、スペースバーキーの上および下の分離を用いる例を示す図である。
図7】本明細書で説明するいくつかの実施形態に係る、仮想キーボード上で受信されるタッチ入力に基づいて特定のキーを選択する方法の例を示すフローチャートである。
【発明を実施するための形態】
【0012】
詳細な説明
いくつかの実施形態では、キーボードアプリケーション(たとえば、デバイスオペレーティングシステムの一部または別個のアプリケーションでもよい)が、仮想キーボード上の位置におけるユーザによるタッチ入力を検出する。たとえば、ユーザは、「mor」を入力した後に、「b」、「n」、およびスペースバー付近の仮想キーボード上の地点をタッチする。キーボードアプリケーションは、動的空間モデルを適用して、仮想キーボードの1つ以上の第1の候補キーにタッチ入力をマッピングする。この例では、空間モデルは、ユーザによる以前のタッチ入力のヒートマップに基づいて、1つ以上の第1の候補キー(たとえば、「b」、「n」、およびスペースバー)にタッチ入力をマッピングする。キーボードアプリケーションは、言語モデルを適用して、仮想キーボードの1つ以上の第2の候補キーにタッチ入力をマッピングする。たとえば、言語モデルによると、通常起こり得る「morning」などの単語に対応するため、文字が「n」と入力される確率は50%であり、そう多くは起こらない「moral」または「moratorium」に対応するため、入力される文字が「a」である確率は20%であり、さらに一般的ではない「morbid」に対応するため、文字が「b」と入力される確率は10%であり、「mor」は適切な単語ではないため(英語では、および、ユーザ固有の辞書がある場合そのような辞書では)、文字が空白(スペースバーキーの選択に対応する)である確率は0%である。キーボードアプリケーションは、タッチ入力によって示されるような1つ以上の第1のおよび第2の候補キーのうち特定のキーを選択する。たとえばタッチ位置およびヒートマップに基づいて、タッチ入力が「n」キーに対応する確率が70%であると空間モデルが示し、かつ、タッチ入力が単語予測に基づいて「n」キーに対応する確率が50%であると言語モデルが示す場合、キーボードアプリケーションは、組合わせ結果に基づいて「n」を選択する。このような組合わせ結果を用いることによって、ユーザのタイピングミスの減少、およびより早いデータ入力が可能になる。それゆえ、人間とコンピュータとの間のインターフェイスが向上される。
【0013】
いくつかの実施形態では、キーボードアプリケーションは、ヒートマップに基づいて仮想キーボードの一部を修正する。たとえば、以前の入力およびタッチ入力がデフォルトのキー中心より上にあるとキーボードアプリケーションが判断する場合、キーボードアプリケーションは、仮想キーボード(たとえば、スペースバーおよび/または他のキー)の一部の表示をより高くなるように移動させ得る。他の例では、キーボードアプリケーションは表示を移動させなくてもよく、代わりに、スペースバーの上の所定の数の画素を受取ったタッチがスペースバーに対応していると解釈してもよい。
【0014】
ネットワーク環境100
図1は、ネットワーク環境100の例を示すブロック図である。いくつかの実施形態では、ネットワーク環境100は、1つ以上のモバイルデバイス、たとえば、モバイルデバイス115a、115nを含み得る。モバイルデバイス115aは、キーボードアプリケーション103を含み得る。キーボードアプリケーション103は、ユーザからタッチ入力を受信し、空間モデルおよび言語モデルに基づいて、仮想キーボードで表示するために、特定のキーを選択してもよい。
【0015】
モバイルデバイス115は、ネットワーク105などのネットワークと通信可能である。ネットワーク105は、インターネット、ローカルエリアネットワーク(LAN)、無線ネットワーク、スイッチまたはハブ接続などのうちの1つ以上を含む、任意の種類の通信ネットワークでもよい。いくつかの実施形態では、ネットワーク105は、たとえばピアツーピア無線プロトコル(たとえば、Bluetooth(登録商標)、WiFi-Direct、Ultrawidebandなど)などを用いた、デバイス間のピアツーピア通信を含み得る。2つのモバイルデバイス115aおよび115間のピアツーピア通信の一例が、矢印132によって示されている。
【0016】
また、ネットワーク環境100は、1つ以上のサーバシステム、たとえば図1の例におけるサーバシステム101を含み得る。サーバシステム101は、データベース199または他の記憶デバイスを含み得る。いくつかの実施形態では、サーバシステム101は、キーボードアプリケーション103についてのアップデートをモバイルデバイス115に送ってもよい。
【0017】
図示を簡単にするために、図1は、サーバシステム101およびデータベース199について1つのブロックを示し、モバイルデバイス115aおよび115nについて2つのブロックを示す。サーバブロック101および199は、複数のシステム、サーバデバイス、およびネットワークデータベースを表してもよく、ブロックは、図示されているものとは異なる構成で設けることが可能である。たとえば、サーバシステム101は、ネットワーク105を介して他のサーバシステムと通信可能な複数のサーバシステムを表し得る。いくつかの実施形態では、サーバシステム101は、たとえばクラウドホスティングサーバを含み得る。いくつかの実施形態では、データベース199および/または他の記憶装置は、サーバシステム101と分離されるサーバシステムブロック(複数可)に設けることが可能であり、ネットワーク105を介してサーバシステム101および他のサーバシステムと通信可能である。
【0018】
任意の数のモバイルデバイス115が設けられてもよい。各モバイルデバイス115は、仮想キーボードを用いる任意の種類の電子デバイス、たとえば、ポータブルデバイス、携帯電話、スマートフォン、タブレットコンピュータ、カメラ、スマートディスプレイ、ウェアラブルデバイス(たとえば、ディスプレイ眼鏡またはゴーグル、リストウォッチ、ヘッドセット、アームバンド、宝石など)、パーソナルデジタルアシスタント(PDA)、メディアプレーヤ、ゲームデバイスなどであり得る。また、モバイルデバイス115は、データベース199に類似のローカルデータベースまたは他の記憶装置を含んでもよい。いくつかの実施形態では、ネットワーク環境100は、図示されたコンポーネントをすべて有していなくてもよい、および/または、本明細書で説明するものの代わりに、またはこれらに加えて、他の種類の要素を含む他の要素を有してもよい。
【0019】
様々な実施形態では、ユーザ125は、それぞれのモバイルデバイス115a、115nを用いて、サーバシステム101と、および/または互いに通信してもよい。いくつかの例では、ユーザ125は、それぞれのモバイルデバイス115上で実行されるキーボードアプリケーション103を介して互いに、および/または、ネットワークサービス、たとえば、サーバシステム101上で実現されるメッセージングアプリケーション、ソーシャルネットワークサービス、画像ホスティングサービス、または他の種類のネットワークサービスを介して、サーバシステム101とインタラクトしてもよい。たとえば、それぞれのモバイルデバイス115a、115nは、1つ以上のサーバシステム、たとえば、サーバシステム101に対するデータ通信を行ってもよい。
【0020】
いくつかの実施形態では、サーバシステム101は、各モバイルデバイス115が、サーバシステム101および/またはネットワークサービスにアップロードされる通信コンテンツまたは共有コンテンツを受信できるように、キーボードアプリケーション103アップデートなどの適切なデータを、モバイルデバイス115a、115nに提供してもよい。
【0021】
コンピューティングデバイス200の例
図2は、本明細書で説明する1つ以上の特徴を実現するために使用可能なコンピューティングデバイス200の例を示すブロック図である。一例では、コンピューティングデバイス200は、キーボードアプリケーション103を実現するために使用されるモバイルデバイス115でもよい。コンピューティングデバイス200は、上述のような任意の好適なコンピュータシステム、サーバ、または他の電子もしくはハードウェアデバイスであり得る。
【0022】
本明細書で説明する1つ以上の方法は、任意の種類のコンピューティングデバイスで実行可能なスタンドアロンプログラム、ウェブブラウザで実行されるプログラム、モバイルコンピューティングデバイス(たとえば、携帯電話、スマートフォン、スマートディスプレイ、タブレットコンピュータ、ウェアラブルデバイス(リストウォッチ、アームバンド、宝石、ヘッドウェア、仮想現実ゴーグルまたは眼鏡、拡張現実ゴーグルまたは眼鏡、ヘッドマウントディスプレイなど)、ラップトップコンピュータなど)で実行されるモバイルアプリケーション(「アプリ」)で実行可能である。主な例では、全ての計算は、モバイルコンピューティングデバイス上のモバイルアプリケーション(および/または他のアプリケーション)内で行われる。しかしながら、クライアント/サーバアーキテクチャを用いることも可能である、たとえば、モバイルコンピューティングデバイスは、ユーザ入力データをサーバデバイスに送り、出力用に(たとえば、表示用に)最終的な出力データをサーバから受信する。他の例では、モバイルコンピューティングデバイスと1つ以上のサーバデバイスとの間で計算が分割されてもよい。
【0023】
いくつかの実施形態では、コンピューティングデバイス200は、プロセッサ202、メモリ204、入出力(I/O)インターフェイス206、ディスプレイデバイス208、およびデータベース210を含む。プロセッサ202、メモリ204、I/Oインターフェイス206、ディスプレイデバイス208、およびデータベース210は、バス220を介して連結されてもよい。
【0024】
プロセッサ202は、プログラムコードを実行し、かつ、コンピューティングデバイス200の基本的な動作を制御するための、1つ以上のプロセッサおよび/または処理回路であり得る。「プロセッサ」は、データ、信号または他の情報を処理する任意の好適なハードウェアシステム、メカニズムまたはコンポーネントを含む。プロセッサは、1つ以上のコア(たとえば、シングルコア、デュアルコア、もしくはマルチコア構成)を有する一般的な中央処理装置(CPU)、複数の処理ユニット(たとえば、マルチプロセッサ構成)、グラフィック処理ユニット(GPU)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、コンプレックスプログラマブルロジックデバイス(CPLD)、機能性を実現するための専用回路構成、ニューラルネットワークモデルベース処理を実現するための専用プロセッサ、ニューラル回路、行列計算(たとえば、行列乗算)用に最適化されたプロセッサを有するシステム、または他のシステムを含んでもよい。いくつかの実施形態では、プロセッサ202は、ニューラルネットワーク処理を実現する1つ以上のコプロセッサを含んでもよい。いくつかの実施形態では、プロセッサ202は、データを処理して確率的な出力を生成するプロセッサでもよい、たとえば、プロセッサ202によって生成される出力は、不正確でもよい、または、予想される出力からの範囲内で正確でもよい。処理は、特定の地理的な位置に限定される必要はない、または、時間的な制約を有する必要はない。たとえば、プロセッサは、バッチモードなどでリアルタイムにオフラインでその機能を行ってもよい。処理の一部は異なる時間に、異なる場所で、異なる(または同じ)処理システムによって行われてもよい。コンピュータは、メモリと通信している任意のプロセッサでもよい。
【0025】
メモリ204は典型的に、プロセッサ202によるアクセスのためにコンピューティングデバイス200内に設けられており、プロセッサまたはプロセッサのセットによる実行のための命令を格納するのに好適なランダムアクセスメモリ(RAM)、読出し専用メモリ(ROM)、電気的消去可能読出し専用メモリ(EEPROM)、フラッシュメモリなどの任意の好適なプロセッサ読出し可能記憶媒体でもよく、プロセッサ202とは別に位置してもよい、および/またはプロセッサ202と一体化されてもよい。メモリ204は、キーボードアプリケーション103を含む、プロセッサ202によってコンピューティングデバイス200上で実行されるソフトウェアを格納可能である。
【0026】
I/Oインターフェイス206は、コンピューティングデバイス200を他のシステムおよびデバイスとインターフェイス接続可能にする機能を提供し得る。インターフェイス接続されたデバイスは、コンピューティングデバイス200の一部として含まれてもよい、または、分離されてコンピューティングデバイス200と通信してもよい。たとえば、ネットワーク通信デバイス、記憶デバイス(たとえば、メモリおよび/またはデータベース199)ならびに入出力デバイスは、I/Oインターフェイス206を介して通信可能である。いくつかの実施形態では、I/Oインターフェイスは、入力デバイス(キーボード、ポインティングデバイス、タッチスクリーン、マイク、カメラ、スキャナ、センサなど)および/または出力デバイス(ディスプレイデバイス、スピーカデバイス、プリンタ、モータなど)などのインターフェイスデバイスに接続可能である。たとえば、ユーザがタッチ入力を提供すると、I/Oインターフェイス206は、データをキーボードアプリケーション103に送信する。
【0027】
I/Oインターフェイス206に接続可能なインターフェイス接続されたデバイスの例は、コンテンツ、たとえば、画像、ビデオ、および/または本明細書で説明するような出力アプリケーションのユーザインターフェイスを表示し、かつ、ユーザからタッチ(またはジェスチャ)入力を受信するために使用可能な1つ以上のディスプレイデバイス208を含み得る。たとえば、ディスプレイデバイス208は、オンスクリーン仮想キーボードを表示するために用いられてもよい。ディスプレイデバイス208は、タッチ検出能力(たとえば、タッチを検出可能な抵抗、容量、または他の回路構成を介して)を含んでもよい。たとえば、ディスプレイデバイス208は、ユーザがディスプレイデバイス208の特定領域、たとえばディスプレイデバイスの個々の画素、ディスプレイデバイスの画素のクラスタなどをタッチする、またはこれらの領域に指またはスタイラスを近接させると検出する。ディスプレイデバイス208は、ローカル接続(たとえば、表示バス)を介して、および/またはネットワーク化された接続を介してコンピューティングデバイス200に接続可能であり、任意の好適なディスプレイデバイスであり得る。ディスプレイデバイス208は、液晶ディスプレイ(LCD)、発光ダイオード(LED)、またはプラズマ表示画面、ブラウン管(CRT)、テレビ、モニタ、タッチスクリーン、3次元表示画面、または他の視覚ディスプレイデバイスなどの任意の好適なディスプレイデバイスであり得る。たとえば、ディスプレイデバイス208は、モバイルデバイスに設けられたフラット表示画面、眼鏡形状の要素もしくはヘッドセットデバイスに埋込まれた複数の表示画面、またはコンピュータデバイス用のモニタスクリーンであり得る。
【0028】
いくつかの実施形態では、ディスプレイデバイス208は、たとえば、タッチ性能がディスプレイデバイス208、たとえばタッチスクリーンディスプレイに一体化されると、入力デバイスとして直接作用し得る。いくつかの実施形態では、ディスプレイデバイス208とは別のタッチ認識層が、コンピューティングデバイス200に設けられてもよい。これらの実現例では、タッチ認識層はI/Oインターフェイス206の一部でもよく、たとえば、ディスプレイデバイス208が仮想キーボードもしくは他のコンテンツを表示する間にタッチ位置を検出してもよい。本明細書の目的で、コンピューティングデバイス200がハードウェアタッチ検出性能を含み、これによって、ユーザによって提供されるタッチ入力が検出され、ディスプレイデバイス208に表示される仮想キーボードの特定位置にマッピングされると推定される。
【0029】
データベース210は、キーボードアプリケーション103に関連するデータを格納する。たとえば、データベース210は、ユーザの以前のタッチのヒートマップ、ユーザ特有の個人辞書などを格納してもよい。いくつかの実施形態では、ヒートマップは、所定量の時間(たとえば、直近の24時間、直近の1週間、直近の1時間など)よりも古い以前のタッチを破棄するように更新される。
【0030】
キーボードアプリケーション103
キーボードアプリケーション103は、空間モジュール212、言語モジュール214、およびユーザインターフェイスモジュール216を含んでもよい。
【0031】
空間モジュール212は、動的空間モデルを適用して、仮想キーボードの1つ以上の候補キーにタッチ入力をマッピングする。いくつかの実施形態では、空間モジュール212は、仮想キーボードの1つ以上の候補キーにタッチ入力をマッピングするために、プロセッサ202によって実行可能な命令のセットを含む。いくつかの実施形態では、空間モジュール212は、コンピューティングデバイス200のメモリ204に格納され、プロセッサ202によってアクセスおよび実行可能であり得る。
【0032】
いくつかの実施形態では、空間モジュール212は、I/Oインターフェイス206および/またはディスプレイデバイス208を介して、ユーザからタッチ入力を受信する。空間モジュール212は、タッチ入力からヒートマップを生成してもよい。いくつかの実施形態では、空間モジュール212は、直近の24時間、直近の1週間などの固定時間に基づいて、ヒートマップを生成する。有利なことに、最近のヒートマップを維持することによって、ユーザがモバイルデバイスのケースまたはカバーを変更する、電話を異なる態様で握る、電話を異なる態様で持つ(たとえば、縦置きもしくは横置きの方向で)、手にけがをする、または他の態様では入力パターンを変更するときなどについて、ユーザのタッチ入力におけるパターンの変化を説明し得る。空間モジュール212は、データベース210にヒートマップを格納し得る。いくつかの実施形態では、ユーザによる以前のタッチ入力のヒートマップを生成するのにデータが不十分な場合、空間モジュール212は、デフォルトのヒートマップを出発点として用いてもよい。
【0033】
いくつかの実施形態では、複数のユーザは、同じモバイルデバイス115を用いてもよい。空間モジュール212は、モバイルデバイス115のために複数のヒートマップを生成し、特定のユーザに対応するヒートマップに基づいて、ユーザのためにヒートマップを検索してもよい。空間モジュール212は、生体認証データ(たとえば、指紋、カメラ識別など)、パスワード、パスパターンといった、ユーザによって提供される認証入力に基づいてタッチ入力を提供するユーザのアイデンティティを判断してもよい。認証入力は、ユーザによって具体的に実現される場合、認証目的のみで用いられ、タッチ入力の目的で用いられない。ユーザには、特定の種類の認証を有効または無効にするオプションが設けられる、たとえば、ユーザは、生体認証を完全に切ることが可能である。認証は、ローカルにオンデバイスで行われ、ユーザ識別可能なデータは他のデバイスに送信されない。
【0034】
いくつかの実施形態では、空間モジュール212は、ユーザによる以前のタッチ入力のヒートマップに基づいて、1つ以上の第1の候補キーにタッチ入力をマッピングする。たとえば、ユーザが一貫してキーの各々の上の中心をタップするとヒートマップが示す場合、空間モジュール212は、候補キーの中心(すなわち、デフォルトのキー中心)にタッチ入力をマッピングする。他の例では、ユーザが一貫して仮想キーボード上のキーの上を左側にタップするとヒートマップが示す場合、空間モジュール212は、タッチ入力の下で右側のキーに対応するようにタッチ入力をマッピングする。空間モジュール212は、ユーザがコンピューティングデバイス200にアクセスしていると識別されたことに基づいて、ユーザのためにヒートマップを検索してもよい。ヒートマップは、異なるキー、たとえば、(異なる手の異なる指でアクセスされることもある)仮想キーボードの左および右の部分についてキー中心からの異なるオフセット、異なる行についての異なるオフセット(たとえば、ユーザがデバイスを握り仮想キーボード上でタイプすると、ユーザの指から異なる距離になり得る)、または個々のキーについて異なるオフセットを示し得る。いくつかの実施形態では、空間モジュール212は、以下で説明するようなヒートマップに基づいて調整を行う。
【0035】
空間モジュール212は、ユーザ固有の実際のキー中心の位置、および場所間の差を求めるために、ユーザ固有の実際のキー中心の位置がデフォルトのキー中心の位置と異なる態様を特定するために用いられてもよい。たとえば、図3Aは、試験データ入力セッション中にボランティアのユーザから取得される、仮想キーボード上の以前のタッチ入力から生成されるヒートマップの図300の例を示す。この例では、タッチ入力データは、各々が50個の文を入力した50人のボランティアのユーザから取得された。図300は、仮想キーボード上の2,500個の文(約12,000個の単語)についての50人のユーザのタッチ入力のすべての分布を含む。灰色の点は、ユーザの実際のタッチ入力を表し、赤い点は、デフォルトのキー中心(すなわち、キーボードレイアウトからのキー中心)を表し、青い点は、ユーザのタッチ入力から計算されるキー中心を表し、緑の点は、キー訂正を引起こした(誤ったキーが仮想キーボードによって解釈されたため、ユーザは訂正を行った)タッチ入力を表す。図示するように、緑の点はキーの端付近で生じる。図3Aは、特に仮想キーボードの第1の行のキーについて、このデータセットにおけるボランティアのユーザが、デフォルトのキー中心よりも低くタッピングする傾向があったことを示す。
【0036】
なお、図3Aは、複数のボランティアのユーザから取得される集合体データから生成された特定の種類のヒートマップを示すが、異なるユーザは異なるタッチパターン、および異なるキーをタッチする対応するオフセット点を有することがある。実際の使用では、さらに以下で説明するように、空間モジュール212は、ユーザがオンスクリーン仮想キーボードを用いるとユーザごとにオンデバイスでローカルにヒートマップを生成することが可能であり、必要な場合に修正アクティビティに携わることが可能である。時間と共に、ユーザが仮想キーボードを用いてテキストを入力するにつれて、ヒートマップはタッチ入力のユーザのパターンを表す、たとえば、ユーザは「s」キーとの境界により近接する「a」キーをタッチする、ユーザは「c」「v」「b」および「n」キーとの境界により近接して、上部に向かってスペースバーをタッチする、などを表す。
【0037】
図3Bは、本明細書で説明するいくつかの実施形態に係る、図3Aに示すヒートマップに基づいて求められる、キーごとの(単位画素における)キーの幾何学的中心に対するタッチ入力間の距離として測定されるキー中心オフセットを示す図350の例である。この例では、x_軸についてのオフセット(x_オフセット)は青で示され、y_軸についてのオフセット(y_オフセット)は赤で示される。最も左側のデータ点は、スペースバーについてのオフセットである。隣は、英語のアルファベットについてのキーである。図は、特定の文字が他よりも著しいオフセットを有すると示す。たとえば、文字「j」は、最も高いx_オフセットおよびy_オフセットを有する。
【0038】
いくつかの実施形態では、空間モジュール212は、仮想キーボードのデフォルトのキー中心とユーザのタッチ入力によって示される実際のキー中心との間のキーオフセットを求め、かつ、キーオフセットに基づいて動的修正を行うことによって、動的空間モデルを生成する。いくつかの実施形態では、空間モデルはガウス分布を用いる。いくつかの実施形態では、空間モジュール212は、異なるキーボードレイアウトについて異なる空間モデルを維持する。
【0039】
以下の定義は、以下に示す式において用いられる。x,yは、タッチ入力の座標であり、単位は画素(画素座標)である。keyは、ユーザがタッピングすると予想されるキーである。keyactualは、仮想キーボードからのタップされるキーの実際のキー中心位置である。d(x,y,keydefault)は、ユーザの実際のタッチ入力からkeyのデフォルトのキー中心までの差であり、ベクトルである。d(x,y,keyactual)は、ユーザの実際のタッチ入力から実際のキー中心までの差である。d(keyactual,keydefault)は、キー中心オフセットであり、ユーザの実際のキー中心からデフォルトのキー中心までの差として定義される。σdは、空間モデルの現在のガウス分布の基準である。E[d()]は、ある特定の距離の期待値である。
【0040】
ある実施形態では、空間モジュール212は、以下の式を用いて調整スコアを求める。
【0041】
【数1】
【0042】
タッチ入力からデフォルトのキー中心までの差は、以下の式で定義されるように、実際のキー中心に対するタッチ入力と、デフォルトのキー中心に対する実際のキー中心との合計として扱うことが可能である。
【0043】
【数2】
【0044】
ある特定のキーのタッチ入力の分布は、実際のキー中心の周囲であり、以下のように定義される。
【0045】
【数3】
【0046】
ここで、
【0047】
【数4】
【0048】
以下の式が得られる。
【0049】
【数5】
【0050】
キーオフセットについての上記の式は、空間モジュール212がデフォルトのキー中心からのキー中心オフセットとユーザのタッチ入力とを予測すると示している。いくつかの実施形態では、これは、複雑な学習および計算を必要としない教師なしアルゴリズムであり、機械学習が空間モジュール212の一部でないことを意味する。いくつかの実施形態では、空間モジュール212は、重みを有するデフォルトキー中心にキー中心オフセットを追加して、個別化されたキー中心を取得する。
【0051】
【数6】
【0052】
空間モジュール212は、(スペースバーを含む)キーごとにキーオフセットを求めてもよい。キーオフセットは、指がタッチする領域よりも広い場合などのユーザの指のエラー、タイピングするときのユーザの位置/視点、および、左手、右手、片手、または両手などのユーザのタイピングの癖によって生じる場合がある。いくつかの実施形態では、空間モジュール212は、キーオフセットに基づいて仮想キーボードの候補キーにタッチ入力をマッピングする。たとえば、タッチ入力が「d」よりも「e」に近い場合、実際のキー中心位置がデフォルトのキー中心よりも高いことに基づいて、空間モジュール212は、候補キーは「d」であると判断してもよい。いくつかの実施形態では、空間モジュール212は、空間モデルに基づいて、仮想キーボードの少なくとも一部の位置を調整する。たとえば、前述の例を続けると、空間モジュール212は、ユーザインターフェイスモジュール216に、(たとえば、「d」キーよりも上の所定数の画素についてのタッチが、タッチされるかもしれない上の実際のキー、たとえば「e」または「r」ではなく「d」キーを示すと解釈することによって)、「d」キーの位置が仮想キーボード上でより高くなるように調整して、キーオフセットを減らすように指示する。
【0053】
典型的に、仮想キーボードの位置および視角によるタイピングミスは、単語のタイピング中は一定のままである。その結果、キー中心オフセットが文字間で変化しそうにないため、空間モジュール212は単語予測についての定数としてキー中心オフセットを用いることによって、単語レベルの学習を適用する。空間モジュール212は、単語の第1の部分についてキーオフセットを求め、その後、単語の第2の部分を予測する。たとえば、ユーザが「internationalization」とタイピングしていて、文字「a」についての空間スコアを計算するときに「internation」とすでにタイプしている場合、空間モジュール212は、「internation」のタッチ入力に基づいてキー中心オフセットを求め、空間モデルのキー中心に対してキー中心オフセットを適用し、個別化された空間スコアを計算する。
【0054】
いくつかの実施形態では、空間モジュール212は、空間モデル内の以下の関数のうちの1つ以上を用いる。これらの関数は、学習される最低限の数のタッチ入力を特定するキー中心サンプルサイズ、タップタイピングについてキー中心に適用されるキー中心オフセットの重みであるタップキー中心オフセット重み、および、ジェスチャタイピングについてのキー中心に適用されるキー中心オフセットの重みであるジェスチャキー中心オフセット重みである。
【0055】
いくつかの実施形態では、空間モジュール212は、単語レベルの学習を行う代わりにインメモリー学習を行う。これによって、単語の長さが短すぎる単語レベルの学習における不具合、およびノイズが不正確さを生じるほど個別化されたキー中心に影響を与える例における不具合が対処される。空間モジュール212は、データベース210に格納されたキャッシュにおけるユーザ履歴(そのような安全なインメモリー格納についてユーザから特定の許可を有する)を維持することによって、インメモリー学習を行う。より詳細に、ユーザが単語のタイピングを始めると、空間モジュール212は、インメモリー履歴からキー中心オフセットを取出し、キー中心オフセットをキー中心に適用し、空間スコアを計算し、インメモリー履歴を更新する。いくつかの実施形態では、空間モジュール212は、空間モデル内の以下の関数を用いる。これらの関数は、学習される最低限の数のタッチ入力を特定するキー中心サンプルサイズ、および、タップタイピングについてキー中心に適用されるキー中心オフセットの重みであるタップキー中心オフセット重みである。
【0056】
いくつかの実施形態では、空間モジュール212は、スペースバーについてのタッチ入力の解釈を変更することによって、仮想キーボードのスペースバーについてキー訂正を行う。たとえば、スペースバー上に直接ないタッチ入力をユーザが提供する時であっても、空間モジュール212は、それをスペースバーのタッチに対応すると解釈してもよい。空間モジュール212は、キー訂正を行う態様を判断するためにガウス分布を用いてもよい。
【0057】
いくつかの実施形態では、空間モジュール212は、空間モデルのキー中心の周りのガウス分布を用いて、タッチ入力の分布を求める。たとえば、空間モジュール212は、以下のパラメータを有するガウスモデルパラメータ関数を用いてもよい。これらのパラメータは、x軸におけるオフセット、y軸におけるオフセット、x軸における分散、y軸における分散(これがない場合、x軸における分散が用いられる)、デフォルトが分布を独立分布として扱うことである2次元分布の分散、およびデータ点の全量である。ガウスパラメータの定義に基づいて、空間モジュール212は、以下の異なるレベルの個別化されたパラメータを維持する。これらのパラメータは、キーボードレイアウト内のすべてのキーが1つのパラメータを共有するグローバルキー中心オフセットに基づくグローバルレベル訂正、同じクラスタ内のすべてのキーが1つのパラメータを共有するクラスタキー中心オフセットのクラスタレベル訂正、および、各キーがそれ自体のガウスパラメータを有するキーレベル中心オフセットのキーレベル訂正である。
【0058】
いくつかの実施形態では、空間モジュール212は、グローバルキー中心オフセットについて用いられる空間モデルに加えて、キー訂正について別の空間モデルを生成する。このように、空間モジュール212は、スペースの入力前およびスペースの入力後に生じる予測を説明する。たとえば、空間モジュール212は、第1の空間モジュールを用いて、ある単語、たとえば「mornin」が「g」の単語予測を有する前に単語予測を行い、ユーザが「h」(これは仮想キーボード上で「g」のすぐ右にある)をタイプする場合であっても、空間モジュール212は文字「g」を選択する。空間モジュール212は、第2の空間モジュールを用いて、単語全体が書込まれると単語予測を行う、たとえば、空間モジュール212は、書き込まれた単語「jappy」を「happy」に変える。
【0059】
空間モジュール212は、同じユーザについて異なる空間モデルを維持してもよい。たとえば、異なる空間モデルは、肖像画書式または風景画書式などの異なるデバイス方向と関連付けられてもよい。さらに、デバイスが複数のユーザによって使用される場合、それぞれのユーザの許可を得て、異なるオンデバイス空間モデルが異なるユーザについて維持されてもよい。ユーザ特有のヒートマップ、空間モデルの生成、格納、および/もしくは使用、ならびに/またはタッチ入力に基づく候補キーの判断は、特定のユーザ許可で行われる。各ユーザには、そのような個別化を有効または無効にするオプションが設けられる。たとえば、ユーザには、用いられてもよい情報の種類(たとえば、以前のタッチ履歴)および個別化の利点(たとえば、タイピングミスの減少およびデータ入力の高速化)を明瞭に示すメニューが提示されてもよい。ユーザには、いつでも個別化を有効/無効にするオプションが設けられる。以前のタッチ入力などのユーザデータ、およびヒートマップまたは空間モデルなどの導出情報は、オンデバイスでローカルに格納され、仮想キーボードを介してデータ入力を向上させる目的で具体的に用いられる。ユーザが個別化を無効にし、および/またはデータの削除を選択する場合、そのような情報は破棄される。ユーザが個別化特徴を無効にする場合、仮想キーボードを用いたユーザのデータ入力に関する情報はアクセスされない、または格納されない。空間モジュール212は、完全にオンデバイスで動作する。
【0060】
図4は、本明細書で説明するいくつかの実施形態に係る、仮想キーボードにおける各キーにキー訂正を適用するための方法400の例を示すフローチャートである。この例では、空間モジュール212は、ユーザからタッチ入力データを受信し405、グローバルレベルキー中心オフセットをタッチ入力データに適用するために、データベース210からユーザタッチ履歴を取出し410、特定のキーについて訂正するためにキーレベル訂正(KC)をタッチ入力データに適用するべきかどうかを判断し415、グローバルキー中心オフセットについて用いられる空間モデルを更新する420。
【0061】
本実施形態の場合、空間モジュール212は、特定の前提条件が満たされるとキーレベル訂正を適用しない。たとえば、サンプルサイズ(たとえば、タイピングされている単語)が所定閾値を下回る場合、空間モジュール212は、キーレベル訂正を適用せず、空間モジュール212は、キー中心オフセットの学習重みをタッチ入力に適用する、または、空間モジュール212は、キー中心分散の学習重みをタッチ入力に適用する。いくつかの実施形態では、スペースバーはキーであるが、より大きなx範囲を有するため、空間モジュール212は異なるルールをスペースバーに適用する。たとえば、ルールは文字キーについての場合と異なるため、空間モジュール212は、スペースバーに対応するタッチ入力についてのグローバルキーオフセットについて用いられる空間モデルを更新しなくてもよい。方法400は、付加的なタッチ入力データが受信されると繰返されてもよい。
【0062】
いくつかの実施形態では、空間モジュール212は、ガウス分布をキーレベル訂正の一部として用いて、空間スコアを生成する。図5Aは、いくつかの実施形態に係る、空間モジュール212が仮想キーボード上のキーの中心とユーザのタッチ入力との間のx寸法(dx)の差およびy寸法(dy)の差を求める態様を示す図500である。キー(たとえば、スペースバー)の幅または高さが通常のキー(たとえば、「n」)よりも広いキーの場合、ユーザはキーの中心をタッチしないかもしれない。たとえば、図5Bは、スペースバーについてのタッチ入力を示す図525であり、スペースバーの中心をタッチしないことに加えて、ユーザによってはスペースバーの外側をタッチすることさえあると示す。
【0063】
いくつかの実施形態では、空間モジュール212は、以下の式を用いてキーの限界を求める。
【0064】
【数7】
【0065】
【数8】
【0066】
【数9】
【0067】
【数10】
【0068】
図5Cは、スペースバーを参照したタッチ入力についてx寸法(dx)の変化およびy寸法(dy)の変化を計算する態様を示す図550の例である。図5Cは、Cキー、Nキー、およびスペースバーについてのデフォルトのキー中心を灰色の円で示す。図5Cは、タッチ入力を白抜きの円で示す。図5Cに示されるように、スペースバーのx_下方_限界は、キー「C」の中心xと同じ値であり、スペースバーのx_上方_限界は、キー「N」の中心xと同じ値である。
【0069】
幅が通常のキーよりも広いキーの場合(たとえば、スペースバーの場合)、空間モジュール212は、以下の式を用いてdxを求める。
【0070】
【数11】
【0071】
【数12】
【0072】
【数13】
【0073】
高さが通常のキーよりも高いキーの場合、空間モジュール212は、式11~13と同様の式を用いてdyを求めるが、yがxに置き換わる。
【0074】
いくつかの実施形態では、空間モジュール212は、キーレベル訂正の一部として拡張バージョンのガウス分布を用いて、空間スコアを生成する。図5Dは、仮想キーボード上のCおよびNキーとスペースバーとの間の付加的な重なりを有する空間モデルによって用いられるガウス分布を示す図575である。この例では、空間モジュール212は、図5Dにおいて破線で示されるように、1.5の値を有するガウス_標的_サイズ_関数を用いる。空間モジュール212は、すべてのキーの幅および高さにガウス_標的_サイズ_関数を乗算し、かつ、通常のキー幅および通常のキー高さにガウス_標的_サイズ_関数を乗算する。その結果、「C」キーとスペースバーとの、または「N」キーとスペースバーとの間のタッチ入力は、より小さな重なりを有する拡張的でないガウス分布を用いる代わりに、候補キー「C」およびスペースバーまたは「N」およびスペースバーにタッチ入力をマッピングしてもよく、そのため、空間モジュール212は、候補キー「C」もしくはスペースバーまたは候補キー「N」もしくはスペースバーのいずれかにタッチ入力をマッピングする。
【0075】
図5Dを続けると、空間モジュール212は、すべてのキーの幅および高さにガウス_標的_サイズ_関数を乗算することによって、スペースバーについてのエラーx_下方_限界およびx_上方_限界を取得する。スペースバーのx_下方_限界はキーCの中心xより小さく、スペースバーのx_上方_限界はキーNの中心ょり大きいため、dxによって、空間モジュール212は、ガウス_標的_サイズ_関数を用いずにガウス分布を用いる場合よりも、スペースバーに対してより大きな空間スコアを関連付ける。
【0076】
いくつかの実施形態では、空間モジュール212は、仮想キーボードの少なくとも一部の外観を調整することによって、仮想キーボードのキーについてキー訂正を行う。仮想キーボードの外観を調整することによって、空間モジュール212によってマッピングされるように、仮想キーボードのキーの限界に関してより鮮明になる。たとえば、空間モジュール212は、たとえばヒートマップによって示されるような仮想キーボードディスプレイをキーの位置により近接させることによって、仮想キーボード全体の位置を移動させて、キーオフセットを減らす。他の例では、空間モジュール212は、ヒートマップに基づいて特定のキーの外観を修正する。たとえば、空間モジュール212は、ヒートマップに基づいて、キー「N」についてのキーオフセットがすべての文字キーのうちで最大であると判断してもよく、その結果、仮想キーボード上のキー「N」の限界のサイズを大きくする(その内部のタッチは、空間モジュール212によって「N」キーにマッピングされてもよい)。
【0077】
いくつかの実施形態では、空間モジュール212はスペースバーについて外観を調整する。たとえば、空間モジュール212がヒートマップに基づいて、タッチ入力がスペースバーに対応するはずであるがタッチ入力がスペースバーの外側であると判断するいくつかの実施形態では、空間モジュール212はユーザインターフェイスモジュール216に、タッチ入力のヒートマップに基づいてスペースバーの外観が調整されるユーザインターフェイスを生成するように指示する。空間モジュール212は、ユーザインターフェイスモジュール216に、キーボード位置を(たとえば数ピクセル、たとえば、スペースバーの高さの約半分だけ)上げることによって、システムナビゲーションバー(使用されている場合)または他のUI要素に到達するまでスペースバーのクリック可能領域を拡張することによって、スペースバーの下のスペースバークリック可能領域を(たとえば、スペースバー高さの約半分だけ)拡張することによって、またはユーザのタッチ入力の履歴に基づいて求められる高さまでキーボード位置を上げることによって、ディスプレイを修正するように指示してもよい。いくつかの実施形態では、空間モジュール212は、ユーザインターフェイスモジュール216に、スペースバーの外観がスペースバーの境界を変更することによって調整されるユーザインターフェイスを生成するように指示してもよい。
【0078】
図6Aは、本明細書で説明するいくつかの実施形態に係る、スペースバーの位置を修正する2つの異なる方法を示す図600の例である。この例では、スペース上方の隔離部分と、スペースバー下方からシステムナビゲーションバー601までのクリック可能スペースとにおいて受信されるタッチ入力は、依然としてスペースバーの選択に対応するとみなされる。いくつかの実施形態では、空間モジュール212は、スペースバーの外観を修正する、または、スペースバーに対応するように、より多くの画素を有するタッチ入力のマッピングを修正する。
【0079】
図6Bは、ヒートマップが、スペースバーについてのユーザからのタッチ入力が傾斜していると示す仮想キーボードを示す図605の例である。たとえば、ユーザは「C」キー付近の左側でスペースバーキーの上部よりも高く、かつ、「N」キー付近のスペースバーの真上である下方点を有する右側に向かって漸進的に低くタッチする傾向がある。この例では、スペースバーキーについてのヒートマップは、傾斜した破線606によって表される。これは、たとえば、ユーザが主に右手でタイプし、親指が他の指よりも高角でタッチ入力を提供する場合に発生する。いくつかの実施形態では、空間モジュール212は、重なり領域におけるタッチ入力を検出するために高角のタッチ入力を含むヒートマップを用い、空間モデルを用いて、C、V、BもしくはNキーまたはスペースバーについてのタッチ入力が意味されているかどうかを解釈する。それによって、スペースバーの外観は同じであるものの、空間モジュール212は、C、V、B、もしくはNキーまたはさらにはそれらのキーとの重なりにより近接する画素におけるスクリーン上のタッチが、スペースバーに割当てられるような角度でスペースバーに対応するように、より多くの画素を有するタッチ入力をマッピングする。
【0080】
図6Cは、本明細書で説明するいくつかの実施形態に係る、文字キーとファンクションキーとの間の視覚的な区別を有する仮想キーボードを示す図625の例である。この例では、ファンクションキーは赤い矩形(これらは仮想キーボードの一部ではなく、ここでは図示の目的で含まれている)の内側である。文字は白で表示され、他のキーは視覚的な区別で表示される。たとえば、キャップスロック、数/文字ファンクションキー、コンマキー、ピリオドキー、およびバックスペースは灰色で表示され、エンターボタンは青で表示され、検索ボタンおよびスペースバーは白で表示されるが、他の色のキーを含むキーの行の一部である。
【0081】
図6Dは、本明細書で説明するいくつかの実施形態に係る、スペースバーを低くシフトして、スペースバーならびにC、V、BおよびNキーに対するタッチ入力マッピング間での区別を可能にすることによって、ユーザインターフェイスモジュール216がスペースバーの外観を修正した仮想キーボードを示す図630の例である。
【0082】
図6Eは、本明細書で説明するいくつかの実施形態に係る、スペースバーとC、V、BおよびNキーとの間のタッチ入力マッピング間での区別を可能にするためにスペースがないデザインを示す図650の例である。この例では、ユーザインターフェイスモジュール216は、視覚的な輪郭を有さないスペースバーを有する仮想キーボードを生成している。さらに、空間モジュール212は、直接C、V、BまたはNキー上でないタッチ入力がスペースバーに対応すると判断する。それによって、直接C、V、BまたはNキーのうちの1つの上にない限り、より多くの数のタッチ入力がスペースバーにマッピングされる。
【0083】
図6Fは、本明細書で説明するいくつかの実施形態に係る、スペースバーとC、V、BまたはNキーとの間の混同を解決するためのスペースバーの上および下の隔離の使用を示す図670の例である。この例では、ユーザインターフェイスモジュール216は、視覚的な輪郭を有さず、直接C、V、BまたはNキーにないさらに多くの数のタッチ入力がスペースバーに対応するように、スペースバーの上および下に隔離があるスペースバーを有する仮想キーボードを生成した。
【0084】
言語モジュール214は、言語モデルを適用して、仮想キーボードの1つ以上の候補キーに、タッチ入力をマッピングする。いくつかの実施形態では、言語モジュール214は、仮想キーボードの1つ以上の候補キーにタッチ入力をマッピングするようにプロセッサ202によって実行可能な命令のセットを含む。いくつかの実施形態では、言語モジュール216はコンピューティングデバイス200のメモリ204に格納され、プロセッサ202によってアクセスおよび実行可能であり得る。
【0085】
いくつかの実施形態では、言語モジュール214は、空間モジュール212がタッチ入力をマッピングした1つ以上の第1の候補キーと異なる場合もある仮想キーボードの1つ以上の第2の候補キーに、タッチ入力をマッピングする。たとえば、空間モジュール212は、空間モデルに基づいて、最初の3つの文字が「rat」である場合、文字「s」に対するタッチ入力の近接性に基づいて4番目の文字が「s」であると判断してもよいが、「rate」が「rats」よりも一般的な単語である、またはユーザは「rats」よりも「rate」とタイプすることが多いため(そのような判断についてユーザのタイピングデータの使用をユーザが認める場合)、言語モジュール214は、文字「e」にタッチ入力をマッピングする。いくつかの実施形態では、言語モジュール214は、異なる言語について異なってもよい。
【0086】
言語モジュール214は、タッチ入力の位置を1つ以上の予測された次のキーと比較することに基づいて、1つ以上の第2の候補キーにタッチ入力をマッピングしてもよい。いくつかの実施形態では、言語モジュール214は、ガウス分布を適用して、次の文字を予測する。たとえば、ガウス分布は、文字「n」が一般的であるためこの文字について高確率を示してもよい一方で、英語であまり一般的でない文字「z」について低確率を示してもよい。
【0087】
言語モジュール214は、タッチ入力によって示されるような、空間モジュール212によって求められる1つ以上の第1の候補キー(たとえば、「s」)および言語モジュール214によって求められる1つ以上の第2の候補キー(たとえば、「e」)から、特定のキーを選択してもよい。1つ以上の第1の候補キーは、1つ以上の第2の候補キーと同じでもよい、または異なってもよい。いくつかの実施形態では、1つ以上の第1の候補キーと1つ以上の第2の候補キーとの間に競合がある場合、言語モジュール214は、ありそうな言葉を最も形成しそうな候補キーに基づいて、特定のキーを選択してもよい。
【0088】
いくつかの実施形態では、言語モジュール214は、言語モデルを用いて、文字をスペースとまたはスペースを文字と置換することに基づいて、1つ以上の単語の後訂正を行ってもよい。たとえば、2つの単語が「mor」および「ing」の場合、言語モジュール214は、後訂正を行って文字「n」を挿入し、これらの2つの単語から1つの単語「morning」を生成してもよい。この例では、後訂正によって、文字「n」を自動的に挿入することによって、2つの別の単語「mor」および「ing」につながる、スペースバーのタッチとして「n」のタッチが誤って解釈されることに起因するタイピングミスが自動的に訂正される。
【0089】
ユーザインターフェイスモジュール216は、仮想キーボードを含むユーザインターフェイスを表示するために図表データを生成する。いくつかの実施形態では、ユーザインターフェイスモジュール216は、ユーザインターフェイスを表示するための図表データを生成するように、プロセッサ202によって実行可能な命令のセットを含む。いくつかの実施形態では、ユーザインターフェイスモジュール216は、コンピューティングデバイス200のメモリ204に格納され、プロセッサ202によってアクセスおよび実行可能であり得る。
【0090】
いくつかの実施形態では、ユーザインターフェイスモジュール216は、メッセージングアプリケーションなどのアプリケーションの一部である仮想キーボードなど、ユーザインターフェイスを表示するための図表データを生成する。ユーザインターフェイスモジュール216は、言語モジュール214から命令を受信して、ユーザのタッチ入力によって示されるような特定のキーを表示してもよい。
【0091】
フローチャート700
図7は、本明細書で説明するいくつかの実施形態に係る、仮想キーボードについて特定のキーを選択するためのフローチャート700の例である。フローチャート700は、図1に示すモバイルデバイス115など、図2におけるコンピューティングデバイス200によって行われてもよい。
【0092】
方法700は、ブロック702で開始してもよい。ブロック702で、タッチ入力は仮想キーボード上の位置でユーザによって検出される。ブロック702に、ブロック704が続いてもよい。
【0093】
ブロック704で、空間モデルを適用して、仮想キーボードの1つ以上の第1の候補キーに、タッチ入力をマッピングする。空間モデルは、以前のタッチ入力のヒートマップに基づいて、1つ以上の第1の候補キーにタッチ入力をマッピングする。ブロック704に、ブロック706が続いてもよい。
【0094】
ブロック706で、言語モデルを適用して、仮想キーボードの1つ以上の第2の候補キーにタッチ入力をマッピングする。言語モデルは、タッチ入力の位置を1つ以上の予測される次のキーと比較することに基づいて、1つ以上の第2の候補キーにタッチ入力をマッピングする。ブロック706に、ブロック708が続いてもよい。
【0095】
ブロック708で、タッチ入力によって示されるような1つ以上の第1のおよび第2の候補キーのうちの特定のキーが選択される。いくつかの実施形態では、空間モデルは、各候補キーを信頼スコア(たとえば、空間スコア)および言語モデル(たとえば、言語スコア)と関連付け、各候補キーを信頼スコアと関連付ける。また、信頼スコアは、(たとえば、文字の頻度に基づいて)それぞれの重みと関連付けられてもよい。特定のキーは、信頼スコアの組合わせおよび最もあり得る選択を示す信頼スコアの選択に基づいて選択されてもよい。いくつかの実施形態では、特定のキーは、組合わせ信頼スコアが閾値を上回ることに基づいて、選択される。
【0096】
方法700は図7におけるさまざまなブロックに関して説明されたが、本開示に記載の技術は図7のブロックの一部を行うことなく実行可能であると理解されるであろう。いくつかの実施形態では、図7に示すブロックのうちの1つ以上は組合わされてもよい。
【0097】
その特定の実施形態に関して説明してきたが、これらの特定の実施形態は例示にすぎず、限定的ではない。例において示される概念は、他の例および実施形態に適用され得る。
【0098】
上記の説明に加えて、本明細書で説明されるシステム、プログラム、または特徴がユーザ情報(たとえば、仮想キーボードを介したユーザのデータ入力、タッチスクリーンデバイス上のユーザのタッチパターン、ユーザのキーボード言語、ユーザの仮想キーボード設定、ユーザの嗜好、またはユーザの現在の位置についての情報)の収集を可能にし得るかどうか、および何時そうであり得るかの両方について、ならびにユーザがサーバからコンテンツまたは通信を送信されるかどうかに関してユーザが選択を行うことを可能にする制御が、ユーザに提供されてもよい。さらに、特定のデータは、個人を特定できる情報が取除かれるように、格納または使用前に、1つ以上の方法で処理されてもよい。たとえば、ユーザの素性は、ユーザについて個人的に識別可能な情報を判断できないように扱われてもよく、またはユーザの地理的位置は、(たとえば、都市、郵便番号、または州レベルに関して)位置情報が得られる場合に、ユーザの特定の位置を判断することができないように、一般化されてもよい。したがって、ユーザは、ユーザに関してどのような情報が収集されるか、その情報がどのように用いられるか、およびどのような情報がユーザに提供されるかについて、制御することができる。
【0099】
なお、本開示で説明する機能ブロック、動作、特徴、方法、デバイス、およびシステムは、当業者に知られているように、システム、デバイス、および機能ブロックの異なる組合わせに統合または分割され得る。任意の適切なプログラミング言語およびプログラミング技術を使用して、特定の実施形態のルーチンを実施することができる。異なるプログラミング技法、例えば手続き的またはオブジェクト指向の技法を採用することができる。ルーチンは、単一の処理デバイスまたは複数のプロセッサ上で実行することができる。ステップ、動作、または計算は、特定の順序で提示され得るが、順序は、異なる特定の実施形態で変更され得る。いくつかの実施の形態では、本明細書で順次として示される複数のステップまたは動作が同時に実行され得る。
図1
図2
図3A
図3B
図4
図5A
図5B
図5C
図5D
図6A
図6B
図6C
図6D
図6E
図6F
図7