TWI526880B - 應用於輸入方法編輯器之延伸架構 - Google Patents
應用於輸入方法編輯器之延伸架構 Download PDFInfo
- Publication number
- TWI526880B TWI526880B TW100112677A TW100112677A TWI526880B TW I526880 B TWI526880 B TW I526880B TW 100112677 A TW100112677 A TW 100112677A TW 100112677 A TW100112677 A TW 100112677A TW I526880 B TWI526880 B TW I526880B
- Authority
- TW
- Taiwan
- Prior art keywords
- input
- instruction code
- ime
- candidates
- computer
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/02—Input arrangements using manually operated switches, e.g. using keyboards or dials
- G06F3/023—Arrangements 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/0233—Character input methods
- G06F3/0237—Character input methods using prediction or retrieval techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/14—Tree-structured documents
- G06F40/146—Coding or compression of tree-structured data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/018—Input/output arrangements for oriental characters
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/02—Input arrangements using manually operated switches, e.g. using keyboards or dials
- G06F3/023—Arrangements 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/40—Processing or translation of natural language
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
- G06F9/454—Multi-language systems; Localisation; Internationalisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
- G06F9/45512—Command shells
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Document Processing Apparatus (AREA)
- User Interface Of Digital Computer (AREA)
- Machine Translation (AREA)
Description
本發明係關於輸入方法。
使用詞符指令碼(logographic script)(其中一個或兩個字元約略地對應於一個字或意義)之語言具有比標準輸入器件(諸如,電腦鍵盤或行動器件小鍵盤)上之鍵更多的字元。舉例而言,中文語言含有藉由基本拼音字元及五個音調定義之成千上萬個字元。可藉由促進在輸入器件上未找到之字元及符號之鍵入的輸入方法來實施此等多對一關聯之映射。因此,可使用西方式(Western-style)鍵盤或行動器件以輸入中文字元。同樣地,輸入方法可用於使用西方式鍵盤以輸入包括表意文字(ideogram)之許多其他語言,諸如,日文語言、韓文語言及其他語言。
可使用輸入方法編輯器(IME)以實現輸入方法。在使用中文語言作為一實例的情況下,使用者可輸入一或多個拼音字元或查詢,該一或多個拼音字元或查詢係藉由該IME處理以提供一或多個中文字元候選者。一情節包括查詢至候選者映射函式:f(query)=candidates,其中查詢包括一ASCII鍵序列且候選者包括一中文或非中文字串清單。雖然存在將ASCII查詢映射至中文或非中文候選者之其他輸入至輸出映射,但此等映射之功能性有限。
本說明書描述關於輸入方法編輯器之技術,且尤其描述關於應用於輸入方法編輯器之延伸架構的技術。
一般而言,本說明書中所描述之標的之一創新態樣可體現於包括以下各動作之方法中:接收輸入至一輸入方法編輯器(IME)之一使用者介面中的一使用者輸入;將該使用者輸入提供至一指令碼引擎;自以電子方式儲存於一指令碼存放庫中之複數個指令碼中選取一指令碼;使用該指令碼引擎經由該指令碼處理該使用者輸入以產生一或多個候選者;及將該一或多個候選者提供至一IME引擎。
在一些態樣中,該等動作進一步包括執行個體化一沙箱處理程序(sandbox process),該指令碼引擎係在該沙箱處理程序內執行。
在一些態樣中,該IME引擎使用處理程序間通信而與該指令碼引擎通信。
在一些態樣中,該等動作進一步包括在該沙箱處理程序內執行一IPC(處理程序間通信)伺服器,該IPC伺服器使能夠進行在該IME引擎與該指令碼引擎之間的通信。
在一些態樣中,該沙箱處理程序限制該指令碼引擎之功能性。
在一些態樣中,該使用者輸入包括識別該指令碼之一輸入序列及待藉由該指令碼處理之一輸入。
在一些態樣中,該等動作進一步包括:比較該使用者輸入與一或多個觸發程式字串(trigger string);判定該使用者輸入匹配於該一或多個觸發程式字串中之一觸發程式字串;及基於該一或多個觸發程式字串中之該觸發程式字串而選取該指令碼。
在一些態樣中,該等動作進一步包括:接收指示在一延伸模式中該IME之操作的一輸入;回應於接收到該輸入而在該延伸模式中操作該IME;及在該延伸模式中操作時將全部使用者輸入提供至該指令碼引擎。
在一些態樣中,經由該指令碼處理該使用者輸入包括以下各動作:建立與一基於web之服務的一網路連接;將該使用者輸入之至少一部分提供至該基於web之服務;及自該基於web之服務接收一回應,該回應已基於該使用者輸入之該至少一部分而產生,且該一或多個候選者包括該回應。在一些態樣中,該基於web之服務包括一映射服務、一搜尋服務及一轉譯服務中之至少一者。
在一些態樣中,該等動作進一步包括:產生包括一第一候選者集合之一第一候選者清單;產生包括一第二候選者集合之一第二候選者清單,該第二候選者集合包括使用該指令碼引擎所產生之該一或多個候選者;組合該第一候選者集合之至少一部分與該第二候選者集合之至少一部分以提供一第三候選者清單;及在使用者器件上顯示該第三候選者清單。
在一些態樣中,該IME引擎處理該一或多個候選者以用於顯示於該使用者介面上。
在一些態樣中,該等動作進一步包括:接收指示該一或多個候選者中之一候選者之一選取的第二使用者輸入;及將該一或多個候選者中之該候選者輸入至在一使用者器件上執行之一應用程式。在一些態樣中,該應用程式包括以下各者中之一者:一文書處理應用程式、一文字編輯應用程式、一試算表應用程式、一電子郵件應用程式、一簡報應用程式,及一web瀏覽程式。
在一些態樣中,以電子方式儲存於該指令碼存放庫中之每一指令碼包括選自複數個已核准常式之一或多個常式。
在一些態樣中,該等動作進一步包括識別該指令碼之一指令碼語言,其中該指令碼引擎執行個體化對應於該指令碼語言之一執行階段以用於經由該指令碼處理該使用者輸入。
在一些態樣中,以一第一語言提供該使用者輸入。在一些態樣中,以該第一語言提供該一或多個候選者。在其他態樣中,以一第二語言提供該一或多個候選者。在其他態樣中,以該第一語言與一第二語言之一組合提供該一或多個候選者。在一些態樣中,該一或多個候選者包括一或多個符號。
在一些態樣中,該等動作進一步包括:接收輸入;回應於該輸入而產生以電子方式儲存於一中央登錄檔中之一可用指令碼清單,該可用指令碼清單包括該指令碼;接收指示該指令碼之一選取的一第二輸入;回應於該第二輸入而自該中央登錄檔擷取該指令碼;及將該指令碼儲存於該指令碼存放庫中。
本說明書中所描述之標的之另一創新態樣可體現於包括以下各動作之方法中:接收輸入至一IME之一使用者介面中的一使用者輸入;將該使用者輸入提供至一指令碼引擎;自以電子方式儲存於一指令碼存放庫中之複數個指令碼中選取一指令碼;基於提供於該指令碼中之指令而建立與一基於web之服務的一網路連接;將該使用者輸入之至少一部分提供至該基於web之服務;自該基於web之服務接收一回應;及將該回應提供至一IME引擎以將該回應顯示給一使用者。
在一些態樣中,該基於web之服務包括一映射服務、一搜尋服務及一轉譯服務中之至少一者。在一些態樣中,將該使用者輸入之該至少一部分提供至該映射服務,且藉由該映射服務產生該回應,且該回應包括一使用者可選取超連結。在其他態樣中,將該使用者輸入之該至少一部分作為一搜尋字詞(search term)而提供至該搜尋服務,且藉由該搜尋服務產生該回應,且該回應包括藉由該搜尋服務基於該搜尋字詞產生之一或多個搜尋結果。在其他態樣中,將該使用者輸入之該至少一部分提供至該轉譯服務且以一第一語言提供該使用者輸入之該至少一部分,且藉由該轉譯服務產生該回應且以一第二語言提供該回應。
一般而言,本說明書中所描述之標的之另一態樣可體現於包括以下各動作之方法中:接收一指令碼檔案,該指令碼檔案可藉由一IME系統執行以基於輸入至該IME系統之一使用者輸入而產生一或多個候選者;將該指令碼檔案以電子方式儲存於一中央登錄檔中,該中央登錄檔包含複數個指令碼;及發佈該複數個指令碼以可用於下載至一使用者器件且安裝於該使用者器件上,該使用者器件包括該IME系統。
在一些態樣中,該複數個指令碼中之每一指令碼包括選自複數個已核准常式之一或多個常式。
在一些態樣中,以JavaScript、Lua及VBScript中之一者撰寫該複數個指令碼中之該等指令碼。
在一些態樣中,該複數個指令碼中之至少一指令碼包括關聯中繼資料,該關聯中繼資料提供用於顯示該一或多個候選者之指令。在一些態樣中,該等指令包括提供用於顯示一候選者清單中之該一或多個候選者的一數字序列。在其他態樣中,該等指令包括提供用於顯示一候選者清單中之該一或多個候選者的一字母序列。
在以下隨附圖式及描述中闡述本說明書中所描述之標的之一或多個實施例的細節。該標的之其他特徵、態樣及優點將自該描述、該等圖式及申請專利範圍變得顯而易見。另外,可以一或多個組合來組合本說明書中所描述之標的之態樣(包括上文所描述之態樣)。
§1.0 總覽
本說明書描述關於應用於輸入方法編輯器(IME)之延伸架構的技術。雖然將在英文語言及中文語言之上下文中描述實例實施例,但本發明可容易地適用於其他非詞符語言(例如,包括德文、法文、意大利文、西班牙文、葡萄牙文、瑞典文)及詞符語言(例如,包括日文語言、韓文語言及/或印度文語言)。
圖1為可用以實施本文中所描述之系統及方法之實例系統100的方塊圖。系統100可包括(例如)電腦器件(諸如,個人電腦器件),或其他電子器件(諸如,行動電話、行動通信器件、個人數位助理(PDA),及其類似者)。系統100包括處理器件102、第一資料儲存區104、第二資料儲存區106、輸入器件108、輸出器件110,及網路介面112。可使用包括(例如)資料匯流排及主機板之匯流排系統114以建立及控制在組件102、104、106、108、110及112之間的資料通信。亦可使用其他系統構架(architecture)。
處理器件102可包括(例如)一或多個微處理器。第一資料儲存區104可包括(例如)隨機存取記憶體儲存器件(諸如,動態隨機存取記憶體),或其他類型之電腦可讀媒體記憶體器件。第二資料儲存區106可包括(例如)一或多個硬碟機、一快閃記憶體及/或一唯讀記憶體,或其他類型之電腦可讀媒體記憶體器件。
實例輸入器件108可包括鍵盤、滑鼠、手寫筆等等,且實例輸出器件110可包括顯示器件、音訊器件等等。網路介面112可(例如)包括可操作以將資料傳達至網路116及自網路116傳達資料之有線或無線網路器件。網路116可包括一或多個區域網路(LAN)及/或一廣域網路(WAN)(諸如,網際網路)。
在一些實施例中,系統100可包括來自資料儲存區(諸如,資料儲存區106)之IME程式碼101。IME程式碼101可包括在執行後隨即導致處理器件102執行IME功能之指令。IME程式碼101可包括(例如)可在web瀏覽程式環境中執行之解譯指令,諸如,指令碼指令(例如,JavaScript或ECMAScript指令)。亦可使用其他實施例,例如,獨立應用程式、小程式、外掛程式模組等等。
IME程式碼101之執行產生或啟動IME執行個體103。IME執行個體103促進在器件100處一或多種輸入方法之處理,在此時間期間,系統100可接收用於輸入字元或符號(諸如,漢字字元)之綜合輸入(composition input)。舉例而言,使用者可使用輸入器件108(例如,鍵盤(諸如,西方式鍵盤)、與手寫辨識引擎一起使用之手寫筆等等)中之一或多者以輸入用於識別漢字字元之綜合輸入。在一些實例中,一漢字字元可由一個以上綜合輸入構成。
第一資料儲存區104及/或第二資料儲存區106可儲存綜合輸入與字元之關聯。基於使用者輸入,輸入方法編輯器執行個體103可使用資料儲存區104及/或資料儲存區106中之資訊以識別藉由輸入表示之一或多個候選者選取。在一些實施例中,若識別一個以上候選者選取,則將該等候選者選取顯示於輸出器件110上。在使用輸入器件108的情況下,使用者可自候選者選取中選取使用者希望輸入之漢字字元。
在一些實施例中,系統100上之IME執行個體103可接收一或多個拼音綜合輸入且將該等綜合輸入轉換成漢字字元。IME執行個體103可(例如)使用自按鍵輸入(keystroke)所接收之拼音音節或字元之綜合以表示漢字字元。每一拼音音節可(例如)對應於西方式鍵盤中之一或多個按鍵輸入。在使用拼音IME的情況下,使用者可藉由使用綜合輸入而輸入漢字字元,綜合輸入包括表示漢字字元之聲音的一或多個拼音音節。然而,亦可促進用於其他語言之輸入方法。
在一些實施例中,亦可使用能夠存取系統100之遠端計算系統118以編輯詞符指令碼。舉例而言,系統100可為經由網路116提供詞符指令碼編輯能力之伺服器。在一實例中,使用者可使用遠端計算系統(例如,用戶端電腦)來編輯儲存於資料儲存區104及/或資料儲存區106中之詞符指令碼。系統100可(例如)選取一字元且經由網路介面112而自使用者接收一綜合輸入。處理器件102可(例如)識別鄰近於已選取字元之一或多個字元,且基於已接收綜合輸入及鄰近字元而識別一或多個候選者選取。系統100可將包括候選者選取之資料通信傳輸回至遠端計算系統。
在一些實施例中,IME執行個體103可基於一或多個綜合輸入及語言上下文105而識別候選者選取。語言上下文105可(例如)定義藉由輸入方法編輯器執行個體103支援之不同語言,例如,英文語言上下文105a、中文語言上下文105b、韓文語言上下文105c等等。舉例而言,IME執行個體103可將英文語言上下文105a應用於綜合輸入以將綜合輸入映射至英文字母表。同樣地,IME執行個體103可將中文語言上下文105b應用於綜合輸入以將綜合輸入映射至拼音輸入,等等。
基於綜合輸入及語言上下文105,IME執行個體103可識別供使用者選取之一或多個候選者選取。在一些實施例中,可使用語言上下文105以自動地提供藉由不同語言定義之候選者選取,例如,交錯式顯示模式,其中可與中文字元(例如,漢字字元)同時地顯示來自英文語言(例如,定義字之字母)之候選者選取。在一些實施例中,可使用語言上下文105以自動地提供藉由單語言定義之候選者選取,例如,雙態觸發式顯示模式,其中可針對第一字元集合顯示僅來自英文語言(例如,定義字之字母)之候選者選取,且可針對第二字元集合僅顯示來自中文語言(例如,漢字字元)之候選者選取。
圖2為實例IME系統120之方塊圖。可(例如)使用輸入方法編輯器程式碼101以及關聯資料儲存區104及106來實施IME系統120。IME系統120包括IME引擎122、字元資料儲存區124、綜合輸入資料儲存區126、語言模型資料儲存區128,及延伸架構200。亦可使用其他儲存構架。字元資料儲存區124包括用於一或多個語言模型中之詞符指令碼之字元,及在羅馬式或西方式字母表(例如,英文、德文、西班牙文等等)中之字元及字。在一些實施例中,字元資料儲存區124亦包括關於字元之間的關係的資訊。舉例而言,字元資料儲存區124可包括取決於鄰近於一字元之字元而指派給該字元之分數或機率值。亦可使用其他上下文關係資料。如下文更詳細地所論述,延伸架構200與IME引擎122互動以支援任意查詢至候選者映射。
綜合輸入資料儲存區126包括綜合輸入與儲存於字元資料儲存區124中之字元的關聯。在一些實施例中,綜合輸入資料儲存區126可將字元資料儲存區124中之該等字元中之每一者連結至藉由輸入方法編輯器引擎122使用之一綜合輸入。舉例而言,IME引擎122可使用字元資料儲存區124及綜合輸入資料儲存區124中之資訊,以使字元資料儲存區124中之一或多個字元與綜合輸入資料儲存區126中之一或多個綜合輸入相關聯及/或識別字元資料儲存區124中之一或多個字元與綜合輸入資料儲存區126中之一或多個綜合輸入。
語言模型資料儲存區128可定義一或多個語言模型,例如,英文語言模型、中文語言模型等等。每一語言模型可(例如)定義一特定規則集合(例如,為一語言、片語集合、詞句等等所特有之文法),該特定規則集合可用以判定使用者在鍵入一綜合輸入集合時之很可能的意圖。每一語言模型亦可包括一特定使用者之一使用者歷史(例如,一特定使用者常用之字及片語之辭典)。
在一些實施例中,IME引擎122可根據語言上下文105(例如,英文上下文105a、中文上下文105b、韓文上下文105c等等)來解譯綜合輸入。當根據語言上下文105來解譯綜合輸入時,可判定語言上下文值107。基於語言上下文值107及綜合輸入,可識別候選者選取且將該等候選者選取呈現給使用者以供選取。
舉例而言,可藉由輸入方法編輯器引擎122接收若干綜合輸入(例如,按鍵輸入)。按鍵輸入可定義中文上下文105b中之一系列拼音輸入,且可定義英文上下文105a中之一系列字母。因此,可將一或多個英文候選者選取(例如,字)及一或多個中文候選者選取(例如,漢字字元)呈現給使用者以供選取。
在一些實施例中,可藉由比較綜合輸入與英文字之首碼且基於該比較而設定英文上下文值107a來判定該英文上下文值。舉例而言,綜合輸入o-p-p-o匹配於字「opportunity」中之字元字串。可(例如)與藉由該比較識別之首碼匹配成比例地設定英文上下文值107a,例如,對於綜合輸入o-p,該上下文值可較低,但對於綜合輸入o-p-p-o-r-t-u,該上下文值可高得多。
亦可藉由其他處理程序判定語言上下文值107。舉例而言,可藉由針對中文語言模型而評估中文字元且基於該評估而設定中文上下文值107b來判定中文上下文值107b。舉例而言,中文語言模型可包括中文文法模型。實例中文文法模型可包括連動式建構模型、完成式及未完成式模型,以及其他文法模型。
基於綜合輸入(例如,按鍵輸入),可識別一系列拼音輸入。又可利用拼音綜合輸入以識別漢字字元。可將中文文法模型應用於漢字字元以判定使用者意欲在中文上下文中輸入之可能性。舉例而言,引起全部為動詞之漢字字元之綜合輸入字串的分數將極低,但引起具有動詞及賓語之結果之綜合輸入字串的分數將較高,等等。作為另一實例,引起讀取「I love flowers」之中文字元字串的綜合輸入將接收較高中文上下文值107b,且引起讀取「bed cow tv」之中文字元字串的綜合輸入字串將接收極低中文上下文值107b。
可使用其他處理程序以判定語言上下文值107。舉例而言,可將特定語言之不常用字之上下文值按比例調整得較低,而可將如藉由使用者設定檔定義的常用字或片語之上下文值按比例調整得較高,等等。
§ 2.0 延伸架構
IME提供查詢至候選者映射函式,該函式可通常被提供為:
f(query)=candidate(s)
其中查詢為一ASCII鍵序列。在使用中文語言作為一實例的情況下,所得候選者可包括一中文或非中文字串清單。舉例而言:
f("pinyin")=["拼音","品","頻","拼",...]
展示拼音至中文映射,該映射為拼音IME之基本輸入模式。
存在可將ASCII查詢映射至一或多個候選者(例如,中文或非中文候選者)之其他映射。作為一實例,IME可在英文自動完成模式中運作以基於部分字輸入而提供一字候選者清單。舉例而言:
f("eng")=["eng","English","engineering",...]
作為另一實例,IME可在中文數字輸入模式中運作。舉例而言:
f("i123")=["一百二十三","壹佰貳拾三","一二三"]
本發明之IME延伸架構藉由提供一命令延伸模式(被參考為「延伸模式」)而延伸IME之能力,該命令延伸模式使IME能夠支援任意查詢至候選者映射,以便滿足不同使用者需要及/或偏好。IME延伸架構達成此目的,而無需基礎映射函式之硬式編碼。通常,IME延伸架構包括指令碼引擎、沙箱處理程序、指令碼存放庫、處理程序間通信(IPC)機制、公用應用程式介面(API)及主控台工具。指令碼引擎主控指令碼語言解譯器之執行階段,以執行儲存於指令碼存放庫中之一或多個指令碼且傳回結果。沙箱處理程序在安全環境中執行指令碼引擎。IPC機制使能夠進行在IME引擎與沙箱處理程序之間的通信。公用API使第三方開發者能夠以統一方式撰寫IME延伸,且主控台工具使開發者能夠測試及驗證已建立延伸指令碼。
圖3為實例IME延伸架構200之方塊圖。當IME在命令延伸模式中操作時實施IME延伸架構200,且IME延伸架構200包括沙箱處理程序202及指令碼存放庫204。沙箱處理程序202執行IPC伺服器206及指令碼引擎208。IME延伸架構200與IME引擎122通信以基於使用者輸入而提供基於指令碼之查詢至候選者映射。具體言之,使用者可與一或多個應用程式220互動。每一應用程式220包括一使用者介面222,使用者介面222係用於接收使用者輸入且顯示基於該使用者輸入所產生之一或多個候選者。作為非限制性實例,每一應用程式220可包括一文書處理應用程式、一文字編輯應用程式、一試算表應用程式、一電子郵件應用程式、一簡報應用程式,及/或一web瀏覽程式。
藉由IME延伸架構200提供之查詢至候選者映射可包括可藉由簡單表查閱(table look-up)實施之一對一映射。藉由IME延伸架構200提供之映射亦可包括基於已實施指令碼語言之更複雜查詢至候選者映射。舉例而言,可提供基於指令碼之延伸以將使用者文字輸入自水平版面配置轉換成垂直版面配置,如下文:
此外,IME延伸架構200使能夠藉由經由網路(例如,圖1之網路116)連接至遠端資源而存取此等資源。舉例而言,可藉由執行延伸指令碼而連接至藉由線上服務提供者(例如,Google)提供之服務。以此方式,延伸指令碼函式可存取服務提供者之服務以實施更有用之輸入特徵。實例輸入特徵可包括:查詢Google地圖以得到詳細位址字串(例如,提供為使用者可選取超連結);指導IME使用者進行Google搜尋;擷取Google建議結果;及/或使用Google轉譯將使用者輸入轉換成另一語言及/或符號。IME延伸架構200進一步使第三方開發者能夠使用指令碼程式設計來撰寫自訂查詢至候選者映射邏輯(相對於進行C++編碼接著進行編譯),如下文更詳細地所論述。
可由第三方產生及測試延伸指令碼。可登錄及發佈運作延伸指令碼以使該等運作延伸指令碼可用於IME使用者。舉例而言,經由IME,使用者可請求一可用清單(亦即,已發佈延伸指令碼)。IME可經由網路連接至中央登錄檔(例如,經由圖1之網路116連接至中央登錄檔230),例如,該中央登錄檔儲存已發佈延伸指令碼。使用者可選取一或多個延伸指令碼,且將已選取延伸指令碼下載及安裝至使用者之本端器件以在延伸模式中操作IME時呼叫該等已選取延伸指令碼。可將延伸指令碼儲存於指令碼存放庫204中,指令碼存放庫204可提供於系統100之數位記憶體中。指令碼存放庫使指令碼引擎208能夠在本端載入及執行對應指令碼。將由使用者安裝之全部指令碼皆儲存於指令碼存放庫204中。在一些實施例中,一或多個指令碼主控件網站(例如,由第三方開發者維護)各自充當遠離使用者器件之一遠端指令碼存放庫。使用者器件可存取該一或多個指令碼主控件網站,且可被提供以可自特定網站得到之一可用指令碼清單,且將已選取指令碼下載至指令碼存放庫204。
在延伸模式中操作時,IME延伸架構200擷取及執行已安裝命令延伸,且將一或多個結果提供至IME引擎以用於顯示給使用者。該等結果可包含詞符字元、非詞符字元、數字、數學運算式、超文字連結、圖示、表情符號及/或符號。作為非限制性實例,符號可包括數學符號(例如,Σ、、∞、∩、、≠、≡、等等)、干支符號(例如,、等等),或任何其他類型之符號(例如,、↓、↑、、&、$、等等)。延伸模式包括命令延伸模式(被參考為「i-ext模式」、觸發程式延伸模式,及處理常式延伸模式。在命令延伸模式中,當使用者輸入一特定字元序列時,呼叫一延伸函式。一實例字元序列可包括:i+命令+引數,在下文予以更詳細地論述。在觸發程式延伸模式中,當該輸入序列或藉由IME產生之該等候選者中之一者匹配於一已預登錄觸發程式字串或型樣時,呼叫一延伸函式。亦即,IME基於該輸入序列而產生一或多個候選者,且檢閱該輸入序列及該一或多個候選者兩者以判定與一已預登錄觸發程式型樣之匹配。在處理常式延伸模式中,將全部使用者輸入引導至延伸函式,且藉由延伸函式產生待藉由IME顯示之全部候選者。在此模式中,IME之行為受到所呼叫之延伸指令碼控制。因此,使用者明確地指示IME(例如,在一延伸登錄熱鍵上點選)進入處理常式延伸模式,且將全部使用者輸入投送至延伸指令碼。
第三方開發者可藉由提供多字元命令名稱、入口函式名稱及簡短描述而登錄延伸指令碼以供在命令延伸模式中使用。為了供在觸發程式延伸模式中使用,第三方開發者可藉由提供入口函式名稱、簡短描述、用以匹配於使用者輸入之0~N個觸發程式字串/型樣、用以匹配於一或多個IME產生候選者之0~M個觸發程式字串/型樣而登錄延伸指令碼。為了供在處理常式延伸模式中使用,第三方開發者可藉由提供藉由延伸處理之輸入模式之名稱、入口函式名稱、簡短描述及自訂熱鍵或功能表項目而登錄延伸指令碼,以使使用者能夠啟動處理常式延伸模式。將此資訊儲存於中央存放庫中以供IME使用者下載及安裝。
下文更詳細地論述在延伸模式(亦即,命令延伸模式、觸發程式延伸模式及處理常式延伸模式中之一者)中IME之操作。
§2.1 指令碼引擎
指令碼引擎初始化指令碼執行階段環境、登錄內建式常式以進入執行階段、載入來自指令碼存放庫之指令碼,且評估每IME核心引擎請求之映射函式。可並行地支援多種指令碼語言(例如,JavaScript、Lua或VBScript)。舉例而言,指令碼引擎可基於已載入指令碼之檔案副檔名(例如,.js、.lua或.vb)而選擇對應指令碼語言執行階段,且在執行階段評估函式。
在一些實施例中,可直接內嵌指令碼語言,且可經由IActiveScript介面使用MS Windows Script Engine。在此等實施例中,不需要額外安裝程式大小,可在無額外努力之情況下支援兩種指令碼語言(例如,JavaScript及VBScript),且可充分利用已預安裝ActiveX控制項。在一些實施例中,可提供內嵌式Lua執行階段引擎。Lua執行階段記憶體要求極小(例如,僅需要大約50 KB之額外安裝程式記憶體)。另外,Lua執行階段易於修整及/或自訂,且易於以白名單列出Lua特徵及內建式常式以避免安全性風險。在一些實施例中,可實施(例如)內嵌式JavaScript引擎。JavaScript為在web開發者當中風行之指令碼語言、在執行JavaScript程式碼時快於Windows Script Engine,且可被修整或自訂。
在包括內嵌式Lua執行階段引擎之實施例中,Lua執行階段引擎可包括以下模組中之一或多者:語彙分析器及剖析器、虛擬機器、記憶體管理及廢棄項目收集、已預編譯厚塊傾印/解除傾印、Lua API、除錯支援,及已建置常式。已建置常式模組可包括基礎程式庫、協同處理程序常式(co-routine routine)、模組/封裝常式、字串程式庫、數學程式庫、作業系統程式庫、表格程式庫、輸入/輸出程式庫,及/或除錯程式庫。可自訂及修整此等模組以最小化程式庫大小,或以白名單列出特徵及內建式常式以用於安全性考慮。自訂Lua常式之一目的係限制可供第三方開發者使用之語言特徵及內建式常式。在僅具有IME相關常式(比如,字串常式、數學常式、表格常式及IME特定常式)的情況下,第三方開發者不能直接影響使用者之本端系統(即使在未保護沙箱之情況下),在下文予以詳細地論述。
通常,IME延伸架構係語言獨立的。因此,IME延伸架構可支援任何指令碼語言,且不限於本文中所論述之指令碼語言。
§2.2 沙箱處理程序
沙箱為供執行程式之限制性環境,且通常藉由使諸如指令碼引擎之處理程序能夠在限制性環境內執行的程式庫來促進沙箱。當予以沙箱化時,指令碼引擎具有有限功能性。在一些實施例中,指令碼引擎僅可存取CPU循環及記憶體。在此等實施例中,例如,沙箱化指令碼引擎不能向磁碟進行寫入或顯示其自有視窗。藉由將指令碼執行限制於沙箱處理程序,可使第三方指令碼與應用程式邏輯上分離。
藉由明確原則來調節指令碼引擎之已允許功能性。沙箱充分利用藉由特定作業系統提供之安全性以允許不能進行對為機密性之電腦或存取資訊之持續改變的程式碼執行。沙箱所提供之構架及確切保證取決於作業系統。在Windows中,例如,在不進行系統呼叫之情況下,程式碼不能執行任何形式之I/O。在大多數系統呼叫中,Windows執行安全性檢查。沙箱確保:對於如在對應原則中所定義的禁止執行伺服器處理程序之特定動作,安全性檢查失敗。
在一些實施方案中,沙箱依賴於藉由作業系統機制提供之保護,作業系統機制可包括(但不限於)符記、物件及/或整合層級(integrity level)。此等實例機制在保護作業系統、作業系統之組態及使用者資料方面高度有效。藉由為可被呼叫以定義指令碼引擎之限制及裕度之程式設計介面的原則來組態實際限制。在一些實施方案中,控制該等限制之實例機制包括主符記、模擬符記及工作符記。一些實施方案進一步包括整合層級(例如,包括Windows Vista作業系統之實施例)。
作為另一實例,由Google提供之Chrome作業系統係為沙箱處理程序(例如,指令碼引擎)之建立而提供。Chrome作業系統使用符記限制、工作物件及API攔截來限制沙箱處理程序之特殊權限(privilege),且使用簡單共用記憶體作為IPC以提供在沙箱處理程序與代理人處理程序(例如,IME引擎)之間的通信。舉例而言,IME引擎提供可用以開始及初始化沙箱處理程序之自動開始IME精靈協助程式處理程序(daemon process)。對於本發明之IME延伸架構,可實施一較簡單沙箱(例如,使用符記限制及工作物件以限制指令碼引擎之特殊權限而不使用API攔截的沙箱)。另外,沙箱處理程序自身可扮演IPC中之伺服器角色。
如上文所論述,可實施符記限制、工作物件及API攔截以限制沙箱處理程序之特殊權限。關於符記限制,處理程序(例如,指令碼引擎)在沙箱中以被剝掉一些或全部安全性識別符(SID)之符記(例如,存取符記)開始。在無任何SID之情況下,作業系統之安全性管理員將拒絕對安全物件之存取。關於工作物件,處理程序(例如,指令碼引擎)可在用以限制處理程序之能力的工作物件中執行。具體言之,對工作物件施予限制以防止處理程序改變符記、發送在工作範疇之外的訊息,及/或建立新桌面。API攔截可用以控制沙箱化處理程序對非安全資源之存取,且用以攔截低層級API呼叫且使低層級API呼叫失敗。
IME引擎之自動開始精靈協助程式處理程序可用以開始及初始化沙箱處理程序。為了達成此目的,精靈協助程式處理程序可製作受限制符記、製作工作物件且限制工作物件之能力、用受限制符記繁衍沙箱處理程序、將沙箱處理程序指派給工作物件,及/或將新處理程序之主執行緒之符記改變成具有更多權限之模擬符記。IME引擎可載入延伸指令碼,且可用具有更多權限之模擬符記初始化指令碼引擎及IPC伺服器。
§2.3 在IME與沙箱處理程序之間的通信
在一些實施例中,可使用IPC來建立在IME引擎與沙箱處理程序之間的通信,如上文所論述。IPC提供用於在一或多個處理程序中之多個執行緒當中交換資料的技術集合。IPC方法技術可包括遠端處理程序呼叫(remote procedure call,RPC)。RPC使次常式或處理程序能夠在不同於呼叫程式應用程式之位址空間的另一位址空間中執行。
在一些實施例中,IME引擎使用簡單共用記憶體IPC而與包裝於沙箱中之指令碼引擎通信。可基於作業系統事件而實施通知機制,例如,以處理訊息發送及接收。為了達成此目的,可將IPC提供為較簡單IPC(例如,比Chrome沙箱代理人-目標IPC簡單)。舉例而言,亦包裝於沙箱中之IPC伺服器不需要支援多個任務。在IME引擎與沙箱處理程序之間傳送資訊時,IPC介面可使用協定緩衝區(protocol buffer)作為資料格式。
在一些實施例中,IPC使用C++範本及協定緩衝區來支援任意請求及回應類型。實例IPC請求及回應可包括(例如):
§ 2.4 公用API
如上文所論述,公用API使第三方開發者能夠以統一方式撰寫IME延伸。舉例而言,以Lua指令碼語言撰寫之延伸指令碼含有一或多個查詢至候選者映射函式。一實例映射函式包括:
可將映射函式登錄為延伸命令。具體言之,登錄函式使開發者能夠登錄延伸,該延伸可被提供為命令延伸、觸發程式延伸或處理常式延伸,該等延伸中之每一者在本文中予以更詳細地論述。
可將命令延伸之名稱提供為多字元字串(例如,2字元字串),該多字元字串係用以在延伸模式中時匹配於命令字串輸入。將使用延伸模式所輸入之引數作為函式呼叫(例如,Lua函式呼叫)之引數字串進行傳遞。若函式不需要任何引數,則IME引擎忽略引數。亦即,即使使用者在命令之後明確地輸入引數,但若函式不需要引數,則函式亦將忽略引數。在一些指令碼語言(例如,Lua或JavaScript)中,可將函式定義為不具有引數,但呼叫者仍可傳遞將被忽略之某一引數。若不在延伸模式中提供使用者輸入,則空字串將被傳遞至函式中。指令碼引擎不允許重複的延伸命令名稱。若(例如)第一指令碼具有對應已登錄延伸命令名稱,且開發者試圖登錄使用相同命令名稱之第二指令碼,則函式將傳回錯誤。延伸函式之傳回值可為一物件(例如,字串或數字),或含有兩個或兩個以上物件(例如,字串或數字)之一表格。IME引擎使用每一物件之字串表示作為藉由IME前端顯示之候選者。
§2.5 開發者工具
如上文所論述,本發明之IME延伸架構提供一開發者工具,該開發者工具使第三方開發者能夠建立及登錄延伸指令碼以供IME使用。開發者工具包括以白名單列出(亦即,已核准)之常式。藉由限制可用常式,抑制第三方開發者直接影響使用者之本端系統(即使在未保護沙箱之情況下)。在基於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.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.log10、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)。藉由Lua IME模組提供上文所論述之多個登錄函式以供開發者向IME延伸架構登錄延伸。Lua IME模組亦提供協助程式常式(例如,ime.parse_mapping、ime.join_string)。協助程式常式協助開發者容易地實施IME延伸。舉例而言,許多延伸指令碼之程式碼共用某一共同邏輯(例如,以將一字串常值分割成一映射)。協助程式常式可節省從無到有地撰寫延伸之努力。
可藉由以下操作而在Lua執行階段提供額外常式:以C/C++實施常式且登錄此等常式以進入Lua執行階段;及/或以Lua自身實施常式且載入指令碼作為初始指令碼。用於登錄C/C++函式以進入Lua執行階段之實例程式碼包括:
用於以Lua自身實施Lua IME模組常式之實例程式碼包括:
在C++中,可使用以下實例程式碼以載入以Lua自身所實施之常式:
通常,且對於一些指令碼語言(例如,Lua),可以供實施語言之解譯器的語言來實施預定義內建式常式,或以指令碼語言自身來實施預定義內建式常式。為了簡化此操作,假定以C++來實施Lua語言之解譯器、以C++來實施第一常式,且以Lua來實施第二常式:當載入Lua解譯器時,第一常式為原生機器碼且係連同Lua解譯器一起被載入。第二常式為Lua形式,因此,第二常式係在載入共同Lua指令碼時被載入,但藉由Lua標記為*內建式常式*。當指令碼呼叫第一常式,接著呼叫第二常式時,Lua解譯器在無另外操作之情況下執行第一常式,此係因為已經將第一常式編譯成原生機器碼。然而,對於第二常式,Lua解譯器必須首先解譯第二常式,接著執行第二常式,正如Lua解譯器執行正常指令碼一樣。
§2.6 連接常式
如上文所論述,本發明之IME延伸架構使能夠存取由一或多個線上服務提供者提供之服務以實施更有用之輸入特徵。具體言之,可藉由在指令碼引擎中執行之IME模組提供包括超文字傳送協定(HTTP)連接常式之連接常式,以使延伸指令碼能夠自線上服務提供者提取線上資料。一些實例API可包括:ime.***_translate(text,from_language,to_language,callback),其提供轉譯服務;及ime.***_search(query,parameters,callback),其提供搜尋服務。
連接常式非同步,此係因為可能需要時間來傳回結果。延伸指令碼定義其自有回叫函式,以在資料傳送完成時接收結果。回叫函式使用API來指示IME引擎顯示候選者。一實例API可包括:ime.show_result(query_id,candidates),其顯示搜尋服務之結果。IME引擎及IME前端意識到非同步行為,且可在處理期間顯示等待圖示(例如,沙漏)。
§3.0 一般操作
IME可在基本IME模式中運作以使用傳統查詢至候選者映射來處理使用者輸入。IME亦可在延伸模式中運作以使用IME延伸架構來處理使用者輸入。亦即,IME可在命令延伸模式、觸發程式延伸模式及處理常式延伸模式中之一者中運作以使用已識別延伸指令碼來處理使用者輸入。
圖4為說明用於IME之命令延伸模式之實例處理程序(400)的流程圖。在圖4中,作為非限制性實例而參考中文。可藉由系統100(例如)使用IME引擎122及延伸架構200來執行實例處理程序(400)。在IME引擎122處接收使用者輸入,且可以複數個輸入型樣中之一者來提供使用者輸入。可將一輸入型樣提供為輸入字元(例如,「i」),後面接著引數(例如,[0-9]+)。因此,可將組合式輸入型樣提供為i[0-9]+,其起始(402)IME之基本輸入模式(402)以提供查詢至候選者映射。具體言之,將現有i模式邏輯應用(404)於引數以提供一或多個候選者以用於顯示給使用者。在一些實施例中,現有i模式邏輯可使用簡單表查閱以使用引數作為輸入至表格之輸入來判定相關候選者。經由一或多個前端組件(例如,輸出器件110)將一或多個候選者顯示(406)給使用者。
可將另一輸入型樣提供為輸入字元(例如,「i」),後面接著多字元指令碼名稱(例如,[a-z][a-z])及待藉由指令碼處理之引數(例如,.+)。因此,可將組合式輸入型樣提供為i[a-z][a-z].+,其起始(408)IME之命令延伸模式(「i-ext模式」)以基於藉由IME延伸架構200處理之指令碼而提供查詢至候選者映射。具體言之,執行(410)藉由使用者輸入指定之指令碼以評估引數(「arg」)且判定或產生一或多個候選者。在一些實施例中,指令碼可使用在指令碼中所定義之簡單表查閱以使用引數作為輸入至表格之輸入來判定相關候選者。在其他實施例中,指令碼可用數學方式處理引數以產生相關候選者。在一些實施例中,指令碼可存取網路連接式資源(例如,由服務提供者提供)以產生相關候選者,如上文所論述。在一些實施例中,可提供其他功能性及/或功能性之組合以產生候選者。將一或多個候選者提供至IME引擎122以用於經由一或多個前端組件(例如,輸出器件110)顯示(406)給使用者。
可向IME登錄一或多個觸發程式延伸。每一觸發程式延伸包括一觸發程式字串或型樣,該觸發程式字串或型樣在藉由IME引擎122辨識時起始觸發程式延伸模式。具體言之,可比較輸入至IME之使用者輸入與已登錄觸發程式字串。若使用者輸入匹配於觸發程式字串,則將使用者輸入提供至IME延伸架構200以使用已識別指令碼來處理該輸入。在一些實施例中,可使用IME引擎122(亦即,在基本輸入模式中)來處理使用者輸入以產生第一候選者集合,且若使用者輸入亦匹配於觸發程式字串,則可使用IME延伸架構200(亦即,在觸發程式延伸模式中)來處理使用者輸入以產生第二候選者集合。可藉由IME延伸架構200將第二候選者集合提供至IME引擎122,且可藉由IME引擎122組合第一候選者集合與第二候選者集合以用於顯示給使用者。
在一些實施例中,可基於一或多個候選者而起始觸發程式延伸模式。具體言之,可比較輸入至IME之使用者輸入與已登錄觸發程式字串。若使用者輸入不匹配於觸發程式字串,則藉由IME引擎122處理使用者輸入以產生第一候選者集合。可比較已產生候選者中之每一者與已登錄觸發程式字串。若候選者匹配於觸發程式字串,則使用IME延伸架構200(亦即,在觸發程式延伸模式中)來處理候選者以產生第二候選者集合。可藉由IME延伸架構200將第二候選者集合提供至IME引擎122,且可藉由IME引擎122組合第一候選者集合與第二候選者集合以用於顯示給使用者。
可將IME設定至處理常式延伸模式,在處理常式延伸模式中,將全部使用者輸入提供至IME延伸架構200以供處理。具體言之,可向IME引擎122登錄一處理常式,該處理常式使使用者能夠在基本輸入模式與處理常式延伸模式之間切換。作為實例,此處理常式可包括顯示給使用者之可選取功能表項目及/或熱鍵。若使用者選取功能表項目及/或熱鍵,則起始處理常式延伸模式且將全部使用者輸入引導至IME延伸架構。若使用者取消選取功能表項目及/或熱鍵,則終止處理常式延伸模式且可如本文中所論述而處理使用者輸入。
§3.1 實例處理程序
圖5為說明用於執行IME之實例處理程序500的流程圖。處理程序500可(例如)實施於圖1之系統100中及/或實施於圖2之IME系統120中。處理程序500判定是否已指定特定延伸模式(502)。舉例而言,使用者可將輸入提供至系統100(例如,藉由選取功能表項目及/或熱鍵),該輸入指示IME將在處理常式延伸模式中操作以將全部使用者輸入提供至IME延伸架構以供處理。若指定延伸模式,則IME系統120在處理常式延伸模式中操作,且接收使用者輸入(504)。
將使用者輸入提供為輸入至IME延伸架構之輸入(508)。IME延伸架構藉由以下操作來處理使用者輸入:執行一指令碼以處理使用者輸入且將一或多個候選者傳回至IME引擎(510)。在此狀況下,IME延伸架構執行藉由處理常式延伸模式指定之指令碼。處理程序500基於一或多個候選者而產生一候選者清單(512)。該處理程序判定該等候選者中之任一者是否匹配於一觸發程式字串(514)。舉例而言,IME引擎可比較該等候選者中之每一者與一或多個已登錄觸發程式字串。
若未指定延伸模式(502),則接收使用者輸入(506),且處理程序500判定是否將起始命令延伸模式(516)。舉例而言,IME引擎可評估使用者輸入以判定是否將起始命令延伸模式。若將起始命令延伸模式,則將使用者輸入提供為輸入至IME延伸架構之輸入(508),且該處理程序如上文所描述而繼續。在此狀況下,IME延伸架構執行藉由使用者輸入指定之指令碼。
若使用者輸入未指示將起始命令延伸模式,則處理程序500判定使用者輸入是否匹配於觸發程式字串(518)。舉例而言,IME引擎可比較使用者輸入與一或多個已登錄觸發程式字串。若使用者輸入匹配於觸發程式字串,則將使用者輸入提供為輸入至IME延伸架構之輸入(508),且該處理程序如上文所描述而繼續。在此狀況下,IME延伸架構執行藉由觸發程式字串指定之指令碼。若使用者輸入不匹配於觸發程式字串,則處理程序500基於使用者輸入而產生一候選者清單(520)。具體言之,IME系統在基本輸入模式中操作以使用IME引擎來提供查詢至候選者映射。
處理程序500判定候選者清單中之任一候選者是否匹配於一觸發程式字串(514)。舉例而言,IME引擎可比較候選者清單中之每一候選者與一或多個已登錄觸發程式字串。若候選者清單中之候選者不匹配於觸發程式字串,則處理程序500顯示候選者清單(522)且程該序結束。舉例而言,IME引擎可指示輸出器件顯示候選者清單。
若候選者清單中之候選者匹配於觸發程式字串,則將候選者提供為輸入至IME延伸架構之輸入,且IME延伸架構藉由以下操作來處理候選者:執行一指令碼以處理候選者且將一或多個延伸候選者傳回至IME引擎(524)。處理程序500基於候選者清單及一或多個延伸候選者而產生一已修訂候選者清單(526)。舉例而言,IME引擎可接收一或多個延伸候選者,且可修訂原始候選者清單(例如,在(512)或(520)處所提供)以包括一或多個延伸候選者。處理程序500顯示已修訂候選者清單(528),且該處理程序結束。舉例而言,IME引擎可指示輸出器件顯示已修訂候選者清單。
§4.0 實例延伸
下文提供實例延伸及所得候選者。可使用功能鍵(例如,在鍵盤上)或等效輸入(例如,觸控螢幕或手寫筆輸入)來導覽延伸及所得候選者。使用方括號([...])來指示功能鍵,且實例功能鍵包括:
[ENTER],其係用以提交使用者輸入
[SPACE],其係用以提交當前候選者
[BACKSPACE],其係用以刪除使用者輸入之最後字元
[DEL],其係用以刪除使用者輸入之當前字元
[PGDN]/[PGUP],其係分別用以移至前一候選頁面/下一候選頁面
[↑](向上鍵)/[↓](向下鍵),其係用以在候選者清單內移動
[←](向左鍵)/[→](向右鍵),其係用以移動***號以編輯查詢
[ESC],其係用以取消當前輸入
通常,使用者提供使用者輸入,可藉由按下[ENTER]或等效輸入而將使用者輸入交付給IME。接著藉由IME引擎122(例如,在基本輸入模式中)、IME引擎122與IME架構200(例如,在命令延伸模式或觸發程式延伸模式中)或IME延伸架構200(例如,在處理常式延伸模式中)處理使用者輸入。使用IME引擎122來判定一或多個候選者且將一候選者清單顯示給使用者。取決於候選者之數目,候選者清單可包括一個以上頁面,其中單一候選者清單頁面係在給定時間顯示給使用者。可以字母或數字次序提供候選者,每一候選者具有與其相關聯之一序列字母或數字,如下文所說明。使用者可使用[PGDN]/[PGUP]及/或[↑]/[↓]或等效輸入來導覽候選者清單及/或頁面,以選取所要候選者。使用者可使用[SPACE]或等效輸入來交付已選取候選者。一旦已交付,隨即藉由IME將候選者輸入至主控件應用程式(例如,圖2之應用程式220)。舉例而言,若主控件應用程式為文書處理應用程式,則可將已交付候選者提供至一文件。作為另一實例,若主控件應用程式為網際網路瀏覽程式,則可將已交付候選者輸入至瀏覽程式之任何輸入欄位(例如,已顯示對話方塊、位址列)中。
§4.1 命令延伸模式實例
在一些實施例中,使用者可將簡單使用者輸入(例如,單一字元「i」)提供至IME,該簡單使用者輸入產生可供使用者選取之候選者指令碼清單(亦即,已下載及安裝於使用者器件上之彼等指令碼)。作為實例,且在使用中文作為實例語言的情況下,使用者輸入「i」可產生以下可用命令延伸指令碼清單:
js計算模式,rq當前日期,hh字符畫......<-->
前置「i」起始命令延伸模式(亦即,i-ext模式)且展示可用i-ext指令碼(例如,js、rq、hh,在下文予以更詳細地論述)作為候選者清單。使用者可使用功能鍵或等效輸入來瀏覽命令,且可使用[SPACE]或等效輸入來選取候選指令碼。舉例而言,使用者輸入i[PGDN]導致顯示i-ext命令候選者清單之下一頁面(例如,sj當前時間,wb五筆編碼...<-->)。作為另一實例,使用者輸入i[PGUP]導致顯示i-ext命令候選者清單之前一頁面。
在一些實施例中,使用者可將更複雜使用者輸入(例如,單一字元「i」,後面接著一或多個按鍵輸入或其他等效輸入)提供至IME。舉例而言,使用者輸入「i[SPACE]」導致執行「js」命令延伸以提供以下實例輸入候選者:
[計算模式:請輸入四則運算式,如3*(2.5-1.7)+sin(4)]
具體言之,在i之後的[SPACE]起始i-ext模式「js」,i-ext模式「js」為在可用指令碼清單中所列出之第一指令碼。此情形亦可藉由使用者提供「ijs」作為使用者輸入而達成。
另一實例輸入可包括i[↓][SPACE]。此輸入導致執行「rq」命令延伸以提供以下實例輸入候選者:
1. 2010-10-10 2. 2010年10月10日 3. 2010/10/10
具體言之,[↓]將游標移至第二指令碼候選者(例如,rq),且[SPACE]選取彼指令碼候選者以供執行。此情形亦可藉由使用者提供「irq」作為使用者輸入而達成。數字1.、2.及3.為與候選者相關聯之序號。自輸入候選者清單,可使用鍵[1]、[2]或[3]以交付所要輸入候選者。或者,可使用[SPACE]以交付當前反白顯示之候選者。在其他實施例中,可將使用者輸入提供為「irq2」以直接導致交付2009年10月10。
在此狀況下,原始使用者輸入直接指示應交付由指令碼rq引起的候選者清單之候選者數字2。此情形提供交付輸入候選者之更快速且更有效率之方式(尤其是當使用者已經意識到原本被顯示之候選者時)。
使用者可提供更複雜輸入,包括識別所要指令碼及待藉由該指令碼處理之所要候選者的輸入。舉例而言,使用者輸入「ijs3+2*sin(10)」起始i-ext模式、將js識別為所要指令碼,且將3+2*sin(10)識別為待藉由該指令碼處理之引數。因此,藉由該指令碼處理該引數以產生及顯示以下實例輸出:
1.9119577782213
在此狀況下,僅傳回一結果,且不提供候選者序號。在已預指定後續按鍵輸入(例如,[SPACE])之上,交付已顯示結果,且將已顯示結果提供為輸入至應用程式之輸入。
另一實例輸入可包括導致以下實例輸入候選者清單之「inh1587」:
a.公元1587年 b.萬曆15年 c.萬曆十五年
因此,對於需要數字引數(例如,[0-9]+)之映射函式,已選取指令碼指示指令碼引擎使用序列字母(例如,a、b、c、...)用於已顯示輸入候選者清單且作為候選者選取或交付鍵。可藉由指令碼函式之中繼資料提供此資訊。
圖6A說明對應於命令延伸模式之實例延伸,且圖6B說明基於圖6A之延伸的實例輸出。在圖6A之程式碼600中,函式Compute為由開發者實施之指令碼函式。開發者呼叫ime.register_command以登錄命令延伸。在由使用者安裝命令延伸之後,使用者可輸入「ijs[xxxx]」,其可經鍵入以評估算術運算式[xxxx],且顯示結果。在圖6B之實例中,使用者輸入包括:
i js 380.22*(sin(7.2)+cos(8))
其中算術運算式包括380.22*(sin(7.2)+cos(8)),且指令碼導致實例候選者清單602:
輸入運算式,例如3*log(4+2),246.44637233801
實例候選者清單602係基於圖6A之指令碼而產生。在一些實施例中,可將延伸登錄為觸發程式延伸(在本文中予以更詳細地論述),在該狀況下,開發者呼叫ime.register_trigger。
§4.2 觸發程式延伸模式
如上文所論述,當使用者輸入及/或候選者匹配於已預登錄觸發程式字串時,起始觸發程式延伸模式。在使用中文及英文作為實例語言的情況下,可將中文字「shijian」轉譯成英文為「time」。使用者可將「shijian」輸入至拼音IME,從而導致藉由IME引擎產生之以下實例候選者清單:
1.時間 2.事件 3.實踐 4.世間 5.是件
然而,若「shijian」為已預登錄觸發程式字串,則IME引擎將使用者輸入提供至IME延伸架構,IME延伸架構處理對應指令碼以提供一或多個額外候選者。舉例而言,對應指令碼可傳回當前時間(例如,12:00)作為候選者。將藉由IME延伸架構產生之一或多個候選者提供至IME引擎,IME引擎組合該等候選者以提供以下實例候選者清單:
1.時間 2.事件 3.實踐 4.世間 5. 12:00
在上述候選者清單中,將延伸候選者(亦即,藉由IME延伸架構提供之候選者)***至第一候選者清單頁面之最後位置。
在一些實施例中,可基於藉由IME引擎產生之候選者而起始觸發程式延伸模式。舉例而言,使用者輸入「shijian」通常將導致藉由IME引擎產生之以下實例候選者清單:
1.時間 2.事件 3.實踐 4.世間 5.是件
如上文所論述。然而,若IME引擎認識到候選者匹配於已預登錄觸發程式字串,則IME引擎可將彼候選者提供至IME延伸架構以產生一或多個額外候選者。作為實例,可將「時間」(亦即,上述實例候選者清單中之第一候選者)提供為已預登錄觸發程式字串。因此,IME引擎將「時間」提供至IME延伸架構,IME延伸架構基於指定指令碼而處理「時間」以產生延伸候選者(例如,12:00)。將延伸候選者提供至IME引擎,IME引擎處理最終或已修訂候選者清單以用於顯示給使用者。一實例已修訂候選者清單可包括:
1.時間 2. 12:00 3.事件 4.實踐 5.世間
因此,若基於IME引擎之特定候選者而起始觸發程式延伸模式,則緊接於觸發候選者而***延伸候選者。
在一些實施例中,可使用首碼及/或尾碼匹配而藉由使用者輸入來起始觸發程式延伸模式。當登錄觸發程式延伸時,可使用萬用字符(例如,「!」或「*」)以定義首碼/尾碼匹配。作為非限制性實例,可將觸發程式延伸「bm*」登錄為使用者輸入觸發程式字串。以「bm」開始之任何使用者輸入將被IME引擎辨識為匹配於觸發程式字串。一實例使用者輸入可包括「bmabcd」。回應於使用者輸入,IME引擎可產生包括第一候選者集合之候選者清單。藉由IME引擎產生之實例候選者清單可包括:
1.寶馬奔馳的 2.編碼 3.爸媽 4.寶馬 5.白馬
然而,因為將「bm*」登錄為觸發程式字串,所以IME延伸架構亦處理使用者輸入以產生包括第二候選者集合之延伸候選者清單。藉由IME延伸架構產生之實例候選者清單可包括:
囧
因此,單一候選者提供於第二候選者集合中。可將IME延伸架構之延伸候選者清單提供至IME引擎,IME引擎組合該等候選者清單以提供一已修訂候選者清單。一實例已修訂候選者清單可包括:
1.寶馬奔馳的 2.編碼 3.爸媽 4.寶馬 5.囧
本說明書中所描述的本發明之實施例及全部功能操作可實施於數位電子電路中,或實施於電腦軟體、韌體或硬體(包括本說明書中所揭示之結構及其結構等效物)中,或實施於其中之一或多者之組合中。本發明之實施例可實施為一或多個電腦程式產品,亦即,經編碼於電腦可讀媒體上以供資料處理裝置執行或以控制資料處理裝置之操作的電腦程式指令之一或多個模組。電腦可讀媒體可為機器可讀儲存器件、機器可讀儲存基板、記憶體器件、實現機器可讀傳播信號之物質組成,或其中之一或多者之組合。術語「資料處理裝置」涵蓋用於處理資料之全部裝置、器件及機器,包括(作為實例)一可程式化處理器、一電腦或多個處理器或電腦。除了硬體以外,該裝置亦可包括建立用於所討論電腦程式之執行環境的程式碼,例如,構成處理器韌體、協定堆疊、資料庫管理系統、作業系統或其中之一或多者之組合的程式碼。傳播信號為人工產生信號,例如,經產生以編碼資訊以用於傳輸至合適接收器裝置之機器產生電信號、光學信號或電磁信號。
可以任何形式之程式設計語言(包括編譯或解譯語言)來撰寫電腦程式(亦被稱為程式、軟體、軟體應用程式、指令碼,或程式碼),且可以任何形式(包括作為獨立程式,或作為模組、組件、次常式或適用於計算環境中之其他單元)來部署該電腦程式。電腦程式未必對應於檔案系統中之檔案。可將程式儲存於保持其他程式或資料(例如,儲存於標記語言文件中之一或多個指令碼)的檔案之部分中、儲存於專用於所討論程式之單一檔案中,或儲存於多個協調檔案(例如,儲存一或多個模組、次程式或程式碼之部分的檔案)中。一電腦程式可經部署以在一電腦上執行,或在位於一位點處或橫越多個位點而分散且藉由一通信網路互連之多個電腦上執行。
本說明書中所描述之處理程序及邏輯流程可藉由一或多個可程式化處理器執行,該一或多個可程式化處理器執行一或多個電腦程式以藉由對輸入資料操作且產生輸出而執行功能。處理程序及邏輯流程亦可藉由以下各者執行且裝置亦可實施為以下各者:特殊用途邏輯電路,例如,FPGA(場可程式化閘陣列)或ASIC(特殊應用積體電路)。
適於執行電腦程式之處理器包括(作為實例)一般用途微處理器及特殊用途微處理器兩者,以及任何種類之數位電腦的任何一或多個處理器。通常,處理器將自唯讀記憶體或隨機存取記憶體或唯讀記憶體及隨機存取記憶體兩者接收指令及資料。一電腦之必需元件為用於執行指令之一處理器,以及用於儲存指令及資料之一或多個記憶體器件。通常,一電腦將亦包括用於儲存資料之一或多個大容量儲存器件(例如,磁碟、磁光碟或光碟),或該電腦經操作性地耦接以自該一或多個大容量儲存器件接收資料或將資料傳送至該一或多個大容量儲存器件,或接收及傳送資料。然而,一電腦無需具有此等器件。此外,一電腦可內嵌於另一器件(例如,行動電話、個人數位助理(PDA)、行動音訊播放器、全球定位系統(GPS)接收器(僅舉幾個例子))中。適於儲存電腦程式指令及資料之電腦可讀媒體包括全部形式之非揮發性記憶體、媒體及記憶體器件,包括(作為實例):半導體記憶體器件(例如,EPROM、EEPROM,及快閃記憶體器件);磁碟(例如,內部硬碟或抽取式磁碟);磁光碟;以及CD ROM及DVD-ROM磁碟。處理器及記憶體可藉由特殊用途邏輯電路補充,或併入於特殊用途邏輯電路中。
為了提供與使用者之互動,可將本發明之實施例實施於用於將資訊顯示給使用者的具有顯示器件(例如,CRT(陰極射線管)或LCD(液晶顯示器)監視器)之電腦上,以及鍵盤及指標器件(例如,滑鼠或軌跡球)上,使用者可藉由該鍵盤及該指標器件將輸入提供至該電腦。亦可使用其他種類之器件以提供與使用者之互動;舉例而言,提供至使用者之回饋可為任何形式之感官回饋,例如,視覺回饋、聽覺回饋或觸覺回饋;且可以任何形式接收來自使用者之輸入,包括聲學、語音或觸覺輸入。
本發明之實施例可實施於以下各者中:包括後端組件(例如,作為資料伺服器)之計算系統,或包括中間軟體組件(例如,應用程式伺服器)之計算系統,或包括前端組件(例如,具有圖形使用者介面或Web瀏覽程式之用戶端電腦,使用者可經由該用戶端電腦而與本發明之實施例互動)之計算系統,或一或多個此等後端、中間軟體或前端組件之任何組合。可藉由數位資料通信之任何形式或媒體(例如,通信網路)來互連該系統之組件。通信網路之實例包括區域網路(「LAN」)及廣域網路(「WAN」)(例如,網際網路)。
計算系統可包括用戶端及伺服器。用戶端與伺服器通常遠離彼此且通常經由通信網路而互動。用戶端與伺服器之關係係根據在各別電腦上執行且彼此具有用戶端-伺服器關係之電腦程式而產生。
雖然本說明書含有許多特定細節,但此等特定細節不應被解釋為對本發明或可主張之內容之範疇的限制,而是應被解釋為本發明之特定實施例所特有之特徵的描述。在本說明書中於分離實施例之上下文中所描述的某些特徵亦可以組合方式實施於單一實施例中。相反地,在單一實施例之上下文中所描述的各種特徵亦可分離地或以任何合適子組合方式實施於多個實施例中。此外,雖然上文可將特徵描述為以某些組合方式起作用且甚至最初是按此主張,但來自所主張組合之一或多個特徵在一些狀況下可被自該組合刪去,且所主張組合可有關於子組合或子組合之變化。
類似地,雖然在圖式中按特定次序描繪操作,但不應將此情形理解為需要按所展示之特定次序或按依序次序執行此等操作或需要執行全部所說明操作以達成理想結果。在某些情況下,多任務及並行處理可為有利的。此外,不應將上文所描述之實施例中的各種系統組件之分離理解為在全部實施例中需要此分離,且應理解,所描述之程式組件及系統可通常一起整合於單一軟體產品中或封裝至多個軟體產品中。
已描述本發明之數個實施例。然而,應理解,可在不脫離本發明之精神及範疇的情況下進行各種修改。因此,其他實施例係在以下申請專利範圍之範疇內。
100...可用以實施本文中所描述之系統及方法之實例系統/器件
101...輸入方法編輯器(IME)程式碼
102...處理器件/組件
103...輸入方法編輯器(IME)執行個體
104...第一資料儲存區/組件
105...語言上下文
105a...英文語言上下文/英文上下文
105b...中文語言上下文/中文上下文
105c...韓文語言上下文/韓文上下文
106...第二資料儲存區/組件
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...中央登錄檔
600...程式碼
602...實例候選者清單
圖1為可用以實施本文中所描述之系統及方法之實例系統的方塊圖;
圖2為實例輸入方法編輯器(IME)之方塊圖;
圖3為實例IME延伸架構之方塊圖;
圖4為說明用於IME之命令延伸模式之實例處理程序的流程圖;
圖5為說明用於執行IME之實例處理程序的流程圖;
圖6A說明對應於命令延伸模式之實例延伸;及
圖6B說明基於圖6A之延伸的實例輸出。
各種圖式中之相似參考符號指示相似元件。
105a...英文語言上下文/英文上下文
105b...中文語言上下文/中文上下文
105c...韓文語言上下文/韓文上下文
107a...英文上下文值
107b...中文上下文值
107c...韓文上下文值
120...輸入方法編輯器(IME)系統
122...輸入方法編輯器(IME)引擎
124...字元資料儲存區
126...綜合輸入資料儲存區
128...語言模型資料儲存區
200...輸入方法編輯器(IME)延伸架構
Claims (55)
- 一種電腦實施方法,其包含:接收輸入至一輸入方法編輯器(IME)之一使用者介面中的一使用者輸入;將該使用者輸入提供至一指令碼引擎;自以電子方式儲存於一指令碼存放庫中之複數個指令碼中選取一指令碼;使用該指令碼引擎經由該指令碼處理該使用者輸入以產生一或多個候選者;及將該一或多個候選者提供至一IME引擎。
- 如請求項1之電腦實施方法,其進一步包含執行個體化一沙箱處理程序,該指令碼引擎係在該沙箱處理程序內執行。
- 如前述請求項中之一或多項之電腦實施方法,其中該IME引擎使用處理程序間通信而與該指令碼引擎通信。
- 如請求項3之電腦實施方法,其進一步包含在該沙箱處理程序內執行一IPC(處理程序間通信)伺服器,該IPC伺服器使能夠進行在該IME引擎與該指令碼引擎之間的通信。
- 如請求項2之電腦實施方法,其中該沙箱處理程序限制該指令碼引擎之功能性。
- 如請求項1之電腦實施方法,其中該使用者輸入包含識別該指令碼之一輸入序列及待藉由該指令碼處理之一輸入。
- 如請求項1之電腦實施方法,其進一步包含:比較該使用者輸入與一或多個觸發程式字串;判定該使用者輸入匹配於該一或多個觸發程式字串中之一觸發程式字串;及基於該一或多個觸發程式字串中之該觸發程式字串而選取該指令碼。
- 如請求項1之電腦實施方法,其進一步包含:接收指示在一延伸模式中該IME之操作的一輸入;回應於接收到該輸入而在該延伸模式中操作該IME;及在該延伸模式中操作時將全部使用者輸入提供至該指令碼引擎。
- 如請求項1之電腦實施方法,其中經由該指令碼處理該使用者輸入包含:建立與一基於web之服務的一網路連接;將該使用者輸入之至少一部分提供至該基於web之服務;及自該基於web之服務接收一回應,該回應已基於該使用者輸入之該至少一部分而產生,且該一或多個候選者包含該回應。
- 如請求項9之電腦實施方法,其中該基於web之服務包含一映射服務、一搜尋服務及一轉譯服務中之至少一者。
- 如請求項1之電腦實施方法,其進一步包含:產生包含一第一候選者集合之一第一候選者清單;產生包含一第二候選者集合之一第二候選者清單,該 第二候選者集合包含使用該指令碼引擎所產生之該一或多個候選者;組合該第一候選者集合之至少一部分與該第二候選者集合之至少一部分以提供一第三候選者清單;及在使用者器件上顯示該第三候選者清單。
- 如請求項1之電腦實施方法,其中該IME引擎處理該一或多個候選者以用於顯示於該使用者介面上。
- 如請求項1之電腦實施方法,其進一步包含:接收指示該一或多個候選者中之一候選者之一選取的第二使用者輸入;及將該一或多個候選者中之該候選者輸入至在一使用者器件上執行之一應用程式。
- 如請求項13之電腦實施方法,其中該應用程式包括以下各者中之一者:一文書處理應用程式、一文字編輯應用程式、一試算表應用程式、一電子郵件應用程式、一簡報應用程式,及一web瀏覽程式。
- 如請求項1之電腦實施方法,其中以電子方式儲存於該指令碼存放庫中之每一指令碼包含選自複數個已核准常式之一或多個常式。
- 如請求項1之電腦實施方法,其進一步包含識別該指令碼之一指令碼語言,其中該指令碼引擎執行個體化對應於該指令碼語言之一執行階段以用於經由該指令碼處理該使用者輸入。
- 如請求項1之電腦實施方法,其中以一第一語言提供該 使用者輸入。
- 如請求項17之電腦實施方法,其中以該第一語言提供該一或多個候選者。
- 如請求項17之電腦實施方法,其中以一第二語言提供該一或多個候選者。
- 如請求項17之電腦實施方法,其中以該第一語言與一第二語言之一組合提供該一或多個候選者。
- 如請求項17之電腦實施方法,其中該一或多個候選者包括一或多個符號。
- 如請求項1之電腦實施方法,其進一步包含:接收輸入;回應於該輸入而產生以電子方式儲存於一中央登錄檔中之一可用指令碼清單,該可用指令碼清單包括該指令碼;接收指示該指令碼之一選取的一第二輸入;回應於該第二輸入而自該中央登錄檔擷取該指令碼;及將該指令碼儲存於該指令碼存放庫中。
- 一種電腦實施方法,其包含:接收輸入至一輸入方法編輯器(IME)之一使用者介面中的一使用者輸入;將該使用者輸入提供至一指令碼引擎;自以電子方式儲存於一指令碼存放庫中之複數個指令碼中選取一指令碼;基於提供於該指令碼中之指令而建立與一基於web之 服務的一網路連接;將該使用者輸入之至少一部分提供至該基於web之服務;自該基於web之服務接收一回應;及將該回應提供至一IME引擎以將該回應顯示給一使用者。
- 如請求項23之電腦實施方法,其中該基於web之服務包含一映射服務、一搜尋服務及一轉譯服務中之至少一者。
- 如請求項24之電腦實施方法,其中將該使用者輸入之該至少一部分提供至該映射服務,且藉由該映射服務產生該回應,且該回應包括一使用者可選取超連結。
- 如請求項24之電腦實施方法,其中將該使用者輸入之該至少一部分作為一搜尋字詞而提供至該搜尋服務,且藉由該搜尋服務產生該回應,且該回應包括藉由該搜尋服務基於該搜尋字詞產生之一或多個搜尋結果。
- 如請求項24之電腦實施方法,其中將該使用者輸入之該至少一部分提供至該轉譯服務且以一第一語言提供該使用者輸入之該至少一部分,且藉由該轉譯服務產生該回應且以一第二語言提供該回應。
- 一種電腦實施方法,其包含:接收一指令碼檔案,該指令碼檔案可藉由一輸入方法編輯器(IME)系統執行以基於輸入至該IME系統之一使用者輸入而產生一或多個候選者; 將該指令碼檔案以電子方式儲存於一中央登錄檔中,該中央登錄檔包含複數個指令碼;及發佈該複數個指令碼以用於下載至一使用者器件且安裝於該使用者器件上,該使用者器件包含該IME系統。
- 如請求項28之電腦實施方法,其中該複數個指令碼中之每一指令碼包含選自複數個已核准常式之一或多個常式。
- 如請求項28或29之電腦實施方法,其中以JavaScript、Lua及VBScript中之一者撰寫該複數個指令碼中之該等指令碼。
- 如請求項28之電腦實施方法,其中該複數個指令碼中之至少一指令碼包括關聯中繼資料,該關聯中繼資料提供用於顯示該一或多個候選者之指令。
- 如請求項31之電腦實施方法,其中該等指令包括提供用於顯示一候選者清單中之該一或多個候選者的一數字序列。
- 如請求項31之電腦實施方法,其中該等指令包括提供用於顯示一候選者清單中之該一或多個候選者的一字母序列。
- 一種系統,其包含:一顯示器;一電腦可讀儲存媒體,該電腦可讀儲存媒體包含用於以電子方式儲存一或多個指令碼之一指令碼存放庫;及一或多個處理器,該一或多個處理器執行一輸入方法 編輯器(IME)、接收輸入至該IME之一使用者輸入、將該使用者輸入提供至一指令碼引擎、自該指令碼存放庫中選取該指令碼、使用該指令碼引擎經由該指令碼處理該使用者輸入以產生一或多個候選者,且提供該一或多個候選者以顯示於該顯示器上。
- 如請求項34之系統,其中該一或多個處理器執行個體化一沙箱處理程序,該指令碼引擎係在該沙箱處理程序內執行。
- 如請求項34或35之系統,其中一IME引擎使用處理程序間通信而與該指令碼引擎通信。
- 如請求項36之系統,其中該一或多個處理器在該沙箱處理程序內執行一IPC伺服器,該IPC伺服器使能夠進行在該IME引擎與該指令碼引擎之間的通信。
- 如請求項35之系統,其中該沙箱處理程序限制該指令碼引擎之功能性。
- 如請求項34之系統,其中該使用者輸入包含識別該指令碼之一輸入序列及待藉由該指令碼處理之一輸入。
- 如請求項34之系統,其中該一或多個處理器比較該使用者輸入與一或多個觸發程式字串、判定該使用者輸入匹配於該一或多個觸發程式字串中之一觸發程式字串,且基於該一或多個觸發程式字串中之該觸發程式字串而選取該指令碼。
- 如請求項34之系統,其中該一或多個處理器接收指示在一延伸模式中該IME之操作的一輸入、回應於接收到該 輸入而在該延伸模式中操作該IME,且在該延伸模式中操作時將全部使用者輸入提供至該指令碼引擎。
- 如請求項34之系統,其中該一或多個處理器藉由以下各者經由該指令碼處理該使用者輸入:建立與一基於web之服務的一網路連接;將該使用者輸入之至少一部分提供至該基於web之服務;及自該基於web之服務接收一回應,該回應已基於該使用者輸入之該至少一部分而產生,且該一或多個候選者包含該回應。
- 如請求項42之系統,其中該基於web之服務包含一映射服務、一搜尋服務及一轉譯服務中之至少一者。
- 如請求項34之系統,其中該一或多個處理器:產生包含一第一候選者集合之一第一候選者清單;產生包含一第二候選者集合之一第二候選者清單,該第二候選者集合包含使用該指令碼引擎所產生之該一或多個候選者;組合該第一候選者集合之至少一部分與該第二候選者集合之至少一部分以提供一第三候選者清單;且在使用者器件上顯示該第三候選者清單。
- 如請求項34之系統,其中該IME引擎處理該一或多個候選者以用於顯示於該使用者介面上。
- 如請求項34之系統,其中該一或多個處理器接收指示該一或多個候選者中之一候選者之一選取的第二使用者輸入,且將該一或多個候選者中之該候選者輸入至在一使 用者器件上執行之一應用程式。
- 如請求項46之系統,其中該應用程式包括以下各者中之一者:一文書處理應用程式、一文字編輯應用程式、一試算表應用程式、一電子郵件應用程式、一簡報應用程式,及一web瀏覽程式。
- 如請求項34之系統,其中以電子方式儲存於該指令碼存放庫中之每一指令碼包含選自複數個已核准常式之一或多個常式。
- 如請求項34之系統,其中該一或多個處理器識別該指令碼之一指令碼語言,其中該指令碼引擎執行個體化對應於該指令碼語言之一執行階段以用於經由該指令碼處理該使用者輸入。
- 如請求項34之系統,其中該使用者輸入係以一第一語言提供。
- 如請求項50之系統,其中該一或多個候選者係以該第一語言提供。
- 如請求項50之系統,其中該一或多個候選者係以一第二語言提供。
- 如請求項50之系統,其中該一或多個候選者係以該第一語言與一第二語言之一組合提供。
- 如請求項50之系統,其中該一或多個候選者包括一或多個符號。
- 如請求項34之系統,其中該一或多個處理器:接收輸入;回應於該輸入而產生以電子方式儲存於一中央登錄 檔中之一可用指令碼清單,該可用指令碼清單包括該指令碼;接收指示該指令碼之一選取的一第二輸入;回應於該第二輸入而自該中央登錄檔擷取該指令碼;且將該指令碼儲存於該指令碼存放庫中。
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 |
---|---|
TW201205352A TW201205352A (en) | 2012-02-01 |
TWI526880B true TWI526880B (zh) | 2016-03-21 |
Family
ID=44798249
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW100112677A TWI526880B (zh) | 2010-04-12 | 2011-04-12 | 應用於輸入方法編輯器之延伸架構 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9086735B2 (zh) |
EP (1) | EP2558923A4 (zh) |
JP (1) | JP5921527B2 (zh) |
KR (1) | KR101681281B1 (zh) |
CN (1) | CN103080873B (zh) |
TW (1) | TWI526880B (zh) |
WO (1) | WO2011127640A1 (zh) |
Families Citing this family (178)
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 |
US10255566B2 (en) | 2011-06-03 | 2019-04-09 | Apple Inc. | Generating and processing task items that represent tasks to perform |
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 |
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 |
US9160785B2 (en) * | 2011-05-26 | 2015-10-13 | Candi Controls, Inc. | Discovering device drivers within a domain of a premises |
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 |
CN104428734A (zh) | 2012-06-25 | 2015-03-18 | 微软公司 | 输入法编辑器应用平台 |
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 |
JP6122499B2 (ja) | 2012-08-30 | 2017-04-26 | マイクロソフト テクノロジー ライセンシング,エルエルシー | 特徴に基づく候補選択 |
CN108052489A (zh) * | 2012-08-31 | 2018-05-18 | 微软技术许可有限责任公司 | 用于输入法编辑器的个人语言模型 |
US9547647B2 (en) | 2012-09-19 | 2017-01-17 | Apple Inc. | Voice-based media searching |
KR20230137475A (ko) | 2013-02-07 | 2023-10-04 | 애플 인크. | 디지털 어시스턴트를 위한 음성 트리거 |
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 |
US10176167B2 (en) | 2013-06-09 | 2019-01-08 | Apple Inc. | System and method for inferring user intent from speech inputs |
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 |
JP6398257B2 (ja) * | 2013-06-27 | 2018-10-03 | 株式会社リコー | 通信管理システム、通信端末、通信システム、およびプログラム |
WO2015020942A1 (en) | 2013-08-06 | 2015-02-12 | Apple Inc. | Auto-activating smart responses based on activities from remote devices |
WO2015018055A1 (en) | 2013-08-09 | 2015-02-12 | Microsoft Corporation | Input method editor providing language assistance |
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 |
US9715875B2 (en) | 2014-05-30 | 2017-07-25 | Apple Inc. | Reducing the need for manual start/end-pointing and trigger phrases |
US10170123B2 (en) | 2014-05-30 | 2019-01-01 | Apple Inc. | Intelligent assistant for home automation |
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 |
EP3149728B1 (en) * | 2014-05-30 | 2019-01-16 | Apple Inc. | Multi-command single utterance input method |
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 |
US9710316B1 (en) | 2014-12-18 | 2017-07-18 | Amazon Technologies, Inc. | Flexible scripting platform for troubleshooting |
US9785489B1 (en) * | 2014-12-18 | 2017-10-10 | Amazon Technologies, Inc. | Secure script execution using sandboxed environments |
US10152299B2 (en) | 2015-03-06 | 2018-12-11 | Apple Inc. | Reducing response latency of intelligent automated assistants |
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 |
US10567477B2 (en) | 2015-03-08 | 2020-02-18 | Apple Inc. | Virtual assistant continuity |
CN104820695A (zh) * | 2015-04-29 | 2015-08-05 | 百度在线网络技术(北京)有限公司 | 一种资源获取方法及装置 |
US10460227B2 (en) | 2015-05-15 | 2019-10-29 | Apple Inc. | Virtual assistant in a communication session |
US10083688B2 (en) | 2015-05-27 | 2018-09-25 | Apple Inc. | Device voice control for selecting a displayed affordance |
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 |
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 |
US10740384B2 (en) | 2015-09-08 | 2020-08-11 | Apple Inc. | Intelligent automated assistant for media search and playback |
US10331312B2 (en) | 2015-09-08 | 2019-06-25 | Apple Inc. | Intelligent automated assistant in a media environment |
US10671428B2 (en) | 2015-09-08 | 2020-06-02 | Apple Inc. | Distributed personal assistant |
US10747498B2 (en) | 2015-09-08 | 2020-08-18 | Apple Inc. | Zero latency digital assistant |
US10366158B2 (en) | 2015-09-29 | 2019-07-30 | Apple Inc. | Efficient word encoding for recurrent neural network language models |
US11010550B2 (en) | 2015-09-29 | 2021-05-18 | Apple Inc. | Unified language modeling framework for word prediction, auto-completion and auto-correction |
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 |
US11227589B2 (en) | 2016-06-06 | 2022-01-18 | Apple Inc. | Intelligent list reading |
US10249300B2 (en) | 2016-06-06 | 2019-04-02 | 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 |
US10586535B2 (en) | 2016-06-10 | 2020-03-10 | Apple Inc. | Intelligent digital assistant in a multi-tasking 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 |
US10509862B2 (en) | 2016-06-10 | 2019-12-17 | Apple Inc. | Dynamic phrase expansion of language input |
US10490187B2 (en) | 2016-06-10 | 2019-11-26 | Apple Inc. | Digital assistant providing automated status report |
DK179415B1 (en) | 2016-06-11 | 2018-06-14 | Apple Inc | Intelligent device arbitration and control |
DK179343B1 (en) | 2016-06-11 | 2018-05-14 | Apple Inc | Intelligent task discovery |
DK179049B1 (en) | 2016-06-11 | 2017-09-18 | Apple Inc | Data driven natural language event detection and classification |
DK201670540A1 (en) | 2016-06-11 | 2018-01-08 | Apple Inc | Application integration with a digital assistant |
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 |
US20200150780A1 (en) * | 2017-04-25 | 2020-05-14 | Microsoft Technology Licensing, Llc | Input method editor |
US10417266B2 (en) | 2017-05-09 | 2019-09-17 | Apple Inc. | Context-aware ranking of intelligent response suggestions |
DK201770383A1 (en) | 2017-05-09 | 2018-12-14 | Apple Inc. | USER INTERFACE FOR CORRECTING RECOGNITION ERRORS |
DK201770439A1 (en) | 2017-05-11 | 2018-12-13 | Apple Inc. | Offline personal assistant |
US10726832B2 (en) | 2017-05-11 | 2020-07-28 | Apple Inc. | Maintaining privacy of personal information |
US10395654B2 (en) | 2017-05-11 | 2019-08-27 | Apple Inc. | Text normalization based on a data-driven learning network |
DK180048B1 (en) | 2017-05-11 | 2020-02-04 | Apple Inc. | MAINTAINING THE DATA PROTECTION OF PERSONAL INFORMATION |
DK179496B1 (en) | 2017-05-12 | 2019-01-15 | Apple Inc. | USER-SPECIFIC Acoustic Models |
US11301477B2 (en) | 2017-05-12 | 2022-04-12 | Apple Inc. | Feedback analysis of a digital assistant |
DK201770427A1 (en) | 2017-05-12 | 2018-12-20 | Apple Inc. | LOW-LATENCY INTELLIGENT AUTOMATED ASSISTANT |
DK179745B1 (en) | 2017-05-12 | 2019-05-01 | Apple Inc. | SYNCHRONIZATION AND TASK DELEGATION OF A DIGITAL ASSISTANT |
DK201770432A1 (en) | 2017-05-15 | 2018-12-21 | Apple Inc. | Hierarchical belief states for digital assistants |
DK201770411A1 (en) | 2017-05-15 | 2018-12-20 | Apple Inc. | MULTI-MODAL INTERFACES |
DK201770431A1 (en) | 2017-05-15 | 2018-12-20 | Apple Inc. | Optimizing dialogue policy decisions for digital assistants using implicit feedback |
DK179560B1 (en) | 2017-05-16 | 2019-02-18 | Apple Inc. | FAR-FIELD EXTENSION FOR 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 |
US10303715B2 (en) | 2017-05-16 | 2019-05-28 | Apple Inc. | Intelligent automated assistant for media exploration |
US10403278B2 (en) | 2017-05-16 | 2019-09-03 | Apple Inc. | Methods and systems for phonetic matching in digital assistant services |
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 |
US11113411B2 (en) | 2017-10-20 | 2021-09-07 | Dropbox, Inc. | Authentication security model for a content management system |
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 |
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 |
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 |
DK179822B1 (da) | 2018-06-01 | 2019-07-12 | Apple Inc. | Voice interaction at a primary device to access call functionality of a companion device |
US11076039B2 (en) | 2018-06-03 | 2021-07-27 | 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 |
DK201970509A1 (en) | 2019-05-06 | 2021-01-15 | Apple Inc | Spoken notifications |
US11307752B2 (en) | 2019-05-06 | 2022-04-19 | Apple Inc. | User configurable task triggers |
US11475884B2 (en) | 2019-05-06 | 2022-10-18 | Apple Inc. | Reducing digital assistant latency when a language is incorrectly determined |
US11423908B2 (en) | 2019-05-06 | 2022-08-23 | Apple Inc. | Interpreting spoken requests |
US11140099B2 (en) | 2019-05-21 | 2021-10-05 | Apple Inc. | Providing message response suggestions |
US11289073B2 (en) | 2019-05-31 | 2022-03-29 | Apple Inc. | Device text to speech |
DK201970511A1 (en) | 2019-05-31 | 2021-02-15 | Apple Inc | Voice identification in digital assistant systems |
US11496600B2 (en) | 2019-05-31 | 2022-11-08 | Apple Inc. | Remote execution of machine-learned models |
DK180129B1 (en) | 2019-05-31 | 2020-06-02 | Apple Inc. | USER ACTIVITY SHORTCUT SUGGESTIONS |
US11360641B2 (en) | 2019-06-01 | 2022-06-14 | Apple Inc. | Increasing the relevance of new available information |
US11227599B2 (en) | 2019-06-01 | 2022-01-18 | 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请求处理方法和装置 |
US11043220B1 (en) | 2020-05-11 | 2021-06-22 | 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)
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 | 谷歌股份有限公司 | 输入法编辑器用户档案 |
CN101286093A (zh) * | 2007-04-09 | 2008-10-15 | 谷歌股份有限公司 | 客户端输入方法 |
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 | 西安双捷科技有限责任公司 | 用于网页的文字输入实现方法 |
KR101743122B1 (ko) * | 2009-11-27 | 2017-06-15 | 구글 인코포레이티드 | 클라이언트-서버 입력 방법 편집기 구조 |
-
2010
- 2010-04-12 EP EP10849650.6A patent/EP2558923A4/en not_active Withdrawn
- 2010-04-12 KR KR1020127029136A patent/KR101681281B1/ko active IP Right Grant
- 2010-04-12 US US13/142,746 patent/US9086735B2/en active Active
- 2010-04-12 JP JP2013504089A patent/JP5921527B2/ja active Active
- 2010-04-12 CN CN201080067382.XA patent/CN103080873B/zh active Active
- 2010-04-12 WO PCT/CN2010/071691 patent/WO2011127640A1/en active Application Filing
-
2011
- 2011-04-12 TW TW100112677A patent/TWI526880B/zh active
Also Published As
Publication number | Publication date |
---|---|
US20120041752A1 (en) | 2012-02-16 |
KR101681281B1 (ko) | 2016-12-12 |
TW201205352A (en) | 2012-02-01 |
CN103080873B (zh) | 2016-10-05 |
KR20130072209A (ko) | 2013-07-01 |
EP2558923A4 (en) | 2014-11-19 |
JP5921527B2 (ja) | 2016-05-24 |
WO2011127640A1 (en) | 2011-10-20 |
JP2013524372A (ja) | 2013-06-17 |
US9086735B2 (en) | 2015-07-21 |
EP2558923A1 (en) | 2013-02-20 |
CN103080873A (zh) | 2013-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI526880B (zh) | 應用於輸入方法編輯器之延伸架構 | |
TWI510965B (zh) | 輸入方法編輯器整合 | |
US9009030B2 (en) | Method and system for facilitating text input | |
JP5421239B2 (ja) | 複数モードの入力メソッドエディタ | |
US10936288B2 (en) | Voice-enabled user interface framework | |
US20150269140A1 (en) | Dynamic software localization | |
RU2395837C2 (ru) | Механизм для обеспечения расширенных функциональных возможностей для инструкций командной строки | |
US20130321267A1 (en) | Dynamically changing a character associated with a key of a keyboard | |
US11763078B2 (en) | Provisional selection drives edit suggestion generation | |
CN103959206A (zh) | 用于动态适应虚拟键盘的方法和装置 | |
US20140047359A1 (en) | Mechanism for adding new search modes to user agent | |
CN107092589B (zh) | Web服务器***、画面控件显示方法以及演示应用生成方法 | |
JP2015506146A (ja) | タッチコンピューティングデバイスを使用して、複数の文字で構成される複合子音または複合母音を入力して別の言語に翻字するための技法 | |
US9372675B1 (en) | Unified declarative model for user interfaces | |
US20090148073A1 (en) | Allowing users to automatically change typographical letter case using application independent functionality | |
CN113032273A (zh) | 一种应用程序的调试方法、装置、计算机设备和存储介质 | |
JP2007510203A (ja) | 部分的に未解決の入力を分析する機構 | |
EP3298761B1 (en) | Multi-switch option scanning | |
KR100907342B1 (ko) | 이미지 입력기를 사용하여 검색을 수행하기 위한 방법,장치 및 컴퓨터 판독 가능한 기록 매체 | |
KR102158544B1 (ko) | 모바일 기기의 입력 인터페이스 내에서 맞춤법 검사를 지원하는 방법 및 시스템 | |
Beelders et al. | Using vision and voice to create a multimodal interface for Microsoft Word 2007 | |
Rajput et al. | Mobile Apps Development: Towards Incorporating Regional and National languages in Flutter App | |
Kumar et al. | Panmozhi Vaayil-A Multilingual Indic Keyboard Interface for Business and Personal Use | |
JP2015232898A (ja) | 情報処理装置、方法及びコンピュータ・プログラム | |
Althaus et al. | Smart linkification of content within applications |