Context sensitive auto-correction

Methods, systems, and computer program products are provided for adaptively autocorrecting text according to context. Text may be received at a mobile electronic device that was input by a user. The received text may be displayed at a display component of the mobile electronic device. An auto-correct dictionary is selected from a plurality of auto-correct dictionaries. The auto-correct dictionary may be selected based at least on usage information that is representative of a usage context of the mobile electronic device. The displayed text is auto-corrected according to the selected auto-correct dictionary.

BACKGROUND

Autocorrection is a function that is implemented in some text handling tools to automatically correct spelling and/or typing errors in text. Autocorrection may also be used to automatically format text or insert special characters by recognizing particular character usage, saving the user from having to manually perform the formatting/character inserting. Tools on mobile devices that are used to send text messages (e.g., Short Message Service (SMS) messages, etc.) may implement autocorrection, as well as other types of messaging tools. Autocorrection may also be referred to as “autocorrect,” “replace as you type,” and “text replacement,” among other names.

Current autocorrection tools are configured to autocorrect text for a particular language. However, devices are used that may receive text in more than one language. In such a circumstance, an autocorrection tool that may not work properly. For instance, a Spanish speaking user may type in the word “yo,” which in Spanish means “I”. However, if the autocorrection tool is configured for the English language, the autocorrection tool may undesirably autocorrect the word “yo” to the word “you” or to other English word. Such undesired autocorrections of text may be inconvenient to a user. If the user notices that a word was autocorrected that should not have been, the user may manually convert the text back to its original, uncorrected form. However, if the user does not notice the undesired autocorrection, the meaning of the text that the user was providing may undesirably be changed, or the text may even become unintelligible.

SUMMARY

Methods, systems, and computer program products are provided for adaptively autocorrecting text according to context. According to a method implementation, text may be received at a mobile electronic device that was input by a user. The received text may be displayed by a display component of the mobile electronic device. An auto-correct dictionary is selected from a plurality of auto-correct dictionaries. The auto-correct dictionary may be selected based at least on usage information representative of a usage context of the mobile electronic device. The displayed text is auto-corrected according to the selected auto-correct dictionary.

When subsequent text is received at the mobile electronic device, the subsequent text may be autocorrected based on the same selected auto-correct dictionary, or based on a different auto-correct dictionary that may be selected, depending on the usage context at the time the subsequent text is received. For instance, with regard to the subsequent text, the user inputting the text may have changed, a location of the mobile electronic device may have changed, as well as the time at which subsequent text is received being different. The same or a different auto-correct dictionary may be selected to perform autocorrection of the subsequent text based on any one or more of these changes in context, as well as any other changes in context.

According to a system or apparatus implementation, a mobile electronic device includes a display component, a text input module, and an auto-correct module. The display component is capable of at least displaying textual characters. The text input module receives text provided by a user to the mobile electronic device, and provides the received text to the display component for display in a user interface. The auto-correct module automatically corrects the displayed text according to a selected auto-correct dictionary. The auto-correct module automatically selects the selected auto-correct dictionary from a plurality of auto-correct dictionaries based at least on usage information representative of a usage context of the mobile electronic device.

Computer program products containing computer readable storage media are also described herein that store computer code/instructions for enabling autocorrection functionality to be adaptive according to usage context, as well as enabling additional embodiments described herein.

DETAILED DESCRIPTION

Numerous exemplary embodiments of the present invention are described as follows. It is noted that any section/subsection headings provided herein are not intended to be limiting. Embodiments are described throughout this document, and any type of embodiment may be included under any section/subsection. Furthermore, embodiments disclosed in any section/subsection may be combined with any other embodiments described in the same section/subsection and/or a different section/subsection in any manner.

Autocorrection is a function that is implemented in some text handling tools to automatically correct spelling and/or typing errors in text, and to automatically format text or insert special characters by recognizing particular character usage (e.g., changing abbreviations to full words/phrases, etc.). A variety of text-handling-related tools may be configured to implement autocorrection, including word processing tools such as Microsoft® Word developed by Microsoft Corporation and WordPerfect® developed by Corel Corporation of Ottawa, Ontario, messaging tools (e.g., email tools, text messaging tools, instant messaging tools, etc.), and further types of tools that receive and manipulate text. Examples of email tools that are used to send emails include Microsoft® Outlook® provided by Microsoft Corporation of Redmond, Wash., and Gmail™ provided by Google Inc. of Mountain View, Calif. Examples of text messaging tools include those that are used to send text messages according to Short Message Service (SMS), etc. These examples are provided for illustrative purposes, and are not intended to be limiting.

Tools that perform autocorrection typically are not configured to handle autocorrection for multiple languages, but instead are configured to handle a single language at a time. For instance, a tool may be preconfigured for a particular language, or a user of the tool may manually set the particular language for which the tool is configured. By being limited to handling a single language, an autocorrection tool may not work properly when presented with text in more than one language. For instance, when using a text messaging tool configured with autocorrection, a Spanish speaking user may type in the word “yo,” which means “I” in Spanish. However, if the autocorrection tool is configured for the English language, the autocorrection tool may mistake the word “yo” as a typographical error, and autocorrect it to the word “you” or to other word in the English language. Such an undesired autocorrection may be inconvenient to the user, who will have to manually convert the text back to its original, uncorrected form, if the user notices the autocorrection. If the user does not notice the undesired autocorrection, the message may be transmitted by the user to another user with the undesired autocorrection included therein, causing the meaning of the message to be changed and/or become unrecognizable.

Embodiments overcome these deficiencies, enabling autocorrection tools to handle multiple languages, and to automatically switch autocorrect functionality between languages based on context. For instance, in an embodiment, an autocorrection tool may be associated with multiple autocorrect dictionaries corresponding to multiple languages. For example, a first autocorrect dictionary may correspond to English, and include corrections for English language text. A second autocorrect dictionary may correspond to Italian, and include corrections for Italian language text. Further autocorrect dictionaries may be present corresponding to further languages. Furthermore, multiple autocorrect dictionaries may be present for a same language, including autocorrect dictionaries for different dialects of a same language (e.g., a first autocorrect dictionary may correspond to a first dialect of English, another autocorrect dictionary may correspond to a second dialect of English, etc.), autocorrect dictionaries for different subsets of the same language (e.g., different quantities of slang, etc.), etc.

In embodiment, a user may use a mobile device that includes an autocorrect tool (e.g., an autocorrect application or computer program that is executed by one or more processors). Based on a usage context of the mobile device, the autocorrect tool may automatically change between autocorrect dictionaries for a same language (e.g., switching on or off particular autocorrect terms, so that additional words/phrases are autocorrected in the language that were not previously autocorrected, or so one or more words/phrases are no longer autocorrected that were previously autocorrected). Alternatively, based on the usage context of the mobile device, the autocorrect tool may automatically change between autocorrect dictionaries between completely different languages.

In embodiments, various usage context characteristics may be tracked, and used to cause the automatic changing of autocorrect dictionaries. Such usage context characteristics may include one or more of:

(a) A location of the device: For instance, autocorrect functionality may be changed based on the particular country in which the mobile device is located, may be changed based on a geographic boundary (e.g., as may be indicated as a bounding shape on a map), may be changed based on a particular distance from a central location (e.g., 500 feet from downtown Bellevue, etc.), or may be changed based on another location definition.

(b) A time of day: Autocorrect functionality may be changed based on time information, such as a time of day, a day of the week, a particular month, a year, etc. For instance, autocorrect functionality in the morning (e.g., when someone communicates in text with relatives) may be changed relative to autocorrect functionality during a middle portion of the day (e.g., during work hours), etc. In another example, auto-correction functionality may be changed based on a particular day of the month, and particular day or month of the year, (e.g., when someone is abroad visiting family, as compared to visiting a conference abroad), etc.

(c) A user: Autocorrect functionality may be changed based on the particular user who is using a mobile device (e.g., the user that is logged into a notebook computer, etc.). For instance, a user that uses a mobile device may be able to speak one or more languages, and the autocorrect functionality of the mobile device may be configured to change to one of the languages that the user understands.

In embodiments, such adaptive autocorrect functionality may be implemented in a mobile device in various ways. For instance,FIG. 1shows a block diagram of a mobile electronic device102that is configured with adaptive autocorrect functionality, according to an example embodiment. As shown inFIG. 1, mobile electronic device102includes a display component104, a text input module106, an auto-correct module108, and storage110. Mobile electronic device102and its features are described as follows.

Mobile electronic device102may be any type of mobile computer or computing device such as handheld device (e.g., a Palm® device, a RIM Blackberry® device, a personal digital assistant (PDA)), a laptop computer, a notebook computer, a tablet computer (e.g., an Apple iPad™, a Microsoft Surface™, etc.), a netbook, a mobile phone (e.g., a smart phone such as an Apple iPhone, a Google Android™ phone, a Microsoft Windows® phone, etc.), or other type of mobile device.

Display component104is a display of mobile electronic device102that is used to display text (textual characters, including alphanumeric characters, arithmetic symbols, etc.) and optionally graphics to users of mobile electronic device102. For instance, display component104may include a display screen that is a portion of or an entirety of a surface of mobile electronic device102. The display screen may or may not be touch sensitive. Display component104may be an LED (light emitting diode)-type display, an LCD (liquid crystal display)-type display, a plasma display, or other type of display that may or may not be backlit.

Text-input module106is configured to receive text122provided by a user to mobile electronic device102. User-provided text122may include any number of characters, and any number of words. In some SMS embodiments, text122may be limited to 160 characters. Mobile electronic device102may include one or more user interface elements that may be used to enable the user to provide text122, such as a keyboard (e.g., the user may type in the text), a thumb wheel, a pointing device, a roller ball, a stick pointer, a touch sensitive display, any number of virtual interface elements (e.g., such as a virtual keyboard or other user interface element displayed in user interface112by display component104), a voice recognition system (e.g., the user may speak the text), and/or other user interface elements described elsewhere herein or otherwise known. In another embodiment, mobile electronic device102includes a haptic interface configured to interface mobile electronic device102with the user by the sense of touch, by applying forces, vibrations and/or motions to the user. For example, the user of mobile electronic device102may wear a glove or other prosthesis to provide the haptic contact.

Text input module106may store text122(e.g., in memory or other storage, such as in storage110), and may provide text122to display component104for display. For instance, as shownFIG. 1, text-input module106may transmit the received text to display component104as received text124. Text-input module106may provide received text124to display component104in any form (e.g., as character data, display pixel data, rasterized graphics, etc.). Display component104may display received text124as displayed text114in user interface112.

In an embodiment, user interface112is a graphical user interface (GUI) that includes a display region in which displayed text114may be displayed. For instance, user interface112may be a graphical window of a word processing tool or a messaging tool in which text may be displayed, and may optionally be generated by text input module106for display by display component104.

In an embodiment, auto-correct module108may receive received text124from text input module106. In embodiments, auto-correct module108may be included in text input module106, or may be separate from text input module106(as shown inFIG. 1). Auto-correct module108is configured to automatically correct received text124. For instance, in an embodiment, auto-correct module108may automatically correct received text according to a selected auto-correct dictionary128that is automatically selected from a plurality of auto-correct dictionaries that are stored in storage110, including a first auto-correct dictionary116, a second auto-correct dictionary118, etc. Any number of auto-correct dictionaries116,118, etc., may be present. Each auto-correct dictionary is an auto-correct dictionary for a corresponding language, and therefore the plurality of auto-correct dictionaries may include autocorrect dictionaries for different dialects of a same language, for different subsets of a same language, and/or for multiple entirely different languages.

Note that storage110may include one or more of any type of storage mechanism, including a magnetic disc (e.g., in a hard disk drive), an optical disc (e.g., in an optical disk drive), a magnetic tape (e.g., in a tape drive), a memory device such as a RAM (random access memory) device, a ROM (read only memory) device, etc., and/or any other suitable type of storage medium.

In an embodiment, auto-correct module108is configured to select selected auto-correct dictionary128from the plurality of auto-correct dictionaries based on usage information120. Usage information120includes information that is representative of a usage context of mobile electronic device102by a user. For instance, usage information120may include identity information for the user of mobile electronic device102(e.g., an identifier for the user, an identification of one or more languages spoken by the user, etc.), location information for mobile electronic device102(e.g., a current location of mobile electronic device102), time information (e.g., a current date and/or time), and/or further types of usage information.

As shown inFIG. 1, auto-correct module108generates corrected text126, which is a version of received text124that has been auto-corrected according to selected auto-correction dictionary128. For instance, one or more spelling errors may be have been corrected (e.g., changing the characters “netowrk” to “network”), one or more typing errors may have been corrected (e.g., changing the characters “The end.” to “The end.”), one or more instances of text formatting may have been performed (e.g., changing the characters “omg” to “Oh my God”), one or more special characters (e.g., characters that are not standard alphanumeric characters) may have been inserted (e.g., changing “:)” to a smiley face character “”), and/or other forms of auto-correction may have been automatically performed by auto-correct module108on received text124to generate corrected text126.

As shown inFIG. 1, text input module106receives corrected text126, and provides corrected text126to display component104to be displayed as displayed text114in user interface112in place of received text124. Text input module106may also store corrected text126in storage in place of received text124. It is noted that a user may decide not to accept the autocorrection of received text124to corrected text126, and may interact with user interface112to reject the autocorrection, causing received text124to again be displayed in user interface112(and corrected text126is discarded).

FIG. 2shows a flowchart200providing a process for adaptively autocorrecting text based on a usage context, according to an example embodiment. In an embodiment, mobile electronic device102may operate according to flowchart200. Flowchart200is described as follows. Further structural and operational embodiments will be apparent to persons skilled in the relevant art(s) based on the following description.

Flowchart200begins with step202. In step202, text provided by a user to the mobile electronic device is received. For instance, as shown inFIG. 1, text122may be received from a user by text input module106of mobile electronic device102. A user may provide text122by interacting with one or more user interface elements of mobile electronic device102in any manner, including according to user interface elements/techniques described elsewhere herein or otherwise known. For instance, the user may provide text122by typing text122into a keyboard, by speaking text122(via voice recognition), through gesture recognition, and/or according to any other technique.

In step204, the received text is displayed at a display component of the mobile electronic device. For instance, as shown inFIG. 1, text122provided by the user to text input module106may be transmitted to display component104as received text124for display as displayed text114. In one embodiment, as each character is input by the user to text122, the character may be provided for display in display component104.

In step206, an auto-correct dictionary is automatically selected from a plurality of auto-correct dictionaries based at least on usage information representative of a usage context of the mobile electronic device by the user. For example, as shown inFIG. 1, received text124may be received from text input module106by auto-correct module108. Auto-correct module108may be configured to automatically select one of the auto-correct dictionaries in storage110based on a usage context of mobile electronic device102. For instance, one or more of an identity of a user of mobile electronic device102, a location of a user of mobile electronic device102, and/or a current time may be used to automatically select an auto-correct dictionary. As shown inFIG. 1, auto-correct module108receives selected auto-correct dictionary128from storage110. By automatically selecting the auto-correct dictionary for the user, the user does not need to manually select an auto-correct dictionary, and an appropriate auto-correct dictionary may be used at all times. Note that in some embodiments, step206may occur before step202and/or step204.

Example embodiments for automatically selecting an auto-correct dictionary based on usage information are described further below.

In step208, the displayed text is automatically corrected according to the selected auto-correct dictionary. As shown inFIG. 1, auto-correct module108may automatically correct received text124according to selected auto-correct dictionary128. Auto-correct module108may replace terms (e.g., characters, words, phrases, symbols, etc.) in received text124with corrected terms to generate corrected text126. Corrected text126may be provided to display component104for display as displayed text114.

Auto-correct dictionaries, such as first auto-correct dictionary116and second auto-correct dictionary118, may be configured in any manner to enable autocorrection. For instance, in embodiment, an auto-correct dictionary may include a preconfigured list of terms (e.g., characters, words, phrases, and/or symbols) to be automatically corrected when they are input by a user as text122. Furthermore, the auto-correct dictionary may include a corresponding list of correction terms used as the automatic replacement text for the terms to be automatically corrected. For instance, a portion of an example English auto-correct dictionary is shown as follows:

yoyouyuoryourchangeitchange it(r)®where”swhere's. . .. . .
The first column of the above example auto-correct dictionary is the preconfigured list of terms that are to be automatically corrected. The second column of the above example is the list of correction terms corresponding to the terms in the first column. The correction terms in the second column are used as the replacement text for the corresponding terms in the first column.

For instance, the term “yuor” may be received by auto-correct module108in received text124. Auto-correct module108may be using the above example auto-correct dictionary, may detect the received term “yuor” in the first column of the above example auto-correct dictionary, and as a result may replace the received term “yuor” with the corresponding correction term of “your” in the second column. This correction may be included in corrected text126output by auto-correct module108.

In other embodiments, auto-correct module108may use other techniques/algorithms to automatically correct received text124to generate corrected text126.

In embodiments, step206of flowchart200may be performed in various ways, and auto-correct module108may be configured in various ways to select an auto-correct dictionary based on usage context. Examples embodiments for step206and auto-correct module108are described in the following subsections. It is noted that the embodiments described herein may be combined in any form, and an auto-correct dictionary may be selected to perform autocorrection based on any one or on any combination of usage contexts (user identity, location, time, etc.).

A. Automatically Correcting Text Based on User Identity

In an embodiment, autocorrection of text provided by a user may be performed based at least on an identity of the user that provided the text. In this manner, autocorrection is more likely to be performed for the user in a language understandable to the user.

For instance, in an embodiment, step206of flowchart200may operate according toFIG. 3.FIG. 3shows a step302for selecting an auto-correct dictionary for autocorrecting text based on an identity of a user, according to an example embodiment. In step302, an auto-correct dictionary is automatically selected from a plurality of auto-correct dictionaries based at least on an identity of the user. In an embodiment, auto-correct module108ofFIG. 1may operate according to step302, and usage information120may include identity information associated with the user.

An identity of the user of mobile electronic device102may be determined in various ways. For instance, information associated with an identity of a user may be accessed, such as by accessing a user profile associated with an account of the user, including an operating system login account of the user, a text message account of the user, an email account of the user, a social network account of the user, another account of the user, and/or in another manner.

For example,FIG. 4shows a block diagram of auto-correct module108configured to autocorrect text based on user profile information, according to an example embodiment. As shown inFIG. 4, auto-correct module108receives user profile information402. User profile information402may include various types of identity information for the user, including an identity404, language(s)406, and/or further information. Identity404indicates an identity of the user. Identity404may indicate the user identity in various ways, such as by name, by login identifier, by an identification number, and/or in other way. Language(s)406indicates one or more languages understandable to the user. For instance, language(s)406may indicate one or more different languages, dialects of a same language, subsets of a same language, and/or other language forms that are understandable to the user. Each language may be identified by name, by a corresponding language identifier (e.g., an identification number), or in other ways.

In an embodiment, when a user of mobile electronic device102ofFIG. 1provides text122, auto-correct module108may automatically select an auto-correct dictionary from the plurality of auto-correct dictionaries in storage110for a language spoken by the user, as identified in user profile information402ofFIG. 4.

For instance, as shown inFIG. 4, auto-correct module108may receive received text124and a user indication408. User indication408indicates the particular user that input received text124. For instance, user indication408may indicate the particular user by a login identifier for the user (when logged in), or in another manner. Auto-correct module108may compare the login identifier or other identifier for the user to identity404of user profile information402to determine whether user profile information402is the user's user profile information402. It is noted that a plurality of user profiles may be maintained for a plurality of users, each having a corresponding user profile information402. When user profile information402corresponding to the identifier for the user is determined, auto-correct module108may access language(s)406in the determined user profile information402to determine one or more languages understandable to the user. Auto-correct module108may then select an auto-correct dictionary from storage110(FIG. 1) corresponding to a language understandable to the user.

In one situation, language(s)406may indicate a single language understandable to the user (e.g., by a language identifier). In such case, auto-correct module108may locate and select an auto-correct dictionary in storage110for that particular language (e.g., an auto-correct dictionary that has a matching language identifier). In another example, language(s)406may indicate multiple languages understandable to the user (e.g., each identified by a corresponding language identifier). In such case, auto-correct module108may select one of the languages, such as by selecting one of the languages randomly, selecting a language indicated as highest priority (e.g., best understood by the user), based on other usage information, and/or selecting the language in another manner. Auto-correct module108may then locate and select an auto-correct dictionary in storage110for that selected language (e.g., an auto-correct dictionary that has a matching language identifier).

As shown inFIG. 4, auto-correct module108may receive the selected auto-correct dictionary as selected auto-correct dictionary128, may auto-correct received text124according to selected auto-correct dictionary128(e.g., according to step208of flowchart200), and may generate corrected text126to include the autocorrected text. As shown inFIG. 1, corrected text126may be displayed to the user by display component104as displayed text114.

B. Automatically Correcting Text Based on Location

In an embodiment, autocorrection of text provided by a user may be performed based at least on the location of the mobile device receiving the text from the user, at the time the text is received. In this manner, autocorrection is more likely to be performed for the user in a language understandable to the user.

For instance, if the user is using the mobile device in the United States, there is a reasonable likelihood that the user understands and desires to communicate in English. As such, the autocorrection functionality of the mobile device may be set to English. If, at another time, the user is using the mobile device in Italy, there is a reasonable likelihood that the user understands and desires to communicate in Italian. As such, the autocorrection functionality of the mobile device may be changed to Italian. The automatic changing of the autocorrection language in this manner may save the user from having to manually change the language whenever the user changes localities.

Such a location selection may be set to any granularity level of location region, including by country, province, state, county, city, municipality, neighborhood, a customized region (e.g., configured by the user interacting with a user interface element to draw a boundary around a region), or any other location region.

For instance, in an embodiment, step206of flowchart200may operate according toFIG. 5.FIG. 5shows a step502for selecting an auto-correct dictionary for autocorrecting text based on a location of a mobile device, according to an example embodiment. In step502, an auto-correct dictionary may be automatically selected from a plurality of auto-correct dictionaries based at least on a location of the mobile device. In an embodiment, auto-correct module108ofFIG. 1may operate according to step502, and usage information120may include location information associated with the mobile device.

A location of mobile electronic device102may be determined in various ways. For instance, a location of mobile electronic device102may be determined according to GPS (global positioning system) techniques, by multilateration of radio signals between multiple cell towers, and/or according to other techniques known to persons skilled in the relevant art(s).

For example,FIG. 6shows a block diagram of a system600that autocorrects text based on location, according to an example embodiment. As shown inFIG. 6, system600includes a location determiner602and auto-correct module108. System600may be implemented partially or entirely in a mobile device, such as mobile electronic device102ofFIG. 1. Location determiner602is configured to determine a location of the mobile device, and to output an indication of the location as determined location606. As shown inFIG. 6, auto-correct module108receives determined location606, and selects an auto-correct dictionary based at least on determined location606. Auto-correct module108automatically corrects received text124according to the selected auto-correct dictionary to generate corrected text126.

In an embodiment, step206may be performed according toFIG. 7.FIG. 7shows a flowchart700providing a process for selecting an auto-correct dictionary for autocorrecting text based on location, according to an example embodiment. In an embodiment, system600ofFIG. 6may operate according to flowchart700. Flowchart700is described as follows with reference to system600. Further structural and operational embodiments will be apparent to persons skilled in the relevant art(s) based on the following description.

Flowchart700begins with step702. In step702, the location of the mobile electronic device is determined by a location determiner of the mobile electronic device. As described above, a user of mobile electronic device102ofFIG. 1may provide text122. In an embodiment, location determiner602is configured to determine a location of mobile electronic device102when text122is received, and to output an indication of the location as determined location606. Location determiner602may be configured to determine a location of a mobile device in any manner, such as according to GPS techniques, by multilateration of radio signals from cell towers, and/or according to other techniques mentioned elsewhere herein or otherwise known. For instance, in an embodiment, location determiner602may include a GPS receiver that receives signals from GPS satellites, and uses GPS techniques to determine a location based on a timing of the received signals.

In step704, the determined location is compared to a plurality of geographic regions associated with the plurality of auto-correct dictionaries. As shown inFIG. 6, auto-correct module108receives determined location606. Determined location606indicates the determined location of the mobile device. For instance, determined location606may include coordinates of the location (e.g., latitude and longitude), or location determiner602may determine an identifier for the determined location (e.g., a country, state, county, city, neighborhood, a customized region, etc.), and may include the identifier in determined location606.

In an embodiment, each auto-correct dictionary stored in storage110(FIG. 1) has corresponding location information that identifies which location region(s) the auto-correct dictionary is to be used for. For instance, first auto-correct dictionary116may be an English language auto-correct dictionary, and may have location information that indicates the United States, England, and Australia as applicable location regions. Second auto-correct dictionary118may be an Italian language auto-correct dictionary, and may have location information that indicates Italy, Switzerland, San Marino, Vatican City, Slovenian Istria, and Istria County in Croatia as applicable location regions.

Auto-correct module108includes a comparator604. Comparator604is configured to compare determined location606to the location region information corresponding to each auto-correct dictionary in storage110to determine which auto-correct dictionary to use to perform auto-correction. For instance, as shown inFIG. 6, comparator604may receive location information608from each auto-correct dictionary. Comparator604may compare determined location606to location information608to determine which auto-correct dictionary(s) are applicable to determined location606. For instance, comparator604may determine that location coordinates received in determined location606indicate a location within the United States, which is a location region indicated for first auto-correct dictionary116. As a result, comparator604may provide a compare result that indicates first auto-correct dictionary116.

Referring back toFIG. 7, in step706, the auto-correct dictionary is selected from the plurality of auto-correct dictionaries based at least on the comparison. In an embodiment, auto-correct module108may select from storage110the auto-correct dictionary indicated by comparator604as being applicable to determined location606. In the event that multiple auto-correct dictionaries are indicated by comparator604to be associated with determined location606, auto-correct module108may select one of the multiple auto-correct dictionaries in any manner, such as by selecting one randomly, selecting one indicated as the highest priority relative to the other associated auto-correct dictionaries, selecting one based on other usage information, or selecting one in another manner.

As shown inFIG. 6, auto-correct module108may receive the selected auto-correct dictionary as selected auto-correct dictionary128, may auto-correct received text124according to selected auto-correct dictionary128, and may generate corrected text126. Corrected text126may be displayed to the user by display component104as displayed text114, as shown inFIG. 1.

C. Automatically Correcting Text Based on Time Information

In an embodiment, autocorrection of text provided by a user may be performed based at least on time information indicating a time and/or date at/on which the mobile device receives the text from the user. In this manner, autocorrection is more likely to be performed for the user in a language understandable to the user.

For instance, a user may be a native of Italy that is working in the United States. If the user is using the mobile device during work hours, there is a reasonable likelihood that the user desires to communicate in English in the user's workplace (if English is the primary language used in the user's workplace). As such, the autocorrection functionality of the mobile device may be automatically set to English during work hours. If at other times of the day, and/or the weekends, the user is using the mobile device in a more casual setting (e.g., to communicate with friends and/or family), there is a reasonable likelihood that the user may desire to communicate in the user's native language of Italian. As such, the autocorrection functionality of the mobile device may be automatically changed to Italian during non-work hours (e.g., mornings, evenings, and weekends). The automatic changing of the autocorrection language in this manner may save the user from having to manually change the language multiple times per day.

It is noted that autocorrect functionality may be set and changed for any granularity level of time period, including minutes, hours, days, weeks, months, portions of weeks (e.g., particular weekdays/weekend), portions of days (e.g., morning, afternoon, evening, etc.), or any other time period. The user may be enabled to set a schedule of times/dates at which particular auto-correct dictionaries are used. Alternatively, auto-correct module108may use machine learning and/or other techniques (e.g., based on a history of the user's activities) to automatically predict which language the user may prefer to use for autocorrection at particular times/dates, and thereby to automatically select the auto-correct dictionaries the user may use at particular times/dates.

For instance, in an embodiment, step206of flowchart200may operate according toFIG. 8.FIG. 8shows a step802for selecting an auto-correct dictionary for autocorrecting text based on time information, according to an example embodiment. In step802, an auto-correct dictionary is automatically selected from a plurality of auto-correct dictionaries based at least on time information indicating a time at which the displayed text is displayed. In an embodiment, auto-correct module108ofFIG. 1may operate according to step802, and usage information120may include time information associated with the mobile device.

A current time may be determined in various ways. For instance, mobile electronic device102may include a clock that indicates time/date, may include a calendar tool associated with a user that indicates time/date, and/or may determine time according to another mechanism known to persons skilled in the relevant art(s).

FIG. 9shows a block diagram of a system900that autocorrects text based on time information, according to an example embodiment. As shown inFIG. 9, system900includes a calendar tool902a clock904, and an auto-correct module108. System900may be implemented partially or entirely in a mobile device, such as mobile electronic device102ofFIG. 1. Calendar tool902is a calendar tool executing on a mobile device, such as Microsoft® Outlook® or other calendar tool/application, that enables a user to schedule appointments (e.g., meetings, tasks, etc.) at various times. Clock904is a clock mechanism (e.g., a computer program, etc.) of the mobile device that indicates a current time908(e.g., a time at or after which text to be autocorrected is received). Examples of clock904are well known to persons skilled in the relevant art(s).

In an embodiment, auto-correct module108may access calendar tool902to determine one or more appointments of the user, and to thereby change autocorrect dictionaries based on the contents of the appointments. As shown inFIG. 6, auto-correct module108may receive current time908from clock904, and may access calendar tool902to determine if the user has an appointment at the time indicated by current time908. Auto-correct module108may extract appointment information910from the appointment. Appointment information910may include various information, such as indicating a location at which a meeting is occurring (which may be used to select an auto-correct dictionary as described above), indicating a language in which a meeting is being conducted, or other appointment related information. Auto-correct module108may select an auto-correct dictionary based at least on appointment information910received from calendar tool902for the current time. Auto-correct module108automatically corrects received text124according to the selected auto-correct dictionary to generate corrected text126.

In an embodiment, step206may be performed according toFIG. 10.FIG. 10shows a flowchart1000providing a process for selecting an auto-correct dictionary for autocorrecting text based on time, according to an example embodiment. In an embodiment, system900ofFIG. 9may operate according to flowchart1000. Flowchart1000is described as follows with reference to system900. Further structural and operational embodiments will be apparent to persons skilled in the relevant art(s) based on the following description.

Flowchart1000begins with step1002. In step1002, a date and time at which the displayed text is displayed is determined. As described above, a user of mobile electronic device102ofFIG. 1may provide text122. In an embodiment, clock904is configured to indicate a current time. Current time908may be accessed by auto-correct module108when text122is received to determine a time and/or date at which received text124is received.

In step1004, a calendar associated with the user is accessed for an appointment at the determined date and time. As shown inFIG. 9, auto-correct module108includes an appointment analyzer906. Appointment analyzer906is configured to analyze an appointment received from calendar tool902for information that may be used to select an auto-correct dictionary. For instance, as shown inFIG. 9, appointment analyzer906receives current time908. Appointment analyzer906may access an appointment scheduled in calendar tool902occurring at current time908to retrieve appointment information910. Appointment information910may include the contents of the appointment occurring at current time908, indicating one or more of the appointment attendees, a location of the appointment/meeting, etc. Appointment analyzer906may analyze appointment information910to determine a location of the user (e.g., at a location of the meeting).

Referring back toFIG. 10, in step1006, the auto-correct dictionary is selected from the plurality of auto-correct dictionaries based at least on information associated with the appointment. In an embodiment, auto-correct module108may select from storage110the auto-correct dictionary indicated by appointment analyzer906for a language that is applicable to the location determined by analyzing appointment information910. In the event that multiple auto-correct dictionaries are indicated by appointment analyzer906to be associated with the determined location, auto-correct module108may select one of the multiple auto-correct dictionaries in any manner, such as by selecting one randomly, selecting one indicated as the highest priority relative to the other associated auto-correct dictionaries, selecting one based on other usage information, or selecting one in another manner.

As shown inFIG. 9, auto-correct module108may receive the selected auto-correct dictionary as selected auto-correct dictionary128, may auto-correct received text124according to selected auto-correct dictionary128, and may generate corrected text126. Corrected text126may be displayed to the user by display component104as displayed text114, as shown inFIG. 1.

D. Further Embodiments for Automatically Correcting Text

As mentioned above, any of the usage information described herein may be used in combination to select an auto-correct dictionary. Furthermore, although auto-correct dictionaries are shown inFIG. 1as being stored in mobile electronic device102(in storage110), in an embodiment, a selected auto-correct dictionary may be retrieved by mobile electronic device102from a remote device (e.g., a server, such as a “cloud”-based server) over a network (e.g., a local area network (LAN), or a wide area network (WAN) such as the Internet). Furthermore, although usage information120is described above as being determined in mobile electronic device102, in an embodiment, usage information120may be determined remotely from mobile electronic device102, and transmitted thereto. For instance, a remote device, such as a server (e.g., a “cloud”-based server) may be used to determine an identity of the user (e.g., by accessing a remotely maintained user account, etc.), to determine a location of the user (e.g., by location information input by the user to a social network), to determine time information (e.g., by accessing a remotely stored calendar, etc.) and/or to determine further types of usage information.

III. Example Computing Device Embodiments

For instance, in an embodiment, one or more of text input module106, auto-correct module108, location determiner602, comparator604, calendar tool902, clock904, appointment analyzer906, flowchart200, step302, step502, flowchart700, step802, and/or flowchart1000may be implemented together in a system-on-chip (SoC). The SoC may include an integrated circuit chip that includes one or more of a processor (e.g., a microcontroller, microprocessor, digital signal processor (DSP), etc.), memory, one or more communication interfaces, and/or further circuits and/or embedded firmware to perform its functions.

FIG. 11depicts an exemplary implementation of a computer1100in which embodiments of the present invention may be implemented. For example, mobile electronic device102may be implemented in one or more computer systems similar to computer1100, including one or more features of computer1100and/or alternative features. The description of computer1100provided herein is provided for purposes of illustration, and is not intended to be limiting. Embodiments of the present invention may be implemented in further types of computer systems, as would be known to persons skilled in the relevant art(s).

As shown inFIG. 11, computer1100includes one or more processors1102, a system memory1104, and a bus1106that couples various system components including system memory1104to processor1102. Bus1106represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. System memory1104includes read only memory (ROM)1108and random access memory (RAM)1110. A basic input/output system1112(BIOS) is stored in ROM1108.

Computer1100also has one or more of the following drives: a hard disk drive1114for reading from and writing to a hard disk, a magnetic disk drive1116for reading from or writing to a removable magnetic disk1118, and an optical disk drive1120for reading from or writing to a removable optical disk1122such as a CD ROM, DVD ROM, or other optical media. Hard disk drive1114, magnetic disk drive1116, and optical disk drive1120are connected to bus1106by a hard disk drive interface1124, a magnetic disk drive interface1126, and an optical drive interface1128, respectively. The drives and their associated computer-readable media provide nonvolatile storage of computer-readable instructions, data structures, program modules and other data for the computer. Although a hard disk, a removable magnetic disk and a removable optical disk are described, other types of computer-readable storage media can be used to store data, such as flash memory cards, digital video disks, random access memories (RAMs), read only memories (ROM), and the like.

A number of program modules may be stored on the hard disk, magnetic disk, optical disk, ROM, or RAM. These programs include an operating system1130, one or more application programs1132, other program modules1134, and program data1136. Application programs1132or program modules1134may include, for example, computer program logic (e.g., computer program code or instructions) for implementing text input module106, auto-correct module108, location determiner602, comparator604, calendar tool902, clock904, appointment analyzer906, flowchart200, step302, step502, flowchart700, step802, and/or flowchart1000(including any step of flowcharts200,700, and1000), and/or further embodiments described herein.

A user may enter commands and information into the computer1100through input devices such as keyboard1138and pointing device1140. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, a touch screen and/or touch pad, a voice recognition system to receive voice input, a gesture recognition system to receive gesture input, or the like. These and other input devices are often connected to processor1102through a serial port interface1142that is coupled to bus1106, but may be connected by other interfaces, such as a parallel port, game port, or a universal serial bus (USB).

A display component1144is also connected to bus1106via an interface, such as a video adapter1146. In addition to the monitor, computer1100may include other peripheral output devices (not shown) such as speakers and printers.

Computer1100is connected to a network1148(e.g., the Internet) through an adaptor or network interface1150, a modem1152, or other means for establishing communications over the network. Modem1152, which may be internal or external, may be connected to bus1106via serial port interface1142, as shown inFIG. 11, or may be connected to bus1106using another interface type, including a parallel interface.

As used herein, the terms “computer program medium,” “computer-readable medium,” and “computer-readable storage medium” are used to generally refer to media such as the hard disk associated with hard disk drive1114, removable magnetic disk1118, removable optical disk1122, as well as other media such as flash memory cards, digital video disks, random access memories (RAMs), read only memories (ROM), and the like. Such computer-readable storage media are distinguished from and non-overlapping with communication media (do not include communication media). Communication media typically embodies computer-readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wireless media such as acoustic, RF, infrared and other wireless media. Embodiments are also directed to such communication media.

As noted above, computer programs and modules (including application programs1132and other program modules1134) may be stored on the hard disk, magnetic disk, optical disk, ROM, or RAM. Such computer programs may also be received via network interface1150, serial port interface1142, or any other interface type. Such computer programs, when executed or loaded by an application, enable computer1100to implement features of embodiments of the present invention discussed herein. Accordingly, such computer programs represent controllers of the computer1100.