Classification of a string as a typographical error based on feedback

A computing device hosting a server identifies one or more potential typographical errors in a work using an initial reference. The computing device sends data indicative of the presence of the potential typographical errors to users. The computing device collects feedback for the work from the users. The feedback for the work indicates whether the potential typographical errors are author-intended strings. The computing device combines the user feedback for the work with user feedback for other works and sorts the combined user feedback based on one or more selected parameters. The computing device determines, based on the sorted user feedback, that one or more of the potential typographical errors includes an acceptable string and updates the initial reference to include the acceptable string.

BACKGROUND OF THE INVENTION

Publishing can include distribution of printed works, such as books, newspapers, magazines, journals, etc. and the electronic distribution of a work to electronic resources, such as electronic books (e-books), websites, blogs, etc. Typically, in the publishing industry, a publisher corrects typographical errors (typos) made in the author's work. Conventional solutions, such as typo detection tools, can help authors find the typos in their works before they submit their works to a publisher. However, such conventional solutions have limited capabilities in defining the standard for identifying typos. Typically, traditional solutions use a general dictionary to define the scope of errors.

Certain types of spellings could be typos in some situations and may not be typos in other situations. For example, in the computer industry the term “Bluetooth” is usually constructed as one word. According to a general dictionary, “Bluetooth” may be identified as a typo and may be recommended to be separated into two words and/or to not capitalize the letter “B.” Conventional typo detection solutions may result in an inefficient use of resources by incorrectly identifying typos in works which may result in publishers attempting to make corrections in a work that are not warranted.

DETAILED DESCRIPTION OF THE PRESENT INVENTION

Methods and systems for progressively improving typographical error detection based on author intent are described. In one embodiment, a computing device hosting a server identifies one or more potential typographical errors (e.g., spelling errors, grammatical errors, punctuation errors, language errors) in a work (e.g., electronic book) using an initial reference (e.g., dictionary). The computing device sends data indicative of the presence of the potential typographical errors to users. The computing device collects feedback for the work from the users. The feedback for the work indicates whether the potential typographical errors are author-intended strings. The computing device combines the user feedback for the work with user feedback for other works and sorts the combined user feedback based on one or more selected parameters (e.g., by author, by topic, by title). The computing device determines, based on the sorted user feedback, that one or more of the potential typographical errors includes an acceptable string and updates the initial reference to include the acceptable string. In one embodiment, the computing device generates one or more parameter-specific references (e.g., author-specific dictionary, title-specific dictionary, publisher-specific dictionary, topic-specific dictionary) based, at least in part, on the acceptable string.

Embodiments provide an efficient use of auditing resources to identify potential typographical errors by allowing users to expand or decrease the scope of a reference based on author intent. Embodiments continuously update references (e.g., dictionaries, grammatical rules) based on user feedback to provide more accurate results in identifying potential typographical errors (e.g., typographical errors, grammatical errors, punctuation errors, language errors) in works.

FIG. 1is a block diagram of exemplary network architecture100, in which embodiments described herein may operate. The network architecture100may include a typographical error system120and one or more user devices104connected via a network106. Network106may be a public network such as the Internet or private a network such as a local area network (LAN) or wide area network (WAN).

The user device104may be a portable computing device such as an electronic book reader or a tablet computer (e.g., that includes a book reader application). Other examples of portable computing devices include cellular telephones, personal digital assistants (PDAs), portable media players, netbooks, laptop computers, and the like. The user device104may also be other types of computing devices such as a desktop computer, a set-top box, a gaming console, a television, etc. that may not traditionally be considered to be portable.

A user101can be any user auditing potential typographical errors in a work. Examples of typographical errors can include, and are not limited to, spelling errors, grammatical errors, punctuation errors, and language errors. A potential typographical error hereinafter refers to one or more strings in a work that are identified as a typographical error based on an initial reference (e.g., dictionary, grammatical rules) and is to be audited by a user101. A string is a sequence of characters (e.g., alphanumeric characters, symbols, etc.). Examples of a user101can include, and are not limited to, an author of a work, a representative of a publisher of a work, and a quality assurance user.

A work hereinafter refers to content, which is created by one or more authors, to be published. Publishing can refer to making author created content available to the general public. Publishing can include distribution of printed works, such as books, newspapers, magazines, journals, etc. Publishing can include electronic distribution of a work to electronic resources, such as electronic books (e-books), websites, blogs, etc.

A work can be a digital media item. The user devices104are variously configured with different functionality to enable consumption of one or more types of digital media items. As used herein, a digital media item is defined as an electronic file that can be executed or loaded using software, firmware or hardware configured to present the digital media item to a user. A digital media item typically includes images that can be read by a user and/or audio that can be listened to by the user. Examples of digital media items include electronic books (ebooks), electronic magazines, digital newspapers, digital audio books, electronic journals, real simple syndication (RSS) feeds, digital movies, electronic comic books, digital music, software applications, etc. A digital media item may include a single work or a collection of works. For example, a digital media item may include a single book, or an anthology. Additionally, a single digital media item may include, for example, a written word portion (e.g., an electronic publication).

A data store130can store any number of works by any number of authors. A data store130can be a persistent storage unit. A persistent storage unit can be a local storage unit or a remote storage unit. Persistent storage units can be a magnetic storage unit, optical storage unit, solid state storage unit, electronic storage units (main memory), or similar storage unit. Persistent storage units can be a monolithic device or a distributed set of devices. A ‘set’, as used herein, refers to any positive whole number of items.

A typographical error system120can communicate with user devices104via one or more networks106to manage the auditing of works stored in the data store130for typographical errors. The typographical error system120may reside on one or more machines (e.g., server computers, desktop computers, etc.). A typographical error system120can include a network-accessible server-based functionality (typographical error server125) or other data processing equipment. The data store130is accessible by the typographical error system120. In one embodiment, the typographical error system120is maintained by and hosted in a service provider in a service provider environment.

The typographical error server125includes a progressive reference learning module150that can determine whether potential typographical errors (e.g., spelling errors, punctuation errors, grammatical errors, and language errors) are author-intended strings for a work based on feedback received from the users101. Examples of an author-intended string can include, and are not limited to, author-intended spelling of one or more strings, author-intended punctuation, author-intended grammar, and author-intended use of one or more foreign language words. The progressive reference learning module150can automatically identify potential typographical errors in works and send data indicative of the presence of the potential typographical errors for the works to any number of users101. The progressive reference learning module150can receive feedback from the users101indicating whether the potential typographical errors are author-intended strings.

The progressive reference learning module150can combine the user feedback for the work with user feedback for other works and sort the combined user feedback, based on a parameter, to determine whether the potential typographical errors are acceptable strings, rather than actual errors. For example, the progressive reference learning module150may sort the user feedback by topic. The progressive reference learning module150can compile statistics for the sorted user feedback to determine whether the potential typographical errors are acceptable strings. One embodiment of using statistics to determine whether the potential typographical errors are acceptable strings is described in greater detail below in conjunction withFIG. 3.

The progressive reference learning module150can automatically create and/or update references to reflect the potential typographical errors that have been identified as acceptable strings. One embodiment of creating and/or updating references is described in greater detail below in conjunction withFIG. 3. The data store130can store any number of references. Examples of references can include, and are not limited to, dictionaries and grammatical references. In one embodiment, a grammatical reference includes a set of grammatical rules. The references can be parameter-specific references. Examples of parameters can include, and are not limited to, an author of a work, a title of a work, a publisher of a work, and a topic associated with the work.

For example, a particular science-fiction author may have created a spelling for a fictional planet, such as “Coruscant,” for a work (e.g., science-fiction novel). Coruscant may have been identified in the work as a potential typographical error based on a general dictionary. The user feedback for the work may indicate that Coruscant is an author-intended spelling and may associate Coruscant with a science-fiction topic and the particular science-fiction author. The combined feedback for the work and other works may be sorted for the science-fiction topic and statistics for the sorted data may indicate that “Coruscant” is an acceptable string. The progressive reference learning module150may update a science-fiction specific dictionary with an entry indicating that Coruscant is an acceptable spelling. The combined feedback for the work and other works may be sorted for the author and statistics for the sorted data may indicate that “Coruscant” is also an acceptable string. The progressive reference learning module150may also update an author-specific dictionary for the particular author with an entry for Coruscant. The progressive reference learning module150is described in greater detail below with reference toFIG. 2.

Users101may communicate with the progressive reference learning module150via a user device104. The user device104can include an auditing module140to receive the data indicative of the presence of the potential typographical errors for a work from the progressive reference learning module150and to present the potential typographical errors and the corresponding indicative data to a user101via a user interface in the user device104. The auditing module140can receive user input from the user101indicating whether the potential typographical errors are author-intended strings and can provide the user feedback to the progressive reference learning module150. The auditing module140is described in greater detail below with reference toFIG. 4.

Communication between the user device104and the typographical error system120may be enabled via any communication infrastructure. One example of such an infrastructure includes a combination of a wide area network (WAN) and wireless infrastructure, which allows a user101to use the user device104to consume items (e.g., digital media items) without being tethered to the typographical error system120via hardwired links. The wireless infrastructure may be provided by one or multiple wireless communications systems, such as wireless communications system110. Wireless communication system110may be a wireless fidelity (WiFi) hotspot connected with the network106. Wireless communication system110may also be a wireless carrier system that can be implemented using various data processing equipment, communication towers, etc. Alternatively, or in addition, the wireless carrier system may rely on satellite technology to exchange information with the user device104.

The communication infrastructure may also include a communication-enabling system115that serves as an intermediary in passing information between the typographical error system120and the wireless communication system110. The communication-enabling system115may communicate with the wireless communication system110(e.g., a wireless carrier) via a dedicated channel, and may communicate with the typographical error system120via a non-dedicated communication mechanism (e.g., a public Wide Area Network (WAN) such as the Internet).

FIG. 2is a block diagram of one embodiment of a progressive reference learning module200, which may correspond to the progressive reference learning module150ofFIG. 1. In one embodiment, the progressive reference learning module200includes a potential error identifier sub-module203, an indicative data sub-module205, a distribution sub-module207, and a feedback analysis sub-module209. In alternative embodiments, one or more of these sub-modules may be combined into a single sub-module. Additionally, the functionality of any of these sub-modules may be separated into multiple distinct sub-modules.

The potential error identifier sub-module203can analyze a work251to identify one or more potential typographical errors in the work251. A data store250, which is accessible by the progressive reference learning module200, can store any number of works251. The data store250can store data for each work that associates a work with one or more parameters. Examples of a parameter can include, and are not limited to an author of a work, a title of a work, a publisher of a work, and a topic associated with the work. In one embodiment, the data store250is coupled to the progressive reference learning module200. A data store250can be a persistent storage unit. A persistent storage unit can be a local storage unit or a remote storage unit. Persistent storage units can be a magnetic storage unit, optical storage unit, solid state storage unit, electronic storage units (main memory), or similar storage unit. Persistent storage units can be a monolithic device or a distributed set of devices. A ‘set’, as used herein, refers to any positive whole number of items.

The potential error identifier sub-module203can use a reference253that is stored in the data store250to identify the one or more potential typographical errors in a work251. Examples of a reference253can include, and are not limited to, a dictionary and a grammatical reference. In one embodiment, a grammatical reference is a set of grammatical rules. The potential error identifier sub-module203can apply the set of grammatical rules to a work251to identify one or more potential typographical errors in a work251. A reference253can be a general reference or a parameter-specific reference (e.g., author-specific dictionary, title-specific dictionary, publisher-specific dictionary, topic-specific dictionary). The potential error identifier sub-module203can compare the content (e.g., strings) of a work251to entries in a dictionary. The potential error identifier sub-module203can identify strings in the work that do not match any entries in the dictionary as potential typographical errors.

The indicative data sub-module205can create data255indicative of the potential typographical errors in the work251, which has been analyzed by the potential error identifier sub-module203. The indicative data255can be a data structure. The indicative data255can include an entry for each potential typographical error that has been identified in the work251. A potential typographical error can include any number of strings in a work. Entries in the indicative data255can include, for example, and not limited to, the one or more strings identified as the potential typographical error, the position (e.g., byte offset) of the string(s) in the work, and the context for the string(s) in the work. A string is a sequence of characters (e.g., alphanumeric characters, symbols, etc.). Examples of the context can include, and are not limited to, a sentence that includes the string(s), a paragraph that includes the string(s), a page of the work that includes the string(s), a number of words that precede and/or follow the string(s). The data store250can store indicative data255for any number of works251.

The distribution sub-module207can provide the indicative data255for a work251to user devices for one or more auditors to use to audit the potential typographical errors for the work. The distribution sub-module207can access distribution data263that is stored in the data store250to determine which users and/or user devices to send the indicative data255to. The distribution data263can include a mapping of works251to users and/or user devices. The distribution data263can be user defined. The distribution sub-module207can track which users and/or user devices have received the indicative data255for a work251in the distribution data263. The distribution data263can be a data structure that includes for example, and not limited to, a user identifier, a user device identifier, and a work identifier.

The feedback analysis sub-module209can receive user feedback257for the work from the users and can store the user feedback257in the data store250. The data store250can store user feedback267for other works. The feedback analysis sub-module209can combine the user feedback257for the work with user feedback267for the other works. The feedback analysis sub-module209can sort the combined user feedback269based on a parameter (e.g., author, title, publisher, and topic). The feedback analysis module209can determine which parameters to use based on configuration data265that is stored in the data store250and can sort the combined user feedback269for the selected parameters. The configuration data265can be user-defined. The user feedback257,267,269can include, for example, and not limited to a user identifier, a work identifier, at least one string identified as a potential typographical error, a position (e.g., byte offset) of the string in the work, a decision indicating whether the corresponding string is an author-intended string, at least one parameter associated with the corresponding string, and other information related to the decision, including, but not limited to, a confidence level of the decision.

The feedback analysis sub-module209can compile one or more statistics259for the sorted user feedback and use the statistic(s)259to determine whether a potential typographical error is an acceptable string and store the determination as a result261in the data store250. Examples of a statistic259can include, and are not limited to, a number of times users mark a potential typographical error in the sorted user feedback as an author-intended string, a number of times a subset of users marks a potential typographical error in the sorted user feedback as an author-intended string, a total number of times a potential typographical error is marked in the sorted user feedback as an author-intended string, a percentage of the sorted user feedback that marked the potential typographical error as an author-intended string, a percentage of the users that marked the potential typographical error as an author-intended string, a number of times each potential typographical error is marked as an author-intended string for a parameter, etc. The statistics259can be stored in the data store250.

The feedback analysis sub-module209can determine whether one or more of the statistics259satisfy a threshold that is stored in the configuration data265. For example, the feedback analysis sub-module209can determine whether a statistic259exceeds a threshold. One embodiment of determining whether the potential typographical errors include an acceptable string using the statistics is described in greater detail below in reference toFIG. 3. If the potential typographical error in a work (e.g., book) is not an acceptable string (e.g., a commonly accepted spelling) based on the statistics259, the feedback analysis sub-module209can associate, based on the user feedback257,267, an alternative string with an actual error. If the potential typographical error in a work (e.g., book) is an acceptable string (e.g., a commonly accepted spelling) based on the statistics259, the feedback analysis sub-module209can modify one or more references253(e.g., dictionary) to include the acceptable string. The reference253can be a general reference or a parameter-specific reference. One embodiment of modifying a reference is described in greater detail below in conjunction withFIG. 3. The modified reference253can be used to identify potential typographical errors in works251.

The feedback analysis sub-module209can identify, for example, using the user feedback257,267, one or more parameters (e.g., author, title, publisher, and topic) that are associated with the acceptable strings and can update the references253that correspond to the parameters to represent the acceptable strings. One embodiment of updating a parameter-specific reference is described in greater detail below with reference toFIG. 3.

For example, a science-fiction term in a work by a particular science-fiction author is detected one hundred twelve times in the work. The threshold may be that at least 75% of the sorted combined user feedback257should indicate that the particular science-fiction term is an author-intended string in order to satisfy the threshold. If the statistic259exceeds the threshold, the feedback analysis sub-module209can update a science-fiction dictionary and/or a dictionary for the particular science-fiction author to represent the acceptable string for the particular science-fiction term.

FIG. 3is a flow diagram of an embodiment for a method300of progressively improving typographical error detection based on author intent. The method300may be performed by processing logic that may comprise hardware (circuitry, dedicated logic, etc.), software (such as is run on a general purpose computer system or a dedicated machine), or a combination of both. In some embodiments, the method300is performed by a typographical error system (e.g., by a progressive reference learning dictionary module150running on typographical error system120ofFIG. 1).

At block301, processing logic identifies one or more potential typographical errors in a work using an initial reference. Examples of a reference can include, and are not limited to, a dictionary and a grammatical reference. An initial reference can be of any language. An initial reference can include, and is not limited to, a published reference (e.g., Webster's Dictionary, Oxford Dictionary of English, etc.), an online reference (e.g., online dictionary), etc. An initial reference can be a parameter-specific reference that is created by the progressive reference learning module and stored in a data store that is coupled to the progressive reference learning module. Examples of a parameter-specific reference can include, and are not limited to, a topic-specific reference, an author-specific reference, a title-specific reference, and a publisher-specific reference. In one embodiment, processing logic can receive a selection of the initial reference (e.g., a parameter-specific dictionary, a published dictionary, an online dictionary) to be used to identify the potential typographical errors.

At block303, processing logic creates and stores data indicative of the potential typographical errors in the work. The indicative data can include, and is not limited to, the one or more strings identified as the potential typographical error, the position (e.g., byte offset) of the string(s) in the work, and the context for the string(s) in the work. Examples of the context can include, and are not limited to, a sentence that includes the string(s), a paragraph that includes the string(s), a page of the work that includes the string(s), a number of words that precede and/or follow the string(s). At block305, processing logic sends the indicative data for the potential typographical errors to at least one user (e.g., author, publisher representative, quality assurance user).

At block307, processing logic receives user feedback for the potential typographical errors for the work. The user feedback for the work indicates whether or not a user has identified a potential typographical error as an author-intended string. The user feedback can include, for example, and not limited to, a user identifier, a work identifier, at least one string identified as a potential typographical error, a position (e.g. by offset) of the string in the work, a decision indicating whether the corresponding string is an author-intended string, a confidence level of the decision, at least one parameter associated with a corresponding author-intended string, and an alternative string for a corresponding actual error.

At block309, processing logic combines the user feedback for the work with user feedback for other works. The user feedback for other works can be stored in the data store. At block311, processing logic sorts the combined user feedback for at least one parameter. Examples of a parameter can include, and are not limited to, a topic, an author, a title, and a publisher. In one embodiment, processing logic determines which parameter(s) to use based on configuration data that is stored in a data store. Examples of topics can include, and are not limited to, dialog, medical, medieval, fantasy, science fiction, mathematical, an author-defined topic, a topic associated with a Book Industry Standards and Communications (BISAC) code, etc. The BISAC Subject Headings List, also known as the BISAC Subject Codes List or BISAC Code, is a standard used by many companies to categorize books based on topical content.

For example, processing logic sorts the combined user feedback by author. In another example, processing logic sorts the combined user feedback by topic. Processing logic can use one or more parameters to sort the combined user feedback. For example, author may have multiple works in several topics, and processing logic sorts the combined user feedback by author and by topic.

At block313, processing logic compiles, based on the sorted user feedback, one or more statistics for the potential typographical errors for the parameter(s). Examples of statistics can include, and are not limited to, a number of times users mark potential typographical errors in the user feedback as an author-intended strings, a number of times a subset of users mark potential typographical errors in the user feedback as an author-intended strings, a total number of times the potential typographical errors are marked in the user feedback as an author-intended strings, a percentage of the user feedback that marked the potential typographical errors as author-intended strings, a percentage of the users that marked the potential typographical errors as an author-intended strings, a number of times the potential typographical errors are marked as an author-intended strings for one or more parameters, etc. For example, processing logic can determine the number of times each potential typographical error is marked as an author-intended string for a specific author, specific title, specific publisher, specific topic (e.g., dialog, medical, medieval, fantasy, science fiction, mathematical). The statistics can be compiled for each potential typographical error.

Processing logic can compile statistics for any number of parameters. For example, processing logic may sort the user feedback for a specific title and compile statistics for the specific title. In another example, processing logic may sort the user feedback stored in the data store based on the science-fiction topic and create statistics based on the science-fiction topic.

At block315, processing logic determines whether a potential typographical error is an acceptable string by determining whether the one or more statistics satisfy a threshold. For example, processing logic determines whether a percentage statistic exceeds a threshold percentage. For example, processing logic determines whether the potential typographical error is a generally accepted correct spelling in the combined user feedback that is sorted for the one or more parameters. Processing logic may sort the combined user feedback by author and compile a statistic indicating that 85% of the sorted combined user feedback identifies the potential typographical error is a generally accepted correct spelling. The threshold percentage may be 70%. Processing logic determines that the statistic (e.g., 85%) exceeds the threshold percentage and determines that potential typographical error is a generally accepted correct spelling in groups of books for the same author. The threshold can be user-defined. The threshold can be stored in configuration data that is stored in the data store. If the potential typographical error is an acceptable string (block315), processing logic associates, based on the user feedback, the acceptable string(s) with one or more parameters at block317.

The parameter-based references may have a hierarchical nature. For example, there may be three levels in a hierarchy. For example, there may be a global level dictionary, a topic level dictionary, and an author level dictionary. Processing logic may associate the acceptable string(s) with one or more parameter-based references in the hierarchy based on the user feedback at block317. For example, processing logic may sort the combined user feedback based on the title “The Day the Earth Stood Still.” Processing logic may identify that a certain potential typographical error (e.g., the phrase “Klaatu barada nikto”) is an acceptable string at the title level for the title “The Day the Earth Stood Still.” Processing logic may associate “Klaatu barada nikto” with a title-based dictionary.

Processing logic may sort the combined user feedback for the topic “science-fiction.” Processing logic may then determine that the same potential typographical error (e.g., the phrase “Klaatu barada nikto”) is an acceptable string at a higher level in the hierarchy, for example, at the science-fiction topic level. Processing logic may associate “Klaatu barada nikto” with a topic-based dictionary, such as a science-fiction based dictionary. Processing logic may also determine that the same potential typographical error (e.g., the phrase “Klaatu barada nikto”) is not an acceptable string at a more global level in the hierarchy, for example, at non-science-fiction topics level. Processing logic may not associate “Klaatu barada nikto” with other topic-based dictionaries or the global dictionary.

At block319, processing logic updates the initial reference to include the acceptable string. In one embodiment, processing logic can generate one or more parameter-specific references based, at least in part, on the modifications to the initial reference. Generating a parameter-specific reference can include creating a parameter-specific reference and updating an existing parameter-specific reference. For example, the initial dictionary is an existing parameter-specific reference and processing logic modifies the existing parameter-specific reference to represent the acceptable string. In another example, the initial reference is a standard dictionary and processing logic modifies the standard dictionary to include the acceptable string and creates a parameter-specific dictionary.

Processing logic can modify a grammatical reference by updating one or more grammatical rules associated with the grammatical reference. Processing logic can modify a dictionary (e.g., parameter-specific dictionary, standard dictionary) by adding an entry to the dictionary for the string. For example, the user feedback for a work and/or the user feedback for the other works may include a topic that is associated with the string. The topic can be a user selected topic. The topic can be based on a code (e.g., BISAC code) that is associated with the string. For example, a fictional author Jane Doe may have included dialog in a work titled “XYZ” that illustrates a speaker is sleepy. The dialog may illustrate a speaker is slurring words and speaking incoherently. Sentences in XYZ may include potential typographical errors (e.g., grammatical errors, spelling errors, punctuation errors, and language errors) as identified based on rules from an initial grammatical reference and/or an initial dictionary. The user feedback for the XYZ work may indicate that the author, Jane Doe, intended the grammatical errors and typos. Processing logic may determine from the combined user feedback, which may be sorted by author, that the potential typographical errors include an acceptable string. Processing logic may update an author-specific dictionary (e.g., dictionary associated with Jane Doe) with one or more entries to include the acceptable string. Processing logic may determine from the combined user feedback, which may be sorted by title, that the potential typographical errors include an acceptable string. Processing logic may also update the grammatical rules in a title-specific grammatical reference (e.g., XYZ grammatical reference) to allow for certain exceptions to the rules.

If the potential typo is not an acceptable string (block315), but an actual error (block315), processing logic associates an alternative string with the actual error at block325, according to some embodiments. The user feedback for the work can include, for example, a corrected spelling for the string. In one embodiment, the user is presented with a list of alternative strings which the user may select from.

At block321, processing logic determines whether there is another potential typographical error in a work to classify as an acceptable string or an actual error. If there is another potential typographical error to classify, processing logic returns to block315to determine, based on the statistics, whether a next potential typographical error in a work is an acceptable string. If there is not another potential typographical error in a work to classify, processing logic stores the references (e.g., modified initial reference, parameter-specific reference) to identify one or more potential typographical errors in another work at block323.

Method300can be an iterative method to progressively update and train the parameter-specific references. For example, when processing logic identifies potential typographical errors in a work, processing logic can use a recently updated parameter-specific reference to more accurately identify the potential typographical errors in a work. The number of iterations can be based on the number of users providing feedback for a work.

FIG. 4is a block diagram of one embodiment of an auditing module400, which may correspond to the auditing module140ofFIG. 1. In one embodiment, the auditing module400includes a potential error presentation sub-module403, an indicative data presentation sub-module405, and an auditor feedback sub-module407. In alternative embodiments, one or more of these sub-modules may be combined into a single sub-module. Additionally, the functionality of any of these sub-modules may be separated into multiple distinct sub-modules.

The auditing module400can receive a work451and data453indicative of the potential typographical errors in the work451, for example, from a progressive reference learning module, and store the work451and the corresponding indicative data453in a data store450that is accessible by the auditing module400. The indicative data453can be a data structure. The indicative data453can include a work identifier. The indicative data453can include entries for the potential typographical errors that have been identified in the work451. The entries in the indicative data453can include, for example, and not limited to, the one or more strings identified as the potential typographical error, the position (e.g., byte offset) of the string(s) in the work, and the context for the string(s) in the work.

The data store450can store indicative data453for any number of works451. In one embodiment, the data store450is coupled to the auditing module400. A data store450can be a persistent storage unit. A persistent storage unit can be a local storage unit or a remote storage unit. Persistent storage units can be a magnetic storage unit, optical storage unit, solid state storage unit, electronic storage units (main memory), or similar storage unit. Persistent storage units can be a monolithic device or a distributed set of devices. A ‘set’, as used herein, refers to any positive whole number of items.

The potential error presentation sub-module403can use the indicative data453for a work451to identify the potential typographical errors for the work451. In one embodiment, the potential error presentation sub-module403presents a list of the potential typographical errors for a work in a user interface (UI)415. The UI415can be a graphical user interface. In one embodiment, the potential error presentation sub-module403presents the work451in a UI415and highlights the potential typographical errors in the work451in the UI415.

The indicative data presentation sub-module405can present the indicative data453for a selected potential typographical error in the UI415. In one embodiment, the indicative data presentation sub-module405detects a user selection of a potential typographical error and provides the indicative data453that corresponds to the selected potential typographical error in the UI415.

The user feedback sub-module407can receive user input indicating whether a potential typographical error is an author-intended string or an actual error. In one embodiment, the user feedback sub-module407provides UI elements (e.g., text box, drop-down menu, buttons, text fields, etc.) in the UI415to receive the user input.

The user feedback sub-module407can receive user input of one or more parameters to associate with an author-intended string. Examples of parameters can include, and are not limited to, a topic, a title, an author, and a publisher. In one embodiment, the user feedback sub-module407provides a list of parameters from parameter data457(e.g., list of authors, list of publishers, list of titles, list of topics) stored in the data store450in the UI415and receives a user selection of one or more parameters.

The user feedback sub-module407can receive user input of an alternative string (e.g., corrected spelling) for an actual error. In one embodiment, the user feedback sub-module407provides a list of alternative strings from alternatives data459stored in the data store450in the UI415and receives a user selection of an alternative string. The user feedback sub-module407can store the user feedback455in the data store450. The user feedback sub-module407can provide the user feedback455for the work451to the progressive reference learning module.

FIG. 5is a flow diagram of an embodiment of a method500for providing user feedback for potential typographical errors based on author intent. The method500may be performed by processing logic that may comprise hardware (circuitry, dedicated logic, etc.), software (such as is run on a general purpose computer system or a dedicated machine), or a combination of both. In some embodiments, the method500is performed by a user device (e.g., by an auditing module140running on a user device104ofFIG. 1).

At block501, processing logic receives a work and data indicative of the potential typographical errors in the work. Processing logic can store the work and the corresponding indicative data in a data store. At block503, processing logic identifies, based on the indicative data, at least one potential typographical error for the work. For example, processing logic use the positions in the indicative data to highlight the potential typographical errors in a work in a graphical user interface (GUI). An example of a GUI can be, and is not limited to, an e-book graphical user interface, a browser, a mobile device application, etc. In one embodiment, processing logic uses the strings in the indicative data to provide a list of the potential typographical errors for the work.

At block505, processing logic provides the indicative data for the potential typographical errors. In one embodiment, processing logic provides the indicative data in the GUI, for example, by displaying the indicative data in the GUI. For example, when a user (e.g., author, publisher representative, quality assurance user) selects one of the potential typographical errors that are highlighted in the work in an e-book GUI, processing logic can include a pop-up window containing the indicative data that corresponds to the selected potential typographical error in the GUI. The indicative data can include and is not limited to, the one or more strings identified as the potential typographical error, the position (e.g., byte offset) of the string(s) in the work, and the context for the string(s) in the work. Examples of the context can include, and are not limited to, a sentence that includes the string(s), a paragraph that includes the string(s), a page of the work that includes the string(s), a number of words that precede and/or follow the string(s).

At block507, processing logic receives user input indicating whether a potential typographical error is an author-intended string or an actual error. A user can use the indicative data to make a determination of whether an author-intended the potential typographical error. For example, the user may use the position (e.g., byte offset) data in the indicative data to lookup the potential typographical error in the work. In another example, the user may use the context of the potential typographical error to determine whether the potential typographical error is an author-intended string. In one embodiment, processing logic provides UI elements in the GUI to receive the user input indicating whether a potential typographical error is an author-intended string. Examples of GUI elements can include, and are not limited to, text box, drop-down menu, buttons, text fields, etc. For example, a user selects “author-intended string” or “actual error” from a drop-down menu.

If the potential typographical error is an author-intended string (block509), processing logic receives user feedback of one or more parameters to associate with the author-intended string at block513. Processing logic can include UI elements in the GUI to receive the user selection of the one or more parameters. Examples of parameters can include, and are not limited to, a topic, a title, an author, and a publisher. In one embodiment, processing logic provides a list of parameters in a GUI and receives a user selection of the one or more parameters. For example, processing logic provides a list of topics in a GUI and receives a user selection of one or more topics. Examples of topics can include, and are not limited to, dialog, medical, medieval, fantasy, science fiction, mathematical, an author-defined topic, BISAC code. Examples of UI elements can include, and are not limited to, text box, drop-down menu, buttons, text fields, etc.

If the potential typographical error is not an author-intended string (block509), processing logic receives user feedback of an alternative string for the actual error at block511. Processing logic may receive, for example, and not limited to, a corrected spelling for the actual typo, an alternative string to associate with the actual typo, etc. In one embodiment, processing logic provides a list of alternative strings in a GUI and receives a user selection of an alternative string. Processing logic can include UI elements in the GUI to receive the user input for the actual typo. Examples of UI elements can include, and are not limited to, text box, drop-down menu, buttons, text fields, etc.

At block515, processing logic stores the user feedback in a data store that is accessible by the auditing module. The user feedback can include, for example, and not limited to a user identifier, a work identifier, at least one string identified as a potential typographical error, a position of the at least one string in a work, a decision indicating whether the corresponding string is an author-intended string, a confidence level of the decision, or at least one parameter associated with the corresponding string. The user feedback can be data received from a user and/or data from the indicative data for the work.

At block517, processing logic determines whether there is another potential typographical error in the work for a user to audit. If there is another potential typographical error, processing logic returns to block503to identify a next potential typographical error in the work. For example, a user may wish to view a next paragraph or a next page in the work in the GUI and processing logic can highlight any potential typographical errors in the next paragraph or the next page.

If there is not another potential typographical error (block517), processing logic provides the user feedback for the work to the progressive reference learning module at block519. The user feedback can be a data structure. The user feedback can include a work identifier and a user identifier. The user feedback can contain an entry for each potential typographical error. Each entry can include fields, such as, and not limited to, a string identified as a potential typographical error, a decision indicating whether the corresponding string is an author-intended string or an actual error, one or more parameters associated with the corresponding author-intended string, and an alternative string associated with an actual error. The progressive reference learning module can receive and use the user feedback to update and/or create one or more parameter-specific references.

FIG. 6is a block diagram illustrating an exemplary computing device600. In one embodiment, the computing device corresponds to the typographical error system120hosting the progressing typographical learning module150ofFIG. 1. In one embodiment, the computing device corresponds to the user device140hosting the auditing module140ofFIG. 1. The computing device600includes a set of instructions for causing the machine to perform any one or more of the methodologies discussed herein. In alternative embodiments, the machine may be connected (e.g., networked) to other machines in a LAN, an intranet, an extranet, or the Internet. The machine may operate in the capacity of a server machine in client-server network environment. The machine may be a personal computer (PC), a set-top box (STB), a server, a network router, switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term “machine” shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein.

The exemplary computer system600includes a processing system (processing device)602, a main memory604(e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM), etc.), a static memory606(e.g., flash memory, static random access memory (SRAM), etc.), and a data storage device618, which communicate with each other via a bus630.

Processing device602represents one or more general-purpose processing devices such as a microprocessor, central processing unit, or the like. More particularly, the processing device602may be a complex instruction set computing (CISC) microprocessor, reduced instruction set computing (RISC) microprocessor, very long instruction word (VLIW) microprocessor, or a processor implementing other instruction sets or processors implementing a combination of instruction sets. The processing device602may also be one or more special-purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), network processor, or the like. In one embodiment, the processing device602is configured to execute the progressive typographical learning module200for performing the operations and steps discussed herein. In one embodiment, the processing device602is configured to execute the auditing module400for performing the operations and steps discussed herein.

The computer system600may further include a network interface device608. The computer system600also may include a video display unit610(e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)), an alphanumeric input device612(e.g., a keyboard), a cursor control device614(e.g., a mouse), and a signal generation device616(e.g., a speaker).

The data storage device618may include a machine-readable storage medium628(computer readable storage medium) on which is stored one or more sets of instructions622(e.g., instructions of progressive reference learning module200, instructions of auditing module400) embodying any one or more of the methodologies or functions described herein. The progressive typographical learning module200and auditing module400may also reside, completely or at least partially, within the main memory604and/or within the processing device602during execution thereof by the computer system600, the main memory604and the processing device602also constituting computer-readable media. The progressive reference learning module200and auditing module400may further be transmitted or received over a network620via the network interface device608.