U.S. patent application number 15/154261 was filed with the patent office on 2016-09-01 for object recommendation based upon similarity distances.
The applicant listed for this patent is Facebook, Inc.. Invention is credited to Dan Ionut Fechete, Ming Hua, Yang Qin.
Application Number | 20160253334 15/154261 |
Document ID | / |
Family ID | 53493846 |
Filed Date | 2016-09-01 |
United States Patent
Application |
20160253334 |
Kind Code |
A1 |
Fechete; Dan Ionut ; et
al. |
September 1, 2016 |
OBJECT RECOMMENDATION BASED UPON SIMILARITY DISTANCES
Abstract
Exemplary methods, apparatuses, and systems receive a candidate
object with which a user can interact within a network service. For
each of a first plurality of objects with which the user has had a
positive interaction, a first value representing a commonality
between the candidate object and each of the first plurality of
objects is determined. For each of a second plurality of objects
with which a user has had a negative interaction, a second value
representing a commonality between the candidate object and each of
the second plurality of objects is determined. An aggregate
positive distance is determined using a plurality of the first
values. An aggregate negative distance is determined using a
plurality of the second values. The candidate object is displayed
or not displayed to the user as a recommendation based upon a
difference between the aggregate positive distance and the
aggregate negative distance.
Inventors: |
Fechete; Dan Ionut;
(Mountain View, CA) ; Hua; Ming; (Palo Alto,
CA) ; Qin; Yang; (Menlo Park, CA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Facebook, Inc. |
Menlo Park |
CA |
US |
|
|
Family ID: |
53493846 |
Appl. No.: |
15/154261 |
Filed: |
May 13, 2016 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
14147448 |
Jan 3, 2014 |
9367628 |
|
|
15154261 |
|
|
|
|
Current U.S.
Class: |
707/724 |
Current CPC
Class: |
G06F 16/9535 20190101;
G06F 16/24578 20190101 |
International
Class: |
G06F 17/30 20060101
G06F017/30 |
Claims
1. A computer-implemented method comprising: receiving a candidate
object with which a user can interact within a communication
system; determining, for each of a plurality of objects with which
the user has had an interaction, a value representing a commonality
between the candidate object and each of the plurality of objects;
determining an aggregate distance using a plurality of the values,
wherein the aggregate distance is determined by dividing a sum or
average of the plurality of the values by an outlier value, the
outlier value corresponding to an object with which the user has
had an interaction and having less in common with the candidate
object than each of the plurality of objects; and recommending the
candidate object to the user based upon the aggregate distance.
2. The computer-implemented method of claim 1, wherein the
interaction with each of the plurality of objects is a positive
interaction.
3. The computer-implemented method of claim 1, wherein the
interaction with each of the plurality of objects is a negative
interaction.
4. The computer-implemented method of claim 1, further comprising:
selecting an object to be the candidate object based upon positive
feedback from one or more users connected to the user within the
network service.
5. The computer-implemented method of claim 1, wherein each value
is based upon a combination of second and third values, the second
value representing a commonality in metadata between the candidate
object and a corresponding object within the plurality of objects,
and the third value representing one or more other users having an
interaction with both the candidate object and the corresponding
object within the plurality of objects.
6. The computer-implemented method of claim 5, further comprising:
modifying each of the second values to the result of a mathematical
operation between the determined third values and a first weighting
value; and modifying each of the third values to the result of a
mathematical operation between the determined fourth values and a
second weighting value.
7. The computer-implemented method of claim 6, further comprising:
selecting one or more of the weighting values based upon an object
type for the candidate object.
8. The computer-implemented method of claim 1, wherein a number of
objects within the plurality of objects is limited to a number of
objects determined to have a greatest amount in common with the
candidate object.
9. The computer-implemented method of claim 1, wherein a number of
objects within the plurality of objects is limited to a number of
objects based upon an object type for the candidate object.
10. The computer-implemented method of claim 1, wherein one or more
outlying values are omitted from the determination of the aggregate
distance.
11. A non-transitory computer-readable medium storing instructions
which, when executed by one or more processors in a processing
device, cause the processing device to perform a method comprising:
receiving a candidate object with which a user can interact within
a communication system; determining, for each of a plurality of
objects with which the user has had an interaction, a value
representing a commonality between the candidate object and each of
the plurality of objects; determining an aggregate distance using a
plurality of the values, wherein the aggregate distance is
determined by dividing a sum or average of the plurality of the
values by an outlier value, the outlier value corresponding to an
object with which the user has had an interaction and having less
in common with the candidate object than each of the plurality of
objects; and recommending the candidate object to the user based
upon the aggregate distance.
12. The non-transitory computer-readable medium of claim 11,
wherein the interaction with each of the plurality of objects is a
positive interaction.
13. The non-transitory computer-readable medium of claim 11,
wherein the interaction with each of the plurality of objects is a
negative interaction.
14. The non-transitory computer-readable medium of claim 11, the
method further comprising: selecting an object to be the candidate
object based upon positive feedback from one or more users
connected to the user within the network service.
15. The non-transitory computer-readable medium of claim 11,
wherein each value is based upon a combination of second and third
values, the second value representing a commonality in metadata
between the candidate object and a corresponding object within the
plurality of objects, and the third value representing one or more
other users having an interaction with both the candidate object
and the corresponding object within the plurality of objects.
16. The non-transitory computer-readable medium of claim 15, the
method further comprising: modifying each of the second values to
the result of a mathematical operation between the determined third
values and a first weighting value; and modifying each of the third
values to the result of a mathematical operation between the
determined fourth values and a second weighting value.
17. The non-transitory computer-readable medium of claim 16, the
method further comprising: selecting one or more of the weighting
values based upon an object type for the candidate object.
18. The non-transitory computer-readable medium of claim 11,
wherein a number of objects within the plurality of objects is
limited to a number of objects determined to have a greatest amount
in common with the candidate object.
19. The non-transitory computer-readable medium of claim 11,
wherein a number of objects within the plurality of objects is
limited to a number of objects based upon an object type for the
candidate object.
20. The non-transitory computer-readable medium of claim 11,
wherein one or more outlying values are omitted from the
determination of the aggregate distance.
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application is a continuation of U.S. application Ser.
No. 14/147,448, filed Jan. 3, 2014, which is hereby incorporated by
reference.
FIELD
[0002] The various embodiments described herein relate to ranking
and recommending objects within a network service. In particular,
the embodiments relate to ranking and recommending objects based
upon commonalities between each candidate object and one or more
objects with which a user has had positive and negative
interactions.
BACKGROUND
[0003] Network services enable users to interact with various
objects. For example, a social networking system allows users to
designate other users or entities as connections (or otherwise
connect to, or form relationships with, other users or entities),
contribute and interact with their connections, post media or
commentary, use applications, join groups, list and confirm
attendance at events, invite connections, and perform other tasks
that facilitate social interaction. External applications also use
the services of a social networking system to allow authenticated
users to incorporate some of the above social interactions with use
of the external applications. Similar interactions are a part of
the user experience within other network services.
[0004] Within these interactions, users create positive and
negative feedback with regard to objects represented with the
social networking system. For example, a user may take an action
indicate that she liked a particular book (i.e., positive
feedback). Additionally, the user may decline a recommendation
within the network service that she may be interested in another
book (i.e., negative feedback).
SUMMARY OF THE DESCRIPTION
[0005] Exemplary methods, apparatuses, and systems receive a
candidate object with which a user can interact within a network
service. For each of a first plurality of objects with which the
user has had a positive interaction, a first value representing a
commonality between the candidate object and each of the first
plurality of objects is determined. For each of a second plurality
of objects with which a user has had a negative interaction, a
second value representing a commonality between the candidate
object and each of the second plurality of objects is determined.
An aggregate positive distance is determined using a plurality of
the first values. An aggregate negative distance is determined
using a plurality of the second values. The candidate object is
displayed or not displayed to the user as a recommendation based
upon a difference between the aggregate positive distance and the
aggregate negative distance.
[0006] In one embodiment, the aggregate positive distance is
determined by dividing a sum or average of the plurality of the
first values by a first outlier value, the first outlier value
corresponding to an object with which the user has had a positive
interaction and having less in common with the candidate object
than each of the first plurality of objects. Similarly, the
aggregate negative distance is determined by dividing a sum or
average of the plurality of the second values by a second outlier
value, the second outlier value corresponding to an object with
which the user has had a negative interaction and having less in
common with the candidate object than each of the second plurality
of objects.
[0007] Other features and advantages will be apparent from the
accompanying drawings and from the detailed description.
BRIEF DESCRIPTION OF THE DRAWINGS
[0008] The present invention is illustrated by way of example and
not limitation in the figures of the accompanying drawings, in
which like references indicate similar elements, and in which:
[0009] FIG. 1 is a flow chart illustrating an exemplary method of
determining whether a candidate object is to be displayed as a
recommendation;
[0010] FIG. 2 illustrates an exemplary graph of user actions with
respect to objects within the social network;
[0011] FIG. 3 illustrates exemplary positive and negative distances
between a candidate object and objects with which a user has had
positive or negative interactions;
[0012] FIG. 4 illustrates, in block diagram form, an exemplary
social network; and
[0013] FIG. 5 illustrates, in block diagram form, an exemplary
processing system to rank and recommend objects within a social
network.
DETAILED DESCRIPTION
[0014] Embodiments described herein determine whether or not a
candidate object should be displayed to a user as a recommendation.
Using a user's history of positive and negative interactions with
other objects, embodiments determine if the candidate object has
more in common with the positive objects or the negative objects.
As a result, the network service is able to provide personalized
recommendations for the user based upon the user's demonstrated
taste rather than what is simply popular. Additionally, accounting
for the breadth of the user's history of interactions enables the
network service to recommend a heterogeneous set of candidate
objects.
[0015] FIG. 1 is a flow chart illustrating exemplary method 100 of
determining whether a candidate object is to be displayed as a
recommendation. At block 105, a network service receives or selects
a candidate object. As used herein, objects (and, therefore,
candidate objects) refer to items with which a user can interact
within a network service. For example, objects within a social
network include users, entities, media (of various forms),
representations of tangible items (e.g., that may be purchased),
organizations, public personas, etc. In one embodiment, candidate
objects are selected or received based upon categories or industry
verticals. For example, a user may be viewing, rating, or otherwise
interacting with objects representing music (artists/bands,
albums/songs, etc.) and the network service receives or selects a
music object as a candidate for recommendation. Exemplary
categories/verticals include music, television, movies, books,
sports, fashion, places, technology products, automotive, finance,
etc.
[0016] In one embodiment, the network service selects candidate
objects. For example, candidate objects for a user of a network
service may be selected based upon popularity within the general
population of one or more network services, popularity within a
particular demographic of the user within one or more network
services, positive feedback from users connected to or otherwise
associated with the user within one or more network services, an
association with or similarity to objects in the user's network
service history within one or more network services, the user's
interests listed or otherwise expressed within one or more network
services, etc. Alternatively, the network service receives
candidate objects selected by another network service or tool.
[0017] In one embodiment, the network service utilizes social
network data for the above-described selection of candidate
objects. FIG. 2 illustrates exemplary graph 200 of social network
data. In graph 200, objects are illustrated as circles and actions
are illustrated as labeled connections between circles. Developers
of the social network or corresponding social network applications
define actions to represent different ways that users may interact
with the social network and/or their applications. As users perform
actions, connections are made between users and objects. For
example, User A has performed a number of actions within the social
network, indicating that he previously lived in Boston, currently
lives in Washington D.C., joined groups for Democrats and ConLaw
Lovers, is following the White Sox, and is friends with User B.
User B and User C have also performed a number of actions with
respect to objects within graph 200.
[0018] In one embodiment, users are able to add demographic
information to user profiles 205-215. In one embodiment, for
demographic information that has not been entered by a user, a
social network application generates an estimate based upon the
user's actions, connections, and/or actions of connections. For
example, User B has not entered an alma mater into user profile
210. A social network application may determine from User B's
contacts, activities, cities of residence, etc. that User B's
likely alma mater is one or both of Brigham Young University and
Harvard University. In one embodiment, the user profiles 205-210
include additional information, such as relationships to other
users, places where the user has worked, user interests, etc.
[0019] In one embodiment, demographic data further includes a
weight or score indicating an affinity between a user and an
object. For example, repeated user action with one object may
indicate a stronger affinity for said object than another object
with which the user has limited interaction. First degree
connections, e.g., the friendship between User A and User B, may
indicate a stronger affinity than second degree connections, e.g.,
User A is friends with User B, who is friends with User C, creating
a second degree connection between User A and User C. An indication
that two users are married may indicate a stronger affinity than if
two users are friends. Additionally, temporal and geographic
proximity of actions/users are other exemplary indicators of
affinity.
[0020] The illustrated objects, connections, profiles, and affinity
values are exemplary network service data used for selecting
candidate objects in the manner described above. For example, User
B listened to music by The Killers. As a result of User A being a
friend of (or otherwise connected to) User B, music by The Killers
may be selected as a candidate object to potentially be recommended
to User A. In one embodiment, users may select privacy settings to
control what network service data is shared, with whom the data is
shared, and/or what data used for selecting candidate objects.
[0021] Returning to FIG. 1, at block 110, the network service
determines, for each object with which the user has had a positive
interaction, a first value representing a commonality between the
candidate object and the positive object. Similarly, at block 115,
the network service determines, for each object with which the user
has had a negative interaction, a second value representing a
commonality between the candidate object and the negative object.
For example, the network service may maintain or receive (e.g.,
from a third party application) a history of objects with which the
user has interacted. The network service maintains or receives the
history in lists of objects with which the user has had a positive
interaction and objects with which the user has had a negative
interaction. For example, positive and negative interactions may be
stored in graph 200 described above. Objects with which the user
has had a positive interaction are referred to herein as "positive
objects." Objects with which the user has had a negative
interaction are referred to herein as "negative objects." Exemplary
positive interactions include liking, watching, listening, becoming
a fan of, following, sharing, commenting on, giving a positive
rating to, adding to a wish list, clicking-through (e.g., following
a link for an advertisement to a page for the advertised
product/service), and purchasing an object. Exemplary negative
interactions include ignoring or declining (e.g., a recommended or
shared object), viewing and selecting a similar object (e.g.,
purchasing a competitive product after viewing the current object),
giving a negative rating to, minimizing an object (e g, minimizing
or otherwise causing an advertisement to no longer be displayed),
and commenting on an object. In one embodiment, the network service
applies sentiment analysis, e.g., by parsing the content of a
comment on an object to determine if the comment is to be treated
as a positive interaction or a negative interaction. For example,
the parsing may include searching for positive or negative
keywords, phrases, or emotional indicators, such as emoticons. In
one embodiment, the network service stores a mapping between
interactions to positive and negative assignments. Using the
assignments, the network service maps particular user interactions
and their corresponding objects to lists of positive objects and
negative objects.
[0022] As used herein, the first and second values are also
referred to as distance values. A small distance value is an
indication that the candidate object and positive/negative object
are "close" to one another and are more likely to be subject to
similar interactions. A large distance value is an indication that
the candidate object and positive/negative object are "far" from
one another are less likely to be subject to similar interactions.
Alternatively, large first/second values indicate that objects are
more likely to be subject to similar interactions and small
first/second values indicate that objects are less likely to be
subject to similar interactions. For the simplicity of explanation
throughout this description, the use of distances will be used to
describe the likelihood of objects being subject to similar
interactions.
[0023] Distance values are determined based upon commonalities
between the candidate object and each object with which the user
has had a positive or negative interaction. Exemplary commonalities
include a number of users (within a general population or within a
particular demographic) having a positive interaction with both the
candidate object and the positive object, a number of users (within
a general population or within a particular demographic) having a
negative interaction with both the candidate object and the
negative object, and common metadata between the candidate object
and the positive/negative object (e.g., two films by the same
director would have common director metadata). While positive and
negative interactions are discussed generally with respect to
distance values, in one embodiment, each type of positive/negative
interaction is treated as a separate commonality. For example, a
user may like, share, and comment upon a single object. The network
service would treat each of these three interactions as separate
commonalities. Similarly, each common metadata item may be treated
as a separate commonality.
[0024] In one embodiment, a value is assigned to each commonality
and the commonalities are summed. For example, the network service
assigns a higher value to a commonality corresponding to a higher
number of users with a common interaction with the objects than to
a commonality corresponding to a lower number of users with a
common interaction with the objects. Additionally, the values for
each commonality may be weighted. For example, particular types of
commonalities or particular instances of commonalities may be given
more or less weight than other commonalities. The values for each
commonality are summed with or multiplied by a weight value to give
more or less influence to the commonality when considered with
other commonalities. Each commonality between the candidate object
and the positive/negative object contributes a value/weighted value
to the overall distance value.
[0025] In one embodiment, the weight values for commonalities are
selected in response to determining a type for the candidate
object. The network service maps the object type to set of weights
to be applied to commonalities. For example, a common author may be
given greater weight for a book object type while a common lead
actor may be given a greater weight for a movie object type.
[0026] FIG. 3 illustrates exemplary positive and negative distances
between a candidate object and objects with which a user has had
positive or negative interactions. The network service received or
selected candidate object 305 and calculated distance values (as
described above) between candidate object and each of positive
objects 310-315 and negative objects 325-335 (as represented by the
lines between candidate object 305 and positive/negative objects
310-335).
[0027] Returning to FIG. 1, at block 120, the network service
determines an aggregate positive distance using a plurality of the
first/positive distance values described above. Similarly, at block
125, the network service determines an aggregate negative distance
using a plurality of the second/negative distance values described
above. In one embodiment, the network service selects a number of
first distance values and an equal number of negative distance
values. For example, the network service determines the top K
distance values in each list representing the K positive objects
and K negative objects with the most in common with the candidate
object (as compared to other positive/negative objects). In one
embodiment, the network service stores a mapping of various object
types to values for K. The network service selects the value for
the number, K, in response to determining a type for the candidate
object and based upon the mapping.
[0028] In one embodiment, the network service determines the
aggregate positive distance by calculating a sum or average of the
plurality of the first values. For example, for K positive distance
values x1 through xK, an aggregate positive distance value is equal
to x1+x2+ . . . +xK or
x 1 + x 2 + + xK K . ##EQU00001##
Similarly, for K second/negative distance values y1 through yK, an
aggregate negative distance value is equal to y1+y2+ . . . +yK
or
y 1 + y 2 + + yK K . ##EQU00002##
While K is used for both the aggregate positive distance and the
aggregate negative distance, when the network service calculates an
average of the plurality of first values and an average of the
plurality of second values, the network service may use a different
number of first values than the number of second values.
[0029] In another embodiment, the network service determines the
aggregate positive distance by dividing the sum or average of the
plurality of the first values by a first outlier value. The first
outlier value corresponds to an object with which the user has had
a positive interaction and has less in common with the candidate
object than each of the first plurality of objects. Similarly, the
network service determines the aggregate negative distance by
dividing the sum or average of the plurality of the first values by
a second outlier value. The second outlier value corresponds to an
object with which the user has had a negative interaction and has
less in common with the candidate object than each of the second
plurality of objects. For example, referring again to FIG. 3, an
exemplary value of K is 2. The network service selects objects 310
and 315 as the top K positive objects and objects 325 and 330 as
the top K negative objects. Object 320 is a positive outlier that
has less in common with candidate object 305 than positive objects
310 and 315. Object 335 is a negative outlier that has less in
common with candidate object 305 than negative objects 325 and
330.
[0030] In one embodiment, the network service selects the outlier
with the greatest distance value (i.e., the least in common with
the candidate object). For example, for K positive distance values
x1 through xK, an aggregate positive distance value is equal to
x 1 + x 2 + + xK x max ##EQU00003## or ##EQU00003.2## ( x 1 + x 2 +
+ xK K ) x max . ##EQU00003.3##
Similarly, for K negative values y1 through yK, an aggregate
negative distance value is equal to
y 1 + y 2 + + yK y max ##EQU00004## or ##EQU00004.2## ( y 1 + y 2 +
+ yK K ) y max . ##EQU00004.3##
Using an outlier value, the network service accounts for the
breadth of the user's history of interactions in calculating
aggregate distance values. As a result, the aggregate distance
values may more accurately represent a heterogeneous set of
candidate objects. In an alternate embodiment, the network service
selects outliers based upon distance value and/or most recent
interactions. For example, a recent interaction with a large
distance value may be an indication of changing taste.
[0031] At block 130, the network service determines if a user
interaction with the candidate object is more likely to be positive
or negative. In one embodiment, the network service determines if
the aggregate positive value is smaller or larger than the
aggregate negative value, e.g., as determined by performing a
subtraction or division operation between or otherwise comparing
the aggregate values. For example, if the aggregate positive value
is smaller than the aggregate negative value, the candidate object
is more likely to be subject to a positive interaction than a
negative interaction. Using the exemplary formulas above, when
( x 1 + x 2 + + xK K ) x max < ( y 1 + y 2 + + yK K ) y max ,
##EQU00005##
the candidate object is likely to be subject to a positive
interaction. In an alternate embodiment, the network service
determines if the aggregate positive value is smaller than the
aggregate negative value by a threshold amount. For example,
when
( x 1 + x 2 + + xK K ) x max < C ( y 1 + y 2 + + yK K ) y max ,
or ##EQU00006## ( x 1 + x 2 + + xK K ) x max < ( y 1 + y 2 + +
yK K ) y max - C , ##EQU00006.2##
the candidate object is likely to be subject to a positive
interaction. In one embodiment, the network service stores a
mapping of various object types to values for C. The network
service selects the value for the threshold, C, in response to
determining a type for the candidate object and based upon the
mapping.
[0032] As described above, the examples set forth herein are based
upon an assumption that small distance values represent objects
that are likely to be subject to similar interactions. If, however,
large distance values represent objects that are likely to be
subject to similar interactions, the comparisons above would be
altered accordingly. For example, the network service would
determine, if the aggregate positive value is larger than the
aggregate negative value, the candidate object is more likely to be
subject to a positive interaction than a negative interaction.
[0033] In one embodiment, one or more outlying first or second
values are omitted from the determination of the aggregate positive
and negative distances. For example, objects beyond a threshold
distance from the candidate object may be omitted from the positive
or negative objects. In such an embodiment, the maximum outlier
(xmax or ymax described above) is selected from outliers within the
threshold distance.
[0034] If the candidate object is more likely to be subject to a
positive interaction than a negative interaction, at block 135, the
network service displays the candidate object to the user. In one
embodiment, method 100 is repeated for a plurality of candidate
objects. In such an embodiment, candidate objects are displayed in
a ranked order. For example, those candidate objects that are
determined to be more likely to be subject to a positive
interaction may be displayed an order from the candidate object
with the smallest aggregate positive value to the candidate object
with the largest aggregate positive value.
[0035] If the candidate object is more likely to be subject to a
negative interaction than a positive interaction, at block 140, the
network service determines not to display the candidate object to
the user. As described above, method 100 may be repeated for a
plurality of candidate objects.
[0036] FIG. 4 illustrates, in block diagram form, an exemplary
network service 400, such as a social network. Social network 400
includes user devices 405, social networking system 410, and
external server 415 coupled to one or more networks 420. A user
interacts with the social networking system 410 using a user device
405, such as a personal computer or a mobile phone. For example,
the user device 405 communicates with the social networking system
410 via an application such as a web browser or native application.
Typical interactions between the user device 405 and the social
networking system 410 include operations such as viewing profiles
of other users of the social networking system 410, contributing
and interacting with media items, joining groups, listing and
confirming attendance at events, checking in at locations, liking
certain pages/posts, creating pages, and performing other tasks
that facilitate social interaction, as described herein.
[0037] The social networking system 410 includes platform storage
425, a recommendation service 430, one or more application
programming interfaces (API's) 435, a social graph 440 (e.g., as
illustrated in FIG. 3), and one or more platform applications 445.
Platform storage 425 stores user preferences/settings, profile
data, interaction data, object metadata, demographic data, etc.
Exemplary platform applications 445 include the platform for social
interactions (e.g., publishing posts, pictures, etc.) as well as
social games, messaging services, and any other application that
uses the social platform provided by the social networking system
410.
[0038] In one embodiment, method 100 described above is performed
by the recommendation service 430 and/or a platform application
445, interaction data, object metadata, demographic data, etc. is
received from platform storage 425 and/or the social graph 440, and
the mappings are stored in platform storage 425. Alternatively, one
or more of the methods and/or data is performed/stored external to
the social networking system 410.
[0039] One or more API's 435 enable external applications 450 to
work with the social networking system 410. For example, an
external application 450 utilizes an API 435 to authenticate a user
based upon the user's social networking log in username and
password. Additionally, an external application 450 utilizes one or
more API's 435 to run the application within the platform
application 430, to publish a post to the platform application, to
access the user's social network connections, etc. In one
embodiment, at least a portion of method 100 described above is
performed by an external application 450 and data is received from
and/or stored in one or both of external storage 455 or in platform
storage 425. For example, a user may grant an external application
450 with permission to interact with network service 400 on behalf
of the user via an API 435 and/or plugin within the external
application 450. Using an API 435, external application 450 is able
to obtain and/or provide user information, object information,
relationships between users and objects, etc. The external
application 450 may receive or provide positive and negative
interaction data or other sentiment data (e.g., interactions with
individual objects or otherwise) from/to the network service based
upon user interactions with data objects. The user interactions may
be performed within the network service 400 or outside of the
network service 400 (e.g., within a webpage external to network
service 400). In one embodiment, external user interactions occur
via a network service plugin, which may be implemented as an iframe
within the external webpage. In one embodiment, the network service
400 parses the sentiment data received from an external application
450 and determines how to apply the sentiment data to individual
objects. For example, the sentiment data may provide positive and
negative indications for a user with regard to categories of
objects and the network service 400 determines which individual
objects fall within those categories.
[0040] FIG. 5 illustrates, in block diagram form, an exemplary
processing system 500 to rank and recommend objects within a social
network. Data processing system 500 includes one or more
microprocessors 505 and connected system components (e.g., multiple
connected chips). Alternatively, the data processing system 500 is
a system on a chip.
[0041] The data processing system 500 includes memory 510, which is
coupled to the microprocessor(s) 505. The memory 510 may be used
for storing data, metadata, and programs for execution by the
microprocessor(s) 505. The memory 510 may include one or more of
volatile and non-volatile memories, such as Random Access Memory
("RAM"), Read Only Memory ("ROM"), a solid state disk ("SSD"),
Flash, Phase Change Memory ("PCM"), or other types of data storage.
The memory 510 may be internal or distributed memory.
[0042] The data processing system 500 also includes an audio
input/output subsystem 515 which may include a microphone and/or a
speaker for, for example, playing back music or other audio,
receiving voice instructions to be executed by the
microprocessor(s) 505, playing audio notifications, etc. A display
controller and display device 520 provides a visual user interface
for the user.
[0043] The data processing system 500 also includes one or more
input or output ("I/O") devices and interfaces 525, which are
provided to allow a user to provide input to, receive output from,
and otherwise transfer data to and from the system. These I/O
devices 525 may include a mouse, keypad or a keyboard, a touch
panel or a multi-touch input panel, camera, optical scanner,
network interface, modem, other known I/O devices or a combination
of such I/O devices. The touch input panel may be a single touch
input panel which is activated with a stylus or a finger or a
multi-touch input panel which is activated by one finger or a
stylus or multiple fingers, and the panel is capable of
distinguishing between one or two or three or more touches and is
capable of providing inputs derived from those touches to the
processing system 500.
[0044] The I/O devices and interfaces 525 may also include a
connector for a dock or a connector for a USB interface, FireWire,
Thunderbolt, Ethernet, etc. to connect the system 500 with another
device, external component, or a network. Exemplary I/O devices and
interfaces 525 also include wireless transceivers, such as an IEEE
802.11 transceiver, an infrared transceiver, a Bluetooth
transceiver, a wireless cellular telephony transceiver (e.g., 2G,
3G, 4G, etc.), or another wireless protocol to connect the data
processing system 500 with another device, external component, or a
network and receive stored instructions, data, tokens, etc.
[0045] It will be appreciated that one or more buses, may be used
to interconnect the various components shown in FIG. 5.
[0046] The data processing system 500 is an exemplary
representation of one or more of user's device 405, at least a
portion of the social networking system 410, or the external server
415. The data processing system 500 may be a personal computer,
tablet-style device, a personal digital assistant (PDA), a cellular
telephone with PDA-like functionality, a Wi-Fi based telephone, a
handheld computer which includes a cellular telephone, a media
player, an entertainment system, or devices which combine aspects
or functions of these devices, such as a media player combined with
a PDA and a cellular telephone in one device. In other embodiments,
the data processing system 500 may be a network computer, server,
or an embedded processing device within another device or consumer
electronic product. As used herein, the terms computer, device,
system, processing system, processing device, and "apparatus
comprising a processing device" may be used interchangeably with
the data processing system 500 and include the above-listed
exemplary embodiments.
[0047] It will be appreciated that additional components, not
shown, may also be part of the system 500, and, in certain
embodiments, fewer components than that shown in FIG. 5 may also be
used in a data processing system 500. It will be apparent from this
description that aspects of the inventions may be embodied, at
least in part, in software. That is, the computer-implemented
method 100 may be carried out in a computer system or other data
processing system 410/415/500 in response to its processor or
processing system 505 executing sequences of instructions contained
in a memory, such as memory 510 or other non-transitory
machine-readable storage medium. The software may further be
transmitted or received over a network (not shown) via a network
interface device 525. In various embodiments, hardwired circuitry
may be used in combination with the software instructions to
implement the present embodiments. Thus, the techniques are not
limited to any specific combination of hardware circuitry and
software, or to any particular source for the instructions executed
by the data processing system 500.
[0048] An article of manufacture may be used to store program code
providing at least some of the functionality of the embodiments
described above. Additionally, an article of manufacture may be
used to store program code created using at least some of the
functionality of the embodiments described above. An article of
manufacture that stores program code may be embodied as, but is not
limited to, one or more memories (e.g., one or more flash memories,
random access memories--static, dynamic, or other), optical disks,
CD-ROMs, DVD-ROMs, EPROMs, EEPROMs, magnetic or optical cards or
other type of non-transitory machine-readable media suitable for
storing electronic instructions. Additionally, embodiments of the
invention may be implemented in, but not limited to, hardware or
firmware utilizing a Field-Programmable Gate Array (FPGA),
Application-Specific Integrated Circuit (ASIC), a processor, a
computer, or a computer system, including a networked computer
system. Modules and components of hardware or software
implementations can be divided or combined without significantly
altering embodiments of the invention.
[0049] In the foregoing specification, the invention has been
described with reference to specific exemplary embodiments thereof.
Various embodiments and aspects of the invention(s) are described
with reference to details discussed herein, and the accompanying
drawings illustrate the various embodiments. The description above
and drawings are illustrative of the invention and are not to be
construed as limiting the invention. References in the
specification to "one embodiment," "an embodiment," "an exemplary
embodiment," etc., indicate that the embodiment described may
include a particular feature, structure, or characteristic, but not
every embodiment may necessarily include the particular feature,
structure, or characteristic. Moreover, such phrases are not
necessarily referring to the same embodiment. Furthermore, when a
particular feature, structure, or characteristic is described in
connection with an embodiment, such feature, structure, or
characteristic may be implemented in connection with other
embodiments whether or not explicitly described. Blocks with dashed
borders (e.g., large dashes, small dashes, dot-dash, dots) are used
herein to illustrate optional operations that add additional
features to embodiments of the invention. However, such notation
should not be taken to mean that these are the only options or
optional operations, and/or that blocks with solid borders are not
optional in certain embodiments of the invention. Numerous specific
details are described to provide a thorough understanding of
various embodiments of the present invention. However, in certain
instances, well-known or conventional details are not described in
order to provide a concise discussion of embodiments of the present
inventions.
[0050] It will be evident that various modifications may be made
thereto without departing from the broader spirit and scope of the
invention as set forth in the following claims. For example, the
methods described herein may be performed with fewer or more
features/blocks or the features/blocks may be performed in
differing orders. Additionally, the methods described herein may be
repeated or performed in parallel with one another or in parallel
with different instances of the same or similar methods.
* * * * *