Input method editor integration

Methods, systems, and apparatus, including computer program products, in which an input method editor receives composition inputs in an input method editor environment, the composition inputs based on user inputs. Candidate selections are identified in the input method editor environment based on the composition inputs. Each candidate selection comprises one or more ideograms. The input method editor environment receives a search command based on a user input, and selects one of the candidate selections in response to the search command. The selected candidate selection and the search command are provided to a search engine interface external to the input method editor environment.

BACKGROUND

This disclosure relates to input methods.

Languages that use a logographic script in which one or two characters correspond roughly to one word or meaning have more characters than keys on a standard input device, such as a computer keyboard or a mobile device keypad. For example, the Chinese language contains tens of thousands of characters having pronunciations defined by base Pinyin elements and five tones. The mapping of these potentially many-to-one associations can be implemented by input methods that facilitate entry of characters and symbols not found on input devices. Accordingly, a Western style keyboard can be used to input Chinese characters. Likewise, input methods can be used for using a Western style keyboard or some other input device to input many other languages that include ideograms, such as the Japanese language, the Korean language, and other languages.

An input method editor user interface may be associated with an input method editor. Often a user may desire to utilize the input method editor to generate characters, e.g., Hanzi characters, and input the characters into another application, e.g., a search engine input field. For example, a user may open a browser and access a search engine interface, and then open an input method editor and enter a Chinese query in the input method editor environment, e.g., the input method editor user interface. The user may have to select a particular set of characters in the input method editor environment and then activate a search command in the search engine interface.

The repetition of the manual selections and/or switching operations can be detrimental to a user experience. Eliminating one or more of these manual selections and/or switching operations can thus improve the user experience.

SUMMARY

This specification describes technologies related to input method editors. In some implementations, an input method editor receives composition inputs in an input method editor environment. The composition inputs are based on user inputs. Candidate selections are identified in the input method editor environment based on the composition inputs. Each candidate selection comprises one or more ideograms. The input method editor environment receives a search command based on a user input, and selects one of the candidate selections in response to the search command. The selected candidate selection and the search command are provided to a search engine interface external to the input method editor environment.

In some implementations, an input method editor data store stores integration commands, each integration command identifying an integration of the input method editor with a corresponding application environment that is external to an input method editor user interface. Candidate selections based on one or more composition inputs can be identified in the input method editor user interface. The input method editor user interface receives an integration command based on a user input, and one of the candidate selections is selected in response to the integration command. The selected candidate selection is provided to the corresponding application environment external to the input method editor user interface.

In some implementations, a system includes a data store storing one or more input method editor data store integration commands. Each integration command identifies an integration of an input method editor with a corresponding application instance that is external to an input method editor user interface. The system also includes a plurality of application interfaces. Each application interface is associated with one of the corresponding application instances and configured to facilitate data communication from an input method editor to the application instance. The system also includes an input method editor configured to identify candidate selections based on one or more composition inputs and, in response to receiving an integration command associated with an application interface, access the application interface, select one of the candidate selections and provide the selected candidate selection to the corresponding application instance associated with the application interface.

DETAILED DESCRIPTION

FIG. 1is a block diagram of an example device100that can be utilized to implement the systems and methods described herein. The example device100can, for example, be a computer device, such as a personal computer device, or other electronic devices, such as a mobile phone, mobile communication device, personal digital assistant (PDA), and the like.

The example device100includes a processing device102, a first data store104, a second data store106, input devices108, output devices110, and a network interface112. A bus system114, including, for example, a data bus and a motherboard, can be used to establish and control data communication between the components102,104,106,108,110and112. Other system architectures can also be used.

The processing device102can, for example, include one or more microprocessors. The first data store104can, for example, include a random access memory storage device, such as a dynamic random access memory, or other types of computer-readable medium memory devices. The second data store106can, for example, include one or more hard drives, a flash memory, and/or a read only memory, or other types of computer-readable medium memory devices.

Example input devices108can include a keyboard, a mouse, a stylus, etc., and example output devices110can include a display device, an audio device, etc. The network interface112can, for example, include a wired or wireless network device operable to communicate data to and from a network116. The network116can include one or more local area networks (LANs) and/or a wide area network (WAN), such as the Internet.

In some implementations, the device100can include input method editor (IME) code101in a data store, such as the data store106. The input method editor code101can include instructions that upon execution cause the processing device102to carry out input method editing functions. The input method editor code101can, for example, comprise interpreted instructions, such as script instructions, e.g., JavaScript or ECMAScript instructions, that can be executed in a web browser environment. Other implementations can also be used, e.g., a stand-alone application, an applet, a plug-in module, etc.

Execution of the input method editor code101generates or launches an input method editor instance (IMEI)103. The input method editor instance103can define an input method editor environment, e.g., user interface, and can facilitate the processing of one or more input methods at the device100, during which time the device100can receive composition inputs for input characters, ideograms, or symbols, such as, for example, Hanzi characters. For example, the user can use one or more of the input devices108(e.g., a keyboard, such as a Western-style keyboard, a stylus used with a handwriting recognition engine, etc.) to input composition inputs for identification of Hanzi characters. In some examples, a Hanzi character can be composed of more than one composition input.

The first data store104and/or the second data store106can store an association of composition inputs and characters. Based on a user input, the input method editor instance103can use information in the data store104and/or the data store106to identify one or more candidate selections represented by the input. In some implementations, if more than one candidate selection is identified, the candidate selections are displayed on an output device110. Using the input device108, the user can select from the candidate selections a Hanzi character that the user desires to input.

In some implementations, the input method editor instance103on the device100can receive one or more Pinyin composition inputs and convert the composition inputs into Hanzi characters. The input method editor instance103can, for example, use compositions of Pinyin syllables or characters received from keystrokes to represent the Hanzi characters. Each Pinyin syllable can, for example, correspond to one or more keystrokes in the Western-style keyboard. Using a Pinyin input method editor, a user can input a Hanzi character by using composition inputs that includes one or more Pinyin syllables representing the sound of the Hanzi character. Input methods for other languages, however, can also be facilitated.

Other application software105can also be stored in data stores104and/or106, including web browsers, word processing programs, e-mail clients, etc. Each of these applications can generate a corresponding application instance (AI)107. Each application instance can define an environment that can facilitate a user experience by presenting data to the user and facilitating data input from the user. For example, web browser software can generate a search engine environment; e-mail software can generate an e-mail environment; a word processing program can generate an editor environment; etc.

In some implementations, a remote computing system118having access to the system100can also be used to edit a logographic script. For example, the system100may be a server that provides logographic script editing capability via the network116. In one example, a user can edit a logographic script stored in the data store104and/or the data store106using a remote computing system, e.g., a client computer. The system100can, for example, select a character and receive a composition input from a user over the network interface112. The processing device102can, for example, identify one or more characters adjacent to the selected character, and identify one or more candidate selections based on the received composition input and the adjacent characters. The system100can transmit a data communication that includes the candidate selections back to the remote computing system.

FIG. 2is a block diagram of an example input method editor system120. The input method editor system120can, for example, be implemented using the input method editor code101and associated data stores104and106. The input method editor system120includes an input method editor engine122, a character data store124, a composition input data store126, and an integration table128. Other storage architectures can also be used. The character data store124includes characters of a logographic script used in one or more language models, and characters and words in Roman-based or western-style alphabets, e.g., English, German, Spanish, etc. In some implementations, the character data store124also includes information about relationships between characters. For example, the character data store124can include scores or probability values assigned to a character depending on characters adjacent to the character. Other contextual relation data can also be used.

The composition input data store126includes an association of composition inputs and the characters stored in the character data store124. In some implementations, the composition input data store126can link each of the characters in the character data store124to a composition input used by the input method editor engine122. For example, the input method editor engine122can use the information in the character data store124and the composition input data store126to associate and/or identify one or more characters in the character data store124with one or more composition inputs in the composition input data store126.

The integration table data store128can store integration command data related to integration commands. Each integration command can, for example, identify an integration of the input method editor120with a corresponding application interface130. The application interface130can facilitate communication with a corresponding application or application environment that is external to the input method editor instance103environment.

In some implementations, an application interface130can include instructions, e.g., a script or compiled code, and can be invoked based on the integration command received. In some implementations, the application interfaces130can be stored in a data store associated with an application, and the integration table128can include data identifying and providing access to the corresponding application interface130. For example, a search engine interface130acan be a script stored in a browser cache; an e-mail interface130bcan be a script stored in an e-mail cache; and an editor interface130ccan be compiled code stored in an editor data store.

Other implementations can also be used. For example, the application interfaces130can be application program interfaces to corresponding applications, or can be an integration with an application user interface, for example.

The input method editor instance103can, for example, receive in the input method editor user interface an integration command. The integration command can be based on a user input and received from a user device108. In response to the integration command, one of the candidate selections can be selected and provided to an application interface130with the integration command. The application interface130can facilitate communication with an application or application environment that is external to the input method editor instance103environment.

For example, if the integration command is a search command, and the integration table128defines the search command to be associated with the search engine interface130a, then one of the candidate selections can be selected in response to the search command and provided with the search command to a search engine interface130a. The search engine interface130acan, for example, provide the candidate selection as input to a search engine and the search command can invoke a search function that utilizes the candidate selection as query data. In some implementations, the integration command is invoked in the input method editor interface, e.g., by a corresponding integration command activation element, e.g. a button, or key stroke.

In some implementations, the input method editor120, in response to the search command, can determine if a corresponding application interface130is active. For example, in response to a search command, input method editor120can determine if the search engine interface130a, e.g., a search engine environment, or a search engine program interface, is active. If the search engine interface130is determined to be active, the selected candidate selection can be provided to the search engine interface130aas a search input, and a search can be invoked through the search engine interface130athat causes a search engine to perform a search based on the selected candidate selection.

If the search engine interface130is determined to not be active, the input method editor120can, for example, instantiate the search engine interface to provide the selected candidate selection and search command.

In some implementations, the candidate selections in the input method editor120can be ranked and presented in the input method editor according to the rank. For example,FIG. 3shows an example input method editor environment300presenting five ranked candidate selections302. The candidate selections302are identified based on the Pinyin inputs304. An integration command button306, e.g., a search command button306, is also displayed in the input method editor environment. A selection indicator308surrounds the first candidate selection, i.e.,, indicating that the first candidate selection will be selected in response to an activation of the search command button306. In some implementations, first candidate selection can be selected by default upon activation of the search command button.

As shown inFIG. 4, the search command button306has been activated, and thus the first candidate selectionhas been provided to a search engine as an input query for a search function.

In some implementations, a user can manually select a candidate selection. For example, a user may desire to invoke a search on a query defined by the second candidate selection. As shown inFIG. 5, the user can, for example, utilize up and down arrow keys to move the selection indicator308to select the second candidate selection. Accordingly, activation of the search command button306will provide the second candidate selection and a search command to a search engine.

In some implementations, the integration command can be invoked by a keyboard input. For example, a Ctrl-G input can be used to input an integration command.

Although only one integration command button306is shown, additional integration command buttons can also be included in the input method environment, e.g., an integration command button for an e-mail program could also be included in the input method environment. Accordingly, multiple integration command buttons can be displayed at the same time to facilitate processing of different integration commands from a single environment.

In some implementations, one or more integration commands that are made available can be determined by an identified context during runtime, e.g., a set Chinese candidate selections during runtime may examined to determine which integration commands are instantiated. For example, if a user types an input for a city name, an integration command to obtain current weather data of the city may appear; if user types an input for a stock name, an integration command to obtain a stock quote for the stock name may appear, etc. Accordingly, a context defined by candidate selections can be identified, and integration commands related to the identified context can also be identified. The integration commands can thus be enabled based on the context during runtime.

While an example integration with a browser and search engine environment has been described, other integrations can also be realized. For example, any external application that can process an input method input or an ideogram input can be integrated with an input method editor, e.g., an e-mail application, a programming application, etc.

FIG. 6is a flow diagram of an example search integration process600. The process600can, for example, be implemented in the device100ofFIG. 1and/or in the input method editor system120ofFIG. 2.

The process600receives composition inputs in an input method editor environment (602). For example, the device100ofFIG. 1implementing an input method editor and/or the input method editor system120ofFIG. 2can receive composition inputs based on user inputs from a keyboard device.

The process600identifies candidate selections in the input method editor environment based on the composition inputs (604). For example, the device100ofFIG. 1implementing an input method editor and/or the input method editor system120ofFIG. 2can identify candidate selections, such as the candidate selections shown inFIGS. 3-5.

The process600receives in the input method editor environment a search command (606). For example, the device100ofFIG. 1implementing an input method editor and/or the input method editor system120ofFIG. 2can receive a search command. The search command can, for example, be generated by a command button in an input method editor environment, or can be generated by a keyboard input when the input method editor environment is active.

The process600selects one of the candidate selections in response to the search command (608). For example, the device100ofFIG. 1implementing an input method editor and/or the input method editor system120ofFIG. 2can perform a default selection of a first ranked candidate selection upon receiving a search command, or can select a user selected candidate selection upon receiving a search command.

The process600provides the selected candidate selection and the search command to a search engine interface (610). For example, the device100ofFIG. 1implementing an input method editor and/or the input method editor system120ofFIG. 2can provide the candidate selection and the search command to a search engine interface130a, e.g. a search engine application program interface, or a script that is executed and that launch a web browser resolved to a search engine interface page, etc. The search engine interface can facilitate communication with a corresponding search engine application or application environment that is external to the input method editor environment.

FIG. 7is a flow diagram of a process700for selecting a candidate selection. The process700can, for example, be implemented in the device100ofFIG. 1and/or in the input method editor system120ofFIG. 2.

The process700ranks the candidate selections (702). For example, the device100ofFIG. 1implementing an input method editor and/or the input method editor system120ofFIG. 2can rank the candidate selections in response to composition inputs. The ranking can, for example, be based on a likelihood that the candidate selections correspond to the composition inputs.

The process700presents the candidate selections in the input method editor environment according to the rank (704). For example, the device100ofFIG. 1implementing an input method editor and/or the input method editor system120ofFIG. 2can present the candidate selections in an input method editor environment as shown inFIGS. 3-5.

The process700automatically selects a first ranked candidate selection (706). For example, the device100ofFIG. 1implementing an input method editor and/or the input method editor system120ofFIG. 2can generate a default selection of the first ranked candidate selection, as shown inFIGS. 3 and 4. Upon receiving an integration command, the first candidate selection can be selected.

Although described in the context of particular language and input method examples, the systems and methods described herein can be used for any language that utilizes a logographic script. For example, the systems and methods described herein can be used for many other languages that include ideograms, such as the Japanese language, the Korean language, and other languages.