The present invention provides a system comprising a user interface configured to receive text input by a user, a text prediction engine comprising a plurality of language models and configured to receive the input text from the user interface and to generate concurrently text predictions using the plurality of language models, and wherein the text prediction engine is further configured to provide text predictions to the user interface for display and user selection. An analogous method and an interface for use with the system and method are also provided.
|
10. A non-transitory computer-readable medium containing program instructions for providing a user interface, wherein execution of the program instructions by one or more processors of a computer system causes the one or more processors to output for display:
a single or multi-character entry mechanism; and
a word prediction pane;
wherein the word prediction pane is configured to display only three keys for displaying selectable text, wherein each key displayed has a size and a location that are independent of a length of a selectable text prediction being displayed;
wherein the word prediction pane is configured to always display a most likely text prediction in a center key of the word prediction pane and keys on either side of the center key are configured to display currently entered user text input and a second most likely text prediction, wherein the most likely text prediction and the second most likely text prediction are a first most probable and a second most probable prediction of a set of overall most probable predictions respectively; and
wherein the word prediction pane is part of a touchscreen interface, the user interface being configured such that in response to receiving a touch selection of a key from among the three keys, the text associated with the selected key is selected and displayed in a typing pane of the touchscreen interface; and
wherein, in response to receiving an undo interaction on the touchscreen interface, the word prediction pane is configured to display a prediction comprising at least one of the most likely word prediction in the center key of the word prediction pane with the currently entered user text input and the second most likely word prediction displayed on the display areas on either side of the center.
16. A non-transitory computer-readable medium containing program instructions for providing a user interface, wherein execution of the program instructions by one or more processors of a computer system causes the one or more processors to output for display:
a single or multi-character entry mechanism; and
a word prediction pane;
wherein the word prediction pane is configured to concurrently display currently entered user text input and a plurality of selectable text predictions as the user text input is received by the entry mechanism;
wherein at least one of the plurality of selectable text predictions corresponds to a phrase prediction;
wherein the word prediction pane is configured to display the phrase prediction with parts of the phrase prediction being independently selectable, such that upon selection of an end word of the phrase, the user interface is configured to select for input the selected end word and any word or words of the phrase prediction preceding the selected end word;
wherein upon selection of a single word of the phrase prediction that is not the end word, the single word having one or more words of the phrase prediction preceding the single word and without selection of one or more words of the phrase prediction preceding the selected word, the user interface is configured to select for input the selected word and the one or more words of the phrase prediction preceding the selected word, excluding any word or words of the phrase coming after the selected word;
wherein the user interface is configured to display the selected word and the one or more words of the phrase prediction preceding the selected word; and
wherein, in response to receiving an undo interaction on the user interface, the word prediction pane is configured to display a prediction comprising at least one of the independently selectable parts of the phrase prediction.
1. A non-transitory computer-readable medium containing program instructions for providing a user interface, wherein execution of the program instructions by one or more processors of a computer system causes the one or more processors to output for display:
a single or multi-character entry mechanism; and
a word prediction pane;
wherein the word prediction pane is configured to concurrently display currently entered user text input and a plurality of selectable word predictions as the user text input is received by the entry mechanism;
wherein the word prediction pane is configured such that the most likely word prediction of the plurality of selectable word predictions is always displayed in a center of the word prediction pane and display areas on either side of the center are configured to display currently entered user text input and a second most likely word prediction, wherein the most likely word prediction and the second most likely word prediction are a first most probable and a second most probable prediction of a set of overall most probable predictions respectively;
wherein the word prediction pane is part of a touchscreen interface, the user interface being configured such that in response to receiving a touch selection of the currently entered user text input or one selectable word prediction among the plurality of selectable word predictions, the currently entered user text input or the one selectable word prediction is selected and displayed in a typing pane for displaying the user text input; and
wherein, in response to receiving an undo interaction on the touchscreen interface, the word prediction pane is configured to display a prediction comprising at least one of the most likely word prediction in the center of the word prediction pane with the currently entered user text input and the second most likely word prediction displayed on the display areas on either side of the center.
2. The non-transitory computer-readable medium of
3. The non-transitory computer-readable medium of
4. The non-transitory computer-readable medium of
5. The non-transitory computer-readable medium of
6. The non-transitory computer-readable medium of
7. The non-transitory computer-readable medium of
8. The non-transitory computer-readable medium of
9. The non-transitory computer-readable medium of
11. The non-transitory computer-readable medium of
12. The non-transitory computer-readable medium of
13. The non-transitory computer-readable medium of
14. The non-transitory computer-readable medium of
15. The non-transitory computer-readable medium of
17. The non-transitory computer-readable medium of
18. The non-transitory computer-readable medium of
19. The non-transitory computer-readable medium of
20. The non-transitory computer-readable medium of
21. The non-transitory computer-readable medium of
22. The non-transitory computer-readable medium of
23. The non-transitory computer-readable medium of
24. The non-transitory computer-readable medium of
in response to receiving a touch selection of one selectable text prediction from among the plurality of selectable text predictions, the selectable text prediction is displayed in the typing pane.
25. The non-transitory computer-readable medium of
|
This application is a continuation of U.S. patent application Ser. No. 13/262,190, filed Sep. 29, 2011, which is a National Stage of International Application No. PCT/GB2010/000622, filed Mar. 30, 2010, which claims priority to GB Patent Application No. 0905457.8, filed Mar. 30, 2009, the disclosures of which are incorporated herein by reference in their entirety.
The present invention relates generally to a system and method for inputting text into electronic devices. In particular the invention relates to a system for generating text predictions for display and user selection and a method for doing so.
There currently exists a wide range of text input techniques for use with electronic devices. QWERTY-style keyboards are the de facto standard for text input on desktop and laptop computers. The QWERTY layout was designed for two-handed, multi-digit typing on typewriters in 1878 and has been in wide use ever since. It has proven highly effective given a measure of training and/or experience. Reduced-size QWERTY-style keyboards are also used for text entry on mobile devices, such as PDAs and some mobile phones. These keyboards are generally operated using both thumbs, and their advantage lies in the fact that users are almost always familiar with the QWERTY layout. Devices such as the Blackberry Bold and the Nokia N810 utilise this model.
Text input for mobile phones, however, has focused primarily on methods of entering alphabetic characters using a 9-digit keypad, where each key usually represents either three or four characters. There are various techniques employed to reduce the number of keystrokes required.
Handwriting recognition has been widely used in the PDA market where input is mostly stylus-based. While it has some advantages for users raised on paper-based handwriting, the use of this technology has declined in recent years because it is relatively slow in comparison with most keyboard-based methods. Speech recognition text input systems also exist for both standard and mobile computational devices. These have not been widely adopted due to limitations in accuracy and the adverse effects of noisy environments.
Touch-screen devices offer a highly flexible platform for different styles of text input, and there are many different models currently available. Traditional QWERTY-style ‘soft’ keyboards are implemented on devices such as the Apple iPhone and many touch-screen PDAs running Windows Mobile. Other devices such as the Blackberry Storm use multi-character soft keyboards with various methods of disambiguation and completion. There are also many third-party systems that offer alternative methods of text entry for touch-screen devices. Examples include ShapeWriter (ShapeWriter Inc.) which is based on recognition of the shapes created by sliding between letters on a QWERTY-style background, and ExIdeas' MessageEase which utilises an optimised keyboard layout for stylus and finger-based entry.
A somewhat different model of text entry is offered by the University of Cambridge's ‘Dasher’ system, in which text input is driven by natural, continuous pointing gestures rather than keystrokes. It relies heavily on advanced language model-based character prediction, and is aimed primarily at improving accessibility for handicapped users, although it can also be used in mobile and speech recognition-based applications.
Many of the input models discussed above utilise some form of text prediction technology. Known prediction models for enhancing text input have two main functions:
Examples of such technologies include Tegic Communications'‘T9’, Motorola's ‘iTap’, Nuance's ‘XT9’, Blackberry's ‘SureType’ and Zi Technology's ‘eZiType’ and ‘eZiText’. In each case a dictionary of allowable terms is maintained and, given a particular input sequence, the system chooses a legitimate term (or set of terms) from the dictionary and presents it to the user as a potential completion candidate. T9 requires the user to enter a number of characters equal to the length of the target input sequence, and thus only offers function 1) above, whereas the other systems offer both 1) and 2).
In all of these technologies, the basic dictionary can be augmented with new terms entered by the user. This is limited only by the amount of device memory available. T9 uses a static dictionary, meaning that words sharing the same key sequence are always suggested to the user in the same order. In contrast, Motorola's iTap utilises a dynamic dictionary, meaning that the first word predicted for a given key sequence may not remain the same each time the key sequence is entered. Rather, completions are suggested in order of most recent use. However, this method does not keep track of which completion is the most probable; it merely chooses the one used most recently.
Blackberry's SureType, Nuance's XT9 and Zi Technology's eZiType offer somewhat more sophisticated models, in which candidate completions are ordered on the basis of usage frequency statistics. In addition, Zi Technology's eZiText also has the ability to predict multi-word completion candidates given appropriate input, by scanning a user's previous input to identify high frequency phrases.
The present invention represents a fundamental shift away from predominantly character-based text input to a predominately word- or phrase-based text input.
In accordance with the present invention there is provided a system comprising a user interface configured to receive text input by a user, a text prediction engine comprising a plurality of language models and configured to receive the input text from the user interface and to generate concurrently text predictions using the plurality of language models and wherein the text prediction engine is further configured to provide text predictions to the user interface for display and user selection.
Preferably, the text predictions are generated concurrently from the plurality of language models in real time. Preferably, the plurality of language models comprises a model of human language and at least one language model specific to an application. More preferably, the at least one language model specific to an application comprises one or more of an email, SMS text, newswire, academic, blog, or product review specific language model. Alternatively, the at least one language model specific to an application comprises an email and an SMS text specific language model and the text predictions are generated using one or both of the email and SMS text specific language models. The plurality of language models may also include at least one additional language model, which may be a user community specific language model for example.
In an embodiment of the invention, the system includes a mechanism configured to compare a sequence of terms stored in a language model to a sequence of terms stored in one or more other language models and to remove duplicate or multiple entries by retaining only the most probable of the duplicate or multiple entries.
In another embodiment of the invention, the plurality of language models includes a user specific language model based on an n-gram language model that is updated to record the frequency of occurrence of n-gram paths input by a user in an n-gram map. Preferably, the user specific language model is configured, in response to inputted text which is not represented in the user specific language model, to insert new paths into the n-gram map within the language model.
In a preferred embodiment the text prediction engine comprises a mechanism to combine the predictions generated by each language model. Preferably, the mechanism is configured to insert the predictions into an ordered associative structure or an STL ‘multimap’ structure and return the p most probable terms as the predictions for provision to the user interface.
Preferably, the plurality of language models utilise a beginning-of-sequence marker to determine word or phrase predictions in the absence of any preceding text input and/or after end-of-sentence punctuation and/or after new line entry.
In an embodiment of the system of the invention, each of the plurality of language models models language using an approximate trie and an n-gram map, wherein the approximate trie is an extension of a standard trie, with a set of values stored at each node for all subsequently allowable character sequences from that node.
In an alternative embodiment of the system of the invention, each of the plurality of language models models language using a probabilistic trie and an n-gram map, wherein the probabilistic trie is an extension of a standard trie, with a set of values stored at each node for all subsequently allowable character sequences from that node.
Preferably, the language model is configured to conduct a search of the n-gram map to determine word or phrase predictions for a next term on the basis of up to n−1 terms of preceding text input. Preferably, the language model is configured to conduct a search of the approximate trie or the probabilistic trie to ascertain word predictions based on at least one inputted character.
Additionally, where the language model comprises an approximate trie, the language model may include a candidate filter to narrow the predictions determined by the approximate trie, wherein the candidate filter is configured to discard all candidate strings for which the current input is not a substring.
The language model may also include a mechanism to compute the intersection of the predictions determined by the approximate trie and optionally the candidate filter, or the probabilistic trie, and the n-gram map, by searching for and retaining only identifiers that are present in both prediction sets.
In an embodiment, the language model also includes a Bloom filter, comprising an n+1 gram map, which is configured to search the n+1 gram map to return a new prediction set based on a context of 1) the n−1 terms of preceding text input used to search the n-gram map, 2) the prediction terms in the determined intersection, and 3) an extra term of context, immediately preceding the n−1 terms used to search the n-gram map.
In an embodiment, the language model further includes a topic filter which is configured to predict topic categories represented in a current input text, predict topic categories for the terms in the prediction set and adjust the probability of the predictions in the prediction set based on the category and topic predictions.
The present invention also provides a touch-screen interface that includes a single or multi-character entry mechanism, a word prediction pane, and a typing pane to display inputted text. Preferably, the interface includes a menu button which toggles the screen between prediction, numbers and punctuation, and further punctuation screens. Preferably, the interface includes a send button to send the inputted text to an email application. Preferably, the user interface is configured for word or phrase input, dependent on which term is chosen for input in a given sequence of words.
Preferably, the word prediction pane includes one or more word keys to present predicted words and wherein, in response to a word key press, the user interface is configured to display the word in the typing pane. Preferably, the interface further comprises a delete button and/or an undo button, wherein in response to a press of the undo button or a left-to-right gesture on the delete button, the interface is configured to undo the previous word selection, by erasing the word from the typing pane and returning to the previous prediction pane.
Preferably, the word prediction pane includes one or more word keys to present predicted words and wherein, in response to a word key press, the user interface is configured to display the word in the typing pane and pass the current input sequence including that word to the text prediction engine as a context input. Preferably, in response to a word key press and hold or left-to-right gesture on the word key, the user interface is configured to display the word in the typing pane, pass the current input sequence excluding that word to the text prediction engine as a context input, and pass the characters of that word to the text prediction engine as a current word input. Preferably, the interface further comprises one or more punctuation keys to present punctuation marks and a return key and wherein, in response to an end-of-sequence punctuation or ‘return’ key press, the user interface is configured to pass the current sequence to the text prediction engine, wherein the text prediction engine comprises a mechanism configured to tokenise the current sequence and pass the tokenised sequence to the user specific language model, and wherein the user specific language model is configured to assign numerical identifiers to the tokenised sequence and update its n-gram map.
In accordance with the present invention, there is also provided a method for processing user text input and generating text predictions for user selection. The method includes the steps of receiving text input into a user interface, generating concurrently, using a text prediction engine comprising a plurality of language models, text predictions from the multiple language models, and providing text predictions to the user interface for user selection.
In an embodiment, each of the plurality of language models includes an n-gram map and an approximate trie or a probabilistic trie and the method includes the step of conducting a search of the n-gram map to determine word or phrase predictions for a next term on the basis of up to n−1 terms of preceding text input.
In an embodiment, each of the plurality of language models comprises an n-gram map and an approximate trie or a probabilistic trie and the method includes the step of conducting a search of the approximate trie or the probabilistic trie to ascertain word predictions based on at least one inputted character. Preferably, where each of the plurality of language models comprises an approximate trie, the language models also comprising a candidate filter, the method further comprising narrowing the word predictions determined by the approximate trie by discarding all candidate strings for which the current input is not a substring.
Preferably, the language model comprises a mechanism to compute the intersection of the predictions determined by the approximate trie and optionally the candidate filter, or the probabilistic trie, and the n-gram map and the method includes the further step of computing the intersection of the predictions. More preferably, the mechanism searches for and retains only identifiers that are present in both prediction sets.
In an embodiment, the language model comprises a Bloom filter which comprises an n+1 gram map and the method includes the additional step of returning a new prediction set based on a context of 1) the n−1 terms of preceding input text used to search the n-gram map, 2) the prediction terms in the determined intersection, and 3) and extra term of context, immediately preceding the n−1 terms used to search the n-gram map.
In an embodiment, the language model further comprises a topic filter and the method includes the further steps of predicting topic categories represented in a current input text, predicting topic categories for the terms in the prediction set and adjusting the probabilities of the predictions in the prediction set based on the topic category predictions.
In a preferred embodiment, the plurality of language models includes a user specific language model based on an n-gram language model and the method includes the further step of updating the frequency of occurrence of n-gram paths, input by a user, in an n-gram map. Preferably, in response to the input of text which is not represented in the language model, the method includes the step of inserting new paths in the n-gram language model.
Preferably, the text prediction engine comprises a mechanism to combine the predictions generated from each language model and the method includes the further step of combining the predictions, which combination preferably includes inserting the predictions into an ordered associative structure or an STL ‘multimap’ structure, and returning the p most probable terms for provision to the user interface.
There is also provided, in accordance with the invention a computer program product including a computer readable medium having stored thereon computer program means for causing a processor to carry out the method of the invention.
The predictive text input system and method of the present invention has significant advantages over current technologies. While T9, iTap, SureType etc. are based on term dictionaries, the present system is based on adaptive probabilistic language model technology, which takes into account multiple contextual terms and combines information from multiple language domains in a mathematically well-founded and computationally efficient manner. The present text input system therefore provides a technical improvement that reduces the user labour aspect of text input.
The present invention will now be described in detail with reference to the accompanying drawings, in which:
In general, but not exclusive terms, the system of the invention can be implemented as shown in
By way of example only, if the system is a computer or similar device in which the target application is email, then the application specific language model 4 will be a model generated from email language text 2 comprising a large quantity of email messages from a wide variety of authors. Similarly, in the case of a mobile device, the application specific language model 4 will be generated from mobile SMS text language 2. In some embodiments of the system a plurality of application specific language models 4 are required, for example a mobile device can be used for emailing and SMS text messaging, thus requiring an SMS specific language model and an email specific language model. Another example of a system requiring a plurality of application specific language models 4 is that of a computer which can be used for word processing, emailing and sending SMS messages to mobile devices through the internet, thus requiring three application specific language models 4. Other combinations are, of course, possible, and further examples of application specific language models include language models generated from newswires, blogs, academic papers, word processing and patents.
In some embodiments, the system can further comprise additional language models 6. For instance, it might be efficacious to construct a company-specific language model for use within a particular organisation. This may include organisation specific language enabling prediction of preferred or standard wording, for example, during text input. However, it will be appreciated that the additional language models 6 can comprise any ‘user community’ specific language model. For example the ‘user community’ specific language model could comprise a local dialect or interest grouping specific language model.
The language models discussed so far are static language models. That is, they are generated from a representative body of text and thereafter are not changed. Of course, new language models can be created and used, but the existing ones in the system of the invention remain unchanged until replaced or removed.
The present system utilises a mechanism 5, static pruning, across all static language models, to reduce the amount of information stored in the system. If duplicate or multiple (in the case of a system comprising three or more language models) entries are detected, the mechanism 5 ‘prunes’ the language models by retaining only the most probable entry. Static pruning is described with reference to a single language model in a later section of the description.
The text prediction engine 100 operates to generate concurrently text predictions 20 from the multiple language models present. It does this by employing a multi-language model 8 (Multi-LM) to combine the predictions 20 sourced from each of the multiple language models to generate final predictions 9 that are provided to a user interface for display and user selection. The final predictions 9 are a set (i.e. a specified number) of the overall most probable predictions. The Multi-LM 8 generates the final predictions 9 by inserting the predictions 20 from each language model into an ordered associative structure which may be an ordered STL ‘multimap’ structure.
An ordered associative structure is an abstract data type composed of a collection of unique keys and a collection of values, where each key is associated with one value (or set of values). The structure can be used to store a sequence of elements as an ordered tree of nodes, each storing one element. An element consists of a key, for ordering the sequence, and a mapped value. In one ordered associative structure of the present system, a prediction is a string value mapped to a probability value, and the map is ordered on the basis of the probabilities, i.e. the prediction strings are used as keys in the structure and the probability values are used as values in the structure. In the present system, the structure is ordered by the values (rather than by the keys which are the prediction strings). The operation of finding the value associated with a key is called a lookup or indexing.
An STL multimap is a specific type of ordered associative structure in which duplicate keys are allowed. In the STL multimap of the present system, a prediction is a string value mapped to a probability value, and the map is ordered on the basis of the probabilities, i.e. the probability values are used as keys in the multimap and the strings as values. Since, the keys are used to order the structure, the multimap is naturally ordered by the probability values.
By way of example, given the predictions “a”→0.2 and “the”→0.3 from a first language model, and the predictions “an”→0.1 and “these”→0.2 from a second language model, the Multi-LM 8 inserts these predictions into an ordered associative structure or a multimap such that the entries are ordered by their probabilities ((0.1→“an”), (0.2→“a”), (0.2→“these”), (0.3→“the”)). This structure/multimap can subsequently be read from the upper value end to obtain a set of final ‘most probable’ predictions 9.
In the preferred embodiment, the system further comprises a user specific language model 7, which comprises a dynamic language model trained progressively on user input. The user input text stream 10 refers to the evolving text data generated by the user which is then fed back into the dynamic user specific language model as progressive training data. In response to the input of end-of-sentence punctuation or a ‘return’ character, or at an otherwise predetermined time, the user inputted text sequence is passed to the Multi-LM 8 which splits the text sequence into ‘tokens’ as described later. The tokenised sequence data 12 is then passed to the user specific language model 7. The updating of a dynamic language model is described in a later section of the description, with reference to the structure of a single language model.
By updating the user specific language model 7, the language model evolves with user input 10, thereby providing a feedback loop in which predictions generated by the user specific language model 7 depend on the selection by the user of previous predictions 9 generated by the text prediction engine or the addition of words initially absent from the system (which are input by character entry).
Thus the present system utilises two types of language models, static and dynamic. The user specific language model 7 is an example of a dynamic language model.
The system of the present invention is built around the principle of predictive language model inference, in which the probability of a particular term is estimated given a particular context, P(term|context), for all terms in the language. The probabilities are estimated from data observed in training and through dynamic usage of the system. Here, “context” denotes both the terms that have occurred previously in the sequence, as well as any knowledge the system has about the current term (e.g. it starts with a specific character or characters, or it is indicative of a certain topic). Given a particular context, the system predicts the words that are most likely to follow by using estimates of probabilities, P(term|context).
The text prediction engine has the capability of performing phrase-level prediction. For instance, if it is to predict the next two terms, it requires an estimate for P(term1, term2|context) which can be rearranged as P(term1|term2, context)*P(term2|context). P(term1|term2, context) is just P(term1|context2), which is a probability in the format P(term|context), for which it has estimates. P(term2|context) is also in the format P(term|context), for which it has estimates. Therefore, the text prediction engine has the necessary information to perform phrase-level prediction.
Phrase-level prediction significantly increases the upper-bound computational cost, as the predictive text engine must now search in the space of combinations of terms (O(nm) where m is the length of the phrase), but the present system utilises effective methods of rendering the computational cost manageable.
The system limits the space of combinations of terms (i.e. the space of potential phrase predictions) to a tiny fraction of the full nm, thus reducing the computational costs. To do this, given a predicted term ti, the ith term in a predicted phrase, a following term ti+1 is only predicted if the joint probability P(t0, t1 . . . , ti) exceeds the value of the lowest probability in the current prediction set. The joint probability estimate is obtained by multiplying together each of the individual component probabilities, thereby requiring that a high degree of certainty be attained before a phrase prediction is made. Further phrase-level predictions will not be made if the joint probability falls below a threshold value.
The generation of predictions from an individual language model is now described with reference to
There are two inputs into a given language model, a current term input 11 and a context input 12. The current term input 11 comprises information the system has about the term the system is trying to predict, i.e. the term the user is attempting to enter. This could be a sequence of multi-character keystrokes, individual character keystrokes or a mixture of both. For example, if the user was attempting to enter the term “overt”, and had input two keystrokes on a multi-character keyboard, the current term input 11 might be the set {o/p, v/x/z}, indicating that the 2-character-key o/p and the 3-character-key v/x/z had been used.
As shown in
The KeyPressVector 31 contains a number of elements equal to the number of keystrokes made by the user, in this example two. An example of a KeyPressVector generated to allow the alternatives shown above might be {[(i→0.7), (I→0.3)], [(m→0.7), ('m→0.3)]}. There are two elements to the KeyPressVector, [(i→0.7), (I→0.3)] and [(m→0.7), ('m→0.3)].
The first element states that the user intended to enter the character ‘i’ with 0.7 probability, and the character ‘I’ with 0.3 probability. The second element states that the user intended to enter the character ‘m’ with 0.7 probability and the character sequence ‘'m’ with 0.3 probability.
As the skilled reader will be aware, the KeyPressVector embodiment is not restricted to individual character keystrokes, and could be used for multi-character keystrokes as well. In the case of multi-character keystrokes, the first element of the KeyPressVector 31 will comprise probability values relating to the multiple characters associated with that keystroke. If the user were to press a key representing the characters g, h and i, the first element of the KeyPressVector will comprise probabilities values associated with g, h and i, and the first element of the KeyPressVector will be [(g→0.33))], [(h→0.33)], [(i→0.33)], as each of the characters sharing the keystroke will have an equal probability.
The probability distributions associated with each keystroke can be generated in a multiplicity of ways. As a non-limiting example, given a standard QWERTY keyboard layout, it can be assumed that if the user enters a particular character, there is some probability that he/she actually meant to press the characters immediately adjacent. By way of a non-limiting example, if the user enters the character ‘k’, the KeyPressVector might assign a small probability to the characters ‘j’, ‘i’, ‘l’ and ‘m’ as they are immediately adjacent to ‘k’ on the QWERTY keyboard.
Alternatively, probability values might be assigned to characters on the basis of their distance from the point of contact on a touchscreen device. For instance, let's assume that the user touched on the ‘h’ character key, with the following distances from surrounding key centroids:
The normalised inverse of these distances (i.e. p=(l/d)/D, where p is the resultant probability, d is the distance for a particular character, and D=Σl/d, the sum over all inverse distance values) can be used to generate probabilities for the KeyPressVector, e.g.
More intricate and accurate methods of generating probabilities in the KeyPressVector have the advantage of improving the accuracy of the predictions, but disadvantageously they are usually more costly to compute. Probabilities for character sequences such as ‘t (which can be used to automatically add an apostrophe before the character ‘t’) must be established a-priori.
Each language model utilises an approximate trie 13 (see
By way of example, the term “investigate”, mapped to numerical identifier ‘9’, can be added to an approximate trie of depth 4 in a language model. The language model will initially follow, in the approximate trie, the path to the node represented by the character ‘i’ and add the identifier ‘9’ to the set of values at that node (because each node stores a set of values for all subsequently-allowable sequences). It will then follow the path to the node represented by ‘n’ and add ‘9’ to its values, and the same for ‘v’, and ‘e’, at which point the maximum depth has been attained and so the procedure terminates. Subsequently, if “investigate” is being searched for by a language model, the language model will conduct a binary search of the approximate trie to follow the path ‘i’→‘n’→‘v’→‘e’ and then return the set of values at the node representing ‘e’, which will necessarily contain the value ‘9’. However, the set of values at the node representing ‘e’ will also contain values for any other strings that have also been inserted and begin with “inve”.
Hence, the language model cannot guarantee that additional sequence values that are not compatible with a specified search sequence will not be returned, when the current term input exceeds the maximum depth of the approximate trie. Hence, the extension from a standard trie is named as an ‘approximate trie’, because interrogation returns an approximation to the true set of associated values.
An alternative to the approximate trie is shown in
Note that for simplicity in this example, the third element of the KeyPressVector consists of a single element with probability 0.2. In practice, each element would consist of a true probability distribution, i.e. summing to 1. Furthermore, for simplicity, this example describes an individual character entry keystoke.
Each arrow in
In this example, if the probabilistic trie is being interrogated with the KeyPressVector, the system would begin at the root node 40, and attempt to follow the sequence contained in the first item in the first element of the KeyPressVector, which in this case is the character “I”. The only path leaving the root node contains the character “I” so the system follows it and updates the probability state to 1.0. Since there are no further items in the first element of the KeyPressVector the system moves to the next element, first attempting to follow the character ‘l’ and then the sequence “'l”. Both options match the structure of the trie, so both paths are followed and the probability state splits into two, with the relevant multiplication performed in each. In both cases the current state is multiplied by 0.5 to yield 0.5. Note that the system has traversed two states within the trie to follow the “'l” path, but this is considered a single probabilistic transaction, as specified by the KeyPressVector because the user did not enter the apostrophe. The system then moves onto the final element in the KeyPressVector and attempts to match the character ‘l’ from both current states. This is a success, and the relevant probabilistic multiplications are made in both cases, yielding current states of 0.1. As there are no further elements in the KeyPressVector, the system returns the values in the nodes at each end point, along with their respective probability state values, in this case the identifiers 2 and 4, both mapped to the probability value 0.1.
To increase memory efficiency the system compresses the full probabilistic trie in a manner known in the art, in a similar way to the compressed approximate trie of
Preferably the system of the present invention uses a probabilistic trie 33 rather than an approximate trie 13. The probabilistic trie has the advantage of mapping probability values to character strings. Furthermore, the probabilistic trie 33 is not restricted to a specified maximum depth. However, the choice of trie will be dependent on such factors as the available memory.
As the skilled reader will be aware, the KeyPressVector 31 and probabilistic trie 33 of the present invention can be used to correct for mistakes in the character entry of a word, in addition to the omission of punctuation marks. Analogous to the example of the insertion of an apostrophe which was omitted by the user, the present system can be configured to insert a repeated character which was omitted by the user. For example, if the user were trying to type ‘accommodation’, but typed the characters ‘a-c-o’, the system can account for the missing ‘c’ by inserting a ‘c’. For this example, the KeyPressVector 31 for the character sequence could be [(“a”→1), (“c”→0.9, “cc”→0.1), (“o”→1)]. This KeyPressVector 31 encodes the specific case where a single consonant input is associated with its double counterpart, e.g. c→cc, d→dd, m→mm, etc.
The KeyPressVector 31 can be generalised to account for a missing character entry after each and every character inputted into a system. For example, the KeyPressVector could be generalised to be [(“a”→0.9, “a”→0.1), (“c”→0.9, “c”→0.1), (“o”→0.9, “o”→0.1)]. In this example of a KeyPressVector 31, every single character input is associated with a potential double character input, but the identity of the second character is left unspecified. The omitted character symbol “*” is implemented in the probabilistic trie by following all possible paths from the current node, with the specified probability. So, in the example above, given the first element: (“a”→0.9, “a*”→0.1) the path corresponding to the character “a” will be followed with probability 0.9. and all existing paths corresponding to “a” followed by another character will also be followed, but with probability 0.1. Examples of such paths could include “ab”, “ac”, “ad”, “a-” etc.
A similar concept can be implemented to insert a null character, i.e. to ignore a character entered by a user. For example if the user inserted the characters ‘n-e-c-c’ when trying to type ‘necessary’, the system can be configured to ignore a repeated consonant, i.e. to search for the sequence ‘n-e-c’ only. An example KeyPressVector 31 for the character entry ‘n-e-c-c’ could therefore be [(“n”→1), (“e”→1), (“c”→1), (“c”→0.9, “ ”→0.1)], where “ ”→0.1 corresponds to matching an “empty” string with an (example) probability of 0.1. The KeyPressVector can be generalised to ‘ignore’ each character entered by the user, by inserting a null character with a certain probability after each character entered. Such a generalised KeyPressVector 31 may be [(“n”→0.9, “ ”→0.1), (“e”→0.9, “ ”→0.1), (“c”→0.9, “ ”→0.1), (“c”→0.9, “ ”→0.1)]. The null character, “ ”, is implemented in the probabilistic trie by the KeyPressVector remaining at the current node. These concepts can be extended to associate a small probability that the user has omitted a character or inserted the wrong character after the entry of each and every character in a sequence entered by a user.
Obviously, such an implementation will increase the computational costs associated with the system (the “*” operator has a dramatic effect on the number of paths followed), however, it will allow the system to be more tolerant to the incorrect spelling or typing of a user
Reverting to
As the reader will understand, a candidate filter is not required to narrow the predictions returned by a probabilistic trie 33 (see
The context input 12 comprises the sequence entered so far by the user, directly preceding the current word. This sequence is split into ‘tokens’ by the Multi-LM 8, where a token is an individual term, punctuation entity, number etc. The Multi-LM 8 feeds the tokenised sequence data 12 into each language model as a context input. If the system is generating a prediction for the nth term, the context input 12 will contain the preceding n−1 terms that have been selected and input into the system by the user.
The language model utilises an n-gram map 14 to generate word and/or phrase predictions based on the context input 12. An n-gram map is an associative map structure, as schematically shown in
In the present system, n-gram probabilities are stored in a compressed manner to facilitate wide coverage and rapid access on memory-limited devices. The probability values are compressed, preferably, according to the (lossy) discretization procedure, in which the values are discretized and spread over the range of values available in a single byte of memory. Given a true probability value p, the following formula is used to map it into a single byte of memory: b=int(abs(log(p))*10), where int(x) yields the rounded integer part of real-valued x, and abs(x) yields the absolute value of x.
The n-gram maps can be further compressed by representing string values as short-integer-valued numerical identifiers and by storing higher-order entries “on top of” lower-order entries. So, for example the trigram “in the morning” is stored in the same location as the bigram “in the”, but with a link to the additional n-gram head term “morning”, i.e. by storing a set of numerical values (identifiers) for all subsequently-allowable sequences at each node in the n-gram map.
To generate predictions from an n-gram map 14, at each map node 21 the language model conducts a binary search to locate specified subsequent child nodes. For example, if the context comprises term1 and term2, the language model will first locate the node for term1. Term2 is then the specified child node that will be searched for. To facilitate this search, child nodes are ordered numerically by their identifiers at each parent node. The node that is being searched for may contain a large number of children, but it is only the high probability candidates that are of interest. Because the nodes are automatically ordered by P(term), the language model can be configured to return only the first k children, where k is a preset value. This method assumes that the highest probability candidates under P(term|context) will reside in the set of the k highest probability candidates under P(term), as long as k is large enough. It is not feasible to order child nodes by P(term|context) as this would require a different map ordering for every node and vastly increase memory overheads.
The generation of predictions from an n-gram map 14 is described further in the following illustrative example. If the language model is searching for the highest probability term candidates, given the two context terms “in” and “the”, the language model will search for the terms t that maximise the trigram (3-gram) probability P(t|in the). The language model first looks up the identifier for “in” and then conducts a binary search in the first level of the map to locate the identifier (if it exists). Following from the “in” node, the language model looks up the identifier for “the” and conducts a search to locate it in the next map level. It is likely that this node has many children because “in the” is a common prefix, so the language model is configured to return the identifiers for the first k children (inversely ordered by P(term)), which might correspond to terms such as “morning”, “first”, “future”, “next”, “same” etc.
The n-gram map structure described thus far is used in static language models. Static language models are immutable once they have been constructed and directly store compressed n-gram probabilities; they are generated from pre-existing data and are then compiled into binary format files which can be read at run-time.
Conversely, dynamic language models, such as the user specific language model 7, can be updated at any point, and predictions from this type of model are constantly changing as new data is processed.
A dynamic language model is updated in one of two ways: to include a term which is not previously present in a dynamic language model vocabulary; and to update the frequency of an existing term in a particular n-gram context. The dynamic n-gram map stores the frequency at which n-gram paths are input by a user, wherein an ‘n-gram path’ refers to a particular term and up to n−1 terms of preceding context.
For a current term t, current context c, and dynamic language model D, if t does not exist in the vocabulary of D, then the dynamic language model D maps the term t to a new identifier and inserts it into the approximate trie or the probabilistic trie. To enter a term which does not exist in the vocabulary of the language model D, a user can insert the term by inputting it character-by-character into the user interface of the system. The dynamic language model D then follows the path represented by term t and its context c in the n-gram map and new nodes are created if they do not already exist, thereby creating new n-gram paths in the language model dependent on the preceding context c of the current term t. Paths are added to the dynamic n-gram map for varying context lengths, from no context to n−1 terms of context, where n is the maximum n-gram order for the language model. When a user enters the term t at a later time, the language model D increments a count value stored at the node, of the n-gram map, representing the term t by one, and increments the total value of its parent node by one also. In this way, the frequency of input of the n-gram paths comprising a term t and its varying context, from no context to n−1 terms of context, are updated in the n-gram map.
The n-gram probabilities of a dynamic language model are not stored directly, rather frequency statistics are stored. An example of a dynamic n-gram map is shown in
The advantage of the dynamic language model structure is that it allows rapid updating. However, the disadvantage of this type of language model is that its memory and computational requirements are significantly higher than in its static counterpart.
As stated previously, each language model has two input feeds, the current word input 11 and the context input 12, where the current word input 11 can be used to generate a KeyPressVector 31. In order to generate a single set of predictions 20 for a given language model, the language model must compute the intersection of the set of candidates returned by the approximate trie 13 and optional candidate filter 15, and that returned by the n-gram map 14. Alternatively, the language model must compute the intersection of the set of candidates returned by the probabilistic trie 33 and that returned by the n-gram map 14. A set of candidates is represented by a set of numerical identifiers.
To compute the intersection of the set of candidates returned by the approximate trie and the n-gram map, an intersection mechanism 16 first determines which of the two sets is smaller. The smaller set of identifiers is used as a base set. The mechanism 16 iterates through the base set of identifiers and looks up each identifier in the base set in the other set. If a match is found for the identifier in question, the intersection mechanism 16 places the identifier in a new set which represents the intersection between the two sets. In this embodiment, the probability associated with an identifier in the new set is its probability as stored in the n-gram map. This is because the candidates returned from the approximate trie do not have a probability value associated with them. The approximate trie is interrogated to return possible candidates only.
To compute the intersection of the set of candidates returned by the probabilistic trie 33 and the n-gram map, the intersection mechanism 16 follows the same procedure as set out with relation to the approximate tri 13. However, in the case of the probabilistic tri 33, the candidates returned from the probabilistic tri 33 will have a probability value associated with them. Therefore, if a match is found between the candidates returned from the n-gram map and those returned from the probabilistic trie 33, the intersection mechanism 16 computes the product of the two probabilities and places the identifier, mapped to its resultant probability, in a new set which represents the intersection between the two sets.
The language model can be configured to apply one or more filters to the predictions generated by the intersection mechanism 16. In one embodiment, the first filter that is applied is a bloom filter 17, which is followed by a topic filter 18 and optionally additional filters 19 to generate the output predictions 20 for a given language model. However, in other embodiments the ordering of the applied filters or the types of applied filter can be changed.
A Bloom filter 17 is a randomised data structure used to store sets of objects in a highly efficient manner using bit-arrays and combinations of hash functions. The present system uses an implementation of a multi-bit-array Bloom filter 17 to reorder prediction candidates, generated at the intersection 16, on the basis of higher-order n-gram statistics which for memory reasons cannot be stored in the n-gram map 14. The present system utilises a technique for associating n-grams 14 with probability values in the Bloom filter 17. A technique to associate Bloom filter entries with probability values is disclosed in Talbot and Osborne, 2007, Proceedings of the 2007 Joint Conference on Empirical Methods in Natural Language Processing and Computational Natural Language Learning, pp. 468-479.
For a given set of prediction candidates and a certain number of context terms, the Bloom filter 17 reorders the predictions to reflect new probabilities. The present system utilises a log-frequency Bloom filter (Talbot and Osborne) which maps a set of n-gram entries to respective probability estimates. In the present system, the language model generates a set of predictions P based on a set of up to n−1 context terms C. A log-frequency Bloom filter F, which associates n+1-gram term sequences with probability estimates, can be used to generate a new prediction set in which the previous predictions are reordered. For each term prediction t in P, the language model is configured to search F based on a context of c+C+t to yield a new probability value v, wherein C comprises the n−1 terms of preceding text input used to search the n-gram map; t comprises the term predictions in P (those in the determined intersection); and c comprises an extra term of context, immediately preceding the n−1 terms used to search the n-gram map. Therefore, the n+1-gram map of the Bloom filter is searched for each n+1 term sequence, c+C+t, to determine whether that n+1-gram path exists and, if so, the probability associated with that path. A new prediction set is then constructed using the new probabilities. In general, if p is the final number of predictions requested, then the filtering process will operate on a number greater than p (specified a-priori) so that the reordering process may result in a different set of predictions returned to the user.
In some embodiments, the language model can be further configured to apply a topic filter 18. N-gram statistics yield estimates of prediction candidate probabilities based on local context, but global context also affects candidate probabilities. The present system utilises a topic filter 18 that actively identifies the most likely topic for a given piece of writing and reorders the candidate predictions accordingly.
The topic filter 18 takes into account the fact that topical context affects term usage. For instance, given the sequence “was awarded a”, the likelihood of the following term being either “penalty” or “grant” is highly dependent on whether the topic of discussion is ‘football’ or ‘finance’. Local n-gram context often cannot shed light on this, whilst a topic filter that takes the whole of a segment of text into account might be able to.
The function of the topic filter is to accept a set of predictions and yield a variant of this set in which the probability values associated with the predicted terms may be altered, which may consequentially alter the ordering of predictions in the set. Given an input prediction set P and current input text T, the topic filter carries out the following operations: predict a weighted set of categories representing the most probable topics represented in T; predict a weighted set of topic categories for the terms/phrases in P; and modify P such that the probabilities of predictions with similar topic categories to T are inflated relative to those with dissimilar topic categories.
The prediction of topic categories for an arbitrary segment of text is accomplished through the machine learning paradigm of classification, which consists of a framework within which a mechanical ‘learner’ induces a functional mapping between elements drawn from a particular sample space and a set of designated target classes (see B. Medlock, “Investigating Classification for Natural Language Processing Tasks”, VDM Verlag 2008, for a more detailed introduction to classification concepts and methods).
A classifier is employed in the topic filter 18 based on the principle of supervised learning in which a quantity of training data must first be collected and assigned labels representing topic categories. From this data, the classifier learns to infer likely topic category labels for new data. In the present case, an individual data sample is a segment of text. For instance, when building a classifier to label data in the news domain, a collection of news stories is required where each is pre-assigned topic category labels representing its dominant topic(s), e.g. ‘sport’, ‘finance’, ‘entertainment’ etc. The set of topic categories is pre-defined, and may be hierarchical, e.g. ‘football’ might be a subcategory of ‘sport’.
Once the classifier has been trained on pre-existing data, it is able to predict the most likely topic categories for a new segment of text, along with a numerical value for each prediction representing the degree of confidence with which the prediction has been made. For example, given the following text segment, “David Beckham will stay at AC Milan until the end of the season after a ‘timeshare’ deal was finally agreed with Los Angeles Galaxy”, a trained classifier might yield the following category predictions ‘sport’→0.8; ‘finance’→0.3, wherein the numerical values represent the confidence that the classifier has in that particular prediction. The numerical values can be interpreted as an estimate of the level of representation of that particular topic in the given text segment.
The prediction of topic categories for individual terms/phrases from the prediction set P can be carried out in the same manner as for input text segments, using the classifier. This yields a set of weighted topic category predictions for each term/phrase prediction in P.
The modification of prediction probabilities in P requires the definition of a ‘similarity metric’ between topic category prediction sets. This takes the functional form: sim(S, S′)=v, where S and S′ are topic category prediction sets and v is the real-valued output from the function sim, representing the degree of similarity between S and S′. There are many different methods of implementing sim and any one is appropriate. For instance, the topic category prediction sets can be interpreted as vectors in an m-dimensional space where m is the number of topic categories. Under this interpretation, the weight assigned by the classifier to a particular category c is the extension of the vector in the c-dimension. Well-established techniques can be used for estimating vector similarity, e.g. by applying magnitude normalisation and taking the inner (dot) product.
Once the similarity metric has been defined, the final stage within the topic filter 18 is to use the similarity values to modify the probabilities in P. A number of techniques can be chosen for accomplishing this, but one possibility is to inflate the probabilities in P by a small value in inverse proportion to their rank when ordered by topic similarity with T, for instance in accordance with the formula, pfinal=pinitial+k/r, where p is the prediction probability drawn from P; r is the rank of the term associated with p, when ordered by sim(Sp, ST) (rank 1=highest similarity); and k is a pre-defined constant.
The language model architecture of the present system is configured such that any number of additional filters 19 can used to reorder candidate probabilities. At each stage, the language model will already possess a candidate prediction set, and if a threshold on computation time is exceeded, the candidate set can be returned and additional filters 19 can be easily bypassed.
The language model returns its predictions 20 as a set of terms/phrases mapped to probability values. As explained in the discussion of
From
In some embodiments, the system can use beginning of sequence markers to generate a list of word or phrase predictions 9 in the absence of any preceding user input, enabling a user to select a word or phrase to commence the input of a sentence. The system can also use “beginning-of-sequence” (BOS) markers to determine word or phrase predictions after end-of-sentence punctuation and/or after new line entry.
The language models use BOS markers which are used as context 12 in the absence of any preceding user input. In the absence of preceding user input, the language models will generate certain terms such as “Hi”, “Dear”, “How”, “I” etc. because they are more likely than high probability unigram terms such as “of”, “to”, “a” etc. The predictions from each language model 20 are based on BOS markers. One of the entries in the first level of the n-gram map will be the BOS marker, and this will be used as context in exactly the same way as standard input terms, e.g. if the BOS marker is ‘^’ then the n-gram map might contain (amongst others) the following paths: “^ Dear”→0.2; “^ Hi”→0.25; “^ How”→0.1; and “^ I”→0.15. Preferably, BOS markers are automatically inserted into the context when a user enters end-of-sentence punctuation (period, exclamation mark, question mark) or enters the ‘return’ character.
As the user specific language model 7 is a dynamic language model, over time it will learn a user's language style, thereby generating predictions that are more likely to reflect a particular user's language style. However, if the text prediction engine generates a list of word or phrase predictions 9 which fails to include the word desired by the user, the user can tailor the list of words or phrases generated by the text prediction engine by inputting a character 11 through the user interface. The language model then utilises an approximate trie 13 or a probabilistic trie 33, along with an n-gram map, to generate a list of word predictions based on the current word input 11.
As stated previously, with reference to
Given two language models L1 and L2, the pruning of L1 is achieved by comparison to a reference language model, L2. Each language model comprises an n-gram map, in which terms in the vocabulary are associated with numerical identifiers which are stored in the map and associated with probability values. Because identifiers are assigned to terms such that the resulting ordering is from most-to-least frequent, the identifier that is assigned to a given term in one language model does not necessarily match the identifier assigned to the same term in a different language model. Therefore, to achieve static pruning, the static pruning mechanism 5 generates a conversion table between the vocabulary identifiers in L1 and the vocabulary identifiers in L2. The conversion table maps the identifier for a given term t in L1, to the identifier for the term t in L2. For example, if the term “the” is identified by the numerical identifier 1 in L1 and the identifier 2 in L2, then given the identifier 1 for L1, the conversion table will yield the identifier 2 for L2.
The static pruning mechanism 5 traverses the n-gram map of L1 such that each node is visited exactly once. For each path followed in L1, the corresponding path is attempted in L2 by using the conversion table to convert the path identifiers in L1 to those of L2. The static pruning mechanism 5 conducts a binary search to locate specified subsequent child nodes. For example, if the context comprises term1 and term2, the static pruning mechanism 5 will first locate the node for term1. Term2 is then the specified child node that will be searched for. By conducting such a search in L2, identical paths can be identified. If no identical path exists in L2, the static pruning mechanism 5 moves on to search in L2 for the next path of L1. If an identical path exists in L2, then the static pruning mechanism 5 makes a comparison of the probabilities at each node. If the L1 probability is smaller than the L2 probability, and the node is terminal, then the static pruning mechanism 5 removes this node from L1.
A method according to the present invention is now described with reference to
The method further comprises the steps of generating concurrently, using a text prediction engine comprising a plurality of language models, text predictions from the multiple language models; and providing text predictions for user selection. As shown in the flow chart of
By way of an example, say a user has already entered the sequence “Hope to see you” and is intending to enter the terms “very” and “soon” in that order. The final prediction set 9 that is provided by the text prediction engine 100 to a user interface for display and user selection, may comprise ‘all’, ‘soon’, ‘there’, ‘at’, ‘on’, ‘in’.
The intended next term “very” is not in the currently-predicted list of terms. The user can enter multi-character ‘v/x/z’ input to prompt the predictive text engine 100 to provide more relevant predictions. The information about the current context “Hope to see you” and the currently-entered multi-character ‘v/x/z’ is passed to the text prediction engine 100 where the Multi-LM 8 tokenises the context and adds the beginning-of-sequence marker ‘^’: “Hope to see you”→“^” “Hope” “to” “see” “you”.
The Multi-LM 8 then passes the tokenised sequence data 12 and the multi-character current input 11 to each of the language models. Each language model receives a copy of the current input 11 and the tokenised context 12.
Within each language model, the current input (which may be represented as a KeyPressVector 31) is fed into the approximate trie 13 or the probabilistic trie 33, which in this case returns the set of identifiers for all vocabulary terms that begin with either ‘v’ or ‘x’ or ‘z’. It accomplishes this by following the initial paths to the nodes corresponding to the characters ‘v’, ‘x’ and ‘z’, concatenating the identifier value sets found at each node and returning the combined set. In the case of the identifiers being returned by an approximate trie 13, the set of identifiers can be narrowed using a candidate filter 15. However, in the present example, no filtering is required because the length of the current input will be less than the maximum depth of the approximate trie. Candidate filtering is only necessary when using an approximate trie 13 and even then, only when the length of the current input exceeds the maximum depth of the approximate trie, which as noted previously, to be of any use, must be at least 1, and usually around 3-5. The depth of the approximate trie is specified a-priori for each language model.
Using the tokenised context 12, the n-gram map 14 is queried by the language model for a given n-gram order, i.e. a number of context terms. Each language model contains n-grams up to a maximum value of n. For example, a particular language model may contain 1, 2 and 3-grams, in which the maximum n-gram order would be 3. The system begins by taking the largest possible amount of context and querying the n-gram map to see if there is an entry for the path representing that context. So, for example, if a given language model has a maximum n-gram order of 3, in the present example, the system would begin by searching for the path corresponding to the context phrase “see you”. The system then extracts the first k children of the node corresponding to this path, where k is an a-priori parameter of the system. In static language models, each child node contains a term identifier and a compressed probability value that can be extracted directly for use in prediction ordering. In dynamic language models, the node contains a frequency value which must be normalised by its parent ‘total’ value to yield a probability.
Given a set of identifiers from the approximate trie 13 or set of identifiers mapped to probability values from the probabilistic trie 33, and a set of identifiers mapped to probability values from the n-gram map 14, the intersection is computed by an intersection mechanism 16. If the number of predictions in the resulting set is less than p, or some multiple of p (where p is the required number of predictions), the system continues to look for further predictions by returning to the n-gram map 14 and considering smaller contexts. In this example, if the context “see you” did not yield enough predictions, the system would consider the context “you” (second level in the n-gram map), and if that still did not yield the required number, the system would revert to an empty context (first level in the n-gram map).
In the present example, the system has previously searched for the path corresponding to the context phrase “see you”. At this stage, the language model has obtained a set of predicted terms which are compatible with the context and the current input (which may be represented by a KeyPressVector 31), ordered by their respective probability values, as extracted from the n-gram map. For example, the prediction set may comprise the identifiers corresponding to the terms “very”, “visit” and “x”. A new prediction set is generated, with the previous predictions re-ordered, by using the Bloom filter component 17. In this case, the Bloom filter might contain 4-gram sequences associated with probability estimates. The language model would query the Bloom filter using a new context comprising the previous context used to search the n-gram map (“see you”), the set of current predictions (“very”, “visit” and “x”), and optionally, an extra context term (in this case “to”). Hence, in this example, the Bloom filter would be queried using the following sequences: “to see you very”; “to see you visit”; and “to see you x”.
The probabilities mapped to the terms “very”, “visit” and “x” in the current prediction set would then be replaced by the values returned from the Bloom filter and consequentially reordered. Additional filters would operate in a similar manner. In general, if p is the final number of predictions requested, then the filtering process would operate on a number greater than p (specified a-priori), such that the reordering process may result in a different set of predictions returned to the user.
Once all filters have been applied, a set of predictions (terms+probability values) 20 is returned by each individual language model to the Multi-LM 8, which then aggregates them by inserting all predictions into an ordered associative structure, or an STL multimap, and choosing the p most probable and returning them as the final prediction set 9. In our example, the prediction set 9 presented to the user might be ‘very’, ‘via’, ‘visit’, ‘view’, ‘x’
The intended term “very” now appears on the prediction list and can be selected. Once selected, the context, now including the term “very”, becomes “Hope to see you very” and the current input is empty. The preceding method steps are iterated in the same manner, except that this time the approximate trie or the probabilistic trie is bypassed (because there has been no character entry, i.e. no current word input), and the prediction candidate set is drawn solely from the n-gram map. This might yield the following prediction set ‘much’, ‘soon’, ‘good’, ‘many’, ‘well’.
The term “soon” occurs in the prediction set, so the user can select it, and once again the context is updated, this time to include the new term, “Hope to see you very soon”, and the current input is set to empty. This process continues to iterate as input progresses.
When the user ends a sequence by pressing ‘return’ or an end-of-sequence punctuation term, the user interface is configured to pass the current sequence to the text prediction engine 100, wherein the Multi-LM 8 is configured to ‘tokenise’ the current sequence which it then passes to the user specific language model 7. The dynamic language model 7 assigns numerical identifiers to the tokenised input 12 and updates the n-gram map 14. Using the same example, consider that the user subsequently adds an exclamation mark at the end of the sequence to yield: “Hope to see you very soon!”. The following stages would occur: The Multi-LM 8 tokenises the sequence and inserts the BOS marker, “Hope to see you very soon!” becomes, for example, “^” “Hope” “to” “see” “you” “very” “soon” “!”; and for each term in the sequence (and its respective context), the dynamic language model adds n-gram paths to the dynamic n-gram map constituting varying context lengths, from no context to n−1 terms of context, where n is the maximum n-gram order for the language model. For instance in the case of the above example, assuming n=4, the following paths would be added:
For each n-gram path, the dynamic language model 7 increments the frequency value of the corresponding node by one, and also increments the total value for the parent by one. If a given term does not exist in the dynamic language model vocabulary, it is added by the language model, and assigned a new identifier.
The present invention also relates to a user interface. In particular it relates to a touch-screen interface, through which the system of the present invention can be operated.
In the embodiment according to
The difference between the two user interface embodiments is in the prediction pane 25, 28. In the alternative embodiment, the prediction pane 28 comprises an actual character entry button 38 which enables a user to input the sequence of characters they have typed into the system (rather than entering a word that has been predicted by a text prediction engine of the system). This enables the user to input words which are not recognised by the system and which would not therefore be predicted by the system. The prediction pane 28 also comprises a most likely word button 48 which displays the word with the greatest probability associated with it from a set of words or phrases predicted by a text prediction engine. The prediction pane 28 also comprises an alternative word button 58 which displays a word other than the word with the highest probability (i.e. the word with the second highest probability). Pressing either of the buttons 48 and 58 will cause the associated word to be entered.
In both embodiments of the user interface, the typing pane 23 displays the text entered by a user. A user is able to scroll up or down previously typed text which is displayed in the typing pane, enabling the user to view and edit the text. The typing pane can also comprise a cursor which can be moved to facilitate the editing of the entered text.
The interface is arranged such that when a word button from the prediction pane 25, 28 is pressed, that word is selected and appears in the typing pane 23, 27. The updated input sequence comprising the selected word and its preceding context is passed to the text prediction engine for new prediction generation. Preferably, in the embodiment of
In the embodiment of
The user interface of
Character buttons can be displayed in the two side panes 24, 26 or a single main pane 29. The character buttons can have dual or tri character behaviour. This means that either two or three characters are submitted concurrently to the predictor (e.g. if an ‘A|B’ button is pressed then ‘A’ and ‘B’ are submitted). In an embodiment this is the default behaviour on the default screen. The dual character buttons are designed with multi-region behaviour. For instance, pressing the left side of the ‘A|B’ key will input ‘A’, the middle region will give both ‘A’ and ‘B’, the right side will input ‘B’ (this combines the benefit of larger, more accessible multi-character buttons, whilst at the same time allowing experienced users the benefit of higher prediction accuracy resulting from single character input). In an embodiment this is optional behaviour on the default screen. Multitap is used when it is necessary to type characters unambiguously (e.g. for entry of a new word that is not in the language model vocabulary). In an embodiment to enter characters unambiguously, a user presses a toggle button to go to a numbers/punctuation screen where all buttons are multitap.
For numbers or punctuation, all buttons are multitap. For example, with tricharacter buttons, the user can press once to enter the first term (of the three term button), press twice to enter the second term, or press three times for the third term to be entered.
The interface can also comprise one or all of the following additional features: a menu button which toggles the screen between prediction, numbers and punctuation, and further punctuation screens; a return button to start a new line of text; a space button to enter a space when pressed or repeatedly enter a space when held; a delete button to delete individual characters when singularly pressed or repeatedly delete characters or words when held; a capitalisation button which toggles between Abc (where only the first letter is capitalised), ABC (all letters capital) and abc (all letters lower case); a send button to send the inputted text as an email (this is specific to an email focused application).
Furthermore, the interface can optionally include an ‘undo’ button or it can be configured to be responsive to an ‘undo’ gesture, which is a gesture on a delete button (e.g. movement from left to right). In response to this gesture, or button press, the interface undoes the previous term selection, placing the user back at the position prior to term selection.
For example, if a user has entered ‘us’ by character input, they will be presented with a selection of word predictions based on this input. In an example where they accidentally select the word “usually” rather than the intended word “useful”, the undo gesture allows a user to undo the word selection and return to the original predictions based on ‘us’, thereby enabling them to select ‘useful’. This saves the user from repeatedly pressing the delete button to remove the characters accidentally entered by the incorrect word selection.
The current system includes automatic capitalisation at the beginning of sentences. However, toggling the ABC, Abc and abc options means that the language model will only predict words of the correct form, i.e. if the capitalisation toggle key is set to Abc, the prediction engine will search for terms that follow this capitalisation scheme, e.g. ‘Jon’ ‘Ben’ ‘Cambridge’ etc.
It will be appreciated that this description is by way of example only; alterations and modifications may be made to the described embodiment without departing from the scope of the invention as defined in the claims.
Medlock, Benjamin William, Reynolds, Jonathan Paul
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
5467425, | Feb 26 1993 | Nuance Communications, Inc | Building scalable N-gram language models using maximum likelihood maximum entropy N-gram models |
5477451, | Jul 25 1991 | Nuance Communications, Inc | Method and system for natural language translation |
5612690, | Jun 03 1993 | Nuance Communications, Inc | Compact keypad system and method |
5671426, | Jun 22 1993 | Nuance Communications, Inc | Method for organizing incremental search dictionary |
5680511, | Jun 07 1995 | Nuance Communications, Inc | Systems and methods for word recognition |
5768603, | Jul 25 1991 | Nuance Communications, Inc | Method and system for natural language translation |
5797098, | Jul 19 1995 | CIRRUS LOGIC INC | User interface for cellular telephone |
5805832, | Jul 25 1991 | Nuance Communications, Inc | System for parametric text to text language translation |
5805911, | Feb 01 1995 | Microsoft Technology Licensing, LLC | Word prediction system |
5806021, | Sep 04 1996 | International Business Machines Corporation | Automatic segmentation of continuous text using statistical approaches |
5896321, | Nov 14 1997 | Microsoft Technology Licensing, LLC | Text completion system for a miniature computer |
5940847, | Jun 07 1995 | Microsoft Technology Licensing, LLC | System and method for automatically correcting multi-word data entry errors |
5952942, | Nov 21 1996 | Google Technology Holdings LLC | Method and device for input of text messages from a keypad |
5963671, | Nov 17 1991 | LENOVO SINGAPORE PTE LTD | Enhancement of soft keyboard operations using trigram prediction |
6009444, | Feb 24 1997 | Nuance Communications, Inc | Text input device and method |
6011554, | Jul 26 1995 | Nuance Communications, Inc | Reduced keyboard disambiguating system |
6047300, | May 15 1997 | Microsoft Technology Licensing, LLC | System and method for automatically correcting a misspelled word |
6052657, | Sep 09 1997 | Nuance Communications, Inc | Text segmentation and identification of topic using language models |
6054941, | May 27 1997 | Nuance Communications, Inc | Apparatus and method for inputting ideographic characters |
6104989, | Jul 29 1998 | Nuance Communications, Inc | Real time detection of topical changes and topic identification via likelihood based methods |
6125342, | Nov 18 1997 | Nuance Communications, Inc | Pronoun semantic analysis system and method |
6167377, | Mar 28 1997 | Nuance Communications, Inc | Speech recognition language models |
6182027, | Dec 24 1997 | Nuance Communications, Inc | Translation method and system |
6204848, | Apr 14 1999 | Nuance Communications, Inc | Data entry apparatus having a limited number of character keys and method |
6219632, | Nov 20 1997 | Nuance Communications, Inc | System for the facilitation of supporting multiple concurrent languages through the use of semantic knowledge representation |
6236958, | Jun 27 1997 | Nuance Communications, Inc | Method and system for extracting pairs of multilingual terminology from an aligned multilingual text |
6253169, | May 28 1998 | Nuance Communications, Inc | Method for improvement accuracy of decision tree based text categorization |
6275792, | May 05 1999 | Nuance Communications, Inc | Method and system for generating a minimal set of test phrases for testing a natural commands grammar |
6286064, | Jan 24 1997 | Nuance Communications, Inc | Reduced keyboard and method for simultaneous ambiguous and unambiguous text input |
6307548, | Sep 25 1997 | Nuance Communications, Inc | Reduced keyboard disambiguating system |
6307549, | Jul 26 1995 | Nuance Communications, Inc | Reduced keyboard disambiguating system |
6321192, | Oct 22 1998 | Nuance Communications, Inc | Adaptive learning method and system that matches keywords using a parsed keyword data structure having a hash index based on an unicode value |
6327561, | Jul 07 1999 | Nuance Communications, Inc | Customized tokenization of domain specific text via rules corresponding to a speech recognition vocabulary |
6362752, | Dec 23 1998 | Nuance Communications, Inc | Keypad with strokes assigned to key for ideographic text input |
6377965, | Nov 07 1997 | Microsoft Technology Licensing, LLC | Automatic word completion system for partially entered data |
6393399, | Sep 30 1998 | Nuance Communications, Inc | Compound word recognition |
6405060, | Jul 19 1995 | Cirrus Logic, Inc. | User interface with improved data entry features for telephone system |
6460015, | Dec 15 1998 | Nuance Communications, Inc | Method, system and computer program product for automatic character transliteration in a text string object |
6484136, | Oct 21 1999 | Nuance Communications, Inc | Language model adaptation via network of similar users |
6490549, | Mar 30 2000 | VANTAGE TECHNOLOGY HOLDINGS, LLC | Automatic orthographic transformation of a text stream |
6519557, | Jun 06 2000 | Nuance Communications, Inc | Software and method for recognizing similarity of documents written in different languages based on a quantitative measure of similarity |
6523134, | Sep 18 1998 | International Business Machines Corporation | Selective undo |
6573844, | Jan 18 2000 | Microsoft Technology Licensing, LLC | Predictive keyboard |
6583798, | Jul 21 2000 | Microsoft Technology Licensing, LLC | On-object user interface |
6618697, | May 14 1999 | Justsystem Corporation | Method for rule-based correction of spelling and grammar errors |
6625600, | Apr 12 2001 | Telelogue, Inc.; TELELOGUE, INC | Method and apparatus for automatically processing a user's communication |
6671670, | Jun 27 2001 | Telelogue, Inc. | System and method for pre-processing information used by an automated attendant |
6724936, | Aug 23 2000 | Cerence Operating Company | Handwriting input device and method using a single character set |
6778958, | Aug 30 1999 | IBM Corporation | Symbol insertion apparatus and method |
6813616, | Mar 07 2001 | Nuance Communications, Inc | System and method for building a semantic network capable of identifying word patterns in text |
6901364, | Sep 13 2001 | Panasonic Intellectual Property Corporation of America | Focused language models for improved speech input of structured documents |
6911608, | May 23 2002 | Cerence Operating Company | Keypads and key switches |
6917910, | Dec 27 1999 | Nuance Communications, Inc | Method, apparatus, computer system and storage medium for speech recognition |
6925433, | May 09 2001 | Nuance Communications, Inc | System and method for context-dependent probabilistic modeling of words and documents |
6963831, | Oct 25 2000 | Microsoft Technology Licensing, LLC | Including statistical NLU models within a statistical parser |
6965856, | Oct 29 1998 | Nuance Communications, Inc | Process for the automatic generation of a textual expression from a semantic representation using a computer system |
6993476, | Aug 26 1999 | Nuance Communications, Inc | System and method for incorporating semantic characteristics into the format-driven syntactic document transcoding framework |
7075520, | Dec 12 2001 | Cerence Operating Company | Key press disambiguation using a keypad of multidirectional keys |
7092870, | Sep 15 2000 | Nuance Communications, Inc | System and method for managing a textual archive using semantic units |
7098896, | Jan 16 2003 | Cerence Operating Company | System and method for continuous stroke word-based text input |
7129932, | Mar 26 2003 | AT&T Corp. | Keyboard for interacting on small devices |
7175438, | Mar 01 2002 | Nuance Communications, Inc | Fast typing system and method |
7187365, | Mar 31 2004 | Nuance Communications, Inc | Indic intermediate code and electronic device therefor |
7218249, | Jun 08 2004 | Siemens Aktiengesellschaft | Hand-held communication device having navigation key-based predictive text entry |
7222067, | Jan 09 2002 | Nuance Communications, Inc | Finite state dictionary and method of production thereof |
7251367, | Dec 20 2002 | Cerence Operating Company | System and method for recognizing word patterns based on a virtual keyboard layout |
7269546, | Feb 01 2002 | Microsoft Technology Licensing, LLC | System and method of finding documents related to other documents and of finding related words in response to a query to refine a search |
7286115, | May 26 2000 | Cerence Operating Company | Directional input system with automatic correction |
7366666, | Oct 01 2003 | Microsoft Technology Licensing, LLC | Relative delta computations for determining the meaning of language inputs |
7395081, | Sep 15 2003 | Nokia Corporation | Mobile telephone having a rotator input device |
7426505, | Mar 07 2001 | Nuance Communications, Inc | Method for identifying word patterns in text |
7453439, | Jan 16 2003 | Cerence Operating Company | System and method for continuous stroke word-based text input |
7475010, | Sep 03 2003 | PRJ HOLDING COMPANY, LLC | Adaptive and scalable method for resolving natural language ambiguities |
7487461, | May 04 2005 | Cerence Operating Company | System and method for issuing commands based on pen motions on a graphical keyboard |
7562016, | Oct 01 2003 | Nuance Communications, Inc | Relative delta computations for determining the meaning of language inputs |
7580829, | Jul 18 2002 | Cerence Operating Company | Apparatus and method for reordering of multiple language databases for text disambiguation |
7610189, | Oct 18 2001 | Nuance Communications, Inc | Method and apparatus for efficient segmentation of compound words using probabilistic breakpoint traversal |
7610191, | Oct 06 2004 | Nuance Communications, Inc | Method for fast semi-automatic semantic annotation |
7706616, | Feb 27 2004 | Cerence Operating Company | System and method for recognizing word patterns in a very large vocabulary based on a virtual keyboard layout |
7720682, | Dec 04 1998 | Cerence Operating Company | Method and apparatus utilizing voice input to resolve ambiguous manually entered text input |
7750891, | Apr 09 2003 | Cerence Operating Company | Selective input system based on tracking of motion parameters of an input device |
7809575, | Feb 27 2007 | Microsoft Technology Licensing, LLC | Enabling global grammars for a particular multimodal application |
7814088, | Mar 07 2001 | Nuance Communications, Inc | System for identifying word patterns in text |
7843427, | Sep 06 2006 | Apple Inc | Methods for determining a cursor position from a finger contact with a touch screen display |
7895518, | Apr 27 2007 | Nuance Communications, Inc | System and method for preview and selection of words |
7900142, | Jan 15 2007 | Microsoft Technology Licensing, LLC | Selective undo of editing operations performed on data objects |
7904298, | Nov 17 2006 | Predictive speech-to-text input | |
7912700, | Feb 08 2007 | Microsoft Technology Licensing, LLC | Context based word prediction |
7920132, | May 27 1999 | Cerence Operating Company | Virtual keyboard system with automatic correction |
7953692, | Dec 07 2007 | Microsoft Technology Licensing, LLC | Predicting candidates using information sources |
7996211, | Oct 06 2004 | Nuance Communications, Inc | Method and apparatus for fast semi-automatic semantic annotation |
8010343, | Dec 15 2005 | Microsoft Technology Licensing, LLC | Disambiguation systems and methods for use in generating grammars |
8032358, | Nov 28 2002 | Nuance Communications, Inc | Classifying text via topical analysis, for applications to speech recognition |
8036878, | May 18 2005 | VL IP HOLDINGS LLC; VL COLLECTIVE IP LLC | Device incorporating improved text input mechanism |
8073698, | Feb 27 2007 | Nuance Communications, Inc. | Enabling global grammars for a particular multimodal application |
8074172, | Jan 05 2007 | Apple Inc | Method, system, and graphical user interface for providing word recommendations |
8117144, | Dec 12 2008 | Nuance Communications, Inc | Generating predilection cohorts |
8136050, | Nov 21 2003 | Nuance Communications, Inc | Electronic device and user interface and input method therefor |
8200487, | Nov 21 2003 | Microsoft Technology Licensing, LLC | Text segmentation and label assignment with user interaction by means of topic specific language models and topic-specific label statistics |
8201109, | Mar 04 2008 | Apple Inc.; Apple Inc | Methods and graphical user interfaces for editing on a portable multifunction device |
8225203, | Feb 01 2007 | Cerence Operating Company | Spell-check for a keyboard system with automatic correction |
8232973, | Jan 09 2008 | Apple Inc | Method, device, and graphical user interface providing word recommendations for text input |
8289283, | Mar 04 2008 | Apple Inc | Language input interface on a device |
8299943, | May 22 2007 | Cerence Operating Company | Multiple predictions in a reduced keyboard disambiguating system |
8516367, | Sep 29 2009 | Verizon Patent and Licensing Inc. | Proximity weighted predictive key entry |
8601019, | Apr 03 2012 | GOOGLE LLC | Presenting autocomplete suggestions |
8605039, | Mar 06 2009 | AKTIEBOLAGET GRUNDSTENEN 147576 UNDER FORESLAGEN ANDRING TILL ZIMPL TECHNOLOGIES AB | Text input |
8713432, | Jun 11 2008 | Nokia Technologies Oy | Device and method incorporating an improved text input mechanism |
8756527, | Jan 18 2008 | RPX Corporation | Method, apparatus and computer program product for providing a word input mechanism |
8812972, | Sep 30 2009 | AT&T Intellectual Property I, L.P. | Dynamic generation of soft keyboards for mobile devices |
9189472, | Mar 30 2009 | Microsoft Technology Licensing, LLC | System and method for inputting text into small screen devices |
9424246, | Mar 30 2009 | Microsoft Technology Licensing, LLC | System and method for inputting text into electronic devices |
9529524, | Mar 04 2008 | Apple Inc. | Methods and graphical user interfaces for editing on a portable multifunction device |
9659002, | Mar 30 2009 | Microsoft Technology Licensing, LLC | System and method for inputting text into electronic devices |
20020045463, | |||
20020077808, | |||
20020091520, | |||
20020111806, | |||
20020126097, | |||
20020156627, | |||
20020188448, | |||
20020196163, | |||
20030011574, | |||
20030023420, | |||
20030046073, | |||
20030073451, | |||
20030093263, | |||
20030182279, | |||
20030234821, | |||
20040021691, | |||
20040021700, | |||
20040056844, | |||
20040083198, | |||
20040136564, | |||
20040153975, | |||
20040156562, | |||
20040201607, | |||
20040243393, | |||
20050017954, | |||
20050044495, | |||
20050060138, | |||
20050114770, | |||
20050162395, | |||
20050190970, | |||
20050200609, | |||
20050270270, | |||
20050283724, | |||
20060036428, | |||
20060047498, | |||
20060142997, | |||
20060206313, | |||
20060217144, | |||
20060247915, | |||
20060253793, | |||
20060265208, | |||
20060265648, | |||
20060274051, | |||
20060290535, | |||
20070016572, | |||
20070033002, | |||
20070046641, | |||
20070061753, | |||
20070074131, | |||
20070076862, | |||
20070088729, | |||
20070094024, | |||
20070155369, | |||
20070157122, | |||
20070247436, | |||
20080040099, | |||
20080076472, | |||
20080077406, | |||
20080091412, | |||
20080094356, | |||
20080120102, | |||
20080126075, | |||
20080162113, | |||
20080168366, | |||
20080189605, | |||
20080195374, | |||
20080195388, | |||
20080195571, | |||
20080281583, | |||
20080282154, | |||
20080285857, | |||
20080291059, | |||
20080294982, | |||
20080310723, | |||
20080312910, | |||
20090006101, | |||
20090009367, | |||
20090019002, | |||
20090058690, | |||
20090058813, | |||
20090106695, | |||
20090150322, | |||
20090174667, | |||
20090187846, | |||
20090193334, | |||
20090210214, | |||
20090225041, | |||
20090249198, | |||
20090271195, | |||
20090284471, | |||
20090313572, | |||
20100017393, | |||
20100031143, | |||
20100106740, | |||
20100121870, | |||
20100153880, | |||
20100153881, | |||
20100161318, | |||
20100171700, | |||
20100199176, | |||
20100218141, | |||
20100225599, | |||
20100283736, | |||
20110029862, | |||
20110047456, | |||
20110063231, | |||
20110074685, | |||
20110078563, | |||
20110078613, | |||
20110179032, | |||
20110197128, | |||
20110202836, | |||
20110291940, | |||
20110298719, | |||
20120010875, | |||
20120029910, | |||
20120167009, | |||
20120223889, | |||
20120296650, | |||
20140267045, | |||
20140297267, | |||
20150100537, | |||
20150186362, | |||
20150243279, | |||
20150317069, | |||
20150332672, | |||
20160077734, | |||
20160104482, | |||
20160328377, | |||
20170220552, | |||
CN101034390, | |||
CN101203849, | |||
CN101329614, | |||
CN101496036, | |||
CN1703664, | |||
EP872801, | |||
EP1724692, | |||
GB2443652, | |||
WO2014150104, | |||
WO2001050335, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Mar 26 2010 | MEDLOCK, BENJAMIN | TOUCHTYPE LIMITED | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 044882 | /0968 | |
Mar 26 2010 | REYNOLDS, JONATHAN | TOUCHTYPE LIMITED | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 044882 | /0968 | |
Aug 06 2014 | TOUCHTYPE LIMITED | (assignment on the face of the patent) | / | |||
Dec 11 2017 | TOUCHTYPE, INC | Microsoft Corporation | MERGER SEE DOCUMENT FOR DETAILS | 047259 | /0625 | |
Dec 11 2017 | TOUCHTYPE, INC | Microsoft Corporation | CORRECTIVE ASSIGNMENT TO CORRECT THE RECEIVING PARTY PREVIOUSLY RECORDED AT REEL: 047259 FRAME: 0625 ASSIGNOR S HEREBY CONFIRMS THE MERGER | 047909 | /0341 | |
Oct 02 2018 | Microsoft Corporation | Microsoft Technology Licensing, LLC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 047259 | /0974 | |
Oct 02 2018 | Microsoft Corporation | Microsoft Technology Licensing, LLC | CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNMENT FROM MICROSOFT CORPORATION TO MICROSOFT TECHNOLOGY LICENSING, LLC IS NOT RELEVANT TO THE ASSET PREVIOUSLY RECORDED ON REEL 047259 FRAME 0974 ASSIGNOR S HEREBY CONFIRMS THE THE CURRENT OWNER REMAINS TOUCHTYPE LIMITED | 047909 | /0353 |
Date | Maintenance Fee Events |
Date | Maintenance Schedule |
Aug 06 2022 | 4 years fee payment window open |
Feb 06 2023 | 6 months grace period start (w surcharge) |
Aug 06 2023 | patent expiry (for year 4) |
Aug 06 2025 | 2 years to revive unintentionally abandoned end. (for year 4) |
Aug 06 2026 | 8 years fee payment window open |
Feb 06 2027 | 6 months grace period start (w surcharge) |
Aug 06 2027 | patent expiry (for year 8) |
Aug 06 2029 | 2 years to revive unintentionally abandoned end. (for year 8) |
Aug 06 2030 | 12 years fee payment window open |
Feb 06 2031 | 6 months grace period start (w surcharge) |
Aug 06 2031 | patent expiry (for year 12) |
Aug 06 2033 | 2 years to revive unintentionally abandoned end. (for year 12) |