Aggregating product information for electronic product catalogs

A product catalog includes information regarding products for sale online by various merchants. An analysis software module can collect information regarding new product offers and associate that information with existing product information in the catalog. The module can identify one or more potential product matches in the catalog based on identical or similar strong identifier information between the offer and the potential match, and/or based on query search result relationships between the offer and the potential match. The analysis module can evaluate each potential match by performing an image comparison between one or more product images provided with the offer and one or more representative images selected by the analysis module for the potential matching product. If the analysis module confirms a match, the analysis module can add information regarding the new product offer to the product catalog, associating the new product offer with the confirmed matching product.

TECHNICAL FIELD

The present disclosure relates generally to electronic product catalogs and, more specifically, to aggregating product information for electronic product catalogs using near-duplicate image analysis and query search history.

BACKGROUND

Computer networks, such as the Internet, enable transmission and reception of a vast array of information. In recent years, for example, some commercial retail stores have attempted to make product information available to customers over the Internet. It is becoming increasingly popular for information providers to provide mechanisms by which consumers can compare such product information across multiple manufacturers and retailers. For simplicity, manufacturers, retailers, and others that sell products to customers are interchangeably referred to herein as “merchants.” For example, Internet search/shopping sites allow customers to compare pricing information for products across multiple merchants.

Typically, such comparisons are based on information provided in data feeds from the merchants to the information providers. This data should be of good quality to be useful. In particular, product identifiers should be correct so that products can be correctly identified across merchants. For example, the product identifiers can include global trade item numbers (“GTINs”), such as international standard book numbers (“ISBNs”), universal product codes (“UPC codes”), and European article numbers (“EANs”), brand name and model number combinations, and other standardized identifiers. These identifiers are commonly referred to as “strong identifiers.” Generally, strong identifiers uniquely identify their corresponding products.

Often, merchant data includes missing or erroneous strong identifiers. For example, some merchants provide random numbers or stock keeping units (“SKUs”) in place of correct UPC codes and EANs. Therefore, it is desirable to provide an alternative mechanism for aggregating product information, which does not rely exclusively on strong identifier information provided by merchants.

SUMMARY

In certain exemplary embodiments, information for an electronic product catalog is aggregated. Information regarding a product offer is received. The received information includes information identifying a product subject to the product offer and at least one image of the product subject to the product offer. Based on the received information, a product in an electronic product catalog that potentially matches the product subject to the product offer is identified. An analysis software module determines whether the identified product in the electronic product catalog actually corresponds to the product subject to the product offer by completing a near-duplicate image analysis on the received image and at least one representative image for the product in the electronic product catalog. In certain exemplary embodiments, the analysis software module may determine that the identified product actually corresponds to the product subject to the product offer if the near duplicate image analysis, either alone or in conjunction with analysis of other information, such as a comparison between the respective brand names and/or product identifiers for the identified product and product subject to the product offer, indicates that the identified product corresponds to the product subject to the product offer. The analysis module adds information regarding the product offer to the electronic product catalog, in response to determining that the identified product in the electronic product catalog actually corresponds to the product subject to the product offer. The added information is associated with the identified product in the electronic product catalog. The analysis module is implemented in at least one computer system that comprises instructions stored in a machine-readable medium and a processor that executes the instructions.

These and other aspects, objects, features, and advantages of the exemplary embodiments will become apparent to those having ordinary skill in the art upon consideration of the following detailed description of illustrated exemplary embodiments, which include the best mode of carrying out the invention as presently perceived.

DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS

Overview

The method and system described herein enable aggregation of product information for electronic product catalogs. The system includes a product catalog system, which is implemented in hardware and/or software. The product catalog system receives information regarding products offered from multiple merchants. Generally, this information includes, for each product, at least one strong identifier, such as a global trade item number (“GTIN”), universal product code (“UPC”), manufacturer's part number (“MPN”), international standard book number (“ISBN”), European article number (“EAN”), and/or brand name and model number combination. The information also includes at least one image for each product.

An analysis module of the product catalog system can review the product images to identify at least one representative image for each product. When the product catalog system receives information regarding a new product offer, an analysis module of the product catalog system can determine whether the product offer corresponds to a product in the catalog. For example, the analysis module can identify one or more potential product matches in the catalog based on identical or similar strong identifier information between the offer and the potential match, and/or based on query search result relationships between the offer and the potential match. The analysis module can evaluate each potential match by performing an image comparison between one or more product images provided with the offer and the representative image(s) selected by the analysis module for the potential matching product. If the analysis module confirms a match, the analysis module can add information regarding the new product offer to the product catalog, associating the new product offer with the confirmed matching product.

One or more aspects of the invention may comprise a computer program that embodies the functions described and illustrated herein, wherein the computer program is implemented in a computer system that comprises instructions stored in a machine-readable medium and a processor that executes the instructions. However, it should be apparent that there could be many different ways of implementing the invention in computer programming, and the invention should not be construed as limited to any one set of computer program instructions. Further, a skilled programmer would be able to write such a computer program to implement an embodiment of the disclosed invention based on the appended flow charts and associated description in the application text. Therefore, disclosure of a particular set of program code instructions is not considered necessary for an adequate understanding of how to make and use the invention. The inventive functionality of the invention will be explained in more detail in the following description, read in conjunction with the figures illustrating the program flow.

Turning now to the drawings, in which like numerals indicate like elements throughout the figures, exemplary embodiments of the invention are described in detail.

System Architecture

FIG. 1depicts a system100for aggregating product information for electronic product catalogs, in accordance with certain exemplary embodiments. As depicted inFIG. 1, the system100includes network devices105,110,117, and135that are configured to communicate with one another via one or more networks107. Each network107includes a wired or wireless telecommunication means by which network devices (including devices105,110,117, and135) can exchange data. For example, each network107can include a local area network (“LAN”), a wide area network (“WAN”), an intranet, an Internet, or any combination thereof. Throughout the discussion of exemplary embodiments, it should be understood that the terms “data” and “information” are used interchangeably herein to refer to text, images, audio, video, or any other form of information that can exist in a computer-based environment.

Each network device105,110,117,135includes a device capable of transmitting and receiving data over the network107. For example, each network device105,110,117,135can include a server, desktop computer, laptop computer, smartphone, handheld computer, personal digital assistant (PDA), or any other wired or wireless, processor-driven device. In the exemplary embodiment depicted inFIG. 1, the network devices105,110,117, and135are operated by merchants, an information provider, an information source, and end user customers, respectively.

The end user network devices135each include a browser application module140, such as Microsoft Internet Explorer, Firefox, Netscape, Google Chrome, or another suitable application for interacting with web page files maintained by the information provider network device110and/or other network devices. The web page files can include text, graphic, images, sound, video, and other multimedia or data files that can be transmitted via the network107. For example, the web page files107can include one or more files in the HyperText Markup Language (HTML). The browser application module140can receive web page files from the information provider network device110and can display the web pages to an end user operating the end user network device135. In certain exemplary embodiments, the web pages include information from a product catalog130of a product catalog system131, which is maintained by the information provider network device110. The product catalog system131is described in more detail hereinafter with reference to the method illustrated inFIG. 2.

System Process

FIG. 2is a block flow diagram depicting a method200for aggregating product information for electronic product catalogs, in accordance with certain exemplary embodiments. The method200is described with reference to the components illustrated inFIG. 1.

In block205, the product catalog system131maintains the product catalog130. The product catalog130includes a data structure, such as one or more databases and/or electronic records, that includes information regarding products from at least one merchant105. For each product, the information in the catalog130includes at least one image. The information also may include at least one identifier for the product, such as a GTIN, ISBN, UPC code, EAN, brand name and model number combination, and/or another standardized or non-standardized identifier. Such identifiers are commonly referred to as “strong identifiers.”

Generally, strong identifiers uniquely identify their corresponding products. It is often the case, however, that strong identifiers appearing in merchant-provided free-form descriptions associated with product offers can be misleading in determining the identity of the product. For example, a merchant may indicate that a particular accessory is “compatible with” a product indicated by a strong identifier. In this case, the presence of the strong identifier along may not be trusted in determining the identity of the product, absent confirmation via other means, such as the image similarity confirmation described below.

In certain exemplary embodiments, a receiver module115of the product catalog system131receives information that is included in the product catalog130in electronic data feeds and/or hard copy provided by one or more merchants105and/or another information source117, such as a specialized information aggregator. For example, each merchant105and/or information source117may periodically provide batched or unbatched product data in an electronic feed to the receiver module115. The receiver module115also may receive product information for inclusion in the product catalog130from scanned paper product documentation and/or catalogs. In certain exemplary embodiments, the receiver module115also may receive the product data from a screen scraping mechanism, which is included in or associated with the product catalog system131. For example, the screen scraping mechanism may capture product information from merchant and/or information provider websites. In certain exemplary embodiments, end users may view information from the product catalog130via browsers140on their respective end user network devices135.

In block210, an analysis module125of the product catalog system131identifies at least one representative product image for each product in the product catalog130. In one example, the product catalog130may include information regarding a “Eureka 439AZ” vacuum, including a name, description, rating, and strong identifier for the vacuum, as well as pricing information and images of the vacuum. The images may include photographs or drawings of the vacuum from different angles or zoom levels, for example. The images also may include erroneous “placeholder” images provided in incomplete data feeds. The product catalog system131performs a near-duplicate image analysis to cluster similar images together and remove erroneous outlier images. The product catalog system131selects one or more of the clustered images as the representative product image for the vacuum. For example, the product catalog system131can select one representative image per non-trivial cluster. Block210is described in more detail hereinafter, with reference toFIG. 3.

In block215, the receiver module115receives information regarding at least one new product offer. In the embodiment depicted inFIG. 1, the receiver module115receives the product offer information via the network107. For example, each merchant105and/or information source117may periodically provide batched or unbatched product offer information in an electronic feed to the receiver module115. The receiver module115also may receive product offer information from scanned product documentation and/or catalogs. In certain exemplary embodiments, the receiver module115also may receive the product offer information from a screen scraping mechanism, which is included in or associated with the product catalog system131. For example, the screen scraping mechanism may capture product information from merchant and/or information provider websites.

The product offer information includes, for each offer, at least one image and at least one identifier for a subject product. For example, each identifier may include at least one GTIN, ISBN, UPC code, EAN, brand name and model number combination, and/or another standardized or non-standardized identifier. Each image may include a photograph, drawing, or other depiction of the applicable product (or a portion thereof). In certain exemplary embodiments, one or more of the images may include an erroneous “placeholder” image, which can be provided, for example, when an actual product image is unavailable. The product offer information can include a variety of other information related to the product offers, such as one or more descriptions, ratings, and/or prices for the subject product.

In block220, the analysis module125identifies, for each new product offer, one or more potential matches between the product in the product offer and the product information in the product catalog130. Thus, the analysis module125attempts to correlate each new product offer with a product for which information already is present in the product catalog130. In certain exemplary embodiments, candidate matches may be identified based on strong identifier matches in the product offer and the product catalog and/or query search result relationships between the offer and the potential match. For example, the analysis module125may identify one or more products as potential matches to the product offer if each identified product has an identical or substantially similar strong identifier as a strong identifier included in the product offer.

A query search relationship may indicate a potential match relationship, for example, when an end user135performs a search for a particular product via an Internet-based search engine and both the product offer and a portion of the product catalog130, which includes the potentially matching product, are displayed in the search results to the end user135. A mechanism for exploiting such query search relationships may involve consulting a mapping between query search strings and the set of product offers and the portions of the product catalog130that have been shown to and/or clicked by end users135in response to the queries. A potential match between a product offer and a portion of the catalog130may be indicated when the product offer is frequently viewed and clicked by end users135for identical query search strings. It also may be useful to filter out some potential match relationships that have a higher probability of being erroneous. For example, if two or more product offers for different products have similar images and are frequently viewed and clicked by end users135for identical query strings, then these offers are likely to be confused by the analysis module125. It may be beneficial to ignore such product offers when proposing potential match relationships.

In block225, the analysis module125evaluates each potential match by comparing each image in the product offer with each representative image identified in block210. If the analysis module125confirms a match between a product offer image and a representative product image, the analysis module125can add information regarding the product offer to the product catalog130. The added information can be linked or otherwise associated with the existing information in the catalog130related to the matching image, for example.

If the analysis module125does not confirm a match with a product offer image, the analysis module125can perform additional, non-image based analysis to determine whether the product offer corresponds to a product for which information already exists in the product catalog130. In addition or in the alternative, the analysis module125may suspend or terminate processing of the product offer in response to determining that the product offer does not correspond to a known product. Such action may involve alerting the merchant105associated with the product offer that the product offer does not match any known products. In certain exemplary embodiments, the merchant105, an information source117, and/or an operator of the information provider110or product catalog system131may override the decision not to include the information regarding the unmatched product offer in the catalog130. For example, in certain circumstances, failure of a product offer to match an existing product in the catalog130may indicate that the product offer relates to a new product for which information has not yet been included in the catalog130. The analysis module125may add the information regarding the new product to the catalog130in certain exemplary embodiments. Block225is described in more detail hereinafter, with reference toFIG. 4.

FIG. 3is a block flow diagram depicting a method210for identifying a representative product image, in accordance with certain exemplary embodiments, as referenced in block210of the method200ofFIG. 2. In block305, the analysis module125identifies images that are known to correspond to the product. For example, the analysis module125may identify one or more images stored in, linked from, or identified in the product catalog130, in connection with the product. Each image includes a photograph, drawing, or other depiction of at least a portion of the product. The images also may include one or more erroneous images, such as “placeholder” images provided in an incomplete or error-laden data transfer.

In block310, the analysis module125measures similarity among the images using a “near-duplicate” image analysis. In certain exemplary embodiments, such analysis includes detecting and describing features in the images and computing the number of shared features across one or more pairs of the images. For example, image features may be identified using the scale-invariant feature transform (SIFT), Harris corner detection, shape context evaluation, spin images analysis, wavelet-based analysis, and/or other methods or systems for feature detection/description.

In block315, the analysis module125clusters similar images together. For example, the analysis module125can cluster images together when the images share at least a threshold number of the same features. In certain exemplary embodiments, this clustering may involve creating a metric tree or “Spill Tree” data structure from all the feature points in the images. The clustering also may involve calculating a similarity score between pairs of the images. For example, a similarity score may be calculated as the number of matching points divided by the total number of points of interest in the images. The analysis module125can query each point in the data structure to find a collection of close matches. For example, the analysis module125can consider two image features as close matches when their Euclidean distance is less than a threshold, which may be defined loosely to allow for illumination changes and variations in image quality. In certain exemplary embodiments, the analysis module125may verify each cluster using a Hough Transform or other technique.

In block320, the analysis module125removes any trivial clusters from the clustered images. A trivial cluster is a group of images that includes less than a threshold number of images. For example, a cluster can be considered a trivial cluster if it includes three or less images. Trivial clusters generally include unpopular or outlier images, which are not representative of their subject product. By removing trivial clusters in block320, the analysis module125ensures that the images in the trivial clusters are not identified as being representative of the product.

In block325, the analysis module125selects a most representative image for each remaining cluster as the representative image for the product being evaluated. In certain exemplary embodiments, the representative image selected by the analysis module125for a particular cluster is the image within the cluster that is most heavily connected to—for example, has the highest similarity scores in relation to—the other images in the cluster. In certain alternative exemplary embodiments, the representative image may be selected without regard to relative similarity between the images in the cluster. For example, the analysis module125may select the first, last, or a random image in a cluster as the representative image for the cluster.

FIG. 4is a block flow diagram depicting a method225for evaluating a potential match using image analysis, in accordance with certain exemplary embodiments, as referenced in block225of the method200ofFIG. 2. In block405, the analysis module125reads an image from the product offer.

In block210, for each potential match identified in block220of the method200, the analysis module125compares the image read in block405with each representative image corresponding to the potential match. In certain exemplary embodiments, the analysis module125can measure similarity among the image read in block405and each representative image for each potential match using a near-duplicate image analysis, substantially as set forth above in connection with block210ofFIG. 2. For example, the analysis module125can calculate a similarity score for each image pair (which includes the image read in block405and one of the representative images).

In block415, the analysis module125determines, for each comparison performed in block410, whether the images match. For example, the analysis module125may determine that the images match if a similarity score assigned to the image pair exceeds a threshold score. If the analysis module125determines in block415that a match exists, the method225continues to block417. In block417, the analysis module125determines whether more than one product in the product catalog130matches the product in the product offer. A match of a product in a product offer to more than one product in the product catalog130may be considered an “ambiguous match,” indicating that it may be impracticable or undesirable to select a single product in the product catalog130to match with the product in the product offer. Therefore, if the analysis module125determines in block417that the product in the product offer matches more than one product in the product catalog130, the analysis module125may determine not to add information regarding the product offer to the product catalog130in block423.

If the analysis module125determines in block417that the product in the product offer matches only one product in the product catalog130, then, in block420, the analysis module125adds information regarding the product offer, such as a price, merchant name, description, and other information, to the product catalog130. The analysis module125also associates the added information with the existing product corresponding to the matching image.

Referring back to block415, if the analysis module125determines that a match does not exist between the image read in block405and any representative image against which that image was compared in block410, the method225branches to block425. In block425, the analysis module125determines whether any additional images in the product offer should be evaluated. If so, the method225returns to block405to repeat the analysis in blocks405-415for another image in the product offer. Thus, if the product offer includes two or more product images, the analysis module125may complete the image comparison analysis for each image in the product offer.

If the analysis module determines in block425that additional images do not remain to be evaluated, the method225branches to block430. In block430, the analysis module125performs a non-image based analysis to determine whether the product offer corresponds to a product for which information already exists in the product catalog130. For example, the analysis module125can compare non-image product information in the product offer with other information in the product catalog130. In addition or in the alternative, the analysis module125may suspend or terminate processing of the product offer in response to determining that the product offer does not correspond to a known product. Such action may involve alerting the merchant105associated with the product offer that the product offer does not match any known products. In certain exemplary embodiments, the merchant105, an information source117, and/or an operator of the information provider110or product catalog system131may override the decision not to include the information regarding the unmatched product offer in the catalog130. For example, in certain circumstances, failure of a product offer to match an existing product in the catalog130may indicate that the product offer relates to a new product for which information has not yet been included in the catalog130. The analysis module125may add the information regarding the new product to the catalog130in certain exemplary embodiments.

General

The exemplary methods and blocks described in the embodiments presented previously are illustrative, and, in alternative embodiments, certain blocks can be performed in a different order, in parallel with one another, omitted entirely, and/or combined between different exemplary methods, and/or certain additional blocks can be performed, without departing from the scope and spirit of the invention. Accordingly, such alternative embodiments are included in the invention described herein.

The invention can be used with computer hardware and software that performs the methods and processing functions described above. As will be appreciated by those having ordinary skill in the art, the systems, methods, and procedures described herein can be embodied in a programmable computer, computer executable software, or digital circuitry. The software can be stored on computer readable media. For example, computer readable media can include a floppy disk, RAM, ROM, hard disk, removable media, flash memory, memory stick, optical media, magneto-optical media, CD-ROM, etc. Digital circuitry can include integrated circuits, gate arrays, building block logic, field programmable gate arrays (FPGA), etc.

Although specific embodiments of the invention have been described above in detail, the description is merely for purposes of illustration. Various modifications of, and equivalent blocks corresponding to, the disclosed aspects of the exemplary embodiments, in addition to those described above, can be made by those having ordinary skill in the art without departing from the spirit and scope of the invention defined in the following claims, the scope of which is to be accorded the broadest interpretation so as to encompass such modifications and equivalent structures. For example, although the embodiments described herein generally relate to products and product catalogs, a person of ordinary skill in the art having the benefit of the present disclosure will recognize that the claimed invention may be used in a variety of different applications, which may or may not involve products or product images. For example, in one exemplary embodiment, an item that includes an image may be categorized by comparing an image in the item with representative images for different categories. A category that potentially corresponds to the item may be identified and then confirmed or rejected by determining whether the item image matches one or more representative images for the potential category. For example, the item may include a video, and each category may be associated with a different video. The categorization process can be used to determine whether the received video (of the item) includes copyrighted material from a video associated with one of the categories by comparing the images in the videos.