The present invention relates generally to computer-assisted data entry and more particularly to a method, system and media for entering data in a personal computing device.
The wide-spread adoption of miniaturized personal computing devices, such as hand-held devices and personal digital assistants (PDAs), has led to an increasing use of devices to send and receive text and data. One example of this trend is pen-based computing, wherein users enter text and commands into hand-held personal computers via a touch-sensitive screen. Examples of existing PDAs include the PalmPilot™ series, the Handspring™ series, Casio's Cassiopeia™, Compaq's iPAQ™ series of Pocket PCs, the Jornada™ from Hewlett Packard and Symbol Technology's SPT series of hand-held devices. While such pen-based computing is popular, especially with the increasing power of miniature computing devices, it does present challenges to a user entering data in an application running on the hand-held device. For instance, many hand-held computers and personal digital assistants require that the user enter data according to a predetermined scripting style, such as with the PalmPilot™ series. Other hand-held devices provide a handwriting recognition system which requires that the computer learn the user's handwriting style. While such data entry mechanisms are useful, they can be difficult to use on their own to enter text with quickly.
Many pen-based computing systems, both large and small, offer the user the option to enter text using an on-screen digital keyboard. On-screen digital keyboards are typically miniaturized replica of conventional full-sized physical keyboards, such as QWERTY keyboards. Many on-screen keyboards have shown themselves to be less than efficient for entering text. When using a pointing device such as a pen, a user is typically required to enter text one character at a time by tapping out individual character selections from the on-screen keyboard. This “hunt-and-peck” method of typing with a single pointing device is time-consuming, especially when a user is entering large amounts of data.
Another common challenge when entering data into a personal computing device with a single pointing device such as a pen or stylus, and in particular when entering text, is that each letter making up the word or phrase must be entered manually. The longer the word or phrase, the greater the amount of manual entry required.
Text completion systems have been developed in an effort to assist users with text entry. In general, these systems predict and suggest a complete word completion based on a partial text entry entered by a user. These systems allow a user to type in the partial text entry and then accept a predicted text completion for the partial text entry. This avoids the keystrokes that would otherwise be required to type the complete text desired by a user. While such text completion systems provide some basic assistance for users to more rapidly enter text than would be required if every character of the desired text had to be typed in independently, there remains a need in the art for a more flexible text completion system for use with a single pointing device.
The present invention provides an improved method, system and media for entering data in a personal computing device.
In accordance with one aspect of the present invention a user can rapidly enter and search for data, such as text, using a data entry system by entering one or more characters via a character entry system with a pointing device and by using a search list to dynamically obtain completion candidates.
Visual representations of the character entry system and the search list are displayed on a user interface. The data entry system enables the user to rapidly author data such as words, phrases, and other character sequences within documents or other computer files. As text (or more generally, data) is entered, it forms a partial text entry. In this specification “partial text entry” means a sequence of one or more characters making up a leading portion of a word or other character sequence.
When a character is entered using the character entry system, the entered character is added to the trailing end of the partial text entry. The partial text entry is used to search a dictionary of completion candidates for a set of completion candidates that begin with the partial text entry entered by the user. The data entry system retrieves completion candidates from the dictionary by determining which completion candidates in the dictionary are more likely to be the ones that the user is attempting to type. Completion candidates are retrieved from the dictionary on the basis of weight values (for example, preference values) stored in the dictionary for each completion candidate. Retrieved completion candidates are preferably displayed on the user interface in the search list.
In accordance with another aspect of the present invention, a rapid navigation system is provided for enhanced navigation and retrieval of completion candidates from the dictionary. The rapid navigation system enables a user to rapidly navigate through potential completion candidates within the dictionary that begin with a given partial text entry that the user has formed with the data entry system. Preferably, the rapid navigation system can be activated in a number of ways including, for instance, if the user enters a character using the character entry system and keeps the pointing device depressed for a predetermined period of time, or when a completion candidate is selected from the potential completion candidates displayed on the user interface.
In one aspect, the rapid navigation system contains a navigational object associated with the potential completion candidates displayed on the user interface. The navigational object serves as a visual guide identifying for the user which of the completion candidates displayed has been selected and whether or not a selected completion candidate, if any, is about to be used as the basis of a further search for a refined set (list) of potential completion candidates. Preferably, the navigational object contains a number of selection targets which are displayed on the user interface in an arc-like manner. Completion candidates are displayed in a search list also in an arc-like manner so as to notionally form a sloping line. The slope of the notional line formed from the display of completion candidates is configured so as to make it easy for the user to select completion candidates from the provided search list by gesturing up or down along a line similar to the arc of the search list.
Each completion candidate displayed in the search list has an associated selection target in the navigational object. Selection targets preferably include at least two display zones, a first display zone for indicating when the pointing device is located over a portion of the user interface associated with a particular completion candidate and a second display zone for indicating when that associated completion candidate has been selected and is about to be used as the basis for a further search of the dictionary for completion candidates.
In order to select a completion candidate, the user can move the pointing device to the associated selection target for the desired completion candidate within the search list or move the pointing device over the desired completion candidate itself. When the user pauses the pointing device over a completion candidate or a selection target associated with the completion candidate, the associated selection target is visually displayed in a different manner (for example, it is changed from white to green after a predetermined period of time indicating the selection of the associated completion candidate). If the completion candidate remains selected for a further period of time, then the associated completion candidate is selected to serve as the basis for a further search and a more refined list of completion candidates is retrieved and displayed in the search list. Preferably, the navigational object includes a dead zone within which the user can pause near the list of completion candidates without selecting one of the completion candidates. In one configuration, the selection targets are arranged around the dead zone so that the dead zone is substantially centrally located within the navigational object.
In another aspect of the present invention, a mechanism is provided for predicting a set of possible characters that a user is likely to next select from in order to further build upon an existing partial text entry. As a partial text entry is formed, the data entry system uses a dictionary of completion candidates to predict the set of possible characters that a user is likely to next select from. Preferably, the set of possible characters comprises a set of unique characters that are most likely to follow those characters already entered as part of the partial text entry. The set of possible characters are displayed in a distinguishing manner on the user interface for user selection. A character from the predicted set of next possible characters displayed on the user interface can be selected to be added to the partial text entry, and can also be used to activate the rapid navigation system.
In accordance with another aspect of the invention, a dictionary of completion candidates is preferably used to provide thematic information about the predicted set of next possible characters. The thematic information is preferably used to further characterize the display of the predicted set of next possible characters. This adds to the information visually conveyed to the user when such character prediction is used. Thematic information can provide the user with one or more characteristics associated with the predicted set of next possible characters. For instance, in one embodiment, the thematic information for a particular character in the set of unique characters represents the total number of potential completion candidates that are immediately available for display in a search list if that particular character is added to the end of the current partial text entry. Other types of thematic information may be provided. For instance, the thematic information for a particular character in the set of unique characters can represent the total number of potential completion candidates available, whether or not immediately displayable in the search list, if that particular character is added to the end of the current partial text entry. In another variation, the thematic information may provide the depth of search results available if the particular character in the set of unique characters is added to the current partial text entry. This latter variation can be used to visually notify the user that certain characters in the set of unique characters have many levels of search results available, while other such characters may have only one level of search results left for display in the search list. A variety of visual queues may be used to inform the user of certain characteristics associated with the predicted set of next possible characters including highlighting, bold, italics, underline, shadowing and the like. For instance, a range of colors may be used to display the predicted set of next possible characters, with different colors being used to distinguish between characters having different characteristics based on the thematic information.
In yet another aspect of the present invention, the rapid navigation system is used for rapidly navigating amongst a plurality of candidates. Such candidates may be completion candidates or other types of candidates that are selectable by the user.
In another aspect of the invention, there is provided a computer-implemented method of entering data for display on a user interface. With this method, a character entry system is displayed on the user interface. When a set of one or more characters is received making up a partial text entry selected via the user interface with a pointing device, a set of possible characters is predicted that a user is likely to next select from based on the set of one or more characters making up the partial text entry. The set of possible characters are displayed, for user selection, in a distinctive manner in relation to the character entry system.
In another aspect of the invention, there is provided a computer-implemented method of rapidly navigating amongst a plurality of candidates for user selection. A navigational object is displayed comprising a plurality of selection targets arranged in an arc-like manner on a user interface, each selection target being associated with one of the plurality of candidates for user selection. If one of the candidates is selected and has other candidates associated with it, the navigational object is redisplayed with the other candidates for user selection once the selected one of the candidates is selected for a predetermined period of time.
In another aspect of the invention, there is provided a computer-implemented system for rapidly navigating amongst a plurality of candidates. The system comprises a display region for displaying candidates for user selection; and a navigational object for navigating amongst the plurality of candidates, the navigational object comprising a plurality of selection targets arranged in an arc-like manner on a user interface, each selection target being associated with one of the plurality of candidates.
In accordance with another aspect of the present invention, there is provided a computer-implemented system for data entry comprising means for character entry, means for obtaining a set of completion candidates from a dictionary based on user character selection, means for displaying the set of completion candidates on a user interface, and means for rapidly navigating amongst displayed completion candidates for user selection comprising means for selecting any of the displayed completion candidates for entry into an electronic document or for advancing through to a more refined set of completion candidates based on a particular completion candidate from the displayed completion candidates.
Other aspects and features of the present invention will become apparent to those ordinarily skilled in the art upon review of the following description of specific embodiments of the invention in conjunction with the accompanying drawings.
In the accompanying drawings which illustrate embodiments of the invention,
Reference will now be made in detail to implementations and embodiments of the invention, examples of which are illustrated in the accompanying drawings.
In one aspect of the present invention a user can rapidly enter and search for data, such as text, using a data entry system by entering one or more characters on a via a character entry system with a pointing device and by using a search list to dynamically obtain completion candidates. Visual representations of the character entry system and the search list are displayed on a user interface. The data entry system enables the user to rapidly author data such as words, phrases, and other character sequences within documents or other computer files. As data is entered, it forms a partial text entry. In this specification “partial text entry” means a sequence of one or more characters making up a leading portion of a word or other character sequence.
When a character is entered via the character entry system, the entered character is added to the trailing end of the partial text entry. The partial text entry is used to search a dictionary for a set of completion candidates that begin with the partial text entry entered by the user. Each completion candidate stored in the dictionary represents a word, a phrase, an abbreviation, a phone number, a formula, or a character sequence according to a particular language. Completion candidates are retrieved from the dictionary by determining which set of completion candidates in the dictionary are more likely to have the completion candidate that the user is attempting to type. Completion candidates are retrieved from the dictionary on the basis of weight values (for example, preference values) stored in the dictionary for each completion candidate. Retrieved completion candidates are preferably displayed on the user interface in the search list.
The character entry system can be one of several types of entry systems. In one embodiment, the character entry system provides a digital keyboard for character entry. In another embodiment, the character entry system is a hand-writing recognition system. In another embodiment, the character entry system is a script-based recognition system such as Jot™ or Palm's Graffiti™. Combining the script-based recognition system or the hand-writing recognition system with the capability of the data entry system to search for and retrieve potential completion candidates, the user can enter desired characters from the character entry system without having to potentially change keyboard displays in search of a desired character or symbol. When a digital keyboard is used, the user may need to change keyboard layouts or pull up a further keyboard display in search of a desired key due to a finite amount of display space. However, the digital keyboard allows the user to easily choose and enter desired characters without having to recall a predefined script or adhere to a hand-writing style. Thus, in general, novice users can more quickly learn to use the search list of completion candidates with the digital keyboard to rapidly generate words, phrases and other character sequences. On the other hand, users comfortable with using a predefined script such as Graffiti™ or a hand-writing recognition character entry system can take advantage of these forms of character entry in combination with using the search list of completion candidates to rapidly generate words, phrases and other character sequences.
From the search list, the user can select one of the completion candidates displayed and use the selected completion candidate to complete the partial text entry which the user is currently entering. Alternatively, the user can use one of the completion candidates in the search list to initiate a further automated search to obtain a more refined list of completion candidates from the dictionary. In this latter case, a completion candidate selected from the search list is used to obtain a list of completion candidates which is then displayed in an updated search list. Thus, the data entry system supports multi-level search lists which the user can use to navigate through completion candidates to a desired completion candidate. The user may also return to keyboard entry at any time.
In another aspect, a rapid navigation system is provided for enhanced navigation and retrieval of completion candidates from the dictionary. The rapid navigation system enables the user to rapidly navigate through one or more sets (lists) of completion candidates within the dictionary that begin with a given partial text entry which the user has formed with the data entry system. Preferably, the rapid navigation system can be activated in a number of ways including, for instance, if the user enters a character using the character entry system and keeps the pointing device depressed for a predetermined period of time, or when a completion candidate is selected from the potential completion candidates displayed on the user interface.
With the potential completion candidates displayed on the user interface in the search list, the user can use the rapid navigation system to select any of the potential completion candidates for entry into the text that is being authored. The user can also use the rapid navigation system to advance through to a more refined list of completion candidates based on a particular completion candidate from the displayed search list.
In another aspect, the rapid navigation system contains a navigational object associated with the potential completion candidates displayed on the user interface. The navigational object serves as a visual guide identifying for the user which of the completion candidates displayed in the search list has been selected and whether or not a selected completion candidate, if any, is about to be used as the basis of a further search for a refined set (list) of potential completion candidates. Preferably, the navigational object contains a number of selection targets which are displayed on the user interface in an arc-like manner. Completion candidates are preferably displayed in a search list also in an arc-like manner so as to notionally form a sloping line. The slope of the notional line formed from the display of completion candidates is configured so as to make it easy for the user to select completion candidates from the provided search list by gesturing up or down along a line similar to the arc of the search list.
Configuring the navigational object and the search list in an arc-like manner provides for more rapid navigation and selection of completion candidates. In addition, this configuration helps minimize the amount of screen space used by the rapid navigation system without requiring the user to move the pointing device horizontally from side to side on the user interface.
Each completion candidate displayed in the search list has an associated selection target in the navigational object. Selection targets preferably include at least two display zones, a first display zone for indicating when the pointing device is located over a portion of the user interface associated with a particular completion candidate and a second display zone for indicating when that associated completion candidate has been selected and is about to be used as the basis for a further search of the dictionary for completion candidates.
In order to select a completion candidate, the user can move the pointing device to the associated selection target for the desired completion candidate within the search list or move the pointing device over the desired completion candidate itself. When the user pauses the pointing device over a completion candidate or a selection target associated with the completion candidate, the associated selection target is visually displayed in a different manner (for example, it is changed from white to green after a predetermined period of time indicating the selection of the associated completion candidate). If the completion candidate remains selected for a further period of time, then the associated completion candidate is selected to serve as the basis for a further search and a more refined list of completion candidates is retrieved and displayed in the search list. Preferably, the navigational object includes a “dead zone” within which the user can pause near the list of completion candidates without selecting one of the completion candidates. In one configuration, the selection targets are arranged around the dead zone so that the dead zone is substantially centrally located within the navigational object.
In another aspect of the present invention, a mechanism is provided for predicting a set (or list) of possible characters that a user is likely to next select from in order to further build upon an existing partial text entry (also referred to herein as a “predicted set of next possible characters” and as a “predicted set of possible characters”). As a partial text entry is formed, the data entry system uses a dictionary of completion candidates (or multiple dictionaries) to predict the set of possible characters that a user is likely to next select from. Preferably, the set of possible characters contains a set of unique characters that are most likely to follow those characters already entered as part of the partial text entry. The set of possible characters are displayed in a distinguishing manner on the user interface for user selection. For example, in one embodiment the set of possible characters are displayed in a character list from which any of the displayed characters can be selected. In another embodiment, the set of possible characters are displayed in a distinguishing manner within a digital keyboard layout. The set of possible characters can also be hi-lighted or emphasized using another visual queuing scheme. A character from the predicted set of next possible characters can be selected to be added to the partial text entry, and can also be used to activate the rapid navigation system.
In accordance with another aspect of the invention, a dictionary of completion candidates is preferably used to provide thematic information about the predicted set of next possible characters. The thematic information is used to further characterize the display of the predicted set of next possible characters. This adds to the information visually conveyed to the user when such character prediction is used. Thematic information can provide the user with one or more characteristics associated with the predicted set of next possible characters. For instance, in one embodiment, the thematic information for a particular character in the set of unique characters represents the total number of potential completion candidates that are immediately available for display in a search list if that particular character is added to the end of the current partial text entry. Other types of thematic information may be provided. For instance, the thematic information for a particular character in the set of unique characters can represent the total number of potential completion candidates available, whether or not immediately displayable in the search list, if that particular character is added to the end of the current partial text entry. In another variation, the thematic information may provide the depth of search results available if the particular character in the set of unique characters is added to the current partial text entry. This latter variation can be used to visually notify the user that certain characters in the set of unique characters have many levels of search results available, while other such characters may have only one level of search results left for display in the search list. A variety of visual queues may be used to inform the user of certain characteristics associated with the predicted set of next possible characters including highlighting, bold, italics, underline, shadowing and the like. For instance, a range of colors may be used to display the predicted set of next possible characters, with different colors being used to distinguish between characters having different characteristics based on the thematic information.
The operating system can be any of several well-known operating systems depending on the personal computing device used. For example, for hand-held devices, the operating system can be PalmOS™, Windows CE™, EPOC™, or an equivalent operating system. For larger systems, such as with work stations or desktop computers, a more robust operating system may be used such as, for example, Windows 95™, Windows 98™, Windows NT™, Windows 2000™, MacOS™, UNIX, Linux or the like. For the purposes of the first embodiment, the operating system is Windows CE™.
In the first embodiment, the data entry system 26 contains software components that run on the processing unit 12 to support computer-assisted data generation and entry for the user. However, in other alternatives the data entry system 26 components can be implemented as computer-readable instructions in firmware or embedded in hardware components. In the first embodiment, electronic text and documents are generated and maintained by the application 27 and the user authors and edits the electronic text and documents with the data entry system 26 which communicates with the application 27 through an application programming interface (API). This allows the data entry system 26 to be portable so that it can be used by one or more applications to accept text and data entry from the user. In an alternative, the data entry system 26 may be integrated into part of an application.
The personal computing device 10 is powered by an internal battery power source 18, although an external power source may be used.
The personal computing device 10 includes a graphical display device 15 and a hardware input interface 17 receptive to user input from a pointing device. In this specification, the term “pointing device” means an input device that allows a user to select one choice amongst one or many choices (a user-based selection). Some pointing devices enable a user to make user-based selections by pointing to a desired choice and include, by way of example, a pen, stylus, or finger. More generally, pointing devices capable of supporting user-based selections include, by way of example, the pointing devices above capable of pointing, as well as other input devices such as a mouse, trackball or the like.
The graphical display device 15 is connected to and controlled by the processing unit 12 via a video display circuit 13. The graphical display device 15 may be a CRT, a liquid crystal display, or an equivalent computer display.
In the first embodiment, the personal computing device 10 is a personal digital assistant (by way of example, the iPAQ™ H36xx series) wherein the graphical display device 15 and the hardware input interface 17 are combined in the form of a touch-sensitive screen 14. Touch-sensitive screens are well known in the art. The touch-sensitive screen 14 serves as a graphical display and as an input interface receptive to generating co-ordinate position signals in response to contact from a pointing device such as a pen or stylus. It will be appreciated by those skilled in the art that the personal computing device 10 is represented in the following discussion as a personal digital assistant for illustration purposes. The present invention may be practised with other personal computing devices including other hand-held devices, personal computers and other microprocessor-based electronic devices, mobile telephones, Internet appliances, and embedded devices, having a suitable graphical display and an input interface receptive to user input via a pen, stylus, finger, mouse, or an equivalent pointing device that allows the user to select one choice from many. Other types of equivalent personal computing devices to which the features and aspects of the present invention are applicable include, by way of example, an Internet appliance controlled via a remote control (for instance, running an Internet service through a television via a set top box and a remote control). In alternative embodiments, the hardware input interface 17 may be a digitising tablet, a pressure-sensitive input surface or a proximity sensing input surface. It will also be appreciated from this specification that aspects of the present invention can be stored as computer-readable instructions on one or more types of computer-readable media including, but not limited to, flash memory, smart media, a floppy disk, CD-ROM, CD-R, CD-RW, DVD, an optical disk, a mini-disk, a hard disk drive, a network drive, a micro-drive, a Syquest™ disk, a ZIP™ disk or the like.
In the first embodiment, the user interfaces with the personal computing device 10 via the touch-sensitive screen 14 using a pen as a pointing device. However, it should be noted that in alternative embodiments, various other pointing devices can be used, such as a stylus, finger, track ball, or mouse. If a mouse or an equivalent pointing device is used in place of a pen, stylus, or finger, then for the first embodiment the act of depressing a mouse button should be considered equivalent to touching the touch-sensitive screen 14 or touch pad with a stylus, pen, or finger. Similarly, releasing a depressed mouse button should be considered equivalent to lifting the stylus, pen, finger or other pointing device from the touch-sensitive screen 14 (or a touch pad or pressure sensitive pad).
Referring to
An application manager 42 sends and receives data to and from a window (40, 41) within application 27. A plurality of windows are used to display the visual representations of the character entry system 28, the search list 30 and the text and data that a user is creating or manipulating. Windows and application managers are well known in the art. User input received via window 41 is relayed by the application manager 42 to a data entry manager 44 within the data entry system 26. The data entry manager 44 represents a component of the data entry system 26 that is programmed to manage the flow of information between the application manager 42 and the other components of the data entry system 26. The data entry manager 44 also serves as an interface for the flow of information between the character entry system 28, the search list 30 and the dictionary engine 22. It will be appreciated that other configurations for managing the operation of the character entry system 28, the search list 30 and the dictionary 20 and dictionary engine 22 may be used in place of the configuration shown in
Referring to
In the first embodiment, the character entry system 28 is a digital keyboard 28a containing a plurality of keys each of which is associated with at least one character from a set of characters. For example, when the English alphabet or a character set containing the English alphabet is used, each key on the digital keyboard 28a can contain one or more letters from the English alphabet. It should be noted that reference to the English alphabet is by way of example only, and that the digital keyboard 28a can be configured in the alternative to support any set of characters which the user may then select and use to enter text into the personal computing device 10. The terms “character set” and “set of characters” refer in this specification to a set containing a plurality of letters, numbers and/or other typographic symbols. Examples of character sets include, but are not limited to, one or more alphabets of a written language (for example, English, French, German, Spanish, Italian, Chinese, or Japanese), and binary-coded character sets such as ASCII (American Standard Code for Information Interchange), EBCDIC (Extended Binary Coded Decimal Interexchange Code), BCD (Binary Coded Decimal), and Unicode.
In the first embodiment, the digital keyboard 28a displays digital keys containing characters from the English alphabet along with special characters selected from the ASCII character set. Preferably. the digital keyboard 28a can also be used to display European symbols and numerical symbols. The digital keyboard 28a uses a rectangular design in the first embodiment, although other keyboard designs may be used including, for example, a circular design or an elliptical design.
Referring to
The dictionary engine 22 notifies the search list 30 of the retrieved completion candidates. The search list 30 takes the retrieved completion candidates and redraws itself with the retrieved completion candidates.
The dictionary 20 contains completion candidates with preference values (or weight or frequency values) for ranking completion candidates relative to each other. In the first embodiment, preference values are predetermined from analyzing a large corpus of text. However, preference values may be dynamically generated or modified on the basis of a specific user's usage of words, phrases, and/or character sequences through the data entry system 26.
Each completion candidate stored in the dictionary 20 represents a word, a phrase, an abbreviation, a phone number, a formula, or another character sequence. Character sequences can include, but are not limited to, “chunks” such as word chunks. A chunk represents a completion candidate that also serves as a beginning sequence of characters for one or more other completion candidates. Chunks provide a way of organizing the display and retrieval of completion candidates. A chunk can be a prefix or root to other completion candidates. For example, “every” is a word chunk for other completion candidates such as “everyday”, “everywhere”, and “everyone”. A chunk can also be a character sequence, other than a prefix or root, that forms the beginning character sequence for several completion candidates in a target language. For instance, the character sequence “investig” may be used as a chunk to form the beginning of several other completion candidates including “investigate”, “investigating”, “investigation”, “investigates”, “investigated” and “investigative”.
Chunks are shown in the search list 30 as completion candidates with a “ . . . ” following them, indicating that the dictionary 20 contains one or more further completion candidates that begin with the chunk. Other visual indicators, such as highlighting, colors, underlining, italics, icons or the like, may be used to identify completion candidates which are chunks and are considered equivalent. By visually identifying which completion candidates in the search list 30 serve as chunks to other completion candidates, the data entry system 26 provides the user with an indicator of when a completion candidate in the search list 30 can be used to retrieve further completion candidates. By selecting and pausing briefly on a chunk displayed in the search list 30, the user can quickly call up and choose from a refined list of completion candidates that begin with the selected chunk.
Referring to
Preferably, character sequences that form the beginning of multiple completion candidates share the same nodes in the candidate tree 21. A completion candidate which forms the beginning of another completion candidate is identified with an end-point indicator 25 (for example, an end-point flag). When a node is shared by many completion candidates, the node will contain the highest preference amongst the completion candidates that the node is shared by.
The tree structure in
Referring to
The information contained within the data structure 29 provides the basis for using the candidate tree 21 to rapidly predict potential completion candidates. The data structure 29 also provides a mechanism for supporting enhanced data entry techniques such as character prediction and the rapid navigation system 32 (
Additional information about a node can also be contained in the data structure 29. For instance, in the first embodiment a node also preferably contains an end-point preference field for indicating the preference of a completion candidate, formed down the candidate tree 21 to such a node, to end. In other words, the end-point preference field is used to store a preference value indicating the likelihood of the completion candidate, formed down the candidate tree 21 to the current node in the search path, to be selected by the user as a final completion candidate. With the end-point preference field the completion of words within the candidate tree 21 can be optimized when supporting the sharing of nodes representing a prefix to multiple completion candidates. Instead of creating separate nodes for multiple end-points to completion candidates that may arise along a particular path in the candidate tree 21, the preference value that each end-point would have had if it was stored as a separate node is stored in the end-point preference field of the current node. This technique saves on the extra nodes necessary to complete completion candidates without sacrificing the functionality of completing completion candidates with the correct preference value (or frequency value). An example of the use of the end-point preference field is if the completion candidate “any” has a higher preference than the completion candidate “anything”. As both “any” and “anything” have the same prefix, they are both defined along the same path of nodes within the candidate tree 21. Since, in this example, the completion candidate “any” has a higher preference than the completion candidate “anything”, the end-point preference field would be used to record the preference (or likelihood) of the completion candidate “any” to end (relative to other completion candidates in the dictionary).
Other information may also be stored in nodes within the candidate tree 21. For instance, a node can include a description field for storing descriptive text associated with a completion candidate. A node may also have a pointer (a siblings pointer) which points to nodes that are the siblings of the current node. In other words, the siblings pointer points to sibling nodes, rather than nodes which are children. The siblings pointer can be traversed to locate sibling nodes of a given node.
In the first embodiment, the data entry system 26 is programmed to handle searching one or more dictionaries. If multiple dictionaries are active, then each will have its own candidate tree (such as candidate tree 21) in which completion candidates are organized.
Referring to
As a partial text entry is formed, the predicted set of next possible characters are displayed in a distinguishing manner on the user interface 34 for the user to easily recognize and select from. This feature helps visually inform the user as to which characters are most likely to follow those characters already entered as part of the partial text entry. In the first embodiment, the predicted set of next possible characters are displayed in a distinguishing manner on the digital keyboard 28a. For illustration purposes, highlighting is used to distinguish characters on the digital keyboard 28a corresponding to the predicted set of next possible characters from other characters on the digital keyboard 28a. By distinguishing the predicted set of possible characters from other characters on the digital keyboard 28a, the size of the digital keyboard 28a in need of user attention is effectively reduced from its full size (28 keys in the first embodiment) to the small number of highlighted keys (no more than 5 keys in the first embodiment). Other display techniques can be used with the digital keyboard 28a or with other types of character entry systems. For instance, in an alternative configuration, the predicted set of next possible characters are displayed separately from the character entry system 28 on the user interface 34 in a quick list of selectable characters (see for example the predicted character list 28c in
With the first embodiment, a character from the predicted set of next possible characters can be selected to be added to the partial text entry, and can also be used to activate the rapid navigation system 32 which is described further on in this specification. Preferably, the predicted set of next possible characters is made up of a set of unique characters representing those characters that the dictionary engine 22 predicts to each have a high likelihood of being chosen next based on entered text and frequency values (preference values) for completion candidates within the dictionary 20. The entered text represents the current partial text entry that the user is constructing using the data entry system 26.
The determination as to which characters form the predicted set of next possible characters is based on a comparison of preference values along paths within the dictionary 20 that branch out from the path for the current partial text entry.
The dictionary 20 preferably also provides in the first embodiment thematic information about the predicted set of next possible characters. The thematic information provides characteristics associated with the predicted set of next possible characters. Preferably, the thematic information is used to further characterize the display of the predicted set of next possible characters on the user interface (in the first embodiment, on the digital keyboard 28a). This adds to the information visually conveyed to the user when character prediction is used. Thematic information can provide the user with one or more characteristics associated with the predicted set of next possible characters. In the first embodiment, for example, the thematic information for a particular character in the predicted set of next possible characters represents the total number of potential completion candidates that are immediately available for display in search list 30 if that particular character is added to the end of the current partial text entry. A range of colors may be used to display the predicted set of next possible characters, with different colors being used to distinguish between characters having different characteristics based on the thematic information.
While one mode of highlighting may be used, in the first embodiment at least two modes of highlighting are preferably used to provide the user with more meaningful information when character prediction is used. This is achieved with the thematic information provided by the dictionary 20 about each character in the set of unique characters. As indicated earlier, in the first embodiment, the thematic information for a particular character in the set of unique characters represents the total number of potential completion candidates that are immediately available for display in search list 30 if that particular character is added to the end of the current partial text entry. With such thematic information, at least two modes of highlighting can be provided with character prediction. In the first embodiment, highlighting is color-based, and the colors red and green are used to provide two modes of highlighting. A first mode of highlighting (the color red) is used to visually indicate that if a character displayed in this first mode of highlighting is next selected by the user, then the total number of potential completion candidates immediately available for display in the search list 30 that begin with the current partial text entry plus the character selected exceeds the display capacity of the search list 30. A second mode of highlighting (the color green) is used to visually indicate that if a character on the digital keyboard 28a displayed in this second mode of highlighting is next selected by the user, then the total number of potential completion candidates immediately available for display in the search list 30 that begin with the current partial text entry plus the character selected is less than or equal to the display capacity of the search list 30.
It should be noted that while highlighting is used in the first embodiment to display in a visually distinguishing manner the set of unique characters that are most likely to follow those characters already entered (i.e. the next most likely characters), other forms of visually distinguishing characters can be used and are considered equivalent. For instance, shading, italics, bold, or underline may be used, individually or in various combinations, to distinguish one set of characters from another set of characters.
As well, other types of thematic information may be provided by the dictionary 20. For instance, the thematic information for a particular character in the set of unique characters can represent the total number of potential completion candidates available, whether or not immediately displayable in the search list, if that particular character is added to the end of the current partial text entry. In another variation, the thematic information may provide the depth of the deepest branch in the candidate tree 21 if the particular character in the set of unique characters is added to the current partial text entry. This latter variation can be used to visually notify the user that certain characters in the set of unique characters have many levels of search results available, while other such characters may have only one level of search results left for display in the search list 30.
The search list 30 receives completion candidates retrieved from the dictionary 20 and presents the user with a list of these completion candidates. In the first embodiment, the search list 30 is preferably displayed on the touch-sensitive screen 14 as an arc-shaped list of completion candidates. With the arc-shaped display of the list of completion candidates, a user may also move between completion candidates in the arc-shaped list by gesturing along the arc of the arc-shaped list. The user can make a selection by moving the pointing device towards a candidate in the list with one's hand in a motion substantially radial to the arc-shaped list. The arc-shaped search list provides an easy motion for the hand to move the pointing device towards a completion candidate. With a digitally displayed computer entry system 28, the search list 30 is preferably near or next to the image of the character entry system 28 for easy viewing (for example, beside digital keyboard 28a). In alternative embodiments, the list of completion candidates may be displayed in other configurations, such as a vertical list, horizontal list or an X-shaped list.
The search list 30 is programmed to support multi-level searches so that the user can quickly use a selected completion candidate from one level of search results to drill deeper into the dictionary 20 for a set of completion candidates that each begin with the selected completion candidate.
In the first embodiment, the total number of completion candidates retrieved is limited by a predetermined maximum number of displayable completion candidates. In the case of the first embodiment, the maximum number of displayable completion candidates is set to five. The search list 30 can be configured, however, to present a greater or lesser number of completion candidates.
Referring to
The currentPath data structure is used to keep track of the actual search path formed within the dictionary 20 by the current partial text entry (i.e. the current text entered by the user).
The currentPath data structure contains a set of entries, with an entry for every node traversed in the candidate tree. Each entry in the currentPath data structure contains the following fields:
In the first embodiment, the search path structure also includes the following fields:
It will be appreciated that while case translation and punctuation can be of assistance, they need not be included in order to take advantage of either character prediction, the rapid navigation system, or the other aspects of the present invention.
In the first embodiment, two primary entry modes are available to the user: a character entry mode and a rapid search mode. In the character entry mode, the user can enter text a character (or keystroke) at a time by simply pointing and selecting on keys on the digital keyboard 28a with the pointing device. If the character entry system 28 is a script-based or hand-writing recognition system, then text can be entered using the script recognized by the character entry system 28 to enter characters. In the first embodiment, with each selection of a key on the digital keyboard 28a, the one or more characters that are associated with the selected key are sent to the application 27 for entry into text in, for example, a document or data entry field. As the user enters characters with the digital keyboard 28a, a partial text entry is formed. The partial text entry is used to retrieve a set of completion candidates which are displayed in the search list 30. As the user adds or deletes characters from the partial text entry using the digital keyboard 28a, an updated set of completion candidates is retrieved from the dictionary 20 and displayed in the search list 30.
In the rapid search mode, the character entry system 28 (digital keyboard 28a) is cleared from the display and replaced with a rapid navigation system 32 which is used in conjunction with the search list 30 to rapidly traverse and select from potential completion candidates within the dictionary 20.
The rapid navigation system 32 (also referred to as a rapid navigation tool) comprises a navigational object for navigating amongst sets (or lists) of completion candidates each beginning with the current partial text entry constructed using the digital keyboard 28a and the search list 30 (see, for instance, navigational object 50 in
Referring to
In the example shown in
Once the user selects a chunk from the search list 30 and pauses for a short time, the most common completion candidates that begin with the selected chunk are retrieved from the dictionary 20 and the rapid navigation system 32 is redisplayed with these latter completion candidates in the search list 30.
The back-up key 54 provides a mechanism for reverting to the previous list of completion candidates shown in the rapid navigation system 32 based on the sequence of characters that last served as the root for a search prior to the current root. For example, if, rather than selecting a completion candidate from the list in
A search for completion candidates based on a current partial text entry (i.e. a given character sequence entered using the data entry system 26) can be terminated in a variety of ways. A search is terminated when the user selects and accepts one of the completion candidates in the search list 30 as a completion to the current partial text entry. In the first embodiment, this is done by lifting the pointing device up before a predetermined amount of time while selecting a completion candidate in the search list 30, in which case the data entry system 26 is programmed to recognize that the user has completed the current partial text entry and automatically initializes so that the next character entered using the character entry system 28 (digital keyboard 28a) will be treated as a leading character for a new partial text entry. Alternatively, entry of a predetermined character using the character entry system 28 can terminate a search. For instance, when a user enters a space or period while constructing a partial text entry, the data entry system 26 is preferably programmed to terminate the search and to prepare for a new search of the dictionary 20 based on a new partial text entry. In this case, characters such as the space and the period (“.”) serve the dual role of characters that form part of text and as an implicit instruction to end a search. Other non-alphabetic characters may also be used to provide an implicit end-of-search instruction. As a variation, an express end-of-search button or key may be displayed with the character entry system 28 which does not serve the dual role of entering a character into a document. When the end-of-search button is selected by the user, the data entry system 26 is instructed to end the present search and prepare for a new search.
Referring to
The data entry system 26 is initialized at block 100 in
At block 102 an image (visual representation) of the character entry system 28, in this case the digital keyboard 28a, is displayed on the touch-sensitive screen 14. The data entry system 26 waits for user input from the pointing device at block 104. Once user input is received it is analyzed at block 105. If the received user input corresponds to the pointing device being pressed down on the user interface in association with the digital keyboard 28a or the search list 30, then processing proceeds to block 111. At block 111 the data entry system 26 determines if key on the digital keyboard 28a was pressed, and if the answer is “YES”, the data entry system 26 identifies the character associated with the pressed key. The identified character is written to the output window (i.e. output to the user interface) at block 113 and is used to delineate a search path within the dictionary 20. In the first embodiment, this is done at block 110 by advancing a node within the candidate tree 21 in search of potential completion candidates.
If the data entry system 26 determines at block 111 that a key was not pressed, then processing proceeds to block 115 to determine if a completion candidate in the search list 30 has been selected. If a completion candidate has been selected then it is written to the output window (i.e. the user's document) at block 117. At block 119, the dictionary engine 22 advances in the candidate tree 21 by the completion candidate selected (for example, by the word chunk selected). Tracking variables and flags within the search path structure (
Block 105 is used to also identify when a user has carried out another action, such as selecting a command, lifting the pointing device from the touch-sensitive screen 14 (i.e. “off tablet” or “pen up”) or selecting a chunk from the search list 30 when in character entry mode. These actions are discussed in further depth further on in this description. Examples of commands that may be selected include common word processing commands such as Enter, Backspace, Shift, CTRL (control key), and Delete, and other commands such as display an additional number or symbol keypad, and terminate data entry.
Block 110 is shown in further detail in
Referring to
In the first embodiment, when the user lifts the pointing device from the touch sensitive screen 14 after having selected a character from the digital keyboard 28a but before the mode timer expires, the data entry system 26 identifies and highlights a predicted set of next possible characters on the digital keyboard 28a and retrieves and displays in the search list 30 a set of possible completion candidates. When the pointing device is lifted up from a key on the digital keyboard 28a before the mode timer expires, processing proceeds to block 106 where the mode timer is terminated. The data entry system 26 then checks the data entry mode at block 124. In this particular example, the data entry mode is in character entry mode and the user has lifted up the pointing device to either continue adding to or modifying the current partial text entry. Therefore, processing will then proceed to block 127 via block 125. At block 127 the data entry system 26 will evaluate whether a character has been selected from the digital keyboard 28a. In the above example, the answer is “YES” and processing will proceed to blocks 114, 116, 118 and 120 so as to highlight the predicated set of next possible characters on the digital keyboard 28a and to obtain and display a set of possible completion candidates in the search list 30. Processing will then return to block 104 where the data entry system 26 will wait for further user input.
The operation of blocks 114, 116, 118, and 120 in
Referring to
Block 114 is shown in further detail in
When upper case translation is active, then at block 226 the dictionary engine 22 preferably evaluates whether or not the characters in the character prediction list need to be converted to upper case. If the answer is YES, then each character in the character prediction list is translated to upper case at block 228.
Block 232 provides the data entry system 26 with the character prediction list and the thematic information retrieved at block 230 for each character in the character prediction list. Processing then proceeds to block 116 in
Referring to
At block 118 the data entry system 26 instructs the dictionary engine 22 to retrieve a set of completion candidates for display in the search list 30 based on the current partial text entry. In the first embodiment, the dictionary engine 22 retrieves at block 118 potential completion candidates which have the highest preference values in the dictionary 20, meaning that they are the most likely to be what the user is looking to choose from. The dictionary engine 22 retrieves the five completion candidates that begin with the current partial text entry and that have the highest preference values. If less than five such completion candidates are available, all completion candidates that begin with the current partial text entry are retrieved from the dictionary 20. It should be noted that in other embodiments the dictionary engine 22 may retrieve more than five completion candidates, or less, if desired. However, about five to about seven completion candidates (if available) is considered preferable so as to provide the user with a reasonable number of selections to choose from without reducing the ability of the user to quickly scan and select from candidates displayed in the search list 30.
Block 118 is shown in further detail in
At block 252 a set of potential completion candidates are retrieved for the search list 30. This is carried out by searching the dictionary 20 based on the given partial text entry which has been formed. Note that a “potential completion candidate” is a completion candidate that begins with the given partial text entry that is being used as the basis for the current search. In conducting such searching in the first embodiment, the data entry system 26 leverages the structure of the candidate tree 21 to retrieve a set of potential completion candidates for a given partial text entry. The candidate tree 21 is weighted in favor of nodes containing characters forming completion candidates with high preference values. This makes it convenient to find, for a given partial text entry, the completion candidate with high preference values.
In the first embodiment completion candidates are generally retrieved by traversing down branches in the candidate tree 21 from the current node in the search path. The currentPath data structure is used so that the data entry system 26 need only perform a search starting from the latest node added to the currentPath data structure. From the latest node, the dictionary engine 22 finds the child node with the highest preference value and descends down the candidate tree 21 along the path defined by this child node (an illustrative example of a path within candidate tree 21 being recorded with the currentPath data structure is shown in
The dictionary engine 22 then traverses back up the candidate tree 21 to the latest node in the currentPath from which the search began, depreciating or neutralizing the preference value of each node that it traverses on the way back up. On the traversal back up to the latest node in the candidate tree 21 from which block 252 was originally called, if there is only one descendant for a parent node, the preference value of the descendent is temporarily used to replace the preference value of the parent node. If, on the other hand, there is more than one child to a parent node, then the parent node's preference value is reduced to the preference value of its second strongest child node, provided that the drop in preference value is substantial enough.
With the influence of the retrieved completion candidate neutralized or reduced, a further search of the candidate tree 21 for a potential completion candidate will retrieve a potential completion candidate that generally has a preference value lower than the completion candidate already retrieved and stored in the search cache. Once a second completion candidate is retrieved, its influence on the weighting of the candidate tree 21 is also temporarily neutralized or reduced (depending upon whether the search is a wide search or deep search) so that a further potential completion candidate can be retrieved that is different from the previous ones retrieved, and so forth.
Repeating this neutralizing or depreciating process as each potential completion candidate is retrieved, allows the dictionary engine 22 to retrieve a set of potential completion candidates having generally the highest preference values for a search based on the given partial text entry. The proviso “generally” the highest preference values is used here because whether the search results have in fact the highest preference values possible for a given partial text entry depends upon whether a “wide” search or “deep” search was performed. If a deep search was performed, then the potential completion candidates making up the search results (also referred to herein as “deep search results”) will represent the highest preference values possible for a search based on the given partial text entry. If a wide search was performed, then the potential completion candidates making up the search results (also referred to herein as “wide search results”) may contain potential completion candidates which have high, but not necessarily the highest, preference values for the search of the dictionary based on the given partial text entry. The reason for this is that when a wide search is conducted on a dictionary (such as dictionary 20), then the dictionary engine 22 searches the dictionary 20 to retrieve completion candidates one completion candidates at a time. With each search of the dictionary 20 performed in a wide search, the dictionary engine 22 continues along a search path within the dictionary until it either finds a node below which it can find no other completion candidates which are potentially stronger than the completion candidate found or until it reaches a node which is configured to indicate that child nodes below it represent suffixes to the completion candidate formed up to that point in the dictionary 20. In this specification, “suffix” means a commonly occurring ending. Once a completion candidate is retrieved using the wide search technique, the retrieved completion candidate's influence on the weighting of the candidate tree 21 (and thus dictionary 20) is temporarily neutralized. As a result, further searching of the dictionary 20 for completion candidates during a wide search will not lead to that retrieved completion candidate or to longer completion candidates based on that retrieved completion candidate.
With a deep search, the dictionary engine 22 looks for the strongest path in the dictionary 20 below the latest node in the currentPath data structure in order to obtain a completion candidate. Once that path is found, the dictionary engine 22 temporarily reduces (weakens) the values within that path so that it is less likely to be traversed in further searches for completion candidates within a deep search. However, a weakened path may still be traversed within further searching conducted in a deep search, although this is less likely to occur due to the temporary weakening of preference values in that path. As well, when a deep search is performed on the dictionary 20, the dictionary engine 22 is not affected by suffix indicators.
Once the search (wide or deep) for potential completion candidates for a given partial text entry is finished, the original preference values stored in the memory mechanism are restored in the candidate tree 21.
Referring to
If the evaluation at block 402 is negative, then processing preferably proceeds to block 406 at which point the dictionary engine 22 checks to see whether the current search involves a search of the “name space”. The “name space” refers to a designated portion of the dictionary 20 which is used to store capitalized names of people, places, and things. If multiple dictionaries are active, then each dictionary may have its own name space. A user enters the name space portion(s) of the active dictionary (ies) by beginning an entry with a capitalized character. In general, when the name space has been entered, then in further searching for completion candidates the dictionary engine 22 will look to obtain completion candidates first from the name space portion(s) of the active dictionary(ies) and if a sufficient number of completion candidates are not available to fill the search list 30, then further searching of the remainder of the dictionary(ies) (such as dictionary 20) will be carried out in order to try to fill in empty slots in the search results for the dictionary (each active dictionary).
If the evaluation at block 406 finds that the name space has been entered, then processing proceeds to block 408 before proceeding to block 410. At block 408, searching of the name space portion(s) of the active dictionary(ies) is performed. A “wide” search is performed at block 408 on names within the name space(s) of the active dictionary(ies). With a wide search, the dictionary engine 22 retrieves completion candidates from each dictionary based on the relative strength of potential paths within each dictionary. The wide search at block 408 is described in further detail below with reference to
At block 410, the dictionary engine 22 checks to see if enough name results were obtained from the wide search performed at block 408 (if such a search was conducted). For instance, if the search list 30 is to display up to five completion candidates, then block 410 evaluates whether or not the results obtained from the wide search at block 408 have resulted in five completion candidates being obtained. This evaluation is done on each results set if multiple dictionaries are active. If the answer at block 410 is “NO”, then processing proceeds to blocks 412, 414, 416, and 418. At block 412, the dictionary engine 22 switches to the word space within each of the active dictionaries. At block 414 a wide search is performed by the dictionary engine 22 for each of the active dictionaries. A deep search is then performed by the dictionary engine 22 at block 416 on each of the active dictionaries. The results of these wide searches and deep searches for each of the active dictionaries are then temporarily stored and the dictionary engine 22 switches back to the name space within each of the active dictionaries at block 418. From the searching performed at blocks 414 and 416 above, up to N wide search results and M deep search results may be obtained for each active dictionary. Thus, for example, if N and M each equal five, and two dictionaries are active, the search results obtained at blocks 414 and 416 can include five results from the wide search performed on the first dictionary, five results from the wide search performed on the second dictionary, five results from the deep search performed on the first dictionary, and five results from the deep search performed on the second dictionary.
At block 420, the dictionary engine 22 looks to see whether or not the name space was active and if so, whether or not enough results were obtained from the deep searches performed at block 416. Not enough results from deep searching a block 416 will have been considered to have been obtained if any of the deep search results for any of the dictionaries searched contain fewer than the maximum number of completion candidates that they can contain (i.e. M results). If the dictionary engine determines at block 420 that the name space was active and not enough deep search results were obtained at block 416, then processing proceeds to block 422 where deep searches are performed on the name space portions of the dictionaries in an effort to obtain additional completion candidates to fill in available space within the deep search results obtained at block 416.
Referring to
If the evaluations at either block 474 or block 476 lead to block 490, then the character associated with the current node is added to the search result. At this point, the search result is part of a potential completion candidate which is eventually to serve as a candidate within the search cache. At block 492 a recursive call is then made to algorithm 471. With the recursive call at block 492 the dictionary engine 22 traverses down the branches for the strongest follower node in search of the most preferred completion candidate from the strongest follower node. Such recursive calls are made until processing within an invoked instance of algorithm 471 finds a node which serves as either a leaf or a chunk which has a preference value which is stronger than its two strongest follower nodes or which is a suffix as determined at blocks 474 and 476. When this happens, processing proceeds to block 478 and eventually to block 506, and the instance of algorithm 471 that has been invoked returns at 506 to its earlier instance and the recursive search through the branches unravels until another point in the candidate tree 21 is encountered which brings processing to block 492 in which case the dictionary engine 22 drills deeper into the candidate tree once again. Eventually, all of the recursive calls unravel and processing returns to the calling operation for the first instance of algorithm 471.
Once a recursive call at block 492 is completed and unravels, processing proceeds to block 494. At block 494 the dictionary engine 22 checks to see whether or not there is a second strongest node available for the current node. If the answer is “NO” then at block 496 the preference value of the current node is temporarily changed to the preference value of the one child node available. If the answer is “YES” then the dictionary engine 22 checks at block 498 to see whether or not the second strongest child node has become the strongest child node. If the answer is “YES” then the dictionary engine checks at block 500 to see whether or not there has been a sufficiently substantial drop in the preference value of the previously strongest child node to merit reducing the preference value of the current node. If the answer is “YES” then the preference value for the current node is temporarily reduced to the preference value of the second strongest child node at block 502. If the answer to any of blocks 494, 498, or 500 is “NO”, then the character added at block 490 is removed from the search result at block 326. Processing then proceeds to block 506 for the current instance of algorithm 471 and returns to its calling operation.
Referring to
The operation of block 424 is illustrated further in
If, at block 516, an eligible lowest wide result is not found, then at block 520 the dictionary engine 22 checks to see if there are enough wide results in the wide results set (i.e. if the wide results set if full). If there are not enough wide results, then the current deep result is added to the wide result base (i.e. to the wide results set) before processing returns to block 510 to process the next available deep result from the deep results set.
Once the deep results from the deep results set for a dictionary are processed, processing returns to the calling operation. The algorithm in
Referring to
At block 428 the dictionary engine 22 preferably evaluates whether any of the results in the single results set provided from block 426 (or block 424 if only one dictionary is active) contains any completion candidates which have a predetermined root. If the answer is “YES”, processing proceeds to block 430. In the first embodiment, the predetermined root that is sought is a verb ending in “e” (i.e. an EVerb is possibly a root to at least one of the candidates in the results set), although in other cases other predetermined roots may be used. At block 430, a wide search is performed on active dictionaries to see if any completion candidates are found which both have the same root as one of the existing candidates in the single results set, and if so, whether any such completion candidates with the same root end, for instance, with “e”, “ed”, “es” or “edly”. If such completion candidates are found and empty slots are still available in the single results sets from block 426 (or block 424 if only one dictionary is active), then the empty slots are filled with such completion candidates by order of preference values at block 432 before processing proceeds to block 434.
At block 434 an “overshoot” algorithm is preferably applied to the final results formed from the previous processing. This is done to determine if there are shorter chunks to any of the completion candidates in the final results which, if strong enough, should replace the longer completion candidate in the final results. The overshoot algorithm is used to prevent cases where a parent completion candidate has been overshot in preference to one of its children. For instance, where “government” has been retrieved instead of “govern . . . ”.
Referring to
Referring to
In referring to
Referring to
In the first embodiment, once the user has pressed a desired key on the digital keyboard 28a resulting in certain keys on the digital keyboard 28a being highlighted and a set of completion candidates being displayed in the search list 30, the user can perform several actions including the following:
The action of releasing a pressed key to either continue adding to or modifying the current partial text entry is detected in the first embodiment when the pointing device is lifted up (the selected key is released) before the mode timer set at block 122 expires. When the pointing device is lifted up from a key on the digital keyboard 28a before this mode timer expires, processing proceeds to block 106 where the mode timer is terminated. The data entry system 26 then checks the data entry mode at block 124. In this particular example, the data entry mode is in character entry mode and the user has lifted up the pointing device to either continue adding to or modifying the current partial text entry. Therefore, processing will then proceed from block 124 to block 104 via blocks 125, 127, 114, 116, 118 and 120, as discussed earlier in this specification. The data entry system 26 will then wait for further user input.
From the user's perspective, the user has typed a key and then released the key before the expiry of a certain amount of time (measured by the mode timer). The user has thus added the selected character on the key that was pressed to the end of the current partial text entry (which may have been empty before this action). The user can now add to or delete from the current partial text entry, so as to initiate the automated prediction and retrieval of completion candidates that begin with the modified partial text entry. The user can also call up the rapid navigation system 32 at any time by selecting a completion candidate in the search list 30 or pressing a key for at least a predetermined amount of time (measured by the mode timer).
With the digital keyboard 28a displayed, the user can also issue a command to end a search for completion candidates based on a current partial text entry. This is done when a predefined key on the digital keyboard 28a is selected which is associated with an end-of-search command, in which case processing proceeds to block 107. For instance, as discussed earlier, when a user selects the space bar or period while constructing a partial text entry, the data entry system 26 is preferably programmed to terminate the search and to prepare for a new search of the dictionary 20 based on a new partial text entry. Other non-alphabetic characters may also be used to denote an implicit end-of-search instruction such as ending punctuation (a period, an exclamation mark, a question mark, etc). An express end-of-search button or key may also be displayed with the digital keyboard 28a which does not serve the dual role of entering a character into a document. When the end-of-search button is selected by the user, the data entry system 26 is instructed to end the present search and to prepare for a new search. Processing then returns to block 104.
Referring to
The action of selecting and accepting one of the completion candidates in the search list 30 as a completion to the current partial text entry, and beginning a new partial text entry, is detected when the pointing device is lifted up while a completion candidate is selected in the search list 30. In this event, the data entry system 26 is programmed to recognize that the user has completed the current partial text entry and automatically initializes so that the next character selected from the digital keyboard 28a will be treated as a leading character for a new partial text entry. In character entry mode, when a user selects a completion candidate from the search list 30 and lifts up before a chunk or mode timer expires, the selection and final acceptance of the completion candidate is processed through blocks 106, 124 and 125. At block 125 the data entry system 26 recognizes that the selected completion candidate is to complete the current partial text entry and that a new search based on a new partial text entry is to begin. In this case, a space is preferably added at block 119 to the end of the accepted completion candidate when it is used to complete a search based on the current partial text entry. The data entry system 26 then prepares at block 137 for a new search to begin based on a new partial text entry. Processing proceeds to block 104 where the data entry system 26 waits for further user input.
The action of pausing with the desired key pressed for a predetermined amount of time sufficient to switch to the rapid navigation system 32 is detected by the data entry system 26 if the mode timer (set at block 122) expires at block 134 while the desired key that the user has selected remains pressed. In this case, the mode timer is terminated at block 136, and the data entry system 26 switches from character entry mode to rapid search mode at block 138. Processing then proceeds to block 140 in
Referring to
The data entry system 26 then waits for user input at block 146. If the user input that is received at block 146 corresponds to a gesture with the pointing device, the data entry system 26 determines at block 148 whether the gesture is to a completion candidate in the search list 30 or the “back-up” key 54.
If the gesture is to the “back-up” key 54 then processing proceeds to block 150 where the data entry system 26 restores the previous search list results before processing returns to block 140 and 144 where the display of the rapid navigation system 32 is updated.
If the gesture detected at block 146 and block 148 is to a particular completion candidate in the search list 30, then the selection target corresponding with the particular completion candidate is highlighted at block 152. At block 154, a choice timer is set indicating that a completion candidate has been selected from the search list 30. Processing then returns to block 146.
Once the choice timer expires, as detected at block 154, a green outline is drawn at block 156 in the selection target corresponding to the particular completion candidate identified as being selected as discussed above. At block 158 the data entry system 26 evaluates whether or not the particular completion candidate concerned is a “chunk”. As will be recalled, chunks provide a way of organizing the display and retrieval of completion candidates. Chunks are shown in the search list 30 as completion candidates with a “ . . . ” following them (a chunk indication), indicating that the dictionary 20 contains one or more completion candidates that begin with the chunk (for example, see
At block 158, if the particular completion candidate gestured to is found to be a chunk, then a chunk timer is set at block 166 and the data entry system 26 waits for further user input at block 146. If a chunk displayed in the search list 30 remains selected until the chunk timer expires at block 168, the chunk is written to the output window (user's document) at block 170 and is used to retrieve at block 172 a revised list of completion candidates for the search list 30, each beginning with the chunk. Processing then returns to blocks 140 to 144 to redraw the search list 30, the navigational object 50 and the “back-up” key 54, and to wait for further user input at block 146.
If a chunk in the search list 30 is selected by the user in rapid search mode, and the pointing device is lifted up from the selection before the chunk timer expires, then the chunk will be added to the text in the output window. Thus, by gesturing to a chunk and lifting the pointing device before the chunk timer expires, the user will add the chunk to the text or document in the output window without automatically initiating the display of a revised list of completion candidates that begin with the chunk. If a user selects with the pointing device a completion candidate in the search list 30 that is not a chunk, the user can continue to keep the completion candidate selected for as long as desired without automatically triggering a further search. This is because, in the first embodiment, a completion candidate that is not a chunk has no further completion candidates below it in the dictionary 20 to choose from.
If the data entry system 26 detects at block 146 that the pointing device has been lifted from a region of either the search list 30 or the rapid navigation system 32, processing proceeds to block 106 (
The data entry system 26 may include a variety of features and aspects to further enhance functionality and flexibility of text entry for the user. Furthermore, each of the following features and aspects individually provides a beneficial enhancement and is an embodiment of the present invention. These additional features and aspects of the present invention will now be described below. Many of the features and aspects described below can also be applied in combination with various types of search lists containing completion candidates, including single and multi-level search lists.
As before, the following features and aspects can be applied to many types of personal computing devices and may be stored as computer-readable instructions in one or more types of computer-readable media.
Referring to
In another aspect, the rapid navigation system 32 is programmed to have a certain level of “stickiness”. In this variation, when the point device is lifted from the touch-sensitive screen, or an equivalent operation is carried out that results in the rapid navigation system 32 being deselected, a display timer is started and the visual components of the rapid navigation system 32 remain displayed until the display timer runs out. Once the display timer runs out, the rapid navigation system 32 is replaced with an image of the digital keyboard. On the other hand, if the pointing device comes into contact with the touch-sensitive screen (or reselects the rapid navigation system) before the display timer runs out, the rapid navigation system 32 continues to remain in operation and the display timer is terminated. This variation allows the user to activate the rapid navigation system 32 with the pointing device, and then release the pointing device from contact with the screen (or from an equivalent mode for selecting the rapid navigation system 32) without the rapid navigation system 32 immediately being replaced with the digital keyboard 28a. If the user wishes to call up the digital keyboard 28a display immediately, then the user can select a predetermined command on the user interface. With this variation the user has the option of lifting the pointing device while taking some time to decide whether or not to keep the rapid navigation system 32 active, while still having the option to quickly clear the visual components of the rapid navigation system 32 and switching to the digital keyboard 28a.
In the first embodiment, the rapid navigation system 32 provides a mechanism for rapidly navigating and selecting from completion candidates such as words, phrases, and character sequence for entry into a document. As a variation, this technique can be used to move rapidly through data of any type that can be ordered by importance or frequency including, for example, web-sites (links or URLs), databases, news sources, inventories, menus and the like.
In the first embodiment, a list of completion candidates is displayed alongside the digital keyboard 28a. In one variation, such lists may be displayed on either side of the digital keyboard 28a or, if desired, in other locations on the user interface such as above, below or overlapping the digital keyboard 28a. Displaying completion candidates to the left side of the digital keyboard 28a for right-handed users, or on the right side for left-handed users, places the completion candidates in a location which can be reached with an easy and natural motion with one's fingers, while minimizing the need to make awkward wrist motions or to relocate one's hand.
In another variation, the data entry system 26 tracks the last N character sequences entered (where N is an integer). Typically, this means that the last N words entered are tracked, although the data entry system 26 allows for other types of character sequences to be entered and tracked as well. Each time a search is terminated and a new search initiated, the last character sequence entered is recorded. With this information recorded, the data entry system 26 is able to use multiple character sequences (such as a phrase) to locate phrases, names, addresses and the like stored in the dictionary 20. In this variation, the current partial text entry (i.e. the current character sequence being entered) is used as the basis for searching for completion candidates in the dictionary 20, however the last N character sequences entered are taken into account as well.
In another variation, the data entry system 26 can retrieve additional potential completion candidates to fill in the search list 30 if the number of completion candidates retrieved is less than the display capacity for the search list 30.
Referring to
In one variation, the dictionary 20 is programmed to learn to adapt the rankings of completion candidates within the candidate tree 21 to the preferences of the user as the data entry system 26 is used over time. Dictionary 20 is also preferably programmed to learn new words and other character sequences entered by the user. As with the first embodiment, preference values are maintained on a character by character basis in each node of the candidate tree 21. Each time a character is typed or a chunk is selected by the user from the search list 30 and entered into the text of a document, the preference values of the nodes involved are incremented. In addition to the increase in the preference values of the nodes involved, the preference values of the lowest neighbour (i.e. sibling node) of the nodes involved are decremented. As well, the decrease in preference value of neighbouring nodes (sibling nodes) is only performed for a certain range of the increase in preference values. In this way, a high frequency completion candidate will not flatten out all the preference values of neighbouring completion candidates.
With this variation, new completion candidates can be added to the candidate tree 21 at any time. If the user approves the creation of a new completion candidate, the following will take place in the dictionary 20:
Examples of interfaces permitting a user to add or remove a completion candidate (such as a word) from the user's personal dictionary are illustrated in
An example of multiple dictionaries being activated is shown in
In another variation, the completion candidates stored in the dictionary 20 can be linked to descriptions which visually provide the user with descriptive information associated with a completion candidate. Descriptions can be used to make it easier to identify the completion candidate retrieved. This can be helpful when a completion candidate is in fact an abbreviation or acronym or a visually small item such as a period. A description can be linked to a completion candidate in many ways. For instance, a description may be linked to an end node of a completion candidate within a candidate tree. As another example, the completion candidate “btw” may have the description “by the way” associated with it in the dictionary.
In another alternative, nodes in the candidate tree 21 can include information about the types of completion candidates that they are associated with. For instance, a node in a set of nodes that make up the word “switch” may include information identifying the word switch as a noun and a verb.
In another aspect of the present invention, a compacted candidate tree may be used to reduce the memory requirements for the dictionary 20. This aspect can be desirable if available memory resources are limited or at a premium. With the compacted candidate tree, one can reduce the memory requirements for the majority of the nodes in the candidate tree 21 with the added benefit that updates or modifications to the dictionary 20 can be quickly synchronized between computing devices. The node structure for the compacted candidate tree is shown in
The “X” shown in the code and count part of the last two nodes in
The code part of the code and count field can be used to provide a variety of types of information. For instance, the code and count field can have the following values:
In another aspect of the present invention, the dictionary 20 may be split into two sides. One side (a completion candidate side) containing all the completion candidates and another side (an object side) containing objects.
An example of such an arrangement is shown in
In this variation, when a completion candidate or partial text entry is entered that is associated on the object-side of the dictionary 20 with object information, an object indicator is lit on the user interface indicating to the user than an object is known within the dictionary 20 under the current completion candidate or partial text entry entered. Activating an object indicator on the user interface will then instruct the data entry system 26 to retrieve and display associated object information from the object side of the dictionary 20.
Completion candidates and their descriptions can be organized into sub-lists. A sub-list is used to describe a common feature of the completion candidate in that sub-list. For instance, a phone list may be included in the dictionary. The completion candidates “903” and “911” and their descriptions “Bob” and “Bill” are stored in the dictionary. Note that the roles may be reversed with completion candidates meaning “Bob” and “Bill” and their descriptions being “903” and “911” respectively. When a completion candidate is part of a sub-list on the completion candidate-side of the dictionary (20), the completion candidate and its description are also stored in the object-side of the dictionary where the connection between the completion candidate and the description is realized as illustrated in
The completion candidate and its description on the completion candidate-side of the dictionary 20 points to the object-side of the dictionary 20. The completion candidate becomes part of the sub-list, in this case a phone list, and its description is available through that sub-list. For example, gesturing towards the completion candidate “903” will result in the data entry system 26 indicating that it is part of the phone list, while gesturing towards “Bob” will not indicate that it is part of the phone list. Instead, gesturing towards “Bob” will result in the data entry system 26 indicating that Bob is part of a name list.
A sub-list specification consists of a sub-list name and optionally its access sequence. The access sequence specifies how a particular list is to be accessed via the data entry system 26. If no access sequence is specified, the completion candidates and their descriptions that form part of the list become part of the completion candidate-side of the dictionary. Completion candidates out of such a sub-list are then suggested (predicted) by the data entry system (26) as the user makes use of the digital keyboard (28) and the rapid navigation system (32).
If an access sequence is specified for a particular sub-list, then the completion candidates and their descriptions that form part of the sub-list are accessed by the user entering or selecting the access sequence. After the access sequence is entered or selected, the name of the sub-list concerned will show up as one of the predictions in the search list (30). Gesturing to the name of the sub-list provides the user with access to its completion candidates. For instance, gesturing towards “phone list” in a search list 30 provides the user with access to phone numbers and names within the phone list. Phone lists, name lists, and the like form their own sub-trees within the dictionary 20. As a result, when such a sub-list, such as the phone list, is selected by the user, predictions are based on preference value or based on the contents of these sub-trees. Thus, when the phone sub-list is accessed, typing the letter “b” will result in the data entry system 26 making predictions from the sub-tree for the phone list.
With the completion candidate-side and the object-side of the dictionary 20, one can also construct tables which provide relationships between various sub-lists within the completion candidate-side of the dictionary 20 and objects on the object-side of the dictionary 20. With tables tabular input information can be processed when constructing the dictionary 20. If a table is to be processed as part of the completion candidate-side of the dictionary 20, the table contents are stored on the completion candidate-side of the dictionary 20 as well as on the object-side of the dictionary 20. If a table is to be processed as part of the object-side of the dictionary 20, then it is only stored on the object-side of the dictionary 20. An example of a table to be processed as part of the dictionary 20 is set out below.
As can be seen the table shown identifies sub-lists that are to be incorporated within the dictionary 20. In the examples shown, sub-lists are set out in columns with rows of the table containing particular members of the particular sub-list. As can be seen from
Referring to
This approach with buckets provides a mechanism for easily distinguishing between completion candidates having high preference values. Completion candidates with low preference values are grouped together tightly. This is considered acceptable since the completion candidates in the dictionary 20 are organised by preference values (i.e. frequency values relative to each other) and, as a result, the user will tend to more often look to select completion candidates having high preference values as opposed to completion candidates with low preference values (i.e. low frequencies). Since there are more buckets for completion candidates having high preference values, the user will tend to receive more accurate suggestions for completion candidates in the search list 30. When a user is looking for a more rare completion candidate (i.e. completion candidates with low preference values relative to other completion candidates in the dictionary 20) then the list of completion candidates suggested will not be as accurate, although the reduced accuracy of predictions in this case will not be as important since rare completion candidates, by their nature, are less likely to be sought by the user. As well, as more characters are added to the end of the partial text entry, the number of possible completion candidates associated with the partial text entry decreases rapidly, therefor the preference values become less important.
In the first embodiment, the data entry system 26 is application independent and communicates with applications via an API. In an alternative embodiment, the data entry system 26 may be embedded in an application.
It will be further appreciated that many of the aspects of the present invention may be applied to several types of soft or digital keyboards and keyboard layouts, including traditional keyboard layouts, and rectangular keyboard layouts. It will also be appreciated that the digital keyboard may contain other symbols that could encode a language.
Referring to
In the embodiment illustrated in
If the pointing device is pressed down in the writing area for the script-based recognition system 28b then processing will proceed from block 105 in
In the embodiment shown in
With the script-based recognition system 28b the user can enter characters in one of several ways. Initially, the user can enter characters using the scripting language recognized by the script-based recognition system 28b. Once a character has been entered with the scripting language, the data entry system 26 is programmed to obtain and display a set of potential completion candidates in search list 30. The data entry system 26 is also programmed to obtain and a predicted set of next possible characters in the predicted character list 28c. With the search list 30 and the predicted character list 28c displayed, the user can then continue to build the partial text entry using the scripting language recognized by the script-based recognition system 28b, selecting a completion candidate from the search list 30 or selecting a predicted character from the predicted character list 28c. As with the first embodiment first described above, the user can also activate the rapid navigation system 32 (see
In a further variation, the character entry system 28 is programmed to interchangeably provide the user with a digital keyboard (28a), a script-based recognition system (28b), or a hand-writing recognition system. In this variation, the user can switch between different character entry systems and use each of them in combination with the other features of the present invention such as the rapid navigation system (32) and the display of the predicted set of next possible characters. In this way, a multi-modal character entry system that cooperates with the predictive features of the data entry system 26 provides the user with greater flexibility when entering text with a personal computing device.
In another variation, the data entry system 26 (
As the user constructs a partial text entry using the digital keyboard, the voice recognition system or the digital keyboard and the voice recognition system in combination, the data entry system 26 obtains and displays potential completion candidates in a search list (30). The data entry system 26 also preferably obtains and displays a predicted set of next possible characters, as illustrated in the first embodiment above. The multi-modal character entry system can also be programmed to support data entry using a script-based recognition system or a hand-writing recognition system.
Although this invention has been described with reference to illustrative and preferred embodiments of carrying out the invention, this description is not to be construed in a limiting sense. Various modifications of form, arrangement of parts, steps, details and order of operations of the embodiments illustrated, as well as other embodiments of the invention, will be apparent to persons skilled in the art upon reference to this description. For example, in the first embodiment, the dictionary is structured as a B-tree. However, other types of structures may be used to implement the dictionary such as a graph structure, a graph tree, a link list, and sequential lists. It is therefore contemplated that the appended claims will cover such modifications and embodiments as fall within the true scope of the invention.
Number | Date | Country | Kind |
---|---|---|---|
2,323,856 | Oct 2000 | CA | national |
Number | Date | Country | |
---|---|---|---|
60292648 | May 2001 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 10399560 | Apr 2003 | US |
Child | 12749318 | US |