SYSTEM AND METHOD FOR AUGMENTING CONTENT IN ELECTRONIC DOCUMENTS WITH LINKS TO CONTEXTUALLY RELEVANT INFORMATION
This application claims benefit under 35 U.S.C. §120 as a continuation of U.S. application Ser. No. 12/638,856, filed Dec. 15, 2009, which in turn claims benefit under 35 U.S.C. §120 as a continuation of U.S. application Ser. No. 11/527,856, filed Sep. 26, 2006 and issued as U.S. Pat. No. 7,640,240, to which this application also claims benefit under 35 U.S.C. §120, which in turn claimed priority from provisional application 60/720,734, filed Sep. 26, 2005, to which application this application further claims benefit under 35 U.S.C. §119(e). The contents of each of the above applications are hereby incorporated by reference in their entirety for all purposes, as if set forth herein. An electronic coupon distribution system that takes into account user demographics is described in U.S. patent application Ser. No. 09/451,160, entitled “Electronic Coupon Distribution System,” filed Nov. 30, 1999, which application is incorporated herein by reference. The selection of electronic coupons for distribution can be based on various criteria, such as the number of times a given coupon is printed or redeemed, as described in U.S. patent application Ser. No. 11/134,048, entitled “Searching A Database Including Prioritizing Results Based on Historical Data,” filed May 19, 2005, which application is incorporated herein by reference. Some conventional electronic coupon distribution systems present coupon offers on web pages. Coupon offers are matched with the general content of the web page, and are typically presented in an advertisement (ad) space (e.g., ad box, banner ad or pop-window). The ad space tends to clutter the user's display screen and interfere with the readability of the web page content. Moreover, some users may be annoyed by such presentation devices making them less inclined to use the coupons or the web page. Other users may simply ignore the coupons because they do not appear relevant to the content of the web page. An electronic document (e.g., web page) at a user device (e.g., computer, media player, mobile phone, email device, personal digital assistant (PDA), etc.) configured to communicate with an external device (e.g., network server) that generates instructions for augmenting content (e.g., text, graphical objects, etc.) contained in the electronic document with links to contextually relevant information (e.g., coupons and/or other offerings) is described. In some implementations, the content is also augmented with one or more user interface elements (e.g., buttons, menus, etc.) In some implementations, the augmented content is displayed with one or more attributes (e.g., color, highlights, fonts, style, size, rollover effects, etc.) which can be selected by a document author (e.g., web page author). In some implementations, the document author can mark or otherwise designate one or more portions of the electronic document to be excluded from the augmenting process. The details of one or more embodiments of the invention are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the invention will be apparent from the description and drawings, and from the claims. The augmented words 102 (e.g., sandwich, butter, milk) are generated by a content augmentation process 300, as described with respect to Although the window 200 is shown displaying a coupon offer 202, it should be apparent that the window 200 can present or display any kind of information (including graphical objects) that is contextually relevant to the augmented word 102. The window 200 can be formatted as desired, including its shape, color, style, fonts, etc. The window 200 can display text, graphical objects or a combination of both. In this particular implementation, if the user clicks on the coupon offer 202, a coupon (e.g., 40 cents off any bread product) will be downloaded to the user's computer or directly to the user's printer. The printed coupon can be redeemed at a participating retailer for associated products or services. In some implementations, the format of each coupon can include an identification of an offer type and an offer value of an item of interest in the window 200. Referring to The window 500 also includes a secondary text field 506 that can be utilized to provide a textual link to a similar or affiliated item. For example, if the primary text field 504 describes an item of a particular brand, the secondary text field 506 can be used to provide a textual link to one or more coupon offers associated with a similar or identical item of another brand. As another example, if the primary text field 504 describes a breakfast item (e.g., bagels), the secondary text field 504 can be used to provide a textual link to one or more coupon offers for an affiliated item (e.g., cream cheese). If desired, the coupon 502 can additionally include an expiration statement separate from the primary text field 502 and the secondary text field 504 for indicating the duration of the promotional offer, or a computer-generated bar code that electronically identifies the item and value of the coupon 502. An image field 508 for visually and graphically identifying the item associated with the coupon 502 also can be displayed in the window 500. The image field 508 can be placed in the vicinity of the primary text field 502 or the secondary text field 504, and accommodate an image of the item associated with the coupon 502. The image can include a In some implementations, if the user clicks on the print-coupon link 512, the coupon 502 can be downloaded to the user's computer or directly to the user's printer. Use of a printer connected to the user's computer provides the ability to produce a hardcopy of the coupon 502 that can be redeemed at a participating retailer for associated products or services. In some implementations, the process 300 begins by selecting content in one or more electronic documents to augment with one or more links to contextually relevant information (step 302). The content can be words, phrases, graphical objects and the like. The term “link” means to electronically associate content with information, such that user interaction with the augmented content results in access to or display of contextually relevant information. A link can also result in an operation performed on the content (e.g., printing or electronic-forwarding to an interested party). The selected content is associated with contextually relevant information (step 304). The contextually relevant information can be any type of information that is relevant to the content. In some implementations, the contextually relevant information is stored in a database coupled to a network (e.g., the Internet) and is accessed through a network server. In some implementations, the content is a list of unique words selected from a web page. The list is sent to a network server where the words are matched with keywords that have been associated with information. For example, a list of unique words (e.g., sandwich, butter, milk, etc.) can be sent to a coupon server which associates the unique words with keywords (e.g., sandwich, butter, milk). In another implementation, the image of the item in the image field 508 is identified, and if the image contains a text portion, the text portion is searched for unique words. The unique words are then compared with the keywords in the network server. The keywords, each being associated with contextually relevant information (e.g., coupon offers), are used to perform a search query on a database of coupons. The query results include a list of coupons that are relevant to the keywords and may take into account other relevance criteria (e.g., price, availability or inventory). Any coupons that are not available to the web page publisher will be excluded from the process 300. If desired, each keyword can be configured to associate with a corresponding image such that the process 300 can proceed with comparing the image in the image field 508 with the corresponding images of the keywords to identify contextually relevant information or relevant coupons. In some implementations, the coupons are prioritized based on one or more ranking criteria, such as the number of times a coupon is printed or redeemed. Contextual relevance may also be scored using counts of words on a page. The ranked coupons can then be arranged in a form of a priority list with, for example, the first coupon in the priority list being a coupon determined to be the most relevant or affiliated to the selected content. Temporarily referring back to Referring to Referring back to In some implementations, the instructions are dynamically included in the web page on-the-fly using known HTML (or DHTML) methods, properties and objects (e.g., document object model (DOM)) (step 308). The browser interprets the instructions which causes the selected content (e.g., sandwich, butter, milk) to be augmented with links to the contextually relevant information (step 310). Using the example of In some implementations, a web page author enables a web page to invoke an external device (e.g. a server for a coupon distribution service) in real-time by including an invocation tag (1) near the end of (and within) the <body> section of the web page's HTML code. By invoking the external source after all other <body> instructions have been interpreted, the author can ensure that the process 300 will not interfere with other <body> instructions. In some implementations, the invocation tag (1) further includes customization parameters affecting the display and context of any links (e.g., color, font, style, etc.) used to augment content. The author can specify which sections of the web page will be subject to the process 300 by using demarcation tags (2) within the <body> of the web page (step 602). When the web page is rendered, the invocation tag (1) is inserted (step 604) and the external source is invoked (step 606). The invocation tag (1) writes into the containing document a display layer (3) for use by links provided by the distribution service, a display script (4) for displaying link information, and a marking script (5) for augmenting words in the web page with links at a later time (step 608). The display script (4) rendered by the invocation tag (1) parses the containing web page, preprocesses (6) the visible text nodes in the <body> section into a list of unique words, and uses a subset of this list in a call to a matching script (7) located at the external source. The contents of the matching script (7) include links to various coupons and/or other offerings from the distribution service. In some implementations, the offerings are selected by matching an eligible keyword to a coupon offering directly via a keyword-coupon cross-reference table (10). In other implementations, the offerings are selected by matching an eligible keyword to a coupon offering indirectly through an association of the eligible keyword to a category via a keyword-category cross-reference table (11), then associating the category with a coupon offering via a category-coupon cross-reference table (12). The invention and all of the functional operations described herein can be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. The invention can be implemented as a computer program product, i.e., a computer program tangibly embodied in an information carrier, e.g., in a machine readable storage device or in a propagated signal, for execution by, or to control the operation of, data processing apparatus, e.g., a programmable processor, a computer, or multiple computers. A computer program can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program can be deployed to be executed on one computer or on multiple computers at one site or distributed across multiple sites and interconnected by a communication network. Apparatus of the invention can be implemented in a computer program product tangibly embodied in a machine-readable storage device for execution by a programmable processor; and method steps of the invention can be performed by a programmable processor executing a program of instructions to perform functions of the invention by operating on input data and generating output. The invention can be implemented advantageously in one or more computer programs that are executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device. Each computer program can be implemented in a high-level procedural or object-oriented programming language, or in assembly or machine language if desired; and in any case, the language can be a compiled or interpreted language. Suitable processors include, by way of example, both general and special purpose microprocessors. Generally, a processor will receive instructions and data from a read-only memory and/or a random access memory. Generally, a computer will include one or more mass storage devices for storing data files; such devices include magnetic disks, such as internal hard disks and removable disks; a magneto-optical disks; and optical disks. Storage devices suitable for tangibly embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM disks. Any of the foregoing can be supplemented by, or incorporated in, ASICs (application-specific integrated circuits). A number of embodiments of the invention have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the invention. Accordingly, other embodiments are within the scope of the following claims. An electronic document and associated system, methods and apparatus is described. The electronic document is loaded in a user device configured to communicate with an external device that generates instructions for augmenting content contained in the electronic document with links to contextually relevant information. The content can be augmented with one or more user interface elements, and the augmented content can be displayed with one or more attributes which can be selected by a document author. The document author can mark or otherwise designate one or more portions of the electronic document to be excluded from the augmenting process. 1. A method comprising:
providing a first set of instructions configured to cause a client device to: parse a portion of content, locate a set of terms in the portion of content, based on the parsing, and send the set of terms to a server; receiving, at the server a first request comprising a first set of terms; based on the first set of terms, the server identifying one or more coupon offers; in response to the first request, the server sending a second set of instructions configured to cause the client device to: insert, in association with a particular term in the displayed portion of content, first code configured to cause displaying an interface comprising information about the one or more coupon offers and a control for selecting a particular coupon offer of the one or more coupon offers, the first code further configured to, upon receiving input indicating that a user selected the control, send information identifying the particular coupon offer to a coupon distribution server; receiving, at the coupon distribution server, a second request identifying the particular coupon offer; in response to the second request, the coupon distribution server providing a coupon corresponding to the particular coupon offer; wherein at least the steps of identifying one or more coupon offers and providing the coupon are performed by one or more computing devices. 2. The method of 3. The method of 4. The method of 5. The method of 6. The method of in response to the first request, the coupon distribution server identifying a plurality of coupon offers based on the first set of terms; the coupon distribution server returning a presentation of information about the plurality of coupon offers, the presentation being prioritized based on the number of times coupons have previously printed or redeemed coupons for each coupon offer in the plurality of coupon offers. 7. The method of 8. The method of 9. The method of 10. The method of 11. The method of 12. One or more non-transitory computer-readable storage media storing instructions that, when executed by one or more computing devices, cause performance of:
providing a first set of instructions configured to cause a client device to: parse a portion of content, locate a set of terms in the portion of content, based on the parsing, and send the set of terms to a server; receiving, at the server a first request comprising a first set of terms; based on the first set of terms, the server identifying one or more coupon offers; in response to the first request, the server sending a second set of instructions configured to cause the client device to: insert, in association with a particular term in the displayed portion of content, first code configured to cause displaying an interface comprising information about the one or more coupon offers and a control for selecting a particular coupon offer of the one or more coupon offers, the first code further configured to, upon receiving input indicating that a user selected the control, send information identifying the particular coupon offer to a coupon distribution server; receiving, at the coupon distribution server, a second request identifying the particular coupon offer; in response to the second request, the coupon distribution server providing a coupon corresponding to the particular coupon offer. 13. The one or more non-transitory computer-readable storage media of 14. The one or more non-transitory computer-readable storage media of 15. The one or more non-transitory computer-readable storage media of 16. The one or more non-transitory computer-readable storage media of 17. The one or more non-transitory computer-readable storage media of in response to the first request, the coupon distribution server identifying a plurality of coupon offers based on the first set of terms; the coupon distribution server returning a presentation of information about the plurality of coupon offers, the presentation being prioritized based on the number of times coupons have previously printed or redeemed coupons for each coupon offer in the plurality of coupon offers. 18. The one or more non-transitory computer-readable storage media of 19. The one or more non-transitory computer-readable storage media of 20. The one or more non-transitory computer-readable storage media of 21. The one or more non-transitory computer-readable storage media of 22. The one or more non-transitory computer-readable storage media of BENEFIT CLAIM; RELATED APPLICATIONS
BACKGROUND
SUMMARY
DESCRIPTION OF DRAWINGS
DETAILED DESCRIPTION








