U.S. patent application number 16/375380 was filed with the patent office on 2019-08-01 for alternative recommendations using search context.
The applicant listed for this patent is eBay Inc.. Invention is credited to Jayasimha Katukuri, Tolga Konik, Rajyashree Mukherjee.
Application Number | 20190236681 16/375380 |
Document ID | / |
Family ID | 54556396 |
Filed Date | 2019-08-01 |
![](/patent/app/20190236681/US20190236681A1-20190801-D00000.png)
![](/patent/app/20190236681/US20190236681A1-20190801-D00001.png)
![](/patent/app/20190236681/US20190236681A1-20190801-D00002.png)
![](/patent/app/20190236681/US20190236681A1-20190801-D00003.png)
![](/patent/app/20190236681/US20190236681A1-20190801-D00004.png)
![](/patent/app/20190236681/US20190236681A1-20190801-D00005.png)
![](/patent/app/20190236681/US20190236681A1-20190801-D00006.png)
![](/patent/app/20190236681/US20190236681A1-20190801-D00007.png)
United States Patent
Application |
20190236681 |
Kind Code |
A1 |
Konik; Tolga ; et
al. |
August 1, 2019 |
ALTERNATIVE RECOMMENDATIONS USING SEARCH CONTEXT
Abstract
Aspects of the present disclosure include a system comprising a
computer-readable storage medium storing at least one program and a
computer-implemented method for providing alternative
recommendations using search context. Consistent with some
embodiments, the method may include receiving a search query and
receiving a request regarding an item included in one or more
search results providing in response to the search query. The
method may further include determining an alternative item
recommendation using the search query, and causing presentation of
the alternative item recommendation.
Inventors: |
Konik; Tolga; (Menlo Park,
CA) ; Mukherjee; Rajyashree; (Fremont, CA) ;
Katukuri; Jayasimha; (Santa Clara, CA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
eBay Inc. |
San Jose |
CA |
US |
|
|
Family ID: |
54556396 |
Appl. No.: |
16/375380 |
Filed: |
April 4, 2019 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
14714105 |
May 15, 2015 |
10325304 |
|
|
16375380 |
|
|
|
|
62002459 |
May 23, 2014 |
|
|
|
Current U.S.
Class: |
1/1 |
Current CPC
Class: |
G06F 16/3325 20190101;
G06Q 30/0631 20130101 |
International
Class: |
G06Q 30/06 20060101
G06Q030/06; G06F 16/332 20060101 G06F016/332 |
Claims
1. A non-transitory machine-readable storage medium embodying
instructions that, when executed by a machine, cause the machine to
perform operations, the operations comprising: providing one or
more search results to a client device in response to a search
query from the client device, the search query including one or
more keywords; receiving, from the client device, input regarding
an item included in the one or more search results provided in
response to the search query; in response to receiving the input
regarding the item, determining an alternative item recommendation
for the item using the one or more keywords of the search query,
wherein the alternative item recommendation is selected based on a
specificity of the search query; and providing, to the client
device for presentation, information regarding the alternative item
recommendation.
2. The machine-readable storage medium of claim 1, wherein a level
of similarity of the alternative item recommendation to the item is
dependent on the specificity of the search query.
3. The machine-readable storage medium of claim 1, wherein the
alternative item recommendation is determined using one or more
attributes of the item.
4. The machine-readable storage medium of claim 1, further
comprising: identifying one or more desired item attributes based
on the search query; and wherein the alternative item
recommendation is determined using the one or more desired item
attributes identified based on the search query.
5. The machine-readable storage medium of claim 1, wherein the
alternative item recommendation is determined using one or more
context boosting factors.
6. The machine-readable storage medium of claim 5, wherein the one
or more context boosting factors are identified based on a set of
item attributes determined from the item and the search query.
7. The machine-readable storage medium of claim 5, wherein the
alternative item recommendation is determined by: ranking each
candidate item from a set of candidate items in accordance with the
one or more context boosting factors; and selecting the alternative
item recommendation from the set of candidate items based on the
rankings.
8. The machine-readable storage medium of claim 1, wherein
providing information regarding the alternative item recommendation
includes causing presentation of a product details page
corresponding to the item, wherein the product details page
includes an identification of the alternative item
recommendation.
9. A computer-implemented method comprising: receiving, at a client
device, one or more search results communicated to the client
device from a server device in response to a search query from the
client device, the search query including one or more keywords;
communicating, from the client device to the server device, an
identification of an item selected from the one or more search
results; receiving, at the client device, information regarding an
alternative item recommendation for the item, the alternative item
recommendation having been selected by the server device using the
search query, wherein the alternative item recommendation is
selected based on a specificity of the search query; and
presenting, via the client device, the information regarding the
alternative item recommendation.
10. The computer-implemented method of claim 9, wherein a level of
similarity of the alternative item recommendation to the item is
dependent on the specificity of the search query.
11. The computer-implemented method of claim 9, wherein the
alternative item recommendation is determined by the server device
using one or more attributes of the item.
12. The computer-implemented method of claim 9, wherein the server
device determines the alternative item recommendation using the one
or more desired item attributes identified based on the search
query.
13. A computer system comprising: one or more processors; and one
or more machine-readable storage media storing instructions that,
when used by the one or more processors, cause the one or more
processors to: provide one or more search results to a client
device in response to a search query from the client device, the
search query including one or more keywords; receive, from the
client device, input regarding an item included in the one or more
search results provided in response to the search query; in
response to receiving the input regarding the item, determine an
alternative item recommendation for the item using the search
query, wherein a level of similarity of the alternative item
recommendation to the item is based on the search query; and
provide, to the client device for presentation, information
regarding the alternative item recommendation.
14. The system of claim 13, wherein the level of similarity of the
alternative item recommendation to the item is dependent on a
specificity of the search query.
15. The system of claim 13, wherein the alternative item
recommendation is determined using one or more attributes of the
item.
16. The system of claim 13, wherein the instructions further cause
the one or more processors to: identify one or more desired item
attributes based on the search query; and wherein the alternative
item recommendation is determined using the one or more desired
item attributes identified based on the search query.
17. The system of claim 13, wherein the alternative item
recommendation is determined using one or more context boosting
factors.
18. The system of claim 17, wherein the one or more context
boosting factors are identified based on a set of item attributes
determined from the item and the search query.
19. The system of claim 17, wherein the alternative item
recommendation is determined by: ranking each candidate item from a
set of candidate items in accordance with the one or more context
boosting factors; and selecting the alternative item recommendation
from the set of candidate items based on the rankings.
20. The system of claim 13, wherein providing information regarding
the alternative item recommendation includes causing presentation
of a product details page corresponding to the item, wherein the
product details page includes an identification of the alternative
item recommendation.
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This patent application is a continuation of U.S. patent
application Ser. No. 14/714,105, filed May 15, 2015, which claims
priority to U.S. Provisional Application No. 62/002,459, filed on
May 23, 2014, each of which is incorporated herein by reference in
their entirety.
TECHNICAL FIELD
[0002] This application relates to data processing. In particular,
example embodiments relate to systems and methods for providing
alternative recommendations using search context.
BACKGROUND
[0003] At e-commerce websites, primary means of navigation involve
user initiated activities like browsing a category, searching by
entering keywords, or filtering search results by selecting values
for a set of attributes a system provides. These actions often
require users to understand an ontology used in organizing an
inventory to guess keywords that may lead to desired results. This
process may be frustrating for users who are not familiar with
content of the site or for users who only have a general sense of
what they are looking for.
[0004] Recommendations provide an alternative approach to assist
users in accessing relevant content. Unlike search engines that aim
to answer user-formulated queries, recommendation engines provide
content without requiring direct user input. Instead, conventional
recommendation engines use inferred user interest to identify and
provide content. These conventional recommendation engines infer
user interest based on indirect information sources such as
short-term session history, long-term user behavioral data,
ontology the site uses to organize inventory, and the state of
active inventory.
BRIEF DESCRIPTION OF THE DRAWINGS
[0005] Various ones of the appended drawings merely illustrate
example embodiments of the present disclosure and cannot be
considered as limiting its scope.
[0006] FIG. 1 is a block diagram illustrating a high-level
architecture of a near user query (NUQ) recommendation system,
according to an example embodiment.
[0007] FIG. 2 is a diagram illustrating a cluster assignment
operation of the NUQ system, according to an example
embodiment.
[0008] FIG. 3 is a network diagram depicting a network system
having a client-server architecture configured for exchanging data
over a network, according to an example embodiment.
[0009] FIG. 4 is a flowchart illustrating a method for providing an
alternative item recommendation, according to an example
embodiment.
[0010] FIG. 5 is a flowchart illustrating a method for determining
an alternative item recommendation, according to an example
embodiment.
[0011] FIG. 6 is a block diagram illustrating an example embodiment
of multiple marketplace applications, which are provided as part of
the network based marketplace.
[0012] FIG. 7 is a diagrammatic representation of a machine in the
example form of a computer system within which a set of
instructions for causing the machine to perform any one or more of
the methodologies discussed herein may be executed.
DETAILED DESCRIPTION
[0013] Reference will now be made in detail to specific example
embodiments for carrying out the inventive subject matter.
Embodiments may be practiced without some or all of these details.
It will be understood that the forgoing disclosure is not intended
to limit the scope of the claims to the described embodiments. On
the contrary, it is intended to cover alternatives, modifications,
and equivalents as may be included within the scope of the
disclosure as defined by the appended claims. In addition, well
known features may not have been described in detail to avoid
unnecessarily obscuring the subject matter.
[0014] Example embodiments involve a system and methods for
recommending alternatives to a given item in an e-commerce setting
(referred to herein as "alternative item recommendations") based on
near user queries (NUQ). In this way, the system and methods
provide an improvement over an earlier system, which simply
recommends items that are similar to a seed item (e.g., items that
share common attributes with the seed item). The system and methods
described herein improve the earlier system by analyzing terms used
in recent queries to personalize recommendations. The system and
methods use query terms to determine important item dimensions and
a level of abstraction in item similarity, and to adjust the item
similarity to user intentions. In this way, user engagement may
increase because recommendations contain more query terms, and the
current system increases query coverage without sacrificing input
item similarity and item quality.
[0015] Example embodiments involve provisioning alternative item
recommendations to a user, who has engaged with a seed item, to
suggest other items to the user that he or she may consider as
alternatives to the original item. As an example, a user shopping
at an e-commerce website may be viewing an item details page before
initiating the purchase process. At this point, a recommendation
engine recommends alternatives to the current item to provide a
user with new options. Traditionally employed methods for providing
recommendations such as Similar Item Recommendations (SIR) aim to
provide the user with items that are similar to the seed item while
providing a customizable parameter to increase quality and
diversity of recommended items by allowing reduction of similarity.
However, these traditional methods do not account for actions of
the user prior to visiting the item page, and will return the same
recommendation regardless of the query that leads the user to the
item detail page. In contrast, example embodiments of the present
disclosure use the query leading the user to the item details page
to provide personalized and similar alternative item
recommendations.
[0016] Alternative item recommendations may further be
distinguished from similar-taste recommendations (e.g. people who
like "tents" also like "bicycles"), and complementary item
recommendations (people who bought "iPhone" may also buy an "iPhone
case"), which are typically tackled with methods like collaborative
filtering, in that these methods recommend items that do not
necessarily serve as a replacement for the original item.
Alternative item recommendations include items that are similar to
the original item (referred to herein as the "seed item") at some
level of abstraction.
[0017] Alternative item recommendations negotiate a trade-off
between seed-item-similarity, diversity, and quality. In order for
the recommended items to act as a suitable alternative, the items
included in the recommendations bear some similarity to the seed
item, while differing in some other dimensions (e.g., different
price, color, capacity) to provide the user with new options.
Furthermore, in some instances, the recommended items may be better
than the seed item in some aspects (e.g., better price, better
seller quality, better condition) so as to provide the user with a
reason to prefer them over the seed item.
[0018] The level of similarity of the alternative items depends on
the intention of the user. For example, if a user is shopping for
an electronics gift item, a smart phone device can be a viable
alternative to a tablet device. On the other hand, if the user
intention is to buy an ultra-light laptop of a particular brand,
the alternatives should have a closer similarity to the seed item.
To this end, example embodiments involve capturing information
about user intentions in order to improve alternative
recommendations.
[0019] Example embodiments involve a system architecture that
personalizes alternatives recommendations using short-term
in-session data. In particular, the system may determine the scope
of items a user may be interested in, and the system may consider
only recommendation candidates (e.g., items) that are within that
scope. The system may further detect item attributes in recent user
queries that may be desired by the user, and provide greater weight
to items that contain the desired attributes when selecting the top
few recommendations from a pool of candidates. The desire of the
user with regard to certain item attributes is inferred based on
the inclusion of keywords associated with the item attributes being
included in the search query.
[0020] FIG. 1 is a block diagram illustrating a high-level
architecture of a near user query (NUQ) recommendation system 100,
according to an example embodiment. As shown in FIG. 1, NUQ
recommendation system 100 is generally based on a three-tiered
architecture, comprising a front-end layer, an application logic
layer, and a data layer. As is understood by skilled artisans in
the relevant computer and Internet-related arts, each functional
component (e.g., module) shown in FIG. 1 represents a set of
executable software instructions and the corresponding hardware
(e.g., memory and processor) for executing the instructions.
[0021] As shown in FIG. 1, the front end comprises a user interface
module 102 (e.g., a web server), which receives requests from
various client-computing devices and communicates appropriate
responses to the requesting client devices. The user interface
module 102 may receive requests from client devices in the form of
Hypertext Transport Protocol (HTTP) requests or other web-based,
application programming interface (API) requests.
[0022] For example, the user interface module 102 may receive a
search query 104 (e.g., a keyword search) from a client device of a
user and, in response to the received search query 104, provide the
client device with a list or set of search results that satisfies
the search query 104. The set of results includes one or more
content items. As used herein, the terms "content" or "content
item" refer to electronic data that is consumed by viewers (e.g.,
users) on displays, client devices or page/display-based media
(e.g., World-Wide Web (WWW) media embodied in browsers and
accessible over the internet). As such, the terms "content" and
"content item" may refer to data associated with readable text,
data associated with images, data associated with graphics or
video, programmatic content, scripts, or data corresponding to
various combinations of these (e.g., web pages). In some
embodiments, the content items retrieved in response to the search
query 104 correspond to a product details page or product listing
page of an item. As another example, the user interface module 102
may receive a request from a user to view a particular content item
(e.g., a web page provided as part of the list of search results),
which is referred to as a seed item 106, and in response, the user
interface module 102 provides the client device with
computer-readable instructions to present the web page along with
one or more alternative item recommendations 108.
[0023] As shown in FIG. 1, the data layer of the NUQ recommendation
system 100 includes multiple databases including a cluster
dictionary 114 and an item inventory 116. The cluster dictionary
114 stores definitions of item clusters (referred to as "cluster
expression") that group a set of items. The cluster expressions
include a collection of phrases, categories an item belongs to, and
a set of attribute value pairs that describe items. The cluster
expression may be learned from a mixture of information sources
including user queries, items in the item inventory 116, and search
filters. The clusters may be created to group items that users view
together in search queries 104, and therefore, act as high-level
features (e.g., item attributes) that represent subjective
similarity. In particular, the clusters may correspond to
specializations of frequent user queries. Moreover, the clusters
may be constructed using data about search filters (e.g.,
color=red) people interact with in the search UI after entering a
search query 104. Table 1, presented below, shows example clusters,
where each cluster is linked to a collection of attributes, and
Table 2, also presented below, shows the items that correspond to
these clusters, according to an example.
TABLE-US-00001 TABLE 1 Clusters c1: {baby, piano} c2: {musical,
animal, farm, toy}
TABLE-US-00002 TABLE 2 Item Title Cluster(s) i.sub.1 Childs Grand
Baby Piano with c.sub.1 Kids Bench of Solid Wood Construction
i.sub.2 22 Lot Tiny People Musical c.sub.2 Sound Farm Barn Animals
Tractor CLEAN i.sub.3 RED Baby Kids Toddler Musical c.sub.1,
c.sub.2 Educational Animal Farm Piano Developmental Toy
[0024] The item inventory 116 stores inventory data for available
items. In some embodiments, the item inventory databased 116
includes inventory data for a collection of products available for
sale on a network-based marketplace. In these embodiments, the
inventory data may include product information. Such product
information describe item attributes such as a product identifier
(e.g., a title or a model number), a category, a price, a make, a
manufacturer, a model, a brand name, a textual description, a size,
a style, product dimensions, compatibility information, or any
other information that may be used to describe a product.
[0025] As shown, the application logic layer of the NUQ
recommendation system 100 includes run-time logic that takes the
seed item 106 and the search query 104 as input and returns the one
or more alternative item recommendations 108, which are similar to
the seed item 106 and are consistent with the search query 104. At
a high-level, the NUQ recommendation system 100 operates in two
main phases. In the first phase, a cluster assignment module 110
assigns the seed item 106 to clusters, and creates recall
expressions using those clusters. In the second phase, an item
retrieval module 112 identifies and retrieves items from the data
layer that satisfy the created recall expressions. Both the cluster
assignment module 110 and the item retrieval module 112 accept the
search query 104 as an input, and use the search query 104 to skew
the resulting alternative item recommendations 108 to maintain
consistency with the search query 104. In this manner, the NUQ
recommendation system 100 customizes recommendations to short-term
user intentions by preferring items that are consistent with recent
queries.
[0026] The cluster assignment module 110 begins the cluster
assignment phase by retrieving raw item attributes of the seed item
106. For example, the cluster assignment module 110 may use an item
title and a category identifier as raw data in the cluster
assignment. It shall be appreciated that category is merely an
example ontology used to organize the items in the item inventory
116 into a hierarchy and, in other embodiments, other ontologies
may be employed. The cluster assignment module 110 runs the item
title through a number of normalization steps including, for
example, spell correction, normalization, and attribute extraction,
which results in an item feature vector comprising a set of
normalized phrases and feature value pairs.
[0027] During the cluster assignment phase, the cluster assignment
module 110 also accesses at least one of the search queries and
runs it through the same normalization process to create a query
feature vector. As with the item feature vector, the query feature
vector includes a set of normalized pairs and attribute value pairs
(e.g., corresponding to desired attributes). Next, the cluster
assignment module 110 selects a set of attributes in the query
feature vector that are consistent with the item vector (e.g., a
set of attributes that is common to both the query feature vector
and the item feature vector) and marks them as context boosting
factors (CBF). In this way, the NUQ recommendation system 100 may
prioritize recommendations that are consistent with the CBF. In
some embodiments, the cluster assignment module 110 creates CBF
using the last received query. In other embodiments, the cluster
assignment module 110 may use queries in the recent history and
weight the effect of factors by recency.
[0028] In assigning the seed item 106 to a cluster, the cluster
assignment module 110 returns cluster expressions similar to the
item vectors utilizing a term frequency-inverse document frequency
(TF-IDF) measure, which prioritizes rare attributes over more
frequent ones. The cluster assignment module 110 further boosts
item attributes that are consistent with the query vector such that
for given a pair of clusters C1 and C2, C1 is guaranteed to rank
lower than C2, if C1.andgate.CBF is a subset of C.andgate.CBF.
[0029] For example, if the last user query is "baby piano," the NUQ
recommendation system 100 is guaranteed to prioritize clusters that
contain both of the terms "baby" and "piano," if any such cluster
exists. Moreover, any cluster that contains "baby" or "piano," is
also guaranteed to be prioritized over clusters that do not have
any of those terms. Finally, the relative importance of a cluster
that contains "baby" (but not "piano"), over another cluster that
contains "piano" (but not "baby"), is determined by the rareness of
those terms in the cluster dictionary 114.
[0030] In this manner, the cluster assignment module 110 allows
diversity in a set of recommended items by retrieving n clusters in
order, C1, C2, . . . , Cn, such that each new cluster Cj is
negatively boosted by the cluster Ci when i<j. If the cluster
assignment module 110 selects one item for each cluster, it can
display a set of diverse items which are similar to the seed item
106 in different dimensions while satisfying context boosting
factors.
[0031] As an example of the foregoing operations, FIG. 2 is an
abstract diagram depicting the cluster assignment phase of
operation of the NUQ recommendation system 100, according to an
example embodiment. FIG. 2 includes the seed item 106, and clusters
C1-C7. As shown in FIG. 2, clusters close to the seed item 106 are
given priority (solid arrow). Moreover, clusters that contain all
CBF terms (e.g., C1, C2, C3, and C4) are given priority over
clusters containing some of the CBF terms (e.g., C5, C6, and C7),
even though a portion of those clusters (e.g., C6, and C7) may be
closer to the seed item 106. Moreover, when diversity constraints
are applied. NUQ recommendation system 100 gives priority to
clusters that are dissimilar from each other. For example if C1 is
selected, the next selected cluster would be C3 or C2 rather than
C4.
[0032] Referring back to FIG. 1, once the applicable cluster
expressions are retrieved from the cluster dictionary 114, the
cluster assignment module 110 generates a recall expression using
the retrieved cluster expression and the search query 104. The
recall expression is then provided to the item retrieval module
112. The item retrieval module 112 uses the recall expression to
retrieve a set of candidate recommendation items from item
inventory 116. In this way, the cluster expressions look like
search queries 104, grouping items that are similar in some aspects
together.
[0033] The item retrieval module 112 then ranks the retrieved set
of candidate recommendation items. In ranking the retrieved set of
candidate recommendation items, the item retrieval module 112
utilizes an ordering function that negotiates a trade-off between
item similarity and quality while giving preference to items that
have terms consistent with CBFs obtained from search queries 104.
For example, the item retrieval module 112 may utilize the
following function:
Score(seed,reco)=w.sub.1Sim(seed,reco)+w.sub.2Quality(reco)
[0034] In the above function, seed is the seed item 104 and reco is
the candidate item for recommendation. The item retrieval module
112 determines item ranking by using a weighted average between a
similarity function Sim and quality of the recommended item as
measured by a Quality function. The item retrieval module 112 uses
the similarity function Sim that compares the shared and not shared
tokens between seed and reco, but weights the terms with domain
specific importance. The item retrieval module 112 further boosts
these weights if the terms belong to the search query 104.
[0035] In instances in which the clusters contain all context
boosting factors, ranking time boosting may not be employed since
all candidate items generated from these clusters would satisfy
these factors already. However, in other instances, the NUQ
recommendation system 100 retrieves clusters missing context
boosting factors. This typically happens when the query terms (or a
particular combination of query terms) are not frequent enough in
past inventory to warrant construction of clusters that contain all
of them. In that case, the NUQ recommendation system 100 employs an
algorithm that measures seed item similarity using weighted terms,
and further boosts the weight of terms that are in the set of
context boosting factors.
[0036] To avoid obscuring the inventive subject matter with
unnecessary detail, various functional components that are not
germane to conveying an understanding of the inventive subject
matter have been omitted from FIG. 1. However, a skilled artisan
will readily recognize that various additional functional
components may be supported by the NUQ recommendation system 100 to
facilitate additional functionality that is not specifically
described herein. Furthermore, although depicted in FIG. 1 as a
three-tiered architecture, the inventive subject matter is by no
means limited to such architecture. Moreover, the various
functional components depicted in FIG. 1 may reside on a single
server computer, or may be distributed across several server
computers in various arrangements. Additionally, although the NUQ
recommendation system 100 is illustrated as being an independent
system, in some embodiments, the NUQ recommendation system 100 may
be incorporated as part of a larger system.
[0037] As an example, FIG. 3 is a network diagram depicting a
network system 300 having a client-server architecture configured
for exchanging data over a network 302. The network system 300
includes a network-based content publisher 304 in communication
with a client device 306. The network-based content publisher 304
may, for example, be a network-based marketplace.
[0038] The network-based content publisher 304 communicates and
exchanges data within the network system 300 that pertain to
various functions and aspects associated with the network system
300 and its users. The network-based content publisher 304 provides
server-side functionality, via the network 302 (e.g., the
Internet), to the client device 306 that allows the client device
306 to exchange data with the network-based content publisher 304.
These data exchanges include transmitting, receiving, and
processing data to, from, and regarding content and users of the
network system 300. The data include, but are not limited to:
images; video or audio content; user preferences; product and
service feedback, advice, and reviews; product, service,
manufacturer, and vendor recommendations and identifiers; product
and service listings associated with buyers and sellers; product
and service advertisements; auction bids; transaction data; and
social data, among other things.
[0039] In various embodiments, the data exchanged within the
network system 300 may be dependent upon user-selected functions
available through one or more client or user interfaces (UIs). The
UIs may, for example, be specifically associated with a web client
308 (e.g., a browser) executing on the client device 306, and in
communication with the network-based content publisher 304. The UIs
may also be associated with a mobile application 310 executing on
the client device 306, such as a client application specifically
designed for interacting with the network-based content publisher
304.
[0040] Turning specifically to the network-based content publisher
304, an API server 312 and a web server 314 are coupled to (e.g.,
via wired or wireless interfaces), and provide programmatic and web
interfaces, respectively, to an application server 316. The API
server 312 and the web server 314 may collectively provide the
functionality of the front end of the NUQ recommendation system
100, consistent with some embodiments. The application server 316
may, for example, host the cluster assignment module 110 and the
item retrieval module 112 that form the application layer of the
NUQ recommendation system 100.
[0041] The application server 316 may also host a marketplace
application 326. The marketplace application 326 provides a number
of marketplace functions and services to users that access the
network-based content publisher 304. For example, the marketplace
application 326 may provide a number of publishing, listing, and
price-setting mechanisms whereby a seller may list (or publish
information concerning) goods or services for sale, a buyer can
express interest in or indicate a desire to purchase such goods or
services, and a price can be set for a transaction pertaining to
the goods or services.
[0042] As illustrated in FIG. 3, the application server 316 is
coupled to a database server 320 that facilitates access to a
database 322. The database 322 may stores data pertaining to
various functions and aspects associated with the network system
300 and its users. The database 322 may include multiple databases
that may be internal or external to the network-based content
publisher 304. For example, the database 322 may include the
cluster dictionary 114 and the item inventory 116.
[0043] Additionally, user profiles of users of the network-based
content publisher 304 may be stored and maintained as part of the
database 322. Each user profile comprises user profile data that
describes aspects of a particular user. The user profile data may,
for example, include demographic data (e.g., gender, age, location
information, employment history, education history, contact
information, familial relations, or user interests), user
preferences, social data, and financial information (e.g., an
account number, credential, password, device identifier, user name,
phone number, credit card information, bank information,
transaction history, or other financial information which may be
used to facilitate online transactions by the user).
[0044] The user profile data may also include a record of user
activity, consistent with some embodiments. Accordingly, the
network-based content publisher 304 may monitor, track, and record
the activities and interactions of a user, using one or more
devices, with the various modules of the network system 300. Each
user session may be stored in the database 322 and maintained as
part of the user profile data. Accordingly, the user profile data
may include past keyword searches that users have performed, web
pages viewed by each user, products added to a user wish list or
watch list, products added to an electronic shopping cart, and
products that the users own.
[0045] While the cluster assignment module 110 and item retrieval
module 112 are shown in FIG. 3 to form part of the network-based
content publisher 304, it will be appreciated that, in alternative
embodiments, the cluster assignment module 110 and item retrieval
module 112 may form part of a service that is separate and distinct
from the network-based content publisher 304 (e.g., the NUQ
recommendation system 100 illustrated in FIG. 1). Further, while
the system 300 shown in FIG. 3 employs a client-server
architecture, the present inventive subject matter is, of course,
not limited to such an architecture, and could equally well find
application in an event-driven, distributed, or peer-to-peer
architecture system, for example.
[0046] FIG. 4 is a flowchart illustrating a method 400 for
providing alternative item recommendations 108, according to an
example embodiment. The method 400 may be embodied in
computer-readable instructions for execution by one or more
processors such that the steps of the method 400 may be performed
in part or in whole by the functional components of the NUQ
recommendation system 101; accordingly, the method 400 is described
below by way of example with reference thereto. However, it shall
be appreciated that the method 400 may be deployed on various other
hardware configurations and is not intended to be limited to the
functional components of the NUQ recommendation system 100.
[0047] At operation 405, the interface module 102 receives a search
query 104 from a client device (e.g., client device 306) of a user.
The query 104 includes one or more keywords. In some embodiments,
the interface module 102 may store the search query 104 in the
database 322 as part of a user profile of the user. At operation
410, the interface module 102 provides a set of search results
(e.g., a list of content items) to the client device 306 that
satisfy the search query 104 (e.g., the interface module 102
provides a set of instructions to the client device 306 that causes
the client device 306 to display the set of search results). At
operation 415, the interface module 102 receives, from the client
device 306 of the user, a request to view an item (e.g., a web page
with product details) included in the set of results. The item for
which the request pertains is used as the seed item 106 for later
analysis by the NUQ recommendation system 100.
[0048] At operation 420, the NUQ recommendation system 100
determines alternative item recommendations using at least the
search query received at operation 405 by the interface module 102.
In some instances, the NUQ recommendation system 100 may access the
previously stored search query as part of determining the one or
more alternative item recommendations. Consistent with some
embodiments, the determining of the one or more alternative item
recommendations may include identifying one or more desired item
attributes (e.g., characteristics of an item) based on the search
query (e.g., item attributes included as or inferred from one or
more keywords included in the search query), identifying a set of
candidate items having the one or more desired item attributes, and
generating the alternative item recommendations using the set of
candidate items. In some embodiments, determining the alternative
item recommendation may further include ranking the set of
candidate items according one or more context boosting factors
determined based on the search query, and selection of a portion of
the candidate items based on rank. Further details of the operation
420, consistent with some embodiments, are discussed below in
reference to FIG. 5.
[0049] At operation 425, the interface module 102 causes
presentation of the requested item along with the one or more
alternative item recommendations. For example, the interface module
102 provides instructions to the client device 306 that causes the
client device 306 to present a product details page for a product
listed for sale. The product details page includes the one or more
alternative item recommendations, which, in this example, are other
products listed for sale.
[0050] FIG. 5 is a flowchart illustrating a method 500 for
determining an alternative item recommendation, according to an
example embodiment. The method 500 may, in some embodiments,
correspond to the operation 420 of method 400. The method 500 may
be embodied in computer-readable instructions for execution by one
or more processors such that the steps of the method 500 may be
performed in part or in whole by the functional components of the
NUQ recommendation system 100; accordingly, the method 500 is
described below by way of example with reference thereto. However,
it shall be appreciated that the method 500 may be deployed on
various other hardware configurations and is not intended to be
limited to the functional components of the NUQ recommendation
system 100.
[0051] At operation 505, the cluster assignment module 110 uses raw
item attributes (e.g., item title and category identifier) obtained
from inventory data about the seed item to generate an item feature
vector. The item feature vector includes a set of normalized
phrases and attribute value pairs. At operation 510, the cluster
assignment module 110 generates a query feature vector from a
received user query. As with the item feature vector, the query
feature vector includes a set of normalized phrases and attribute
value pairs (e.g., corresponding to the desired item
attributes).
[0052] At operation 515, the cluster assignment module 110 selects
a set of attributes that are common to both the query vector and
the item feature vector, and identifies the set of attributes as
context boosting factors. At operation 520, the cluster assignment
module 110 retrieves cluster expressions that are similar to the
item vectors. In retrieving cluster expressions, the cluster
assignment module 110 gives preference to cluster expressions
having item attributes that are consistent with the query vector.
In some embodiments, the cluster assignment module 110 may utilize
a TF-IDF measure that prioritize rare attributes over more frequent
ones. At operation 525, the cluster assignment module 110 creates
recall expressions using the retrieved item clusters.
[0053] At operation 530, the item retrieval module 112 retrieves a
set of candidate recommendation items using the created recall
expressions. At operation 535, the item retrieval module 112 ranks
each candidate item in the set of candidate items in accordance
with the identified context boosting factors. In some embodiments,
the item retrieval module 112 determines item ranking by using a
weighted average between similarity and quality of the recommended
item. At operation 540, the item retrieval module 112 selects a
portion of the candidate items from the set of candidate items
based on the ranking. For example, the item retrieval module 112
may select the top three ranked items. The items selected by the
item retrieval module 112 correspond to the alternative item
recommendations that are provided by the NUQ recommendation system
100.
[0054] FIG. 6 is a block diagram illustrating an example embodiment
of multiple modules forming the marketplace application 326, which
is provided as part of the network system 300 of FIG. 3. The
modules of the marketplace application 326 may be hosted on
dedicated or shared server machines that are communicatively
coupled to enable communications between server machines. Each of
the modules of the marketplace application 326 are communicatively
coupled (e.g., via appropriate interfaces) to each other and to
various data sources, so as to allow information to be passed
between the modules or so as to allow the modules to share and
access common data. The various modules of the marketplace
application 326 may further access the databases 322 via the
database servers 320. Further, while the modules of the marketplace
application 326 are discussed in the singular sense, it will be
appreciated that, in other embodiments, multiple instances of any
one of the modules may be employed. Moreover, while the modules of
FIG. 6 are shown to all form part of the marketplace application
326, it will be appreciated that, in alternative embodiments, any
one of the modules may form part of a service that is separate and
distinct from the network-based content publisher 304.
[0055] The marketplace application 326 provides a number of
publishing, listing, and price-setting mechanisms whereby a seller
may list (or publish information concerning) goods or services for
sale, a buyer can express interest in or indicate a desire to
purchase such goods or services, and a price can be set for a
transaction pertaining to the goods or services. To this end, the
marketplace application 326 is shown to include a publication
module 600 and an auction module 602 which support auction-format
listing and price setting mechanisms (e.g., English, Dutch,
Vickrey, Chinese, Double, Reverse auctions). The auction module 602
may also provide a number of features in support of such
auction-format listings, such as a reserve price feature whereby a
seller may specify a reserve price in connection with a listing and
a proxy-bidding feature whereby a bidder may invoke automated proxy
bidding.
[0056] A fixed-price module 604 supports fixed-price listing
formats (e.g., the traditional classified advertisement-type
listing or a catalogue listing) and buyout-type listings.
Specifically, buyout-type listings may be offered in conjunction
with auction-format listings, and allow a buyer to purchase goods
or services, which are also being offered for sale via an auction,
for a fixed-price that is typically higher than the starting price
of the auction.
[0057] A store module 606 allows sellers to group their item
listings (e.g., goods and/or services) within a "virtual" store,
which may be branded and otherwise personalized by and for the
sellers. Such a virtual store may also offer promotions,
incentives, and features that are specific and personalized to a
relevant seller. In one embodiment, the listings or transactions
associated with the virtual store and its features may be provided
to one or more users.
[0058] Navigation of the network-based content publisher 304 may be
facilitated by a navigation module 608. For example, the navigation
module 608 may, inter alia, enable key word searches of listings
published via the network-based content publisher 304. The
navigation module 608 may allow users, via an associated user
interface, to browse various category, catalogue, inventory, social
network, and review data structures within the network-based
content publisher 304. Various other navigation applications (e.g.,
an external search engine) may be provided to supplement the search
and browsing applications.
[0059] A communication module 610 is used for generation and
delivery of messages including the recommendation to users of the
auction module 602. The communication module 610 may utilize any
one of a number of message delivery networks and platforms to
deliver messages to users. For example, the communication module
610 may deliver electronic mail (e-mail), instant message (IM),
Short Message Service (SMS), text, facsimile, or voice (e.g., Voice
over IP (VoIP)) messages via the wired (e.g., the Internet), plain
old telephone service (POTS), or wireless (e.g., mobile, cellular,
WiFi, WiMAX) networks.
[0060] It will be appreciated that one or more of the various
modules forming the marketplace application 326 may be combined
into a single module. Further, in some embodiments, one or more
modules may be omitted and additional applications may also be
included.
Machine Architecture
[0061] FIG. 7 is a block diagram illustrating components of a
machine 700, according to some example embodiments, able to read
instructions from a machine-readable medium (e.g., a
machine-readable storage medium) and perform any one or more of the
methodologies discussed herein. Specifically, FIG. 7 shows a
diagrammatic representation of the machine 700 in the example form
of a computer system, within which instructions 716 (e.g.,
software, a program, an application, an applet, an app, or other
executable code) for causing the machine 700 to perform any one or
more of the methodologies discussed herein may be executed. For
example, the instructions 716 include executable code that causes
the machine 700 to execute the functionality of the NUQ
recommendation system 100 and the associated functionalities
described herein. These instructions 716 transform the general,
non-programmed machine 700 into a specially configured machine 700
programmed to carry out the described and illustrated functions of
the NUQ recommendation system 100 in the manner described herein.
The machine 700 may operate as a standalone device or may be
coupled (e.g., networked) to other machines. In a networked
deployment, the machine 700 may operate in the capacity of a server
machine or a client machine in a server-client network environment,
or as a peer machine in a peer-to-peer (or distributed) network
environment. By way of non-limiting example, the machine 700 may
comprise or correspond to a server computer, a client computer, a
personal computer (PC), a tablet computer, a laptop computer, a
netbook, a set-top box (STB), a personal digital assistant (PDA),
an entertainment media system, a cellular telephone, a smart phone,
a mobile device, a wearable device (e.g., a smart watch), a smart
home device (e.g., a smart appliance), other smart devices, a web
appliance, a network router, a network switch, a network bridge, or
any machine capable of executing the instructions 716, sequentially
or otherwise, that specify actions to be taken by machine 700.
Further, while only a single machine 700 is illustrated, the term
"machine" shall also be taken to include a collection of machines
700 that individually or jointly execute the instructions 716 to
perform any one or more of the methodologies discussed herein.
[0062] The machine 700 may include processors 710, memory/storage
730, and I/O components 750, which may be configured to communicate
with each other such as via a bus 702. In an example embodiment,
the processors 710 (e.g., a Central Processing Unit (CPU), a
Reduced Instruction Set Computing (RISC) processor, a Complex
Instruction Set Computing (CISC) processor, a Graphics Processing
Unit (GPU), a Digital Signal Processor (DSP), an Application
Specific Integrated Circuit (ASIC), a Radio-Frequency Integrated
Circuit (RFIC), another processor, or any suitable combination
thereof) may include, for example, processor 712 and processor 714
that execute instructions 716. The term "processor" is intended to
include multi-core processor that may comprise two or more
independent processors (sometimes referred to as "cores") that
execute instructions contemporaneously. Although FIG. 7 shows
multiple processors, the machine 700 may include a single processor
with a single core, a single processor with multiple cores (e.g., a
multi-core processor), multiple processors with a single core,
multiple processors with multiples cores, or any combination
thereof.
[0063] The memory/storage 730 may include a memory 732, such as a
main memory, or other memory storage, and a storage unit 736, both
accessible to the processors 730 such as via the bus 702. The
storage unit 736 and memory 732 store the instructions 716,
embodying any one or more of the methodologies or functions
described herein. The instructions 716 may also reside, completely
or partially, within the memory 732, within the storage unit 736,
within at least one of the processors 712 (e.g., within the
processor's cache memory), or any suitable combination thereof,
during execution thereof by the machine 700. Accordingly, the
memory 732, the storage unit 736, and the memory of processors 710
are examples of machine-readable media.
[0064] As used herein, "machine-readable medium" means a device
able to store instructions and data temporarily or permanently and
may include, but is not be limited to, random-access memory (RAM),
read-only memory (ROM), buffer memory, flash memory, optical media,
magnetic media, cache memory, other types of storage (e.g.,
Erasable Programmable Read-Only Memory (EEPROM)) and/or any
suitable combination thereof. The term "machine-readable medium"
should be taken to include a single medium or multiple media (e.g.,
a centralized or distributed database, or associated caches and
servers) able to store instructions 716. The term "machine-readable
medium" shall also be taken to include any medium, or combination
of multiple media, that is capable of storing instructions (e.g.,
instructions 716) for execution by a machine (e.g., machine 700),
such that the instructions, when executed by one or more processors
of the machine 700 (e.g., processors 730), cause the machine 700 to
perform any one or more of the methodologies described herein.
Accordingly, a "machine-readable medium" refers to a single storage
apparatus or device, as well as "cloud-based" storage systems or
storage networks that include multiple storage apparatus or
devices. The term "machine-readable medium" excludes signals per
se.
[0065] Furthermore, the machine-readable medium is non-transitory
in that it does not embody a propagating signal. However, labeling
the tangible machine-readable medium "non-transitory" should not be
construed to mean that the medium is incapable of movement--the
medium should be considered as being transportable from one
real-world location to another. Additionally, since the
machine-readable medium is tangible, the medium may be considered
to be a machine-readable device.
[0066] The I/O components 750 may include a wide variety of
components to receive input, provide output, produce output,
transmit information, exchange information, capture measurements,
and so on. The specific I/O components 750 that are included in a
particular machine will depend on the type of machine. For example,
portable machines such as mobile phones will likely include a touch
input device or other such input mechanisms, while a headless
server machine will likely not include such a touch input device.
It will be appreciated that the I/O components 750 may include many
other components that are not shown in FIG. 7. The I/O components
750 are grouped according to functionality merely for simplifying
the following discussion and the grouping is in no way limiting. In
various example embodiments, the I/O components 750 may include
output components 752 and input components 754. The output
components 752 may include visual components (e.g., a display such
as a plasma display panel (PDP), a light emitting diode (LED)
display, a liquid crystal display (LCD), a projector, or a cathode
ray tube (CRT)), acoustic components (e.g., speakers), haptic
components (e.g., a vibratory motor, resistance mechanisms), other
signal generators, and so forth. The input components 754 may
include alphanumeric input components (e.g., a keyboard, a touch
screen configured to receive alphanumeric input, a photo-optical
keyboard, or other alphanumeric input components), point based
input components (e.g., a mouse, a touchpad, a trackball, a
joystick, a motion sensor, or other pointing instrument), tactile
input components (e.g., a physical button, a touch screen that
provides location and/or force of touches or touch gestures, or
other tactile input components), audio input components (e.g., a
microphone), and the like.
[0067] In further example embodiments, the I/O components 750 may
include biometric components 756, motion components 758,
environmental components 760, or position components 762 among a
wide array of other components. For example, the biometric
components 756 may include components to detect expressions (e.g.,
hand expressions, facial expressions, vocal expressions, body
gestures, or eye tracking), measure biosignals (e.g., blood
pressure, heart rate, body temperature, perspiration, or brain
waves), identify a person (e.g., voice identification, retinal
identification, facial identification, fingerprint identification,
or electroencephalogram based identification), and the like. The
motion components 758 may include acceleration sensor components
(e.g., accelerometer), gravitation sensor components, rotation
sensor components (e.g., gyroscope), and so forth. The
environmental components 760 may include, for example, illumination
sensor components (e.g., photometer), temperature sensor components
(e.g., one or more thermometer that detect ambient temperature),
humidity sensor components, pressure sensor components (e.g.,
barometer), acoustic sensor components (e.g., one or more
microphones that detect background noise), proximity sensor
components (e.g., infrared sensors that detect nearby objects), gas
sensors (e.g., gas detection sensors to detect concentrations of
hazardous gases for safety or to measure pollutants in the
atmosphere), or other components that may provide indications,
measurements, or signals corresponding to a surrounding physical
environment. The position components 762 may include location
sensor components (e.g., a Global Position System (GPS) receiver
component), altitude sensor components (e.g., altimeters or
barometers that detect air pressure from which altitude may be
derived), orientation sensor components (e.g., magnetometers), and
the like.
[0068] Communication may be implemented using a wide variety of
technologies. The I/O components 750 may include communication
components 764 operable to couple the machine 700 to a network 780
or devices 770 via coupling 782 and coupling 772 respectively. For
example, the communication components 764 may include a network
interface component or other suitable device to interface with the
network 780. In further examples, communication components 764 may
include wired communication components, wireless communication
components, cellular communication components, Near Field
Communication (NFC) components, Bluetooth.RTM. components (e.g.,
Bluetooth.RTM. Low Energy), Wi-Fi.RTM. components, and other
communication components to provide communication via other
modalities. The devices 770 may be another machine or any of a wide
variety of peripheral devices (e.g., a peripheral device coupled
via a Universal Serial Bus (USB)).
[0069] Moreover, the communication components 764 may detect
identifiers or include components operable to detect identifiers.
For example, the communication components 764 may include Radio
Frequency Identification (RFID) tag reader components, NFC smart
tag detection components, optical reader components (e.g., an
optical sensor to detect one-dimensional bar codes such as
Universal Product Code (UPC) bar code, multi-dimensional bar codes
such as Quick Response (QR) code, Aztec code, Data Matrix,
Dataglyph, MaxiCode, PDF417, Ultra Code, UCC RSS-2D bar code, and
other optical codes), or acoustic detection components (e.g.,
microphones to identify tagged audio signals). In addition, a
variety of information may be derived via the communication
components 764, such as location via Internet Protocol (IP)
geo-location, location via Wi-Fi.RTM. signal triangulation,
location via detecting a NFC beacon signal that may indicate a
particular location, and so forth.
Transmission Medium
[0070] In various example embodiments, one or more portions of the
network 780 may be an ad hoc network, an intranet, an extranet, a
virtual private network (VPN), a local area network (LAN), a
wireless LAN (WLAN), a wide area network (WAN), a wireless WAN
(WWAN), a metropolitan area network (MAN), the Internet, a portion
of the Internet, a portion of the Public Switched Telephone Network
(PSTN), a plain old telephone service (POTS) network, a cellular
telephone network, a wireless network, a Wi-Fi.RTM. network,
another type of network, or a combination of two or more such
networks. For example, the network 780 or a portion of the network
780 may include a wireless or cellular network and the coupling 782
may be a Code Division Multiple Access (CDMA) connection, a Global
System for Mobile communications (GSM) connection, or other type of
cellular or wireless coupling. In this example, the coupling 782
may implement any of a variety of types of data transfer
technology, such as Single Carrier Radio Transmission Technology
(1.times.RTT), Evolution-Data Optimized (EVDO) technology, General
Packet Radio Service (GPRS) technology, Enhanced Data rates for GSM
Evolution (EDGE) technology, third Generation Partnership Project
(3GPP) including 3G, fourth generation wireless (4G) networks,
Universal Mobile Telecommunications System (UMTS), High Speed
Packet Access (HSPA), Worldwide Interoperability for Microwave
Access (WiMAX), Long Term Evolution (LTE) standard, others defined
by various standard setting organizations, other long range
protocols, or other data transfer technology.
[0071] The instructions 716 may be transmitted or received over the
network 780 using a transmission medium via a network interface
device (e.g., a network interface component included in the
communication components 764) and utilizing any one of a number of
well-known transfer protocols (e.g., hypertext transfer protocol
(HTTP)). Similarly, the instructions 716 may be transmitted or
received using a transmission medium via the coupling 772 (e.g., a
peer-to-peer coupling) to devices 770. The term "transmission
medium" shall be taken to include any intangible medium that is
capable of storing, encoding, or carrying instructions 716 for
execution by the machine 700, and includes digital or analog
communications signals or other intangible medium to facilitate
communication of such software.
Modules, Components and Logic
[0072] Certain embodiments are described herein as including logic
or a number of components, modules, or mechanisms. Modules may
constitute either software modules (e.g., code embodied on a
machine-readable medium or in a transmission signal) or hardware
modules. A hardware module is a tangible unit capable of performing
certain operations and may be configured or arranged in a certain
manner In example embodiments, one or more computer systems (e.g.,
a standalone, client, or server computer system) or one or more
hardware modules of a computer system (e.g., a processor or a group
of processors) may be configured by software (e.g., an application
or application portion) as a hardware module that operates to
perform certain operations as described herein.
[0073] In various embodiments, a hardware module may be implemented
mechanically or electronically. For example, a hardware module may
comprise dedicated circuitry or logic that is permanently
configured (e.g., as a special-purpose processor, such as a
field-programmable gate array (FPGA) or an application-specific
integrated circuit (ASIC)) to perform certain operations. A
hardware module may also comprise programmable logic or circuitry
(e.g., as encompassed within a general-purpose processor or other
programmable processor) that is temporarily configured by software
to perform certain operations. It will be appreciated that the
decision to implement a hardware module mechanically, in dedicated
and permanently configured circuitry, or in temporarily configured
circuitry (e.g., configured by software) may be driven by cost and
time considerations.
[0074] Accordingly, the term "hardware module" should be understood
to encompass a tangible entity, be that an entity that is
physically constructed, permanently configured (e.g., hardwired) or
temporarily configured (e.g., programmed) to operate in a certain
manner and/or to perform certain operations described herein.
Considering embodiments in which hardware modules are temporarily
configured (e.g., programmed), each of the hardware modules need
not be configured or instantiated at any one instance in time. For
example, where the hardware modules comprise a general-purpose
processor configured using software, the general-purpose processor
may be configured as respective different hardware modules at
different times. Software may accordingly configure a processor,
for example, to constitute a particular hardware module at one
instance of time and to constitute a different hardware module at a
different instance of time.
[0075] Hardware modules can provide information to, and receive
information from, other hardware modules. Accordingly, the
described hardware modules may be regarded as being communicatively
coupled. Where multiple of such hardware modules exist
contemporaneously, communications may be achieved through signal
transmission (e.g., over appropriate circuits and buses that
connect the hardware modules). In embodiments in which multiple
hardware modules are configured or instantiated at different times,
communications between such hardware modules may be achieved, for
example, through the storage and retrieval of information in memory
structures to which the multiple hardware modules have access. For
example, one hardware module may perform an operation and store the
output of that operation in a memory device to which it is
communicatively coupled. A further hardware module may then, at a
later time, access the memory device to retrieve and process the
stored output. Hardware modules may also initiate communications
with input or output devices, and can operate on a resource (e.g.,
a collection of information).
[0076] The various operations of example methods described herein
may be performed, at least partially, by one or more processors
that are temporarily configured (e.g., by software) or permanently
configured to perform the relevant operations. Whether temporarily
or permanently configured, such processors may constitute
processor-implemented modules that operate to perform one or more
operations or functions. The modules referred to herein may, in
some example embodiments, comprise processor-implemented
modules.
[0077] Similarly, the methods described herein may be at least
partially processor-implemented. For example, at least some of the
operations of a method may be performed by one or more processors
or processor-implemented modules. The performance of certain of the
operations may be distributed among the one or more processors, not
only residing within a single machine, but deployed across a number
of machines. In some example embodiments, the processor or
processors may be located in a single location (e.g., within a home
environment, an office environment, or a server farm), while in
other embodiments the processors may be distributed across a number
of locations.
[0078] The one or more processors may also operate to support
performance of the relevant operations in a "cloud computing"
environment or as a "software as a service" (SaaS). For example, at
least some of the operations may be performed by a group of
computers (as examples of machines including processors), with
these operations being accessible via a network (e.g., the
Internet) and via one or more appropriate interfaces (e.g.,
APIs).
Electronic Apparatus and System
[0079] Example embodiments may be implemented in digital electronic
circuitry, or in computer hardware, firmware, or software, or in
combinations of them. Example embodiments may be implemented using
a computer program product, for example, a computer program
tangibly embodied in an information carrier, for example, in a
machine-readable medium for execution by, or to control the
operation of, data processing apparatus, for example, a
programmable processor, a computer, or multiple computers.
[0080] 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 standalone program or as a
module, 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
780.
[0081] In example embodiments, operations may be performed by one
or more programmable processors executing a computer program to
perform functions by operating on input data and generating output.
Method operations can also be performed by, and apparatus of
example embodiments may be implemented as, special purpose logic
circuitry (e.g., an FPGA or an ASIC).
[0082] The computing system can include clients and servers. A
client and server are generally remote from each other and
typically interact through a communication network. The
relationship of client and server arises by virtue of computer
programs running on the respective computers and having a
client-server relationship to each other. In embodiments deploying
a programmable computing system, it will be appreciated that both
hardware and software architectures merit consideration.
Specifically, it will be appreciated that the choice of whether to
implement certain functionality in permanently configured hardware
(e.g., an ASIC), in temporarily configured hardware (e.g., a
combination of software and a programmable processor), or in a
combination of permanently and temporarily configured hardware may
be a design choice. Below are set out hardware (e.g., machine) and
software architectures that may be deployed, in various example
embodiments.
Language
[0083] Although the embodiments of the present invention have been
described with reference to specific example embodiments, it will
be evident that various modifications and changes may be made to
these embodiments without departing from the broader scope of the
inventive subject matter. Accordingly, the specification and
drawings are to be regarded in an illustrative rather than a
restrictive sense. The accompanying drawings that form a part
hereof show, by way of illustration, and not of limitation,
specific embodiments in which the subject matter may be practiced.
The embodiments illustrated are described in sufficient detail to
enable those skilled in the art to practice the teachings disclosed
herein. Other embodiments may be used and derived therefrom, such
that structural and logical substitutions and changes may be made
without departing from the scope of this disclosure. This Detailed
Description, therefore, is not to be taken in a limiting sense, and
the scope of various embodiments is defined only by the appended
claims, along with the full range of equivalents to which such
claims are entitled.
[0084] Such embodiments of the inventive subject matter may be
referred to herein, individually and/or collectively, by the term
"invention" merely for convenience and without intending to
voluntarily limit the scope of this application to any single
invention or inventive concept if more than one is in fact
disclosed.
[0085] Thus, although specific embodiments have been illustrated
and described herein, it should be appreciated that any arrangement
calculated to achieve the same purpose may be substituted for the
specific embodiments shown. This disclosure is intended to cover
any and all adaptations or variations of various embodiments.
Combinations of the above embodiments, and other embodiments not
specifically described herein, will be apparent, to those of skill
in the art, upon reviewing the above description.
[0086] All publications, patents, and patent documents referred to
in this document are incorporated by reference herein in their
entirety, as though individually incorporated by reference. In the
event of inconsistent usages between this document and those
documents so incorporated by reference, the usage in the
incorporated references should be considered supplementary to that
of this document; for irreconcilable inconsistencies, the usage in
this document controls.
[0087] In this document, the terms "a" or "an" are used, as is
common in patent documents, to include one or more than one,
independent of any other instances or usages of "at least one" or
"one or more." In this document, the term "or" is used to refer to
a nonexclusive or, such that "A or B" includes "A but not B," "B
but not A," and "A and B," unless otherwise indicated. In the
appended claims, the terms "including" and "in which" are used as
the plain-English equivalents of the respective terms "comprising"
and "wherein." Also, in the following claims, the terms "including"
and "comprising" are open-ended; that is, a system, device,
article, or process that includes elements in addition to those
listed after such a term in a claim are still deemed to fall within
the scope of that claim.
* * * * *