IP Library Granted Patent US 11,436,656
Granted Patent B2
US 11,436,656 · App. 15/074,922 · Granted Sep 6, 2022

System and method for a real-time egocentric collaborative filter on large datasets

Inventors: Eric Huang (San Francisco, CA); Rong Zhou (San Jose, CA)
Assignee: Palo Alto Research Center Incorporated
G06Q30/0631G06Q30/0643
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,436,656
App. No.
15/074,922
Granted
Sep 6, 2022
Kind
B2
Abstract

One embodiment of the present invention provides a system for generating a product recommendation. During operation, the system obtains data indicating vertices and edges of a graph. The vertices represent consumers and products and an edge represents an access relationship. The system may receive a query indicating an ego for determining a product recommendation. The system may then traverse the graph from a vertex representing the ego through a plurality of edges to a plurality of vertices representing products. The system may traverse the graph from the plurality of vertices representing products to a plurality of vertices representing other consumers. The system may then traverse the graph from the plurality of vertices representing other consumers to a plurality of vertices representing other products. The system may generate a recommendation that based on the plurality of vertices representing other products.

Claims (80)

1. A computer-executable method for generating a product recommendation, comprising:

retrieving a dataset comprising information associated with consumers and products from a database running on a database management system (DBMS) that supports execution of a query language;

generating graph data indicating vertices and edges of a graph from the retrieved dataset, wherein the vertices represent the information associated with the consumers and products and an edge represents an access relationship between a consumer and a product indicated in the dataset;

receiving a database query, which is expressed based on the query language, at the database to determine a product recommendation based on the information in the database;

converting the database query to a set of graph operation primitives of a graph solver, wherein the set of graph operation primitives are expressed based on the graph and mapped to a set of database operations associated with the database query;

performing the set of graph operation primitives on the graph using the graph solver to determine a set of vertices representing products; and

generating a recommendation based on the set of vertices obtained from the graph solver as a response to the database query.

2. The method of claim 1 , further comprising:

storing the graph data in one or more database tables of a graph database, which is distinct from the database, running on the DBMS; and

streaming the graph data from the graph database over a network to an executing application.

3. The method of claim 1 , further comprising:

receiving command-line parameters indicating a number of starting vertices, a number of recommendations to be generated, a number of traversals, or a number of media that must be shared in common between an ego associated with the database query and another consumer.

4. The method of claim 1 , further comprising:

receiving a second database query, which is expressed based on the query language, at the database and determining recommendations for a plurality of egos based on the second database query;

determining, by a plurality of processors operating in parallel, a second set of graph operation primitives, which are expressed based on the graph, of the graph solver associated with the plurality of egos, wherein the second set of graph operation primitives are expressed based on the graph and mapped to a second set of database operations associated with the second database query;

performing the second set of graph operation primitives on the graph using the graph solver such that to determine a second set of vertices representing other products are determined;

calculating a tally for each of the second set of vertices;

sorting the second set of vertices; and

generating a recommendation based on the sorted second set of vertices.

5. The method of claim 1 , wherein the graph includes multiple edge types of the edges of the graph, wherein one of the edge types represents a like relationship between a respective consumer and a corresponding product, and wherein a vertex representing an ego associated with the database query and a plurality of vertices representing other consumers of products associated with the ego are connected via edges representing the like relationship.

6. The method of claim 1 , further comprising:

calculating a tally for each of the set of vertices.

7. The method of claim 6 , wherein generating the recommendation further comprises:

sorting and ranking the set of vertices; and

generating the recommendation to include one of:

all products associated with the set of vertices and their corresponding tallies;

products associated with a subset of the set of vertices with tallies that are above a predetermined ranking; and

products associated with a subset of the set of vertices with tallies that are greater than a predetermined user-specified value.

8. A non-transitory computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform a method for generating a product recommendation, the method comprising:

retrieving a dataset comprising information associated with consumers and products from a database running on a database management system (DBMS) that supports execution of a query language;

generating graph data indicating vertices and edges of a graph from the retrieved dataset, wherein the vertices represent the information associated with the consumers and products and an edge represents an access relationship between a consumer and a product indicated in the dataset;

receiving a database query, which is expressed based on the query language, at the database to determine a product recommendation based on the information in the database;

converting the database query to a set of graph operation primitives of a graph solver, wherein the set of graph operation primitives are expressed based on the graph and mapped to a set of database operations associated with the database query;

performing the set of graph operation primitives on the graph using the graph solver to determine a set of vertices representing products; and

generating a recommendation based on the set of vertices obtained from the graph solver as a response to the database query.

9. The computer-readable storage medium of claim 8 , wherein the method further comprises:

storing the graph data in one or more database tables of a graph database, which is distinct from the database, running on the DBMS; and

streaming the graph data from the graph database over a network to an executing application.

10. The non-transitory computer-readable storage medium of claim 8 , wherein the method further comprises:

receiving command-line parameters indicating a number of starting vertices, a number of recommendations to be generated, a number of traversals, or a number of media that must be shared in common between an ego associated with the database query and another consumer.

11. The non-transitory computer-readable storage medium of claim 8 , wherein the method further comprises:

receiving a second database query, which is expressed based on the query language, at the database and determining product recommendations for a plurality of egos based on the second database query;

determining, by a plurality of processors operating in parallel, a second set of graph operation primitives of the graph solver associated with the plurality of egos, wherein the second set of graph operation primitives, are expressed based on the graph and mapped to a second set of database operations associated with the second database query;

performing the second set of graph operation primitives on the graph using the graph solver such that a second set of vertices representing other products are determined;

calculating a tally for each of the second set of vertices;

sorting the second set of vertices; and

generating a recommendation based on the sorted second set of vertices.

12. The non-transitory computer-readable storage medium of claim 8 , wherein the graph includes multiple edge types of the edges of the graph, wherein one of the edge types represents a like relationship between a respective consumer and a corresponding product, and wherein a vertex representing an ego associated with the database query and a plurality of vertices representing other consumers of products associated with the ego are connected via edges representing the like relationship.

13. The non-transitory computer-readable storage medium of claim 8 , wherein the method further comprises:

calculating a tally for each of the set of vertices.

14. The non-transitory computer-readable storage medium of claim 13 , wherein generating the recommendation further comprises:

sorting and ranking the set of vertices; and

generating the recommendation to include one of:

all products associated with the set of vertices and their corresponding tallies;

products associated with a subset of the set of vertices with tallies that are above a predetermined ranking; and

products associated with a subset of the set of vertices with tallies that are greater than a predetermined user-specified value.

15. A computing system for generating a product recommendation, the system comprising:

one or more processors,

a non-transitory computer-readable medium coupled to the one or more processors having instructions stored thereon that, when executed by the one or more processors, cause the one or more processors to perform a method for generating a product recommendation, the method comprising:

retrieving a dataset comprising information associated with consumers and products from a database running on a database management system (DBMS) that supports execution of a query language;

generating graph data indicating vertices and edges of a graph from the retrieved dataset, wherein the vertices represent the information associated with the consumers and products and an edge represents an access relationship between a consumer and a product indicated in the dataset;

receiving a database query, which is expressed based on the query language, at the database to determine a product recommendation based on the information in the database;

converting the database query to a set of graph operation primitives of a graph solver, wherein the set of graph operation primitives are expressed based on the graph and mapped to a set of database operations associated with the database query;

performing the set of graph operation primitives on the graph using the graph solver to determine a set of vertices representing products; and

generating a recommendation based on the set of vertices obtained from the graph solver as a response to the database query.

16. The computing system of claim 15 , wherein the method further comprises:

storing the graph data in one or more database tables of a graph database, which is distinct from the database, running on the DBMS; and

streaming the graph data from the graph database over a network to an executing application.

17. The computing system of claim 15 , wherein the method further comprises:

receiving command-line parameters indicating a number of starting vertices, a number of recommendations to be generated, a number of traversals, or a number of media that must be shared in common between an ego associated with the database query and another consumer.

18. The computing system of claim 15 , wherein the method further comprises:

receiving a second database query, which is expressed based on the query language, at the database and determining product recommendations for a plurality of egos based on the second database query;

determining, by a plurality of processors operating in parallel, a second set of graph operation primitives, which are expressed based on the graph, of the graph solver associated with the plurality of egos, wherein the second set of graph operation primitives are expressed based on the graph and mapped to a second set of database operations associated with the second database query;

performing the second set of graph operation primitives on the graph using the graph solver such that a second set of vertices representing other products are determined;

calculating a tally for each of the second set of vertices;

sorting the second set of vertices; and

generating a recommendation based on the sorted second set of vertices.

19. The computing system of claim 15 , wherein the graph includes multiple edge types of the edges of the graph, wherein one of the edge types represents a like relationship between a respective consumer and a corresponding product, and wherein a vertex representing an ego associated with the database query and a plurality of vertices representing other consumers of products associated with the ego are connected via edges representing the like relationship.

20. The computing system of claim 15 , wherein the method further comprises:

calculating a tally for each of set of vertices.

Assignments (9)
SECOND LIEN NOTES PATENT SECURITY AGREEMENT Recorded Jul 2, 2025
From: XEROX CORPORATION
To: U.S. BANK TRUST COMPANY, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 071785/0550 →
FIRST LIEN NOTES PATENT SECURITY AGREEMENT Recorded Apr 11, 2025
From: XEROX CORPORATION
To: U.S. BANK TRUST COMPANY, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 070824/0001 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS RECORDED AT RF 064760/0389 Recorded Feb 13, 2024
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: XEROX CORPORATION
Reel/Frame 068261/0001 →
SECURITY INTEREST Recorded Feb 13, 2024
From: XEROX CORPORATION
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 066741/0001 →
SECURITY INTEREST Recorded Nov 20, 2023
From: XEROX CORPORATION
To: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 065628/0019 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVAL OF US PATENTS 9356603, 10026651, 10626048 AND INCLUSION OF US PATENT 7167871 PREVIOUSLY RECORDED ON REEL 064038 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jun 28, 2023
From: PALO ALTO RESEARCH CENTER INCORPORATED
To: XEROX CORPORATION
Reel/Frame 064161/0001 →
SECURITY INTEREST Recorded Jun 22, 2023
From: XEROX CORPORATION
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 064760/0389 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 20, 2023
From: PALO ALTO RESEARCH CENTER INCORPORATED
To: XEROX CORPORATION
Reel/Frame 064038/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 21, 2016
From: HUANG, ERIC; ZHOU, RONG
To: PALO ALTO RESEARCH CENTER INCORPORATED
Reel/Frame 038050/0615 →
Continuity (1)
Related Publication 20170270590A1 · Sep 21, 2017
Cited By (3)
US 12,499,169 US 12,505,478 US 12,511,551