System and method for augmenting content in electronic documents with links to contextually relevant information

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.

BACKGROUND

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.

SUMMARY

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.

DETAILED DESCRIPTION

FIG. 1is screen shot of an electronic document100(e.g., web page), including content102(e.g., words, graphical objects, etc.) that is augmented with links to contextually relevant information (e.g., coupons and/or other offerings). The web page100is typically presented in a browser window (e.g., Microsoft® Internet Explorer). The browser receives a text file containing Hypertext Markup Language (HTML) and/or other known languages (e.g., Dynamic HTML), and interprets the HTML statements to render the web page100.

The augmented words102(e.g., sandwich, butter, milk) are generated by a content augmentation process300, as described with respect toFIG. 3. The augmented words102can be located anywhere on the web page100, including in an ad space104(e.g., ad box, banner ad, pop-window, etc.). The augmented words102include links that are activated in response to user input, such as a mouse click or cursor movement. The augmented words102can also include one or more user interface elements106for providing additional functionality or control (e.g., buttons, menus, etc.). In some implementations, the augmented words102are displayed with one or more attributes (e.g., highlights, underline, bold, animations, effects, etc.) to attract the attention of the user. The augmented words102can be individual terms or phrases or other portions of text.

FIG. 2is a screen shot of the web page100shown inFIG. 1, including a window200for displaying a coupon offer202. In some implementations, the window200is displayed in response to user input, such as clicking a user interface element106associated with an augmented word102or rolling a cursor over the augmented word102.

Although the window200is shown displaying a coupon offer202, it should be apparent that the window200can present or display any kind of information (including graphical objects) that is contextually relevant to the augmented word102. The window200can be formatted as desired, including its shape, color, style, fonts, etc. The window200can display text, graphical objects or a combination of both. In this particular implementation, if the user clicks on the coupon offer202, 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 window200.FIG. 5Ais a screen shot of an exemplary display window500for providing contextually relevant information of a coupon502.

Referring toFIG. 5A, a description of the item (e.g., product name, brand name, food category and the like) associated with the coupon502can be placed in a primary text field504. The description can be brief to fit into the size of the window500. The offer value of the coupon502(e.g., $0.50 off) can be arranged together with the description of the item in the primary text field502. Alternatively, the offer value can be positioned anywhere on the coupon502separate from the primary text field504. This allows the primary text field504to be utilized for additional information regarding the particular offer. For example, the additional information can include an offer type that identifies the item as qualifying for a buy-one-get-one-free or two-for-the-price-of-one offer. The offer value of the coupon502can be expressed as a reduced price for the item (e.g., $3.99 after savings), a reduction in the price of the item (e.g., save $1.00) or a reduction in the overall transaction when multiple items are purchased (e.g., save $2.00 when you buy two or more). As shown, a consumer can use the coupon502to deduct $0.50 from the purchase of an “Carapelli Pasta and Sauce” item. The reduction can be expressed in other mathematical fashions, such as a percentage discount (e.g., 10% off).

The window500also includes a secondary text field506that can be utilized to provide a textual link to a similar or affiliated item. For example, if the primary text field504describes an item of a particular brand, the secondary text field506can 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 field504describes a breakfast item (e.g., bagels), the secondary text field504can be used to provide a textual link to one or more coupon offers for an affiliated item (e.g., cream cheese).

If desired, the coupon502can additionally include an expiration statement separate from the primary text field502and the secondary text field504for indicating the duration of the promotional offer, or a computer-generated bar code that electronically identifies the item and value of the coupon502. An image field508for visually and graphically identifying the item associated with the coupon502also can be displayed in the window500. The image field508can be placed in the vicinity of the primary text field502or the secondary text field504, and accommodate an image of the item associated with the coupon502. The image can include a text portion that supplements the item description in the primary text field502or the secondary text field504.

In some implementations, if the user clicks on the print-coupon link512, the coupon502can 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 coupon502that can be redeemed at a participating retailer for associated products or services.

FIG. 3is a flow diagram of a content augmentation process300. Some of the steps of process300can be performed in parallel in multi-threading environments. In some implementations, the steps of process300are instructions in a computer-readable medium (e.g., hard drive, memory, buses, waveforms), which, when executed by a processor causes the processor to perform the steps of process300.

In some implementations, the process300begins by selecting content in one or more electronic documents to augment with one or more links to contextually relevant information (step302). 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 (step304). 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 implementations, the image of the item in the image field508is 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 process300.

If desired, each keyword can be configured to associate with a corresponding image such that the process300can proceed with comparing the image in the image field508with 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 toFIG. 5A, the window500can be configured to display a coupon with the highest rank. Due to dimension limitation of the window500, in some implementations, additional coupons are not displayed in the window500but can be accessed by clicking (e.g., mouse click or cursor movement) on the text contained in a third text field510. For example, a user can click on “Plus 92 more” to access additional coupons associated with the coupon being displayed. The user also can access other coupons (e.g., randomly or in order of relevance) or coupons that are in a particular category using the third text field510. The third text field510can provide a textual link to a separate display window in which additional coupons can be retrieved.FIG. 5Billustrates a screen shot of an exemplary display window520in which additional coupons are displayed.

Referring toFIG. 5B, the window520displays one or more additional coupons522. In some implementations, coupons522are organized by their respective dimensions (e.g., resolution). For example, coupons that have a dimension size of 468×60 are organized into the same cluster (e.g., ad box524) and coupons that have a dimension size of 125×125 are organized into a different cluster (e.g., ad box526). In another implementations, coupons522are displayed only in text (i.e., without ad boxes524and526). In these implementations, the window520can be configured to display a total number of coupons being displayed in text. For example, text528indicates that a total of nine coupons (coupon1to coupon9) are displayed in text links. Coupons can be printed by clicking on an associated “Print Coupons” link. For example, the “Print Coupons” link530allows a user to print a hardcopy of the “$1.00 off Nature's Bounty Printable Coupon” and “$0.40 off Land O Lakes Creamer Printable Coupon” in the ad box524, and the “Print Coupons” link532allows a user to print a hardcopy of the “$1.00 off Nature's Bounty Printable Coupon” in the ad box526.

Referring back toFIG. 3, the process300generates instructions (e.g., JavaScript) for augmenting the selected content (step306) with links. The selected content and the link can be highlighted, italicized or implemented with color to differentiate the augmented content from the normal text.

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)) (step308). 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 (step310). Using the example ofFIG. 2, if a user rolls their cursor across the word “sandwich,” then a window200is presented which includes a coupon offer202for bread.

FIG. 4will be described in conjunction withFIG. 6.FIG. 4is a block diagram of an exemplary system for performing the content augmentation process300, as described with respect toFIG. 3, andFIG. 6shows an exemplary process600for generating instructions for augmenting content selected for augmentation. The exemplary system is an electronic coupon distribution system. It should be apparent, however, that the process300can be used in combination with a variety of applications other than electronic coupon distribution systems.

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 process300will 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 process300by using demarcation tags (2) within the <body> of the web page (step602). When the web page is rendered, the invocation tag (1) is inserted (step604) and the external source is invoked (step606). 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 (step608). 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.

FIG. 7shows an exemplary process700for associating unique words in an electronic document with predetermined keywords in an electronic coupon distribution system. As shown, after a list of unique words is generated (step702), The matching script (7) compares the submitted list to at least two lists of keywords at the external source (step704). If any words in the submitted list match words in a list of forbidden words (8) (“Yes” branch of step706), the process300is halted and the calling web page will not receive content augmentation (step708). If the words in the submitted list do not match words in the list of forbidden words (“No” branch of step706), process700proceeds to verify if the words in the submitted list match words in a predetermined list of eligible keywords (“No” branch of step706). If any words in the submitted list match words in the list of eligible keywords (9) (“Yes” branch of step710), the matching script (7) generates instructions (e.g., JavaScript) for initializing the marking script (5) and executes the marking script (5) (step712). Else, process700is terminated (“No” branch of step710).

The contents of the matching script (7) includes 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).

FIG. 8shows an exemplary process800for locating keywords in an electronic document. The marking script (5), when executed, scans the visible text within the demarcation tags (2) for keywords (step802). For each keyword found (“Yes” branch of step804), the containing document is augmented by replacing the first text node found containing the keyword with new nodes: a text node including any text in the original text node that occurs before the keyword, and a link node (or “A”-tag) containing the keyword as its text and a linking via its HREF property to the display script (4) (step806). The marking script (5) scans the visible text within the demarcation tags (2) until all matched keywords in all text nodes have been processed (“Yes” branch of step808), or until a preset limit on the number of matches has been reached. At this point, the matching script (7) and the invocation tag (1) are fully rendered and the augmentation process300is complete (step810). The augmentation process300is terminated when no keyword is found (“No” branch of step804or step808).

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).