Learning mechanism for recommended reordering of elements based on demographic information

This disclosure relates to relates to systems and methods that facilitate generating an ordered list of a set of elements based upon user demographics or granular reordering of an ordered list of elements over a subset size based upon demographic information to increase likelihood of selection of at least one element of the set of elements.

TECHNICAL FIELD

This disclosure generally relates to systems and methods that facilitate generating an ordered list of a set of elements based upon user demographics or granular reordering of an ordered list of elements over a subset size based upon demographic information to increase likelihood of selection of at least one element of the set of elements.

SUMMARY

In accordance with a non-limiting implementation, a demographics component configured to obtain at least one demographic parameter associated with at least one user, a set identification component configured to identify a set of channels, and a set sorting component configured to employ a sorting algorithm to generate a list comprising a subset of the channels in an order defined to increase likelihood that at least one channel of the subset of channels will be selected for subscription.

In accordance with another non-limiting implementation, at least one demographic parameter associated with at least one user is received, a set of elements is received, and a list is generated comprising a subset of the channels in an order defined to increase likelihood that at least one channel of the subset of channels will be selected for subscription.

These and other implementations and embodiments are described in more detail below.

DETAILED DESCRIPTION

Overview

In situations in which the systems and methods discussed here collect personal information about users, or may make use of personal information, the users can be provided with an opportunity to control whether programs or features collect user information (e.g., information about a user's social network, social actions or activities, profession, a user's preferences, or a user's current location), or to control whether and/or how to receive content from the content server that may be more relevant to the user. In addition, certain data can be treated in one or more ways before it is stored or used, so that personally identifiable information is removed. For example, a user's identity can be treated so that no personally identifiable information can be determined for the user, or a user's geographic location can be generalized where location information is obtained (such as to a city, ZIP code, or state level), so that a particular location of a user cannot be determined. The user can add, delete, or modify information about the user. Thus, the user can control how information is collected about the user and used by a content server.

In accordance with various disclosed aspects, a mechanism is provided for a content server to present a set of elements according to a sort order that increases likelihood of user selection of at least one element of the set of elements. In certain applications that have a set of elements, user selection of a particular element in the set is not as important as selection of the entire set or at least one element in the set. For example, a content site that has a variety of channels of content that generate advertising revenue is concerned with the number of subscribers of channels irrespective of which channel they subscribe. Accordingly, optimizing presentation of a list of channels to a user or group of users to increase overall subscriptions of channels can increase advertising revenue. It is to be appreciated that a set of elements, for example, can include content or channels of content.

Content (or content item) can include, for example, video, audio, image, text, or any combination thereof, non-limiting examples of which include, music, speeches, cartoons, short films, movies, televisions shows, documents, books, magazines, articles, novels, quotes, poems, comics, advertisements, photos, posters, prints, paintings, artwork, graphics, games, applications, tickets, coupons, any other creative work that can be captured and/or conveyed through video, audio, image, text, or any combination thereof, friends, or any other suitable element that can be presented to a user for selection. In a non-limiting example, a content site can include channels of video content for subscription. In another non-limiting example, a ticket site can contain event tickets available for sale. A further non-limiting example is a website that presents coupons. Another example can include presenting a list of possible friends that user can select for establishing a connection. An additional example is presenting content that a user can select to rate or like. It is to be appreciated that selection of an element can include any suitable action initiated by a user with respect to an element. Content can be available on an intranet, internet, or can be local content.

With reference to the embodiments described below, an example content site with channels of video content is presented for illustrative purposed only. It is to be appreciated that any suitable type of content can be employed in sets of elements.

Referring now to the drawings,FIG. 1depicts a system100that generates sorted lists of channels of video content for presentation to a plurality of client devices180based upon demographics. System100includes a content server110that provides channels of video content to client devices180remotely. In addition, content server110receives or accesses video content from a plurality of content providers170. Furthermore, content server110, client devices180, and content providers170can receive input from users to control interaction with and presentation of content, for example, using input devices, non-limiting examples of which can be found with reference toFIG. 11.

Content server110, client device180, and content provider170, each respectively include a memory that stores computer executable components and a processor that executes computer executable components stored in the memory, a non-limiting example of which can be found with reference toFIG. 11. Client device180and content provider170can communicate via a wired and/or wireless network to content server110. It is to be appreciated that while only one content server110is depicted, client device180and content provider170can communicate with a plurality of content servers110concurrently. Furthermore, while only two client devices180are depicted, it is to be appreciated that any suitable number of client devices180can concurrently interact with content server110. Additionally, while only two content providers170are depicted, it is to be appreciated that any suitable number of content providers170can concurrently interact with content server110.

Content server110, client device180, and content provider170can be any suitable type of device for interacting with or supplying content locally, or remotely over a wired or wireless communication link, non-limiting examples of include a wearable device or a non-wearable device. Wearable device can include, for example, heads-up display glasses, a monocle, eyeglasses, contact lens, sunglasses, a headset, a visor, a cap, a helmet, a mask, a headband, clothing, or any other suitable device that can be worn by a human or non-human user. Non-wearable device can include, for example, a mobile device, a mobile phone, a camera, a camcorder, a video camera, personal data assistant, laptop computer, tablet computer, desktop computer, server system, cable set top box, satellite set top box, cable modem, television set, monitor, media extender device, blu-ray device, DVD (digital versatile disc or digital video disc) device, compact disc device, video game system, portable video game console, audio/video receiver, radio device, portable music player, navigation system, car stereo, or any other suitable device. Moreover, content server110, client device180, and content provider170can include a user interface (e.g., a web browser or application), that can receive and present displays and content generated locally or remotely.

Content server110includes a demographics component120that obtains demographic information for one or more users. Content server110further includes set identification component130that identifies one or more sets of channels of video content. In addition, content server110includes a set sorting component140that generates a sort order for channels within a set based upon the demographic information. Content server110also includes a set presentation component150that presents sorted sets of channels of video content to client devices180based upon the sort order. Additionally, content server110includes a data store160that can store content, as well as, data generated by demographics component120, list generation component230, set sorting component140, set presentation component150, client device180, or content provider170. Data store160can be stored on any suitable type of storage device, non-limiting examples of which are illustrated with reference toFIGS. 10 and 11.

With continued reference toFIG. 1, demographics component120obtains demographic information for one or more users. For example, a user can provide demographic information in a profile. In a further example, demographic information can be determined (or inferred) about the user with consent from the user, such as, based on data provided by the user, user interaction with content server110, client devices180employed to interact with content server110, or any other suitable source of data related to a user. In an additional example, demographic information can be obtained for one or more groups of users. Furthermore, where a user consents to the use of demographic information about the user, systems and methods can employ the consented to demographic information in features disclosed herein. Demographic information can be stored as a set of demographic parameters in respective user profiles associated with users, or in respective group profiles associated with groups of users.

Continuing with reference toFIG. 1, set identification component130identifies one or more sets of channels of video content. In an example, set identification component130receives a set of channels of video content from a remote device (e.g. a content provider170or a client device180). In another example, set identification component130retrieves a predefined set of channels of video content from data store160. It is to be appreciated that the predefined set of channels of video content can be a global set of channels associated with all users of content server110, or one of a plurality of predefined set of channels of video content associated with respective users or groups of users of content server110. It is to be appreciated that predefined sets of channels of video content can change over time as content is added, deleted, or modified on content server110. In a further example, set identification component130can generate a set of channels of video content based upon demographic information associated with a user or group of users. In an embodiment, set identification component130initiates identification of one or more sets of channels of video content based upon user interaction with content server110through client device180, for example, to access a channel guide or video content. In another embodiment, set identification component130initiates identification of one or more sets of channels of video content continuously, or at random or predefined intervals. In a further example, set identification component130initiates identification of one or more sets of channels of video content in response to added, deleted, or modified content on content server110. Set identification component130can initiate identification of one or more sets of channels of video content based upon any suitable criteria.

With continued reference toFIG. 1, set sorting component140obtains a set of channels of video content identified by set identification component130and produces a sorted set of channels of video content using a sorting algorithm that increases the likelihood of user selection of the entire set of elements or at least one element of the set. The sorting algorithm employs demographic information associated with a user or group of users to sort the set of channels of video content such when presented to the user or group of users in a sorted list of channels, the user or group of users is likely to select the set of channels or at least one channel from the set to achieve a desired outcome of the sorting algorithm (e.g., subscribe to any channel, purchase any content, employ any coupon, or any other suitable desired outcome). It is to be appreciated that any suitable sorting algorithm that increases the likelihood that a user or group of users will select an entire set of elements or at least one element of the set can be employed. In an embodiment, a sorting algorithm employs an element scoring algorithm that generates scores for elements in a set based upon target values and optionally weights, and employs a list generation algorithm that generates an ordered list of a plurality of elements of the set based upon respective element scores. In another embodiment, a sorting algorithm employs a combing algorithm that reorders an ordered list of elements over subsets of the elements.

Referring toFIG. 2, set sorting component140includes a target value component210that generates target values for pairs of elements in a set of elements using a target value algorithm. Set sorting component140also includes an element scoring component220that generates scores for elements in a set. In addition, set sorting component140includes a list generation component230that generates an ordered list of elements.

Target value component210generates respective target values T for pairs of elements in a set of elements using a target value algorithm. A target value T is a normalized value for a demographic parameter P at which a first element E of a pair of elements (E, E′) will be positioned higher in a sorted list than the second element E′. In an embodiment, target values T can initially be set to a predefined value, such as zero or an estimated value by the system or a system administrator. In another embodiment, target values T can initially be set to a random value. Target value T can initially be set to any suitable value. It is to be appreciated that the target value algorithm can be executed in response to user selection of at least one element in a set of elements presented to the user. As such, user selection of the at least element will cause the target value algorithm to adjust target values, thereby learning relationships of the elements to values of the demographic parameters. Optionally, a weight W can also be generated for the target value T to be employed when generating a score for an element E. In an embodiment, weight W can initially be set to a predefined value, such as zero or an estimated value by the system or a system administrator. In another embodiment, weight W can initially be set to a random value. Weight W can initially be set to any suitable value.

The following is an example target value algorithm for generating target values and weights for a set of elements {E1, . . . EN} for which a user or group of users selected at least one element in the set.

Where i, j, and k, are positive integers, E are elements in the set {E1, . . . EN}, P are demographic parameters in a set of demographic parameters {P1, . . . PM} associated with a user or group of users, N is a positive integer representing the number of elements E in the set, M is a positive integer representing the number of demographic parameters P associated with the user or group of users, D is a value from 0 to 1 representing a normalized value of P for the user or group of users, T is a number from 0 to 1 representing a normalized target value of a demographic parameter Pkat which an element Eiis higher in a list than element Ej, W is a weight associated with T, TA defines an amount to adjust T towards D, and WA defines an amount to adjust W.

It is to be appreciated that TA can be a number, percentage, or function. In an embodiment, past values D for P when a user has selected of at least one element in a set of elements presented to the user can be stored. The stored past values D can be averaged for P, and T can be adjusted an amount TA towards the average value D for P. It is to be appreciated that T can be adjusted by any suitable amount TA.

It is to be appreciated that WA can be a number, percentage, or function. In an embodiment, the difference between T and U is determined for P. If the difference between T and U is below a threshold WAT, then W is increased by an amount WA, and if the difference between T and U is greater than or equal to the threshold WAT, then W is decreased by an amount WA. In another embodiment. W can be adjusted an amount WA inversely proportional to the difference between T and U. It is to be appreciated that W can be adjusted by any suitable amount WA. Furthermore, adjusting weights W can be optional depending on whether weights W are employed for determining element scores.

Continuing with reference toFIG. 2, element scoring component220generates scores for elements in a set based upon the target values and optionally weights using an element scoring algorithm. In an embodiment, element scoring component220initiates generating scores for elements based upon user interaction with content server110through client device180, for example, to access a channel guide or video content. In another embodiment, set identification component130initiates generating scores for elements continuously, or at random or predefined intervals. In a further example, set identification component130initiates generating scores for elements in response to added, deleted, or modified content on content server110. Set identification component130can initiate generating scores for elements based upon any suitable criteria.

The following is an example element scoring algorithm for generating respective scores for a set of elements {E1, . . . EN)}.

Example Element Scoring Algorithm

Where VP is the absolute value of the delta between D and T, NVP is a value from 0 to 1 representing the normalized value of VP, S is the weighted score for an element E, A is the sum of S for all elements in the set of elements {E1, . . . EN}. It is to be appreciated that employing weights W in determining S is optional. Where weights are not employed. Si=Si+NVPijkin the example element scoring algorithm.

In another embodiment element scoring algorithm can employ a factor F that skews the score S to favor smaller differences between D and T or larger differences between D and T. The following is an example element scoring algorithm for generating respective scores for a set of elements {E1, . . . EN} that employs F.

Example Element Scoring Algorithm Employing F

If F is greater than 1, then NVP will be skewed towards zero, and if F is greater than zero and less than 1, then NVP will be skewed towards 1. In an embodiment, F is selected by a system administrator. In another embodiment, F is set by the system based upon a number of times a pair of elements is included in a set of elements presented to a user where a user has selected at least one element from the set. In a further embodiment, F can be based upon W. It is to be appreciated that any suitable mechanism for setting or determining F can be employed.

List generation component230employs the element scores to generate an ordered list L having Q number of slots of elements from a set of elements {E1, EN} using a list generation algorithm. In an embodiment. Q can equal N so as to order the entire set of elements {E1, . . . EN}. In another embodiment, Q can be equal to a number less than N to generate an order list L containing a subset of the set of elements {E1, . . . EN}. The following is an example list generation algorithm.

Example List Generation Algorithm

Obtain A

Where x is a positive integer, PS is a picking score used for picking elements to add to ordered list L, and R is a random number.

Set sorting component140can reorder an ordered list L having N number of slots of elements {E1, . . . EN} using a combing algorithm over subsets of elements of size C in order to provide greater granular precision of the ordered list L. Set sorting component140can reorder an ordered list L any suitable number of times using any suitable subset size C. The following is an example combing algorithm.

Where y is a positive integer.

Referring back toFIG. 1, set presentation component150can provide an ordered list L (e.g. list of channels) to client device(s)150for presentation to a user or group of users. Additionally, set presentation component150can receive selection data from client device(s)150indicating selection of at least one element (e.g. subscription to a channel) from list L. Furthermore, set presentation component150can receive selection data from client device(s)150indicating that no elements from list L were selected. Set presentation component150can associate selection data (e.g. channel subscriptions) with the set of elements in list L and/or with demographic information related to a user or group of users connected with client device(s)150.

FIGS. 3-9Dillustrate various methodologies in accordance with certain disclosed aspects. While, for purposes of simplicity of explanation, the methodologies are shown and described as a series of acts, it is to be understood and appreciated that the disclosed aspects are not limited by the order of acts, as some acts may occur in different orders and/or concurrently with other acts from that shown and described herein. For example, those skilled in the art will understand and appreciate that a methodology can alternatively be represented as a series of interrelated states or events, such as in a state diagram. Moreover, not all illustrated acts may be required to implement a methodology in accordance with certain disclosed aspects. Additionally, it is to be further appreciated that the methodologies disclosed hereinafter and throughout this disclosure are capable of being stored on an article of manufacture to facilitate transporting and transferring such methodologies to computers.

Referring toFIG. 3, an exemplary method300for generating target values T and weights W for a set of demographic parameters {P1, . . . PM} associated with pairs of elements of a set of elements {E1, . . . EN} is depicted. At reference numeral310, an ordered list of a set of elements {E1, . . . EN} is presented to a user having a set of demographic parameters {P1, . . . PM} (e.g. by a set presentation component150or content server110). At reference numeral320, user input is received indicating selection of at least one element of the list (e.g. by a set presentation component150or content server110). At reference numeral330, target values T and weights W for the set of demographic parameters {P1, . . . PM} associated with pairs of elements of the set of elements {E1, . . . EN} are generated using a target value algorithm (e.g. by a target value component210, set sorting component140, or content server110).

Referring toFIGS. 4A-4B, an exemplary method400using a target value algorithm for generating target values T and weights W for a set of demographic parameters {P1, . . . PM} associated with pairs of elements of a set of elements {E1, . . . EN} in a list presented to a user is depicted. Acts in method400can be performed, for example, by a target value component210, set sorting component140, or content server110. At reference numeral410, a loop counter i is set to 1. At reference numeral415, a loop counter j is set to 1. At reference number420, a loop counter k is set to 1. At reference numeral425, a value Dkfor demographic parameter Pkassociated with the user is obtained. At reference numeral430, a decision is made whether an element Eihas a higher position in the list than Ej. If the decision is “NO”, meaning Eidoes not have a higher position in the list than Ej, the method proceeds to reference numeral450. If the decision is “YES”, meaning Eihas a higher position in the list than Ej, the method proceeds to reference numeral435. At reference numeral435, Tijkis adjusted by an amount TA towards the value of Dk. At reference numeral440, Wijkis adjusted by an amount WA. At reference numeral445, a vector (Ei, Ej, Pk, Tijk, Wijk) is generated. At reference numeral450, a decision is made whether k is less than the number M of demographic parameters in the set {P1, . . . PM}. If the decision is “NO”, meaning k is not less than M, the method proceeds to reference numeral460. If the decision is “YES”, meaning k is less than M, the method proceeds to reference numeral455. At reference numeral455, k is set to k+1 and the method proceeds to reference numeral425. At reference numeral460, a decision is made whether j is less than the number N of elements in the set {Ei, . . . EN}. If the decision is “NO”, meaning j is not less than N, the method proceeds to reference numeral470. If the decision is “NO”, meaning i is not less than N, the method ends. If the decision is “YES”, meaning j is less than N, the method proceeds to reference numeral465. At reference numeral465, j is set to j+1 and the method proceeds to reference numeral420. At reference numeral470, a decision is made whether i is less than N. If the decision is “YES”, meaning i is less than N, the method proceeds to reference numeral475. At reference numeral475, i is set to i+1 and the method proceeds to reference numeral415.

Referring toFIG. 5, an exemplary method500for presenting an ordered list L of Q slots of elements is depicted. At reference numeral510, a set of demographic parameters {P1, . . . PM} associated with a user or group of users is obtained (e.g. by a demographics component120or content server110). At reference numeral520, a set of elements {E1, . . . EN} is identified (e.g. by a set identification component130or content server110). At reference numeral530, an ordered list L of Q slots of elements from the set of elements {E1, . . . EN} is generated using a sorting algorithm (e.g. by a element scoring component220, list generation component230, set sorting component140, or content server110). At reference numeral540, list L is presented to the user or group of users (e.g. by a set presentation component150or content server110).

Referring toFIG. 6, an exemplary method600for generating an ordered list L of Q slots of elements is depicted. At reference numeral610, a respective scores S for elements in a set of elements {E1, . . . EN} for a user or group of users having a set of demographic parameters {P1, . . . PM} are determined using an element scoring algorithm (e.g. by an element scoring component220, set sorting component140, or content server110). At reference numeral620, an ordered list L of Q slots of elements from the set of elements {E1, . . . EN} is generated using a list generation algorithm (e.g. by a list generation component230, set sorting component140, or content server110).

Referring toFIGS. 7A-7B, an exemplary method700using an element scoring algorithm for determining respective scores S for elements in a set of elements {E1, . . . EN} for a user or group of users having a set of demographic parameters {P1, . . . PM} is depicted. Acts in method700can be performed, for example, by an element scoring component220, set sorting component140, or content server110. At reference numeral710, a loop counter i is set to 1. At reference numeral715, aggregate score A for totaling the sum of S for all elements in the set of elements {E1, . . . EN} is initialized to zero. At reference numeral720, a loop counter j is set to 1. At reference numeral725, a score Sifor element Eiis initialized to zero. At reference number730, a loop counter k is set to 1. At reference numeral735, vector (Ei, Ej, Pk, Tijk, Wijk) is obtained. At reference numeral740, a value Dkfor demographic parameter Pkassociated with a user or group of users is obtained. At reference numeral745, VPijkis set to the absolute value of the delta between Dkand Tijk. At reference numeral750, NVPijkis set to (1/(1+VPijk)−1. Optionally, when a factor F is employed, NVPijkis set to ((1/(1+VPijk)−1)F. At reference numeral755, Siis set to Si+(NVPijk*Wijk). At reference numeral760, a decision is made whether k is less than the number M of demographic parameters in the set {P1, . . . PM}. If the decision is “NO”, meaning k is not less than M, the method proceeds to reference numeral770. If the decision is “YES”, meaning k is less than M, the method proceeds to reference numeral765. At reference numeral765, k is set to k+1 and the method proceeds to reference numeral735. At reference numeral770, a decision is made whether j is less than the number N of elements in the set {E1, . . . EN}. If the decision is “NO”, meaning j is not less than N, the method proceeds to reference numeral780. If the decision is “YES”, meaning j is less than N, the method proceeds to reference numeral775. At reference numeral775, j is set to j+1 and the method proceeds to reference numeral730. At reference numeral780, a decision is made whether i is less than N. If the decision is “YES”, meaning i is less than N, the method proceeds to reference numeral785. If the decision is “NO”, meaning i is not less than N, the method ends. At reference numeral785, A is set to A+Si. At reference numeral790, i is set to i+1 and the method proceeds to reference numeral720.

Referring toFIGS. 8A-8B, an exemplary method800using list generation algorithm for generating an ordered list L having Q slots of elements from the set of elements {E1, . . . EN} is depicted. Acts in method800can be performed, for example, by a list generation component230, set sorting component140, or content server110. At reference numeral810, a loop counter x is set to 1. At reference numeral815, an aggregate score A for the sum of scores S for all elements in the set of elements {E1, . . . EN} is obtained. At reference numeral820, a picking score PS is set to A multiplied by a random number R. At reference numeral825, a loop counter i is set to 1. At reference numeral830, a score Sifor element Eiis obtained. At reference numeral835, a decision is made whether Eiis already in list L. If the decision is “YES”, meaning Eiis already in list L, the method proceeds to reference numeral865. If the decision is “NO”, meaning Eiis not in list L, the method proceeds to reference numeral850. At reference numeral840, PS is set to PS−Si. At reference numeral845, a decision is made whether PS is less than zero. If the decision is “YES”, meaning PS is less than zero, the method proceeds to reference numeral850. If the decision is “NO”, meaning PS is not less than zero, the method proceeds to reference numeral865. At reference numeral850, A is set to A−Si. At reference numeral855, picking score PS is set to A*R. At reference numeral860, element Eiis placed in slot Lx. At reference numeral865, a decision is made whether i is less than the number N of elements in the set {E1, . . . EN}. If the decision is “NO”, meaning i is not less than N, the method proceeds to reference numeral875. If the decision is “YES”, meaning i is less than N, the method proceeds to reference numeral870. At reference numeral870, i is set to i+1 and the method proceeds to reference numeral830. At reference numeral875, a decision is made whether x is less than number Q of slots in list L. If the decision is “YES”, meaning x is less than Q, the method proceeds to reference numeral880. If the decision is “NO”, meaning x is not less than Q, the method ends. At reference numeral880, x is set to x+1 and the method proceeds to reference numeral825.

Referring toFIGS. 9A-9D, an exemplary method900using a combing algorithm for granular reordering, using a subset size of C, an ordered list L having a set of elements {E1, . . . EN} for a user or group of users having a set of demographic parameters {P1, . . . PM} is depicted. Acts in method900can be performed, for example, by a set sorting component140or content server110. At reference numeral902, a loop counter x is set to 1. At reference numeral904, aggregate score A for totaling the stun of S for all elements in the set of elements {E1, . . . EN} is initialized to zero. At reference numeral906, a loop counter i is set to x. At reference numeral908, a score Sifor element Eiis initialized to zero. At reference numeral910, a loop counter j is set to x. At reference number912, a loop counter k is set to 1. At reference numeral914, vector (Ei, Ej, Pk, Tijk, Wijk) is obtained. At reference numeral916, a value Dkfor demographic parameter Pkassociated with a user or group of users is obtained. At reference numeral918. VPijkis set to the absolute value of the delta between Dkand Tijk. At reference numeral920, NVPijkis set to (1/(1+VPijk)−1. Optionally, when a factor F is employed, NVPijkis set to ((1/(1+VPijk)−1)F. At reference numeral922, Siis set to Si+(NVPijk*Wijk). At reference numeral924, a decision is made whether k is less than the number M of demographic parameters in the set {P1, . . . PM}. If the decision is “NO”, meaning k is not less than M, the method proceeds to reference numeral928. If the decision is “YES”, meaning k is less than M, the method proceeds to reference numeral926. At reference numeral926, k is set to k+1 and the method proceeds to reference numeral914. At reference numeral928, a decision is made whether j is less than (x+C). If the decision is “NO”, meaning j is not less than (x+C), the method proceeds to reference numeral932. If the decision is “YES”, meaning j is less than (x+C), the method proceeds to reference numeral930. At reference numeral930, j is set to j+1 and the method proceeds to reference numeral912. At reference numeral932, a decision is made whether i is less than (x+C). If the decision is “YES”, meaning i is less than (x+C), the method proceeds to reference numeral934. If the decision is “NO”, meaning i is not less than (x+C), the method proceeds to reference numeral938. At reference numeral934, A is set to A+Si. At reference numeral936, i is set to i+1 and the method proceeds to reference numeral908. At reference numeral938, a loop counter y is set to x. At reference numeral940, elements Eito Ei+Cin slots Lito Li+Care stored in a temporary storage. At reference numeral942, slots Lito Li+Care cleared. At reference numeral944, a picking score PS is set to A multiplied by a random number R. At reference numeral946, a loop counter i is set to x. At reference numeral948, a score Sifor element Eiis obtained. At reference numeral950, a decision is made whether Eiis already in list L. If the decision is “YES”, meaning Eiis already in list L, the method proceeds to reference numeral962. If the decision is “NO”, meaning Eiis not in list L, the method proceeds to reference numeral952. At reference numeral952, PS is set to PS−Si. At reference numeral954, a decision is made whether PS is less than zero. If the decision is “YES”, meaning PS is less than zero, the method proceeds to reference numeral956. If the decision is “NO”, meaning PS is not less than zero, the method proceeds to reference numeral962. At reference numeral956, A is set to A−Si. At reference numeral958, picking score PS is set to A*R. At reference numeral960, element Eiis placed in slot Lx. At reference numeral962, a decision is made whether i is less than (x+C). If the decision is “NO”, meaning i is not less than (x+C), the method proceeds to reference numeral966. If the decision is “YES”, meaning i is less than (x+C) . . . the method proceeds to reference numeral964. At reference numeral964, i is set to i+1 and the method proceeds to reference numeral948. At reference numeral966, a decision is made whether y is less than number (x+C). If the decision is “YES”, meaning y is less than (x+C), the method proceeds to reference numeral968. If the decision is “NO”, meaning y is not less than (x+C), the method proceeds to reference numeral970. At reference numeral968, y is set to y+1 and the method proceeds to reference numeral946. At reference numeral970, a decision is made whether x is less than the number N of elements in the set {E1, . . . EN}. If the decision is “NO”, meaning x is not less than N, the method ends. If the decision is “YES”, meaning x is less than N, the method proceeds to reference numeral972. At reference numeral972, x is set to (x+C−1) and the method proceeds to reference numeral904.

Exemplary Networked and Distributed Environments

One of ordinary skill in the art can appreciate that the various embodiments described herein can be implemented in connection with any computer or other client or server device, which can be deployed as part of a computer network or in a distributed computing environment, and can be connected to any kind of data store where media may be found. In this regard, the various embodiments described herein can be implemented in any computer system or environment having any number of memory or storage units, and any number of applications and processes occurring across any number of storage units. This includes, but is not limited to, an environment with server computers and client computers deployed in a network environment or a distributed computing environment, having remote or local storage.

Distributed computing provides sharing of computer resources and services by communicative exchange among computing devices and systems. These resources and services include the exchange of information, cache storage and disk storage for objects, such as files. These resources and services can also include the sharing of processing power across multiple processing units for load balancing . . . expansion of resources, specialization of processing, and the like. Distributed computing takes advantage of network connectivity, allowing clients to leverage their collective power to benefit the entire enterprise. In this regard . . . a variety of devices may have applications, objects or resources that may participate in the various embodiments of this disclosure.

FIG. 10provides a schematic diagram of an exemplary networked or distributed computing environment. The distributed computing environment comprises computing objects1010,1012, etc. and computing objects or devices1020,1022,1024,1026,1028, etc., which may include programs, methods, data stores, programmable logic, etc., as represented by applications1030,1032,1034,1036,1038. It can be appreciated that computing objects1010,1012, etc. and computing objects or devices1020,1022,1024,1026,1028, etc. may comprise different devices, such as personal digital assistants (PDAs), audio/video devices, mobile phones. MP3 players, personal computers, laptops . . . tablets, etc.

Each computing object1010,1012, etc. and computing objects or devices1020,1022,1024,1026,1028, etc. can communicate with one or more other computing objects1010,1012, etc. and computing objects or devices1020,1022,1024,1026,1028, etc. by way of the communications network1040, either directly or indirectly. Even though illustrated as a single element inFIG. 10, network1040may comprise other computing objects and computing devices that provide services to the system ofFIG. 10, and/or may represent multiple interconnected networks, which are not shown. Each computing object1010,1012, etc. or computing objects or devices1020,1022,1024,1026,1028, etc. can also contain an application, such as applications1030,1032,1034,1036,1038, that might make use of an APL or other object, software, firmware and/or hardware, suitable for communication with or implementation of various embodiments of this disclosure.

Thus, a host of network topologies and network infrastructures, such as client/server, peer-to-peer, or hybrid architectures, can be utilized. The “client” is a member of a class or group that uses the services of another class or group. A client can be a computer process, e.g., roughly a set of instructions or tasks, that requests a service provided by another program or process. A client process may utilize the requested service without having to “know” all working details about the other program or the service itself.

In a client/server architecture, particularly a networked system, a client can be a computer that accesses shared network resources provided by another computer, e.g., a server. In the illustration ofFIG. 10, as a non-limiting example, computing objects or devices1020,1022,1024,1026,1028, etc. can be thought of as clients and computing objects1010,1012, etc. can be thought of as servers where computing objects1010,1012, etc. provide data services, such as receiving data from client computing objects or devices1020,1022,1024,1026,1028, etc., storing of data, processing of data, transmitting data to client computing objects or devices1020,1022,1024,1026,1028, etc., although any computer can be considered a client, a server, or both, depending on the circumstances. Any of these computing devices may be processing data, or requesting transaction services or tasks that may implicate the techniques for systems as described herein for one or more embodiments.

In a network environment in which the communications network/bus1040is the Internet, for example, the computing objects1010,1012, etc. can be Web servers, file servers, media servers, etc. with which the client computing objects or devices1020,1022,1024,1026,1028, etc. communicate via any of a number of known protocols, such as the hypertext transfer protocol (HTTP). Objects1010,1012, etc. may also serve as client computing objects or devices1020,1022,1024,1026,1028, etc., as may be characteristic of a distributed computing environment.

Exemplary Computing Device

As mentioned, advantageously, the techniques described herein can be applied to any suitable device. It is to be understood, therefore, that handheld, portable and other computing devices and computing objects of all kinds are contemplated for use in connection with the various embodiments. Accordingly, the computer described below inFIG. 11is but one example of a computing device that can be employed with implementing one or more of the systems or methods shown and described in connection withFIGS. 1-8Additionally, a suitable server can include one or more aspects of the below computer, such as a media server or other media management server components.

FIG. 11thus illustrates an example of a suitable computing system environment1100in which one or aspects of the embodiments described herein can be implemented, although as made clear above, the computing system environment1100is only one example of a suitable computing environment and is not intended to suggest any limitation as to scope of use or functionality. Neither is the computing environment1100be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary operating environment1100.

With reference toFIG. 11, an exemplary computing device for implementing one or more embodiments in the form of a computer1110is depicted. Components of computer1110may include, but are not limited to, a processing unit1120, a system memory1130, and a system bus1122that couples various system components including the system memory to the processing unit1120.

Computer1110typically includes a variety of computer readable media and can be any available media that can be accessed by computer1110. The system memory1130may include computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) and/or random access memory (RAM). By way of example, and not limitation, system memory1130may also include an operating system, application programs, other program modules, and program data.

A user can enter commands and information into the computer1110through input devices1140, non-limiting examples of which can include a keyboard, keypad, a pointing device, a mouse, stylus, touchpad, touchscreen, trackball, motion detector, camera, microphone, joystick, game pad, scanner, or any other device that allows the user to interact with computer1110. A monitor or other type of display device is also connected to the system bus1122via an interface, such as output interface1150. In addition to a monitor, computers can also include other peripheral output devices such as speakers and a printer, which may be connected through output interface1150.

The computer1110may operate in a networked or distributed environment using logical connections to one or more other remote computers, such as remote computer1170. The remote computer1170may be a personal computer, a server, a router, a network PC, a peer device or other common network node, or any other remote media consumption or transmission device, and may include any or all of the elements described above relative to the computer1110. The logical connections depicted inFIG. 11include a network1172, such local area network (LAN) or a wide area network (WAN), but may also include other networks/buses e.g., cellular networks.

As mentioned above, while exemplary embodiments have been described in connection with various computing devices and network architectures, the underlying concepts may be applied to any network system and any computing device or system in which it is desirable to publish or consume media in a flexible way.

Also, there are multiple ways to implement the same or similar functionality, e.g., an appropriate API, tool kit, driver code, operating system, control, standalone or downloadable software object, etc. which enables applications and services to take advantage of the techniques described herein. Thus, embodiments herein are contemplated from the standpoint of an API (or other software object), as well as from a software or hardware object that implements one or more aspects described herein. Thus, various embodiments described herein can have aspects that are wholly in hardware, partly in hardware and partly in software, as well as in software.

As mentioned, the various techniques described herein may be implemented in connection with hardware or software or, where appropriate, with a combination of both. As used herein, the terms “component.” “system” and the like are likewise intended to refer to a computer-related entity, either hardware, a combination of hardware and software, software, or software in execution. For example, a component may be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and/or a computer. By way of illustration, both an application running on computer and the computer can be a component. One or more components may reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers. Further, a “device” can come in the form of specially designed hardware; generalized hardware made specialized by the execution of software thereon that enables the hardware to perform specific function (e.g., coding and/or decoding); software stored on a computer readable medium; or a combination thereof.

In order to provide for or aid in the numerous inferences described herein (e.g. inferring relationships between metadata or inferring topics of interest to users), components described herein can examine the entirety or a subset of the data to which it is granted access and can provide for reasoning about or infer states of the system, environment, etc. from a set of observations as captured via events and/or data. Inference can be employed to identify a specific context or action, or can generate a probability distribution over states, for example. The inference can be probabilistic—that is, the computation of a probability distribution over states of interest based on a consideration of data and events. Inference can also refer to techniques employed for composing higher-level events from a set of events and/or data.

Such inference can result in the construction of new events or actions from a set of observed events and/or stored event data, whether or not the events are correlated in close temporal proximity, and whether the events and data come from one or several event and data sources. Various classification (explicitly and/or implicitly trained) schemes and/or systems (e.g., support vector machines, neural networks, expert systems, Bayesian belief networks, fuzzy logic, data fusion engines, etc.) can be employed in connection with performing automatic and/or inferred action in connection with the claimed subject matter.

The following is sample pseudo code for an exemplary sorting algorithm suitable for use by set sorting component140: