(57)【要約】【課題】  インプット・メソッドに対して実行可能コードのコンテクスト情報を提供すること。【解決手段】  高度なテキスト・インプット・メソッドは、受け取りが要求される入力テキストを高い確度で認識できるように、そのタイプを認識可能になる。一般のインターフェースは、アプリケーション・オーサリング・プラットフォームをサポートするフレームワークを提供し、アプリケーション開発者が、システムに対してコンテクスト情報を簡単に指定して正しいインプット・メソッドに確実に転送することを許す。コンテクスト・タグ付けツールは、このアプリケーション自体を修正せずに、既存のアプリケーションの特定のテキスト入力フィールドをインプット・スコープに関連付け、そのためのタグを含むマニフェストを作成できる。アプリケーションが使用するこのメソッドはどれも、このマニフェス内のコンテクスト情報にアクセスするために更新可能である。【選択図】  図２
2005135398.tif 000002
【特許請求の範囲】
【請求項１】
インプット・メソッドにコンテクスト情報を提供するためのコンピュータ・システムであって、
テキスト入力フィールドを有する実行可能ソフトウェア・コードと、
前記実行可能ソフトウェア・コードに動作可能に結合され、テキスト・フィールドについてのインプット・スコープを設定するための前記実行可能ソフトウェア・コードによって呼び出し可能なインターフェースを有するコンテクスト・コンポーネントと、
インプット・メソッドについての認識機構であって、前記コンテクスト・コンポーネントに動作可能に結合され、前記コンテクスト・コンポーネントのインターフェースを呼び出し、前記テキスト・フィールドについての、前記実行可能ソフトウェア・コードによって設定される前記インプット・スコープを受け取る認識機構と
を備えることを特徴とするシステム。
【請求項２】
テキスト・フィールドについてのインプット・スコープを設定するための前記実行可能ソフトウェア・コードによって呼び出し可能な前記インターフェースは、単語のリストを渡すパラメータを備えることを特徴とする請求項１に記載のシステム。
【請求項３】
テキスト・フィールドについてのインプット・スコープを設定するための前記実行可能ソフトウェア・コードによって呼び出し可能な前記インターフェースは、フレーズのリストを渡すパラメータを備えることを特徴とする請求項１に記載のシステム。
【請求項４】
テキスト・フィールドについてのインプット・スコープを設定するための前記実行可能ソフトウェア・コードによって呼び出し可能な前記インターフェースは、共通のインプット・スコープを渡すパラメータを備えることを特徴とする請求項１に記載のシステム。
【請求項５】
前記共通のインプット・スコープは、キャラクタの関連付けられ、固定されたリストを伴う定義されたフォーマットを備えることを特徴とする請求項４に記載のシステム。
【請求項６】
テキスト・フィールドについてのインプット・スコープを設定するための前記実行可能ソフトウェア・コードによって呼び出し可能な前記インターフェースは、正規表現を渡すパラメータを備えることを特徴とする請求項１に記載のシステム。
【請求項７】
テキスト・フィールドについてのインプット・スコープを設定するための前記実行可能ソフトウェア・コードによって呼び出し可能な前記インターフェースは、１組のインプット・スコープを渡すパラメータを備えることを特徴とする請求項１に記載のシステム。
【請求項８】
テキスト・フィールドについての前記インプット・スコープを取得するための前記認識機構によって呼び出し可能な前記インターフェースは、１組のインプット・スコープを取得するために呼び出されるメソッドを備えることを特徴とする請求項１に記載のシステム。
【請求項９】
テキスト・フィールドについての前記インプット・スコープを取得するための前記認識機構によって呼び出し可能な前記インターフェースは、フレーズのリストを取得するために呼び出されるメソッドを備えることを特徴とする請求項１に記載のシステム。
【請求項１０】
テキスト・フィールドについての前記インプット・スコープを取得するための前記認識機構によって呼び出し可能な前記インターフェースは、単語のリストを取得するために呼び出されるメソッドを備えることを特徴とする請求項１に記載のシステム。
【請求項１１】
テキスト・フィールドについての前記インプット・スコープを取得するための前記認識機構によって呼び出し可能な前記インターフェースは、正規表現を取得するために呼び出されるメソッドを備えることを特徴とする請求項１に記載のシステム。
【請求項１２】
前記認識機構は、音声についての認識機構を備えることを特徴とする請求項１に記載のシステム。
【請求項１３】
前記認識機構は、手書き文字についての認識機構を備えることを特徴とする請求項１に記載のシステム。
【請求項１４】
前記認識機構は、インプット・メソッド・エディタについての認識機構を備えることを特徴とする請求項１に記載のシステム。
【請求項１５】
請求項１に記載のシステムを備えるコンピュータ実行可能コンポーネントを有することを特徴とするコンピュータ読取り可能媒体。
【請求項１６】
インプット・メソッドにコンテクスト情報を提供する方法であって、
実行可能ソフトウェア・コードのテキスト・フィールドについてのインプット・スコープを設定するためのアプリケーション・プログラミング・インターフェースを呼び出すステップと、
前記実行可能ソフトウェア・コードのテキスト・フィールドについてのインプット・スコープを設定するステップと、
前記実行可能ソフトウェア・コードの前記テキスト・フィールドについて設定された前記インプット・スコープを取得するためのアプリケーション・プログラミング・インターフェースを呼び出すステップと、
前記実行可能ソフトウェア・コードの前記テキスト・フィールドについて設定された前記インプット・スコープを取得するステップと
を備えることを特徴とする方法。
【請求項１７】
前記実行可能ソフトウェア・コードの前記テキスト・フィールドについての入力を認識するために取得される前記インプット・スコープを使用するステップをさらに備えることを特徴とする請求項１６に記載の方法。
【請求項１８】
実行可能ソフトウェア・コードのテキスト・フィールドについてのインプット・スコープを設定するためのアプリケーションプログラミングインターフェースを呼び出すステップは、単語のリストを渡すステップを備えることを特徴とする請求項１６に記載の方法。
【請求項１９】
実行可能ソフトウェア・コードのテキスト・フィールドについてのインプット・スコープを設定するためのアプリケーション・プログラミング・インターフェースを呼び出すステップは、フレーズのリストを渡すステップを備えることを特徴とする請求項１６に記載の方法。
【請求項２０】
実行可能ソフトウェア・コードのテキスト・フィールドについてのインプット・スコープを設定するためのアプリケーション・プログラミング・インターフェースを呼び出すステップは、共通のインプット・スコープを渡すステップを備えることを特徴とする請求項１６に記載の方法。
【請求項２１】
共通のインプット・スコープを渡すステップは、キャラクタの関連付けられ、固定されたリストを伴う定義されたフォーマットについての識別子を渡すステップを備えることを特徴とする請求項２０に記載の方法。
【請求項２２】
実行可能ソフトウェア・コードのテキスト・フィールドについてのインプット・スコープを設定するためのアプリケーション・プログラミング・インターフェースを呼び出すステップは、正規表現を渡すステップを備えることを特徴とする請求項１６に記載の方法。
【請求項２３】
前記実行可能ソフトウェア・コードの前記テキスト・フィールドについて設定された前記インプット・スコープを取得するためのアプリケーション・プログラミング・インターフェースを呼び出すステップは、１組のインプット・スコープを取得するステップを備えることを特徴とする請求項１６に記載の方法。
【請求項２４】
前記実行可能ソフトウェア・コードの前記テキスト・フィールドについて設定された前記インプット・スコープを取得するためのアプリケーション・プログラミング・インターフェースを呼び出すステップは、単語のリストを取得するステップを備えることを特徴とする請求項１６に記載の方法。
【請求項２５】
前記実行可能ソフトウェア・コードの前記テキスト・フィールドについて設定された前記インプット・スコープを取得するためのアプリケーション・プログラミング・インターフェースを呼び出すステップは、フレーズのリストを取得するステップを備えることを特徴とする請求項１６に記載の方法。
【請求項２６】
前記実行可能ソフトウェア・コードの前記テキスト・フィールドについて設定された前記インプット・スコープを取得するためのアプリケーション・プログラミング・インターフェースを呼び出すステップは、共通のインプット・スコープを取得するステップを備えることを特徴とする請求項１６に記載の方法。
【請求項２７】
前記実行可能ソフトウェア・コードの前記テキスト・フィールドについて設定された前記インプット・スコープを取得するためのアプリケーション・プログラミング・インターフェースを呼び出すステップは、正規表現を取得するステップを備えることを特徴とする請求項１６に記載の方法。
【請求項２８】
請求項１６に記載の方法を実施するためのコンピュータ実行可能命令を有することを特徴とするコンピュータ読取り可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にコンピュータ・システムに関し、より詳細にはインプットメソッド（input method）にコンテクストを提供する改善されたシステムおよび方法に関する。
【背景技術】
【０００２】
手書き（handwriting）、音声（speech）、ＩＭＥ（Input Method Editor：入力方式エディタ）などによる高度なテキスト・インプット・メソッドは、しばしば、テキスト入力の認識（recognition）における正確さを実現するために使用されるコンテクストの主要なフォーム（form）として使用する言語規則および言語辞書に限定される。ユニグラムやｎ−グラムなどのコンテクスト上の情報が、従来から、自然言語入力の認識の正確さを高めるための、かかるインプット・メソッドに言語モデルの一部として提供されてきている。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
あいにく、アプリケーションおよびフォーム（forms）の最も一般的なフィールドの中には、特定の言語の言語規則に従わず、特定の言語の用語集にさえ従わない入力を要求する（expect）ものがある。例えば、電子メールのあるフィールドでは、電子メール・アドレスが入力として要求されることもある。必ずしもそうではないにしても、ほとんどの電子メール・アドレスは、特定の言語の言語規則または用語集（vocabulary）には従わない。例えば、単語間でスペースを必要とする英語の言語規則は、電子メール・アドレスには適用されない。同様に、あるフィールドでは、ＵＲＬ（Uniform Resource Locator：ユニフォーム・リソース・ロケータ）を要求されるが、このＵＲＬも特定の言語の言語規則または用語集に従わないこともある。その結果、かかるインプット・メソッドでは、これらのフィールド・タイプについての入力を正確に認識する機能が厳しく制限されることもある。したがって、ユーザは、これらのフィールド・タイプについての認識について不十分な正確さをもたらすかかるインプット・メソッドを使用すると不満足な体験をすることになる。
【０００４】
さらに、コマンド・アプリケーションやコントロール・アプリケーションなど、その用語が制限される可能性のあるアプリケーションでは、そのコンテクストは、従来から、その言語の辞書をより少数の単語に制限することによって、制約されてきている。しかし、この技法は、特定のインプット・メソッドのための１つのアプリケーションによる使用に限定されてきている。複数のインプット・メソッドは、別々の各インプット・メソッドごとにこの技法を実装することなしには、コンテクストを制約するこの技法を使用することができなかった。
【０００５】
入力として受け取るべきことが要求されるテキストのタイプを認識し、その結果、テキスト入力の認識におけるより高い確度を実現することができる高度なテキスト・インプット・メソッドについての方法（複数）が必要になっている。さらに、このようなシステムは、どんなインプット・メソッドでも、アプリケーションが提供するコンテクストを使用できるようにして、その結果、ユーザが、このフィールド用の情報を入力するために（複数の）インプット・メソッド間で切り換えることができるようにすべきである。
【課題を解決するための手段】
【０００６】
簡潔に言えば、本発明では、あるインプット・メソッドに実行可能コードのコンテクスト情報を提供するための改善されたシステムおよび方法が提供される。高度なテキスト・インプット・メソッドでは、入力として受け取るべきことが要求されるテキストのタイプが認識でき、その結果、かかるインプット・メソッドでは、テキスト入力の認識においてより高い正確さを実現することができる。この目的を達成するために、コンテクスト情報を提供する一般的なインターフェースをもつアーキテクチャが提供され、その結果、アプリケーションは、テキスト入力を要求するアプリケーションのフィールドのいずれに対してもインプット・スコープ（input scope）を提供することができる。さらに、どのインプット・メソッドでも、アプリケーションが提供するコンテクスト情報を使用することができる。したがってユーザは、そのコンテクスト情報の損失なしにこのアプリケーションに対して情報を入力する（複数の）インプット・メソッドを切り換えることができる。
【０００７】
本発明ではさらに、一般的なインターフェースをもつコンテクスト・コンポーネントおよびコンテクスト・タグ付けユーティリティを含むコンポーネントのシステムが提供される。一般的なインターフェースは、アプリケーション・オーサリング・プラットフォームをサポートするフレームワークを提供し、それによってアプリケーションの開発業者はシステムに対するコンテクスト情報を簡単に指定し、それをその正しいインプット・メソッドへと確実に転送することができるようになる。かかるコンテクスト情報は、１つの共通のインプット・スコープ、１組のインプット・スコープ、単語（word）リストまたはフレーズ・リスト、正規表現または他の文法によって定義されるカスタム・インプット・スコープ、を含むことができる。
【０００８】
新しいアプリケーションの開発のためのシステムおよび方法を提供するのに加えて、本発明では、アプリケーションの特定のテキスト入力フィールドをインプット・スコープに関連付けるためのコンテクスト・タグ付けツールを提供することにより、アプリケーションそれ自体を修正する必要なしに、既存のアプリケーションをサポートすることもできる。このコンテクスト・タグ付けツールは、特定のテキスト入力フィールドをインプット・スコープに関連付けるタグを含むマニフェストを作成することができる。かかるマニフェストをプログラム・ファイルと一緒に格納することができる。このアプリケーションが使用する高度なインプット・メソッドはどれも、このマニフェスト中に格納されたコンテクスト情報にアクセスする命令を用いて更新することができる。したがって、既存のアプリケーションも、また、高度なインプット・メソッドによるテキスト入力フィールドについての認識の正確さを高めることに対して、本発明の使用による恩恵を受けることができる。
【０００９】
このコンテクスト・タグ付けツールは、既存のアプリケーションのテキスト入力フィールドまたはコントロール（control）あるいは実行可能コードにインプット・スコープをタグ付けするユーザ・インターフェースを含んでいる点で有利である。このユーザ・インターフェースにより、テキスト入力フィールドまたはコントロールおよびインプット・スコープを選択できるようになり、これらの結果としての関連付けをそのマニフェストに追加できるようになる。さらに、ユーザ・インターフェースは、フレーズ・リスト・エディタおよびカスタム・インプット・スコープ・エディタを含むこともでき、それぞれは、フレーズ・リストおよびカスタム・インプット・スコープを作成し、編集し、管理する。
【００１０】
他の利点については、図面と併せ読むときに以下の詳細な説明から明らかになろう。
【発明を実施するための最良の形態】
【００１１】
例示の動作環境
図１は、本発明を実装することができる適切な計算機システム環境１００の一例を示している。この計算機システム環境１００は、適切な計算機環境の一例にすぎず、本発明の使用または機能の範囲についてのどのような限定を示唆することも意図するものではない。また、計算機環境１００は、例示の動作環境１００に示されるコンポーネントのうちのどの１つまたはその組合せに関してもどのような依存性または必要性を有するものとも解釈すべきではない。
【００１２】
本発明は、他の多数の汎用または専用の計算機システム環境または計算機システム構成を用いても動作可能である。本発明にとって使用するのに適したものとすることができるよく知られている計算機システム、計算機環境、および／または計算機構成には、それだけには限定されないが、パーソナル・コンピュータ、サーバ・コンピュータ、ハンドヘルド装置またはラップトップ装置、タブレット装置、ヘッドレス・サーバ（headless server）、マルチ・プロセッサ・システム、マイクロ・プロセッサ・ベースのシステム、セットトップボックス、プログラム可能な大衆消費電子製品、ネットワークＰＣ、ミニコンピュータ、メインフレーム・コンピュータ、以上のシステムまたは装置のいずれかを含む分散計算機環境、などが含まれる。
【００１３】
本発明は、コンピュータが実行する、プログラム・モジュールなどコンピュータ実行可能命令の一般的なコンテクストで説明することができる。一般に、プログラム・モジュールは、特定のタスクを実施し、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含んでいる。本発明はまた、タスクが通信ネットワークを介してリンクされるリモート処理装置によって実施される分散計算機環境中で実行することもできる。分散計算機環境では、メモリ記憶装置を含めてローカル・コンピュータ記憶媒体および／またはリモート・コンピュータ記憶媒体中にプログラム・モジュールを配置することができる。
【００１４】
図１を参照すると、本発明を実装するシステムの一例は、コンピュータ１１０の形態の汎用計算機装置を含んでいる。コンピュータ１１０のコンポーネントは、それだけには限定されないが、処理装置１２０、システム・メモリ１３０、およびこのシステム・メモリを含めて様々なシステム・コンポーネントを処理装置１２０に結合するシステム・バス１２１を含むことができる。システム・バス１２１は、メモリ・バスまたはメモリ・コントローラ、周辺バス、および様々なバス・アーキテクチャのうちのどれかを使用したローカルバスを含めていくつかのタイプのバス構造のうちのいずれかにすることもできる。一例として、限定するものではないが、かかるアーキテクチャには、ＩＳＡ（Industry Standard Architecture：業界標準アーキテクチャ）バス、ＭＣＡ（Micro Channel Architecture：マイクロ・チャネル・アーキテクチャ）バス、ＥＩＳＡ（Enhanced ISA：拡張ＩＳＡ）バス、ＶＥＳＡ（Video Electronics Standards Association：ビデオ・エレクトロニクス規格協会）ローカルバス、およびメザニン（Mezzanine）バスとしても知られているＰＣＩ（Peripheral Component Interconnect：周辺コンポーネント相互接続）バスが含まれる。
【００１５】
コンピュータ１１０は、一般に様々なコンピュータ読取り可能媒体を含んでいる。コンピュータ読取り可能媒体は、コンピュータ１１０がアクセスすることができる任意の使用可能な媒体とすることができ、揮発性媒体も不揮発性媒体も着脱可能媒体も着脱不能媒体も含んでいる。一例として、限定するものではないが、コンピュータ読取り可能媒体は、コンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ読取り可能命令、データ構造、プログラム・モジュール、他のデータなど情報を記憶するための任意の方法または技術で実装された揮発性および不揮発性の着脱可能および着脱不能な媒体を含んでいる。コンピュータ記憶媒体には、それだけには限定されないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（digital versatile disk：デジタル多用途ディスク）または他の光ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージまたは他の磁気記憶装置、あるいは所望の情報を記憶するために使用することができ、コンピュータ１１０がアクセスすることができる他の任意の媒体が含まれる。通信媒体は、一般に、コンピュータ読取り可能命令、データ構造、プログラム・モジュールまたは他のデータを搬送波や他の搬送メカニズムなど変調されたデータ信号の形で具現化し、任意の情報配信媒体を含んでいる。用語「変調されたデータ信号」は、信号中で情報をエンコードする態様で１つまたは複数の信号特性が設定または変更されている信号を意味する。一例として、限定するものではないが、通信媒体は、有線ネットワークや直接配線接続などの有線媒体、および音響、ＲＦ、赤外線、他の無線媒体などの無線媒体を含んでいる。以上のうちの任意の組合せもまた、コンピュータ読取り可能媒体の範囲内に含まれるものとする。
【００１６】
システム・メモリ１３０は、ＲＯＭ（read only memory：読取り専用メモリ）１３１やＲＡＭ（random access memory：ランダム・アクセス・メモリ）１３２などの揮発性メモリおよび／または不揮発性メモリの形態のコンピュータ記憶媒体を含んでいる。起動中などコンピュータ１１０内の要素間で情報を転送する助けをする基本ルーチンを含むＢＩＯＳ（basic input/output system：基本入出力システム）１３３は、一般にＲＯＭ１３１に格納される。ＲＡＭ１３２は、一般に、処理装置１２０から直接アクセス可能な、および／または処理装置１２０によって現在動作させられているデータおよび／またはプログラム・モジュールを収容する。一例として、限定するものではないが、図１は、オペレーティング・システム１３４、アプリケーション・プログラム１３５、他のプログラム・モジュール１３６、およびプログラム・データ１３７を示している。
【００１７】
コンピュータ１１０はまた、他の着脱可能／着脱不能な揮発性／不揮発性のコンピュータ記憶媒体を含むことができる。一例にすぎないが、図１は、着脱不能な不揮発性磁気媒体から情報を読み取りまたはそれに情報を書き込むハードディスク・ドライブ１４１、着脱可能な不揮発性の磁気ディスク１５２から情報を読み取りまたはそれに情報を書き込む磁気ディスク・ドライブ１５１、およびＣＤ  ＲＯＭや他の光媒体など着脱可能な不揮発性の光ディスク１５６から情報を読み取りまたはそれに情報を書き込む光ディスク・ドライブ１５５を示している。例示の動作環境中で使用することができる他の着脱可能／着脱不能な揮発性／不揮発性のコンピュータ記憶媒体には、それだけには限定されないが、磁気テープ・カセット、フラッシュ・メモリ・カード、デジタル多用途ディスク、デジタル・ビデオ・テープ、ソリッド・ステートＲＡＭ、ソリッド・ステートＲＯＭなどが含まれる。ハードディスク・ドライブ１４１は一般に、インターフェース１４０などの着脱不能メモリ・インターフェースを介してシステム・バス１２１に接続され、磁気ディスク・ドライブ１５１および光ディスク・ドライブ１５５は一般に、インターフェース１５０などの着脱可能メモリ・インターフェースによってシステム・バス１２１に接続される。
【００１８】
以上で説明し、図１に示したドライブおよびこれらに関連したコンピュータ記憶媒体は、コンピュータ１１０のためのコンピュータ読取り可能命令、データ構造、プログラム・モジュールおよび他のデータの記憶域を提供する。図１で、例えばハードディスク・ドライブ１４１は、オペレーティング・システム１４４、アプリケーション・プログラム１４５、他のプログラム・モジュール１４６、およびプログラム・データ１４７を格納するものとして示されている。これらのコンポーネントは、オペレーティング・システム１３４、アプリケーション・プログラム１３５、他のプログラム・モジュール１３６、およびプログラム・データ１３７と同じ、または異なるものとすることができることに留意されたい。オペレーティング・システム１４４、アプリケーション・プログラム１４５、他のプログラム・モジュール１４６、およびプログラム・データ１４７には、本明細書中では異なる番号が付与されて少なくともこれらが異なるコピーであることが示されている。ユーザは、タブレット、すなわち電子デジタイザ１６４、マイクロホン１６３、キーボード１６２や、マウス、トラック・ボールまたはタッチ・パッドとして共通に呼ばれるポインティング装置１６１などの入力装置を介してコンピュータ１１０にコマンドおよび情報を入力することができる。図１に示していない他の入力装置には、ジョイスティック、ゲーム・パッド、サテライト・ディッシュ、スキャナ、またはバイオメトリクス・センサ、環境センサ、位置センサ、または他のタイプのセンサを含む装置を含めて他の装置が含まれる。これらおよび他の入力装置はしばしば、システム・バスに結合されるユーザ入力インターフェース１６０を介して処理装置１２０に接続されるが、パラレル・ポート、ゲーム・ポート、ＵＳＢ（universal serial bus：ユニバーサル・シリアル・バス）など他のインターフェースおよびバス構造によって接続することもできる。モニタ１９１または他のタイプのディスプレイ装置も、ビデオ・インターフェース１９０などのインターフェースを介してシステム・バス１２１に接続される。モニタ１９１は、タッチ・スクリーン・パネルなどと統合することもできる。モニタおよび／またはタッチ・スクリーン・パネルは、タブレット・タイプのパーソナル・コンピュータ中など計算機装置１１０が組み込まれる容器に物理的に連結することもできることに留意されたい。さらに、計算機装置１１０などのコンピュータは、スピーカ１９５やプリンタ１９６など他の周辺出力装置を含むこともでき、これらは、出力周辺インターフェース１９４などを介して接続することができる。
【００１９】
コンピュータ１１０は、リモート・コンピュータ１８０など１つまたは複数のリモート・コンピュータへの論理接続を使用してネットワーク環境中で動作することができる。リモート・コンピュータ１８０は、パーソナル・コンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置または他の共通のネットワーク・ノードでもよく、一般にコンピュータ１１０に関して以上で説明した要素のうちの多くまたはすべてを含んでいるが、図１には、メモリ記憶装置１８１だけを示している。図１に示す論理接続は、ＬＡＮ（local area network：ローカル・エリア・ネットワーク）１７１およびＷＡＮ（wide area network：ワード・エリア・ネットワーク）１７３を含んでいるが、他のネットワークを含むこともできる。かかるネットワーク環境は、オフィス、企業規模のコンピュータ・ネットワーク、イントラ・ネットおよびインターネットでは一般的なものになっている。ＬＡＮネットワーク環境で使用するとき、コンピュータ１１０は、ネットワーク・インターフェースまたはネットワーク・アダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーク環境で使用するとき、コンピュータ１１０は一般に、インターネットなどＷＡＮ１７３上で通信を確立するためのモデム１７２または他の手段を含んでいる。モデム１７２は、内蔵されていても外付けでもよいが、ユーザ入力インターフェース１６０または他の適切なメカニズムを介してシステム・バス１２１に接続することができる。ネットワーク環境中では、コンピュータ１１０に関連して示すプログラム・モジュールまたはその一部分は、リモート・メモリ記憶装置に格納することができる。一例として、限定するものではないが、図１は、リモート・アプリケーション・プログラム１８５をメモリ装置１８１上に存在するものとして示している。図に示すネットワーク接続は、例示的なものであり、コンピュータ間で通信リンクを確立する他の手段を使用することもできることが理解されよう。
【００２０】
インプット・メソッドにコンテクストを提供すること
本発明は一般に、インプット・メソッドに実行可能コードのコンテクスト情報を提供する方法およびシステムを対象としている。本明細書中で使用しているように、コンテクスト情報は、一般にインプット・スコープ（input scope）を意味している。インプット・スコープとは、どのような単語、数字、および句読点を書き込むことができるかを定義するために使用され、どの順番でこれらを書き込むことができるかを指定することができる、言語のサブセットのことである。インプット・スコープは、アプリケーションで使用され、インプット・メソッドの認識機構（recognizer）が使用する言語モデルを、アプリケーションがテキスト・フィールド中に要求するテキスト入力のそのタイプに限定することができる。理解されるように、アプリケーションやフォームがテキスト・フィールド中にどのタイプのテキスト入力を要求しているかを指定する、アプリケーションおよびフォームをサポートする、アーキテクチャを提供することにより、本発明では、高度なインプット・メソッドが、アプリケーション・フィールドへのテキスト入力についてのより高い確度の認識率を達成できるようになる。ウェブ申し込みフォーム（web order form）中または個人的な連絡先を更新するためのダイアログ・ウィンドウ中のフィールドのような、フォーム（forms）およびダイアログ（dialog）内の多数のテキスト入力フィールドは、力強くタイプ入力することができる。要求されるテキストのタイプについての情報は、高度なインプット・メソッドの認識エンジンに対して指定されると、確度を大幅に改善することができる。
【００２１】
本発明のアーキテクチャは、フィールドへのテキスト入力を予想するアプリケーションまたはフォームが、この高度なインプット・メソッドと直接に対話せずに、一般的な方法で、このコンテクスト情報を提供することを、可能にする。この目的を達成するために、このアーキテクチャでは、コンテクスト情報を提供するための一般的なインターフェースが提供され、その結果、アプリケーションは、テキスト入力を要求するアプリケーションのフィールドのどれについてもインプット・スコープを提供することができる。このシステムおよび方法は、また、一般的なＡＰＩを提供して、どのようなインプット・メソッドも、アプリケーションが提供するコンテクスト情報を使用して、認識確度を改善できるようになる。さらに、どのようなインプット・メソッドも、アプリケーションが提供するコンテクスト情報を使用することができるので、ユーザは、インプット・メソッドを切り換えて、コンテクスト情報を失わずにこのアプリケーションに対して情報を入力することができる。理解されるように、本明細書中で説明している様々なブロック図、フローチャートおよびシナリオは、例にすぎず、本発明が適用されることになるシナリオは他にも多数存在する。
【００２２】
図面のうちの図２を参照すると、インプット・メソッドに実行可能コードのコンテクスト情報を提供するためのシステム・コンポーネントのアーキテクチャの一例を一般的に表すブロック図が示されている。この図に示すブロック内に実装される機能を、別々のコンポーネントとして実装することができ、またこれらブロックのうちのいくつかまたはすべての機能を１つのコンポーネント内に実装することもできることが当業者には理解されよう。例えば、コンテクスト・コンポーネント２０２の機能をコンテクスト・クライアント２０８中に含めることもできる。あるいは、コンテクスト・コンポーネント２０２中のＩｎｐｕｔＳｃｏｐｅＣｏｌｌｅｃｔｉｏｎインターフェースのための機能を別のコンポーネント中に実装することもできる。
【００２３】
フィールドへのテキスト入力を要求する実行可能コード１３５はどれでも、ＳｅｔＩｎｐｕｔＳｃｏｐｅインターフェース２０４などのインターフェースを呼び出すことによってコンテクスト・コンポーネント２０２に、そのフィールドについてのコンテクスト情報を提供することができる。この実行可能コード１３５は、カーネル・コンポーネント、アプリケーション・プログラム、ダイアログ・ボックスまたはフォーム、スクリプト、リンクされたライブラリ、リンクされたオブジェクトまたは埋込みオブジェクト、など任意のタイプの実行可能ソフトウェア・コードとすることができる。コンテクスト・コンポーネント２０２は、実行可能コード１３５のインプット・スコープを設定するための、ＳｅｔＩｎｐｕｔＳｃｏｐｅインターフェース２０４などのインターフェースを含み、また実行可能コード１３５のテキスト入力フィールドについて設定されているインプット・スコープを取得するための、ＩｎｐｕｔＳｃｏｐｅＣｏｌｌｅｃｔｉｏｎインターフェースなどのインターフェースも含んでいる。このコンテクスト・コンポーネントは、カーネル・コンポーネント、アプリケーション・コンポーネント、リンクされたライブラリのコンポーネント、オブジェクトなどを含めてどのような実行可能ソフトウェア・コードとすることもできる。１つまたは複数の入力方式エディタ（Input Method Editors）２１０、手書き認識機構（Handwriting Recognizer）２１２、音声認識機構（Speech Recognizer）２１４、追加の任意タイプのインプット・メソッドの他の認識機構などのコンテクスト・クライアント２０８は、コンテクスト・コンポーネント２０２の一部として含まれるＩｎｐｕｔＳｃｏｐｅＣｏｌｌｅｃｔｉｏｎインターフェース２０６に照会して実行可能コード１３５について設定されたインプット・スコープを取得することができる。このアーキテクチャは、フィールドまたはフォームに対するテキスト入力を要求するアプリケーションまたは他の実行可能コードが、その高度なインプット・メソッドと直接に対話せずに、一般的な方法でインプット・スコープのコンテクストを提供することを、可能にする。
【００２４】
図２に示すＳｅｔＩｎｐｕｔＳｃｏｐｅインターフェース２０４は、ＡＰＩ、オブジェクト、コントロール、または他の実行可能コードとすることができる。例えば、一実施形態では、ＳｅｔＩｎｐｕｔＳｃｏｐｅインターフェース２０４は、「ＳｅｔＩｎｐｕｔＳｃｏｐｅ」と名付けられたＡＰＩとすることができる。この実施形態では、ＳｅｔＩｎｐｕｔＳｃｏｐｅＡＰＩが、コントロールまたはテキスト入力フィールドを共通の１つのインプット・スコープまたは１つの単語リスト（wordlist）に関連付けることができる。例えば、このＳｅｔＩｎｐｕｔＳｃｏｐｅＡＰＩは、以下のプログラミング言語宣言を有することもある。  
HRESULT SetInputScope(  
[in] HWND hwnd;  
[in] InputScope inputscope).
【００２５】
このＡＰＩは、インプット・スコープのリストに対するウィンドウ・ハンドル（window handle）およびポインタを要求することもある。このＡＰＩをＳｅｔＩｎｐｕｔＳｃｏｐｅ（ｈｗｎｄＭｅ，ＩＳ＿ＵＲＬ）として呼び出すことにより、このＡＰＩを使用して、タイプＩｎｐｕｔＳｃｏｐｅのパラメータが定義する共通のインプット・スコープを設定することができる。式中、ＩＳ＿ＵＲＬは、キャラクタの関連付けられ、固定されたリストを伴う内部定義されたフォームを示すパラメータとすることができる。さらに、このＡＰＩをＳｅｔＩｎｐｕｔＳｃｏｐｅ（ｈｗｎｄＭｅ，｛“ｍａｌｅ”，“ｆｅｍａｌｅ”｝）として呼び出すことにより、このＡＰＩを使用して、タイプＩｎｐｕｔＳｃｏｐｅのパラメータとして単語リストを渡すことによって単語リストを設定することができる。
【００２６】
別の実施形態では、ＳｅｔＩｎｐｕｔＳｃｏｐｅインターフェース２０４は、「ＳｅｔＩｎｐｕｔＳｃｏｐｅｓ」と名付けられたＡＰＩとすることもできる。この実施形態では、このＳｅｔＩｎｐｕｔＳｃｏｐｅＡＰＩは、コントロールまたはテキスト入力フィールドを共通の１つのインプット・スコープ、共通の複数のインプット・スコープ、１つの単語リスト、または１つのカスタム・インプット・スコープに関連付けることができる。このカスタム・インプット・スコープは、Ｗ３ＣのＳＲＧＳ（Speech Recognition Grammar Specification：音声認識文法仕様）で指定されたような文法を含めて正規表現または他の任意の方法によって定義することができる。例えば、ＳｅｔＩｎｐｕｔＳｃｏｐｅＡＰＩは、以下のプログラミング言語宣言を有することができる。  
HRESULT SetInputScope(  
[in] HWND hwnd;  
[in] const InputScope *pInputScopes;  
[in] UNIT cInputScopes;  
[in] WCHAR **ppszPhraseList;  
[in] UINT cPhrases;  
[in] WCHAR *pszRegExp;  
[in] WCHAR *pszSRGS).
【００２７】
このＡＰＩは、ウィンドウ・ハンドル、インプット・スコープのリストへのポインタ、このリスト中のインプット・スコープ数、フレーズ・リストへのポインタ、このリスト中のフレーズ数、インプット・スコープを定義する正規表現、またはインプット・スコープを定義するＳＲＧＳなどの文法を要求することができる。このＡＰＩをＳｅｔＩｎｐｕｔＳｃｏｐｅｓ（ｈｗｎｄＭｅ，｛ＩＳ＿ＤＥＦＡＵＬＴ，ＩＳ＿ＰｅｒｓｏｎａｌＮａｍｅ＿ＦｕｌｌＮａｍｅ，ＩＳ＿ＥＭＡＩＬ＿ＵＳＥＲＮＡＭＥ，ＩＳ＿ＥＭＡＩＬ＿ＳＭＴＰＥＭＡＩＬＡＤＤＲＥＳＳ｝，４，ＮＵＬＬ，ＮＵＬＬ，ＮＵＬＬ，ＮＵＬＬ）として呼び出すことにより、このＡＰＩを使用してインプット・スコープのパラメータ・リストが渡すいくつかの共通のインプット・スコープを設定することができる。上式中で、ＩＳ＿ＤＥＦＡＵＬＴ、ＩＳ＿ＰＥＲＳＯＮＡＬＮＡＭＥ＿ＦＵＬＬＮＡＭＥ、ＩＳ＿ＥＭＡＩＬ＿ＵＳＥＲＮＡＭＥ、およびＩＳ＿ＥＭＡＩＬ＿ＳＭＴＰＥＭＡＩＬＡＤＤＲＥＳＳはそれぞれ、キャラクタの関連つけられ、固定されたリストを伴う内部定義されたフォーマットを示すことができる。さらに、このＡＰＩをＳｅｔＩｎｐｕｔＳｃｏｐｅｓ（ｈｗｎｄＭｅ，｛ＩＳ＿ＰＨＲＡＳＥＬＩＳＴ，ＩＳ＿ＤＥＦＡＵＬＴ｝，２，｛“ｍａｌｅ”，“ｆｅｍａｌｅ”｝，２，ＮＵＬＬ，ＮＵＬＬ）として呼び出すことにより、このＡＰＩを使用してタイプＩｎｐｕｔＳｃｏｐｅのパラメータとしてこのリストを渡すことによって単語またはフレーズのリストを設定することができる。さらに、このＡＰＩをＳｅｔＩｎｐｕｔＳｃｏｐｅｓ（ｈｗｎｄＭｅ，ＩＳ＿ＳＳＮ，２，ＮＵＬＬ，ＮＵＬＬ，ＩＳ＿ＤＩＧＩＴＳ．“−”．ＩＳ＿ＤＩＧＩＴ．“−”．ＩＳ＿ＤＩＧＩＴＳ，ＮＵＬＬ）として呼び出すことなどにより、このＡＰＩを使用して正規表現、文法、または他の定義によって定義されるカスタム・インプット・スコープを設定することができる。
【００２８】
どちらの実施形態においても、かかるＡＰＩが、インプット・スコープの定義による入力の強制（coercion）をサポートすることができる。強制とは、本明細書中では入力の認識をインプット・スコープの定義に制約することを意味している。この場合には、インプット・メソッドの認識機構（recognizer）は、インプット・スコープの正確な定義に従うように制約され、インプット・スコープの別の定義を使用しないこともある。入力の強制が指定されない場合、インプット・メソッドの認識エンジンは、この指定されたインプット・スコープを推奨に従って解釈することもあるが、認識をこの定義だけに制約しないこともある。さらに他の実施形態では、カスタム・インプット・スコープの定義が共通のインプット・スコープまたは単語リストと矛盾する場合には、カスタム・インプット・スコープの定義が単語リストの共通のインプット・スコープに優先することもある。
【００２９】
本発明は、追加のＡＰＩを加えることができるように、都合良く、拡張可能である。例えば、以下のようなＸＭＬスキーマを定義するＡＰＩを使用してインプット・スコープを設定することができる。  
HRESULT SetInputScopeXML(  
[in] HWND hwnd  
[in] WCHAR *pszXML).
【００３０】
図２に示すＩｎｐｕｔＳｃｏｐｅＣｏｌｌｅｃｔｉｏｎインターフェース２０６は、ＡＰＩ、オブジェクト、コントロールまたは他の実行可能コードとすることができる。例えば、一実施形態では、このＩｎｐｕｔＳｃｏｐｅＣｏｌｌｅｃｔｉｏｎインターフェース２０６は、任意の実行可能コードが指定するテキスト入力フィールドについてのインプット・スコープを取得するためのインプット・メソッドによって呼び出すことができるメソッドをもつオブジェクトとすることができる。この例示の実施形態では、インプット・メソッドの認識機構は、このアプリケーションのための有効なウィンドウ・ハンドルをもつオブジェクトのコンストラクタ（constructor）を呼び出し、次いでこのパブリック・プロパティにアクセスし、さらにこのパブリック・メソッドを呼び出して、このアプリケーションのためのウィンドウ・ハンドルに関連付けられた個々のインプット・スコープにアクセスすることができる。このオブジェクトは、コントロールに関連付けられた１組のインプット・スコープ、そのコントロールに関連する組からの個々のインプット・スコープ、そのコントロールに関連する組からの正規表現、およびそのコントロールに関連する組からのフレーズのリスト、を獲得することができる。かかるオブジェクトのインスタンスについてのクラス定義は、例えば以下のようにすることができる。  
Class Name  
public InputScopeCollection  
Public InputScopeCollection (IntPtr hWnd);  
Public bool HasInputScopes;  
Public int Count;  
Public InputScope [] InputScopes;  
Public string RegularExpression;  
Public string [] Phrases;  
methods  
public string Phrase(int index)  
public int InputScopes(int index)  
public string InputScopeEnumName(int index)  
public override string ToString()
【００３１】
コンストラクタ「ＩｎｐｕｔＳｃｏｐｅＣｏｌｌｅｃｔｉｏｎ」は、ウィンドウに対するハンドルを取り、それに関連付けられることが可能なる１組のインプット・スコープを見出すことができる。パブリック・プロパティ「ＨａｓＩｎｐｕｔＳｃｏｐｅｓ」は、このコントロールに関連付けられているインプット・スコープがあるかどうかを決定することができる。パブリック・プロパティ「Ｃｏｕｎｔ」は、このコントロールに関連付けられることが可能なるインプット・スコープ数を戻すことができる。パブリック・プロパティ「ＩｎｐｕｔＳｃｏｐｅｓ」は、このコントロールに関連付けられることが可能なる１組のインプット・スコープを収容するアレイを戻すことができる。パブリック・プロパティ「ＲｅｇｕｌａｒＥｘｐｒｅｓｓｉｏｎ」は、このコントロールに関連付けられた正規表現を戻すことができる。また、パブリック・プロパティ「Ｐｈｒａｓｅｓ」は、このコントロールに関連付けられたフレーズを含むストリング・アレイを戻すことができる。
【００３２】
テキスト入力フィールドについてのインプット・スコープを取得するためのＩｎｐｕｔＳｃｏｐｅＣｏｌｌｅｃｔｉｏｎインターフェース２０６の一実施形態であるオブジェクトによって、任意数のメソッドを提供することができる。例えば、以上のＩｎｐｕｔＳｃｏｐｅＣｏｌｌｅｃｔｉｏｎの例示のクラス定義において、メソッド「Ｐｈｒａｓｅ（ｉｎｔ  ｉｎｄｅｘ）」は、要求されたインデックスによって索引付けされたフレーズを戻すことができる。メソッド「ＩｎｐｕｔＳｃｏｐｅｓ（ｉｎｔ  ｉｎｄｅｘ）」は、要求されたインデックスによって索引付けされたインプット・スコープを戻すことができる。メソッド「ＩｎｐｕｔＳｃｏｐｅＥｎｕｍＮａｍｅ（ｉｎｔ  ｉｎｄｅｘ）」は、特定のロケーションインデックスにあるインプット・スコープ名を戻すことができる。また、メソッド「ＴｏＳｔｒｉｎｇ（  ）」は、特定のインスタンスについてのインプット・スコープのストリング表現を戻すことができる。図２に示すインターフェースは、例示的な表現であり、本発明は、インプット・スコープを設定し、コンテクスト情報を取得するために定義された他のインターフェースを使用して実施することもできることが当業者には理解されよう。
【００３３】
図３は、インプット・メソッドに対して実行可能コードのコンテクスト情報を提供するためのシステムが行うステップを一般的に示すフローチャートである。最初に、ステップ３０２で、任意の実行コードが、インターフェースを呼び出してテキスト・フィールドについてのインプット・スコープを設定することができる。インプット・スコープについてのインターフェース内の設定は、インプット・スコープのリスト、単語（words）またはフレーズのリスト、インプット・スコープを定義する正規表現、またはインプット・スコープを定義するＳＲＧＳなどの文法、を含むことができる。かかるインターフェースを呼び出すのに応じて、ステップ３０４で、要求されたインプット・スコープが実行可能コードのテキスト・フィールドについて設定される。このインプット・スコープは、一時的なデータ構造に記憶することができ、また恒久的な記憶装置に保持し続けることもできる。インプット・スコープを設定した後、ステップ３０６で、インターフェースを呼び出してどのインプット・スコープが設定され、使用することができるかを知ることができる。例えば、高度なインプット・メソッドなら、実行可能コードの特定のテキスト・フィールドについてインプット・スコープが何であれ設定されているかどうかを知ることができる。ステップ３０８で、インプット・メソッドは、実行可能コードのテキスト・フィールドについて、個々のインプット・スコープ、１組のインプット・スコープ、インプット・スコープを定義する正規表現、または単語またはフレーズのリスト、など使用可能なインプット・スコープを獲得することができる。最後に、ステップ３１０で、取得されたインプット・スコープを使用して実行可能ソフトウェア・コードのテキスト・フィールドについて入力を認識することができる。インプット・メソッドの認識機構が使用する言語モデルを、このテキスト・フィールドについての実行可能コードが要求するテキスト入力のそのタイプに限定することによって、認識率についてのさらに高い確度を達成することができる。
【００３４】
実行可能コードの開発業者は、本発明を使用して実行可能コードのテキスト入力フィールドにタグ付けして、高度なインプット・メソッドによる確度のより高い認識率を達成することができる。例えば、開発業者は、タブレット・パーソナル・コンピュータで使用するように設計された不動産依頼フォーム（Real Estate Request form）を作成することを決めることができ、このタブレット・パーソナル・コンピュータは、手書き文字を認識して、不動産仲介業者が手書き文字を使用してかかるフォームを完成すること、を可能にする。このアプリケーションのための実行可能コードの設計および開発中、開発業者は、本発明の使用可能なインターフェースを再検討して、テキスト入力フィールドの個々のタイプについてのインプット・スコープと、インプット・スコープのあらかじめ定義されたフォーマットとを設定することができる。テキスト入力フィールドについての適切なあらかじめ定義された使用可能なフォーマットがあることを知ると、開発業者は、この依頼フォーム中の入力テキスト・フィールドおよびコントロールにタグ付けすることができる。開発業者は、使用するための日付についてのフォーマットおよび時刻についてのフォーマットなど、あらかじめ定義されたフォーマットを、「日付／時刻」フィールドによって簡単に組み合わせることもできることを見出して喜ぶ満足するもある。さらに開発業者は、所与のフィールドについて開発業者がリストを追加できることを見出す可能性がある。このリストは、所与のフィールドに入力するための認識率を改善することができ、またこれを使用して不動産仲介業者が、このフォームのフィールドに入力するために表示されたリストから項目を選択することができることに留意されたい。インプット・スコープのカスタム・フォーマットを必要とする可能性のあるどのようなフィールドについても、開発業者は、正規表現を使用してかかるカスタム・インプット・スコープを定義することができる。開発業者が、かかるアプリケーションを簡単に使用しアクセスできるようにするために、本発明のインプット・スコープについてのインターフェースおよびあらかじめ定義されたフォーマットをＳＤＫ（software development kit：ソフトウェア開発キット）または他の配布形式にパッケージ化することができる。
【００３５】
インプット・メソッドにコンテクストを提供するためのコンテクスト・タグ付けツール
別の実施形態では、本発明は、このアプリケーション自体を修正する必要なしに、アプリケーションが、その特定のテキスト入力フィールドについてのコンテクスト情報を提供する方法を提供することもできる。コンテクスト・タグ付けユーティリティを使用することによって、かかるコンテクスト情報を提供することができ、その結果、既存のアプリケーションが、本発明の使用からの恩恵を受けて高度なインプット・メソッドによるテキスト入力フィールドについての認識の確度を高めることができるようになる。本明細書中で使用しているコンテクスト・タグ付けとは、インプット・スコープをアプリケーションまたは実行可能コードのテキスト入力フィールドまたはコントロールに関連付けることを意味する。この実施形態では、タグ付けされるコンテクスト情報を既存のアプリケーションのためにロードすることができ、入力認識のために使用されるどのような高度なインプット・メソッドでも、このロードされたコンテクスト情報の使用に対して更新することができる。既存のアプリケーションまたは実行可能コードは、修正されないままにしておくことができ、それでもなお、このアプリケーションまたは実行可能コードの外部の手段によって本発明の利点を享受できる点が有利である。
【００３６】
外部手段を用いてコンテクスト情報を提供する一実施形態では、このアプリケーションまたは実行可能コードについてのインプット・スコープ情報を収容することができるマニフェスト・ファイルが作成されることになる。各アプリケーションまたは実行可能コードについて、コンテクスト・タグ付けツールによってこの実施形態において作成するマニフェスト・ファイルが存在することになり、各マニフェスト・ファイルは、このアプリケーションまたは実行可能コードの他のプログラム・ファイルと一緒に格納することもできる。この実施形態中でコンテクスト・タグ付けツールを使用して、実行可能コード中の特定のテキスト入力フィールドを、インプット・スコープを用いてタグ付けすることができる。次いで、このツールは、このマッピングを順次作成しマニフェスト・ファイルに書き込むことができる。さらに、このツールは、このマニフェスト・ファイルを特定のアプリケーションまたは実行可能コードについての正しいロケーションに格納すること、を確実にする。アプリケーション開発業者が、代わりに、このマニフェスト・ファイルを直接に作成することができ、またマニフェスト・ファイルを編集することもできる。
【００３７】
実行可能コードに関連するマニフェスト・ファイルを探し、このマニフェスト・ファイル内で特定のテキスト入力フィールドに関連するインプット・スコープを探す、命令を用いて高度なインプット・メソッドを更新することができる。特定のテキスト入力フィールドに関連付けられたインプット・スコープを見出すとすぐに、高度なインプット・メソッドは、コンテクスト情報を読み取り、次いでこのテキスト入力フィールドについての高度なインプット・メソッドによる入力認識で使用するためにこのコンテクスト情報を認識機構に渡すことができる。
【００３８】
図面のうちの図４を参照すると、コンテクスト・タグ付けユーティリティを使用して実行可能コードのコンテクスト情報をインプット・メソッドに提供するためのシステム・コンポーネントのアーキテクチャの一例を一般的に示すブロック図が示されている。この図に示すブロック内に実装される機能は、別々のコンポーネントとして実装することができ、またこれらのブロックのいくつかまたはすべての機能を１つのコンポーネント内に実装することができることが、当業者には理解されよう。例えば、コンテクスト・コンポーネント２０２の機能は、コンテクスト・クライアント２０８中に含めることができる。あるいは、このコンテクスト・タグ付けツール４０２中のマニフェスト・インターフェースについての機能の一部を別々のコンポーネント中に実装することができる。
【００３９】
フィールドへのテキスト入力を要求する実行可能コード１３５はどれも、コンテクスト・タグ付けツール４０２がタグ付けするフィールドについてのコンテクスト情報を有することができる。このコンテクスト・タグ付けツール４０２は、カーネル・コンポーネント、アプリケーション・プログラム、リンクされたライブラリ、などどのようなタイプの実行可能ソフトウェア・コードであってもよい。このコンテクスト・タグ付けツール４０２は、インプット・スコープを用いて実行可能コード中の特定のテキスト入力フィールドをタグ付けすることができる。このコンテクスト・タグ付けツール４０２は、ユーザ・インターフェース４０４、コントロール・インターフェース４０６、およびマニフェスト・インターフェース４０８を含むこともある。このユーザ・インターフェース４０４は、タグ付けすべき実行可能コードを選択するための画面、タグ・コントロール画面、選択コントロール画面、フレーズ・リストを管理する画面、およびカスタム・インプット・スコープを管理する画面を含むことができる。このコントロール・インターフェース４０６は、実行可能コード１３５の特定のテキスト入力フィールドについてのインプット・スコープを設定するための、ＳｅｔＩｎｐｕｔＳｃｏｐｅインターフェース２０４などのインターフェースを含むことができる。また、このマニフェスト・インターフェース４０８は、マニフェスト４１０を作成またはオープンし、特定のテキスト入力フィールドについてのインプット・スコープのマッピングをマニフェスト４１０に書き込むことができる。さらに、マニフェスト・インターフェース４０８により、特定のアプリケーションまたは実行可能コード１３５についてのプログラム・ファイルと一緒にマニフェスト４１０を格納できるようにすることができる。マニフェスト４１０は、ＸＭＬファイルなどのファイル、またはテキスト入力フィールドについてのコンテクスト情報を含む他の記憶オブジェクトとすることができる。例えば、電子メールのネーム・フィールドをマニフェスト４１０中のＵＲＬインプット・スコープとして定義することもできる。コンテクスト・コンポーネント２０２は、ＩｎｐｕｔＳｃｏｐｅＣｏｌｌｅｃｔｉｏｎインターフェース２０６などのインターフェースを呼び出すことによって、マニフェスト４１０中のコンテクスト情報にアクセスすることができる。この実施形態では、このコンテクスト・コンポーネント２０２は、マニフェスト４１０に格納されている、実行可能コード１３５のテキスト入力フィールドについての、インプット・スコープにアクセスするための、ＩｎｐｕｔＳｃｏｐｅＣｏｌｌｅｃｔｉｏｎインターフェース２０６などの、インターフェースを含んでいる。このコンテクスト・コンポーネントは、カーネル・コンポーネント、アプリケーション・コンポーネント、リンクされたライブラリのコンポーネント、オブジェクトなどを含めて任意の実行可能ソフトウェア・コードとすることができる。１つまたは複数の入力方式エディタ（Input Method Editor）２１０、手書き認識機構（Handwriting Recognizer）２１２、音声認識機構（Speech Recognizer）２１４、追加の任意タイプのインプット・メソッドの他の認識機構、などのコンテ��スト・クライアント２０８は、コンテクスト・コンポーネント２０２の一部として含まれているＩｎｐｕｔＳｃｏｐｅＣｏｌｌｅｃｔｉｏｎインターフェース２０６に照会して、実行可能コード１３５について設定されたインプット・スコープを取得することができる。このアーキテクチャにより、フィールドまたはフォームに対するテキスト入力を要求する既存のアプリケーションまたは他の実行可能コードは、その高度なインプット・メソッドと直接に対話することなく、またこの既存のアプリケーションまたは実行可能コードの修正を必要とすることなく、一般的な方法でインプット・スコープのコンテクストを提供することができるようになる。
【００４０】
図５は、コンテクスト・タグ付けユーティリティを使用して、インプット・メソッドに実行可能コードのコンテクスト情報を提供するシステムが行うステップを一般的に示すフローチャートである。最初に、ステップ５０２で、アプリケーションまたは実行可能コードを、そのテキスト入力フィールドにインプット・スコープを用いてタグ付けするために、選択する。この目的を達成するために、コンテクスト・タグ付けツール４０２を起動することができ、またアプリケーションまたは実行可能コード１３５を、そのテキスト入力フィールドがインプット・スコープを用いてタグ付けされるように選択することができる。次に、ステップ５０４でこの実行可能コードのフィールドまたはコントロールを、インプット・スコープを用いてタグ付けするために選択することができる。フィールドまたはコントロールを選択した後、ステップ５０６で、インプット・スコープを、このフィールドまたはコントロールに関連付けるために選択することができる。選択されるインプット・スコープは、インプット・スコープのリスト、単語（words）またはフレーズのリスト、インプット・スコープを定義する正規表現、またはインプット・スコープを定義するＳＲＧＳなどの文法、とすることができる。ステップ５０８で、この選択されたフィールドまたはコントロールをこの選択されたインプット・スコープに関連付けるタグをマニフェスト４１０に追加する。フィールドまたはコントロールを、インプット・スコープを用いてタグ付けして、このマニフェストに格納した後、高度なインプット・メソッドは、フィールドまたはコントロールをこのマニフェストからのインプット・スコープに関連付けるタグを取得することができる。例えば、高度なインプット・メソッドは、コンテクスト・コンポーネント２０２の一部として含まれるＩｎｐｕｔＳｃｏｐｅＣｏｌｌｅｃｔｉｏｎインターフェース２０６に照会して、このマニフェストからこのタグを取得することができる。最後にステップ５１２で、この取得したインプット・スコープを適用して、実行可能ソフトウェア・コードのテキスト・フィールドについての入力を認識することができる。以前に指摘したように、このインプット・スコープは、個々のインプット・スコープ、１組のインプット・スコープ、インプット・スコープを定義する正規表現、または単語またはフレーズのリスト、とすることができる。この認識機構によるインプット・スコープの適用により、そのテキスト・フィールドに対して実行可能コードが要求するテキスト入力のタイプに使用する言語モデルを限定することができ、この入力の認識に、より高い確度を達成することができる。
【００４１】
コンテクスト・タグ付けツール４０２は、既存のアプリケーションまたは実行可能コードのテキスト入力フィールドまたはコントロールにインプット・スコープを用いてタグ付けするためのユーザ・インターフェース４０４を含むことができる。図６は、アプリケーションまたは実行可能コードを選択するためのユーザ・インターフェース４０４の画面の一実施形態を一般的に示す図の例である。歓迎画面（welcome screen）６０２は、インストールされたアプリケーションまたは実行可能コードについてのスクロール可能なリスト６０４を含むことができ、このリストから（タッチ・パッドまたはマウス、あるいは他の何らかの方法により）アプリケーションを選択して、そのテキスト入力フィールドまたはコントロールにインプット・スコープを用いてタグ付けすることができる。
【００４２】
図７は、フィールドまたはコントロールにインプット・スコープを用いてタグ付けするためのユーザ・インターフェース４０４の画面の一実施形態を一般的に示す図の一例である。「Ｔａｇ  Ｃｏｎｔｒｏｌｓ」とラベル付けされた画面７０２は一般に、タグ付けすべきコントロールを選択するための表示区域７０４を含むことができる。タグ・コントロール画面７０２の表示区域７０４に示すような選択コントロールボタンを活性化すると、図８の選択コントロール画面８０２を表示することができる。図８は、フィールドまたはコントロールを選択するためのコンテクスト・タグ付けツールのグラフィック・ユーザ・インターフェースの画面を一般的に示す図の一例である。この選択コントロール画面８０２は、歓迎画面６０２中で選択されるアプリケーションからコントロール情報を閲覧するための表示区域８０４を含むこともできる。表示区域８０４中の「Ｏｋ」ボタンを活性化してコントロールまたはフィールドを選択することにより、フィールドまたはコントロールにマーク付けして画面８０２を介してタグ付けすることができる。
【００４３】
図７のタグ・コントロール画面７０２に戻ると、表示区域７０４中で以前に選択されたコントロールまたはフィールドに関連することになる１つまたは複数のインプット・スコープを選択するための表示区域７０８も示されている。このインプット・スコープを選択し、それによって以前に選択済みのコントロールまたはフィールドに関連付けた後に、表示区域７１０中に示される「Ａｄｄ」ボタンを活性化することによって関連付けられたコンテクスト・タグをこのマニフェスト４１０中に追加し、または更新することができる。このマニフェスト４１０中に追加され、または更新されたコントロールまたはフィールドは、「Ｔａｇｇｅｄ  Ｃｏｎｔｒｏｌｓ」とラベルが付けられた表示区域７０６中にリストアップすることができる。
【００４４】
さらに、ユーザ・インターフェース４０４は、図９の「Ｍａｎａｇｅ  Ｐｈｒａｓｅ  Ｌｉｓｔ」画面９０２上に示すようなフレーズ・リスト・エディタを含むこともできる。図９は、フレーズ・リストを管理するためのコンテクスト・タグ付けツールのグラフィック・ユーザ・インターフェースの画面を一般的に示す図の一例である。フレーズ・リスト・エディタ９０４を使用して、テキスト入力フィールドまたはコントロールについての表示区域７０８中に、インプット・スコープとして使用可能とすることができるフレーズ・リストを、作成したり、編集したり、管理したりすることができる。既存のフレーズ・リストを削除したり、または新しいフレーズ・リストを作成したりする際に便利なように、表示区域９０６に使用可能なフレーズ・リストを表示することができる。同様に、ユーザ・インターフェース４０４は、図１０の「Ｍａｎａｇｅ  Ｃｕｓｔｏｍ  Ｓｃｏｐｅ」画面１００２上に示すようなカスタム・インプット・スコープ・エディタを含むこともできる。図１０は、カスタム・スコープを管理するためのコンテクスト・タグ付けツールのグラフィック・ユーザ・インターフェースの画面を一般的に示す図の一例である。カスタム・インプット・スコープ・エディタ１００４を使用して、テキスト入力フィールドまたはコントロールについての表示区域７０８中に、インプット・スコープとして使用可能なことすることができるカスタム・インプット・スコープを定義したり、編集したり、管理したりすることができる。既存のカスタム・インプット・スコープを削除し、または新しいカスタム・インプット・スコープを作成する際に便利なように、表示区域１００６に使用可能なカスタム・インプット・スコープを表示することができる。
【００４５】
以上で説明したコンテクスト・タグ付けツールのユーザ・インターフェース４０４は、任意の実行可能コードまたはアプリケーションが、本発明の使用からの恩恵を受けて、そのアプリケーションまたは実行可能コード自体を修正する必要なく、認識の確度を向上できるようにする点で有利である。本発明は、不動産依頼フォーム、オンライン登録フォーム、電子商取引注文フォーム、オンライン支払いフォーム、などの任意の実行可能コードまたはアプリケーションの機能を高めることができる。本発明は、インプット・スコープ、単語リスト、および正規表現の組合せを含むことができるコンテクスト情報についてのフォーマットを、この組合せを実行可能コードのテキスト入力フィールドに付属させる（attaching）ためのインターフェースと共に提供する。
【００４６】
前述の詳細な説明から分かるように、本発明では、インプット・メソッドに実行可能コードのコンテクスト情報を提供するための改善されたシステムおよび方法が提供される。本発明のアーキテクチャは、アプリケーションが、手書き、音声、インプット・メソッド・エディタなど高度なインプット・メソッドを介してテキスト入力のエントリについてのユーザの経験を改善するために、テキスト入力フィールドについてのコンテクスト・プロパティを指定するために使用することができる共通の一体化されたコンテクスト表現を定義している。このコンテクスト情報は、拡張可能であり、開発業者は、より詳細なコンテクスト制約を望み通りに提供することができる。今や理解されるように、本発明では、アプリケーション・オーサリング・プラットフォームをサポートするインターフェースを有するフレームワークが提供され、それによってアプリケーション開発業者は、このシステムに対するかかるコンテクスト情報を簡単に指定し、このコンテクスト情報を正しいインプット・メソッドに確実に転送することができるようになる。したがって、本方法およびシステムでは、最新のコンピューティングで必要とされる重要な長所および利点がもたらされる。さらに、本発明は、実行可能コードまたはアプリケーションを修正する必要がないコンテクスト・タグ付けツールを使用することによって、既存の実行可能コードまたはアプリケーションのコンテクスト情報を提供するための解決方法も提供している。マニフェストをこれらのプログラム・ファイルと共に格納することができ、実行可能コードまたはプログラムが使用する高度な任意のインプット・メソッドを、そのマニフェスト中に格納されるコンテクスト情報にアクセスするための命令で更新することができる。
【００４７】
本発明では、様々な変更および代替構造の余地があるが、本発明の実施形態のある種の例について図面に示し、以上で詳細に説明してきた。しかし、本発明を開示の特定の形態に限定する意図はなく、逆に、本発明の趣旨および範囲内に含まれるすべての変更形態、代替構造および等価物を包含することを意図していることを理解されたい。
【図面の簡単な説明】
【００４８】
【図１】本発明を組み込むことができるコンピュータ・システムを一般的に示すブロック図である。
【図２】本発明の一態様による、インプット・メソッドに実行可能コードのコンテクスト情報を提供するシステム・コンポーネントのアーキテクチャの一例を一般的に示すブロック図である。
【図３】本発明の一態様による、インプット・メソッドに実行可能コードのコンテクスト情報を提供するシステムによって行われる例示のステップを一般的に示すフローチャートである。
【図４】本発明の一態様による、コンテクスト・タグ付けユーティリティを使用してインプット・メソッドに実行可能コードのコンテクスト情報を提供するシステム・コンポーネントのアーキテクチャの一例を一般的に示すブロック図である。
【図５】本発明の一態様による、コンテクスト・タグ付けユーティリティを使用してインプット・メソッドに実行可能コードのコンテクスト情報を提供するシステムによって行われる例示のステップを一般的に示すフローチャートである。
【図６】本発明の一態様による、アプリケーションまたは実行可能コードを選択するコンテクスト・タグ付けユーティリティのグラフィック・ユーザ・インターフェースの画面を一般的に示す図の一例である。
【図７】本発明の一態様による、フィールドまたはコントロールにインプット・スコープを用いてタグ付けするコンテクスト・タグ付けユーティリティのグラフィック・ユーザ・インターフェースの画面を一般的に示す図の一例である。
【図８】本発明の一態様による、フィールドまたはコントロールを選択するコンテクスト・タグ付けツールのグラフィック・ユーザ・インターフェースの画面を一般的に示す図の一例である。
【図９】本発明の一態様による、フレーズ・リストを管理するコンテクスト・タグ付けツールのグラフィック・ユーザ・インターフェースの画面を一般的に示す図の一例である。
【図１０】本発明の一態様による、カスタム・スコープを管理するコンテクスト・タグ付けツールのグラフィック・ユーザ・インターフェースの画面を一般的に示す図の一例である。
【符号の説明】
【００４９】
１００  計算機システム環境
１１０  コンピュータ
１２０  処理装置
１２１  システム・バス
１３０  システム・メモリ
１３１  ＲＯＭ
１３２  ＲＡＭ
１３３  ＢＩＯＳ
１３４  オペレーティング・システム
１３５  アプリケーション・プログラム（実行可能コード）
１３６  他のプログラム・モジュール
１３７  プログラム・データ
１４０  着脱不能な不揮発性メモリ・インターフェース
１４１  ハードディスク・ドライブ
１４４  オペレーティング・システム
１４５  アプリケーション・プログラム
１４６  他のプログラム・モジュール
１４７  プログラム・データ
１５０  着脱可能な不揮発性メモリ・インターフェース
１５１  磁気ディスク・ドライブ
１５２  着脱可能な不揮発性の磁気ディスク
１５５  光ディスク・ドライブ
１５６  着脱可能な不揮発性の光ディスク
１６０  ユーザ入力インターフェース
１６１  マウス
１６２  キーボード
１６３  マイク
１６４  タブレット
１７０  ネットワーク・インターフェース
１７１  ローカル・エリア・ネットワーク
１７２  モデム
１７３  ワイド・エリア・ネットワーク
１８０  リモート・コンピュータ
１８１  メモリ記憶装置
１８５  リモート・アプリケーション・プログラム
１９０  ビデオ・インターフェース
１９１  モニタ
１９２  タッチ・スクリーン・インターフェース
１９３  出力周辺インターフェース
１９４  スピーカ
１９５  プリンタ
２０２  コンテクスト・コンポーネント
２０４  ＳｅｔＩｎｐｕｔＳｃｏｐｅインターフェース
２０６  ＩｎｐｕｔＳｃｏｐｅＣｏｌｌｅｃｔｉｏｎインターフェース
２０８  コンテクスト・クライアント
２１０  入力方式エディタ
２１２  手書き認識機構
２１４  音声認識機構
２０２  コンテクスト・コンポーネント
２０６  ＩｎｐｕｔＳｃｏｐｅＣｏｌｌｅｃｔｉｏｎインターフェース
２０８  コンテクスト・クライアント
２１０  入力方式エディタ
２１２  手書き認識機構
２１４  音声認識機構
４０２  コンテクスト・タグ付けツール
４０４  ユーザ・インターフェース
４０６  コントロール・インターフェース
４０８  マニフェスト・インターフェース
４１０  マニフェスト
６０２  歓迎画面（welcome screen）
６０４  実行可能コードについてのスクロール可能なリスト
７０２  「Ｔａｇ  Ｃｏｎｔｒｏｌｓ」とラベル付けされた画面
７０４  タグ付けすべきコントロールを選択するための表示区域
７０６  「Ｔａｇｇｅｄ  Ｃｏｎｔｒｏｌｓ」とラベルが付けられた表示区域
７０８  テキスト入力フィールドまたはコントロールについての表示区域
７１０  マニフェストにタグを追加／更新するＡｄｄ釦を備えた表示区域
８０２  フィールドまたはコントロールを選択するためのコンテクスト・タグ付けツールのグラフィック・ユーザ・インターフェースの画面
８０４  歓迎画面６０２中で選択されるアプリケーションからコントロール情報を閲覧するための表示区域
９０２  「Ｍａｎａｇｅ  Ｐｈｒａｓｅ  Ｌｉｓｔ」画面
９０４  フレーズ・リスト・エディタの表示区域
１００２  「Ｍａｎａｇｅ  Ｃｕｓｔｏｍ  Ｓｃｏｐｅ」画面
１００４  カスタム・インプット・スコープ・エディタ
１００６  利用可能なカスタム・スコープの表示区域
【図１】
2005135398.tif 000003
【図２】
2005135398.tif 000004
【図３】
2005135398.tif 000005
【図４】
2005135398.tif 000006
【図５】
2005135398.tif 000007
【図６】
2005135398.tif 000008
【図７】
2005135398.tif 000009
【図８】
2005135398.tif 000010
【図９】
2005135398.tif 000011
【図１０】
2005135398.tif 000012