JP5921527B2 - インプットメソッドエディタのための拡張フレームワーク - Google Patents

インプットメソッドエディタのための拡張フレームワーク Download PDF

Info

Publication number
JP5921527B2
JP5921527B2 JP2013504089A JP2013504089A JP5921527B2 JP 5921527 B2 JP5921527 B2 JP 5921527B2 JP 2013504089 A JP2013504089 A JP 2013504089A JP 2013504089 A JP2013504089 A JP 2013504089A JP 5921527 B2 JP5921527 B2 JP 5921527B2
Authority
JP
Japan
Prior art keywords
script
input
candidates
ime
engine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013504089A
Other languages
English (en)
Other versions
JP2013524372A (ja
Inventor
ヨン−ガン・ワン
リアンイ・オウ
インフェイ・チャン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of JP2013524372A publication Critical patent/JP2013524372A/ja
Application granted granted Critical
Publication of JP5921527B2 publication Critical patent/JP5921527B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/02Input arrangements using manually operated switches, e.g. using keyboards or dials
    • G06F3/023Arrangements for converting discrete items of information into a coded form, e.g. arrangements for interpreting keyboard generated codes as alphanumeric codes, operand codes or instruction codes
    • G06F3/0233Character input methods
    • G06F3/0237Character input methods using prediction or retrieval techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/146Coding or compression of tree-structured data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/018Input/output arrangements for oriental characters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/02Input arrangements using manually operated switches, e.g. using keyboards or dials
    • G06F3/023Arrangements for converting discrete items of information into a coded form, e.g. arrangements for interpreting keyboard generated codes as alphanumeric codes, operand codes or instruction codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/40Processing or translation of natural language
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/454Multi-language systems; Localisation; Internationalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • G06F9/45512Command shells

Description

この開示は、入力方式(input methods:インプットメソッド)に関係する。
1つまたは2つの文字がおおよそ1つの単語または意味に対応する表語文字のスクリプト(logographic script)を使用する言語は、コンピュータのキーボードまたはモバイル機器のキーパッドのような標準入力装置上のキーより更に多くの文字を有している。例えば、中国語は、基本のピンイン文字(Pinyin character)と5つの音調(tone:トーン)によって定義された数万の文字を含む。これらの多対1の組み合わせ(association)のマッピング(mapping:対応付け)は、入力装置上で発見されなかった文字及び記号の入力を容易にする入力方式によって実施され得る。従って、欧米流(Western-style)のキーボードまたはモバイル機器が、漢字を入力するために使用されることができる。同様に、入力方式が、日本語、韓国語、及び他の言語のような表語文字を含む多くの他の言語を入力するのに欧米流のキーボードを使用するために、使用されることができる。
インプットメソッドエディタ(input method editor:IME)は、入力方式を実現するために使用され得る。例として中国語を使用すると、ユーザは、1つ以上の漢字の候補を提供するためにIMEによって処理される、1つ以上のピンイン文字または照会(query:クエリー)を入力することができる。1つのシナリオは、照会対候補のマッピング(mapping:対応付け)関数:“f(query)=candidates(f(照会)=候補)”を含み、ここで、照会は一連のASCII(アスキー)キーを含み、そして候補は中国語の文字列もしくは非中国語の文字列のリストを含む。他の入力対出力のマッピングはASCIIの照会を中国語の候補または非中国語の候補に対応付けるが、そのようなマッピングは機能性において制限される。
この明細書は、インプットメソッドエディタ、及び、特にインプットメソッドエディタのための拡張フレームワークに関する技術を説明する。
概して、この明細書で説明された主題の1つの革新的な特徴は、インプットメソッドエディタ(IME)のユーザインタフェースへのユーザ入力を受け取る段階と、スクリプトエンジンに前記ユーザ入力を提供する段階と、スクリプトリポジトリに電子的に保存される複数のスクリプトの中からスクリプトを選択する段階と、1つ以上の候補を生成するために、前記スクリプトエンジンを使用して前記スクリプトを通じて前記ユーザ入力を処理する段階と、前記1つ以上の候補をIMEエンジンに提供する段階との動作を含む方法において具体化され得る。
いくらかの特徴において、前記動作は、サンドボックス処理を例示化する段階を更に含み、前記スクリプトエンジンは、前記サンドボックス処理の中で実行される。
いくらかの特徴において、前記IMEエンジンは、プロセス間通信を使用して、前記スクリプトエンジンと通信する。
いくらかの特徴において、前記動作は、前記サンドボックス処理の中でIPCサーバを実行する段階を更に含み、前記IPCサーバは、前記IMEエンジンと前記スクリプトエンジンとの間の通信を可能にする。
いくらかの特徴において、前記サンドボックス処理は、前記スクリプトエンジンの機能性を制限する。
いくらかの特徴において、前記ユーザ入力は、前記スクリプト、及び前記スクリプトによって処理されるべき入力を特定する入力系列を含む。
いくらかの特徴において、前記動作は、前記ユーザ入力を1つ以上のトリガ文字列と比較する段階と、前記ユーザ入力が前記1つ以上のトリガ文字列の内の1つに適合することを判定する段階と、前記1つ以上のトリガ文字列の内の1つに基づいて前記スクリプトを選択する段階とを更に含む。
いくらかの特徴において、前記動作は、拡張モードにおける前記IMEの動作を指示する入力を受け取る段階と、前記入力を受け取ることに応答して、前記拡張モードで前記IMEを動作させる段階と、前記拡張モードにおいて動作している場合に、全てのユーザ入力を前記スクリプトエンジンに提供する段階とを更に含む。
いくらかの特徴において、前記スクリプトを通じて前記ユーザ入力を処理する段階は、ウェブ基盤のサービスとのネットワーク接続を確立する段階と、前記ユーザ入力の少なくとも一部を前記ウェブ基盤のサービスに提供する段階と、前記ウェブ基盤のサービスから、前記ユーザ入力の前記少なくとも一部に基づいて生成された応答を受け取る段階との動作を含み、前記1つ以上の候補は、前記応答を含む。いくらかの特徴において、前記ウェブ基盤のサービスは、地図サービス、検索サービス、及び翻訳サービスの内の少なくとも1つを含む。
いくらかの特徴において、前記動作は、候補の第1のセットを含む第1の候補リストを生成する段階と、前記スクリプトエンジンを用いて生成された前記1つ以上の候補を包含する候補の第2のセットを含む第2の候補リストを生成する段階と、第3の候補リストを生成するために、前記候補の第1のセットの少なくとも一部及び前記候補の第2のセットの少なくとも一部を結合する段階と、ユーザ装置に前記第3の候補リストを表示する段階とを更に含む。
いくらかの特徴において、前記IMEエンジンは、前記ユーザインタフェース上で表示するように前記1つ以上の候補を処理する。
いくらかの特徴において、前記動作は、前記1つ以上の候補の内の1つの選択を指示する第2のユーザ入力を受け取る段階と、前記1つ以上の候補の内の前記1つをユーザ装置上で実行されるアプリケーションに入力する段階とを更に含む。いくらかの特徴において、前記アプリケーションは、ワードプロセッシングアプリケーション、文書編集アプリケーション、表計算ソフトアプリケーション、電子メールアプリケーション、プレゼンテーションアプリケーション、及びウェブブラウザの内の1つを含む。
いくらかの特徴において、前記スクリプトリポジトリに電子的に保存される各スクリプトは、複数の承認されたルーチンの中から選択された1つ以上のルーチンを含む。
いくらかの特徴において、前記動作は、前記スクリプトのスクリプト言語を特定する段階を更に含み、前記スクリプトエンジンは、前記スクリプトを通じて前記ユーザ入力を処理するための前記スクリプト言語に対応するランタイムを例示化する。
いくらかの特徴において、前記ユーザ入力は、第1の言語で提供される。いくらかの特徴において、前記1つ以上の候補は、前記第1の言語で提供される。いくらかの特徴において、前記1つ以上の候補は、第2の言語で提供される。いくらかの特徴において、前記1つ以上の候補は、前記第1の言語と第2の言語の組み合わせで提供される。いくらかの特徴において、前記1つ以上の候補は、1つ以上の記号を含む。
いくらかの特徴において、前記動作は、入力を受け取る段階と、前記入力に応答して、前記スクリプトを含むと共に、中央レジストリに電子的に保存される利用可能なスクリプトのリストを生成する段階と、前記スクリプトの選択を指示する第2の入力を受け取る段階と、前記第2の入力に応答して、前記中央レジストリから前記スクリプトを読み出す段階と、前記スクリプトを前記スクリプトリポジトリに保存する段階とを更に含む。
この明細書で説明された主題の別の革新的特徴は、IMEのユーザインタフェースへのユーザ入力を受け取る段階と、スクリプトエンジンに前記ユーザ入力を提供する段階と、スクリプトリポジトリに電子的に保存される複数のスクリプトの中からスクリプトを選択する段階と、前記スクリプトにおいて提供された指示に基づいて、ウェブ基盤のサービスとのネットワーク接続を確立する段階と、前記ユーザ入力の少なくとも一部を前記ウェブ基盤のサービスに提供する段階と、前記ウェブ基盤のサービスから応答を受け取る段階と、ユーザに前記応答を表示するために、IMEエンジンに前記応答を提供する段階との動作を含む方法において具体化され得る。
いくらかの特徴において、前記ウェブ基盤のサービスは、地図サービス、検索サービス、及び翻訳サービスの内の少なくとも1つを含む。いくらかの特徴において、前記ユーザ入力の前記少なくとも一部は前記地図サービスに提供され、前記応答は、前記地図サービスによって生成されると共に、ユーザが選択可能なハイパーリンクを含む。いくらかの特徴において、前記ユーザ入力の前記少なくとも一部は検索語として前記検索サービスに提供され、前記応答は、前記検索サービスによって生成されると共に、前記検索語に基づいて前記検索サービスによって生成された1つ以上の検索結果を含む。いくらかの特徴において、前記ユーザ入力の前記少なくとも一部は、前記翻訳サービスに提供されると共に、第1の言語で提供され、前記応答は、前記翻訳サービスによって生成されると共に、第2の言語で提供される。
概して、この明細書で説明された主題の別の特徴は、IMEシステムへのユーザ入力に基づいて1つ以上の候補を生成するために、前記IMEシステムによって実行可能なスクリプトファイルを受け取る段階と、前記スクリプトファイルを、複数のスクリプトを含む中央レジストリに電子的に保存する段階と、前記IMEシステムを包含するユーザ装置に対するダウンロード及びインストールに利用可能な前記複数のスクリプトを公開する段階との動作を含む方法において具体化され得る。
いくらかの特徴において、前記複数のスクリプトの各スクリプトは、複数の承認されたルーチンの中から選択された1つ以上のルーチンを含む。
いくらかの特徴において、前記複数のスクリプトの前記スクリプトは、“ジャバスクリプト(Java(登録商標)Script)”、“ルア(Lua)”、及び“ブイビースクリプト(VBScript:VBスクリプト)”の内の1つで書かれている。
いくらかの特徴において、前記複数のスクリプトの内の少なくとも1つのスクリプトは、前記1つ以上の候補を表示するための指示を提供する関連するメタデータを含む。いくらかの特徴において、前記指示は、候補リストに前記1つ以上の候補を表示するための番号順を提供することを含む。他の特徴において、前記指示は、候補リストに前記1つ以上の候補を表示するための文字順を提供することを含む。
この明細書で説明された主題の1つ以上の実施の詳細は、添付図面及び下記の記述において説明される。他の特性、特徴、及び主題の利点は、記述、図面、及び請求項から明白になるであろう。更に、上述の特徴を含む、この明細書で説明された主題の特徴は、1つ以上の組み合わせにおいて結合され得る。
ここで説明されるシステム及び方法を実施するために利用され得る一例のシステムの構成図である。 一例のインプットメソッドエディタ(IME)の構成図である。 一例のIME拡張フレームワークの構成図である。 IMEの命令拡張モードに関する一例の処理を例証するフローチャートである。 IMEの実施に関する一例の処理を例証するフローチャートである。 命令拡張モードに対応する一例の拡張を例証する図である。 図6Aの拡張に基づく出力例を例証する図である。
様々な図面における同様の参照符号は、同等の要素を示す。
§ 1.0 概説
この明細書は、インプットメソッドエディタ(IME)のための拡張フレームワークに関係する技術を説明する。一例の実施が英語及び中国語との関連で説明されることになるが、本開示は、容易に他の非表語文字言語(non-logographic language)(例えばドイツ語、フランス語、イタリア語、スペイン語、ポルトガル語、スウェーデン語を含む)、及び表語文字言語(logographic language)(例えば日本語、韓国語、及び/またはインド語派言語(Indic languages)を含む)に適用できる。
図1は、ここで説明されるシステム及び方法を実施するために利用され得る一例のシステム100の構成図である。システム100は、例えば、パーソナルコンピュータ装置のようなコンピュータ装置、または携帯電話、移動体通信装置、携帯情報機器(PDA)のような他の電子機器等を備え得る。システム100は、制御演算装置102、第1のデータストア104、第2のデータストア106、入力装置108、出力装置110、及びネットワークインタフェース112を備える。例えば、データバス及びマザーボードを含むバスシステム114は、コンポーネント102、104、106、108、110、及び112の間のデータ通信を確立して、制御するために使用され得る。他のシステムアーキテクチャが、同様に使用され得る。
制御演算装置102は、例えば、1つ以上のマイクロプロセッサを備えることができる。第1のデータストア104は、例えば、ダイナミックランダムアクセスメモリまたは他のタイプのコンピュータ読み取り可能な媒体メモリ装置のような、ランダムアクセスメモリ記憶装置を備えることができる。第2のデータストア106は、例えば、1つ以上のハードドライブ、フラッシュメモリ、及び/または読取専用メモリ、または他のタイプのコンピュータ読み取り可能な媒体メモリ装置を備えることができる。
一例の入力装置108は、キーボード、マウス、スタイラス等を備えることができ、そして一例の出力装置110は、表示装置、オーディオ装置等を備えることができる。ネットワークインタフェース112は、例えば、ネットワーク116へ、及びネットワーク116から、データを通信するように動作可能な有線ネットワーク装置または無線ネットワーク装置を備えることができる。ネットワーク116は、1つ以上のローカルエリアネットワーク(LAN)、及び/または、インターネットのような広域ネットワーク(WAN)を含むことができる。
いくらかの実施において、システム100は、データストア106のようなデータストアが提供するIMEコード101を備えることができる。IMEコード101は、実行によって制御演算装置102にIME機能を実行させる指示を含むことができる。IMEコード101は、スクリプト指示のような解釈された指示(interpreted instruction)、例えばウェブブラウザ環境において実行され得るジャバスクリプトまたはECMAスクリプト指示を含むことができる。例えばスタンドアロンアプリケーション(standalone application)、アプレット(applet)、プラグインモジュール(plug-in module)等の他の実装が同様に使用され得る。
IMEコード101の実行は、IMEインスタンス103を生成するか、もしくは開始する。IMEインスタンス103は、装置100における1つ以上の入力方式の処理を容易にし、その時間の間、システム100は、例えばハンジ(Hanzi)文字のような入力文字または記号に関する合成入力(composition input)を受け取ることができる。例えば、ユーザは、ハンジ(Hanzi)文字の識別のための合成入力を入力するために、1つ以上の入力装置108(例えば欧米流のキーボードのようなキーボード、手書き文字認識エンジンによって使用されるスタイラス等)を使用することができる。ある例において、ハンジ(Hanzi)文字は、1を超える合成入力から構成されることができる。
第1のデータストア104及び/または第2のデータストア106は、合成入力と文字との組み合わせ(association)を保存することができる。入力によって表された1つ以上の候補選択物(candidate selection)を特定するために、ユーザ入力に基づいて、インプットメソッドエディタインスタンス103は、第1のデータストア104及び/または第2のデータストア106内の情報を使用することができる。いくらかの実施において、1を超える候補選択物が特定されるならば、候補選択物が出力装置110上に表示される。入力装置108を使用して、ユーザは、そのユーザが入力することを望むハンジ(Hanzi)文字を、候補選択物の中から選択し得る。
いくらかの実施において、システム100上のIMEインスタンス103は、ピンイン(Pinyin)の合成入力を受け取り、その合成入力をハンジ(Hanzi)文字に変換することができる。IMEインスタンス103は、例えば、ハンジ(Hanzi)文字を表すために、キー入力(keystroke:キーストローク)から受け取られたピンイン(Pinyin)の音節または文字の合成物を使用することができる。各ピンイン(Pinyin)音節は、例えば、欧米流のキーボードにおける1つ以上のキー入力に対応し得る。ピンイン(Pinyin)IMEを使用して、ユーザは、ハンジ(Hanzi)文字の音を表す1つ以上のピンイン(Pinyin)音節を含む合成入力を使用することによって、ハンジ(Hanzi)文字を入力することができる。しかしながら、他の言語のための入力方式が、同様に容易にされ得る。
いくらかの実施において、システム100に対するアクセスを有する遠隔計算システム118が、更に、表語文字のスクリプトを編集するために使用され得る。例えば、システム100は、ネットワーク116を介して表語文字のスクリプトの編集能力を提供するサーバであり得る。1つの例において、ユーザは、遠隔計算システム106、例えばクライアントコンピュータを用いて、データストア104及び/またはデータストア106に保存された表語文字のスクリプトを編集することができる。システム100は、例えば、文字を選択すると共に、ネットワークインタフェース112を介してユーザからの合成入力を受け取ることができる。制御演算装置102は、例えば、選択された文字に隣接する1つ以上の文字を特定すると共に、受け取られた合成入力及び隣接する文字に基づいて、1つ以上の候補選択物を特定することができる。システム100は、もとの遠隔計算システムへ、候補選択物を含むデータ通信を送信することができる。
いくらかの実施において、IMEインスタンス103は、1つ以上の合成入力及び言語コンテキスト105に基づいて、候補選択物を特定することができる。例えば英語コンテキスト105a、中国語コンテキスト105b、韓国語コンテキスト105c等、言語コンテキスト105は、例えば、インプットメソッドエディタインスタンス103によってサポートされた異なる言語を定義することができる。例えば、IMEインスタンス103は、合成入力を英語のアルファベットに対応付けるために、英語コンテキスト105aを合成入力に適用することができる。同様に、IMEインスタンス103は、合成入力をピンイン(Pinyin)入力等に対応付けるために、中国語コンテキスト105bを合成入力に適用することができる。
合成入力と言語コンテキスト105に基づいて、IMEインスタンス103は、ユーザによる選択のための1つ以上の候補選択物を特定することができる。いくらかの実施において、言語コンテキスト105は、例えば英語からの候補選択物(例えば単語を定義する文字)が、漢字(Chinese character)、例えばハンジ(Hanzi)文字と同時に表示され得るインターリーブ表示モード(an interleaved display mode)のように、異なる言語によって定義された候補選択物を自動的に提供するために利用され得る。いくらかの実施において、言語コンテキスト105は、例えば英語のみからの候補選択物(例えば単語を定義する文字)が、第1の文字セットとして表示され得ると共に、中国語からの候補選択物、例えばハンジ(Hanzi)文字のみが、第2の文字セットとして表示され得るトグル表示モード(toggled display mode)のように、1つの言語によって定義された候補選択物を自動的に提供するために利用され得る。
図2は、一例のIMEシステム120の構成図である。IMEシステム120は、例えば、インプットメソッドエディタコード101、及び関連するデータストア104及び106を用いて実施され得る。IMEシステム120は、IMEエンジン122、文字データストア124、合成入力データストア126、言語モデルデータストア128、及び拡張フレームワーク200を備える。他のストレージアーキテクチャ(storage architecture)が、同様に使用され得る。文字データストア124は、1つ以上の言語モデルにおいて使用される表語文字のスクリプトの文字、そしてローマ字ベースまたは欧米流アルファベット、例えば英語、ドイツ語、スペイン語等の文字及び単語を含む。いくらかの実施において、文字データストア124は、更に、文字の間の関係に関する情報を含む。例えば、文字データストア124は、文字に隣接する文字に応じて文字に割り当てられたスコアまたは確率値を含むことができる。他の文脈上の関係データが、同様に使用され得る。下記において更に詳細に論じられるように、拡張フレームワーク200は、任意の照会(query)対候補(candidate)のマッピングをサポートするために、IMEエンジン122と相互に作用する。
合成入力データストア126は、合成入力と文字データストア124に保存された文字との組み合わせを含む。いくらかの実施において、合成入力データストア126は、文字データストア124内の文字のそれぞれを、インプットメソッドエディタエンジン122によって使用される合成入力に関連付けることができる。例えば、IMEエンジン122は、文字データストア124内の1つ以上の文字を、合成入力データストア126内の1つ以上の合成入力に関連付けるために、及び/または文字データストア124内の1つ以上の文字を、合成入力データストア126内の1つ以上の合成入力と同一であると見なすために、文字データストア124及び合成入力データストア126内の情報を使用することができる。
言語モデルデータストア128は、例えば英語モデル、中国語モデル等、1つ以上の言語モデルを定義することができる。例えば、各言語モデルは、合成入力のセットを入力する際のユーザの有望な意図を判定するために使用され得る、言語特有の文法、語句セット(phrase set)、動詞(verbal)等の特定の規則セットを定義することができる。各言語モデルは、更に、特定のユーザのユーザ履歴、例えば特定のユーザによって使用される単語及び語句(phrase)の辞書を含むことができる。
いくらかの実施において、IMEエンジン122は、言語コンテキスト105、例えば英語コンテキスト105a、中国語コンテキスト105b、韓国語コンテキスト105c等に従って合成入力を解釈することができる。合成入力が言語コンテキスト105に従って解釈される場合に、言語コンテキスト値107が判定され得る。言語コンテキスト値107及び合成入力に基づいて、ユーザに対して選択のために、候補選択物が特定されて、提示され得る。
例えば、いくつかの合成入力、例えばキー入力が、インプットメソッドエディタエンジン122によって受け取られ得る。それらのキー入力は、中国語コンテキスト105bにおける一連のピンイン(Pinyin)入力を定義し得ると共に、英語コンテキスト105aにおける一連の文字を定義し得る。その結果、1つ以上の英語の候補選択物、例えば単語と、1つ以上の中国語の候補選択物、例えばハンジ(Hanzi)文字が、選択のためにユーザに提示され得る。
いくらかの実施において、英語のコンテキスト値107aが、合成入力を英単語の接頭辞(prefix)と比較し、そして比較に基づいて英語のコンテキスト値を設定することによって判定され得る。例えば、合成入力“o-p-p-o”は、単語“opportunity(機会)”における文字列に適合する。英語のコンテキスト値107aは、例えば、比較で特定された接頭辞の適合に比例して設定されることができ、例えば、コンテキスト値は、合成入力“o-p”に関しては低くなり得るが、しかし、合成入力“o-p-p-o-r-t-u”に関しては非常に高くなり得る。
言語コンテキスト値107は、同様に、他の処理によって判定され得る。例えば、中国語のコンテキスト値107bは、中国語モデルに対して漢字を評価し、そして評価に基づいて中国語のコンテキスト値107bを設定することによって判定され得る。例えば、中国語モデルは、中国語の文法モデルを含むことができる。一例の中国語の文法モデルは、連続動詞構文(serial verb construction)モデル、完了相(perfective)及び未完了相(imperfective)モデル、及び他の文法モデルを含むことができる。
合成入力、例えばキー入力に基づいて、一連のピンイン(Pinyin)入力が特定され得る。ピンイン(Pinyin)合成入力は、同様に、ハンジ(Hanzi)文字を特定するために利用され得る。中国語の文法モデルは、ユーザが中国語の文脈において入力しようとする可能性(likelihood:尤度)を判定するために、ハンジ(Hanzi)文字に適用され得る。例えば、全て動詞であるハンジ(Hanzi)文字に帰着する合成入力文字列は、非常に低く得点を付けられることになるが、しかし、動詞と目的語を伴う結果に帰着する合成入力文字列は、より高い得点を付けられることになる。別の例として、“私は花をとても好む”と読める漢字文字列に帰着する合成入力は、より高い中国語のコンテキスト値107bを受け取り、“ベッド、牛、テレビ”と読める漢字文字列に帰着する合成入力文字列は、非常に低い中国語のコンテキスト値107bを受け取るであろう。
他の処理が、言語コンテキスト値107を判定するために使用され得る。例えば、特定の言語のあまり使われない単語のコンテキスト値は、より低く評価され、一方、ユーザプロファイルによって定義されたような、たびたび使用される単語及び語句は、より高く評価され得る、等。
§ 2.0 拡張フレームワーク
IMEは、一般的に“f(query)=candidate(s)(f(照会)=候補)”として提供され得る照会対候補のマッピング(mapping:対応付け)関数を提供し、ここで、“query(照会)”は、一連のASCII(アスキー)のキー(key)である。例として中国語を使用すると、結果として生じる候補は、中国語の文字列もしくは非中国語の文字列のリストを含む。例えば、
Figure 0005921527
は、ピンイン(Pinyin)IMEの基本入力(base input)モードであるピンイン(Pinyin)対中国語のマッピングを示す。
ASCII(アスキー)の照会を1つ以上の候補(例えば中国語の候補もしくは非中国語の候補)に対応付けることができる他のマッピングが存在する。1つの例として、IMEは、部分的な単語入力に基づく単語候補のリストを提供するために、英語の自動完了モード(auto-complete mode)で機能することができる。例えば、
Figure 0005921527
である。別の例として、IMEは、中国語の数字入力モードで機能することができる。例えば、
Figure 0005921527
である。
本開示のIME拡張フレームワークは、IMEが、異なるユーザの要求及び/または好みを実現させるために、任意の照会対候補のマッピングをサポートすることを可能にする(“拡張モード”として参照される)命令拡張モードを提供することによって、IMEの機能を拡張する。IME拡張フレームワークは、内在するマッピング関数(mapping function)のハードコーディング(hard-coding)を必要とせずに、これを達成する。一般的に、IME拡張フレームワークは、スクリプトエンジン、サンドボックス処理、スクリプトリポジトリ、プロセス間通信(IPC)メカニズム、公のアプリケーションプログラムインタフェース(API)、及びコンソールツール(console tool)を含む。スクリプトエンジンは、スクリプトリポジトリに保存された1つ以上のスクリプトを実行し、そして結果を返すように、スクリプト言語インタープリタのランタイムを主催(host)する。サンドボックス処理は、安全な環境においてスクリプトエンジンを実行する。IPCメカニズムは、IMEエンジンとサンドボックス処理との間の通信を可能にする。公のAPI(public API)によって、第三者(third-party:サードパーティ)開発者は統一された方法においてIME拡張を書くことが可能になり、そしてコンソールツールによって、開発者は作成された拡張スクリプトを検査及び証明することが可能になる。
図3は、一例のIME拡張フレームワーク200の構成図である。IME拡張フレームワーク200は、IMEが命令拡張モードにおいて動作している場合に実施されると共に、サンドボックス処理202、及びスクリプトリポジトリ204を含む。サンドボックス処理202は、IPCサーバ206、及びスクリプトエンジン208を実行する。IME拡張フレームワーク200は、ユーザ入力に基づいてスクリプトベースの照会対候補のマッピングを提供するために、IMEエンジン122と通信する。具体的には、ユーザは、1つ以上のアプリケーション220と情報をやりとりすることができる。各アプリケーション220は、ユーザ入力を受け取り、そしてユーザ入力に基づいて生成された1つ以上の候補を表示するためのユーザインタフェース222を備える。限定しない例として、各アプリケーション220は、ワードプロセッシングアプリケーション、文書編集アプリケーション、表計算ソフトアプリケーション、電子メールアプリケーション、プレゼンテーションアプリケーション、及び/またはウェブブラウザを含むことができる。
IME拡張フレームワーク200によって提供される照会対候補のマッピングは、簡単なテーブル索引(table look-up)によって実施され得る1対1のマッピングを含むことができる。IME拡張フレームワーク200によって提供されるマッピングは、更に、実施されたスクリプト言語に基づく更に複雑な照会対候補のマッピングを含むことができる。例えば、スクリプトベースの拡張は、下記のように、水平のレイアウトから垂直のレイアウトへユーザテキスト入力を変換するために提供され得る。
Figure 0005921527
更に、IME拡張フレームワーク200は、ネットワーク(例えば図1のネットワーク116)を通して遠隔資源に接続することによって、遠隔資源へのアクセスを可能にする。例えば、拡張スクリプトを実行することにより、オンラインサービスプロバイダ(例えばグーグル(Google))によって提供されたサービスに接続することができる。この方法において、拡張スクリプト関数は、更に有益な入力機能を実施するために、サービスプロバイダのサービスにアクセスすることができる。入力機能の例は、(例えばユーザが選択可能なハイパーリンクとして提供する)詳細なアドレス文字列(address string)に関してグーグルマップ(Google Maps)に照会すること、IMEユーザをグーグル検索(Google search)に誘導すること、グーグル提案結果(Google suggested result)を読み出すこと、グーグル翻訳(Google Translate)を使用してユーザ入力を他の言語及び/または記号に変換することを含むことができる。下記において更に詳細に論じられるように、C++のプログラミングを行い(C++ coding)、そしてコンパイルすること(compiling)に相反して、IME拡張フレームワーク200によって、更に、第三者開発者は、スクリプトプログラミングを使用して、カスタマイズされた照会対候補のマッピングロジック(customized query-to-candidate(s) mapping logic:マッピング論理)を書くことが可能になる。
拡張スクリプトは、第三者によって生成されて検査され得る。機能拡張スクリプト(functioning extension script)は、IMEユーザに利用可能になるように、登録されて公開され得る。例えば、IMEを通して、ユーザは、利用可能なリスト(すなわち公開された拡張スクリプト)を要求することができる。例えば、IMEは、公開された拡張スクリプトを保存する中央レジストリに、ネットワークを介して(例えば、図1の中央レジストリ230に、ネットワーク116を介して)接続することができる。ユーザは、1つ以上の拡張スクリプトを選択することができると共に、拡張モードにおいてIMEを操作している場合に、選択された拡張スクリプトは、呼び出されるべきユーザのローカル装置にダウンロードされてインストールされる。拡張スクリプトは、システム100のデジタルメモリ内に提供され得るスクリプトリポジトリ204に保存されることができる。スクリプトリポジトリによって、スクリプトエンジン208は、局所的に対応するスクリプトをロードして実行することが可能になる。ユーザによってインストールされた全てのスクリプトは、スクリプトリポジトリ204に保存される。いくらかの実施において、(例えば第三者開発者によって維持される)1つ以上のスクリプトホストウェブサイト(script host web site)は、それぞれ、ユーザ装置から遠く離れた遠隔スクリプトリポジトリとして機能する。ユーザ装置は、1つ以上のスクリプトホストウェブサイトにアクセスすることができると共に、特定のサイトから入手可能な、利用可能なスクリプトのリストを提供されることができ、そして選択されたスクリプトをスクリプトリポジトリ204にダウンロードすることができる。
拡張モードにおいて動作している場合に、IME拡張フレームワーク200は、インストールされた命令拡張を検索して実行し、そしてユーザに対して表示するように、1つ以上の結果をIMEエンジンに提供する。その結果は、表語文字の文字(logographic character)、非表語文字の文字(non-logographic character)、数字、数式、ハイパーテキストリンク、アイコン、顔文字(emoticon)、及び/または記号から構成されることができる。限定しない例として、記号は、数学的記号(例えば、
Figure 0005921527
等)、星座の記号(zodiac symbol)(例えば、
Figure 0005921527
等)、または他のタイプの記号(例えば、
Figure 0005921527
等)を含むことができる。拡張モードは、(“i−extモード”として参照される)命令拡張モード、トリガ拡張モード(trigger extension mode)、及びハンドラ拡張モード(handler extension mode)を含む。命令拡張モードでは、ユーザが特定の文字列(character sequence)を入力する場合に、拡張関数が呼ばれる。一例の文字列は、下記で更に詳細に論じられる“i+命令+引数”を含み得る。トリガ拡張モードでは、入力系列、またはIMEによって生成された候補の内の1つが、事前に登録されたトリガ文字列(trigger string)またはトリガパターン(trigger pattern)に適合する場合に、拡張関数が呼ばれる。すなわち、IMEは、入力系列に基づいて1つ以上の候補を生成すると共に、入力系列と1つ以上の候補の両方が、事前に登録されたトリガパターンとの適合を判定するために精査される。ハンドラ拡張モードでは、ユーザ入力の全てが拡張関数に向けられると共に、IMEによって表示されるべき全ての候補が拡張関数によって生成される。このモードでは、IMEの動作は、呼ばれた拡張スクリプトによって制御される。従って、ユーザは、ハンドラ拡張モードに入ると共に、全てのユーザ入力を拡張スクリプトに送るように、IMEに明確に指示する(例えば、拡張を登録したホットキーをクリックする)。
第三者開発者は、複数文字の命令名称(multi-character command name)、入力関数名(entry function name)、及び簡単な説明(short description)を提供することによって、命令拡張モードにおいて使用するための拡張スクリプトを登録することができる。トリガ拡張モードにおいて使用するために、第三者開発者は、入力関数名、簡単な説明、
ユーザ入力に適合させる0〜Nのトリガ文字列/パターン、1つ以上のIMEが生成した候補に適合させる0〜Mのトリガ文字列/パターンを提供することによって、拡張スクリプトを登録することができる。ハンドラ拡張モードにおいて使用するために、第三者開発者は、拡張によって処理された入力モードの名前、入力関数名、簡単な説明、及びユーザがハンドラ拡張モードを活性化することを可能にするための、あつらえのホットキーまたはメニュー項目を提供することによって、拡張スクリプトを登録することができる。この情報は、IMEユーザによるダウンロード及びインストールのために中央リポジトリに保存される。
拡張モード(すなわち、命令拡張モード、トリガ拡張モード、及びハンドラ拡張モードの内の1つ)におけるIMEの動作が、下記で更に詳細に論じられる。
§ 2.1 スクリプトエンジン
スクリプトエンジンは、スクリプトランタイム環境(script runtime environment)を初期化し、ランタイムの中に内蔵式のルーチン(built-in routine)を登録し、スクリプトリポジトリからスクリプトを読み込み、そしてIMEコアエンジンの要求ごとにマッピング関数を評価する。複数のスクリプト言語(例えば“ジャバスクリプト”、“ルア(Lua)”、または“VBスクリプト(VBScript)”)が、同時に(in parallel:並行して)サポートされ得る。例えば、スクリプトエンジンは、読み込まれたスクリプトのファイル拡張子(例えば、“.js”、“.lua”、または“.vb”)に基づいて、対応するスクリプト言語ランタイム(script language runtime)を選択すると共に、ランタイムにおける関数を評価することができる。
いくらかの実施において、スクリプト言語は、直接埋め込まれ得ると共に、MSウィンドウズ(登録商標)スクリプトエンジンは、“IActiveScript”インタフェースを介して使用され得る。そのような実施において、追加のインストーラの大きさが必要とされず、2つのスクリプト言語(例えば、ジャバスクリプト及びVBスクリプト)は、追加の労力なしでサポートされ得ると共に、事前にインストールされた(pre-installed)“ActiveX”制御が利用され得る。いくらかの実施において、内蔵された(embedded)“ルア(Lua)”ランタイムエンジンが提供され得る。“ルア(Lua)”ランタイムメモリの必要量は、非常に小さい(例えば、わずか50KBの追加のインストーラメモリが必要とされる)。更に、“ルア(Lua)”ランタイムは、調整(trim)及び/またはカスタマイズ(customize)することが容易であると共に、ホワイトリストルア機能(white-list Lua feature)及び内蔵式のルーチン(built-in routine)にとってセキュリティリスク(security risk:保安上の危険)を回避することが容易になる。例えば、いくらかの実施において、内蔵式のジャバスクリプトエンジンが実施され得る。ジャバスクリプトは、ウェブ開発者の間で評判の良いスクリプト言語であり、ジャバスクリプトコードを実行する場合、ウィンドウズ(登録商標)スクリプトエンジンより速く、そして調整され得るか、またはカスタマイズされ得る。
内蔵式の“ルア(Lua)”ランタイムエンジンを含む実施において、“ルア(Lua)”ランタイムエンジンは、次の、字句解析プログラム及び構文解析プログラム(lexer and parser)、仮想マシン(virtual machine)、メモリ管理及び記憶再生システム(memory management and garbage collection)、事前にコンパイル済みのチャンクダンプ/非ダンプ(pre-compiled chunk dump/undump)、ルア(Lua)API、デバッグサポート(debug support)、及び内蔵式のルーチン(built-in routine)のモジュールの内の1つ以上を含むことができる。内蔵式のルーチン(built-in routine)のモジュールは、基本ライブラリ(base library)、コルーチンルーチン(co-routine routine)、モジュール/パッケージルーチン、文字列ライブラリ(string library)、数学ライブラリ(math library)、オペレーティングシステムライブラリ、テーブルライブラリ、入出力ライブラリ、及び/または、デバッグライブラリを含むことができる。これらのモジュールは、バイナリサイズ(binary size)を最小限にするように、または安全上の配慮のために、ホワイトリスト機能(white-list feature)及び内蔵式のルーチンに、カスタマイズ及び調整され得る。“ルア(Lua)”ランタイムをカスタマイズする1つの目的は、第三者開発者によって使用され得る言語機能及び内蔵式のルーチンを制限することである。文字列ルーチン、数学ルーチン、テーブルルーチン、及びIME特有のルーチン(IME-specific routine)のようなIME関連のルーチン(IME-relevant routine)のみによって、第三者開発者は、下記で詳細に論じられるように、サンドボックス処理の保護なしでさえも、ユーザのローカルなシステムに直接影響を与えることはできない。
一般的に、IME拡張フレームワークは、言語非依存(language independent)である。従って、IME拡張フレームワークは、あらゆるスクリプト言語をサポートすることができると共に、ここで論じられたスクリプト言語に限定されない。
§ 2.2 サンドボックス処理
サンドボックス処理は、その中でプログラムが動く規制環境であり、そして、概して、規制環境の中で実行するために、スクリプトエンジンのような処理を可能にするライブラリによって手助けされる。サンドボックス処理される場合、スクリプトエンジンは制限された機能性を有する。いくらかの実施において、スクリプトエンジンは、CPUサイクル及びメモリにだけアクセスすることができる。そのような実施において、例えば、サンドボックス処理されたスクリプトエンジンは、ディスクに書くことができないか、または、それ自身の窓を表示することができない。スクリプト実行をサンドボックス処理に限定することによって、第三者のスクリプトは、アプリケーションから必然的に分離され得る。
スクリプトエンジンの許容されている機能性は、明白な方針によって調整される。コード実行が、秘密であるコンピュータ情報またはアクセス情報に、持続的な変更を行うことができないように、サンドボックス処理は、特定のオペレーティングシステムによって提供される安全性にてこ入れする。サンドボックス処理が提供するアーキテクチャ及び正確な保証は、オペレーティングシステムによって決まる。例えば、ウィンドウズ(登録商標)において、コードは、システムコールを行わずに、I/Oの構成を実施することができない。大部分のシステムコールにおいて、ウィンドウズ(登録商標)は、安全性の検査を実行する。サンドボックス処理が保証するのは、サーバ処理が対応する方針において定義されたように機能するのを禁止されている特定の動作に関しては、安全性の検査が失敗するということである。
いくらかの実施において、サンドボックス処理は、それに限定されないが、トークン、オブジェクト、及び/または整合性レベル(integrity level)を含むことができるオペレーティングシステムメカニズムによって提供される保護を当てにする。これらの一例のメカニズムは、オペレーティングシステム、その構成、及びユーザデータを保護する際に非常に効果的である。実際の制限は、方針によって構成され、それは、スクリプトエンジンの制限値及び許容値を定義するために呼ばれ得る、プログラマチックインタフェース(programmatic interface:プログラム的インタフェース)になる。いくらかの実施において、制限を制御する一例のメカニズムは、メイントークン、偽装トークン(impersonate token)、及びジョブトークン(job token)を含む。いくらかの実施は、更に、完全性のレベル(例えば、ウィンドウズ(登録商標)ビスタオペレーティングシステムを含む実施)を含む。
別の例として、グーグル(Google)によって提供されたクロームオペレーティングシステム(Chrome operating system)は、サンドボックス処理(例えば、スクリプトエンジン)の創造を提供する。クロームオペレーティングシステムは、トークン制限(token restriction)、ジョブオブジェクト(job object)、及びAPIインターセプション(API interception)を使用して、サンドボックス処理の特権を制限すると共に、サンドボックス処理と仲介処理(broker process)(例えばIMEエンジン)との間の通信を提供するために、IPCとしての単純な共有メモリを使用する。例えば、IMEエンジンは、サンドボックス処理を開始すると共に初期化するために使用され得る自動起動IMEデーモン処理(auto-start IME daemon process)を提供する。本開示のIME拡張フレームワークのために、更に簡単なサンドボックス処理が実行され得る(例えば、APIインターセプションを使用せずにスクリプトエンジンの特権を制限するために、トークン制限及びジョブオブジェクトを使用するサンドボックス処理)。更に、サンドボックス処理それ自体は、IPCにおいてサーバの役割を果たすことができる。
上述のように、トークン制限、ジョブオブジェクト、そしてAPIインターセプションが、サンドボックス処理の特権を制限するために実行され得る。トークン制限に関して、そのセキュリティ識別子(security identifier:SID)のいくらかまたは全てを除去されるトークン(例えば、アクセストークン)によって、サンドボックス処理において、処理(例えば、スクリプトエンジン)が始まる。あらゆるSIDなしでは、安全なオブジェクトへのアクセスが、オペレーティングシステムのセキュリティマネージャ(security manager)によって拒否されることになる。ジョブオブジェクトに関して、処理(例えば、スクリプトエンジン)は、処理の能力を制限するために使用されるジョブオブジェクトにおいて実行され得る。具体的には、処理が、トークンを変更すること、メッセージをジョブの有効範囲の外に送信すること、及び/または、新しいデスクトップを作成することを防止するために、制限がジョブオブジェクトに設けられる。APIインターセプションが、セキュリティ保護可能でないリソース(non-securable resource)に対するサンドボックス処理のアクセスを制御するために、及び低水準のAPIコール(API call)を遮断して(intercept)実行しない(fail)ために使用され得る。
IMEエンジンの自動起動デーモン処理(auto-start daemon process)が、サンドボックス処理を開始すると共に初期化するために使用され得る。これを達成するために、デーモン処理は、制限されたトークンを生成し、ジョブオブジェクトを生成してその能力を制限し、制限されたトークンによってサンドボックス処理を発生させ、サンドボックス処理をジョブオブジェクトに割り当て、及び/または、新しい処理のメインスレッドのトークンを、より多くの権利を有する偽装トークン(impersonation token)に変更する。IMEエンジンは、拡張スクリプトを読み込むことができると共に、更に多くの権利を有する偽装トークンによって、スクリプトエンジン及びIPCサーバを初期化することができる。
§ 2.3 IMEとサンドボックス処理との間の通信
いくらかの実施において、上述のように、IMEエンジンとサンドボックス処理との間の通信は、IPCを用いて確立され得る。IPCは、1つ以上の処理における複数のスレッドの間のデータの交換のための一連の技術を提供する。IPC方法の技術は、遠隔手続呼び出し(remote procedure call:RPC)を含むことができる。RPCは、サブルーチンまたは手続きが、呼び出しているプログラムアプリケーションのアドレス空間と異なる別のアドレス空間において実行することを可能にする。
いくらかの実施において、IMEエンジンは、単純な共用メモリIPCを使用して、サンドボックス処理に包まれているスクリプトエンジンと通信する。例えば、メッセージ送信及びメッセージ受信を処理するために、通知メカニズムが、オペレーティングシステムイベントに基づいて実施され得る。これを達成するために、IPCは、(例えば、クロームサンドボックスブローカーターゲットIPC(Chrome sandbox broker-target IPC)より単純な)単純なIPCとして提供され得る。例えば、同様にサンドボックス処理に包まれているIPCサーバは、複数のタスクをサポートする必要がない。IPCインタフェースは、IMEエンジンとサンドボックス処理との間で情報を転送する場合に、プロトコルバッファをデータフォーマットとして使用することができる。
いくらかの実施において、IPCは、“C++”のテンプレート及びプロトコルバッファを使用して、任意の要求タイプ及び応答タイプをサポートする。例えば、一例のIPC要求及びIPC応答は、下記を含むことができる。
Figure 0005921527
§ 2.4 公の(Public:パブリック)API
上述のように、公のAPIによって、第三者開発者は、統一された方法においてIME拡張を書くことが可能になる。例えば、“ルア(Lua)”スクリプト言語で書かれた拡張スクリプトは、1つ以上の照会対候補のマッピング関数(query-to-candidate(s) mapping function)を含む。一例のマッピング関数は、下記を含む。
Figure 0005921527
マッピング(mapping:対応付け)関数は、拡張命令として登録され得る。具体的には、登録機能によって、開発者は、命令拡張、トリガ拡張、またはハンドラ拡張として提供され得る拡張を登録することが可能になり、それぞれここで更に詳細に論じられる。
命令拡張の名前は、拡張モードにある場合に、命令文字列入力に適合させるために使用される複数の文字列(multi-character string)(例えば2文字の文字列)として提供され得る。拡張モードを用いて入力される引数(argument)は、関数呼び出し(例えば、“ルア(Lua)”関数呼び出し)の引数文字列(argument string)として中に渡される。関数が引数を全く必要としないならば、その引数は、IMEエンジンによって無視される。すなわち、たとえユーザが命令の後で引数を明白に入力するとしても、その関数が引数を必要としないならば、その関数は引数を無視することになる。あるスクリプト言語(例えば“ルア(Lua)”または“ジャバスクリプト”)において、関数は、引数なし(has-no-argument)として定義され得るが、しかし、その呼び出し側は無視されることになる引数をまだ中に渡すことができる。もしユーザ入力が拡張モードにおいて提供されないならば、空の文字列が関数の中に渡されることになる。複製の拡張命令名は、スクリプトエンジンによって認められていない。例えば、もし第1のスクリプトが対応する登録された拡張命令名を有しており、そして開発者が同じ命令名を使用する第2のスクリプトを登録しようと試みるならば、その関数は、“false(偽)”を戻すことになる。拡張関数の戻り値は、1つのオブジェクト(例えば文字列または数字)であり得るか、または2つ以上のオブジェクト(例えば文字列または数字)を含むテーブルであり得る。IMEエンジンは、IMEフロントエンドによって表示される候補として各オブジェクトの文字列表現を使用する。
§ 2.5 開発者ツール
上述のように、本開示のIME拡張フレームワークは、第3者開発者がIMEと共に使用する拡張スクリプトを作成して登録することを可能にする開発者ツール(developer tool)を提供する。開発者ツールは、ホワイトリスト化された(white-listed)(すなわち認可された(approved))ルーチンを含む。使用できるルーチンを制限することによって、たとえサンドボックス処理の保護がなくても、第3者開発者は、ユーザのローカルシステムに直接影響を与えることを抑制される。“ルア(Lua)”ベースの拡張スクリプトの一例のケースにおいて、ホワイトリスト化されたルーチンは、基本ルーチン(例えば“assert”、“error”、“ipairs”、“loadstring”、“next”、“pairs”、“select”、“tonumber”、“tostring”、“type”、“unpack”)、文字列ルーチン(例えば、“string. byte”、“string. char”、“string. find”、“string. format”、“string. gmatch”、“string. gsub”、“string. len”、“string. lower”、“string. match”、“string. rep”、“string. reverse”、“string. sub”、“string. upper”)、日付け時刻ルーチン(例えば、“os. date”、“os.time”、“os.difftime”)、数学(math:計算)ルーチン(例えば、“math.abs”、“math.acos”、“math.asin”、“math.atan”、“math. ceil”、“math. cosh”、“math. cosh”、“math. cos”、“math.deg”、“math.exp”、“math.floor”、“math.fmod”、“math.frexp”、“math.log”、“math.ldexp”、“math.loglO”、“math.max”、“math.min”、“math.modf”、“math. pi”、“math.pow”、“math.rad”、“math. random”、“math.randomseed”、“math.sinh”、“math.sin”、“math.sqrt”、“math.tanh”)、及び、テーブル/リスト操作ルーチン(例えば、“table. concat”、“table. insert”、“table. maxn”、“table. remove”、“table. sort”)を含むことができる。
ホワイトリスト化されたルーチンの他に、言語IMEモジュールが、追加の機能性を有効にするために提供され得る。“ルア(Lua)”スクリプト言語の一例のケースにおいて、“ルア(Lua)”IMEモジュールが、IME関連の機能または他のヘルパー機能(helper function)を提供するために、スクリプトエンジンにおいて実行される。上述の複数の登録機能は、開発者がIME拡張フレームワークによって拡張を登録するために、“ルア(Lua)”IMEモジュールによって提供される。更に、“ルア(Lua)”IMEモジュールは、ヘルパールーチン(helper routine)(例えば、“me.parse mapping”、“ime.join string”)を提供する。ヘルパールーチンは、開発者がIME拡張を容易に実施するのに役立つ。例えば、多くの拡張スクリプトのコードは、(例えば、文字列リテラル(string literal)をマッピングに分割(split:分配)するために)いくらかの共通のロジックを共有する。ヘルパールーチンは、ゼロから拡張を書くことの努力を省く(save)ことができる。
追加のルーチンが、“C/C++”においてルーチンを実装し、“ルア(Lua)”ランタイムにそのようなルーチンを登録するか、及び/または、“ルア(Lua)”そのものでルーチンを実装し、そして初期スクリプトとしてスクリプトを読み込む(load)ことによって、“ルア(Lua)”ランタイムに提供され得る。“ルア(Lua)”ランタイムに“C/C++”関数を登録するための一例のコードは、下記を含む。
Figure 0005921527
“ルア(Lua)”それ自身に“ルア(Lua)”IMEモジュールルーチンを実装するための一例のコードは、IMEモジュールが国際的な(global)環境に既に存在する、と仮定すると、下記を含む。
Figure 0005921527
“C++”において、下記の一例のコードが、“ルア(Lua)”そのもので実装されたルーチンを読み込むために使用され得る。
Figure 0005921527
一般的に、そしていくらかのスクリプト言語(例えば、“ルア(Lua)”)に関して、事前に定義される内蔵式(built-in)ルーチンは、言語のインタープリタ(interpreter)が実行される言語で実装され得るか、またはスクリプト言語そのものにおいて実装され得る。これを単純化するために、“ルア(Lua)”言語のインタープリタは“C++”において実装される、第1のルーチンは“C++”において実装される、そして、第2のルーチンは、“ルア(Lua)”において実装されると仮定すると、“ルア(Lua)”インタープリタが読み込まれる場合に、第1のルーチンは固有の(native)機械コードであり、“ルア(Lua)”インタープリタと共に読み込まれる。第2のルーチンは“ルア(Lua)”にあると共に、従って、共通の“ルア(Lua)”スクリプトが読み込まれるとそれは読み込まれるが、しかし“ルア(Lua)”によって*内蔵式ルーチン*として示される。そのスクリプトが第1のルーチン、そして第2のルーチンを呼び出すとき、“ルア(Lua)”インタープリタは、第1のルーチンが既に固有の(native)機械コードにコンパイルされているので、更なる操作なしで、第1のルーチンを実行する。しかしながら、第2のルーチンに関して、“ルア(Lua)”インタープリタは、まず第2のルーチンを翻訳処理(interpret)し、次に、それが通常のスクリプトを実行するのと同様に、第2のルーチンを実行しなければならない。
§ 2.6 接続ルーチン
上述のように、本開示のIME拡張フレームワークは、更に有益な入力機能を実施するために、1つ以上のオンラインサービスプロバイダによって提供されたサービスへのアクセスを可能にする。具体的には、拡張スクリプトがオンラインデータをオンラインサービスプロバイダからフェッチする(fetch)ことを可能にするために、ハイパーテキストトランスファープロトコル(hypertext transfer protocol:HTTP)接続ルーチンを含む接続ルーチンが、スクリプトエンジンにおいて実行されたIMEモジュールによって提供され得る。いくらかの実例のAPI(example API)は、翻訳サービスを提供する“ime.google_translate(text, from language, to language, callback)”、及び検索サービスを提供する“ime.google_search(query, parameters, callback)”を含むことができる。
結果を返すのに時間が必要とされ得るので、接続ルーチンは非同期である。拡張スクリプトは、データ転送が完結するときに結果を受け取るために、それ自身のコールバック関数(callback function)を定義する。コールバック関数は、APIを使用して候補を示すように、IMEエンジンに命令する。一例のAPI(example API)は、検索サービスの結果を表示する“ime.show_result(query id, candidates)”を含むことができる。IMEエンジン及びIMEフロントエンドは非同期動作を承知しており、待機アイコン(例えば、砂時計)が処理の間に表示され得る。
§ 3.0 一般的操作
IMEは、伝統的な照会対候補のマッピングを使用してユーザ入力を処理するために、基本IMEモードにおいて機能し得る。IMEは、同様に、IME拡張フレームワークを使用してユーザ入力を処理するために、拡張モードにおいて機能し得る。すなわち、IMEは、特定された拡張スクリプトを使用してユーザ入力を処理するために、命令拡張モード、トリガ拡張モード、及びハンドラ拡張モードの内の1つにおいて機能し得る。
図4は、IMEの命令拡張モードに関する一例の処理(400)を例証するフローチャートである。図4において、限定しない一例として、中国語が参照される。一例の処理(400)は、例えば、IMEエンジン122及び拡張フレームワーク200を使用してシステム100によって実行され得る。ユーザ入力は、IMEエンジン122で受け取られると共に、複数の入力パターンの内の1つにおいて提供され得る。1つの入力パターンが、引数(例えば、“[0-9]+”)が続いている入力文字(例えば、“i”)として提供され得る。従って、結合された入力パターンは、照会対候補のマッピングを提供するために、IME(402)の基本入力モードを開始する(402)“i[0-9]+”として提供され得る。具体的には、ユーザに対して表示するための1つ以上の候補を提供するために、現存するi−様式(mode)ロジックが引数に適用される(404)。いくらかの実施において、現存するi−様式(mode)ロジックは、関連する候補を決定するために、引数をテーブルへの入力として使用する単純なテーブル検索を使用することができる。1つ以上の候補が、1つ以上のフロントエンドコンポーネント(例えば、出力装置110)を介して、ユーザに表示される(406)。
別の入力パターンが、複数の文字のスクリプト名(例えば、[a-z][a-z])と、スクリプトによって処理されるべき引数(例えば、“+”)があとに続く入力文字(例えば、“i”)として提供され得る。従って、結合された入力パターンは、IME拡張フレームワーク200によって処理されるスクリプトに基づいて照会対候補のマッピングを提供するためにIMEの命令拡張モード(“i-ext mode”)を開始する(408)“i[a-z][a-z].+”として提供され得る。具体的には、ユーザ入力によって指定されたスクリプトが、引数(“arg”)を評価し、1つ以上の候補を決定するか、または生成するために実行される(410)。いくらかの実施において、スクリプトは、関連する候補を決定するために、スクリプトにおいて定義された、引数をテーブルへの入力として使用する単純なテーブル検索を使用することができる。他の実施において、スクリプトは、関連する候補を生成するために、引数を数学的に処理することができる。いくらかの実施において、上述のように、スクリプトは、関連する候補を生成するために、(例えば、サービスプロバイダによって提供される)ネットワーク化された資源にアクセスすることができる。いくらかの実施において、他の機能性、及び/または、機能性の組み合わせが、候補を生成するために提供され得る。1つ以上の候補が、1つ以上のフロントエンドコンポーネント(例えば、出力装置110)を介してユーザに表示する(406)ためにIMEエンジン122に提供される。
1つ以上のトリガ拡張が、IMEに登録され得る。各トリガ拡張は、IMEエンジン122で識別されたときにトリガ拡張モードを開始するトリガ文字列またはパターンを含む。具体的には、IMEへのユーザ入力が登録されたトリガ文字列と比較され得る。もしユーザ入力がトリガ文字列に適合するならば、ユーザ入力は、特定されたスクリプトを使用して入力を処理するために、IME拡張フレームワーク200に提供される。いくらかの実施において、ユーザ入力は、候補の第1のセットを生成するために、IMEエンジン122を使用して(すなわち、基本入力モードにおいて)処理され得ると共に、もしユーザ入力が更にトリガ文字列に適合するならば、ユーザ入力は、候補の第2のセットを生成するために、IMEエンジン122を使用して(すなわち、トリガ拡張モードにおいて)処理され得る。候補の第2のセットは、IME拡張フレームワーク200によってIMEエンジン122に提供され得ると共に、候補の第1のセット及び候補の第2のセットは、ユーザに対して表示するためにIMEエンジン122によって結合され得る。
いくらかの実施において、トリガ拡張モードは、1つ以上の候補に基づいて開始され得る。具体的には、IMEへのユーザ入力が登録されたトリガ文字列と比較され得る。もしユーザ入力がトリガ文字列に適合しないならば、ユーザ入力は、IMEエンジン122によって候補の第1のセットを生成するために処理される。生成された候補は、登録されたトリガ文字列とそれぞれ比較され得る。もし候補がトリガ文字列に適合するならば、その候補は、候補の第2のセットを生成するために、IME拡張フレームワーク200を使用して(すなわち、トリガ拡張モードにおいて)処理される。候補の第2のセットは、IME拡張フレームワーク200によってIMEエンジン122に提供され得ると共に、候補の第1のセット及び候補の第2のセットは、ユーザに対して表示するためにIMEエンジン122によって結合され得る。
IMEは、全てのユーザ入力が処理のためにIME拡張フレームワーク200に提供されるハンドラ拡張モードに設定され得る。具体的には、ハンドラは、IMEエンジン122に登録され得ると共に、ユーザが基本入力モードとハンドラ拡張モードとの間で切り換えることを可能にする。一例として、そのようなハンドラは、ユーザに対して表示される選択可能なメニュー項目及び/またはホットキーを含むことができる。もしそのユーザがメニュー項目及び/またはホットキーを選択するならば、ハンドラ拡張モードが開始されると共に、全てのユーザ入力がIME拡張フレームワークに向けられる。もしユーザがメニュー項目及び/またはホットキーの選択を解除する(de-select)ならば、ハンドラ拡張モードは中断されると共に、ユーザ入力はここで論じられたように処理され得る。
§ 3.1 実例処理
図5は、IMEの実施に関する一例の処理500を例証するフローチャートである。処理500は、図1のシステム100において、及び/または、図2のIMEシステム120に実装され得る。処理500は、特定の拡張モードが指定されたかどうかを判定する(502)。例えば、ユーザは、全てのユーザ入力を処理のためにIME拡張フレームワークに提供するために、(例えば、メニュー項目及び/またはホットキーを選択することによって)IMEがハンドラ拡張モードで動作することを指示する入力をシステム100に提供することができる。もし拡張モードが指定されるならば、IMEシステム120は、ハンドラ拡張モードにおいて動作すると共に、ユーザ入力が受け取られる(504)。
ユーザ入力は、IME拡張フレームワークに入力として提供される(508)。IME拡張フレームワークは、ユーザ入力を処理すると共に1つ以上の候補をIMEエンジンに返すように、スクリプトを実行することによってユーザ入力を処理する(510)。そのような場合に、IME拡張フレームワークは、ハンドラ拡張モードによって指定されたスクリプトを実行する。処理500は、1つ以上の候補に基づいて候補リストを生成する(512)。その処理は、候補の内のいずれかがトリガ文字列に適合するかどうかを判定する(514)。例えば、IMEエンジンは、各々の候補を1つ以上の登録されたトリガ文字列と比較し得る。
もし拡張モードが指定されていないならば(502)、ユーザ入力が受け取られる(506)と共に、処理500は、命令拡張モードが開始されるべきであるかどうかを判定する(516)。例えば、IMEエンジンは、命令拡張モードが開始されるべきであるかどうかを判定するために、ユーザ入力を評価し得る。もし命令拡張モードが開始されるべきであるならば、ユーザ入力がIME拡張フレームワークに入力として提供される(508)と共に、処理は上述のように継続する。そのような場合において、IME拡張フレームワークは、ユーザ入力によって指定されたスクリプトを実行する。
もしユーザ入力が命令拡張モードが開始されるべきであることを指示しないならば、処理500は、ユーザ入力がトリガ文字列に適合するかどうかを判定する(518)。例えば、IMEエンジンは、ユーザ入力を1つ以上の登録されたトリガ文字列と比較し得る。もしユーザ入力がトリガ文字列に適合するならば、ユーザ入力がIME拡張フレームワークに入力として提供される(508)と共に、処理は上述のように継続する。そのような場合において、IME拡張フレームワークは、トリガ文字列によって指定されたスクリプトを実行する。もしユーザ入力がトリガ文字列に適合しないならば、処理500は、ユーザ入力に基づいて候補リストを生成する(520)。具体的には、IMEシステムは、IMEエンジンを使用して照会対候補のマッピングを提供するために、基本入力モードにおいて動作する。
処理500は、候補リストの内のいずれかの候補がトリガ文字列に適合するかどうかを判定する(514)。例えば、IMEエンジンは、候補リストの各候補を1つ以上の登録されたトリガ文字列と比較し得る。もし候補リストの候補がトリガ文字列に適合しないならば、処理500は、候補リストを表示して(522)、処理は終了する。例えば、IMEエンジンは、候補リストを表示するように出力装置に命令し得る。
もし候補リストの候補がトリガ文字列に適合するならば、その候補は、IME拡張フレームワークへの入力として提供されると共に、IME拡張フレームワークは、その候補を処理すると共に1つ以上の拡張候補をIMEエンジンに返すように、スクリプトを実行することによって、候補を処理する(524)。処理500は、候補リスト及び1つ以上の拡張候補に基づいて、修正された候補リストを生成する(526)。例えば、IMEエンジンは、1つ以上の拡張候補を受け取ることができると共に、(例えば、(512)または(520)で提供された)オリジナルの候補リストを、1つ以上の拡張候補を含むように修正することができる。処理500は、修正された候補リストを表示して(528)、処理は終了する。例えば、IMEエンジンは、修正された候補リストを表示するように出力装置に命令し得る。
§ 4.0 実例拡張
実例拡張、及び結果として生じる候補が下記で提供される。拡張、及び結果として生じる候補は、(例えば、キーボード上の)機能的なキー(functional key)、または同等の入力(例えば、タッチスクリーン、またはスタイラス入力)を用いて操作(navigate)され得る。機能的キーは、角括弧([...])を用いて表示されると共に、実例の機能的キーは、
ユーザ入力を提示するための[エンター(ENTER)]キー、
現在の候補を提示するための[スペース(SPACE)]キー、
ユーザ入力の最後の文字を削除するための[バックスペース(BACKSPACE)]キー、
ユーザ入力の現在の文字を削除するための[デリート(DEL)]キー、
それぞれ、前の候補ページ/次の候補ページに移動するための[ページダウン(PGDN)]/[ページアップ(PGUP)]キー、
候補リストの中で移動するための[↑(アップ)]/[↓(ダウン)]キー、
照会(query:クエリ)を編集するキャレット(caret:入力位置ポインタ)を移動させるための[←(左)]/[→(右)]キー、
現在の入力をキャンセルするための[エスケープ(ESC)]キー、
を含む。
一般的に、ユーザは、[エンター(ENTER)]キーを押下する(press)ことによって、または同等の入力によってIMEに投入される(committed)ユーザ入力を提供する。ユーザ入力は、その場合に、(例えば、基本入力モードにおいて)IMEエンジン122によって、(例えば、命令拡張モードまたはトリガ拡張モードにおいて)IMEエンジン122及びIMEフレームワーク200によって、または(例えば、ハンドラ拡張モードにおいて)IME拡張フレームワーク200によって、処理される。1つ以上の候補が判定されると共に、候補リストがIMEエンジン122を使用してユーザに表示される。候補の数に応じて、候補リストは、一度にユーザに表示される単一の候補リストのページを有する1ページより多いページを含むことができる。下記で例証されたように、各候補はそれらに関連付けられた連続する文字または連続する番号を有しており、それらの候補は文字順または番号順で提供され得る。ユーザは、所望の候補を選択するために、[ページダウン(PGDN)]/[ページアップ(PGUP)]キー、及び/または[↑(アップ)]/[↓(ダウン)]キーを使用して、または同等の入力を使用して、候補リスト及び/またはページを操作することができる。そのユーザは、[スペース(SPACE)]キーを使用して、または同等の入力を使用して、選択された候補を投入する(commit)ことができる。一度投入されると、その候補は、IMEによってホストアプリケーション(例えば、図2のアプリケーション220)に入力される。例えば、もしホストアプリケーションがワードプロセッシングアプリケーションであるならば、投入された候補は、文書に提供され得る。別の例として、もしホストアプリケーションがインターネットブラウザであるならば、投入された候補は、ブラウザのあらゆる入力フィールド(例えば、表示されたダイアログボックス(dialog box)、アドレスバー(address bar))に入力されることができる。
§ 4.1 命令拡張モードの例
いくらかの実施において、ユーザは、ユーザによって選択され得る候補スクリプト(すなわち、ユーザの装置にダウンロードされてインストールされたそれらのスクリプト)のリストを生成するIMEに対して単純なユーザ入力(例えば、単一文字“i”)を提供することができる。一例として、そして中国語を例言語として用いると、ユーザ入力“i”は、利用可能な命令拡張スクリプトの下記のリストを生成し得る。
Figure 0005921527
先導する“i”は、命令拡張モード(すなわち、“i−ext”モード)を開始し、そして、候補のリストとして、利用可能な“i−ext”スクリプト(例えば、下記で更に詳細に論じられるjs、rq、hh)を示す。ユーザは、機能的キーまたは同等の入力を使用して、命令をブラウズ(browse:閲覧)することができ、[スペース(SPACE)]キーまたは同等の入力を使用して候補スクリプトを選択することができる。例えば、ユーザ入力“i[ページダウン(PGDN)]”は、例えば下記のような、表示されるべき“i−ext”命令候補リストの次のページをもたらす。
Figure 0005921527
別の例として、ユーザ入力“i[ページアップ(PGUP)]”は、表示されるべき“i−ext”命令候補リストの前のページをもたらす。
いくらかの実施において、ユーザは、IMEに対して更に複雑なユーザ入力(例えば、1つ以上のキー入力(keystroke:キーストローク)があとに続く単一の文字“i”、または他の同等の入力)を提供することができる。例えば、ユーザ入力“i[スペース(SPACE)]”は、下記の例入力候補を提供するように、“js”命令拡張("js" command extension)の実行をもたらす。
Figure 0005921527
具体的には、“i”に続く[スペース(SPACE)]キーは、利用可能なスクリプトのリストにリストアップされた最初のスクリプトである“i−ext”モード“js”を開始する。これは、ユーザ入力として“ijs”を提供するユーザによって同様に達成され得る。
別の例入力は、“i[j][スペース(SPACE)]”を含むことができる。この入力は、下記の例入力候補を提供するように、“rq”命令拡張の実行をもたらす。
Figure 0005921527
具体的には、“[j]”はカーソルを2番目のスクリプト候補(例えば、“rq”)に移動すると共に、[スペース(SPACE)]は、実行のためにそのスクリプト候補を選択する。これは、ユーザ入力として“irq”を提供するユーザによって、同様に達成され得る。数字“1.”、“2.”、及び“3.”は、候補と関連付けられた連続番号である。キー[1]、[2]、または[3]は、入力候補リストから所望の入力候補を投入するために使用され得る。現在強調表示された候補を投入するために、代りに[スペース(SPACE)]が使用され得る。他の実施において、ユーザ入力は、直接的に“2010年10月10日”を投入することをもたらすために、“irq2”として提供され得る。
この場合、元のユーザ入力は、スクリプト“rq”に起因する候補リストの候補番号2が投入されるべきであるということを直接的に示す。これは、特にユーザが既に表示されたであろう候補を知っている場合に、入力候補を投入する更に迅速で効率的な方法を提供する。
その利用者は、所望のスクリプト、及びスクリプトによって処理されるべき所望の候補を特定するものを含む、更に複合的な入力を行うことができる。例えば、ユーザ入力“ijs3+2*sin(10)”は、“i−ext”モードを開始し、“js”を所望のスクリプトとして特定し、“3+2*sin(10)”をスクリプトによって処理されるべき引数として特定する。従って、その引数は、スクリプトによって処理されて、下記の出力例を生成して表示する。
Figure 0005921527
この場合、単に1つの結果が返されると共に、候補の連続番号は提供されない。事前に指定された次のキー入力(keystroke:キーストローク)(例えば、[スペース(SPACE)])が入力されると、表示された結果が投入されて、アプリケーションに対する入力として提供される。
別の例入力は、下記の例入力候補リストをもたらす“inhl587”を含むことができる。
Figure 0005921527
従って、数値引数(例えば、[0-9]+)を必要とするマッピング関数のために、選択されたスクリプトは、スクリプトエンジンに、表示された入力候補リストに関して、そして、候補選択もしくは投入キー(committing key)として、連続文字(sequence letter)(例えば、a、b、c、...)を使用するように指示する。この情報は、スクリプト関数のメタデータによって提供され得る。
図6Aは、命令拡張モードに対応する一例の拡張を例証すると共に、図6Bは、図6Aの拡張に基づく出力例を例証する。図6Aのコード600において、“function Compute”は、開発者によって実装されたスクリプト関数である。開発者は、命令拡張を登録するために、“ime.register command”を呼び出す。ユーザによって命令拡張がインストールされたあとで、ユーザは、演算式“[xxxx]”を評価して結果が表示されるためにタイプされ得る“ijs[xxxx]”を入力することができる。図6Bの例において、ユーザ入力は、“380.22*(sin(7.2)+cos(8))”を含む演算式を有する下記の入力を含むと共に、
Figure 0005921527
そのスクリプトは、図6Aのスクリプトに基づいて生成される下記の例候補リスト602をもたらす。
Figure 0005921527
いくらかの実施において、拡張は、ここで更なる詳細が論じられる、開発者が“ime.register”トリガを呼び出すトリガ拡張として登録され得る。
§ 4.2 トリガ拡張モード
上述のように、トリガ拡張モードは、ユーザ入力及び/または候補が、事前に登録されたトリガ文字列に適合する場合に開始される。中国語と英語を例言語として使用すると、中国の単語“shijian”は、“time(時間)”として英語に変換され得る。ユーザは、“shijian”を、IMEエンジンによって生成された下記の例候補リストをもたらすピンインIME(Pinyin IME)に入力することができる。
Figure 0005921527
しかしながら、もし、“shijian”が事前に登録されたトリガ文字列であるならば、IMEエンジンは、ユーザ入力を、1つ以上の追加の候補を提供するために、対応するスクリプトを処理するIME拡張フレームワークに提供する。例えば、対応するスクリプトは、候補として現在の時間(例えば、12:00(12時))を返すことができる。IME拡張フレームワークによって生成された1つ以上の候補は、下記の例候補リストを提供するために候補を結合するIMEエンジンに提供される。
Figure 0005921527
上述の候補リストにおいて、拡張候補(すなわち、IME拡張フレームワークによって提供された候補)は、第1の候補リストのページの最後の位置に挿入される。
いくらかの実施において、トリガ拡張モードは、IMEエンジンによって生成された候補に基づいて開始され得る。例えば、ユーザ入力“shijian”は、通常は上述のようにIMEエンジンによって生成された下記の例候補リストをもたらすであろう。
Figure 0005921527
しかしながら、候補が事前に登録されたトリガ文字列に適合するということを、IMEエンジンが認識するならば、IMEエンジンは、1つ以上の追加の候補を生成するために、その候補をIME拡張フレームワークに提供し得る。一例として、
Figure 0005921527
(すなわち、上述の例候補リストの第1の候補)が、事前に登録されたトリガ文字列として提供されることができる。従って、IMEエンジンは、拡張候補(例えば、12:00)を生成するために、指定されたスクリプトに基づいて
Figure 0005921527
を処理するIME拡張フレームワークに、
Figure 0005921527
を提供する。拡張候補は、ユーザに対する表示のために、最終の候補リストもしくは修正された候補リストを生成するIMEエンジンに提供される。修正された例候補リストは、下記を含むことができる。
Figure 0005921527
従って、もしトリガ拡張モードがIMEエンジンの特定の候補に基づいて開始されるならば、拡張候補がトリガになる候補(triggering candidate)の隣へ挿入される。
いくらかの実施において、トリガ拡張モードは、前方一致検索(prefix match)、及び/または、後方一致検索(suffix match)を使用して、ユーザ入力によって開始され得る。トリガ拡張を登録する場合に、ワイルドカード(例えば、“!”もしくは“*”)が、前方一致検索(prefix match)、及び/または、後方一致検索(suffix match)を定義するために使用され得る。限定しない例として、トリガ拡張“bm*”が、ユーザ入力のトリガ文字列として登録され得る。“bm”で始まるあらゆるユーザ入力は、IMEエンジンによって、トリガ文字列に適合するとして認識されることになる。一例のユーザ入力は、“bmabcd”を含むことができる。ユーザ入力に応答して、IMEエンジンは、候補の第1のセットを含む候補リストを生成し得る。IMEエンジンによって生成された例候補リストは、下記を含むことができる。
Figure 0005921527
しかしながら、“bm*”がトリガ文字列として登録されているので、IME拡張フレームワークは、同様に、候補の第2のセットを含む拡張候補リストを生成するために、ユーザ入力を処理する。IME拡張フレームワークによって生成された例候補リストは、下記を含むことができる。
Figure 0005921527
従って、単一の候補が、候補の第2のセットにおいて提供される。IME拡張フレームワークの拡張候補リストが、修正された候補リストを提供するために候補リストを結合するIMEエンジンに提供され得る。一例の修正された候補リストは、下記を含むことができる。
Figure 0005921527
この明細書で説明された開示及び機能的動作の全ての実装は、デジタル電子回路構成か、もしくは、この明細書おいて開示された構成及びそれらの構成上の等価物を含むコンピュータソフトウェア、ファームウェア、またはハードウェアか、もしくは、それらの内の1つ以上の組み合わせにおいて実施され得る。本開示の実装は、1つ以上のコンピュータプログラム製品、すなわち、データ処理装置による実行のための、もしくはデータ処理装置の動作を制御するための、コンピュータ読み取り可能な媒体上に符号化して記録されたコンピュータプログラム命令の1つ以上のモジュールとして実施され得る。コンピュータ読み取り可能な媒体は、機械可読記憶装置、機械可読記憶回路基板、メモリ装置、機械可読伝搬信号を生じさせる組成物(composition of matter)、または、それらの内の1つ以上の組み合わせであり得る。用語“データ処理装置”は、プログラム可能なプロセッサ、コンピュータ、もしくはマルチプロセッサまたはマルチコンピュータを一例として含む、データを処理するための全ての装置、機器、及び機械を包含する。装置は、ハードウェアに加えて、問題のコンピュータプログラムのための実行環境を作成するコード、例えばプロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらの内の1つ以上の組み合わせを構成するコードを備えることができる。伝搬信号は、人工的に生成された信号、例えば機械で生成された電気信号、光学信号、もしくは電磁気信号であると共に、それは、情報を、適当な受信機装置に対する伝送用に符号化するように生成される。
コンピュータプログラム(同様にプログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとして知られている)は、コンパイルされた言語または解釈された言語(interpreted language)を含むあらゆる形式のプログラミング言語で書かれ得ると共に、それは、独立型プログラム、もしくは、モジュール、コンポーネント、サブルーチン、またはコンピュータ環境における使用に適当な他のユニットを含むあらゆる形式で配置され得る。コンピュータプログラムは、ファイルシステムにおけるファイルに必ずしも対応するとは限らない。プログラムは、他のプログラムまたはデータを保持するファイル(例えば、マークアップ言語文書に格納される1つ以上のスクリプト)の一部分に格納され得るか、問題のプログラム専用の単一のファイルに格納され得るか、または複数の組織的なファイル(例えば、1つ以上のモジュール、サブプログラム、またはコードの一部分を格納するファイル)に格納され得る。コンピュータプログラムは、1つのサイトに設置されるか、もしくは複数のサイトに横断して分散されると共に通信ネットワークによって相互に接続される、1つのコンピュータまたは複数のコンピュータ上で実行されるように配置され得る。
この明細書で説明された処理及び論理フローは、入力データに基づいて動作すると共に出力を生成することによって機能を遂行するように1つ以上のコンピュータプログラムを実行する、1つ以上のプログラム可能なプロセッサによって遂行され得る。処理及び論理フローは、同様に、専用論理回路構成、例えばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって遂行され得ると共に、装置は、同様に、そのような専用論理回路構成、例えばFPGAまたはASICとして実施され得る。
コンピュータプログラムの実行に適当なプロセッサは、一例として、一般的なマイクロプロセッサと特殊用途のマイクロプロセッサの両方、及びあらゆる種類のデジタルコンピュータのあらゆる1つ以上のプロセッサを含む。一般的に、プロセッサは、読み取り専用メモリ、またはランダムアクセスメモリ、またはその両方から、命令及びデータを受け取ることになる。コンピュータの必須要素は、命令を遂行するためのプロセッサと、命令及びデータを格納するための1つ以上のメモリ装置である。一般的に、コンピュータは、更に、例えば光磁気ディスク(magnetic optical discまたはmagneto optical disk)、もしくは光ディスクのような、データを格納するための1つ以上の大容量記憶装置からデータを受信するか、またはそのような1つ以上の大容量記憶装置にデータを送信するか、またはその両方であるように、そのような1つ以上の大容量記憶装置を含むことになるか、もしくはそのような1つ以上の大容量記憶装置に対して動作可能に連結されることになる。しかしながら、コンピュータは、そのような装置を有している必要がない。更に、コンピュータは、別の装置、例えば2〜3例を挙げると、携帯電話、携帯情報機器(PDA)、携帯型オーディオプレーヤ、全地球的測位システム(GPS)受信機に埋め込まれ得る。コンピュータプログラム命令及びデータを格納することに適当なコンピュータ読み取り可能な媒体は、全ての形式の不揮発性のメモリ、媒体、及びメモリ装置を含み、それらは、一例として、例えばEPROM、EEPROM、及びフラッシュメモリ装置のような半導体メモリ装置、例えば内部ハードディスクまたは交換可能ディスクのような磁気ディスク、光磁気ディスク、そしてCD−ROMディスク及びDVD−ROMディスクを含んでいる。プロセッサ及びメモリは、専用論理回路構成によって補完され得るか、専用論理回路構成に併合され得る。
ユーザとの対話を提供するために、本開示の実装は、ユーザに対して情報を表示するための表示装置、例えばCRT(ブラウン管)モニタまたはLCD(液晶表示装置)モニタと、それによってユーザが入力をコンピュータに提供できるキーボード及びポインティングデバイス、例えばマウスまたはトラックボールを有するコンピュータ上で実施され得る。他の種類の装置が、同様に、ユーザとの対話を提供するために使用され得ると共に、また例えば、ユーザに提供されるフィードバックは、あらゆる形式の感覚フィードバック、例えば視覚フィードバック、聴覚フィードバック、または触覚フィードバックであることができ、そして、ユーザからの入力は、音響入力、音声入力、または触覚入力を含むあらゆる形式で受信され得る。
本開示の実装は、計算システムにおいて実施され得ると共に、例えば、計算システムは、例えばデータサーバのようなバックエンドコンポーネントを備えるか、もしくは、計算システムは、例えばアプリケーションサーバのようなミドルウェアコンポーネントを備えるか、もしくは、計算システムは、それを通してユーザが本開示の実装と情報のやり取りをすることができる、例えばグラフィカルユーザインタフェースまたはウェブブラウザを有するクライアントコンピュータのようなフロントエンドコンポーネントを備えるか、もしくは、計算システムは、1つ以上のそのようなバックエンドコンポーネント、ミドルウェアコンポーネント、またはフロントエンドコンポーネントのあらゆる組み合わせを備える。システムのコンポーネントは、デジタルデータ通信のあらゆる形式または媒体、例えば通信ネットワークによって、相互に接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(LAN)、及び広域ネットワーク(WAN)、例えばインターネットを含む。
計算システムは、クライアント及びサーバを備えることができる。クライアント及びサーバは、一般的に、相互から遠く離れており、そして通常は通信ネットワークによって情報のやり取りをする。クライアントとサーバの関係は、それぞれのコンピュータ上で動作すると共に、相互にクライアントとサーバの関係を有するコンピュータプログラムのおかげで発生する。
この明細書は、多くの詳述(specific)を含む一方、これらは、本開示及び請求項に記載されたものの範囲の限定として解釈されるべきでなく、むしろ本開示の特定の実施に特有の特徴の説明であるとして解釈されるべきである。この明細書で説明される個別の実装の文脈におけるいくつかの特徴は、同様に、単一の実装の組み合わせにおいて実施され得る。逆に、単一の実装の文脈で説明される様々な特徴は、同様に、複数の実装において別々に実施され得るか、またはあらゆる適当な副次的な組み合わせにおいて実施され得る。更に、特徴が、いくつかの組み合わせにおける動作として上記において説明され得ると共に、そういうものとして初めに主張されるが、場合によっては、主張された組み合わせが提供する1つ以上の特徴を、組み合わせから削除することができると共に、主張された組み合わせは、副次的な組み合わせまたは副次的な組み合わせの変化したものを対象にし得る。
同様に、動作が図面において特定の順序で描写される一方、これは、望ましい結果を達成するために、そのような動作が示された特定の順序、または順次的な順序で実行されること、あるいは、全ての例証された動作が実行されること、を必要とするとして理解されるべきでない。いくつかの状況において、マルチタスク処理及び並列処理が有利であり得る。更に、上述の実装における様々なシステムコンポーネントの分離は、全ての実装においてそのような分離を必要とするとして理解されるべきでないと共に、説明されたプログラムコンポーネント及びシステムは、一般的に、1つのソフトウェア製品に一緒に統合されるか、もしくは複数のソフトウェア製品に実装され得ると理解されるべきである。
本開示の多くの実装が説明された。それにもかかわらず、様々な修正が本開示の精神及び範囲からはずれずに実行され得るということが理解されることになる。従って、他の実装は、添付された請求項の範囲内にある。
100 システム
101 IMEコード
102 制御演算装置
103 IMEインスタンス
104 第1のデータストア
105 言語コンテキスト
105a 英語コンテキスト
105b 中国語コンテキスト
105c 韓国語コンテキスト
106 第2のデータストア
107 言語コンテキスト値
107a 英語のコンテキスト値
107b 中国語のコンテキスト値
107c 韓国語のコンテキスト値
108 入力装置
110 出力装置
112 ネットワークインタフェース
114 バスシステム
116 ネットワーク
118 遠隔計算システム
120 IMEシステム
122 IMEエンジン
124 文字データストア
126 合成入力データストア
128 言語モデルデータストア
200 IME拡張フレームワーク
202 サンドボックス処理
204 スクリプトリポジトリ
206 IPCサーバ
208 スクリプトエンジン
220 アプリケーション
222 ユーザインタフェース
230 中央レジストリ

Claims (47)

  1. コンピュータによって実行される方法であって、
    インプットメソッドエディタ(IME)のユーザインタフェースへのユーザ入力として1つ以上の入力文字列を受け取る段階と、
    スクリプトエンジンに前記入力文字列を提供する段階と、
    スクリプトリポジトリに電子的に保存される複数のスクリプトの中からスクリプトを選択する段階と、
    1つ以上の候補を生成するために、前記スクリプトエンジンを使用して前記スクリプトを通じて前記入力文字列を処理する段階と、
    前記1つ以上の候補をIMEエンジンに提供する段階と
    を含み、
    前記スクリプトを選択する前記段階が、
    前記入力文字列を1つ以上のトリガ文字列と比較する段階と、
    前記入力文字列が前記1つ以上のトリガ文字列の内の1つに適合することを判定する段階と、
    前記1つ以上のトリガ文字列の内の前記適合する1つに基づいて前記スクリプトを選択する段階とを含む
    ことを特徴とするコンピュータによって実行される方法。
  2. 前記スクリプトエンジンが、サンドボックス処理の中で実行される
    ことを特徴とする請求項1に記載のコンピュータによって実行される方法。
  3. 前記IMEエンジンが、プロセス間通信を使用して、前記スクリプトエンジンと通信する
    ことを特徴とする請求項2に記載のコンピュータによって実行される方法。
  4. 前記サンドボックス処理の中でIPCサーバを実行する段階を更に含み、前記IPCサーバが、前記IMEエンジンと前記スクリプトエンジンとの間の通信を可能にする
    ことを特徴とする請求項3に記載のコンピュータによって実行される方法。
  5. 前記サンドボックス処理が、前記スクリプトエンジンの機能性を制限する
    ことを特徴とする請求項2から請求項4のいずれか一項に記載のコンピュータによって実行される方法。
  6. 前記入力文字列は、前記スクリプト、及び前記スクリプトによって処理されるべき入力を特定する入力系列を含む
    ことを特徴とする請求項1から請求項5のいずれか一項に記載のコンピュータによって実行される方法。
  7. 拡張モードにおける前記IMEの動作を指示する入力を受け取る段階と、
    前記入力を受け取ることに応答して、前記拡張モードで前記IMEを動作させる段階と、
    前記拡張モードにおいて動作している場合に、全てのユーザ入力を前記スクリプトエンジンに提供する段階と
    を更に含むことを特徴とする請求項1から請求項5のいずれか一項に記載のコンピュータによって実行される方法。
  8. 前記スクリプトを通じて前記入力文字列を処理する段階が、
    ウェブ基盤のサービスとのネットワーク接続を確立する段階と、
    前記入力文字列の少なくとも一部を前記ウェブ基盤のサービスに提供する段階と、
    前記ウェブ基盤のサービスから、前記入力文字列の前記少なくとも一部に基づいて生成された応答を受け取る段階とを含み、
    前記1つ以上の候補が、前記応答を含む
    ことを特徴とする請求項1から請求項7のいずれか一項に記載のコンピュータによって実行される方法。
  9. 前記ウェブ基盤のサービスが、地図サービス、検索サービス、及び翻訳サービスの内の少なくとも1つを含む
    ことを特徴とする請求項8に記載のコンピュータによって実行される方法。
  10. 候補の第1のセットを含む第1の候補リストを生成する段階と、
    前記スクリプトエンジンを用いて生成された前記1つ以上の候補を包含する候補の第2のセットを含む第2の候補リストを生成する段階と、
    第3の候補リストを生成するために、前記候補の第1のセットの少なくとも一部及び前記候補の第2のセットの少なくとも一部を結合する段階と、
    ユーザ装置に前記第3の候補リストを表示する段階と
    を更に含むことを特徴とする請求項1から請求項9のいずれか一項に記載のコンピュータによって実行される方法。
  11. 前記IMEエンジンが、前記ユーザインタフェース上で表示するように前記1つ以上の候補を処理する
    ことを特徴とする請求項1から請求項10のいずれか一項に記載のコンピュータによって実行される方法。
  12. 前記1つ以上の候補の内の1つの選択を指示する第2のユーザ入力を受け取る段階と、
    前記1つ以上の候補の内の前記1つをユーザ装置上で実行されるアプリケーションに入力する段階と
    を更に含むことを特徴とする請求項1から請求項11のいずれか一項に記載のコンピュータによって実行される方法。
  13. 前記アプリケーションが、ワードプロセッシングアプリケーション、文書編集アプリケーション、表計算ソフトアプリケーション、電子メールアプリケーション、プレゼンテーションアプリケーション、及びウェブブラウザの内の1つを含む
    ことを特徴とする請求項12に記載のコンピュータによって実行される方法。
  14. 前記スクリプトリポジトリに電子的に保存される各スクリプトが、複数の承認されたルーチンの中から選択された1つ以上のルーチンを含む
    ことを特徴とする請求項1から請求項13のいずれか一項に記載のコンピュータによって実行される方法。
  15. 前記スクリプトのスクリプト言語を特定する段階を更に含み、前記スクリプトエンジンが、前記スクリプトを通じて前記入力文字列を処理するための前記スクリプト言語に対応するランタイムエンジンを提供する
    ことを特徴とする請求項1から請求項14のいずれか一項に記載のコンピュータによって実行される方法。
  16. 前記入力文字列が、第1の言語で提供される
    ことを特徴とする請求項1から請求項15のいずれか一項に記載のコンピュータによって実行される方法。
  17. 前記1つ以上の候補が、前記第1の言語で提供される
    ことを特徴とする請求項16に記載のコンピュータによって実行される方法。
  18. 前記1つ以上の候補が、第2の言語で提供される
    ことを特徴とする請求項16に記載のコンピュータによって実行される方法。
  19. 前記1つ以上の候補が、前記第1の言語と第2の言語の組み合わせで提供される
    ことを特徴とする請求項16に記載のコンピュータによって実行される方法。
  20. 前記1つ以上の候補が、1つ以上の記号を含む
    ことを特徴とする請求項16から請求項19のいずれか一項に記載のコンピュータによって実行される方法。
  21. 入力を受け取る段階と、
    前記入力に応答して、前記スクリプトを含むと共に、中央レジストリに電子的に保存される利用可能なスクリプトのリストを生成する段階と、
    前記スクリプトの選択を指示する第2の入力を受け取る段階と、
    前記第2の入力に応答して、前記中央レジストリから前記スクリプトを読み出す段階と、
    前記スクリプトを前記スクリプトリポジトリに保存する段階と
    を更に含むことを特徴とする請求項1から請求項20のいずれか一項に記載のコンピュータによって実行される方法。
  22. コンピュータによって実行される方法であって、
    インプットメソッドエディタ(IME)のユーザインタフェースへのユーザ入力として1つ以上の入力文字列を受け取る段階と、
    スクリプトエンジンに前記入力文字列を提供する段階と、
    スクリプトリポジトリに電子的に保存される複数のスクリプトの中からスクリプトを選択する段階と、
    前記スクリプトにおいて提供された指示に基づいて、ウェブ基盤のサービスとのネットワーク接続を確立する段階と、
    前記入力文字列の少なくとも一部を前記ウェブ基盤のサービスに提供する段階と、
    前記ウェブ基盤のサービスから応答を受け取る段階と、
    ユーザに前記応答を表示するために、IMEエンジンに前記応答を提供する段階と
    を含み、
    前記スクリプトを選択する前記段階が、
    前記入力文字列を1つ以上のトリガ文字列と比較する段階と、
    前記入力文字列が前記1つ以上のトリガ文字列の内の1つに適合することを判定する段階と、
    前記1つ以上のトリガ文字列の内の前記適合する1つに基づいて前記スクリプトを選択する段階とを含む
    ことを特徴とするコンピュータによって実行される方法。
  23. 前記ウェブ基盤のサービスが、地図サービス、検索サービス、及び翻訳サービスの内の少なくとも1つを含む
    ことを特徴とする請求項22に記載のコンピュータによって実行される方法。
  24. 前記入力文字列の前記少なくとも一部が前記地図サービスに提供され、前記応答が、前記地図サービスによって生成されると共に、ユーザが選択可能なハイパーリンクを含む
    ことを特徴とする請求項23に記載のコンピュータによって実行される方法。
  25. 前記入力文字列の前記少なくとも一部が検索語として前記検索サービスに提供され、前記応答が、前記検索サービスによって生成されると共に、前記検索語に基づいて前記検索サービスによって生成された1つ以上の検索結果を含む
    ことを特徴とする請求項23に記載のコンピュータによって実行される方法。
  26. 前記入力文字列の前記少なくとも一部が、前記翻訳サービスに提供されると共に、第1の言語で提供され、前記応答が、前記翻訳サービスによって生成されると共に、第2の言語で提供される
    ことを特徴とする請求項23に記載のコンピュータによって実行される方法。
  27. 表示装置と、
    1つ以上のスクリプトを電子的に保存するためのスクリプトリポジトリを含むコンピュータ読み取り可能な記録媒体と、
    インプットメソッドエディタ(IME)を実行し、前記IMEへのユーザ入力として1つ以上の入力文字列を受け取り、スクリプトエンジンに前記入力文字列を提供し、前記スクリプトリポジトリから前記スクリプトを選択し、1つ以上の候補を生成するために、前記スクリプトエンジンを使用して前記スクリプトを通じて前記入力文字列を処理し、前記表示装置に表示されるべき前記1つ以上の候補を提供する1つ以上のプロセッサと
    を備え、
    前記1つ以上のプロセッサが、前記入力文字列を1つ以上のトリガ文字列と比較し、前記入力文字列が前記1つ以上のトリガ文字列の内の1つに適合することを判定し、前記1つ以上のトリガ文字列の内の前記適合する1つに基づいて前記スクリプトを選択する
    ことを特徴とするシステム。
  28. 前記スクリプトエンジンがサンドボックス処理の中で実行される
    ことを特徴とする請求項27に記載のシステム。
  29. IMEエンジンが、プロセス間通信を使用して、前記スクリプトエンジンと通信する
    ことを特徴とする請求項28に記載のシステム。
  30. 前記1つ以上のプロセッサが前記サンドボックス処理の中でIPCサーバを実行し、前記IPCサーバが、前記IMEエンジンと前記スクリプトエンジンとの間の通信を可能にする
    ことを特徴とする請求項29に記載のシステム。
  31. 前記サンドボックス処理が、前記スクリプトエンジンの機能性を制限する
    ことを特徴とする請求項28から請求項30のいずれか一項に記載のシステム。
  32. 前記入力文字列は、前記スクリプト、及び前記スクリプトによって処理されるべき入力を特定する入力系列を含む
    ことを特徴とする請求項27から請求項31のいずれか一項に記載のシステム。
  33. 前記1つ以上のプロセッサが、拡張モードにおける前記IMEの動作を指示する入力を受け取り、前記入力を受け取ることに応答して、前記拡張モードで前記IMEを動作させ、前記拡張モードにおいて動作している場合に、全てのユーザ入力を前記スクリプトエンジンに提供する
    ことを特徴とする請求項27から請求項31のいずれか一項に記載のシステム。
  34. 前記1つ以上のプロセッサが、
    ウェブ基盤のサービスとのネットワーク接続を確立し、
    前記入力文字列の少なくとも一部を前記ウェブ基盤のサービスに提供すると共に、
    前記ウェブ基盤のサービスから、前記入力文字列の前記少なくとも一部に基づいて生成された応答を受け取る
    ことによって、前記スクリプトを通じて前記入力文字列を処理し、
    前記1つ以上の候補が、前記応答を含む
    ことを特徴とする請求項27から請求項33のいずれか一項に記載のシステム。
  35. 前記ウェブ基盤のサービスが、地図サービス、検索サービス、及び翻訳サービスの内の少なくとも1つを含む
    ことを特徴とする請求項34に記載のシステム。
  36. 前記1つ以上のプロセッサが、候補の第1のセットを含む第1の候補リストを生成し、前記スクリプトエンジンを用いて生成された前記1つ以上の候補を包含する候補の第2のセットを含む第2の候補リストを生成し、第3の候補リストを生成するために、前記候補の第1のセットの少なくとも一部及び前記候補の第2のセットの少なくとも一部を結合し、ユーザ装置に前記第3の候補リストを表示する
    ことを特徴とする請求項27から請求項35のいずれか一項に記載のシステム。
  37. 前記IMEエンジンが、前記ユーザインタフェース上で表示するように前記1つ以上の候補を処理する
    ことを特徴とする請求項27から請求項36のいずれか一項に記載のシステム。
  38. 前記1つ以上のプロセッサが、前記1つ以上の候補の内の1つの選択を指示する第2のユーザ入力を受け取り、前記1つ以上の候補の内の前記1つをユーザ装置上で実行されるアプリケーションに入力する
    ことを特徴とする請求項27から請求項37のいずれか一項に記載のシステム。
  39. 前記アプリケーションが、ワードプロセッシングアプリケーション、文書編集アプリケーション、表計算ソフトアプリケーション、電子メールアプリケーション、プレゼンテーションアプリケーション、及びウェブブラウザの内の1つを含む
    ことを特徴とする請求項38に記載のシステム。
  40. 前記スクリプトリポジトリに電子的に保存される各スクリプトが、複数の承認されたルーチンの中から選択された1つ以上のルーチンを含む
    ことを特徴とする請求項27から請求項39のいずれか一項に記載のシステム。
  41. 前記1つ以上のプロセッサが、前記スクリプトのスクリプト言語を特定し、前記スクリプトエンジンが、前記スクリプトを通じて前記入力文字列を処理するための前記スクリプト言語に対応するランタイムエンジンを提供する
    ことを特徴とする請求項27から請求項40のいずれか一項に記載のシステム。
  42. 前記入力文字列が、第1の言語で提供される
    ことを特徴とする請求項27から請求項41のいずれか一項に記載のシステム。
  43. 前記1つ以上の候補が、前記第1の言語で提供される
    ことを特徴とする請求項42に記載のシステム。
  44. 前記1つ以上の候補が、第2の言語で提供される
    ことを特徴とする請求項42に記載のシステム。
  45. 前記1つ以上の候補が、前記第1の言語と第2の言語の組み合わせで提供される
    ことを特徴とする請求項42に記載のシステム。
  46. 前記1つ以上の候補が、1つ以上の記号を含む
    ことを特徴とする請求項42から請求項45のいずれか一項に記載のシステム。
  47. 前記1つ以上のプロセッサが、入力を受け取り、前記入力に応答して、前記スクリプトを含むと共に、中央レジストリに電子的に保存される利用可能なスクリプトのリストを生成し、前記スクリプトの選択を指示する第2の入力を受け取り、前記第2の入力に応答して、前記中央レジストリから前記スクリプトを読み出し、前記スクリプトを前記スクリプトリポジトリに保存する
    ことを特徴とする請求項27から請求項46のいずれか一項に記載のシステム。
JP2013504089A 2010-04-12 2010-04-12 インプットメソッドエディタのための拡張フレームワーク Active JP5921527B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2010/071691 WO2011127640A1 (en) 2010-04-12 2010-04-12 Extension framework for input method editor

Publications (2)

Publication Number Publication Date
JP2013524372A JP2013524372A (ja) 2013-06-17
JP5921527B2 true JP5921527B2 (ja) 2016-05-24

Family

ID=44798249

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013504089A Active JP5921527B2 (ja) 2010-04-12 2010-04-12 インプットメソッドエディタのための拡張フレームワーク

Country Status (7)

Country Link
US (1) US9086735B2 (ja)
EP (1) EP2558923A4 (ja)
JP (1) JP5921527B2 (ja)
KR (1) KR101681281B1 (ja)
CN (1) CN103080873B (ja)
TW (1) TWI526880B (ja)
WO (1) WO2011127640A1 (ja)

Families Citing this family (176)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8677377B2 (en) 2005-09-08 2014-03-18 Apple Inc. Method and apparatus for building an intelligent automated assistant
US9318108B2 (en) 2010-01-18 2016-04-19 Apple Inc. Intelligent automated assistant
US8977255B2 (en) 2007-04-03 2015-03-10 Apple Inc. Method and system for operating a multi-function portable electronic device using voice-activation
US10002189B2 (en) 2007-12-20 2018-06-19 Apple Inc. Method and apparatus for searching using an active ontology
US9330720B2 (en) 2008-01-03 2016-05-03 Apple Inc. Methods and apparatus for altering audio output signals
US8996376B2 (en) 2008-04-05 2015-03-31 Apple Inc. Intelligent text-to-speech conversion
US20100030549A1 (en) 2008-07-31 2010-02-04 Lee Michael M Mobile device having human language translation capability with positional feedback
US8676904B2 (en) 2008-10-02 2014-03-18 Apple Inc. Electronic devices with voice command and contextual data processing capabilities
US10241752B2 (en) 2011-09-30 2019-03-26 Apple Inc. Interface for a virtual digital assistant
US10241644B2 (en) 2011-06-03 2019-03-26 Apple Inc. Actionable reminder entries
US20120309363A1 (en) 2011-06-03 2012-12-06 Apple Inc. Triggering notifications associated with tasks items that represent tasks to perform
US9431006B2 (en) 2009-07-02 2016-08-30 Apple Inc. Methods and apparatuses for automatic speech recognition
US10276170B2 (en) 2010-01-18 2019-04-30 Apple Inc. Intelligent automated assistant
US8682667B2 (en) 2010-02-25 2014-03-25 Apple Inc. User profiling for selecting user specific voice input processing information
US9104306B2 (en) * 2010-10-29 2015-08-11 Avago Technologies General Ip (Singapore) Pte. Ltd. Translation of directional input to gesture
US8689181B2 (en) * 2010-11-23 2014-04-01 Axeda Corporation Scripting web services
US9262612B2 (en) 2011-03-21 2016-02-16 Apple Inc. Device access using voice authentication
WO2012162687A1 (en) 2011-05-26 2012-11-29 Candi Controls, Inc. System
US10057736B2 (en) 2011-06-03 2018-08-21 Apple Inc. Active transport based notifications
US8825748B2 (en) * 2011-07-06 2014-09-02 Sharp Laboratories Of America, Inc. Sandboxed daemon process invocation through HTTP
CN103164122B (zh) * 2011-12-08 2015-10-28 中兴通讯股份有限公司 一种调用通讯录内容的方法及装置
US9348479B2 (en) 2011-12-08 2016-05-24 Microsoft Technology Licensing, Llc Sentiment aware user interface customization
US9378290B2 (en) 2011-12-20 2016-06-28 Microsoft Technology Licensing, Llc Scenario-adaptive input method editor
US10134385B2 (en) 2012-03-02 2018-11-20 Apple Inc. Systems and methods for name pronunciation
US10417037B2 (en) 2012-05-15 2019-09-17 Apple Inc. Systems and methods for integrating third party services with a digital assistant
US9721563B2 (en) 2012-06-08 2017-08-01 Apple Inc. Name recognition system
WO2014000143A1 (en) 2012-06-25 2014-01-03 Microsoft Corporation Input method editor application platform
US8959109B2 (en) 2012-08-06 2015-02-17 Microsoft Corporation Business intelligent in-document suggestions
US9898445B2 (en) * 2012-08-16 2018-02-20 Qualcomm Incorporated Resource prefetching via sandboxed execution
KR101911999B1 (ko) 2012-08-30 2018-10-25 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 피처 기반 후보 선택 기법
CN108052489A (zh) * 2012-08-31 2018-05-18 微软技术许可有限责任公司 用于输入法编辑器的个人语言模型
US9547647B2 (en) 2012-09-19 2017-01-17 Apple Inc. Voice-based media searching
CN113470640B (zh) 2013-02-07 2022-04-26 苹果公司 数字助理的语音触发器
US10652394B2 (en) 2013-03-14 2020-05-12 Apple Inc. System and method for processing voicemail
US10748529B1 (en) 2013-03-15 2020-08-18 Apple Inc. Voice activated device for use with a voice-based digital assistant
JP6112968B2 (ja) * 2013-05-23 2017-04-12 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation コマンド生成方法、装置及びプログラム
WO2014197334A2 (en) 2013-06-07 2014-12-11 Apple Inc. System and method for user-specified pronunciation of words for speech synthesis and recognition
WO2014197335A1 (en) 2013-06-08 2014-12-11 Apple Inc. Interpreting and acting upon commands that involve sharing information with remote devices
DE112014002747T5 (de) 2013-06-09 2016-03-03 Apple Inc. Vorrichtung, Verfahren und grafische Benutzerschnittstelle zum Ermöglichen einer Konversationspersistenz über zwei oder mehr Instanzen eines digitalen Assistenten
US10176167B2 (en) 2013-06-09 2019-01-08 Apple Inc. System and method for inferring user intent from speech inputs
JP6398257B2 (ja) * 2013-06-27 2018-10-03 株式会社リコー 通信管理システム、通信端末、通信システム、およびプログラム
CN105580004A (zh) 2013-08-09 2016-05-11 微软技术许可有限责任公司 提供语言帮助的输入方法编辑器
CN104424180B (zh) * 2013-09-09 2017-11-07 佳能株式会社 文本输入方法及设备
US9384191B2 (en) 2013-09-25 2016-07-05 International Business Machines Corporation Written language learning using an enhanced input method editor (IME)
US10296160B2 (en) 2013-12-06 2019-05-21 Apple Inc. Method for extracting salient dialog usage from live data
AU2015266863B2 (en) 2014-05-30 2018-03-15 Apple Inc. Multi-command single utterance input method
US9715875B2 (en) 2014-05-30 2017-07-25 Apple Inc. Reducing the need for manual start/end-pointing and trigger phrases
US9430463B2 (en) 2014-05-30 2016-08-30 Apple Inc. Exemplar-based natural language processing
US9633004B2 (en) 2014-05-30 2017-04-25 Apple Inc. Better resolution when referencing to concepts
US10170123B2 (en) 2014-05-30 2019-01-01 Apple Inc. Intelligent assistant for home automation
US9338493B2 (en) 2014-06-30 2016-05-10 Apple Inc. Intelligent automated assistant for TV user interactions
US9818400B2 (en) 2014-09-11 2017-11-14 Apple Inc. Method and apparatus for discovering trending terms in speech requests
US10127911B2 (en) 2014-09-30 2018-11-13 Apple Inc. Speaker identification and unsupervised speaker adaptation techniques
US9668121B2 (en) 2014-09-30 2017-05-30 Apple Inc. Social reminders
US10074360B2 (en) 2014-09-30 2018-09-11 Apple Inc. Providing an indication of the suitability of speech recognition
US10225245B2 (en) * 2014-11-18 2019-03-05 Auth0, Inc. Identity infrastructure as a service
US9785489B1 (en) * 2014-12-18 2017-10-10 Amazon Technologies, Inc. Secure script execution using sandboxed environments
US9710316B1 (en) 2014-12-18 2017-07-18 Amazon Technologies, Inc. Flexible scripting platform for troubleshooting
US10152299B2 (en) 2015-03-06 2018-12-11 Apple Inc. Reducing response latency of intelligent automated assistants
US10567477B2 (en) 2015-03-08 2020-02-18 Apple Inc. Virtual assistant continuity
US9721566B2 (en) 2015-03-08 2017-08-01 Apple Inc. Competing devices responding to voice triggers
US9886953B2 (en) 2015-03-08 2018-02-06 Apple Inc. Virtual assistant activation
CN104820695A (zh) * 2015-04-29 2015-08-05 百度在线网络技术(北京)有限公司 一种资源获取方法及装置
US10460227B2 (en) 2015-05-15 2019-10-29 Apple Inc. Virtual assistant in a communication session
US10200824B2 (en) 2015-05-27 2019-02-05 Apple Inc. Systems and methods for proactively identifying and surfacing relevant content on a touch-sensitive device
US10083688B2 (en) 2015-05-27 2018-09-25 Apple Inc. Device voice control for selecting a displayed affordance
US9578173B2 (en) 2015-06-05 2017-02-21 Apple Inc. Virtual assistant aided communication with 3rd party service in a communication session
US11025565B2 (en) 2015-06-07 2021-06-01 Apple Inc. Personalized prediction of responses for instant messaging
US20160378747A1 (en) 2015-06-29 2016-12-29 Apple Inc. Virtual assistant for media playback
US10747498B2 (en) 2015-09-08 2020-08-18 Apple Inc. Zero latency digital assistant
US10740384B2 (en) 2015-09-08 2020-08-11 Apple Inc. Intelligent automated assistant for media search and playback
US10671428B2 (en) 2015-09-08 2020-06-02 Apple Inc. Distributed personal assistant
US10331312B2 (en) 2015-09-08 2019-06-25 Apple Inc. Intelligent automated assistant in a media environment
US11010550B2 (en) 2015-09-29 2021-05-18 Apple Inc. Unified language modeling framework for word prediction, auto-completion and auto-correction
US10366158B2 (en) 2015-09-29 2019-07-30 Apple Inc. Efficient word encoding for recurrent neural network language models
US10691473B2 (en) 2015-11-06 2020-06-23 Apple Inc. Intelligent automated assistant in a messaging environment
US10956666B2 (en) 2015-11-09 2021-03-23 Apple Inc. Unconventional virtual assistant interactions
US10049668B2 (en) 2015-12-02 2018-08-14 Apple Inc. Applying neural network language models to weighted finite state transducers for automatic speech recognition
US10223066B2 (en) 2015-12-23 2019-03-05 Apple Inc. Proactive assistance based on dialog communication between devices
CN106933561A (zh) * 2015-12-31 2017-07-07 北京搜狗科技发展有限公司 语音输入方法和终端设备
US10446143B2 (en) 2016-03-14 2019-10-15 Apple Inc. Identification of voice inputs providing credentials
US9934775B2 (en) 2016-05-26 2018-04-03 Apple Inc. Unit-selection text-to-speech synthesis based on predicted concatenation parameters
US9972304B2 (en) 2016-06-03 2018-05-15 Apple Inc. Privacy preserving distributed evaluation framework for embedded personalized systems
US10249300B2 (en) 2016-06-06 2019-04-02 Apple Inc. Intelligent list reading
US11227589B2 (en) 2016-06-06 2022-01-18 Apple Inc. Intelligent list reading
US10049663B2 (en) 2016-06-08 2018-08-14 Apple, Inc. Intelligent automated assistant for media exploration
DK179588B1 (en) 2016-06-09 2019-02-22 Apple Inc. INTELLIGENT AUTOMATED ASSISTANT IN A HOME ENVIRONMENT
US10192552B2 (en) 2016-06-10 2019-01-29 Apple Inc. Digital assistant providing whispered speech
US10067938B2 (en) 2016-06-10 2018-09-04 Apple Inc. Multilingual word prediction
US10490187B2 (en) 2016-06-10 2019-11-26 Apple Inc. Digital assistant providing automated status report
US10586535B2 (en) 2016-06-10 2020-03-10 Apple Inc. Intelligent digital assistant in a multi-tasking environment
US10509862B2 (en) 2016-06-10 2019-12-17 Apple Inc. Dynamic phrase expansion of language input
DK201670540A1 (en) 2016-06-11 2018-01-08 Apple Inc Application integration with a digital assistant
DK179343B1 (en) 2016-06-11 2018-05-14 Apple Inc Intelligent task discovery
DK179415B1 (en) 2016-06-11 2018-06-14 Apple Inc Intelligent device arbitration and control
DK179049B1 (en) 2016-06-11 2017-09-18 Apple Inc Data driven natural language event detection and classification
US10474753B2 (en) 2016-09-07 2019-11-12 Apple Inc. Language identification using recurrent neural networks
US10043516B2 (en) 2016-09-23 2018-08-07 Apple Inc. Intelligent automated assistant
US10275595B2 (en) * 2016-09-29 2019-04-30 Trap Data Security Ltd. System and method for characterizing malware
US11281993B2 (en) 2016-12-05 2022-03-22 Apple Inc. Model and ensemble compression for metric learning
CN106445189B (zh) * 2016-12-16 2020-03-17 北京小米移动软件有限公司 候选词显示方法及装置
US10593346B2 (en) 2016-12-22 2020-03-17 Apple Inc. Rank-reduced token representation for automatic speech recognition
US11204787B2 (en) 2017-01-09 2021-12-21 Apple Inc. Application integration with a digital assistant
WO2018195783A1 (en) * 2017-04-25 2018-11-01 Microsoft Technology Licensing, Llc Input method editor
DK201770383A1 (en) 2017-05-09 2018-12-14 Apple Inc. USER INTERFACE FOR CORRECTING RECOGNITION ERRORS
US10417266B2 (en) 2017-05-09 2019-09-17 Apple Inc. Context-aware ranking of intelligent response suggestions
DK180048B1 (en) 2017-05-11 2020-02-04 Apple Inc. MAINTAINING THE DATA PROTECTION OF PERSONAL INFORMATION
DK201770439A1 (en) 2017-05-11 2018-12-13 Apple Inc. Offline personal assistant
US10395654B2 (en) 2017-05-11 2019-08-27 Apple Inc. Text normalization based on a data-driven learning network
US10726832B2 (en) 2017-05-11 2020-07-28 Apple Inc. Maintaining privacy of personal information
DK179496B1 (en) 2017-05-12 2019-01-15 Apple Inc. USER-SPECIFIC Acoustic Models
DK179745B1 (en) 2017-05-12 2019-05-01 Apple Inc. SYNCHRONIZATION AND TASK DELEGATION OF A DIGITAL ASSISTANT
DK201770429A1 (en) 2017-05-12 2018-12-14 Apple Inc. LOW-LATENCY INTELLIGENT AUTOMATED ASSISTANT
US11301477B2 (en) 2017-05-12 2022-04-12 Apple Inc. Feedback analysis of a digital assistant
DK201770431A1 (en) 2017-05-15 2018-12-20 Apple Inc. Optimizing dialogue policy decisions for digital assistants using implicit feedback
DK201770432A1 (en) 2017-05-15 2018-12-21 Apple Inc. Hierarchical belief states for digital assistants
US20180336275A1 (en) 2017-05-16 2018-11-22 Apple Inc. Intelligent automated assistant for media exploration
DK179560B1 (en) 2017-05-16 2019-02-18 Apple Inc. FAR-FIELD EXTENSION FOR DIGITAL ASSISTANT SERVICES
US10403278B2 (en) 2017-05-16 2019-09-03 Apple Inc. Methods and systems for phonetic matching in digital assistant services
US10311144B2 (en) 2017-05-16 2019-06-04 Apple Inc. Emoji word sense disambiguation
US20180336892A1 (en) 2017-05-16 2018-11-22 Apple Inc. Detecting a trigger of a digital assistant
US10657328B2 (en) 2017-06-02 2020-05-19 Apple Inc. Multi-task recurrent neural network architecture for efficient morphology handling in neural language modeling
US10445429B2 (en) 2017-09-21 2019-10-15 Apple Inc. Natural language understanding using vocabularies with compressed serialized tries
US10755051B2 (en) 2017-09-29 2020-08-25 Apple Inc. Rule-based natural language processing
US10540187B2 (en) * 2017-10-13 2020-01-21 International Business Machines Corporation User-initiated dynamic data application programming interface creation
US10878019B2 (en) * 2017-10-20 2020-12-29 Dropbox, Inc. Hosted storage for third-party services
US10979235B2 (en) 2017-10-20 2021-04-13 Dropbox, Inc. Content management system supporting third-party code
US11113411B2 (en) 2017-10-20 2021-09-07 Dropbox, Inc. Authentication security model for a content management system
US10636424B2 (en) 2017-11-30 2020-04-28 Apple Inc. Multi-turn canned dialog
US10394584B2 (en) * 2017-12-18 2019-08-27 Atlassian Pty Ltd Native execution bridge for sandboxed scripting languages
US10733982B2 (en) 2018-01-08 2020-08-04 Apple Inc. Multi-directional dialog
US10733375B2 (en) 2018-01-31 2020-08-04 Apple Inc. Knowledge-based framework for improving natural language understanding
US10789959B2 (en) 2018-03-02 2020-09-29 Apple Inc. Training speaker recognition models for digital assistants
US10592604B2 (en) 2018-03-12 2020-03-17 Apple Inc. Inverse text normalization for automatic speech recognition
US10818288B2 (en) 2018-03-26 2020-10-27 Apple Inc. Natural assistant interaction
US10909331B2 (en) 2018-03-30 2021-02-02 Apple Inc. Implicit identification of translation payload with neural machine translation
US10928918B2 (en) 2018-05-07 2021-02-23 Apple Inc. Raise to speak
US11145294B2 (en) 2018-05-07 2021-10-12 Apple Inc. Intelligent automated assistant for delivering content from user experiences
US10984780B2 (en) 2018-05-21 2021-04-20 Apple Inc. Global semantic word embeddings using bi-directional recurrent neural networks
US10892996B2 (en) 2018-06-01 2021-01-12 Apple Inc. Variable latency device coordination
DK180639B1 (en) 2018-06-01 2021-11-04 Apple Inc DISABILITY OF ATTENTION-ATTENTIVE VIRTUAL ASSISTANT
DK179822B1 (da) 2018-06-01 2019-07-12 Apple Inc. Voice interaction at a primary device to access call functionality of a companion device
US11386266B2 (en) 2018-06-01 2022-07-12 Apple Inc. Text correction
DK201870355A1 (en) 2018-06-01 2019-12-16 Apple Inc. VIRTUAL ASSISTANT OPERATION IN MULTI-DEVICE ENVIRONMENTS
US10504518B1 (en) 2018-06-03 2019-12-10 Apple Inc. Accelerated task performance
US11010561B2 (en) 2018-09-27 2021-05-18 Apple Inc. Sentiment prediction from textual data
US10839159B2 (en) 2018-09-28 2020-11-17 Apple Inc. Named entity normalization in a spoken dialog system
US11462215B2 (en) 2018-09-28 2022-10-04 Apple Inc. Multi-modal inputs for voice commands
US11170166B2 (en) 2018-09-28 2021-11-09 Apple Inc. Neural typographical error modeling via generative adversarial networks
US11475898B2 (en) 2018-10-26 2022-10-18 Apple Inc. Low-latency multi-speaker speech recognition
US11638059B2 (en) 2019-01-04 2023-04-25 Apple Inc. Content playback on multiple devices
US11348573B2 (en) 2019-03-18 2022-05-31 Apple Inc. Multimodality in digital assistant systems
US11307752B2 (en) 2019-05-06 2022-04-19 Apple Inc. User configurable task triggers
US11423908B2 (en) 2019-05-06 2022-08-23 Apple Inc. Interpreting spoken requests
DK201970509A1 (en) 2019-05-06 2021-01-15 Apple Inc Spoken notifications
US11475884B2 (en) 2019-05-06 2022-10-18 Apple Inc. Reducing digital assistant latency when a language is incorrectly determined
US11140099B2 (en) 2019-05-21 2021-10-05 Apple Inc. Providing message response suggestions
DK201970511A1 (en) 2019-05-31 2021-02-15 Apple Inc Voice identification in digital assistant systems
DK180129B1 (en) 2019-05-31 2020-06-02 Apple Inc. USER ACTIVITY SHORTCUT SUGGESTIONS
US11496600B2 (en) 2019-05-31 2022-11-08 Apple Inc. Remote execution of machine-learned models
US11289073B2 (en) 2019-05-31 2022-03-29 Apple Inc. Device text to speech
US11360641B2 (en) 2019-06-01 2022-06-14 Apple Inc. Increasing the relevance of new available information
US11468890B2 (en) 2019-06-01 2022-10-11 Apple Inc. Methods and user interfaces for voice-based control of electronic devices
WO2021056255A1 (en) 2019-09-25 2021-04-01 Apple Inc. Text detection using global geometry estimators
US11681804B2 (en) 2020-03-09 2023-06-20 Commvault Systems, Inc. System and method for automatic generation of malware detection traps
WO2021203343A1 (zh) * 2020-04-09 2021-10-14 北京微动数联科技有限公司 Web请求处理方法和装置
US11183193B1 (en) 2020-05-11 2021-11-23 Apple Inc. Digital assistant hardware abstraction
US11061543B1 (en) 2020-05-11 2021-07-13 Apple Inc. Providing relevant data items based on context
US11755276B2 (en) 2020-05-12 2023-09-12 Apple Inc. Reducing description length based on confidence
US11490204B2 (en) 2020-07-20 2022-11-01 Apple Inc. Multi-device audio adjustment coordination
US11438683B2 (en) 2020-07-21 2022-09-06 Apple Inc. User identification using headphones
CN111858675A (zh) * 2020-07-24 2020-10-30 北京玉符科技服务有限公司 自定义属性编辑器
US11637937B2 (en) * 2020-11-18 2023-04-25 Canon Kabushiki Kaisha Information processing apparatus, information processing method, and non-transitory storage medium
CN112800473B (zh) * 2021-03-17 2022-01-04 好人生(上海)健康科技有限公司 一种基于大数据安全屋的数据处理方法
US11620110B1 (en) 2022-06-07 2023-04-04 Snowflake Inc. Registration of multiple user defined functions
US11930045B1 (en) 2023-04-28 2024-03-12 Snowflake Inc. Secure network access from sandboxed applications

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0260658A (ja) 1988-08-29 1990-03-01 Terumo Corp 中空糸膜型物質移動装置
JP3589682B2 (ja) 1993-03-16 2004-11-17 富士通株式会社 文書作成装置
JPH07129565A (ja) 1993-10-29 1995-05-19 Sharp Corp 情報処理装置
US6003050A (en) * 1997-04-02 1999-12-14 Microsoft Corporation Method for integrating a virtual machine with input method editors
US7174288B2 (en) * 2002-05-08 2007-02-06 Microsoft Corporation Multi-modal entry of ideogrammatic languages
US8245270B2 (en) 2005-09-01 2012-08-14 Microsoft Corporation Resource based dynamic security authorization
US7725922B2 (en) * 2006-03-21 2010-05-25 Novell, Inc. System and method for using sandboxes in a managed shell
CN101286154B (zh) * 2007-04-09 2016-08-10 谷歌股份有限公司 输入法编辑器用户档案
CN105589571A (zh) 2007-04-09 2016-05-18 谷歌股份有限公司 客户端输入方法以及输入法编辑器服务器
CN101286094A (zh) * 2007-04-10 2008-10-15 谷歌股份有限公司 多模式输入法编辑器
CN105204617B (zh) 2007-04-11 2018-12-14 谷歌有限责任公司 用于输入法编辑器集成的方法和系统
JP2009223782A (ja) 2008-03-18 2009-10-01 Nec Corp 文字入力装置、携帯端末装置、文字入力方法及びそのプログラム
KR20100056938A (ko) * 2008-11-20 2010-05-28 엔에이치엔(주) 웹 페이지를 생성하기 위해 사용되는 컴포넌트 기반의 자바웹 애플리케이션 개발 프레임워크
CN101488154B (zh) 2009-03-04 2011-10-05 西安双捷科技有限责任公司 用于网页的文字输入实现方法
US8904012B2 (en) 2009-11-27 2014-12-02 Google Inc. Client-server input method editor architecture

Also Published As

Publication number Publication date
CN103080873B (zh) 2016-10-05
TW201205352A (en) 2012-02-01
US9086735B2 (en) 2015-07-21
KR101681281B1 (ko) 2016-12-12
US20120041752A1 (en) 2012-02-16
EP2558923A1 (en) 2013-02-20
WO2011127640A1 (en) 2011-10-20
JP2013524372A (ja) 2013-06-17
CN103080873A (zh) 2013-05-01
EP2558923A4 (en) 2014-11-19
KR20130072209A (ko) 2013-07-01
TWI526880B (zh) 2016-03-21

Similar Documents

Publication Publication Date Title
JP5921527B2 (ja) インプットメソッドエディタのための拡張フレームワーク
US9009030B2 (en) Method and system for facilitating text input
TWI510965B (zh) 輸入方法編輯器整合
TWI437449B (zh) 多重模式輸入方法及輸入方法編輯器系統
US8904012B2 (en) Client-server input method editor architecture
RU2395837C2 (ru) Механизм для обеспечения расширенных функциональных возможностей для инструкций командной строки
WO2008122243A1 (fr) Procédé et système permettant d'appeler rapidement une commande de programme et système destiné à un procédé d'entrée
US20130321267A1 (en) Dynamically changing a character associated with a key of a keyboard
US11763078B2 (en) Provisional selection drives edit suggestion generation
KR20090127936A (ko) 클라이언트 입력 방식
US8219905B2 (en) Automatically detecting keyboard layout in order to improve the quality of spelling suggestions
US20090148073A1 (en) Allowing users to automatically change typographical letter case using application independent functionality
JP2007510203A (ja) 部分的に未解決の入力を分析する機構
Vu et al. Voicify Your UI: Towards Android App Control with Voice Commands
WO2021055058A1 (en) Locally implemented terminal latency mitigation
CN107077365B (zh) 有选择地加载预编译的头部和/或其部分
WO2003079188A1 (fr) Procede de fonctionnement d'un objet logiciel au moyen d'une langue naturelle et programme correspondant
Little et al. Sloppy programming
WO2022241640A1 (en) A split keyboard with different languages as input
Rojbi et al. KeybNav: a new system for web navigation through a keyboard
JP2022177381A (ja) 文書処理プログラム
Tateosian et al. Beginning Python
JP2020095369A (ja) 文書処理装置、文書処理装置の制御プログラム、および文書処理装置を用いた文書処理方法
Patel et al. Enhanced prediction correctness of Smartphone dictionary via addition of application awareness
KR20190100572A (ko) 중국상표 한자독음 검색엔진 및 중국상표 검색방법

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131022

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131224

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140324

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20150105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150507

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20150515

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20150717

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160412

R150 Certificate of patent or registration of utility model

Ref document number: 5921527

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250