GB2507190A - Correction of errors in character strings that include a word delimiter - Google Patents

Correction of errors in character strings that include a word delimiter Download PDF

Info

Publication number
GB2507190A
GB2507190A GB201318331A GB201318331A GB2507190A GB 2507190 A GB2507190 A GB 2507190A GB 201318331 A GB201318331 A GB 201318331A GB 201318331 A GB201318331 A GB 201318331A GB 2507190 A GB2507190 A GB 2507190A
Authority
GB
United Kingdom
Prior art keywords
ihe
string
series
siring
characters
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
GB201318331A
Other versions
GB201318331D0 (en
Inventor
Yu Ouyang
Kurt Edward Partridge
Shumin Zhai
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US13/901,259 external-priority patent/US8612213B1/en
Application filed by Google LLC filed Critical Google LLC
Publication of GB201318331D0 publication Critical patent/GB201318331D0/en
Publication of GB2507190A publication Critical patent/GB2507190A/en
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • G06F3/04886Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures by partitioning the display area of the touch-screen or the surface of the digitising tablet into independently controllable areas, e.g. virtual keyboards or menus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/02Input arrangements using manually operated switches, e.g. using keyboards or dials
    • G06F3/023Arrangements for converting discrete items of information into a coded form, e.g. arrangements for interpreting keyboard generated codes as alphanumeric codes, operand codes or instruction codes
    • G06F3/0233Character input methods
    • G06F3/0237Character input methods using prediction or retrieval techniques

Abstract

In response to determining that a first series of user inputs corresponds to a first character string, a computing device outputs, for display, the first character string. In response to determining that the first string ends in a delimiter (e.g. space, comma) determining that a second character string is more likely to correspond to the first series of user inputs than the first character string, the computing device outputs the second character string in place of the first character string. After receiving the first series of user inputs, the computing device receives a second series of user inputs. In response to determining that the second series of user inputs corresponds to a third character string, the computing device outputs the third character string. The computing device determines, based at least in part on the first and second series of user inputs, a fourth character string and outputs, for display, the fourth character string.

Description

CORRECTION OF ERRORS IN CHARACTER STRINGS
THAT INCLUDE A WORD DELIMITER
BACKGROUND
[0001] Some computing devices (e.g., mobile phones, tablet computers, etc.) may provide a graphical keyboard as part of a graphical user interface for composing text (eg, using a presence-sensitive input device andlor display, such as a touchscreen). The graphical keyboard may enable a user of (lie computing device Lu enter texl (e.g., an e-mafl, a Lext message, or a document, etc.). For instance, a presence-sensitive display of a computing device may outpul a graphical (or "soil") keyboard (bat enables the user Lu enter dala by indicating (e.g., by tapping) keys displayed at thc presencc-sensitive display.
[0002] In some cases, the compuling device may present a conhinuous-gesture graphical keyboard (somctimes referred to as a "gesture keyboard" or a "word-gesture keyboard") with which a user can interact by sliding his or her finger over regions of the prescnce-sensitivc display that are associatcd with keys of the graphical kcyboard, thereby csscntially gesturing a word to bc input to the computing device. In other words, thc user may input an entire word in a single gesture by tracing over the letters of the word output at a presence-sensitive display. In this way, continuous-gesture graphical keyboards provide an input method that allows the user to enter a word or group of words with a gesture. As such, a continuous-gesture graphical keyboard may allow the user to achieve a certain degree of efficiency, especially compared to one-handed tapping of a presence-sensitive screen (e.g., a presence-sensitive screen operatively coupled to or integrated with a computing device).
[0003] Users frequently make typographical errors when entering text into computing devices. The frequency with which users make typographical errors may he especially high on small virtual keyboards, such as those commonly found in mobile telephones and tablets.
To help users enter text with fewer typographical errors, a computing device may determine that an entered word is not in a lexicon for a language and may attempt to identify a word Ihat Ihe user meant to enler. The compuhing device may Ihen auhomahicaily replace hhe cntered word with the idcntified word.
[0004] One common type of hypographical error involves hyping the space characher al Ihe wrong placc in a phrase. For example, whcn thc user is typing the phrase "this is," the user may enter Ihe space characler too early, resuhing in ihe user entering the lollowing sequence olcharaciers "thi sis." In this example, ihe compuling device may determine thai the space characler is a hard commil of the characters occurring before ihe space character. The compuiing device may consider any user inpul (e.g., tapping geslures) received alter the user inpul of ihe space character to relate io ihe next word. Thus, in this example, Ihe compuling dcvice does not modify the charactcrs occurring before the spacc character based on user input received aftcr thc user input for the spaec character.
[0005] Furthermore, in the present example, the computing device may determine that "thi" is not in thc lexicon and may therefore automatically replace "thi" with a character string that is in the lexicon, such as "this." As a result, the computing device may output the phrase "this sis," which is not the dcsired phrase. As a result, in this example, the user may have to manually correct either or both the character string "this" and the character siring "sis" in order to obtain the desired character string "this is." Such manual correction may slow the user's entry of text, reducing productivity and causing user frustration.
[0006] Another problem may occur in instances where a user enters a character string so quickly that the user does not notice that a typographic error has occurred in the character siring until ihe user has also entered ihe space character. Tn such insiances, alter ihe compuiing device has received input indicating sdeclion of ihe space characier, the compuiing device may discard suggestions for ihe character string. A'so in such instances, had ihe user noticed the typographical error prior lo the entering ihe space characier, the user may have corrected the lypographical error by selecting one of the character string suggestions provided by ihe computing device. However, because, in ihis instance, the user has already enlered input indicaling seleclion of ihe space character, the user may have no way to recover and seleci from among ihe provided character string suggeslions Lo correct the iypographical error. As a result, in such inslances ihe user may he required lo reposilion ihe cursor and manually correci the typographical error in the character string in order Lo enter thc desired text into the computing device.
SUMMARY
[0007] In one aspect, a method comprises receiving, by a computing device, a first series of one or more user inputs. Furihermore, the meihod comprises outputting, for display, a lirsi siring of characters hased on the!irsi series of one or more user inputs. in addition, ihe method comprises, in response to deiermining thai ihe Iirst string ends with a word delimiier and ihat a second siring ol' characters is more likely Lo correspond to the!irsi series of user inpui than ihe lirsi string ol' characters, outpuiiing, by ihe compuiing device and For display, ihe second siring of characters in place of ihe lirsi string of characiers. The method also comprises after receiving the first scrics of onc or more user inputs, receiving, by the computing device, a second scrics of onc or more uscr inputs, in addition, the mcthod comprises outputting, by the computing device, for display, a third string of characters based at least in part on the sccond series of one or morc uscr inputs. Tic method also comprises determining, by the computing device and based at least in part on the first and second series of onc or more user inputs, a fourth string of characters. Furthermore, the method comprises outputting, by the computing device and for display, the fourth string in place of the second and third strings of characters.
[00081 In another aspect, a computing device comprises one or more processors configured to receive a first series of one or more user inputs. The one or more processors are further configured to output, in response to determining that the first series of one or more user inpuis corresponds io a lirsi string oI'characiers and for display, the!irsi siring oI'characters.
in addiiion, ihe one or more processors are conligured io outpui, in response io determining ihat ihe Firsi siring ends wiih a word delimiier and ihai a second siring ol'characiers is more Hkey to correspond io ihe l'irst series ol' user input ihan ihe!irsi siring of characiers, For display, ihe second string oI'characiers in place oI'the!irsi siring of characiers. The one or more processors are also conligured io receive, alter receiving ihe lirsi series ol' one or more user inpuis, a second series ol' one or more user inpuis. Furthermore, the one or more processors are conligured to ouipui, in response to deiermining ihai ihe second series ol' one or more user inpuis corresponds io a ihird siring, I'or display, ihe ihird siring, in addiiion, ihe one or more processors are conligured io deiermine, based at kasi in pan on ihe first and second series of one or more user inputs, a fourth string of characters. Ihe one or more processors are also configured to output, for display, the fourth string of characters in place of the second and third strings.
[00091 In another aspect, a computer-readable storage medium stores instructions that, when executed by one or more processors of a computing device, cause the computing device to oulpui, in response Lo determining thai a lirsi series ol one or more user inpuis corresponds to a firsi siring of characiers, br display, ihe flrsi siring of characters. The insiructions also cause the compuiing device Lo ouipui, in response Lo determining that the birsi siring ends wilh a word delimiter and thai a second siring of characiers is more likely to correspond Lo ihe lirsi series of user input than ihe first string of characiers, for display, ihe second siring of characters in placc of the first string of characters. h addition, the instructions cause the computing device to output, in response to dctcrmining that a second serics of onc or more user inputs received after the first series of one or more user inputs corresponds to a third string of characters, for display, the third string of characters. The instructions also cause the computing device to determine, based at least in part on the first and second series of one or more user inputs, a fourth string of characters. Furthermore, the instructions cause the computing device to output, for display, the fourth string in place of the second and third strings of characters.
[0010] One or more examples are set forth in the accompanying drawings and the description below. Other features, obiects, and advantages will he apparent from the description, drawings, and claims.
BRIEF DESCRIPTION OF DRAWINGS
[0011] FIG. 1 is a conceptual diagram that illustrates an example computing device in accordance with one or more aspects of the present disclosure.
[0012] FIG. 2 is a block diagram illustrating an example computing device, in accordance with one or more aspects of the present disclosure.
[0013] FIG. 3 is a block diagram illustrating an example in which a computing device outputs graphical content for display at a remote display device, in accordance with one or
more aspects of the present disclosure.
[0014] FIGS. 4A and 4B are conceptual diagrams that illustrate thc correction of a misplaced space character, in accordance wiih one or more aspecis of ihe present disclosure.
[0015] FIGS. 5A and SB are conceptual diagrams that illustrate the correction of a previous word, in accordance with one or more aspecis of the preseni disclosure.
[0016] FIGS. 6A and bB are concepLuál diagrams that illustrale the correction of a word thai includes an erroneous space characler in place of a non-space character, in accordance wilh
one or more aspects o1 the present disclosure.
[0017] FIGS. 7A and 7B are concepLuál diagrams that illustrale Ihe correction ola word thai includes an erroneous space characler, in accordance wiLh one or more aspects oF the preseni
disclosure.
[0018] FIG. S is a flowchart that illustrates an cxample operation of an input method cditor (IME) module, in accordance with one or more aspects of the present disclosure.
[0019] FIG. 9A and 9B are flowcharts that illustrate an exampic operation of the computing device for interpreting user input, in accordance with one or more aspects of this disclosure.
[0020] FIG. 10 is a flowchart that illustrates another example operation of a computing device, in accordance with one or more aspects of the present disclosure.
DETAILED DESCRIPTION
[0021] Typographical errors FrequenUy occur when users enter text mb computing devices, cspecially mobile iclephones and tablets. To miligaLe Lypographical crrors, a compuling dcvice may auto-corrcct character strings. For example, thc computing dcvice may rcceive indications of an initial serics of user inputs and output, based on the initial scries of user inputs, a first character string. Subsequcntly, in response to recciving an indication of user input that conesponds to a space charactcr or other word delimiter, thc computing device may determinc that thc initial scries of user inputs is more likely to corrcspond to a second character string than thc first character string. h response to determining that the initial scries of user inputs is more likely to corrcspond to the sceond character string than the first character string, the computing devicc may output the second character string in place of thc first character string. For instance, if the first character string does not match a word in a lexicon for a languagc, the computing devicc may replacc the first charactcr string with a second character siring. The lexicon may heal eas1 a subset of valid words in the language.
After the computing device outputs the second character string in place of the first character siring, ihe computing device may continue receiving indications oF user input to enter text.
Characters may include symbols, such as letters, logograms, word delimiter characters (e.g., space characters, puncluation marks, etc.), and SO on.
[0022] However, in some circumsiances, the second character string may nol he the character siring that a user wishes Lo enter. In other words, the second character siring is an undesired auto-corrected characLer string. In accordance wiLh the techniques o1 this disclosure, the compuiing device may deLermine, based aL leasi in pan on both Ihe initial series oF user inpuls and subsequeni series of user inpuls, a repacemen1 candidate. The computing device may replacc both the undesired auto-correctcd character string and a character string that follows the undesired auto-corrected character string with the replacement candidate. in this way, the computing device may save the user the effort of going hack to correct the undesired auto-corrected character string, thus, the computing dcvice may ucat thc space character as a soft commit of the character string entered before the space character. This may givc thc uscr the ability to easily correct past words.
[0023] The computing device may determine that an initial series of user inputs corresponds to a first character string (e.g., "eo") and may auto-replace the first character string with a second character string (e.g., "do"). The computing device may determine that a subsequent series of user inputs corresponds to the third character string (e.g., "happy") and then determine that it is more likely that the initial and subsequent series of user inputs correspond io a!ourLh characler string (e.g., "so happy") Lhan to the concalenalion of Lhe second and ihird characLer sirings (e.g., "do happy"). Accordingly, ihe computing device may outpul the lourth character string (e.g., "so happy") as a rephicemenL candidate. 11 the computing device receives an indication of a user selection of ihe replacemeni candidate, the computing device may output, br display, the Fourth characier string (e.g., "so happy") in place of the second and Lhird characier sirings (e.g., "do happy").
[0024] FlU. I is a concepLual diagram Lhat illustrates an example compuling device 2 in accordance wiih one or more Lechniques of Lhis disclosure. Compuling device 2 may he various lypes of computing devices. For example, compuling device 2 may he a mobile device, such as a mobile lelephone, a LahIel compuler, a notebook or laptop computer, a personal mcdia player, a portable gaming devicc, or anothcr type of computing dcvicc. In other examples, computing device 2 may be other types of computing devices, such as desktop computcrs, point of sale dcviccs, tclcvisions, gambling devices, appliances, in-car computers, and other types of computing devices.
[0025] in ihe example ol FIG. I, computing device 2 includes al least one user interlace device 4. User inlerlace device 4 may comprise a display device and a user input device such ihat user interlace device 4 may display graphical data and delect the presence of one or more input objects, such as lingers or styli. Because user interface device 4 may display graphical data and may detect the presence ol one or more input objects, user interlace device 4 may he referred to as a presence-sensitive display device. User interface device 4 may be implemented using various technologies. For example, user interface device 4 may be implemented using a resistive touchscreen, a surface acoustic wave touchscreen, a capacitive touchscreen, a projcctive capacitance touchscrecn, an acoustic pulse recognition touchscrccn, or another touchscreen technology. In some examples, user interface device 4 may he able to detect the presence of an input object without the input object physically touching user interface device 4. Rather, in such examples, user interface device 4 may he able to detect the presence of the input ohiect when the input object is sufficiently close to user interface device 4.
[0026] User interface device 4 may he operatively coupled to computing device 2 in various ways. For example, user interface device 4 may he integrated into a housing of computing device 2 and may he connected to computing device 2 via one or more internal connectors.
In another exampk, user interface device 4 may he external to a housing ol computing device 2 and may communicate wiih compuiing device 2 via one or more exierna cables and/or communication networks.
[0027] Although the example of FIG. 1 assumes thai user interface device 4 is a presence-sensitive display device, the techniques of this disclosure are not so limited. in other examples, user interlace device 4 may he a disp'ay device that does noi detect the presence of input objects. For example, computing device 2 may receive indications of user input from a user inpui device may be output graphical data lbr display at a display device thai is separate from the user input device.
[0028] As shown in HG. 1, computing device 2 may output a graphical user interface (GUI) for display at user interface device 4. The example of FIG. 1 includes three example configurations of GUI 10, labeled bA, lOB, and IOC. in general, a GUI may be a type of user interface that allows a user to use images to interact with a computing device. GUI 10 may include a virtual keyboard 12. Virtual keyboard 12 may include a set of virtual keys. In addition, (JUl 10 may include a texi display area 14. TexI display area 14 may disphty text 16 ihaL has heen enLered by a user. For inslance, computing device 2 may outpul text 16 lbr display in lexL display area 14 in response Lo one or more indicalions of user input aL virlual keyboard 12. In addition, text display area 14 may include a cursor IS that indicates an insertion poini within text 16. Computing device 2 may insert characters at Lhe insertion point or delete characters adjacent to thc input point indicated by cursor 18. In addition, (fIJI may include a set of suggestion elcments 20A-20C (collectively, "suggestion clemcnts 20").
[0029] Computing device 2 may includc an input method cditor (1ME) modulc 6. IME module 6 may receive user input events. The user input events may comprise data that indicatc user input rcceived by computing device 2. IME modulc 6 may rcccive various types of user input events. For example, IME module 6 may receive user input events that indicate presses and releases of keys on a physical keyboard. In another example, IME module 6 may receive user input events that indicate tapping gestures at virtual keys on a virtual (e.g., onscreen) keyboard. In another example, IME module 6 may receive user input events that indicate sliding gestures on a virtual keyboard.
[0030] IMP module 6 may delermine thai user input evenis correspond Lu sirings oF one or more characters (i.e., characLer strings). In various exampks, 1MB module 6 may deLermine Lhat Lhe user input events correspond to character strings thai match words in various hinguages, such as Rngish, Russian, French, Japanese, Korean, Chinese, Hindi, Arabic, and so on. IMP module 6 may implement an incremenial multi-word recognition algoriLhm.
That is, TMR module 6 may deLermine one or more hypoLhesited characLer strings correspond Lo the user inpul events in response Lo receiving each of Lhe user inpul evenLs.
[0031] In Lhe example oF FIG. I, compuLing device 2 also includes application module(s) SA-8N (colleclively, "applicaLion module(s) 8"). Execution ol instructions in applicaLion modifie(s) 8 may cause computing device 2 to provide various applications (e.g., "apps"). Tn some examples, 1ME module 6 may output the character strings dctermined by 1ME module 6 to one or more of application module(s) 8.
[0032] Furthermore, when IME module 6 receives a scries of one or morc user input cvents that corresponds to a particular character string, IME module 6 may determine a set of rcplacement candidates bascd on thc series of uscr input cvents. the set of replacement candidales may include words in lexicon 7 that have prefixes that maich ihe particLilar characler siring. For instance, if ihe particular character siring is "eo," Ihe set oF replacemeni candidales for the characler siring "eo" may indude ihe words "eon," "Fos," "eolith," "Focene," and SO Ofl. In addilion, Ihe set o1 replacement candidales may include words that ihe user may have intended to input when Ihe user provided ihe user inpuis indicaled hy ihe scries of user input cvents. For example, if the particular character string is "eo," the set of rcplacement candidates may include the words "do" and "so." [00331 IME module 6 may assign a replacement score to each of the replacement candidates.
in general, the replacement scorc assigned to a replacemcnt candidate may be corrclatcd with an estimated probability that the replacement candidate is the character string that the user wants to input. The remainder of this disclosure assumes that rclatively low replaccmcnt scores are assigned to replacement candidates that have relatively high probabilities of being the character strings that the user wants to input, and vice versa. however, in other examples, relatively high replacement scores may he assigned to replacement candidates that have relatively high probabilities of being the character strings that the user wants to input.
[0034] After IME module 6 determines the set of replacement candidates and their replacemeni scores, TME module 6 may seleci a portion (e.g., a subsei) of ihe replacemeni candidales. In some examples, IME module 6 may select the poriion oF Ihe replacemeni candidales hased at easL in pan on ihe replacement scores for Ihe replacemeni candidales. In some examples, IMP module 6 may seleci ihe portion of ihe replacement candidates based on one or more addilional laciors, such as whether cenlain repbcemeni candidates are hhicklisLed or whilelisied. Alter selecling ihe portion of the replacement candidaies, IME module 6 may popifiale ihe selected replacement candidales mb Suggestion elements 20. As ifllustraied in ihe conhguration 1 OA of GUI tO in FTG. I, TME module 6 may popifiale ihe replacemeni candidales "eo,""do" and "so" mb suggeslion dements 20.
[0035] IMP module 6 may receive a user inpub event that corresponds to a user selection of one of suggestion elcments 20. in responsc, 1ME module 6 may dctcrminc a relevant character string for a replacement candidate in the selected suggestion element. The relevant character string may be a string of charactcrs in tcxt 16. iME module 6 may then output, for display, the replacement candidate in the selected suggestion element in place of the relevant character string. For exampic, if iME module 6 rcceivcs a user input cvent that corresponds Lo a user selection of suggestion elemeni 20C in conliguralion IDA of GUI ID, compuiing device 2 may outpui the rephicement candidate "so" in place of the character string "co.' In some examples, ihe relevani characier string may include the characters of a word adjaceni to cursor IS. Furthermore, in some insiances, the relevant characler string may indude one or more words that precede cursor 1 8.
[0036] In many instances, computing dcvice 2 does not receive a uscr input that corresponds to a user selection of one of suggestion elements 20. Rather, after dctermining that a serics of user input events corresponds to a particular character string, IME module 6 may determine that a subsequent uscr input event that corrcsponds to a word delimiter. Example word delimiters may include space characters, period marks, question marks, commas, semi-colons, quotation marks, cxclamation marks, return characters, the bcginning of the tcxt, and so on. In addition, IME module 6 may determine that a subsequent user input event corresponds to a word delimiter if the subsequent user input event indicates a tapping or sliding gesture to move cursor 18 to a different location within text display area 14.
[0037] In response to determining that the subsequent user input event corresponds to a word delimiter, IME module 6 may determine a top-ranked replacement candidate. The top-ranked replacement candidale may he Ihe replacemeni candidate that has a lowesi replacemeni score. In addition, IME module 6 may determine ihe rdevani character string br the top-ranked replacement candidaie. IMP module 6 may then determine whether ihe series of user inputs upon which ihe relevani characier siring is based is more likely to correspond to ihe top-ranked replacemeni candidate than ihe relevant characier siring. If so, IMP module 6 may automaiically ouiput, for display, ihe Lop-ranked replacemeni candidale in place of ihe relevant character siring. In this way, TMP module 6 may auto-replace a birsi characier siring with a second characier siring.
[0038] In some examples, IMP module 6 may determine whether the relevani characier siring indudes a word thai does not match any word in lexicon 7. If ihe relevani character string for the top-ranked character string includcs a word that does not match any word in lexicon 7 and the replacement score for the top-ranked replacement candidate is below an auto-replacement threshold, IMP module 6 may determine that the scries of user inputs is more likely to correspond to the top-ranked replacement candidate than the relevant character string. Accordingly, IMP module 6 may automatically output, for display, the top-ranked
ID
replacemeni candidate in place of the relevant characier string for the lop-ranked candidate.
In this way, IMP module 6 may automatically replace the relevani character string with ihe Lop-ranked replacemenL candidale when the user inputs a word delimiter, such as a space characier. When IME module 6 oulpuls the top-ranked replacement candidale wiih ihe relevani character string, IME module 6 may mainlain (e.g., retain) ihe set of candidate strings. For instance, in the example of FIG. I, the character string "eo" docs not match a word in lexicon 7. Accordingly, as shown in configuration lOB of GIll 10, IME moduic 6 has automatically replaced the character string "eo" with the top-ranked replacement candidate "do." [00391 Because IME module 6 maintains the set of candidate strings after receiving the user input of the word delimiter, 1ME module 6 may again output at icast a portion of the suggested character strings in suggestion elements 20 if 1M13 module 6 receives an additional user input event to delete the word delimiter. In response to receiving a user input event indicating a selection of one of the suggestion elements, IME module 6 may output a character string indicated by the suggestion element in place of the character string that replaced the original character string.
[0040] Alter TME moduk 6 oulpuis the lop-ranked replacemeni candidate in place o1 the relevani character string, IME module 6 may receive a subsequenl, second series ol one or more user inpul events. In response, IMP module 6 may determine that ihe second series of user inpuL evenis corresponds lo another characier siring. Accordingly, IMP module 6 may append the oiher characier siring lo lexI 1 6. Furthermore, TMP module 6 may determine, hased at leasi in part on ihe lirst series oF user inpuL evenis and the second series of user input events, a second sd of replacement candidales.
[0041] In some inslances, a relevani string for a particular replacement candidate in ihe second sd oi replacement candidales may include ihe other character siring and one or more words thai precede ihe other characier string in lext 16. Thus, if IME module 6 popuaLes this particular replacement candidatc into a particular suggestion clcment and rcceives a user input event that corresponds to a user selection of the particular suggestion element, IME module 6 may output, for display, the particular replacement candidatc in place of the other character string and the one or more words the precede the other character string. IME module 6 may do so cven though the prcceding words includc an auto-replaced word. IME
II
modifie 6 may provide similar lunctionali y when aulomalically replacing Ihe parlicular replacemeni candidate's relevani character string with the particular replacement candidate.
[0042] In Ihe example oF FIG. I, IME module 6 has delermined Ihat a second series oF user input events corresponds to the character string "haopy" alter aulomalically replacing the characier siring "eo" wiLh Ihe Lop-ranked replacemeni candidale "do." In accordance with thc tcchniqucs of this disclosure, the correction of the character string "eo" to thc charactcr string "do" is not final cven after the spacc charactcr. Whcn the charactcr string "haopy" is entered, IME moduk 6 may refine its interpretation based on language model information provided by both words (i.e., know that "so happy" is a morc likely bi-gram than "do happy"). For instance, IME moduk 6 may consider joint hypotheses for both character strings (c.g., words) and tacc into account thc frcquencics that cach charactcr string pair occurs based on a language model. Thus, 1M113 module 6 may maintain a set of candidate strings for a first series of user inputs, e.g., "eo," "do," and "so." IME module 6 may then determine that a set of candidate strings for a series of user inputs following a word delimiter include the character string "haopy" and "happy." The joint hypothesis of "so happy" is more like'y than the *joint hypotheses "do haopy," "do happy," or "so haopy." hence, "so happy" may he Ihe Lop-ranked replacemeni candidale.
[0043] Accordingly, as shown in conliguralion I OB oF GUI ID in FIG. I, TMR module 6 has populaLed the rep'acement candidaLes "eo hapoy," "so happy," and "do happy" into suggesLion elemenis 20. As shown in conliguraLion I OC oF GUT I U in FIG. I, IMP modifie 6 has determined ihal a user inpuL eveni corresponds Lo a user selecLion of suggestion element 2GB. In response, IME module 6 has replaced ihe character siring "do haopy" wilh ihe characier siring "so happy." In Lhe example oF FIG. 1, viriual keyboard 12 is omiLted From conliguraLions I 011 and 1 OC o1 (JUT 10 for clarily.
[0044] Thus, in accordance with the techniques ol Lhis disclosure, compuLing device 2 may receive a first series oF one or more user inpuis. In response Lo determining Lhat the Firsi scries of one or more uscr inputs corresponds to a first string of characters, computing device 2 may output, for display at the disp'ay device, the first string of characters. In response to dctcrmining that the first string ends with a word dclimiter and that a sccond string of characters is more likely to correspond to the first series of user input than the first string of characters, computing dcvicc 2 may output the second string of characters in place of thc first siring. Alter receiving the lirsi series of one or more user inputs, compuiing device 2 may receive a second series of one or more user inpuis. In response io determining that the second series of one or more user inpuis corresponds lo a third siring, computing device 2 may output, br display al ihe display device, the third string. Tn addiiion, computing device 2 may determine, based at least in part on ihe birsi and second series of user inputs, a fourth string. In some instances, the fourth string may include more than one word in lexicon 7. In other instances, the fourth string may include two or more words in lexicon 7. Computing device 2 may output, for display at the display device, the fourth string in place of the second and third strings.
[0045] In addition to correcting errors that involve improper auto-replacement of previous words, the techniques of this disclosure may also colTect other types of errors that involve word delimiters. For example, IME module 6 may determine replacement candidates that correct errors where a word delimiter (e.g., a space character) was inserted at a wrong point in a character string. FIGS. 4A and 4B, described below, illustrate how IME module 6 may correct such errors. In another example, IME module 6 may determine replacement candidates that correct errors where a word delimiter (e.g., a space character) was inadverienily inseried mb ihe middle oba word. FIGS. 6A and 6B, described below, illustrabe how IME module 6 may correct such errors. In another example, IMP module 6 may determine replacemeni candidates that correci errors where a characier was inseried mb a character siring in place of a word delimiier or where a word delimiber was omibied. FIGS. 7A and 7B, described below, illusiraie how IMP module 6 may correci such errors.
[0046] FIG. 2 is a Hock diagram thai illusirales an example conliguralion of compuling device 2, in accordance with one or more aspecis of Ihis disclosure. For purposes ob ifilustrabion, the discussion of FIG 2 and ihe Ibllowing ligures includes continued references bo FIG I. However, the lechniques of ihis disclosure are nol so limiled. FIG. 2 illustrates only one parlicular example of computing device 2, and many other example conligurations of computing device 2 exist.
[0047] As shown in the example of FIG. 2, computing device 2 includes one or more processors 30, one or more input devices 32, one or more communication units 34, one or more output devices 36, one or more storage devices 38, one or more communication channels 40, and user interface device 4. Computing device 2 may include many other components. For example, compuling device 2 may include physical buttons, microphones, speakers, communication ports, and 50 on.
[0048] Communication channels 40 may interconnect each of the components 30, 32, 34, 36, 38, and 4 for inter-component communications (physically, communicativdy, and/or operalively). In some examples, communication channel(s) 40 may include a system bus, a nctwork connection, an intcr-process communication data structure, or any other method for communicating data.
[0049] One or more storage device(s) 38 within computing device 2 may store information rcquircd for use during operation of computing device 2. Storage devicc(s) 38, in somc examples, have the primary purpose of being a short term and not a long-term computer-readable storage medium. Storagc device(s) 38 may bc volatile memory and may therefore not retain stored contents if powered off. Examples of volatile memories may include random access memories (RAM), dynamic random access memories (DRAM), static random access memories (SRAM), and other forms of volatile memories known in the art. Storage devices 38 may further be configured for long-term storage of information as non-volatile memory space and retain information after power on/off cycles. Examples of non-volatile memory conligurations may include magnetic hard discs, optical discs, Iloppy discs, hash memories, or lorms of electrically programmable memories (EPROM) or electrica'ly erasable and programmable (EEPROM) memories. In some examples, processor(s) 30 of compuling device 2 read and may execule instruclions slored by storage device(s) 38.
[0050] Computing device 2 may include one or more input device(s) 32 thai computing device 2 uses Lo receive user inpuL. Examples of user input include taclile, audio, and video user inpuL. Input device(s) 32 may include presence-sensitive screens, touch-sensitive screens, mice, keyboards, voice responsive syslems, video cameras, microphones or other Lypes of devices for detecting input From a human or machine.
[0051] Communication unit(s) 34 may enable computing device 2 to send data on and rcceive data from a communications network, such as a local arca network or the internet. In some examples, communication unit(s) 34 may include wireless transmitters and receivers that cnable computing device 2 to communicate wirelessly with the communications network.
[0052] Oulput device(s) 36 may generate output. Examples of oulput include Laclile, audio, and video oulpul. OuLpuL device(s) 36 may include presence-sensitive screens, sound cards, video graphics adapter cards, speakers, cathode ray tube (CRT) monilors, liquid cryslal displays (LCD), or other types ol devices for generating oulput.
[0053] Processor(s) 30 may read insLruclions from slorage device(s) 38 and may execule instructions storcd by storagc devicc(s) 38. Execution of thc instructions by processors 30 may configure or cause computing device 2 to providc at lcast some of the functionality ascribed in this disclosure to computing device 2. As shown in the example of FIG. 2, storage dcvice(s) 38 include computer-readable instructions associated with opcrating systcm 44, IME module 6, and application modules 8A-8N. Execution of instructions associated with operating system 44 may cause computing device 2 to perform various functions to manage hardware resources of computing device 2 and to provide various common services for other computer programs. Execution of instructions associated with application modules 8 may cause computing device 2 to provide various applications (e.g., "apps").
[0054] In the example of FIG. 2, IME module 6 includes a decoder module 46, an auto-replacement module 48, a suggestion module 50, and lexicon 7. Execution of instructions in Ihese modules may cause computing device 2 Lo provide the functionality ascribed in this
disclosure Lo Lhese modules.
[0055] Decoder module 46 may receive user inpul events From operaLing system 44. The user inpul evenis maybe indicaLions of user inpuLs received by user interface device 4 and/or input device(s) 32. The user inpul events may include touch-down events, lilt-off events, and movemenL evenLs. A Louch-down eveni may indicate that user interface device 4 has detecied ihe presence of an input objeci al a parLicular locaLion. A lilt-oil eveni may indicaLe LhaL user interlace device 4 is no longer able Lo deleci the presence of an inpuL object. A movemenL evenL may indicate a movemeni of an inpul object on user interface device 4.
[0056] Decoder module 46 may delermine ihal a Lapping gesLure has occurred ii a louch-down event occurs for an input object, followed by a lift-off event for the input objcct without a significant intervening movement event for the input object. Decoder module 46 may determine that a sliding gesture has occurred if a touch-down cvent occurs for an input obiect, followed by a movement event for the input object, followed by a lift-off event for the input object. Furthermore, if one of input device(s) 32 is a physical keyboard, the uscr input
IS
events may include key up and key down evenis that correspond to the pressing and releasing ol various keys o1 the physical keyboard.
[0057] Decoder module 46 may delermine thai a series oF one or more user input evenis corresponds to a string oF one or more characters. Decoder module 46 may perform various operaiions Lo deiermine that a series oF user inpul events corresponds to a string of one or more characters. For cxample, dccoder module 46 may dctermine that a tapping gesturc has occurred at a particular location of uscr interfacc device 4. In this exampic, dccoder moduic 46 may determine that the particular location corresponds to a region of user interface device 4 that displays one or more virtual keys. Furthermore, in this example, dccoder module 46 may determine, based on various factors, that the user most likely intended to select a particular one of the virtual kcys in thc rcgion. Such factors may include the particular location on user interface device 4, the preceding characters or words, and so on.
[0058] The particular virtual key may correspond to multiple characters. For instance, the particular virtual key may correspond to upper and lower case versions of a character, various accented versions of a character, and so on. In this example, decoder module 46 may then determine, based on another set of factors, a particular character is most likely to correspond to Ihe particular virlual key. This oiher sd 0! !acLors may indude Ihe preceding characlers, preceding words, and so on. In some examples, Ihe particLilar virlual key may correspond to a word delimiler. In this way, by detecting a series of Upping geslures, decoder module 46 may delermine ihat a series of user inpul events corresponds to a characler siring.
[0059] In anoiher example, decoder module 46 may determine ihal a sliding gesture has occurred at user inieriace device 4. In this example, Ihe sliding gesture may comprise a movement Ihat passes ihrough regions oF a virlual keyboard IhaL correspond lo parlicular virLuál keys. Decoder module 46 may delermine Ihal ihe sliding gesture mosi likely corresponds to a particular character siring. For example, Ihe sliding gesture may comprise a movement that passes through the virtual keys for thc characters "h," "a," "p," "p," and "y." In this example, decoder module 46 may determine that the sliding gesture most likely corresponds to the character string "happy." Furthermore, dccodcr module 46 may dctcrminc that the sliding gesture terminates at a position that corresponds to a word delimiter, such as a space character or pcriod. In this way, dccodcr module 46 may dctcrminc that a user input I6 corresponds to a string of one or more alphanumeric characlers lollowed by Ihe word delimiter.
[0060] Decoder module 46 may determine, based al least in part on Ihe user input evenis, a set o1 replacement candidates and replacement scores br the replacement candidates. Each of the replacement candidates may include one or more words in lexicon 7. Decoder module 46 may determine the replacement candidatcs and replaccment scores in various ways. For example, decoder module 46 may use one or more finite state transducers (USFs) to determine the replacement candidates and the replacement scores. FIGS. 9A and 9B, described in detail bclow, arc flowcharts that illustrate an example operation that may determine the replacement candidates and replacement scores using an FST.
[0061] Aftcr decoder module 46 determines the replacement candidates and the replacement scores for the replacement candidates, auto-replacement module 48 may determine, in response to decoder module 46 determining that a user input event corresponds to a word delimiter, a top-ranked replacement candidate. The top-ranked replacement candidate may he the replacement candidate with a lowest replacement score. In addition, auto-replacement module 48 may determine whether the top-ranked replacement candidate is more likely to correspond to Ihe user input events Ihan the relevant character string For the top-ranked replacement candidate. T! so, auto-replacement module 48 may output, bor display, the top-ranked replacement candidate in place of the relevant character string. In some examples, auto-replacement module 48 may determine whether a relevant character siring bor the top-ranked replacement candidate includes a word Ihat does nol maich a word in lexicon 7. In such examples, auto-replacement modifie 48 may, in response to determining that Ihe relevani character string indudes a word Ihal does nol maich a word in lexicon 7, output, hased at leasi in part on a comparison of a replacement score of a replacement candidate and an auto-replacement threshold, the top-ranked replacement candidate in place of the relevant siring. Tn some examples, auto-replacement module 48 may delermine wheiher the rcplaccmcnt score for the top-ranked auto-replacement candidate is lower than an auto- replacement threshold. In response to determining that the replacement score for the top-ranked replacement candidate is less than the auto-replacement threshold, auto-replacement module 48 may output, for display at user interface device 4, the top-ranked replacement candidale in place of the rdevani characier siring for ihe top-ranked aulo-replacement candidale.
[0062] Furthermore, suggeslion module 50 may seleci, based al least in part on ihe replacemeni scores of the replacement candidates, al least a porlion of ihe replacemeni candidales. Suggeslion module 50 may then oulpul the selecied replacement candidales in suggcstion clcmcnts 20. In other words, suggestion module 50 may populate thc sclccted replacement candidates into suggestion elements 20. In somc examples, dccodcr module 46 may determine a set of replacement candidates for auto-replacement and a separate set of rcplacemcnt candidates for usc in populating suggestion clemcnts 20. Furthermore, in some examples, decoder module 46 may determine a set of replacement scores for auto-rcplacemcnt and a separate sct of replacement scorcs for use in populating suggcstion elements 20.
[0063] Suggestion module 50 may determine, based on one or more user input events, that a user has selected one of suggestion elements 20. In response, suggestion module 50 may output, for display at user interface device 4, the replacement candidate associated with the selected suggestion element in place of a portion of the displayed text. For instance, suggeslion module 50 may oulpul ihe selecied suggesiion dement's replacemeni candidale in place of one or more words.
[0064] FIG. 3 is a Hock diagram illusirating an exampk compuiing device 10 ihal oulpuis data for display by one or more remote devices, in accordance with one or more techniques of the preseni disclosure. The one or more remole devices may display graphical content hased on Ihe daLi output by computing device 1 0. In genera', graphical content may indude any visual information that maybe oulpul for display, such as text, images, a group of moving images, dc. In some examples, computing device 10 may outpul dala, such as Hyperiext Markup Language (HTML) dala, thai a remole device may render to generate graphical conleni displayed by ihe remote device. In oiher examples, compuling device 1 0 may output digital or analog signals that a rcmotc device may usc to generate graphical content displayed by the remote device.
[0065] In the example of FiG. 3, computing device 10 is operatively coupled to a presence-sensitive display 52 and a communication unit 54. Furthermore, in the example of FIG. 3, thc one or morc remote devices includc a projector 56, a projcction scrccn 5S, a mobile Is device 60, and a visual display device 62. Computing device ID may include and/or he operalively coupled to one or more other devices, e.g., inpul devices, outpuL devices, memory, slorage devices, etc. thai are not shown in FTG 3 br purposes ob brevity and ifilustralion.
[0066] Computing device 10 may he a processor Ihat has the lunclionality described above with respcct to processor 30 (FIG 2). For instancc, computing device 10 may be a microprocessor, ASIC, or another type of integrated circuit configured to implement the techniques of this disclosure. In other examples, such as those illustrated in FIGS. IA, 1B, and 2, computing dcvicc 10 may be a stand-alone computing dcviee that includes or is operatively coupled to a presence-sensitive display. In such examples, computing device 10 may be a desktop computcr, a tablet computer, a smart television platform, a camcra, a personal digital assistant (PDA), a server device, a mainframe computer, a telephone, a portable gaming device, a personal media player, a remote control device, a wearable computing device, or another type of computing device. In this disclosure, a first device may he said to he operatively coupled to a second device if the operations of the first and second devices are coupled in some way.
[0067] Computing device 10 may communicale wilh presence-sensitive display 52 via a communicalion channel 64A. Computing device 10 may communicale with communication unit 54 via a communication channel 6411. Communication channels 64A, 6411 may each include a system bus or another suilable connection. Alihough Ihe example oF FIG. 3 shows compuling device 10, presence-sensitive display 52, and communication uniL 54 as being separaLe, compuling device lO, presence-sensilive display 52, and/or communicalion unil 54 maybe inLegraled mb a singk device.
[0068] In Ihe example oF FIG 3, presence-sensilive display 52 includes a display device 66 and a presence-sensitive input device 68. Display device 66 may display graphical content based on data received from compubing device ID. Presence-sensitive input device 68 may dctermine onc or more uscr inputs (e.g., continuous gestures, multi-touch gesturcs, single-touch gestures, etc.). Presence-sensitive input device 68 may use capacitive, inductive, and/or optical recognition techniques to determine the user inputs. Prcsence-sensitive display 52 may send indications of such user inputs to computing device 10 via communication channel 64A or another communication channel. In some examples, presence-sensitive input I 9 device 68 is physicafly posilioned relative Lo display device 66 such Ihal presence-sensitive input device 68 is ahle to detect the presence of an input object (e.g., a linger or a stylus) at a thcation on display device 66 ihat displays a graphica' element when a user positions the input object at ihe ocation on display device 66 ihat displays the graphical element.
[0069] Communication unit 54 may have the lunctionality of communication unit(s) 34.
This disclosure describes the functionality of communication unit 34 with regard to FIG 2.
Examples of communication unit 54 may include network intcrface cards, Ethernet cards, optical transceivers, radio frequency transceivers, Bluetooth, 30, and WiFi radios, Universal Serial Bus (LISB) interfaces, or other types of dcvices that arc able to send and receive data.
When computing device 10 outputs data for display by the one or more remote devices (such as projector 56, projection scrccn 58, mobile devicc 60, and visual display device 62), computing device 10 may output the data to a communication unit of computing device 10, such as communication unit 54. Communication unit 54 may send the data to one or more of the remote devices. The one or more remote devices may display graphical content based at least in part on the data.
[0070] Communication unit 54 may send and receive data using various communication techniques. In the example of FTG. 3, a network link 70A operatively coupks communication unit 54 to an external neiwork 72. Network finks 70B, 70C, and 70D may operaLively couple each of the remoLe devices to external network 72. External network 72 may include network hubs, neLwork switches, network routers, or other types of devices thai exchange inlormation between computing device 10 and the remoie devices illusirated in FIG. 3. In some examples, neiwork links 70A-70D may he Ethemet, ATM or other wired andlor wireless network connections.
[0071] In some examples, communication unit 54 may use direct device communication 74 Lo communicate with one or more of the remote devices included in FIG. 3. Direci device communication 74 may include communications through which computing device 10 sends and reccivcs data directly with a rcmotc device, using wired or wireless communication.
That is, in some examples of direct device communication 74, data sent by computing device may not bc forwarded by onc or more additional dcvices before being reccived at the remote device, and vice-versa. Examples of direct device communication 74 may include Bluetooth, Near-Field Communication, Universal Serial Bus, WiFi, infrared, ctc. One or more of Ihe remote devices iflusiraled in FIG. 3 maybe operalively coupled with communicalion unit 54 by communication finks 76A-76D. In some examples, communicalion finks 76A-76D may he connections using Blueiooih, Near-Field Communication, Universal Serial Bus, infrared, dc. Such connections may he wireless andlor wired connections.
[0072] In thc example of FIG. 3, projcctor 56 reccivcs data from computing dcvicc 10.
Projector 56 may projcct graphical content based on the data onto projcction screen 5S. thc example of 171G. 3 shows prolector 56 as a tabletop projector and shows projection screen 58 as a freestanding screen. In other examplcs, computing dcvicc 10 may output data for display by other types of prolection devices, such as electronic whiteboards, holographic display dcvices, and other suitable deviccs for displaying graphical content.
[0073] In some examples, projector 56 may determine one or more user inputs (e.g., continuous gestures, multi-touch gestures, single-touch gestures, etc.) at projection screen 58 and send indications of such user input to computing device 10. In such examples, prolector 56 may use optical recognition or other suitable techniques to determine the user input.
Projection screen 58 (e.g., an electronic whiteboard) may display graphical content based on data received from computing device 10.
[0074] Mobile device 60 and visual display device 62 may each have compuiing and connectivily capabilities and may each receive dala Ihal compuiing device 10 output For display. Examples o1 mobile device 60 may include c-reader devices, convertible notehook devices, hybrid slale devices, dc. Examples oF visual display device 62 may include Lelevisions, computer monitors, etc. As shown in FIG 3, projection screen 58 may include a presence-sensitive display 78, mobile device 60 may include a presence-sensilive display SO, and visua' display device 62 may include a presence-sensitive display 82. Presence-sensitive displays 7S, 80, 82 may have some or all of the Funclionaliiy descrihed in Lhis disdosure br UI device 4. In some examples, presence-sensiLive displays 78, 50, 82 may include functionality in addition to the functionality of III device 4. Presence-sensitive displays 7S, 80, 82 may receive data from computing device 10 and may display graphical content based on the data. hi some exampics, prescnce-scnsitivc displays 78, SO, 82 may determinc one or more user inputs (e.g., continuous gestures, multi-touch gestures, single-touch gestures, etc.) and scnd indications of such uscr input to computing dcvice 10. Presencc-sensitive displays 78, 80, and/or 82 may use capacitive, inductive, optica' recognition iechniques andlor other techniques to determine Ihe user inpuL [0075] In some examples, computing device 10 does not output data br display by presence-sensitive display 52. In other examples, computing device ID may output dala for display such that both presence-sensitive display 52 and the one or more remote devices display the same graphical content. In such examples, each respective device may display the same graphical content substantially contemporaneously. in such examples, the respective devices may display the graphical content at different times due to communication latency. In other examples, computing device 10 may output data for display such that presence-sensitive display 52 and the one or more remote devices display different graphical content.
[0076] in the example of FiG. 3, computing device 2 may receive a first series of one or more user inputs from one or more of presence-sensitive input device 68 and presence-sensitive displays 78, 80, and 82. In response to determining that the first series of one or more user inputs corresponds to a first string of characters, computing device 2 may output, for display at one or more of display device 66, presence-sensitive displays 78, 80, and 82, the first string of characters. In response to determining that the first string ends with a word delimiter, computing device 2 may output, br disp'ay at one or more of display device 66 and presence-sensitive displays 78, 80, and 82, a second string of characters in place of the birst string obcharacters. After receiving the first series of one or more user inputs, computing device 2 may receive a second series of one or more user inputs from one or more of display device 66 and presence-sensitive displays 78, 80, and 82. Tn response io determining thai ihe second series of one or more user inputs corresponds to a third siring of characters, computing device 2 may output, for display ai one or more of display device 66, presence-sensitive displays 78, 80, and 82, the third string. Computing device 2 may determine, based ai least in pan on the Iirst and second series of one or more user inputs, a bourth string of characters. In addition, computing device 2 may output, Ior display at one or more of display device 66, presence-sensitive displays 78, 80, and 82, the fourth string in place of the second and third strings.
[0077] FIGS. 4A and 4B are conceptual diagrams that illustrate the correction of a misplaced space character, in accordance with one or more aspects of the present disclosure. As illustrated in the example of FiG. 4A, a user has entered the character string "thi" followed hy ihe space characier. In ihe example of FTG. 4A, TMR module 6 may identify one or more replacemeni candidales in response lo determining that ihe user input evenis correspond Lo ihe characier siring "ihi." However, in the example of FTG. 4A, none of ihe replacemeni candidaies has a rephicemeni score ihai is below ihe auio-replacemeni threshold.
Accordingly, even though ihe characier siring "ihi" does not match a word in exicon 7, TME module 6 does not replace thc character string "thY' with a word in lexicon 7 whcn IME module 6 receives uscr input events that colTespond to thc spacc character.
[0078] Subsequently, as shown in the example of FIG. 4A, IME module 6 may determine that a subsequent series of uscr input events corresponds to the charactcr string "sis." in response, computing device 2 displays the character string "sis" in GUI 10 after the character string "thi" and thc space character. in addition, IME module 6 may determine a sccond set of replacement candidates. IME module 6 may output a portion of the replacement candidates in suggestion elements 20. In the example of FIG. 4A, IMIL module 6 outputs the character strings "the sis," "this is," and "this sister" in suggestion elements 20.
[0079] If IME module 6 determines that one or more user input events corresponds to a user selection of one of suggestion elements 20, IME module 6 may determine a relevant characier siring br ihe replacement candidaie contained in the selecied suggesiion elemeni.
IME module 6 may ihen outpui the replacemeni candidaie in place of ihe relevani character siring. For instance, iIIME module 6 receives an indication ola user inpul to seleci suggesiion elemeni 2011, TMR module 6 may delermine ihai "ihi sis" is ihe relevani characier siring br the replacement candidaie "ihis is." As shown in FIG. 4B, IME module 6 may ihen oulpul the replacemeni candidate "this is" in place of the rdevani characier string "thi sis." Allernaiively, in ihe example oF FIG. 4A, IME module 6 may delermine that a series of user inpul events corresponds to the character string "thi sis" Ibllowed hy a space characler. IMP modifie 6 may determine thai ihe highesi-ranked replacement candidale is "Ihis is" and that ihe relevani characier string For the highesi-ranked replacement candidaie is "thi sis." Accordingly, as shown in FiG. 4B, 1ME moduic 6 may automatically output "this is" in place of "thi sis." [0080] in thc example of FiGS. 4A and 4B, "sis" may comprise a first character "s" followcd by a substring "is." In the example of FIGS. 4A and 4B, "this is" comprises a first string "thi" followed by thc first character "s," followed by a word delimitcr " ", followed by the subsiring Is." The lirst string "thi" lollowed by ihe lirsi character "s" and ihe subsiring Is" match words in lexicon 7.
[0081] In an example similar 10 the example of FTGS. 4A and 411, IMP module 6 may determine thai a first series of user inpuls corresponds Lo a lirsi string (e.g., "thisi") IhaL comprises a suhsiring ("this") foflowed by one or more misp'aced characiers (I"). In this example, IMP module 6 may determine that a subsequent series of user inputs corresponds to a second string (e.g., "s"). in this example, a replacement candidate (e.g., "this is") may comprise the substring ("this"), followed by word delimiter (e.g., ""), followed by the one or more misplaced characters ("i") followed by the second string ("s"). Tie substring and the one or more misplaced characters followed by the third string match words in lexicon 7.
[0082] FIGS. 5A and SB are conceptual diagrams that illustrate the correction of a previous word, in accordance with one or more aspects of the present disclosure. As illustrated in the example of HG. SA, a user has previously entered the text "correct prewviius word." The character string "prewviius" does not match any word in an English-language lexicon.
however, the character string "word" does match a word in the English-language lexicon.
[0083] Accordingly, in the example of FIG. 5A, IME module 6 may determine a set of replacemeni candidaies and output a portion of the replacemeni candidates in suggesiion dements 20. The relevant character siring for each of Lhe replacement candidaies may he ihe characier siring "prewviius word." Accordingly, as shown in the example ol FIG. 5A, IMP module 6 may include in GUI 10 a visual indicaiion of which characters are in Lhe rdevani characier siring. Tn the example ol FIG. 5A, IMP module 6 underlines the characier siring "prewviius word" to indicate this characier string is Lhe relevani character siring. In oiher examples, IMP module 6 may highlighi, italicize, enlarge, change the color of, or include anoiher visual indication in GUI 10 of which characiers are in the applicable character string.
[0084] I! TME module 6 receives an indication of a user inpui Lo select one ol suggestion dements 20, TME module 6 may output the character siring LhaL corresponds to the selected suggestion element in place of the relevant character string with. For instance, in the example of FIG. SB, IME module 6 may output the character string "previous word" in place of the character string "prcwviius word" in response to determining that one or more user input events correspond to a user selection of suggestion element 20B.
[0085] In some examples, IMP module 6 may automatically ouiput the top-ranked replacemeni candidate in place of the character siring "prewviius word" if IME module 6 determines thai one or more user inpul evenis corresponds to a word delimiter, i1 "prewviius word" is the relevant characler string For the Lop-ranked replacement candidate, and if ihe Lop-ranked replacemeni candidate's replacement score is below the auto-replacemeni threshold.
[0086] FIGS. oA and ÔB are conceptual diagrams that illustrate thc correction of a word that includes an erroneous space character in place of a non-space character. In the example of FIG. 6A, the user intended to input the word "someone," but inadvertently selected the space character instead of a key for the letter "n." Accordingly, IME module 6 may output the character string "someo e" in GIll 10.
[0087] In response, IME module 6 may populate the replacement candidates "someo e," "someone," and "Simone" into suggestion elements 20. IME module 6 may output a replacement candidate in place of the character string "someo e" in response to determining that one or more user input events correspond to a user selection of a suggestion element that contains the replacement candidate. For example, IME module 6 may, as shown in FIG. 6B, oulpul the replacemeni candidate "someone" in place of the character string "someo e" in response to delermining ihal one or more user inpul events correspond lo a user seleclion of suggesiion elemeni 2011. In the example ol FIGS. 6A and OB, the replacement candidate "someone" maiches a!irst string ("someo"), loflowed hy an alphanumeric character "n," lollowed by a second string ("e"). Moreover, IME module 6 may auiomaiically output a top-ranked replacement candidale (e.g., "someone") in phtce of ihe characier siring "someo e" if IME module 6 delermines that one or more user inpul evenis correspond to a word delimiler and if ihe Lop-ranked replacemeni candidale's replacemeni score is below an auto-replacemeni ihreshold.
[0088] FIGS. 7A and 7B are concepiuál diagrams ihat illustraie the correction of a word ihal includes an erroneous spacc character. in thc example of FIG. 7A, the uscr intendcd to input the word "sentence" hut inadvertently selected the space character between the letters "t" and "c" of the word "sentence." In rcsponsc, IME module 6 may output thc rcplaccment candidates "sent ence," "sentence," and "tense" in suggestion elements 20.
[0089] IMP module 6 may oulpui ihe replacemeni candidate in place oF ihe relevani characier siring br a rephicemeni candidate in response to deiermining ihal one or more user inpul events corresponds to a user selection of a suggesiion elemeni ihai corresponds to the replacemeni candidale. For exampk, the relevant character string For the replacement candidaie in suggestion element 2011 may he "sent ence." In this example, ii TMR modifie 6 dctermincs that onc or more uscr input events correspond to a uscr selcetion of suggestion clcmcnt 2DB, IME moduic 6 may output the replaccment candidatc "sentence" in place of "sent ence" as shown in FIG. 6B. The relevant character string for the replacement candidate in suggcstion element 20C may be "encc." Accordingly, if 1ME module 6 determines that one or more user input events correspond to a user selection of suggestion element 20C, IME module 6 may output "tense" in place of "ence." [00901 Moreover, IME moduk 6 may automatically output a top-ranked replacement candidate ("sentence") in place of the character string "sent ence" if IME moduk 6 determines that one or more user input events correspond to a word delimiter, if the rekvant character string for the top-ranked replacement candidate is "sent ence," and if the top-ranked replacement candidate's replacement score is heow an auto-rep'acement threshold. IME modifie 6 may automatically replace Ihe character siring "ence" with a Lop-ranked replacemeni candidale ("Lense") ii IMP module 6 delermines Ihal one or more user inpul events correspond to a word delimiter, if ihe relevani character siring for Ihe top-ranked replacemeni candidale is "ence," and if the top-ranked replacement candidale's replacement score is below an auio-replacement Lhreshold.
[0091] In Ihe example ol FIGS. 7A and 711, IME module 6 may delermine ihaL a lirst series oF user inputs corresponds to a Firsi siring ("sent"). Tn addilion, IME module 6 may determine thai a second series of user inpuis corresponds Lu a second string ("ence"). In ihe example ol FIGS. 7A and 711, TME module 6 may deiermine a replacemeni candidate ("senience") that matches a word in lexicon 7 and is equal to the lirsi siring ("sent") appended with the sccond string ("ence").
[0092] FIG. 8 is a flowchart that illustrates an example operation 300 of IME module 6, in accordance with onc or more aspects of this disclosurc. in thc cxample of HG. 8, IME module 6 may receive a series of one or more user input events (302). The series of user input events may indicate a scries of one or more user inputs rcceived by computing devicc 2. IME module 6 may delermine wheiher ihe series of user inpui events corresponds lo a characier siring (304). The character siring may include one or more characters. In response Lu delermining IhaL ihe series of user inpui evenis corresponds io a characier siring ("YES" hranch of 304), TME module 6 may output the character siring for disp'ay at user inierface device 4 (306). For example, if TME module 6 deiermines ihai ihe series of user inpui events corresponds to the character string "thi," IME module 6 may output the character string "thY' for display at uscr interfacc device 4.
[00931 Furthermore, if IME module 6 determines that the series of user input events corresponds to a character string, 1ME module 6 may dctermine a set of onc or more replacement candidates (308). In some instances, IME module 6 may determine a plurality of itplacement candidates. Each of the replaccment candidates may bc a character string, in some examples, IME module 6 may determine the set of replacement candidates based on multiple series of user input events. For example, IME module 6 may determine that a first series of user input events corresponds to a first character string. In this example, the first character string does not match a word in lexicon 7 and IME module 6 may auto-replace the first character string with a second character string. Furthermore, in this example, IME module 6 may receive a second, subsequent series oF user input evenis. In this example, IMP module 6 may determine the set of replacemeni candidales based al least in pan on the!irst and second series of user inpuL events.
[0094] In addiiion, TMR module 6 may assign replacement scores to the replacement candidaies (310). IME module 6 may perForm various operaiions lo assign the replacement scores lo Ihe replacemeni candidates. For instance, in some examples, IME module 6 may perlorm ihe example operation of FIGS. 9A and 9B to delermine ihe character string, determine the set oF replacemeni candidates, and assign ihe replacement scores.
[0095] IMP module 6 may also delermine wheiher ihe characier string ends wilh a word delimiler (3 I 2). Example word delimiters include space characLers, relurn characiers, commas, periods, question marks, parcnthesis, and so on. In response to determining that thc character string does not end with a word delimiter ("NO" branch of 312), IME module 6 may select, bascd at least in part on thc rcplacement scorcs assigned to thc replacement candidates, a portion of the replacement candidates (314). IME module 6 may then output thc selectcd portion of the replacemcnt candidates in suggcstion clemcnts 20 (316). Each of suggeslion elemenis 20 may specify a different replacemeni candidate in the portion of the sd o1 replacement candidales.
[0096] In response to delermining thai the character string ends with a word delimiler ("YES" branch @1312), IMP module 6 may determine whether each word in the relevant characier siring br ihe top-ranked replacemeni candidate matches a word in lexicon 7 (318).
In responsc to dctermining that each word in thc relevant charactcr string for the top-rankcd rcplacement candidate matches a word in lcxicon 7 ("YES" branch of 3 IS), 1ME moduic 6 may output the word delimiter for display at user interface device 4 (320) and wait to receive additional user input cvents (302).
[0097] On the other hand, in response to determining that one or more words in the relevant character string for the top-ranked replaccmcnt candidate do not match any words in lexicon 7 ("NO" branch of 318), IME module 6 may determine whether the replacement score for the top-ranked replacement candidate is below an auto-replacement threshold (322). In response to determining that the replacement score for the top-ranked replacement candidate is not below the auto-replacement threshold ("NO" branch of 322), IME module 6 may output the word delimiter for display at user interface device 4 (320) and wait to receive additional user inpul events (302).
[0098] However, in response lo delermining Ihat ihe replacemeni score br Ihe top-ranked replacemeni candidale is below ihe auto-replacemeni ihreshold ("YES" branch oF 322), IMP modifie 6 may ouipui, br display at user interlace device 4, ihe top-ranked replacemeni candidale in place of the rdevani characier siring For Ihe top-ranked replacemeni candidale (324). For example, i1 the relevani characier string br the top-ranked replacement candidale is "thesa" and ihe lop-ranked repacemenl candidale is "thesaurus," IMP module 6 may oulpul "Ihesaurus" in place oF"ihesa." In anoiher example, IME module 6 may delermine Ihat a lirsi series of user inputs corresponds lo a Iirst characier siring (e.g., "eo" in FIG. I) and may aulo-rephtce the firsi characler siring wiih a second character string (e.g. "do" in FiG. 1). In this cxample, 1ME module 6 may determine that a subscqucnt, second series of user inputs corresponds to a third character string (e.g., "haopy" in FIG. 1). In this example, "do haopy" is the relevant charactcr string and IME module 6 may output, in response to determining that the third character string ends with a word delimiter, a fourth string (e.g., "so happy" in HG. 1) in placc of the sceond and third strings. In this example, the fourth siring may have alowesi replacemeni score among ihe sd ol replacemeni candidates. Tn Ihis way, IMP module 6 may outpui the Lop-ranked replacemeni candidate in place of the relevani characier siring in response to deiermining Lhai the top-ranked replacemeni candidale is more Hkdy to correspond lo ihe series of one or more user input evenis ihan the relevani character siring. Tn some examples, IMP module 6 may, wiihout lirst deiermining Ihal one or more words in the relevant character string are in lexicon 7, output the top-ranked replacement candidate in place of thc relevant character string whcn the top-ranked replacement candidatc is more likely to correspond to the series of one or more user input events than the relevant character string.
[00991 After outputting the top-ranked replacement candidate in place of the relevant character string, iMP module 6 may output the word delimiter for display at user intcrfacc device 4 (320). IME module 6 may then wait to receive an additional user input events (302).
[0100] In response to determining that the series of user input events does not correspond to a character string ("NO" branch of 304), IME module 6 may determine whether the series of user input events corresponds to a user selection of one of suggestion elements 20 (326). In response to deiermining ihal the series of user inpul events does not correspond to a user selection of one of suggeslion elemenis 20 ("NO" branch of 326), IMP module 6 may process ihe series user inpui evenis and wail Lo receive addilional user inpui evenis (302).
[0101] In response to delermining thai the series of user input evenis corresponds to a user selection of one of suggeslion elemenis 20 ("YES" branch of 326), IMP module 6 may oulpul, br display aL user inierface device 4, the replacemeni candidale of ihe selected suggesiion elemeni in place of the relevani character string for the replacemeni candidaie of ihe selecied suggesiion elemeni (328). Alter replacing Lhe relevant characier siring, IMP module 6 may wail to receive additional user input evenls (302). For example, if the relevani characier siring br ihe replacement candidaie of ihe selecied suggeslion elements is "do haopy" and the replacement candidate of thc selected suggestion element is "so happy," IME module 6 may output "so happy" in place of "do haopy." Thus, in this example, if IME module 6 auto-replaced a first string ("eo") with a second string ("do") and determined that a subsequent series of user inputs corresponds to a third string ("haopy"), IMP module 6 may, in response to receiving a user inpui Lu seleci a suggestion element ihat conlains a fourth siring ("so happy"), outpui the!ourih siring in place of ihe second and Ihird sirings.
[0102] FIG. 9A is a flowehari that illustrates an example operation 500 of computing device 2 br inierpreling user input, in accordance wiih one or more aspecis of ibis disclosure. IME moduk 6 may perlorm operalion 500 lo determine whether a series of user input events corresponds to a character string, output the character string for display, detcrmine rcplacement candidates, and assign replaccment scores to rcplacemcnt candidates in actions 304-3 10 of operation 300.
[0103] In thc example of FiGS. 9A and 9B, IME module 6 uses a lexicon finite statc transducer (FST) to determine that a series of user inputs corresponds to a character string and also to determine replacement candidates and replaccment scores. The lexicon FS1 may include a plurality of nodes and a plurality of arcs. The nodes may include an entry node, a plurality of terminal nodes, and a plurality of non-terminal nodes. Each node other than the entry node may have exactly one incoming arc and at least one outgoing arc. An incoming arc of a node may be an arc that leads from another one of the nodes to the node. An outgoing arc of a node may be an arc that leads from the node to another one of the nodes. A node is referred to herein as a child node of anoiher node ii there is an arc Ihat leads from the other node Lo ihe node.
[0104] Each of ihe Lerminal nodes may he associated with a characier siring Ihal includes one or more words in lexicon 7. Each of the terminal nodes may he reached from ihe eniry node hy Ibliowing a series oF one or more arcs ihrough the lexicon FST. Each of the Lerminal nodes may have an oulgoing arc ihal leads hack Lu ihe entry node of Ihe lexicon FST.
[0105] Each of ihe arcs may he associaied wiih an inpui character. The input character oF an arc may he an alphanumeric characier and/or a word delimiier. Furthermore, the inpul characier of an arc may he a lamhda character. The himhda character is a placeholder For a characier. When the inpui character oF an arc is ihe lambda character, no user inpui evenis arc consumcd by following the arc. Ic lambda charactcr may be associated with the outgoing arcs from the terminal nodes to the entry node.
[0106] IME module 6 may rcceivc an indication of a uscr input (502). In othcr words, IME module 6 may receive a user input event. In response, IME module 6 may generate a token that is associated with an entry node of a lcxicon FS'I' (504). A token may be data structurc Ihat slores several pieces oldala. IMP module 6 may push the token mb an active beam (506). In the context oF FIGS. 9A and 9B, a beam maybe a daba siruclure that slores lokens.
Wben TMR module 6 pushes the loken into Ihe aclive beam, the contents oF the aclive beam maybe represented by Table I, helow.
TABLE I
Index Parent Index Character of Node Character Chain Cost Look Value ahead score (3 ---0 0 [0107] In l'ahk 1, each row represents an individual token. For each token, the index column indicates a unique index value for the token. For each token, the parent index column indicates the parent index va'ue of the token. A token's parent index is the index of the token's parent token. A particu'ar token may he the parent token of another token if IME module 6 generated the other token as a copy of the particular token. For each token, the characler of node column may indicate an inpd characler of an arc leading from the node associated with the Wken's pareni o the node associated with the token. For each loken, the characler chain colunm may indicate the charader chain of the token's pareni concatenattd with the input character of the arc leading from the node associated with the token's pareni Lo the node associated with the Loken. For each Icken, the cost value column may indicatt a cost value of the wken. The cosL value of the loken may he equal to the cosi value of the Loken's parent plus a cost va'ue of the arc eading from the node associattd with the token's parenL o the node associated with the token. As shown in Table 1, the Wken has an index of o (i.e., okenO), no parent index, no characler of the node, no character chain, and a cost value of zero.
[0108] After pushing the token into the active beam, IME module 6 may select a token from the active beam (508). IME module 6 may then determine whether a copy of the selected token has been generated for each child node of the node associated with the selected token (510). For ease of explanation, this disclosure may describe the node associated with a token as the token's node. If IME module 6 determines that a copy of the selected token has not yel been generaled br a child node of the token's node ("NO" branch of Si 0), IME module 6 may generate a copy oF Ihe selected loken and may associale ihe copy with the chfld node (512). If Ihe selected loken's node is a Lerminal node, Lhe child node maybe ihe entry node of the lexicon FST. IME module 6 may then updaLe ihe conleni of ihe copy (514).
[0109] When IME module 6 updates ihe conLeni of ihe copy, IMP module 6 may update the index of the copy such that the copy has an index that is unique among tokens in thc next bcam. h addition, 1ME module 6 may updatc thc parent mdcx of the copy to indicate the index of the selected token. IME module 6 may also update the character-of-node field of the copy to indicate the input character associatcd with the arc from the selected token's node to the copy's node. In addition, IME module 6 may update the character chain field of the copy to append the input character associated with thc arc from the selected token's node to the copy's node. IME module 6 may also update the cost value field of the copy to add a cost value associated with the arc from the selected token's node to the copy's node.
[0110] In some examples, IME module 6 may determine whether the copy's character chain includes more than a particular number of word delimiters. For instance, IMIL module 6 may determine whether the copy's character chain includes more than two word delimiters. In response to delermining ihal the copy's character chain includes more than Ihe particular number of word delimiters, TME module 6 may remove old characters from the copy's characier chain and old cosis From Ihe copy's cosi value. The old characiers may he characiers thai occur in the copy's characier chain before an earliest word delimiler in ihe copy's characier chain. The old costs maybe costs associated with the old characters.
[0111] IMP module 6 may delermine the cost value associaled with the arc in various ways.
In some examples, IMP module 6 may determine the cost value associaled with the arc based at least in pan on a character-level cost value For the arc. TMF module 6 may use a character-level FST lo determine the character-level cosi value For the arc. The charader-level FST may he an FST like the lexicon FST described above. For ease of explanalion, the character-lcvel PSI' may be referred to hcrcin as the C-USE [0112] A C-FST may include a plurality of nodes connected by arcs. Each of the arcs may have an input character. in this example, IME module 6 may determine the character-level cost value for a character sequence by following a path through the nodes of the C-FST and summing the costs of arcs along the path. The output charactcrs of the arcs on the path match the characters of the copy's character chain. For each of ihe arcs in the path through ihe nodes of ihe C-FST, IMP module 6 may delermine ihe cosi of the arc based ai]easl in part on a spatial mode] score br the inpul character of the arc and a language model score for ihe inpul character of ihe arc.
[0113] The spatia] model score for an input character may indicate a prohahilily ihal a user input event corresponds to the input character. For instance, if the user input event corresponds to a tapping gesture at a particular location of user interface device 4, the spatial model score for the input character may be correlated with a spatial distance between the particular location and the virtual key for the input character.
[0114] The language model score for the input character may indicate a probability of the input character given the input characters of the preceding arcs in the path. For instance, if the input character does not typically follow the input character of the preceding arc of the path, the input character may receive a low language model score. For example, the character "k" does not typically follow the character f" in the English language.
Accordingly, in this example, the letter k" may receive a low language model score if the input character of the preceding arc is f." [0115] The]ambda characier maybe ihe inpul character or oulpul character for some arcs in ihe C-FST. No user inpul events are consumed by transiiioning along an arc if ihe]amhda characier is the inpul characler of ihe arc. The C-FST may use an arc that has a particular characier as the inpul character and ihe]amhda character as the outpui characler lo model a siring that includes ihe pariicu]ar character by accidenL IMP module 6 does nol add any characiers lo a token's character chain by transiiioning along an arc ihal has Lhe lambda characier as the oulpui character of the arc. The C-FST may model a string ihat indudes an inadverienily omilted character by fo]lowing an arc ihal has the]amhda character as the inpui characier and the omilted character as the oulput character. Tn this way, arcs wiih amhda inpul or output characiers may enafile the C-FST to mode] character strings where the user inadvertently omitted or inserted a character, such as an alphanumeric character, space character, or punctuation mart [0116] in addition to modifying the cost value of the copy in action 514, 1MB module 6 may determine a look-ahead score for the copy. IME module 6 may determine the look-ahead score for the copy in various ways. For example, 1MB module 6 may determine the look-ahead score ol the copy by delermining a trial look-ahead score br each lerminal node in the kxicon FST Ihal is reachable from Ihe copy's node. A terminal node is reachable in Ihe exicon FST from ihe copy's node if ihere is a path through the lexicon FST from ihe copy's node to the terminal node that does not pass through ihe entry node. IMP modLile 6 may sd Ihe look-ahead score of ihe copy lo he the greatesi of Ihe trial look-ahead scores. TME module 6 may determine a trial look-ahead score for a terminal node by adding a spatial score for the terminal node and a language score for the terminal node. the spatial score for the terminal node may be based at least in part on the difference between the number of characters in the copy's character chain and the number of characters in the word associated with the terminal node. The language score for the terminal node may be based at least in part on a probability of the terminal node's word, given thc n-I preceding words or candidate words. In accordance with the techniques of this disclosure, IMP module 6 may retain the set of candidate strings for previously-entered character strings. IMP module 6 may determine the language score for the terminal node based on joint hypotheses of the terminal node's word and the set of candidate strings for a previously-entered word. IME module 6 may determine the terminal node's language score as the probability of the joint hypothesis Ihal has the greatest prohahilily. For example, Ihe set of candidate sirings for the previously-entered word maybe "eo," "so," and "do," as discussed in examples above. In Ibis example, "do" maybe ihe highest-ranked candidate string based on an earlier series of user inpuls. Tn Ihis example, a terminal node may correspond Lo Lhe word "happy." Even though "do" was Ihe highesl-ranked candidate string, ihe joint hypoihesis wiih Ihe greatest probability maybe "so happy." Hence, the language score for the 1ermina node maybe Ihe prohabilily of Lhe combinaLion "so" and "happy." [0117] As indicaLed above, 1MB module 6 may generate a copy of Ihe selected Loken and update the content of the selected kken. Furthermore, IMP modifie 6 may push Lhe copy of Ihe selected Uken mb a next beam (516). AfLer pushing bhe copy mb Lhe nexb beam, TMF module 6 may prune the next beam (5 IS). When 1MB module 6 prunes the next beam, 1MB module 6 may compare the cost values of the tokens in the next beam. IMP module 6 may discard any tokens in the next beam that are not among the n tokens having the lowest cost values, where n is an integer (e.g., 10). If there are fewer than n tokens in the next beam, 1MB module 6 does not discard any tokens in the next beam. After pruning the next beam, IME module 6 may determine again whelher copies of the selecled token have been generaled for each child node of the selecied token's node (510). Ii noi, 1MB module 6 may repeal aciions 512-518 br another child node of Ihe sdecled token's node. In ihis way, IMP modifie 6 may generaie a copy of the selected ioken For each child node of ihe selected Loken's node. On ihe other hand, in response to determining thai copies have been generaied for each child node of the selected token's node ("YES" branch of 510), IME moduic 6 may pcrform the portion of opcration 500 illustratcd in FiG. 9B.
[0118] FIG. 9B is a flowchart that iflustrates an example continuation of operation 500. IMIL module 6 may idcntify terminal nodcs of the lexicon USI' that are rcachable from thc selcctcd token's node without passing through the entry node of the lexicon FST (530). In some cxamples, 1ME module 6 may identify the tcrminal nodes of the lexicon FS1' that are reachable from the selected token's node after IME module 6 determines that copies of the selected token have been generated for each child node of the selected tokens node.
[0119] If the selected token's node is a terminal node, the selected token's node is the only reachable terminal node. IME module 6 may generate a replacement candidate associated with each of the identified terminal nodes (532). IME module 6 may add the generated replacemeni candidaies io a set oF replacemenl candidaies (534). TMP module 6 may generale a replacement candidate associaled wiih a lerminal node by concalenating to ihe selected ioken's characler siring the input characiers of arcs of the lexicon FST on a paih Irom the selecled loken's node to the ierminal node. For example, if ihe selected ioken's characler siring is "hap" and the inpul characiers oF the arcs on ihe paLh liom ihe selecled Loken's node lo Ihe terminal node are "p" and "y," IME module 6 may generate the replacemeni candidaie "happy." Tn ihis way, where a parlicular token in an active beam is associated wiih a parlicular node of Ihe lexicon FST, a replacement candidaie may include a word thai is associaled wiih a lerminal node of ihe lexicon FST Ihal is reachable from ihe particLilar node.
[0120] Furthermore, 1ME module 6 may dctcrmine replacement scorcs for the gencrated replacement candidates (536). IME module 6 may determine the replacement score for a rcplacement candidate by adding the selectcd token's cost value to a look-ahead score for the terminal node associated with the replacement candidate. IME module 6 may determine the look-ahcad scorc for the rcplacement candidate by adding a spatial score for thc tcrminal node associated with replacement candidale and a language score br the lerminal node associated with the replacement candidale. As indicated above, Ihe spatial score br the Lerminal node maybe based al least in pan on the difference between the number of characlers in Ihe copy's characler chain and ihe number of characlers in the word associaled wilh the Lerminál node. The anguage score or Ihe Lerminal node maybe based al least in part on a probability of the terminal node's word, given the n-I preceding words. In this example, 1MB module 6 may rank replacement candidates with low replacement scores higher than replacement candidates with high replacement scores.
[0121] After determining the replacement scores, 1MB module 6 has finished processing the selected token. IME module 6 may determine whether there are any remaining unprocessed tokens in the active beam (538). If there arc one or more remaining unprocessed tokens in the active beam ("YES" branch of 538), IME module 6 may select another token from the active beam (508) (171G. 9A) and repeat actions 510-536 using this selected token. In this way, IME module 6 may process each token in the active beam. After processing each token in the active beam, there are no remaining unprocessed token in the active beam.
[0122] If there are no remaining unprocessed tokens in the active beam ("NO" branch of 538), IMP module 6 may rank ihe tokens in ihe active beam (540). 1MB module 6 may rank ihe tokens in the aclive beam based at kasi in part on the cost values of ihe tokens in the active beam. In some examples, IMP module 6 may calculate an output score lbr each of ihe Lolcens in Ihe aclive beam. The oulput score for a token may he based at least in part on the cost value of the token and Ihe thok-ahead score of the token. For instance, the output score br the token may he equal Lo a sum of Ihe cost value of the token plus the look-ahead score of the token. Tn such examples, the loken with the owest outpul score may he the highesi-ranked token. Alter ranlcing the lokens in the active beam, IMP module 6 may oulput, for display at user inlerface device 4, the character siring of the highesi-ranked token in the active beam (542). In this way, IMP module 6 may determine, based at least in pan on cosi values of tokens in an active beam, a highest-ranked token in the active beam, wherein the highest-ranked token in the active beam specifies the character string. IME module 6 may then discard the tokens in the active beam (544).
[0123] The character string relevant to a replacement candidate may he the string of characters that 1MB module 6 has previously output based on the user input events consumed hy ihe selected loken. For example, IMP module 6 may receive a series of user inpui evenis indexed 0 through 8. In ihis example, a lirsi Loken may consume user inpui evenis 0 ihrough S as ihe lirst loken traverses arcs having the input characiers "e," "o,""", "h," "a," "o," "p," and "y." Hence, in ihis example, the lirsi Loken's characier siring may he "eo haopy." A second token may consume user inpui events 0 ihrough 8 as the second token traverses arcs having thc input characters "s," "o," " ," "h," "a," "p," "p," and "y." Hencc, in this example, thc second token's character string is "so happy." The output score of the first token may be lower than the output score of the second token. In this example, the output score of the first token may be lower than the output score of thc second token because thc points at which user interface device 4 detected an input obiect may be closer to virtual keys for the characters in the character string "eo haopy" than to the virtual kcys for the characters in the character string "so happy." Because the output score of the first token is lower than the output score for the second token, IME modifle 6 may output "eo haopy" instead of "so happy." however, "so happy" maybe among the set of replacement candidates. The relevant string for the replacement candidate "so happy" may he "eo haopy" because "eo haopy" is the string of characters that IME module 6 has previously output based on the user inpul events consumed by ihe second token. In ihis way, an intermediate character siring results 1mm concaienating to the selected ioken's characier siring ihe input characiers of arcs of ihe lexicon FST on a paih from ihe selected ioken's node to the iermina node. In such examples, IME module 6 may add, to the beginning oF ihe intermediate characier siring, a particLilar candidate string from a previous set oF replacemeni candidales. A joini hypothesis of ihe pariicular candidate string and the intermediaie characier string may have a grealer prohahility than joini hypoiheses oF the intermediate characier siring and any oiher candidale siring in ihe previous sd oF replacemeni candidaies.
[0124] AFter discarding the tokens in ihe active beam, IME module 6 may deiermine whether ihere are any addiiional user inpul evenis Lu consume (546). 11 ihere are no additional user input events to consume ("NO" branch of 546), IME module 6 may suspcnd operation 500 until there are one or more user input events to consume. On the other hand, if there are one or more user inputs to consume ("YES" branch of 546), IME moduic 6 may switch the activc beam and the next beam (548). Thus, the active beam is designated as the next beam and the nexi beam is designaled as the aclive beam. IMP moduk 6 may ihen seleel a loken from (be active beam (508) and repeal actions 508-536 using this selected token.
[0125] FRI 10 is a flowchari ihal illusirates an exampk operation 600 of compuling device 2, in accordance wilh one or more aspecis ol this disclosure. The example operalion 300 oF FIGS. SA and 811 maybe a specific exampk of operation 600.
[0126] In thc example of FIG. 10, computing device 2 may receive a first series of one or more user inputs (602). Computing device 2 may output, for display at a display device, a first string of characters based on the first series of one or more user inputs (604). In rcsponsc to determining that the first string ends with a word delimiter and that a sccond string of characters is more likely to correspond to the first series of user input than the first string of characters, computing devicc 2 may output, for display at the display device, a second string of characters in place of the first string of characters (606). After receiving the first series of one or more user inputs, computing device 2 may receive a second series of one or more user inputs (608). Computing device 2 may output, for display at the display device, a third string of characters based on the second series of one or more user inputs (610).
[0127] In addition, computing device 2 may determine, based at least in part on the first and second series @1 user inpuls, a Iourih siring of characler (612). Tn some inslances, ihe fourih siring may include more (ban one word in lexicon 7. In olher insiances, (be lourth siring may include Iwo or more words in lexicon 7. Computing device 2 may outpul, for disp'ay at the display device, ihe fourth string of characiers in place of Ihe second and (bird strings of characlers (614).
[0128] In one or more examples, ihe ftmnciions described may he implemenied in hardware, software, firmware, or any combination thereof. Tf implemented in software, the funciions may he slored on or Iransmitied over, as one or more instruciions or code, a compuler-readable medium and executed by a hardware-based processing unit. Computer-readable media may include computer-readable slorage media, which corresponds to a langible medium such as data storagc media, or communication mcdia including any mcdium that facilitates transfer of a computer program from one place to another, e.g., according to a communication protocol. in this manner, computer-readable mcdia generally may correspond to (1) tangible computer-readable storage media which is non-transitory or (2) a communication medium such as a signal or carrier wavc. Data storage media may bc any available media that can he accessed by one or more compulers or one or more processors to reirieve insiruclions, code and/or dala siruclures for implementation of the techniques described in Ihis disdosure. A computer program produci may include a computer-readahle medium.
[0129] By way of example, and not limitation, such computer-readable storage media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage, or other magnetic storage devices, flash mcmory, or any othcr medium that can be used to store desired program code in the form of instructions or data structures and that can bc accesscd by a computer. Also, any conncetion is properly termed a computer-rcadable medium. For example, if instructions are transmitted from a wehsite, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscribcr linc (DSL), or wireless technologies such as infrared, radio, and microwave, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of medium. It should he understood, however, that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transient media, but are instead directed to non-transient, tangible slorage media. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versalile disc (DYD), Iloppy disk and BUt-ray disc, where disks usually reproduce dala magnelicafly, while discs reproduce dala optically with lasers. Combinalions of the above should also he included wilhin Ihe scope of compuler-readahle media.
[0130] InsirucLions maybe execuied by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, applicalion specific inlegraLed circuils (ASICs), field programmable logic arrays (FPGA5), or oiher equivalent integrated or discrete thgic circuitry. Accordingly, the term "processor," as used herein may refer Lo any of Lhe Ibregoing siruclure or any oLher sirucLure suiLahle for implemenlalion ol Lhe techniques described herein. In addition, in some aspects, ihe functionaliLy described herein may he provided within dedicated hardwarc and/or software modulcs. Also, the techniques could be fully implemented in one or more circuits or logic elements.
[0131] the techniques of this disclosure may bc implemcnted in a wide varicty of devices or apparatuses, including a wireless handset, an integrated circuit (IC) or a set of ICs (e.g., a chip set). Various components, modules, or units are described in this disclosure to emphasize lunclional aspecis ol devices conflgured lo perlorm the disclosed techniques, hul do not necessarily require realitalion by dilièrenL hardware units. Raiher, as described ahove, various unils maybe combined in a hardware unit or provided by a collection of inleroperalive hardware unils, induding one or more processors as described above, in conjunclion wiLh suilahle software and/or lirmware.
[0132] Various cxamplcs have been described. These and other exampics are within the scope of the following claims.

Claims (4)

  1. CLAIMSA meihod comprising: receiving, by a computing device, a lirsi series ol one or more user inputs: outpuiting, by the computing device, br display, a first string of characiers hased on thc first series of one or more user inputs; in response to determining that the first string ends with a word delimiter and that a second string of characters is more likely to correspond to the first series of user input than the first string of characters, outputting, by the computing device and for display, the second string of characters in place of the first string of characters: after receiving the first series of one or more user inputs, receiving, by the computing device, a second series of one or more user inputs: outputting, by the computing device, for display, a third string of characters based on the second series of one or more user inputs: determining, by the computing device and based at least in part on the first and second series of one or more user inputs, a fourth string of characters; and outpuiting, by the computing device and lbr display, the!ourih siring in place of ihe second and third strings of characiers.
  2. 2. The meihod of claim I, wherein the bourih siring does noi include more ihan one
  3. 3. The meihod of claim I, wherein the bburih siring includes two or more words in a kxicon.
  4. 4. The meihod of any preceding claim, wherein: the method furiher comprises oulpuiting, by ihe computing device and br display, a suggesiion elemeni that includes the lburth string of characiers; and outpulting ihe lourih siring in place of ihe second and ihird strings compnses, in response to receiving an indicalion of a user input lo select Ihe suggeslion elemeni, outputting, by the computing device and for display, the fourth string in place of the second and third strings.5. the method of claim 4, wherein: the suggestion element is a first suggestion element; determining the fourth string comprises: determining, by the computing device and based at least in part on the first and second series of one or more user inputs, a plurality of replacement candidates, each of the replacement candidates being a string of characters: and selecting, by the computing device, a portion of the plurality of replacement candidates, the portion of the plurality of replacement candidates including the fourth siring; and ihe method furiher comprises oulpuiting a pluralily of suggeslion elements, ihe puraliiy of suggestion elements including ihe lirst suggestion element, each of ihe suggesiion elemenis specifying a dibTereni replacemeni candidale in the porlion of ihe puraliiy of replacement candidales.6. The meihod of any preceding claim, wherein ihe word delimiier is a flrst word delimiler and outputiing ihe fourth string comprises in response k determining that the third siring ends wiih a second word delimiler, oulputting, by ihe compuiing device and for display, ihe fourth string in place @1 the second and ihird strings.7. The meihod of any preceding claim, wherein: delermining the Iourlh siring comprises determining, by ihe computing device and hased on Ihe Iirst and second series o1 one or more user inputs, a pluralily o!repacemeni candidaies, the pluralily of replacemeni candidaies including the Iourih siring; and ihe method furiher comprises delermining, by the compuling device, thai the Iourih string has a lowcst replacement score among the plurality of replacement candidatcs.8. The method of any preceding claim, wherein the first series of one or more user inputs compriscs a serics of onc or more tapping gestures at a presence-sensitive display.9. The mcthod of any prcccding claim, whercin the first scries of one or more uscr inputs comprises a sliding movement of an input ohiect at a presence-sensitive display.10. The method of any preceding claim, wherein: the word delimiter is a space character, the third string comprises a first character followed by a substring, ihe fourth siring comprises the!irst siring lollowed by the Firsi characier, lollowed by Ihe word defimiler, lollowed by ihe substring, and ihe flrsi string lollowed by ihe Iirst characler and ihe substring match words in a exicon.Ii -The meihod of any of claims 1 io 9, wherein: ihe word delimiter is a space characier, ihe flrsi string comprises a subsiring followed by a misp'aced characier, ihe fourth siring comprises the substring, Followed by the word delimiter, lifilowed by Ihe misplaced characier, Followed by the third string, and the substring and the misplaced character followed by the third string match words in a lexicon.12. The meihod of any of claims 1 Lo 9, wherein ihe fourth string matches a word in a exicon and the fourth string matches the Firsi siring loflowed by an alphanumeric character lollowed by the third string.13-The meihod of any of claims 1 Lo 9, wherein ihe fourth string matches a word in a lexicon, the word dclimiter is a space charactcr, and the fourth string matchcs the first string appended with the third string.14. the mcthod of any preccding claim, further comprising using, by thc computing device, a finite state transducer (FST) to determine that the second series of one or more user inputs corresponds to thc third string.15. The method of claim 14, wherein using the FST comprises determining, by the computing device and based at kast in part on cost va'ues of tokens in an active beam, a highest-ranked token in the active beam, wherein the highest-ranked token in the active beam specifies the third string, wherein each of the tokens in the active beam is associated with a node in the EST.16. The meihod of claim 15, wherein a particu'ar loken in the aciive beam is associaled wilh a particular node oF the FST and ihe fourth string includes a word that is associated wiih a iermina node of the FST ihat is reachable from ihe parlicular node.17. The meihod of any preceding claim, wherein: ihe method furiher comprises delermining, by ihe compuling device and based on ihe lirsi series of one or more user inpuis, a pluraliiy of replacemeni candidaies; and outpuiting ihe second siring in place of ihe Firsi siring comprises oulpuiling, by the computing device, for display, and based at least in part on a comparison of a replacement score of the second string and a threshold, the second string in p'ace of the first string.IS. A compuling device that compnses one or more processors conhgured Lo: receive a First series ol one or more user inputs: in response Lo determining that the IirsL series ol one or more user inputs corresponds Lo a FirsL siring oF characlers, ouLput, br disp'ay, Lhe lirsi string oF characiers: in response Lo determining that the IirsL siring ends with a word delimiter and thai a sccond string of charactcrs is more likely to correspond to the first series of user input than thc first string of charactcrs, output, for display, the sccond string of characters in place of the first string of characters; after recciving thc first serics of onc or more user inputs, reccivc a second series of one or more user inputs; in response to determining that the second series of one or more uscr inputs corresponds to a third string, output, for disp'ay, the third string; determine, based at least in part on the first and second series of one or more user inputs, a fourth string of characters; and output, for disp'ay, the fourth string of characters in place of the second and third strings.19-The compuLing device of claim 18, wherein ihe one or more processors are conligured to: outpul, br display, a suggestion elemeni thai coniains Lhe fourth string of characters; and in response Lo receiving an indication of a user input to seleci the suggeslion elemeni, oulpul, br disphty, ihe fourLh siring oF characters in place of the second and third strings o1 characLers.20. A non-iransitory computer-readahle storage medium that slores insiructions Ihal, when execuled by one or more processors ol a computing device, cause Ihe compuling device to: in response Lo determining that a Firsi series ol one or more user inpuLs corresponds Lo a Firsi siring of characiers, oulpuL, br display, ihe first siring obcharaciers; in response to determining that thc first string ends with a word delimiter and that a sccond string of characters is more likely to correspond to the first series of uscr input than the first string of characters, output, for display, the second string of characters in place of the first string of characters; in response to determining that a second series of one or more user inputs received after the first series of one or more user inputs corresponds to a third string of characters, output, for display, the third string of characters; determine, based at least in part on the first and second series of one or more user inputs, a fourth string of characters; and output, for disp'ay, the fourth string in place of the second and third strings of characters.
GB201318331A 2012-10-16 2013-10-16 Correction of errors in character strings that include a word delimiter Withdrawn GB2507190A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201261714627P 2012-10-16 2012-10-16
US13/901,259 US8612213B1 (en) 2012-10-16 2013-05-23 Correction of errors in character strings that include a word delimiter

Publications (2)

Publication Number Publication Date
GB201318331D0 GB201318331D0 (en) 2013-11-27
GB2507190A true GB2507190A (en) 2014-04-23

Family

ID=49551919

Family Applications (1)

Application Number Title Priority Date Filing Date
GB201318331A Withdrawn GB2507190A (en) 2012-10-16 2013-10-16 Correction of errors in character strings that include a word delimiter

Country Status (2)

Country Link
AU (1) AU2013237735B1 (en)
GB (1) GB2507190A (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1248183A2 (en) * 1997-09-25 2002-10-09 Tegic Communications, Inc. Reduced keyboard disambiguating system
US20070239426A1 (en) * 2006-04-07 2007-10-11 Research In Motion Limited Handheld electronic device providing a learning function to facilitate correction of erroneous text entry in environment of text requiring multiple sequential actuations of the same key, and associated method
WO2009027772A1 (en) * 2007-08-27 2009-03-05 Sony Ericsson Mobile Communications Ab Disambiguation of keypad text entry
US7853874B2 (en) * 1998-05-26 2010-12-14 SAS Institute Spelling and grammar checking system
US20110035209A1 (en) * 2009-07-06 2011-02-10 Macfarlane Scott Entry of text and selections into computing devices

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7250938B2 (en) * 2004-01-06 2007-07-31 Lenovo (Singapore) Pte. Ltd. System and method for improved user input on personal computing devices
US8078978B2 (en) * 2007-10-19 2011-12-13 Google Inc. Method and system for predicting text
US20110161829A1 (en) * 2009-12-24 2011-06-30 Nokia Corporation Method and Apparatus for Dictionary Selection

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1248183A2 (en) * 1997-09-25 2002-10-09 Tegic Communications, Inc. Reduced keyboard disambiguating system
US7853874B2 (en) * 1998-05-26 2010-12-14 SAS Institute Spelling and grammar checking system
US20070239426A1 (en) * 2006-04-07 2007-10-11 Research In Motion Limited Handheld electronic device providing a learning function to facilitate correction of erroneous text entry in environment of text requiring multiple sequential actuations of the same key, and associated method
WO2009027772A1 (en) * 2007-08-27 2009-03-05 Sony Ericsson Mobile Communications Ab Disambiguation of keypad text entry
US20110035209A1 (en) * 2009-07-06 2011-02-10 Macfarlane Scott Entry of text and selections into computing devices

Also Published As

Publication number Publication date
AU2013237735B1 (en) 2013-11-14
GB201318331D0 (en) 2013-11-27

Similar Documents

Publication Publication Date Title
US8612213B1 (en) Correction of errors in character strings that include a word delimiter
AU2014212844B2 (en) Character and word level language models for out-of-vocabulary text input
US10241673B2 (en) Alternative hypothesis error correction for gesture typing
US9081482B1 (en) Text input suggestion ranking
US9547439B2 (en) Dynamically-positioned character string suggestions for gesture typing
US10019435B2 (en) Space prediction for text input
US10073536B2 (en) Virtual keyboard input for international languages
US9122376B1 (en) System for improving autocompletion of text input
WO2015088669A1 (en) Multiple character input with a single selection
US8756499B1 (en) Gesture keyboard input of non-dictionary character strings using substitute scoring
GB2511431A (en) Character string replacement
EP2909702B1 (en) Contextually-specific automatic separators
US9965454B2 (en) Assisted punctuation of character strings
US10896287B2 (en) Identifying and modifying specific user input
US9298276B1 (en) Word prediction for numbers and symbols
US9262075B1 (en) Thumb typing keyboard
GB2507190A (en) Correction of errors in character strings that include a word delimiter
AU2014200570A1 (en) Correction of errors in character strings that include a word delimiter
US11526215B2 (en) Reducing keystrokes required for inputting characters of Indic languages
US20160147407A1 (en) Modifying content with single modifier key

Legal Events

Date Code Title Description
WAP Application withdrawn, taken to be withdrawn or refused ** after publication under section 16(1)