Determining recommended media programming from sparse consumption data
A processor may create a preference vector by generating preference vector entries in fields that correspond to content attributes associated with at least one media program presented via a media device, each entry including a playback duration and a year. The processor may create a media entity matrix of entity vectors for entities associated with production of media programs. For each entity vector, the processor may generate matrix entries in fields that correspond to content attributes associated with at least one media program associated with the entity, each matrix entry including a year and a score, the score weighted by an epoch factor based upon a time span associated with the at least one media program presented via the media device. The processor may determine entity rankings based upon dot products between the preference vector and the entity vectors and provide a recommendation based upon the rankings.
Latest THE DIRECTV GROUP, INC. Patents:
- Devices for presenting video program segments in accordance with definition documents
- SYSTEM AND METHODOLOGY FOR VIDEO COMPRESSION
- Method And System For Synchronizing Playback Of Independent Audio And Video Streams Through A Network
- Automated content tag processing for mobile media
- Customized recommendations of multimedia content streams
This application is a continuation of U.S. patent application Ser. No. 15/289,626, filed Oct. 10, 2016, now U.S. Pat. No. 10,223,359, which is herein incorporated by reference in its entirety.
The present disclosure relates generally to making recommendations based upon media consumption of a user, and more particularly to devices, non-transitory computer-readable media, and methods for determining entity rankings of entities associated with production of media programs and providing a recommendation based upon the entity rankings.
BACKGROUNDContent recommendation services may recommend additional content to a user based upon the current content being consumed, based upon a history of a user's content consumption, or based upon a user profile. For example, content that is deemed similar to a current content being consumed may be recommended to the user. Recommendations may also be based upon content that is deemed popular in general, or that is popular with users who are similar to a user for whom a recommendation is being generated. However, such recommendations may be inaccurate or irrelevant to actual interests of the user when there is no user profile or little content consumption which may be considered.
SUMMARYIn one embodiment, the present disclosure describes a device, computer-readable medium and method for determining entity rankings of entities associated with production of media programs and providing a recommendation based upon the entity rankings. For instance, in one example, a processor may receive a data set identifying at least one media program presented via a media device and create a preference vector that includes a plurality of fields corresponding to a plurality of content attributes. In one example, the creating the preference vector includes generating preference vector entries in fields of the plurality of fields that correspond to content attributes associated with the at least one media program presented via the media device. In one example, each of the preference vector entries comprise a playback duration of one of the at least one media program presented via the media device and a year of the one of the at least one media program presented via the media device. The processor may further create a media entity matrix comprising entity vectors for a plurality of entities associated with a production of a plurality of media programs, each entity vector including the plurality of fields corresponding to the plurality of content attributes. In one example, the creating the media entity matrix includes, for each entity vector, generating matrix entries in fields that correspond to content attributes associated with at least one media program associated with the entity. In one example, each matrix entry comprises a year of one of the at least one media program associated with the entity and a score of the one of the at least one media program associated with the entity, where the score is weighted by an epoch factor that is based upon a time span that is associated with the at least one media program presented via the media device. The processor may then determine entity rankings based upon dot products between the preference vector and the entity vectors of the media entity matrix and provide a recommendation based upon the entity rankings.
The teachings of the present disclosure can be readily understood by considering the following detailed description in conjunction with the accompanying drawings, in which:
To facilitate understanding, identical reference numerals have been used, where possible, to designate identical elements that are common to the figures.
DETAILED DESCRIPTIONRecommendation Systems (RS) generally utilize Content Based (CB) or Collaborative Filtering (CF) in the generation of recommended content. However, for users with sparse viewing history, these methods may fail to generate a reasonably sized or diverse recommendation set.
Examples of the present disclosure create an entity matrix comprising rows, or vectors corresponding to different entities associated with different media programs, such as cast members of various film different content, and columns corresponding to attributes of the different media programs, such as keywords, genres, themes, etc. For instance, for a particular cast member, a first film in which the cast member has appeared is considered. The cast member may be identified as having appeared in the film based upon public or non-public data source(s). The keywords, genres, themes, etc. for the film are also extracted from the data source(s). Entries are then made in the row for the cast member within the column(s) corresponding to the keywords, genres, themes, etc. that are identified for that particular film. Each entry in the entity matrix may comprise the year of the film and a rating (e.g., scaled from zero to one) for the film. The same process is repeated for each film or other media program in which the cast member has appeared. In addition, the same process is repeated for numerous other cast members in the same film and in different films. Thus, each cell or field (i.e., each row-column pair in the entity matrix) may have zero, one, or several entries depending upon whether the particular cast member has appeared in none, few, or many films, shows, etc. which touch upon the keywords, genres, themes, etc. for a column containing the cell or field. In one example, the entity matrix is normalized based upon the maximum row value for each entity vector, or row.
In accordance with the present disclosure, a user preference vector may also be created with columns comprising keywords, genres, themes, and the like. For example, for each media program presentation associated with a user, a device, an account, etc., entries are made in the columns which correspond to the keywords, genres, themes, etc. for the media program. The keywords, genres, themes, etc. may be taken from the same data source(s) used to create the entity matrix. Thus, each column may have zero entries, one entry, or more than one entry. Unlike the cast matrix, however, entries in the user vector may comprise a year of the media program, a value between zero and one, indicating what percentage of the total duration of the media program was presented, and a weighting factor based upon the mode of consumption, e.g., live programming, on demand, purchase, download, etc. For each media program that is presented, there may be several identical entries in different columns corresponding to different keywords, genres, themes, etc.
In one example, a user's preferences are then matched to one or more media entities. In one example, this is accomplished by taking the dot product between the user preference vector and the entity vectors/rows of the entity matrix, and sorting to determine respective ranks. For instance, the top 5, top 10 or some other number of entities that are top ranked may be identified as recommended entities based upon the user's media program consumption history. In one example, media program(s) associated with the recommended entity or entities may also be identified a recommended content.
Notably, success towards a specific parameter is based on media critic or user ratings/scores for the different media programs associated with an entity. In addition, in one example, the ratings in the entries of the entity matrix may be weighed against a user epoch. For example, entities, such as film cast members from decades ago may carry less weight for a user that prefers new content. In one example, the user epoch is considered as the median year among the years of all content that the user has viewed (and a standard deviation). In one example, the user epoch is then used to weight the entity matrix. After weighting, relevance scores between the user and the various entities may be determined (e.g., by the dot product between the user vector and the entity vectors of the entity matrix), and the entities are then sorted into a ranked list, as described above.
Current offerings and standards of content recommendations do not provide a robust and personalized solution for low consumption users. The present approach goes beyond standard content based solutions to build an abstract space used to transform attributes into relevant metrics of affinity. The solution also allows for accurate extrapolations in dimensions of content and similar attributes. These and other aspects of the present disclosure are described in greater detail below in connection with the examples of
To better understand the present disclosure,
In one embodiment, wireless access network 150 comprises a radio access network implementing such technologies as: global system for mobile communication (GSM), e.g., a base station subsystem (BSS), or IS-95, a universal mobile telecommunications system (UMTS) network employing wideband code division multiple access (WCDMA), or a CDMA3000 network, among others. In other words, wireless access network 150 may comprise an access network in accordance with any “second generation” (2G), “third generation” (3G), “fourth generation” (4G), Long Term Evolution (LTE) or any other yet to be developed future wireless/cellular network technology. While the present disclosure is not limited to any particular type of wireless access network, in the illustrative embodiment, wireless access network 150 is shown as a UMTS terrestrial radio access network (UTRAN) subsystem. Thus, elements 152 and 153 may each comprise a Node B or evolved Node B (eNodeB).
In one embodiment, each of mobile devices 157A, 157B, 167A, and 167B may comprise any subscriber/customer endpoint device configured for wireless communication such as a personal computer, a laptop computer, a Wi-Fi device, a Personal Digital Assistant (PDA), a mobile phone, a smartphone, a smart television, or smart TV, an email device, a computing tablet, a messaging device, and the like. In one embodiment, any one or more of mobile devices 157A, 157B, 167A, and 167B may have both cellular and non-cellular access capabilities and may further have wired communication and networking capabilities.
As illustrated in
With respect to television service provider functions, core network 110 may include one or more television servers 112 for the delivery of television content, e.g., a broadcast server, a cable head-end, a video-on-demand (VoD) server, and so forth. For example, core network 110 may comprise a video super hub office, a video hub office and/or a service office/central office. In this regard, television servers 112 may interact with content servers 113, advertising server 117 and recommendation server 115 to select which content to provide to the home network 160 and others.
In one example, content servers 113 may store scheduled national television broadcast content for a number of television channels, video-on-demand programming, local programming content, and so forth. For example, content providers may upload various contents to the core network to be distributed to various subscribers.
In one example, advertising server 117 stores a number of advertisements that can be selected for presentation to viewers, e.g., in the home network 160 and at other downstream viewing locations. For example, advertisers may upload various advertising content to the core network to be distributed to various viewers.
In addition, the access network 120 may comprise a Digital Subscriber Line (DSL) network, a broadband cable access network, a Local Area Network (LAN), a cellular or wireless access network, a 3rd party network, and the like. For example, the operator of core network 110 may provide a cable television service, an IPTV service, or any other type of television service to subscribers via access network 120. In this regard, access network 120 may include a node 122, e.g., a mini-fiber node (MFN), a video-ready access device (VRAD) or the like. However, in another embodiment node 122 may be omitted, e.g., for fiber-to-the-premises (FTTP) installations. Access network 120 may also transmit and receive communications between home network 160 and core network 110 relating to voice telephone calls, communications with web servers via the Internet 145 and/or other networks 140, and so forth.
Alternatively, or in addition, the network 100 may provide television services to home network 160 via satellite broadcast. For instance, ground station 130 may receive television content from television servers 112 for uplink transmission to satellite 135. Accordingly, satellite 135 may receive television content from ground station 130 and may broadcast the television content to satellite receiver 139, e.g., a satellite link terrestrial antenna (including satellite dishes and antennas for downlink communications, or for both downlink and uplink communications), as well as to satellite receivers of other subscribers within a coverage area of satellite 135. In one example, satellite 135 may be controlled and/or operated by a same network service provider as core network 110. In another example, satellite 135 may be controlled and/or operated by a different entity and may carry television broadcast signals on behalf of core network 110.
As illustrated in
In one example, application servers 114 may include data storage servers to receive and store third-party information regarding the media programs (e.g., movies, television programming, and other content) maintained within content servers 113 and/or other media content. For instance, application servers 114 comprising one or more data storage servers may receive a media program data set that includes a plurality of media records for a plurality of media programs from a device of a third-party, e.g., via the Internet 145, other networks 140, etc. The third-party may comprise, for example, an entity that maintains a database storing information for various media programs, entities that are associated with such media programs, scores, or ratings for such media programs given by critics and/or the general public, and so forth. In one example, application servers 114 may represent a distributed file system, e.g., a Hadoop® Distributed File System (HDFS™), or the like. In one example, the application servers 114 may receive and store multiple media program data sets from different third-parties. In addition, in one example, the application servers 114 may also store user preference vectors and a media entity matrix, which may be generated from one or more media program data sets. It should be noted that the foregoing are only several examples of the types of relevant application servers 114 that may be included in core network 110 for storing information relevant to providing personalized content to a subscriber.
In one example, home network 160 may include a home gateway 161, which receives data/communications associated with different types of media, e.g., television, phone, and Internet, and separates these communications for the appropriate devices. The data/communications may be received via access network 120 and/or via satellite receiver 139, for instance. In one example, television data is forwarded to set-top boxes (STBs) 162A, and 162B to be decoded and forwarded to televisions 163A, and 163B for presentation. Similarly, telephone data is sent to and received from home phone 164; Internet communications are sent to and received from router 165, which may be capable of both wired and/or wireless communication. In turn, router 165 receives data from and sends data to the appropriate devices, e.g., personal computer (PC) 166, mobile devices 167A, and 167B, and so forth. In one example, router 165 may further communicate with TV (broadly a display) 163A and/or 163B, e.g., where one or both of the televisions is a smart TV.
As illustrated in
In one example, the data set identifying at least one media program presented via at least one media device may be received from at least one of television servers 112. For instance, the at least one of television servers 112 may track the presentation of media programs via media devices such as set top boxes 161A and 162B, TVs 163A and 163B, home gateway 161, and so forth. In one example, the at least one of television servers 112 may track the presentation of media programs via multiple media devices associated with home network 160, a subscriber account associated with home network 160, or for individual viewers associated with home network 160 and/or the subscriber account. Alternatively, or in addition, the data set may be received from at least one of application servers 114. For instance, the at least one of application servers 114 may track media programs presented via the media devices mentioned above, as well as media programs presented via PC 166, mobile devices 157A, 157B, 167A and 167B, and so forth. For instance, if an individual is a subscriber associated with home network 160 and is also a subscriber associated with mobile device 157B, then media presented via mobile device 157B may be tracked and aggregated with media program presentation information relating to the subscriber gathered from media programs that are presented via one or more media devices in home network 160. In this regard, any one or more devices within home network 160 and/or core network 110 may be configured to create a record noting the presentation of a particular media program via a media device and to report the presentation of the particular media program to the at least one of television servers 112 and/or the at least one of application servers 114.
In one example, the recommendation generated by recommendation server 115 may be passed to television servers 112 for presentation via the media device. For instance, television servers 112 may send instructions to STB 162A and/or STB 162B via home gateway 161 to display the recommendation via TV 163A and/or TV 163B on a portion of a home screen, a screen presenting a programming guide, a screen for video-on-demand media content selection, and so forth. Alternatively, or in addition, the recommendation may be transmitted to a user/subscriber associated with home network 160 via email, or in connection with the viewing of additional media program(s) via PC 166, mobile devices 167A and 167B, and so forth. Further details regarding the functions that may be implemented by recommendation server 115 are discussed in greater detail below in connection with the example method 500 of
In addition, those skilled in the art will realize that the network 100 may be implemented in a different form than that illustrated in
For the raw preference vector for user U1 in table 210, within the various fields corresponding to the columns 1, 7, 11, 15, and 20 are one or more entries (broadly, “preference vector entries”). Each entry comprises a year followed by a colon and a number ranging between 0.01 and 1. The year relates to a year in which a particular media program was produced. The number between 0.01 and 1 correspond to a percentage of the total duration of the media program which has been presented via the device(s) associated with the user U1. For example, for the raw preference vector of user U1, the first entry in the field of column 1 is “2003:0.72”. Therefore, a media program from the year 2003 was presented via a device associated with the user U1, and 72 percent of the total media program was presented. It should be noted that there may be multiple entries within each field. For example, in the field corresponding to column 1 for the raw preference vector for user U1 there are ten entries. In this case, there has been ten different media programs presented via devices associated with the user U1 which are associated with the same attribute, e.g., the genre of “western”. It should also be noted that each media program may have multiple attributes. For example, a film may be categorized as both a “western” and a “comedy”. Thus, there may be entries in multiple fields/columns for the same media program. In the example, of
In one example, media program consumption data relating to user U1 may be collected and corresponding entries may be populated into the raw preference vector for user U1 in the table 210. In one example, a normalized preference vector may then be calculated from the raw user preference and populated into table 220. For instance, the raw preference vector may be created in table 210 and a normalized preference vector may be derived therefrom when user U1 consumes an initial media program. The raw preference vector may be updated in table 210 as the user U1 consumes more media programming. In addition, the normalized preference vector may also be updated, e.g., as the media programming is consumed, or on a periodic basis or other basis, such as once per hour, once per day, etc.
In one example, a normalized preference vector may be generated and stored in table 220. In one example, the table 220 has the same columns as contained in the table 210 (and hence the preference vectors of table 220 have the same fields as the raw preference vectors of table 210). With respect to user U1, a (normalized) preference vector may be calculated, e.g., using sum normalization, as follows. For each field of the raw preference vector for user U1 in table 210, the second portions of all of the entries (e.g., the percentage of the total duration of the media program which has been presented) are cumulated/totaled to generate per-field totals. The per-field totals are then summed, and the per-field total for each field is then divided by this sum to generate the entry for the same corresponding field/column within the normalized preference vector for user U1 within table 220. The results of such calculations are shown in the fields of the preference vector for user U1, i.e., the first row of table 220 corresponding to U1. Additional normalized preference vectors for users U2-Un may be similarly derived from the corresponding raw preference vectors of table 210.
The normalized preference vectors within table 220 may also include a field for a user epoch. For the user U1, the preference vector includes then entry “2000:8” in the “epoch” field/column. The epoch indicates a time period range associated with the media programming consumption associated with the user. For instance, “2000” indicates the mean of the years of the media programs consumed by user U1 with a standard deviation of “8” years indicated by the latter part of the entry. The purpose of the user epoch is described further detail below in connection with the example of
To illustrate, table 320 shows the results of consumption mode weight calculations for four modes of consumption in accordance with Equation 1 and Equation 2 below:
consumption_mode_interim_factor_n=(mode_n_count−total_event_count){circumflex over ( )}2/total_event_count Equation 1:
consumption_mode_weight_n=consumption_mode_interim_factor_n/sum_consumption_mode_interim_factors Equation 2:
In the present example, “mode_n_count” is the number of times that a mode “n” of consumption was used to present media programs associated with the user, and “total_event_count” is the total number of media programs presented via all modes of consumption under consideration. “consumption_mode_weight_n” is the weighting factor to be used in weighting entries associated with the mode “n” of consumption. It should be noted that “consumption_mode_interim_factor_n” is a variable that relates Equation 1 to Equation 2. However, in another example, Equations 1 and 2 may be collapsed into a single equation which omits this variable.
In one example, the calculations of table 320 may be related to the consumption of media programs regarding the same user U1 discussed above in connection with the example of
As illustrated in table 320 of
In one example, consumption mode weighting involves, for a respective entry for a media program within a field of a raw preference vector, multiplying the percentage of the total duration of the media program which has been presented of by the consumption mode weighting factor for the mode of consumption that was used in connection with the presentation of that particular media program. To illustrate, with respect to the field of column 20 of the raw preference vector for user U1 in table 210, there are three entries: “2015:0.21”, “2005:0.72” and “1992:0.80”. The three entries may relate to media programs which were consumed via the “live” mode, “playback” mode and “purchase” mode respectively. Using the consumption mode weighting factors from table 320 of
To further aid in understanding the present disclosure,
As illustrated in
Table 420 illustrates calculations for generating a normalized entity vector and a normalized, epoch weighted entity vector for entity E1. As illustrated in table 420, the first row “E1 Cumulative” comprises the cumulative sum of all of the scores/ratings for each of the respective fields/columns. The second row “E1 Normalized” comprises the cumulative sums for each of the respective fields/columns, divided by the highest cumulative sums selected from all of the respective fields in the row above for “E1 Cumulative”, e.g., a max-value normalization. In the present example, the cumulative sums in the fields of columns 1, 6, 7, 9, and 11 are divided by 5.85, the highest cumulative sum, which is calculated for the field of column 11. The normalized scores/ratings therefore appear as the entries within the second row of table 420 for “E1 Normalized”.
In one example, an entity matrix, and the entity vectors therein, may be personalized to a user. More specifically, the entity matrix may be personalized to the user based upon the user epoch. In one example, the user epoch indicates a range of years associated with the media programming consumption of a user. For instance, with respect to the user preference vector for user U1 contained in table 330 of
weight(y)=UDF{circumflex over ( )}51 x−y| Equation 3:
In the present example, “weight (y)” is a weight factor, “x” is one of the limits of the epoch range, “y” is the year of a media program and “UDF” is a user-defined factor. In one example, the UDF may be selected to be 0.9. To illustrate, the first entry in field/column 1 for entity E1 in table 410 is “2002:0.71”. Since the year 2002 is within the epoch range of user U1 (1992-2008), the score, 0.71, is unmodified. However, the next entry is “2012:0.64”. Since 2012 is outside of the epoch range, the weight factor is calculated as 0.9{circumflex over ( )}|2008-2012|=0.6561 according to Equation 3. Accordingly, the score of 0.64 is modified by multiplying by the weight factor 0.6561, resulting in a modified score of 0.42 (rounded to two decimal places). In one example, the entries in the respective fields/columns of the raw entity vector for entity E1 are processed in this way, and then the resulting scores are summed. An example of the result of such calculations is illustrated in the third row of table 420 “E1 Cumulative (User Epoch Weighted).” In one example, an entity vector personalized to the user U1 may further be generated by (max-value) normalizing the cumulative (user epoch weighted) scores in each of the fields of the entity vector for entity E1. For example, the fourth row of table 420 “E1 Normalized User Epoch Weighted” may comprise the results of dividing each of the entries in the third row of table 420 by the maximum value, e.g., 5.67 from field/column 11.
As further illustrated in
As mentioned above, examples of the present disclosure may determine entity rankings of entities associated with production of media programs and provide a recommendation based upon the entity rankings. In one example, the entity rankings may be determined by taking dot products between a user preference vector and the entity vectors of a media entity matrix. For example, the columns/fields of the table 430 may be the same columns/fields as contained within the table 220 of
It should be noted that the examples of
At step 510, the processor receives a data set identifying at least one media program presented via at least one media device. In one example, the at least one media device may be associated with a user and/or a subscriber account. In one example, the data set may be received from any one or more of a set top box, a television server, a smart TV, a cellular smart phone or other computing device, and so forth.
At optional step 520, the processor may receive a media program data set that includes a plurality of media records for a plurality of media programs. For example, the plurality of media programs may include the at least one media program presented via the at least one media device. In one example, each media record of the plurality of media records includes a set of one or more content attributes associated with one of the plurality of media programs, a set of one or more entities associated with the one of the plurality of media programs, a year of the one of the plurality of media programs, and a score for the one of the plurality of media programs. In one example, the media program data set is received from a device of a third-party, such as an entity that maintains a database storing information for various media programs, entities that are associated with such media programs, ratings for such media programs by critics and/or the general public, and so forth. The media programs may comprise, for example, films, movies, television programing, music programming, and so forth. In one example, at optional step 520 the processor may receive and store multiple media program data sets from different third-parties. For instance, the processor may combine multiple media program data sets into a composite media program data set. In another example, the processor may receive the media program data set(s) from one or more data storage devices, e.g., of a television service provider network. For instance, the one or more data storage devices may have previously received and stored the media program data set(s).
At step 530, the processor creates a preference vector comprising a plurality of fields corresponding to a plurality of content attributes. In one example, the creating the preference vector comprises generating preference vector entries in fields of the plurality of fields that correspond to content attributes associated with the at least one media program presented via the at least one media device. In one example, each of the preference vector entries comprise a playback duration of one of the at least one media program presented via the at least one media device and a year of the one of the at least one media program presented via the at least one media device. For example, at step 530 the processor may retrieve at least one media record associated with the at least one media program from the media program data set received at optional step 520, retrieve the content attributes from the at least one media record, and create the preference vector entries in the fields of the plurality of fields of the preference vector corresponding to the content attributes. In one example, for each media program of the at least one media program, a preference vector entry is created in one of the plurality of fields of the preference vector when a content attribute from the media record for the media program corresponds to the one of the plurality of fields.
Notably, each field of the plurality of fields of the preference vector may have zero preference vector entries, one preference vector entry, or more than one preference vector entry. For more than one entry, each of the preference vector entries in the field relates to a different media program. In one example, at step 520 the creating the preference vector further includes summing playback durations percentages of preference vector entries within the fields of the plurality of fields of the preference vector to generate cumulative playback duration percentages and normalizing the cumulative playback duration percentages, e.g., by sum normalizing. In one example, the playback duration percentages are consumption mode weighted prior to the summing. For example, the playback duration percentages may be consumption mode weighted according to the calculations of the example Equations 1 and 2 above.
At step 540, the processor creates a media entity matrix comprising entity vectors for a plurality of entities associated with a production of a plurality of media programs. In one example, the plurality of media programs comprises video programs. Accordingly, each entity of the plurality of entities may comprise: a cast member, a director, a production company, a composer, a writer, a host, a narrator, an illustrator, etc. In another example, the plurality of media programs comprises audio programs. Accordingly, each entity of the plurality of entities may comprise: a musician, a performer, a songwriter, a singer, a band, a band member, a record label, a production company, a narrator, a reporter, a host, etc.
In one example, each entity vector comprises the plurality of fields corresponding to the plurality of content attributes (i.e., the same content attributes for the fields of the preference vector). In one example, the creating the media entity matrix at step 540 comprises, for each entity vector for each of the plurality of entities, generating matrix entries in fields of the plurality of fields that correspond to content attributes associated with at least one media program associated with the entity. In one example, each matrix entry comprises a year of one of the at least one media program associated with the entity and a score of the one of the at least one media program associated with the entity. In one example, the plurality of media programs of the media program data set received at optional step 520 may include the at least one media program presented via the at least one media device and the at least one media program associated with the entity. In one example, the at least one media program presented via the at least one media device and the at least one media program associated with the entity may include a same media program or media programs. In any event, in one example, the processor may determine, from the media program data set received at optional step 520, the content attributes associated with the at least one media program associated with the entity, the year of the one of the at least one media program associated with the entity, and the score of the one of the at least one media program associated with the entity.
In one example, the score is weighted by an epoch factor that is based upon a time span that is associated with the at least one media program presented via the media device. In one example, the time span comprises a range of years based upon a mean of the years of the at least one media program presented via the media device and a standard deviation. In one example, for each entity vector for each of the plurality of entities, the matrix entries is weighted by the epoch factor by multiplying scores of the matrix entries by the epoch factor. For example, for each of the matrix entries, the epoch factor is a value of one (1) when the year of the matrix entry is within the range of years, and when the year of the matrix entry is not within the range of years, the epoch factor is a value calculated by raising a distribution factor to a power comprising a difference between a terminal year of the range of years and the year of the matrix entry, e.g., according to Equation 3 above. In one example, the distribution factor comprises a value of 0.9.
In one example, the creating the media entity matrix further comprises, for each entity vector for each of the plurality of entities: summing scores of matrix entries within the fields of the plurality of fields to generate cumulative scores for the fields of the plurality of fields, and normalizing the cumulative scores. In one example, the normalizing comprises max-value normalizing.
At step 550, the processor determines entity rankings based upon dot products between the preference vector and the entity vectors of the media entity matrix. For example, a dot product between the preference vector and one of the entity vectors may measure a relative degree of similarity between the attributes of media programs presented via the at least one media device, and the media programs that are associated with the entity of the entity vector. In one example, a ranked list of entities may thus be created, where entities having entity vectors resulting in greater valued dot products may be ranked higher than entity vectors resulting in lower valued dot products.
At step 560, the processor provides a recommendation based upon the entity rankings. In one example, the providing the recommendation comprises transmitting the recommendation to the media device. In one example, the recommendation includes a recommended entity based upon the entity rankings. For example, the recommended entity may comprise the top ranked entity based upon the results of step 550, a top five ranked entity, a top ten ranked entity, or the like. Alternatively, or in addition the recommendation may include a recommended media program that is associated with a recommended entity based upon the entity rankings. For instance, the recommendation may include a film, television program, a song, an album, or the like that is associated with the recommended entity.
Following step 560, the method 500 proceeds to step 595 where the method ends.
In addition, although not expressly specified above, one or more steps of method 500 may include a storing, displaying and/or outputting step as required for a particular application. In other words, any data, records, fields, and/or intermediate results discussed in the method can be stored, displayed and/or outputted to another device as required for a particular application. Furthermore, operations, steps or blocks in
Although only one processor element is shown, it should be noted that the general-purpose computer may employ a plurality of processor elements. Furthermore, although only one general-purpose computer is shown in the Figure, if the method(s) as discussed above is implemented in a distributed or parallel manner for a particular illustrative example, i.e., the steps of the above method(s) or the entire method(s) are implemented across multiple or parallel general-purpose computers, then the general-purpose computer of this Figure is intended to represent each of those multiple general-purpose computers. Furthermore, one or more hardware processors can be utilized in supporting a virtualized or shared computing environment. The virtualized computing environment may support one or more virtual machines representing computers, servers, or other computing devices. In such virtualized virtual machines, hardware components such as hardware processors and computer-readable storage devices may be virtualized or logically represented.
It should be noted that the present disclosure can be implemented in software and/or in a combination of software and hardware, e.g., using application specific integrated circuits (ASIC), a programmable logic array (PLA), including a field-programmable gate array (FPGA), or a state machine deployed on a hardware device, a general purpose computer or any other hardware equivalents, e.g., computer readable instructions pertaining to the method(s) discussed above can be used to configure a hardware processor to perform the steps, functions and/or operations of the above disclosed method(s). In one embodiment, instructions and data for the present module or process 405 for determining entity rankings of entities associated with production of media programs and providing a recommendation based upon the entity rankings (e.g., a software program comprising computer-executable instructions) can be loaded into memory 604 and executed by hardware processor element 602 to implement the steps, functions or operations as discussed above in connection with the example method 500. Furthermore, when a hardware processor executes instructions to perform “operations”, this could include the hardware processor performing the operations directly and/or facilitating, directing, or cooperating with another hardware device or component (e.g., a co-processor and the like) to perform the operations.
The processor executing the computer readable or software instructions relating to the above described method(s) can be perceived as a programmed processor or a specialized processor. As such, the present module 605 for determining entity rankings of entities associated with production of media programs and providing a recommendation based upon the entity rankings (including associated data structures) of the present disclosure can be stored on a tangible or physical (broadly non-transitory) computer-readable storage device or medium, e.g., volatile memory, non-volatile memory, ROM memory, RAM memory, magnetic or optical drive, device or diskette and the like. More specifically, the computer-readable storage device may comprise any physical devices that provide the ability to store information such as data and/or instructions to be accessed by a processor or a computing device such as a computer or an application server.
While various embodiments have been described above, it should be understood that they have been presented by way of example only, and not limitation. Thus, the breadth and scope of a preferred embodiment should not be limited by any of the above-described example embodiments, but should be defined only in accordance with the following claims and their equivalents.
Claims
1. A device comprising:
- a processor; and
- a computer-readable medium storing instructions which, when executed by the processor, cause the processor to perform operations, the operations comprising: receiving a data set identifying at least one media program presented via a media device; creating a preference vector comprising a plurality of fields corresponding to a plurality of content attributes, wherein the creating the preference vector comprises generating preference vector entries in fields of the plurality of fields that correspond to content attributes associated with the at least one media program presented via the media device, wherein each of the preference vector entries comprises a playback duration of one of the at least one media program presented via the media device and a time period of the one of the at least one media program presented via the media device; creating a media entity matrix comprising entity vectors for a plurality of entities associated with a production of a plurality of media programs, wherein each entity vector comprises the plurality of fields corresponding to the plurality of content attributes, wherein the creating the media entity matrix comprises, for each entity vector for each entity of the plurality of entities, generating matrix entries in fields of the plurality of fields that correspond to content attributes associated with at least one media program associated with the each entity, wherein each matrix entry comprises a time period of one of the at least one media program associated with the each entity and a score of the one of the at least one media program associated with the each entity, wherein the score is weighted by an epoch factor that is based upon a time span that is associated with the at least one media program presented via the media device; determining entity rankings based upon dot products between the preference vector and the entity vectors of the media entity matrix; and providing a recommendation based upon the entity rankings.
2. The device of claim 1, wherein the creating the media entity matrix further comprises, for each entity vector for each entity of the plurality of entities:
- summing scores of matrix entries within the fields of the plurality of fields to generate cumulative scores for the fields of the plurality of fields; and
- normalizing the cumulative scores.
3. The device of claim 1, wherein the operations further comprise:
- receiving a media program data set that includes a plurality of media records for a plurality of media programs, the plurality of media programs including the at least one media program presented via the media device and the at least one media program associated with the each entity, each media record of the plurality of media records including: a set of one or more content attributes associated with one of the plurality of media programs, a set of one or more entities associated with the one of the plurality of media programs, a time period of the one of the plurality of media programs, and a score for the one of the plurality of media programs.
4. The device of claim 3, wherein the creating the preference vector comprises:
- retrieving at least one media record from the media program data set associated with the at least one media program;
- retrieving the content attributes from the at least one media record; and
- creating the preference vector entries in the fields of the plurality of fields of the preference vector corresponding to the content attributes, wherein for each media program of the at least one media program a preference vector entry is created in one of the plurality of fields of the preference vector when a content attribute from the media record for the media program corresponds to the one of the plurality of fields.
5. The device of claim 4, wherein each field of the plurality of fields of the preference vector may have zero preference vector entries, one preference vector entry, or more than one preference vector entry.
6. The device of claim 3, wherein the creating the media entity matrix comprises, for each entity vector for each entity of the plurality of entities:
- determining, from the media program data set, the at least one media program associated with the each entity; and
- determining, from the media program data set, the content attributes associated with the at least one media program associated with the each entity.
7. The device of claim 6, wherein the time period of the one of the at least one media program associated with the each entity and the score of the one of the at least one media program associated with the each entity are determined from the media program data set.
8. The device of claim 1, wherein the plurality of media programs comprises a video program, wherein the each entity of the plurality of entities comprises: a cast member, a director, a production company, a composer, a writer, a host, a narrator, or an illustrator.
9. The device of claim 1, wherein the plurality of media programs comprises audio programs, wherein the each entity of the plurality of entities comprises: a musician, a performer, a songwriter, a singer, a band, a band member, a record label, a production company, a narrator, a reporter, or a host.
10. The device of claim 1, wherein the time span comprises a range of years based upon a mean of the time periods of the at least one media program presented via the media device and a standard deviation.
11. The device of claim 10, wherein for each entity vector for each entity of the plurality of entities the matrix entries are weighted by the epoch factor by multiplying scores of the matrix entries by the epoch factor, wherein for each of the matrix entries, the epoch factor is a value of one when the time period of the matrix entry is within the range of years, and when the time period of the matrix entry is not within the range of years, the epoch factor is a value calculated by raising a distribution factor to a power comprising a difference between a terminal year of the range of years and the time period of the matrix entry.
12. The device of claim 11, wherein the distribution factor comprises a value of 0.9.
13. The device of claim 1, wherein the recommendation includes a recommended entity based upon the entity rankings.
14. The device of claim 1, wherein the recommendation includes a recommended media program that is associated with a recommended entity based upon the entity rankings.
15. The device of claim 1, wherein the creating the preference vector further comprises:
- summing playback durations of preference vector entries within the fields of the plurality of fields of the preference vector to generate cumulative playback durations; and
- normalizing the cumulative playback durations.
16. The device of claim 15, wherein the playback durations are consumption mode weighted prior to the summing.
17. The device of claim 16, wherein the normalizing comprises sum normalizing.
18. The device of claim 1, wherein the media device comprises a set top box or a television, wherein the providing the recommendation comprises transmitting the recommendation to the media device.
19. A non-transitory computer-readable medium storing a plurality of instructions which, when executed by a processor, cause the processor to perform operations, the operations comprising:
- receiving a data set identifying at least one media program presented via a media device;
- creating a preference vector comprising a plurality of fields corresponding to a plurality of content attributes, wherein the creating the preference vector comprises generating preference vector entries in fields of the plurality of fields that correspond to content attributes associated with the at least one media program presented via the media device, wherein each of the preference vector entries comprises a playback duration of one of the at least one media program presented via the media device and a time period of the one of the at least one media program presented via the media device;
- creating a media entity matrix comprising entity vectors for a plurality of entities associated with a production of a plurality of media programs, wherein each entity vector comprises the plurality of fields corresponding to the plurality of content attributes, wherein the creating the media entity matrix comprises, for each entity vector for each entity of the plurality of entities, generating matrix entries in fields of the plurality of fields that correspond to content attributes associated with at least one media program associated with the each entity, wherein each matrix entry comprises a time period of one of the at least one media program associated with the each entity and a score of the one of the at least one media program associated with the each entity, wherein the score is weighted by an epoch factor that is based upon a time span that is associated with the at least one media program presented via the media device;
- determining entity rankings based upon dot products between the preference vector and the entity vectors of the media entity matrix; and
- providing a recommendation based upon the entity rankings.
20. A method comprising:
- receiving, by a processor, a data set identifying at least one media program presented via a media device;
- creating, by the processor, a preference vector comprising a plurality of fields corresponding to a plurality of content attributes, wherein the creating the preference vector comprises generating preference vector entries in fields of the plurality of fields that correspond to content attributes associated with the at least one media program presented via the media device, wherein each of the preference vector entries comprises a playback duration of one of the at least one media program presented via the media device and a time period of the one of the at least one media program presented via the media device;
- creating, by the processor, a media entity matrix comprising entity vectors for a plurality of entities associated with a production of a plurality of media programs, wherein each entity vector comprises the plurality of fields corresponding to the plurality of content attributes, wherein the creating the media entity matrix comprises, for each entity vector for each entity of the plurality of entities, generating matrix entries in fields of the plurality of fields that correspond to content attributes associated with at least one media program associated with the each entity, wherein each matrix entry comprises a time period of one of the at least one media program associated with the each entity and a score of the one of the at least one media program associated with the each entity, wherein the score is weighted by an epoch factor that is based upon a time span that is associated with the at least one media program presented via the media device;
- determining, by the processor, entity rankings based upon dot products between the preference vector and the entity vectors of the media entity matrix; and
- providing, by the processor, a recommendation based upon the entity rankings.
5483278 | January 9, 1996 | Strubbe et al. |
5583763 | December 10, 1996 | Atcheson et al. |
6438579 | August 20, 2002 | Hosken |
6446261 | September 3, 2002 | Rosser |
6545209 | April 8, 2003 | Flannery et al. |
7434244 | October 7, 2008 | Popov et al. |
7840986 | November 23, 2010 | Ali et al. |
7853600 | December 14, 2010 | Herz et al. |
8204883 | June 19, 2012 | Smith |
8266157 | September 11, 2012 | Carmel et al. |
8301692 | October 30, 2012 | Hamaker |
8805851 | August 12, 2014 | Koike et al. |
8843965 | September 23, 2014 | Kurapati |
8990403 | March 24, 2015 | Park et al. |
8996529 | March 31, 2015 | Gross et al. |
9110955 | August 18, 2015 | Bernhardsson |
9215423 | December 15, 2015 | Kimble et al. |
9219736 | December 22, 2015 | Lewis |
9454580 | September 27, 2016 | Nice |
9558501 | January 31, 2017 | Sakamoto et al. |
9691035 | June 27, 2017 | Sandler |
10713702 | July 14, 2020 | Langdon |
20050165782 | July 28, 2005 | Yamamoto |
20060074861 | April 6, 2006 | Wilensky |
20080215565 | September 4, 2008 | Sun et al. |
20090138457 | May 28, 2009 | Askey |
20090222857 | September 3, 2009 | Nagano |
20100251305 | September 30, 2010 | Kimble et al. |
20100262570 | October 14, 2010 | Tateno et al. |
20110125763 | May 26, 2011 | Takanen |
20110145263 | June 16, 2011 | Sakamoto et al. |
20110191716 | August 4, 2011 | Sakamoto et al. |
20120030020 | February 2, 2012 | Bucak et al. |
20120054278 | March 1, 2012 | Taleb et al. |
20120330444 | December 27, 2012 | Sloan et al. |
20130073983 | March 21, 2013 | Rasmussen et al. |
20130110848 | May 2, 2013 | Svendsen |
20130178962 | July 11, 2013 | DiMaria et al. |
20130179786 | July 11, 2013 | Bolton, Jr. |
20130268557 | October 10, 2013 | Pickersgill et al. |
20140040274 | February 6, 2014 | Aravamudan |
20140122590 | May 1, 2014 | Svendsen |
20140280140 | September 18, 2014 | Ling et al. |
20140280223 | September 18, 2014 | Ram |
20140331264 | November 6, 2014 | Schneiderman et al. |
20140351207 | November 27, 2014 | Saito et al. |
20140358898 | December 4, 2014 | Lehtiniemi |
20150019640 | January 15, 2015 | Li et al. |
20150046951 | February 12, 2015 | Arunachalam et al. |
20150052003 | February 19, 2015 | Tang et al. |
20150112801 | April 23, 2015 | Nice |
20150134653 | May 14, 2015 | Bayer et al. |
20150142785 | May 21, 2015 | Roberts et al. |
20150178379 | June 25, 2015 | Yamamoto et al. |
20150193548 | July 9, 2015 | Nice et al. |
20150205511 | July 23, 2015 | Vinna |
20150234457 | August 20, 2015 | Kempinski |
20150309844 | October 29, 2015 | Lowe et al. |
20150379021 | December 31, 2015 | Kuper |
20160004699 | January 7, 2016 | Liu et al. |
20160042076 | February 11, 2016 | Huang et al. |
20160071182 | March 10, 2016 | Nogues |
20160098640 | April 7, 2016 | Su |
20160112761 | April 21, 2016 | Venkataraman |
20160147767 | May 26, 2016 | Manning |
20160188725 | June 30, 2016 | Wang et al. |
20160196580 | July 7, 2016 | Hong |
20160212484 | July 21, 2016 | Kimble et al. |
20170031920 | February 2, 2017 | Manning |
20170083522 | March 23, 2017 | Somekh |
20170094332 | March 30, 2017 | Thomas |
20170193390 | July 6, 2017 | Weston |
20170206549 | July 20, 2017 | Chaudhuri et al. |
20170337481 | November 23, 2017 | Trouillon et al. |
20180089311 | March 29, 2018 | Soni et al. |
20180101531 | April 12, 2018 | Hsu |
20180150897 | May 31, 2018 | Wang |
103167330 | June 2013 | CN |
2013109427 | June 2013 | JP |
2015094311 | June 2015 | WO |
2016114653 | July 2016 | WO |
- Bi et al., “Learning to Recommend Related Entities to Search Users,” WSDM' 15, Feb. 2-6, 2015, Shanghai, China, pp. 139-148. (Year: 2015).
- Surcouf et al., “Application of Kolmogorov Complexity to TV Content Similarity,” An IP.com Prior Art Database Technical Disclosure, Aug. 19, 2014, pp. 1-8. (Year: 2014).
- Choi, Sang-Min “A Movie Recommendation Algorithm Based on Genre Correlations”. Jul. 2012. pp. 1-8.
- Wang, Zan “An Improved Collaborative Movie Recommendation System Using Computational Intelligence”. 2014. pp. 1-9.
- Bu et al., “Music Recommendation by Unified Hypergraph: Combining Social Media Information and Music Content”, in Proceedings of the 18th ACM International Conference on Multimedia, Firenze, Itlay, Oct. 25-29, 2010, pp. 391-400. (Year: 2010).
- Demartini et al., “A Vector Space Model for Ranking Entities and Its Application to expert Search”, M. Boughanem et al. (Eds.): ECIR 2009, LNCS 5478, pp. 189-201, 2009. (Year: 2009).
Type: Grant
Filed: Mar 4, 2019
Date of Patent: Aug 24, 2021
Patent Publication Number: 20190197051
Assignee: THE DIRECTV GROUP, INC. (El Segundo, CA)
Inventors: Raymond Hsu (Irvine, CA), Ashok Sahu (Kirkland, WA)
Primary Examiner: Phuong Thao Cao
Application Number: 16/292,063
International Classification: G06F 16/48 (20190101); G06F 17/16 (20060101);