PRIORITYThis application claims the benefit of priority to U.S. Provisional Application No. 62/110,283, “SOCIAL NETWORK CONTENT FEDERATION”, filed Jan. 30, 2015, which is incorporated by reference herein in its entirety.
TECHNICAL FIELDThe subject matter disclosed herein generally relates to the federation of content from multiple content sources in a social network.
BACKGROUNDSocial networks conventionally obtain content items from multiple content item sources. The content items as obtained may then be displayed to users of the social network on a user interface, such as a news stream, dedicated windows or spaces on a visual display, separate windows, and the like. Content item sources may include user profiles and changes thereto stored by the social network, entities that provide sponsored content or databases in which the content items are stored, and organic content recommendation engines, such as engines that provide particular types of content, including job recommendations, recommended connections with members of the social network, and content that other members and users of the social network have found interesting.
BRIEF DESCRIPTION OF THE DRAWINGSSome embodiments are illustrated by way of example and not limitation in the figures of the accompanying drawings.
FIG. 1 is a block diagram illustrating various components or functional modules of a social network system, consistent with some examples.
FIG. 2 is a simplified illustration of a social network system including content item sources in relation to the federator module, in an example embodiment.
FIG. 3 is a detailed block diagram of a federator module, in an example embodiment.
FIG. 4 is a simplified image of a user interface as provided by a social network system, in an example embodiment.
FIG. 5 is a graphic illustration of a relationship between the selection metric and the value metric, in an example embodiment.
FIG. 6 is a flowchart for relevance driven aggregation of federated content items in a social network, in an example embodiment.
FIG. 7 is a block diagram illustrating components of a machine, according to some example embodiments.
DETAILED DESCRIPTIONExample methods and systems are directed to the federation of content from multiple content sources in a social network. Examples merely typify possible variations. Unless explicitly stated otherwise, components and functions are optional and may be combined or subdivided, and operations may vary in sequence or be combined or subdivided. In the following description, for purposes of explanation, numerous specific details are set forth to provide a thorough understanding of example embodiments. It will be evident to one skilled in the art, however, that the present subject matter may be practiced without these specific details.
In various examples of social networks, the sources of content items may push content items to be displayed on a user interface based on criteria, the combination of which are unique to the content item source or which are not necessarily common to all of the content item sources. Thus, for instance, a sponsored content item source may factor in criteria such as an amount that a sponsoring entity has bid to place a sponsored content item in a user's news feed while a job recommendation engine may utilize criteria that focus on a user's qualifications for the job and their current employment status. Such diverse content item sources with selection criteria that are specific to the content items provided by the various individual content item sources may contribute to a rich and diverse user experience with the social network.
However, such arrangements may not be sensitive to the quality of the content item sources and the need or desire to balance the display of the content items obtained therefrom appropriately. In particular, if a content item source has a relatively poor selection criteria then the content items provided by the content item source may be of similarly poor quality or relevance to the user to whom the content items are displayed. Furthermore, a single content item source may provide more content items than are necessarily desired without the capacity for the social network provider to understand if the large numbers of content items are desirable because they are highly relevant to the user or undesirable because they are of poor or middling quality and their sheet number may be overwhelming or may diminish the user experience.
A content source federator has been developed that may address the above issues, among others, by obtaining content items from the various content item sources according to the individual content item sources' own selection criteria. The federator may assess some or all of the content item sources for relative quality and/or reliability and adjust the perceived value of the content items received from the respective content item sources accordingly. The federator may then provide the content items received from the individual content item sources according to the adjusted value of the content items and according to any of a variety of considerations that may reflect on what content items are presented to the users of the social network.
FIG. 1 is a block diagram illustrating various components or functional modules of asocial network system100, consistent with some examples. Afront end101 consists of a user interface module (e.g., a web server)102, which receives requests from various client-computing devices, and communicates appropriate responses to the requesting client devices. For example, the user interface module(s)102 may receive requests in the form of Hypertext Transport Protocol (HTTP) requests, or other web-based, application programming interface (API) requests. Anapplication logic layer103 includes variousapplication server modules104, which, in conjunction with the user interface module(s)102, may generate various user interfaces (e.g., web pages, applications, etc.) with data retrieved from various data sources in adata layer105. In some examples, individualapplication server modules104 may be used to implement the functionality associated with various services and features of the social network service. For instance, the ability of an organization to establish a presence in the social graph of thesocial network system100, including the ability to establish a customized web page on behalf of an organization, and to publish messages or status updates on behalf of an organization, may be services implemented in independentapplication server modules104. Similarly, a variety of other applications or services that are made available to members of the social network service may be embodied in their ownapplication server modules104. Alternatively, various applications may be embodied in a singleapplication server module104. In some examples, thesocial network system100 includes a contentitem publishing module106, such as may be utilized to receive content, such as electronic messages, posts, links, images, videos, and the like, and publish the content to the social network.
One or more of theapplication server modules104, the contentitem publishing module106, or thesocial network system100 generally may include asearch module108. As will be disclosed in detail herein, thesearch module108 may identify websites or content items for display based on a search term as entered by a searcher. Thesearch module108 may utilize member profiles and user activities in the generation of search results. Such member profiles and activities may be from the searcher making a present search or by searches performed by the same or other users in the past. Thesearch module108 may generate results for a search based on the member profiles and activities as well as conventional search factors, such as keywords and link density.
Thesearch module108 may be implemented on a separate server or may be part of a server that provides other portions of thesocial network system100. Thus, it is to be understood that while thesearch module108 is described as an integral component of a social network, the principles described herein may be applied without thesearch module108 being an integral part of a social network or even necessarily utilizing data from a social network ifcontent items122 are available from alternative sources.
As illustrated, thedata layer105 includes, but is not necessarily limited to,several databases110,112,114, such as adatabase110 for storingprofile data116, including both member profile data as well as profile data for various organizations. Consistent with some examples, when a person initially registers to become a member of the social network service, the person may be prompted to provide some personal information, such as his or her name, age (e.g., birthdate), gender, interests, contact information, home town, address, the names of the member's spouse and/or family members, educational background (e.g., schools, majors, matriculation and/or graduation dates, etc.), employment history, skills, professional organizations, and so on. This information is stored, for example, in thedatabase110. Similarly, when a representative of an organization initially registers the organization with the social network service, the representative may be prompted to provide certain information about the organization. This information may be stored, for example, in thedatabase110, or another database (not shown). With some examples, the profile data may be processed (e.g., in the background or offline) to generate various derived profile data. For example, if a member has provided information about various job titles the member has held with the same or different companies, and for how long, this information can be used to infer or derive a member profile attribute indicating the member's overall seniority level, or seniority level within a particular company. With some examples, importing or otherwise accessing data from one or more externally hosted data sources may enhance profile data for both members and organizations. For instance, with companies in particular, financial data may be imported from one or more external data sources, and made part of a company's profile.
Once registered, a member may invite other members, or be invited by other members, to connect via the social network service. A “connection” may require a bi-lateral agreement by the members, such that both members acknowledge the establishment of the connection. Similarly, with some examples, a member may elect to “follow” another member. In contrast to establishing a connection, the concept of “following” another member typically is a unilateral operation, and at least with some examples, does not require acknowledgement or approval by the member that is being followed. When one member follows another, the member who is following may receive status updates or other messages published by the member being followed, or relating to various activities undertaken by the member being followed. Similarly, when a member follows an organization, the member becomes eligible to receive messages or status updates published on behalf of the organization. For instance, messages or status updates published on behalf of an organization that a member is following will appear in the member's personalized data feed or content stream. In any case, the various associations and relationships that the members establish with other members, or with other entities and objects, are stored and maintained within thesocial graph database112.
Activities by users of thesocial network system100, including past searches that have been conducted by thesearch module108, may be logged asactivities118 in the activity andbehavior database114. Such activities may include search terms, interactions with search results and subsequent engagement with the subject of search results, scores assigned to such search terms, as disclosed herein, communication with others via the social network, engagement with content items posted on the social network, joining groups, following entities, and so forth.
Thedata layer105 collectively may be considered a content item database, in thatcontent items120, including but not limited tomember profiles116, may be stored therein. Additionally or alternatively, acontent item layer120 may exist in addition to thedata layer105 or may include thedata layer105. Thecontent item layer120 may includeindividual content items122 stored on individual content item sources124. The member profiles116 and theactivities118 may be understood to becontent items122, while theprofile database110, thesocial graph database112, and themember activity database114 may also be understood to be content item sources124.Content items122 may further include sponsored content items as well as posts to a newsfeed, articles or links to websites, images, sounds, event notifications and reminders, recommendations to users of the social network for jobs or entities to follow within the social network, and so forth.
The social network service may provide a broad range of other applications and services that allow members the opportunity to share and receive information, often customized to the interests of the member. For example, with some examples, the social network service may include a photo sharing application that allows members to upload and share photos with other members. With some examples, members may be able to self-organize into groups, or interest groups, organized around a subject matter or topic of interest. With some examples, the social network service may host various job listings providing details of job openings with various organizations.
Although not shown, with some examples, thesocial network system100 provides an application programming interface (API) module via which third-party applications can access various services and data provided by the social network service. For example, using an API, a third-party application may provide a user interface and logic that enables an authorized representative of an organization to publish messages from a third-party application to various content streams maintained by the social network service. Such third-party applications may be browser-based applications, or may be operating system-specific. In particular, some third-party applications may reside and execute on one or more mobile devices (e.g., phone, or tablet computing devices) having a mobile operating system.
FIG. 2 is a simplified illustration of thesocial network system100 including thecontent item sources124 in relation to thefederator module108, in an example embodiment. Thesocial network system100 may allow for thecontent item sources124 to be combined into a single feed for transmission to and/or display on a user interface of a member or user of the social network. In an example, some or all of thecontent item sources124 are implemented as an API, such as an http API.
Thecontent item sources124 may rank thecontent items122 stored therein according to the ranking parameters of thecontent item source124. Suchcontent item sources124 may include content item sources disclosed in U.S. Patent Application Publication No. 2014/0143163, “USER CHARACTERISTICS-BASED SPONSORED JOB POSTINGS”, U.S. Patent Application Publication No. 2014/0143323, “USER CHARACTERISTICS-BASED SPONSORED COMPANY POSTINGS”, and U.S. Patent Application Publication No. 2015/0039406, “INDEPENDENT TARGTED SPONSORED CONTENT MANAGEMENT SYSTEM AND METHOD”, all of which are incorporated by reference herein in their entirety. Thecontent item sources124 may thus function as first past rankers of thecontent items122 stored therein or obtained thereby.
Thefederator module108 may then rank thecontent items122 provided to thefederator module108 by thecontent item source124. As such, thefederator module108 may function as a second pass ranker. Based on thecontent items122 as ranked by thefederator module108, thefederator module108 may produce as output acontent item122stream200 that may be an http API or any of a variety of other suitable formats known in the art. Thecontent item stream200 may be utilized by themessaging publishing module106 and/or theuser interface module102 to provide the output to the user interface of the user or member.
A protocol may be defined between thefederator module108 and the content item sources124. Thefederator module108 may utilize the protocol to make requests to thecontent item sources124 for rankedcontent items122 from some or all of thesources124. The requests may be according to a conventional http protocol. Thecontent item sources124 may similarly respond according to a conventional http data transfer.
Thecontent item sources124 may include or may be modified to include one or more files or programs that allow the rankedcontent items122 to be transmitted and formatted according to the protocol. In an example, an object notation standard may be utilized to generate the data transfer of rankedcontent items122. In an example, the JavaScript Object Notation (JSON) standard may be utilized. Libraries that may programmatically generate libraries that may read, validate, serialize, and deserialize the data transfer into language specific data structures. In the above example utilizing the JSON standard, the data structures may be Java objects.
As such, the one or more files or programs may include a product specification file that may be incorporated into a trunk directory of one or more of the content item sources124. Additionally, a project build file may likewise be incorporated. A common key, in the above example a JSON coordinate, may be utilized between the product specification file and the project build file.
A userinterface metrics module202 may identifycontent items122 that produce or do not produce a user interaction with thecontent item122 when displayed on auser interface204 of a user device. In various examples, if a user interacts with acontent item122 as displayed on theuser interface204, such as by clicking a link, sharing thecontent item122, commenting on thecontent item122, and so forth, the userinterface metrics module202 variously either receives the interaction directly or receives an indication of the interaction. For instance, receiving the interaction itself may be to receive the text of a comment that was entered while receiving an indication of the interaction may be to receive a notice that a comment was entered without receiving the comment itself. The userinterface metrics module202 is optionally coupled to thecontent item sources124 and may save the interactions as received, such as in theactivities database114.
Thesocial network system100 may providecontent items122 to theuser interface204 in a federating mode and a testing mode. Thesocial network system100 may switch between modes from time to time and from user to user. Thus, some users may receivecontent items122 as provided by thefederator module108 and other users may receivecontent items122 with the operation of thefederator module108 reduced or disabled altogether. In the testing mode, as will be discussed in detail herein, the impact of the operations of thecontent item sources124 and their function as first-pass rankers may be assessed using the userinterface metrics module202 by varying the display ofcontent items122 on theuser interface204. In the federating mode thefederator module108 may utilize the assessments provided by the userinterface metrics module202 to determine the relative effectivity of thecontent item sources124 at assessing thecontent items122 stored thereon and adjust the resultant display ofcontent items122 on theuser interface204.
The testing mode may be selectively applied to particular components of thesocial network system100 to obtain particular information, as disclosed herein. In various examples, individualcontent item sources124 may be selectively placed in testing mode and their output randomly or varyingly presented to the user while the output of othercontent item sources124 may be presented to users according to federation policies implemented by thefederator module108. In such examples, newly added or modifiedcontent item sources124 may be dynamically tested and their results compensated for, as disclosed herein, while othercontent item sources124, such as those that have already been assessed in the testing mode and incorporated into the federation protocol as disclosed herein may operate statically outside of the testing mode.
FIG. 3 is a detailed block diagram of thefederator module108, in an example embodiment. In such an example, thefederator module108 is a separately implemented http server. Thefederator module108 includes aranker module300, afeed definition module302,recommender modules304, andentity resolver modules306. The some or all of thevarious modules300,302,304,306 may be separately implemented files operated on a processor of the server or may be divided between and among multiple servers.
Theranker module300 may obtain collections ofcontent items122 retried from thecontent item sources124 as specified by thefeed definition module302. Theranker module300 may de-duplicate thecontent items122 from thevarious sources124, may perform a second-pass or global ranking of thecontent items122, and may provide the result as the output of thefederator module108.
Thefeed definition module302 may provide thecontent items122 or cause thecontent items122 to be provided to theranker module300. Thefeed definition module302 may map an identifier of the feed to be output on to therecommender modules304 and theranker module300. Thus,content items122 may be identified in therecommender modules304 and provided to theranker module300 based on the identifier.
Therecommender modules304 may define a mapping between thecontent item sources124 and a recommender that will providecontent items122 based on a request forcontent items122 to be provided and one or more of theresolver modules306. Theresolver modules306 may optionally covert a format ofcontent items122 as obtained from thecontent item sources124 to a common format.
FIG. 4 is a simplified image of auser interface204 as provided by thesocial network system100, in an example embodiment. Theuser interface204 includes anews feed400 that includes multipleindividual positions402 arranged, in this example, in a vertical list with a first position402(1) at the top and lower positions sequentially down the list. Eachposition402 includes space to display content related to thecontent item122; in various examples, thecontent item122 itself may be displayed, for instance if thecontent item122 is a link or a renderable image, or data relating to thecontent item122 may be displayed, such as if thecontent item122 needs to be reformatted for theuser interface204 or the circumstances in which theuser interface204 is being displayed. It is to be recognized that theuser interface204 is provided for the purposes of an example and that many additional configurations ofuser interfaces204 are contemplated and may be utilized consistent with the principles described herein.
Thesocial network system100 may operate in the testing mode described above by obtainingcontent items122 from thecontent item sources124 and displaying thecontent items122 on theuser interface204 without respect to thefederator module108. As such, thecontent item sources124 may function in their first-pass ranker mode without second-pass ranking provided by thefederator module108. In various examples, thecontent items122 may still pass through thefederator module108, as illustrated inFIG. 2, but the second-pass ranking function of thefederator module108 may be disabled.
In an example, at least one of thefederator module108 and themessage publishing module106 call to acontent item source124 to obtain at least onecontent item122 for display on theuser interface204. Thecontent item122 may then be displayed in aparticular position402 of thenews feed400. In an example, theposition402 is randomly selected or pseudo-randomly selected. In an example, thecontent item122 may be displayed onmultiple user interfaces204 corresponding to multiple different users. In such an example, a givencontent item122 may be iteratively moved fromposition402 toposition402 when it is displayed onmultiple user interfaces204 so as to sequentially be positioned in a variety ofpositions402 over time.Additional content items122 may be obtained from variouscontent item sources124 and positioned randomly or varyingly inpositions402 in thevarious user interfaces204 so as to fill out thepositions402 of thenews feed400.
In addition to thecontent items122 themselves, thecontent item sources124 may provide the first-pass ranking details of eachcontent item122 to the userinterface metrics module202. It is noted and emphasized that, in the testing mode, thecontent items122 as provided may not necessarily be placed according to the first-pass ranking provided by the content item sources124. However, the data from the first-pass ranking may be utilized by the userinterface metrics module202 to assess the quality of the first-pass ranking of the various content item sources124.
As displayed on thevarious user interfaces124, thecontent items122 may be interacted with, as disclosed herein. The userinterface metrics module202 may note those interactions for eachcontent item122 and/or the lack of interactions thereof. In various examples, the userinterface metrics module202 may also optionally note theposition402 in which thecontent item122 was displayed when it was or was not interacted with. It is noted that theposition402 may be superfluous if thecontent item122 is displayed randomly or sequentially varying on a relatively large number ofuser interfaces204.
For a givencontent item122 as displayed onuser interfaces204, the userinterface metrics module202 may note the rate at which thecontent item122 was the subject of a user interaction in comparison with the first-pass ranking that thecontent item source124 provided for thecontent item122. The userinterface metrics module202 may compare those figures with the expected interaction performance of acontent item122 that has been placed in the positions in which the givencontent item122 has been placed.
The variouscontent item sources124 may perform first-pass ranking and other assessments according to schemas that are not consistent among all of the content item sources124. Thus, in an example, a firstcontent item sources124 may operate according to a first selection schema that seeks to determine a selection metric indicative of the likelihood that a givencontent item122 will be interacted with by a user. The firstcontent item source124 may further operate according to a first value schema that seeks to determine a value metric of acontent item122 as if thecontent item122 were a piece of sponsored content. It is noted that, if thecontent item122 is, in fact, a piece of sponsored content, and thecontent item source124 is, for instance, an advertising index, the actual bid for the sponsored content item may be the value metric. The value metric may, in various examples, be a value in a currency, such as United States dollars or other national or international currency.
In contrast to the firstcontent item source124, the secondcontent item source124 may operate according to a second selection schema different from the first selection schema and a second value schema different from the first value schema. Most generally, selection schemas and value schemas may differ betweencontent item sources124 if thesame content item122 receives a different selection metric when run against the first selection schema and the second selection schema. It is to be noted, however, that most or allcontent items122 may only be run against one selection schema and one value schema becausecontent items122 may tend only to be stored in onecontent item source124.
For instance, in the illustrative example, for asample content item122, thecontent item source124 may provide a first-pass rank that suggests that thecontent item122 is at the seventy-fifth (75th) percentile for likely user interaction and should optimally be placed in the third position402(3). In the example, the userinterface metrics module202 has previously determined that, on average, acontent item122 randomly placed in thenews feed400 that is expected to be in the seventy-fifth percentile and/or is placed in the third position402(3) is interacted with by a user, on average, eleven (11) percent of the time. In the illustrative example, the userinterface metrics module202 determines that, overall, thesample content item122 is interacted with thirteen (13) percent of the time both overall and in the third position402(3).
On that basis, the userinterface metrics module202 may determine that thecontent item source124 that provided thecontent item122 understates or underestimates the likely performance of thecontent items122 it ranks. The userinterface metrics module202 may perform the testing mode analysis onmultiple content items122 from multiple content item sources124. Ultimately, the userinterface metrics module202 may characterize some or all of thecontent item sources124 according to the degree by which thecontent item sources124 overestimate or underestimate the likely user interaction with thecontent items122 thecontent item source124 provides. Thus, for thecontent item source124 that provided thesample content item122 referenced above, the userinterface metrics module202 may utilize dozens ormore content items122 from thecontent item source124 to determine that thecontent item source124 consistently underestimates the user engagement rate for thecontent items122 it provides by two (2) percentage points. Othercontent item sources124 may be determined to overestimate by various percentages or be essentially accurate in their assessments.
In the federating mode, thefederator module108 may obtain, from the variouscontent item sources124,content items122 and an associated selection metric and an associated value metric for eachcontent item122. Thefederator module108 may request a predetermined number ofcontent items122 from some or all of thecontent item sources124 or thecontent item sources124 may individually determine howmany content items122 to send to thefederator module108. It is to be further recognized that thecontent item sources122 may, at least initially, transmit a list or index of content items to thefederator module108 at least until thecontent items122 are selected by thefederator module108 for display on theuser interface204, upon which point thecontent items122 themselves may be provided.
Thefederator module108 may further obtain, from the userinterface metrics module202, indications of the interactions with thecontent items122 from the various content item sources124. The indications of the interactions may be on the basis ofindividual content items122 that have been tested in the testing mode or on the basis of completecontent item sources124 that have been tested in the testing mode.
Thefederator module108 may determine an engagement value for each of the content items based on the data from the userinterface metrics module202. The engagement value may be representative of the inherent value of the content itself to the social network without respect to any money thecontent item122 may actually earn for thesocial network system100. Put another way, the engagement value may reflect the overall value to the social network of having good content to drive traffic to the social network without respect to directly making money off of that content.
In an example, the inherent value represented by the engagement value may vary, at least in part, based on either the user from whom thecontent item122 was received or to whom the content item is to be displayed. Thus,certain content items122 may have a higher engagement for certain types of users than other types of users. Thefederator module108 may adjust the engagement value for acontent item122 based onuser profile data116 andactivities118 for the user to whom the content item is displayed. Thus, for instance, the engagement value for acontent item122 received from a CEO may be doubled relative to the engagement value for acontent item122 received from a non-managerial employee of the same company.
If the userinterface metrics module202 provided data for theparticular content item122 then the engagement value may be based only on the data related to thatcontent item122. If the userinterface metrics module202 provided data for thecontent item source124 then all of thecontent items122 from thatsource124 may have an engagement value determined based on the same factors.
The engagement value may be the equivalent to a monetary value that, in essence, adjusts the selection metric and value metric of thecontent item122 to account for the overestimation or underestimation of the likely interaction or value of thecontent item122 by the selection and value schemas of thecontent item source124. Thus, for instance, in the above example, thefederator module108 may determine that the value of acontent item122 from the sample firstcontent item source124 described above should be increased by $0.005 to account for the fact that thecontent items122 from that source routinely underestimates the user interaction with thecontent items122 by two (2) percentage points.
It is to be emphasized that the engagement and monetary values are, in fact, unit-less and may have any suitable numerical value. For the purposes of explanation in the disclosure herein, the values disclosed herein have been normalized to an equivalent monetary value. Thus, in a simplified description for the purposes of illustration, the engagement value is in essence described as being calculated as an equivalent monetary value and combined with an actual monetary value to create the utility value of equivalent monetary value. However, it is to be noted and emphasized that the utility value does not need to represent an equivalent monetary value and rather can be directed at any “value” that administrators of the social network may have.
Thus, while the steps described herein may relate to bringing the engagement value into line with the monetary value, the opposite may readily be implemented to bring the monetary value in alignment with the engagement value according to the same principles. Thus, in a simplified example, one user interaction with a content item may have an engagement value of “1”, and monetary values may, for instance, be multiplied by a factor of twenty (20); i.e., a monetary value of $0.005 is the equivalent to one interaction. It is to be readily understood that any suitable values value ranges may be implemented.
As such, the utility value may express a propensity for an associated content item to lead to any outcome that has value to the social network. In an example, the utility value may be tied to a number of “down-stream” interactions that may stem from an initial interaction with a content item. A down-stream interaction may stem from, for instance, a member selecting a link for a content item as the initial interaction, and any subsequent selections of links or comments and the like on the webpage that was linked to would be a down-stream interaction. The relative value of down-stream interactions may be identified based on social network policies in relation to the value of sponsored content items and implemented according to the principles described herein. Further examples of the actual policy or objective of the utility value, such as growth of the membership of the social network, may similarly be implemented according to these principles. As such,federator module108 may be sensitive to the impact on those objectives that the changes to the initial rankings of the content item sources may cause and adjust the changes accordingly.
FIG. 5 is agraphic illustration500 of the relationship between the selection metric and the value metric, in an example embodiment. Thex-axis502 depicts the selection metric, such as the number of user interactions with a content item, while the y-axis504 depicts the value metric, such as the value of thecontent item122 if it were a piece of sponsored content. Thecurve506 reflects how changes in the selection metric are reflected in the changes in the value metric and, as a consequence, the engagement value of thecontent item122. According to this curve, increasing the selection metric by two (2) percentage points from afirst point508 to a second point510 may produce the $0.005 engagement value referenced above.
Thefederator module108 may then generate a utility value for each of thecontent items122. The utility value reflects an engagement component and a monetary component. The engagement component is, in an example, comprised of the selection metric multiplied by the engagement value. The value component is, in an example, comprised of the value metric. The engagement component and the value component are, in an example, added together to obtain the utility value. The utility value may represent a normalized value for thecontent item122. In various examples, the federator module obtains a utility value for each of the content items obtained from the content item sources124.
In an example, the utility value will depend on a status of thecontent item122 as organic content or sponsored content. The utility value of a sponsored content item may be the engagement component (e.g., the engagement value multiplied by the selection metric) added to the value metric. The value metric for the sponsored content item may be a bid that the sponsoring entity has paid or will pay for the sponsored content item multiplied by the selection metric. In an example, the value metric is thus computed by multiplying the estimated interaction rate for the sponsored content item by the amount of money the sponsoring entity promised to pay every time the sponsored content item is selected by a user. Thus, the utility value for a sponsored content item would be the sum of the expected monetary value of the sponsored content item and the engagement value of the sponsored content item. Put another way, the value of a sponsored content item may be realized in both the ability of thecontent item122 to drive user engagement with the social network and the ability of thecontent item122 to directly generate revenue.
The utility value of an organic or unsponsored content item, on the other hand, would, in the above example, be based entirely on the ability of thecontent item122 to generate engagement with the social network. Thus, the utility value for the organic content item would be only the engagement component (the engagement value multiplied by the selection metric). Thus, it may be discerned that a piece of organic content that drives a great deal of user engagement may have a higher utility value than a piece of sponsored content that that drives relatively little user engagement. Further, a piece of sponsored content that has the same or similar user engagement as an organic content item would have the higher utility value because of the monetary component; all other things being equal, the utility value for acontent item122 that is sponsored would be higher than the utility value of a sponsoredcontent item122 that is organic.
Thefederator module108 may thus, in essence, establish a normalized, monetary value for each of thecontent items122 it receives for display on thenews feed400 of theuser interface204. In so doing, thefederator module108 may both consistently establish the relative value of thecontent items122 it receives, regardless of the first-pass ranker schemas utilized by thecontent item sources124, and provide a framework by which the value of a sponsored content item may be compared against an organic content item and vice versa. Thus, both the value of the organic content items may be quantified and organic content items may be accurately positioned relative to sponsored content items on thenews feed400.
In particular, thefederator module108 may include, as part of thestream200, the relative utility values of thecontent items122 to theuser interface module102. Alternatively, thefederator module108 may simply order thecontent items122 within thestream200 according to their respective utility values. Theuser interface module102 may then cause thecontent items122 to be sequentially placed in thepositions402, at least in part according to their utility values. Thus, in an example, the highest utility value may be positioned in the first position402(1), the second highest utility value in the second position402(2), and so forth. Alternatively, additional factors may be implemented in order to meet certain conditions.
The conditions may, in various cases, specify displaying sufficient sponsored content items to generate a maximal amount of revenue while maintaining user engagement, in the form of interactions with the content items above a predetermined threshold. Thus, the sum of the engagement components of some or all of thecontent items122 that may be displayed over a period of time may be plotted against the sum of the value components of thecontent items122 that may be displayed over a period of time. In selecting thecontent items122 for the stream, thefederator module108 may select content items with sufficiently high engagement components to maintain the desired user engagement and then, among that population, select thecontent items122 with the highest value component.
The above example is simplified and it is to be understood that multi-objective optimization techniques may be applied to the population ofcontent items122 as appropriate. The constraints of the multi-objective optimization may be applied separately to different types of users depending on theactivities118 conducted by the individual users. Thus, certain users may be relatively more likely to select sponsored content items than other users. Those users may be presented with more sponsored content items than other users, thereby potentially increasing both the value metric, as sponsored content may be directed to the users most likely to select the sponsored content and thus provide the revenue, as well as engagement, as more scope may thus be had to displaycontent items122 with relatively high engagement components.
The principles applied to direct knowledge of the propensity of users to select sponsored content may be applied based on general user characteristics. Thus, it may be determined that males of a certain age, education, and career may be relatively more likely to select sponsored content than women of the same age, education, and career. Those relationships may be determined empirically, such as by being objectively determined in the testing mode. The difference in the likelihood of a certain demographic of user to select or not select sponsored content may produce a proportional increase in the rate at which sponsored content is displayed. Thus, if a certain demographic of user is twenty-five percent more likely to select a sponsored content item than the average user then users of that demographic may be presented with twenty-five percent more sponsored content. Alternatively, the additional sponsored content a user is presented with may be selected as a multi-objective optimization variable, such as to maximize revenue while maintaining user engagement, and may not necessarily be tied to any particular percentage.
Thefederator module108 may be configured to retain sponsored content items in a particular order prior to or while including the sponsored content items in thestream200. In various examples, sponsoredcontent items200 may be ranked with respect to one another prior to determining and applying the engagement value to the sponsored content items. After obtaining the engagement value, the sponsored content items may be re-ranked with respect to the organic content items. However, in certain examples, the sponsored content items may not be re-ranked with respect to one another. Doing so may maintain the relative position of the sponsored content items for regulatory purposes. The fixing of the position ofcertain content items122 with respect to one another may be configurable based on any regulatory requirements in any relevant jurisdictions. The fixing of the position ofcertain content items122 may also be based on business needs or any other suitable factors.
The principles described herein with regard to the federation ofindividual content items122 apply as well to the federation of aggregated content items. An aggregated content item may be a combination ofindividual content items122 combined or otherwise placed together so that they may be displayed in asignal position402, in contrast with conventional,individual content items122 which are displayed one perposition402. The aggregated content item may be made up ofindividual content items122 that are related to one another in some way, such as by being related to common news or members of the social network who share a common personal characteristic116, such as a job, a job status, a school, and so forth.
Individual content items122 as displayed on thenews feed400 may not generate much user interaction by themselves but may generate more interest when presented as a aggregated content item. For instance, the news that a first member has changed jobs to Company X may not generate much interest by itself. However, an aggregated content item that seven members have all changed jobs to Company X in the last three days may generate much more user interaction than seven separately-listedcontent items122.
An aggregatedcontent item122A is illustrated in theuser interface204 inFIG. 4. In contrast toconventional content items122, the aggregated content item references more than one discrete event, occurrence, or member. Thus, the aggregatedcontent item122A states that members X, Y, and Z all joined Company A in the last two days. A conventional,non-aggregated content item122 might merely state that member X joined Company A yesterday, by way of illustration.
Thefederator module108 may be configured to rank the aggregatedcontent item122A consistent with the ranking ofother content items122 described herein. That is to say, thefederator module108 may determine a utility value for the aggregatedcontent item122A based on an engagement value of the aggregatedcontent item122A and, if the aggregatedcontent item122A is a sponsored aggregatedcontent item122A or includes at least some sponsored content, a monetary value as well.
In an example, a distribution of utility values of theconstituent content items122 of the aggregatedcontent item122A may be utilized to determine the utility value of the aggregatedcontent item122A. The distribution of utility values of theconstituent content items122 may also be utilized by thefederator module108 to determine ifindividual content items122 should be removed from the aggregatedcontent item122A in order to improve the overall utility value of thecontent items122 included in the aggregatedcontent item122A. While utility values will be discussed herein, it is to be recognized and understood that any of a variety of metrics may be utilized for decision regarding the aggregation of content items. For instance, basic estimated selection metrics, such as estimated interactions or click-through-rates, may be utilized in addition to or instead of the utility value.
To determine the utility value of an aggregatedcontent item122A or, in various examples, a proposed aggregatedcontent item122A, thefederator module108 utilize multiple models based on various factors. The models may be empirically determined based on arbitrarily generating aggregatedcontent items122A in the testing mode described herein and randomly presenting those aggregatedcontent items122A onuser interfaces204. In various examples, individual models are based on a distribution of utility values of theconstituent content items122, a time since or over which thecontent items122 were obtained or generated, and an overall number ofcontent items122 in thenews feed400.
The distribution model may be based on an average of utility values ofindividual content items122, a maximum one of the utility values of theindividual content items122, a minimum one of the utility values of theindividual content items122, and a standard deviation of the utility values of theindividual content items122, among other potential factors. The interplay of those factors may be determined empirically. In an example, the distribution model may determine the utility value of the aggregatedcontent item122 by computing the average utility value of theconstituent content items122 and adjusting for the standard deviation of the utility values of thecontent items122.
Thus, for instance, it may have been empirically determined that the distribution model tends to produce an accurate utility value for the aggregatedcontent item122A based on the average of the utility values of theindividual content items122A adjusted upward for a relatively small standard deviation and adjusted downward for a relatively large standard deviation. For instance, a standard deviation less than twenty-five percent of the average may be “small” and provide a bonus while a standard deviation greater than or equal to twenty-five percent may be “large” and provide a penalty. The bonuses and penalties may be proportional to size of the standard deviation. By way of illustration, if the average utility value is 0.005 and the standard deviation is 0.001 then the utility value of the aggregated content item may be 0.005+10*(0.00125−0.001)=0.0075, where the “0.005” value is the average utility value of thecontent items122, the “0.00125” value is twenty-five percent of the average, the “0.001” value is the standard deviation, and the “10” value is an empirically-determined bonus multiplier. The distribution model, then, would provide a utility value for the aggregatedcontent item122A of 0.0075.
The time and amount ofcontent items122 models may function in the same or similar ways. The time model may assign bonus utility values tocontent items122 based on a time since thecontent item122 in question was generated. The utility values may be assigned based on an empirically-determined decay model. For example, acontent item122 that is less than one day old may have a bonus utility value of 0.001, more than one but less than two days old may be 0.0005, more than two but less than three days may be 0.0025, and so forth. The utility values for the time model may then be combined utilizing some or all of the factors for the distribution model, e.g., average, minimum, maximum, and standard deviation.
Relatedly, the overall number ofcontent items122 in thenews feed400 may tend to factor the utility values ofindividual content items122 over the utility value of the aggregatedcontent item122A so as to provide more orfewer content items122 for thenews feed400. Thus, if thefederator module108 has relatively fewcontent items122 for thenews feed400 then theindividual content items122 of the aggregatedcontent item122A may be given a relatively high bonus utility value while the aggregatedcontent item122A as a whole may be given a relatively low bonus utility value. By so doing, thecontent items122 of the aggregatedcontent item122A may be more likely to be broken out of the aggregatedcontent item122A and presented individually on thenews feed400. Conversely, if thefederator module108 has a relatively large number ofavailable content items122 then thefederator module108 may subtract utility value from thecontent items122 of the aggregatedcontent item122A, making thecontent items122 more likely to remain part of the aggregatedcontent item122A.
The individual models may all be individually implemented and then manipulated together or otherwise compared. In an example, the individual models may be averaged or may be added together to obtain a final utility value for the aggregatedcontent item122A. Alternatively, only one determined utility value may be utilized, for instance by selecting a maximum value, minimum value, or middle value among the utility values provided by the various models. Further alternatively, individual models may be separately assessed in the testing mode and given bonus or negative weight or otherwise favored or disfavored based on the performance in the testing mode. Thus, a model that consistently accurately provides a utility value may be weighted higher than a model that inconsistently provides accurate utility values. Alternatively, only the best single model may be utilized, though other models may be used, particularly in testing mode, to seek to improve the results of the models and utilize the models at a later date.
Based on the final utility value for the aggregatedcontent item122A, thefederator module108 may display the aggregatedcontent item122A in anappropriate position402 depending on the utility values ofother content items122, not display the aggregatedcontent item122A at all, and/or separateindividual content items122 out of the aggregatedcontent item122A if thoseindividual content items122 have utility values greater than the utility value of the aggregatedcontent item122A. In an example, if the aggregated content item has a utility value of 0.003 but onecontent item122 of the aggregatedcontent item122A has a utility value of 0.004 and another has a utility value of 0.005 then thosecontent items122 may be removed from the aggregatedcontent item122A. In various examples, the aggregatedcontent item122A may be recomputed to determine its new utility value or may be inserted into thestream200 in a position appropriate to its utility value.
The utility values of content items122 (including herein bothindividual content items122 and aggregatedcontent items122A) may be based on a relevance of thecontent item122 to theprofile data116 andactivities118 of the member to whom thecontent items122 are to be or may be presented. In various examples,profile data116 andactivities118 may be utilized by thefederator module108 along with other factors to adjust the utility value ofcontent items122. Thefederator module108 may thus providecontent items122 according to their value to the member to whom thecontent items122 are presented rather than to a generic or generalized member.
While the principles related to affinity are described with respect to utility values, it is to be recognized and understood that they may apply equally well to circumstances that providecontent items122 outside of the utility value framework. Thus, bonuses to simple relevance factors or other metrics by whichcontent items122 may be selected for display to users of a social network may also be applied consistent with this disclosure.
In an example, the member may have an identifiable item-type affinity. The member may prefer certain types ofcontent items122 over others. Similarly, the member may dislike certain types ofcontent items122. The affinity forcontent item122 types may be based both on inferences from theprofile data116 of the member and past history as evidenced by the member'sactivities118.
In an example, a member who has profile data indicating that they are a computer programmer may tend to have an affinity for articles and links related to computer programming, computers generally, engineering generally, and so forth. In an example, the utility value of such types ofcontent items122 may be given a bonus for eachprofile data item116 that correlates with thecontent item122 type. Similarly, computer programmers may tend to be neutral towards other types ofcontent items122 and may affirmatively dislike other types ofcontent items122.
Thefederator module108 may identify such correlations across multiple members. Thus, thefederator module108 may identify that computer programmers generally are fifty percent more likely to interact with content items related to computer programming than the population of members of the social network generally. In such an example, the utility value of computerprogramming content items122 may be given a fifty percent bonus. Alternatively, the bonus may be of a different percentage or may be a fixed value for matching a type with which the member has an affinity, e.g., a bonus of 0.001 to the utility value. Any of a variety of suitable bonuses may be applied, and such bonuses may also be negative for members who tend to dislike acontent item122 type.
The principles forprofile data116 apply as well toactivities118 for a particular member. Thus, if a member'sactivities118 indicate that the member tends to interact with computerscience content items122 forty percent more frequently than members of the social network in general, the utility value of computerscience content items122 may receive a bonus. The bonus may be according to any suitable mechanism, including the mechanisms described above.
The bonuses may be cumulative acrossmultiple profile data116 andactivities118 for asingle content item122 or may be based on a single most significant factor. The single most significant factor may be a member'sown activities118, withprofile data116 being utilized if in the event theactivities118 are unavailable or not extensive enough to establish a preference. Thus, if a member'sprofile data116 indicates that the member would be expected to have an affinity for acontent item122 type but the member'sactivities118 indicate that the member dislikes thecontent item122 type then the utility value of thecontent item122 may be reduced rather than increased.
The principles described with the item-type affinity may be applied to other concepts as well. In an example, members may have an affinity for the source of acontent item122 rather than the content of thecontent item122 itself. Thus, members may tend to click on links in acontent item122 or otherwise interact with acontent item122 if thecontent item122 is provided by a particular source. Such sources may include individuals, companies, groups, and the like. Such sources may include thesocial network system100 itself, such as for automatically-generatedcontent items122.
Source affinity may be unique to each member. Thus, source affinity may be based onactivities118 for the particular member and may not necessarily be based onprofile data116 of the member. Alternatively,certain profile data116 may be indicative of a propensity for source affinity. Thus, computer programmers may have a source affinity for certain celebrities in computer programming that may be factored in in the same manner described above with respect to profiledata116 and item-type affinity.
Network-size affinity may also be utilized to provide a utility value bonus. Thesocial graph data112 for a member who posts acontent item122 to the social network may be compared against thesocial graph data112 of a member to whom thecontent item122 may be presented. If the number of connections in thesocial graph data112 of the two members is broadly similar then thecontent item122 may receive a bonus to the utility value for display on thenews feed400 of the potential receiving member. In an example, twosocial graphs112 have a similar number of connections if the number of connections are within twenty-five percent of one another. Alternative percentages or absolute numbers of connections may be utilized as appropriate.
The bonus may be increased the closer in numbers the twosocial graphs112 are. Thus, the bonus may be 0.005 if thesocial graphs112 are within twenty-five percent, 0.003 if the social graphs are between seventy-five and twenty-five percent, and 0.001 if the social graphs are between seventy-five and one hundred percent of one another. The bonus may be negative if thesocial graphs112 are larger than a certain percentage. In an example, if thesocial graphs112 are more than two hundred percent of one another then the penalty may be 0.001, and so forth. It is to be recognized that the percentages may be from comparing the largest number of connections with the smallest number of connections for the purposes of this illustration. Thus, if the connections were one hundred twenty-five and one hundred then the percentage would be twenty-five percent. If the connections were two hundred and one hundred then the percentage would be one hundred percent. If the connections were three hundred and one hundred then the percentage would be two hundred percent, and so forth.
Affinities may be combined with one another to produce relatively more complex affinities. Thus, in an example, the content item type affinity may be combined with the network-size affinity or network size generally. Utility values between various affinity metrics may be added, multiplied, or otherwise combined together to provide a broader affinity bonus. Thefederator module108 may empirically determine, for instance in the testing mode, and further correlation between individual affinities and adjust combined bonuses accordingly. As such, the combination of content item type affinity and network size may produce a different bonus depending on how those affinities relate in actual practice.
Thefederator module108 may utilize various techniques to providecontent items122 in thenews feed400 in a manner that is financially efficient for the social network as well as useful to and visually pleasing for the member to whom it is presented. In particular, thefederator module108 may provide for blending ofcontent items122 so that particular types ofcontent items122 do not clump or otherwise dominate thenews feed400, notwithstanding the absolute utility values of thosecontent items122. Further, thefederator module108 may provide for diversity ofcontent item122 type on thenews feed400.
Blending ofcontent items122 may utilize the data from thecontent item122 type analysis above to prevent undue clumping ofcontent items122 of the same type from occurring. In various examples, content item types may include sponsored or organic content, content items provided by the same source, content items related to the same topic, content items providing the same type of information (such as members who change jobs or notices that an entity is “trending”, and so forth), and so forth.
Thefederator module108 may utilize the testing mode to identify degrees of blending, or lack thereof, that promote user interaction withcontent items122 in thenews feed400. Thefederator module108 may empirically determine degrees of blending according to the same content item types inadjacent positions402, a number of the same content item type inconsecutive positions402, a percentage of the same content item type in consecutive positions402 (e.g., threecontent items122 of the same type in five consecutive positions402), and so forth. Thefederator module108 may utilize the testing mode to displaycontent items122 according to their utility values but without respect to blending concepts and then iteratively apply different blending concepts to empirically determine blending concepts that provide for optimized user interaction withcontent items122, optimized utility value, and any of a variety of other metrics.
In an example, thefederator module108 may operate in the testing mode to determine blending concepts by testing concepts of varying stringency. Thus, a blending concept may mandate nocontent items122 of the same type inadjacent positions402. A less stringent blending concept may mandate that twocontent items122 of the same type may be inadjacent positions402 but not three, and so forth. Blending concepts may also be sensitive to certain types ofcontent items122 but intentionally not other types. Thus, in an example, the blending concepts may be sensitive or more sensitive tocertain content item122 types and not others. By way of illustration, a first blending concept may require that sponsoredcontent items122 not be placed inadjacent positions402 while a second blending concept, implemented concurrently with the first blending concept, may require that not more than threecontent items122 provided from the same source be placed in fiveconsecutive positions402, and so forth.
It is to be recognized that certain blending concepts may be produce results that are inconsistent or conflict with one another, such as where one concept suggests a placement of acontent item122 in aposition402 but another concept determines that thecontent item122 cannot be placed in thatposition402. In cases such as those, thefederator module108 may establish a hierarchy for resolving conflicts. In such a hierarchy, one blending concept may control conflicts. In the above example, the sponsored content blending concept may override the source blending concept. The hierarchy, along with the parameters of the blending concepts, may also be set as a matter of social network policy and may not necessarily be adjusted by the federator module.
Thefederator module108 may provide for diversity in thenews feed400 by adjusting utility values or associatedpositions402 ofcontent items122 that are related tocontent items122 that have already been seen by a user on thenews feed400 or will already have been seen by the user on thenews feed400. Thus, in various examples, acontent item122 of a content item type with a highest utility value may be placed in ahigh position402. Thefederator module108 may, depending on the diversity criteria, adjusting the utility values or positions of lower utilityvalue content items122 of the content item type to prevent theother content items122 of the type from being inpositions402 that are too close to theposition402 of the highest-value content item122.
In an example, fourcontent items122 of a single content item type have utility values that would cause thosecontent items122 to be placed inpositions402 on thenews feed400. Thefederator module108 may then apply a discount to the threecontent items122 having the lowest utility values. In an example, each of the lowest-value threecontent items122 would have their utility value multiplied by a predetermined factor, such as 0.75, and reassessed fornew positions402 in thenews feed400. It is noted that the reassessment of the threecontent items122 may result inother content items122 of the type being repositioned accordingly. Thus, if the second-highest-value content item122 of the type drops threepositions402 because of the diversity discount, then thecontent items122 in those threepositions402 would each be moved up by oneposition402.
Upon the application of the discount to the threecontent items122, thefederator module108 may reassess if the diversity requirements have been met. If not, the discount may be iteratively applied again to each of thecontent items122 of the type that still violate diversity requirements; in such an example, thosecontent items122 that have the discount applied twice would have a discount of 0.75̂2=0.5625. The discount may be iteratively applied to individual ones of thecontent items122 of the type until thecontent items122 of the type meet the diversity requirement.
Thefederator module108 may rank thecontent items122 it assesses according to their utility values and then apply diversity requirements to all of thecontent items122 that have been ranked or to a predetermined number of the highest rankedcontent items122. Diversity requirements may be applied concurrently among all of thecontent items122 that are ranked or to the predetermined number of the highest rankedcontent items122. As the diversity requirements are applied to the rankedcontent items122, the discounts may be applied to the rankedcontent items122 as appropriate. Thus,content items122 that violate any of the diversity requirements may have the discount applied to their utility values.
Following the application of the discount to the utility values of the rankedcontent items122, thefederator module108 may re-rank thecontent items122 and reassess thecontent items122 for the diversity requirements.Content items122 that, as re-ranked, violate the diversity requirements may have the discount applied again and may be re-ranked. The assessment of diversity requirements, the application of a discount to the utility values ofcontent items122 that violate the diversity requirements, and the re-ranking ofcontent items122 may be conducted iteratively until all of the diversity requirements are met, thecontent items122 as ranked settle into a steady state, or a “time-out” condition is met following a predetermined number of iterations.
Thecontent item122 types may be based on a variety of factors and eachcontent item122 may have multiple item types. In an example,content items122 may be classified according to an actor of thecontent item122, such as a user who posted an article or a user about whom the content item refers. e.g., “John Doe started a new job at Company X.” In an example,content items122 may be classified according to a verb or action of thecontent item122; thus, in the above example, a content item may have as a verb or action “started a new job”. In an example,content items122 may be classified according to an object of thecontent item122; thus, in the above example, the object would be “Company X”.
The diversity requirement may be general in thenews feed400 or may be local in thenews feed400. In an example, a local diversity requirement may require diversity among thepositions402 that are displayed on thenews feed400 at any one time but not forpositions402 that are not or cannot be displayed concurrent with thepositions402 that are currently displayed. Thus, in an example, if thenews feed400 as a whole only displays fivepositions402 at a time then the diversity requirement may only be applied to thecontent items122 that would be displayed in those fivepositions402 based on the initial utility value ranking.
Thefederator module108 may utilize the testing mode to optimize diversity requirements. The optimization may be generally applied across the members and users of the social network or may be individually applied to members based on those member's responses to various diversity requirement implementations. Thus, thefederator module108 may randomly vary diversity requirements and, for instance, allow fourcontent items122 of the same type within an eight-position402 block when the base diversity requirement is for only threecontent items122 of the same type and assess the reaction of users to the relatively less-diverse requirement. If the less-diverse requirement produces greater user interaction with content items in thenews feed400 then the less-diverse requirement may be implemented as the default diversity requirement. It is to be recognized that these principles may be applied to individual members of the social network for personalized diversity requirements.
FLOWCHARTFIG. 6 is a flowchart for relevance driven aggregation of federated content items in a social network, in an example embodiment. The flowchart may be implemented according to any of a variety of example systems and methods disclosed herein or as may be suitable for implementing the flowchart.
Atoperation600, at least some of a plurality of content items of a plurality of content item sources are obtained, by a processor, from each of the plurality of content item sources, each of the content items of the plurality of content item sources being ranked within their respective content item sources according to one of a plurality of ranking schemas, at least two of the plurality of content items sources utilizing different ones of the plurality of ranking schemas.
Atoperation602, a preliminary aggregated content item based on at least some of the plurality of content items is generated by the processor.
Atoperation604, an aggregated content item made up of a set of the plurality of content items is generated by the processor based, at least in part, on a utility value of each of the some of the plurality of content items. In an example, generating the aggregated content item is by comparing a utility value of the aggregated content item against utility values of individual ones of the set of the plurality of content items. In an example, generating the aggregated content item is by removing individual ones of the at least some of the plurality of content items having a higher utility value than a preliminary utility value of the preliminary aggregated content item.
Atoperation606, a utility value of the aggregated content item is determined by the processor. In an example, determining the utility value of the aggregated content item is based on a statistical distribution of utility values of the set of the plurality of content items. In an example, determining the utility value of the aggregated content item is based, at least in part, on a statistical distribution of individual times that individual ones of the set of the plurality of content items have been incorporated in the content item sources. In an example, the statistical distribution is at least one of a standard deviation, an average, a maximum, and a minimum.
Atoperation608, the preliminary utility value is iteratively updated by the processor based on individual ones of the at least some of the plurality of content items being removed from the aggregated content item and removing individual ones of the at least some of the plurality of content items having a higher utility value than a preliminary utility value of the preliminary aggregated content item as updated
Atoperation610, the aggregated content item is ranked by the processor relative to other ones of the plurality of content items based on the utility value.
Atoperation612, a user interface is caused, by the processor, to display the aggregated content item based on the utility value of the aggregated content item. In an example, the user interface is caused, by the processor, to display the aggregated content item relative to the other ones of the plurality of content items based on the rank. In an example, causing, with the processor, the user device to display the aggregated content item further includes displaying individual ones of the plurality of content items, and determining the utility value of the aggregated content item is based, at least in part, on an overall number of the plurality of content items displayed on the user device.
SYSTEMFIG. 7 is a block diagram illustrating components of amachine700, 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, themachine700 may implement thesocial network system100 and the features included and described therein. Themachine700 thus describes specific hardware configurations on which thesocial network system100 may be implemented and provided to users of thesocial network system100.
FIG. 7 shows a diagrammatic representation of themachine700 in the example form of a computer system and within which instructions724 (e.g., software) for causing themachine700 to perform any one or more of the methodologies discussed herein may be executed. In alternative embodiments, themachine700 operates as a standalone device or may be connected (e.g., networked) to other machines. In a networked deployment, themachine700 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. Themachine700 may be 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), a cellular telephone, a smartphone, a web appliance, a network router, a network switch, a network bridge, or any machine capable of executing theinstructions724, sequentially or otherwise, that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term “machine” shall also be taken to include a collection of machines that individually or jointly execute theinstructions724 to perform any one or more of the methodologies discussed herein.
Themachine700 includes a processor702 (e.g., a central processing unit (CPU), a graphics processing unit (GPU), a digital signal processor (DSP), an application specific integrated circuit (ASIC), a radio-frequency integrated circuit (RFIC), or any suitable combination thereof), amain memory704, and astatic memory706, which are configured to communicate with each other via abus708. Themachine700 may further include a graphics display710 (e.g., a plasma display panel (PDP), a light emitting diode (LED) display, a liquid crystal display (LCD), a projector, or a cathode ray tube (CRT)). Themachine700 may also include an alphanumeric input device712 (e.g., a keyboard), a cursor control device714 (e.g., a mouse, a touchpad, a trackball, a joystick, a motion sensor, or other pointing instrument), astorage unit716, a signal generation device718 (e.g., a speaker), and anetwork interface device720.
Thestorage unit716 includes a machine-readable medium722 on which is stored the instructions724 (e.g., software) embodying any one or more of the methodologies or functions described herein. Theinstructions724 may also reside, completely or at least partially, within themain memory704, within the processor702 (e.g., within the processor's cache memory), or both, during execution thereof by themachine700. Accordingly, themain memory704 and theprocessor702 may be considered as machine-readable media. Theinstructions724 may be transmitted or received over anetwork726 via thenetwork interface device720.
As used herein, the term “memory” refers to a machine-readable medium able to store data temporarily or permanently and may be taken to include, but not be limited to, random-access memory (RAM), read-only memory (ROM), buffer memory, flash memory, and cache memory. While the machine-readable medium722 is shown in an example embodiment to be a single medium, 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. 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., software) for execution by a machine (e.g., machine700), such that the instructions, when executed by one or more processors of the machine (e.g., processor702), cause the machine 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” shall accordingly be taken to include, but not be limited to, one or more data repositories in the form of a solid-state memory, an optical medium, a magnetic medium, or any suitable combination thereof.
Throughout this specification, plural instances may implement components, operations, or structures described as a single instance. Although individual operations of one or more methods are illustrated and described as separate operations, one or more of the individual operations may be performed concurrently, and nothing requires that the operations be performed in the order illustrated. Structures and functionality presented as separate components in example configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components. These and other variations, modifications, additions, and improvements fall within the scope of the subject matter herein.
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 physical manner. In various example embodiments, one or more computer systems (e.g., a standalone computer system, a client computer system, or a 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.
In some embodiments, a hardware module may be implemented mechanically, electronically, or any suitable combination thereof. For example, a hardware module may include dedicated circuitry or logic that is permanently configured to perform certain operations. For example, a hardware module may be a special-purpose processor, such as a field programmable gate array (FPGA) or an ASIC. A hardware module may also include programmable logic or circuitry that is temporarily configured by software to perform certain operations. For example, a hardware module may include software encompassed within a general-purpose processor or other programmable processor. 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.
Accordingly, the phrase “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 or to perform certain operations described herein. As used herein, “hardware-implemented module” refers to a hardware module. 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 a hardware module comprises a general-purpose processor configured by software to become a special-purpose processor, the general-purpose processor may be configured as respectively different special-purpose processors (e.g., comprising 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.
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 hardware modules exist contemporaneously, communications may be achieved through signal transmission (e.g., over appropriate circuits and buses) between or among two or more of 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).
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 described herein. As used herein, “processor-implemented module” refers to a hardware module implemented using one or more processors.
Similarly, the methods described herein may be at least partially processor-implemented, a processor being an example of hardware. For example, at least some of the operations of a method may be performed by one or more processors or processor-implemented modules. Moreover, 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., an application program interface (API)).
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 one or more processors or processor-implemented modules may be located in a single geographic location (e.g., within a home environment, an office environment, or a server farm). In other example embodiments, the one or more processors or processor-implemented modules may be distributed across a number of geographic locations.
Some portions of this specification are presented in terms of algorithms or symbolic representations of operations on data stored as bits or binary digital signals within a machine memory (e.g., a computer memory). These algorithms or symbolic representations are examples of techniques used by those of ordinary skill in the data processing arts to convey the substance of their work to others skilled in the art. As used herein, an “algorithm” is a self-consistent sequence of operations or similar processing leading to a desired result. In this context, algorithms and operations involve physical manipulation of physical quantities. Typically, but not necessarily, such quantities may take the form of electrical, magnetic, or optical signals capable of being stored, accessed, transferred, combined, compared, or otherwise manipulated by a machine. It is convenient at times, principally for reasons of common usage, to refer to such signals using words such as “data,” “content,” “bits,” “values,” “elements,” “symbols,” “characters,” “terms,” “numbers,” “numerals,” or the like. These words, however, are merely convenient labels and are to be associated with appropriate physical quantities.
Unless specifically stated otherwise, discussions herein using words such as “processing,” “computing,” “calculating,” “determining,” “presenting,” “displaying,” or the like may refer to actions or processes of a machine (e.g., a computer) that manipulates or transforms data represented as physical (e.g., electronic, magnetic, or optical) quantities within one or more memories (e.g., volatile memory, non-volatile memory, or any suitable combination thereof), registers, or other machine components that receive, store, transmit, or display information. Furthermore, unless specifically stated otherwise, the terms “a” or “an” are herein used, as is common in patent documents, to include one or more than one instance. Finally, as used herein, the conjunction “or” refers to a non-exclusive “or,” unless specifically stated otherwise.