Method, medium, and system for providing a recommendation of a media item

A processor retrieves, from a database, an identifier of a first media item rated by a target user, user identifiers of users having provided media item ratings for the first media item, and the media item ratings provided by the users, correspondingly. Each of the media item ratings is randomized, resulting in randomized media item ratings. A user identifier corresponding to a maximum of the randomized media item ratings is selected from the user identifiers. Additional media item ratings associated with the selected user identifier are retrieved from the database. Each of the additional media item ratings are randomized, resulting in additional randomized media item ratings. An identifier of a recommended media item corresponding to a maximum of the randomized media item ratings and the additional randomized media item ratings is selected. Metadata associated with the recommended media item is transmitted to a user device over a network.

BACKGROUND

Example aspects of the present invention generally relate to media item recommendations, and more particularly to systems, methods, and computer program products for providing a recommendation of a media item.

2. Related Art

The digitization of music, movies, and games, as well as the improvement in electronic delivery techniques, have changed the way consumers experience such media content. Consumers can download digital music, movies, or games via the Internet with the click of a mouse, and can enjoy them at their convenience. Consumers can also have media content streamed from a Web site to a consumer device, such as a computer, a television, or portable device, upon demand.

In addition, the variety of media content available to consumers today is wider than ever. Consumers can browse vast collections of music, movies, and games via Internet or television browsers to identify a particular media item to download or stream. Locating desired media items within these collections, however, can be difficult given their enormity.

To avoid the need for consumers to browse these vast collections, content providers provide consumers with recommendations of media items. Recommending media items to consumers promotes the discovery of new media items and increases consumer satisfaction with the content provider.

One conventional approach to providing consumers with recommendations of media items has been to compute an explicit numerical similarity for each pair of media items based on underlying media item attributes. Media items are then recommended based on the computed similarities. This approach, however, requires substantial computing resources and is inefficient for vast collections of media items.

BRIEF DESCRIPTION

Given the foregoing, it would be useful to have an efficient system for providing recommendations of media items.

The example embodiments described herein meet the above-identified needs by providing systems, methods, and computer program products for providing a recommendation of a media item. The system includes a processor that retrieves, from a database, an identifier of a first media item rated by a target user, user identifiers of users having provided media item ratings for the first media item, and the media item ratings provided by the users, correspondingly. Each of the media item ratings is randomized, resulting in randomized media item ratings. A user identifier corresponding to a maximum of the randomized media item ratings is selected from the user identifiers. Additional media item ratings associated with the selected user identifier are retrieved from the database. Each of the additional media item ratings are randomized, resulting in additional randomized media item ratings. An identifier of a recommended media item corresponding to a maximum of the randomized media item ratings and the additional randomized media item ratings is selected. Metadata associated with the recommended media item is transmitted to a user device over a network.

In another aspect, the processor identifies a plurality of media item recommendations for the target user, and computes frequencies of occurrence for each identified media item recommendation, and transmits, to the user device over the network, a media item recommendation corresponding to a maximum of the frequencies of occurrence.

In yet another aspect, randomizing media item ratings includes at least one of adding degrees of randomization to the media item ratings, subtracting degrees of randomization from the media item ratings, multiplying degrees of randomization by the media item ratings, and dividing degrees of randomization by the media item ratings, correspondingly, wherein the degrees of randomization include at least one of an integer and a real-valued number.

Further features and advantages, as well as the structure and operation, of various example embodiments of the present invention are described in detail below with reference to the accompanying drawings.

DETAILED DESCRIPTION

Some terms are defined below in alphabetical order for easy reference. These terms are not rigidly restricted to these definitions. A term may be further defined by its use in other sections of this description.

“Database” means a collection of data organized in such a way that a computer program may quickly select desired pieces of the data. A database is an electronic filing system. In some implementations, the term “database” may be used as shorthand for “database management system”.

“Degree of randomization” generally means a numerical value indicating an extent to which an original numerical value (e.g., a media item rating, a media item attribute strength, etc.) has been randomized. Randomization is described in further detail below.

“Device” means software, hardware, or a combination thereof. A device may sometimes be referred to as an apparatus. Examples of a device include without limitation a software application such as Microsoft Word™, a laptop computer, a database, a server, a display, a computer mouse, and a hard disk. Each device is configured to carry out one or more steps of the method of storing an internal identifier in metadata.

“Link” means an association between two or more objects or elements in memory. A link can be, for example, a pointer or a variable that contains the address of a location in memory, where the location is the starting point of an allocated object or the element of an array. The memory may be located on a database or a database system. “Linking” means associating (e.g., by pointing to) objects in memory.

“Media item” means any item of media content, such as a song, a movie, a game, a television show, and music or videos of various types. A media item can be recorded in many different formats, and may have many different versions.

“Media item attribute” means any characteristic of a media item. Each media item attribute corresponds to a particular media item attribute category.

Other media item attribute categories and media item attributes are contemplated and are within the scope of the embodiments described herein.

“Media item attribute strength” means a numerical value assigned to a media item to indicate the degree to which the media item is characterized by a particular media item attribute. Media item attribute strengths may be integers, real-valued numbers, and/or the like. Example media item attribute strengths include strengths from one (the media item is not characterized by the media item attribute at all) to five (the media item is characterized by the media item attribute very much).

“Media item rating” means a numerical value indicating the degree to which a user enjoys a particular media item. Media item ratings may be explicitly assigned by a user to a media item. For example, users can rate media items on a scale from one (the user did not enjoy the media item at all) to five (the user enjoyed the media item very much). Media item ratings may also be implicitly computed by aggregating the interaction of a user with media items on a Web site. For example, the fact that a user selected to skip playback of a particular media item may be used to compute a low media item rating for that media item.

“Metadata” generally means data that describes data. More particularly, metadata may be used to describe the contents of digital recordings. Such metadata may include, for example, a track name, a song name, artist information (e.g., name, birth date, discography), album information (e.g., album title, review, track listing, sound samples), relational information (e.g., similar artists and albums, genre) and/or other types of supplemental information such as advertisements, links or programs (e.g., software applications), and related images. Metadata may also include a program guide listing of the songs or other audio content associated with multimedia content. Conventional optical discs (e.g., CDs, DVDs, Blu-ray Discs) do not typically contain metadata. Metadata may be associated with a digital recording (e.g., song, album, movie, or video) after the digital recording has been ripped from an optical disc, converted to another digital audio format and stored on a hard drive.

“Network” means a connection between any two or more computers, which permits the transmission of data. A network may be any combination of networks, including without limitation the Internet, a local area network, a wide area network, a wireless network, and a cellular network.

“Randomization” generally means a procedure of randomly modifying an original numerical value, such as a media item rating, a media item attribute strength, and the like, resulting in a randomized numerical value. An example randomization procedure includes adding a degree of randomization, such as a number randomly selected from a finite range of numbers, to an original numerical value. Other example randomization procedures include performing other arithmetical calculations, such as subtraction, multiplication, or division, on random numbers and original numerical values. Randomization is described in further detail below.

“Server” means a software application that provides services to other computer programs (and their users), in the same or another computer. A server may also refer to the physical computer that has been set aside to run a specific server application. For example, when the software Apache HTTP Server is used as the Web server for a company's Web site, the computer running Apache is also called the Web server. Server applications can be divided among server computers over an extreme range, depending upon the workload.

“Software” means a computer program that is written in a programming language that may be used by one of ordinary skill in the art. The programming language chosen should be compatible with the computer on which the software application is to be executed and, in particular, with the operating system of that computer. Examples of suitable programming languages include without limitation Object, Pascal, C, C++ and Java. Further, the functions of some embodiments, when described as a series of steps for a method, could be implemented as a series of software instructions for being operated by a processor, such that the embodiments could be implemented as software, hardware, or a combination thereof. Computer-readable media are discussed in more detail in a separate section below.

“Song” means a musical composition. A song is typically recorded onto a track by a record label (e.g., recording company). A song may have many different versions, for example, a radio version and an extended version.

“System” means a device or multiple coupled devices. A device is defined above.

“User” means a consumer, client, and/or client device in a marketplace of products and/or services.

“User device” (e.g., a client, a client device, a user computer) is a hardware system, a software operating system and/or one or more software application programs. A user device may refer to a single computer or to a network of interacting computers. A user device may be the client part of a client-server architecture. A user device typically relies on a server to perform some operations. Examples of a user device include without limitation a television, a CD player, a DVD player, a Blu-ray Disc player, a personal media device, a portable media player, an iPod™, a Zoom Player, a laptop computer, a palmtop computer, a smart phone, a cell phone, a mobile phone, an MP3 player, a digital audio recorder, a digital video recorder, an IBM-type personal computer (PC) having an operating system such as Microsoft Windows™, an Apple™ computer having an operating system such as MAC-OS, hardware having a JAVA-OS operating system, and a Sun Microsystems Workstation having a UNIX operating system.

“Web browser” means any software program which can display text, graphics, or both, from Web pages on Web sites. Examples of a Web browser include without limitation Mozilla Firefox™ and Microsoft Internet Explorer™

“Web page” means any documents written in mark-up language including without limitation HTML (hypertext mark-up language) or VRML (virtual reality modeling language), dynamic HTML, XML (extended mark-up language) or related computer languages thereof, as well as to any collection of such documents reachable through one specific Internet address or at one specific Web site, or any document obtainable through a particular URL (Uniform Resource Locator).

“Web server” refers to a computer or other electronic device which is capable of serving at least one Web page to a Web browser. An example of a Web server is a Yahoo™ Web server.

“Web site” means at least one Web page, and more commonly a plurality of Web pages, virtually coupled to form a coherent group.

Systems, methods, apparatus and computer-readable media are provided for recommending a media item. In one aspect, a processor retrieves, from a database, an identifier of a first media item rated by a target user, user identifiers of users having provided media item ratings for the first media item, and the media item ratings provided by the users, correspondingly. Each of the media item ratings is randomized, resulting in randomized media item ratings. A user identifier corresponding to a maximum of the randomized media item ratings is selected from the user identifiers. Additional media item ratings associated with the selected user identifier are retrieved from the database. Each of the additional media item ratings are randomized, resulting in additional randomized media item ratings. An identifier of a recommended media item corresponding to a maximum of the randomized media item ratings and the additional randomized media item ratings is selected. Metadata associated with the recommended media item is transmitted to a user device over a network.

In another aspect, the processor identifies a plurality of media item recommendations for the target user, and computes frequencies of occurrence for each identified media item recommendation, and transmits, to the user device over the network, a media item recommendation corresponding to a maximum of the frequencies of occurrence.

In yet another aspect, randomizing media item ratings includes at least one of adding degrees of randomization to the media item ratings, subtracting degrees of randomization from the media item ratings, multiplying degrees of randomization by the media item ratings, and dividing degrees of randomization by the media item ratings, correspondingly, wherein the degrees of randomization include at least one of an integer and a real-valued number.

Exemplary aspects and embodiments are now described in more detail herein in terms of a recommendation device that executes program code to identify media item recommendations and provide the media item recommendations to a user device over a network. This is for convenience only and is not intended to limit the application of the present description. In fact, after reading the following description, it will be apparent to one skilled in the relevant art(s) how to implement the following invention in alternative embodiments such as, for example, by using a recommendation device that is incorporated within a content source to audibly and/or visibly reproduce a recommended media item for a user.

III. System Architecture

FIG. 1is a system diagram of an exemplary media item recommendation system100in which some embodiments are implemented. The system100includes a recommendation device101, a network109, a user device110, and, optionally, a content source111.

The recommendation device101includes a processor107, which is communicatively coupled through a communication infrastructure (not shown) to a communications interface108, a memory106, and a storage device102. In general, the recommendation device101provides the user device110with recommendations of media items over the network109. As described in further detail below with respect toFIGS. 3 and 5, the processor107executes instructions to identify a media item identifier stored in the storage device102and recommend the corresponding media item to a user of the user device110. In some embodiments, the processor107uses the memory106as temporary storage during execution of the instructions.

The storage device102(also sometimes referred to as “secondary memory”) includes a user-item database103and an item-attribute database104.

The user-item database103is a collection of data representing users, media items, and the associations or links between users and media items. In particular, the user-item database103stores user profiles, which include user identifiers, a list of media items rated by each user and the corresponding media item ratings. The information stored in the user-item database103can be represented as a user-item diagram, which is described in further detail below with respect toFIG. 2.

Media item ratings, which are defined above, may be explicitly or implicitly determined. In an exemplary embodiment, media item ratings are selected by users from a scale, such as a scale from one (denoting that the user does not enjoy the media item at all) to five (denoting that the user enjoys the media item very much). Users input media item ratings into the user-item database203via the user device110over the network109. Alternatively, or in addition, the processor107retrieves media item ratings from a commercially available database of media item ratings and stores them in the user-item database203. In general, the processor107identifies a media item to recommend to a particular user by using data within the user-item database103, as described in further detail below in connection withFIGS. 2 and 3.

The item-attribute database104is a collection of data representing media items, media item attributes, and the associations or links between media items and media item attributes. More particularly, the item-attribute database104includes media item profiles corresponding to a particular media item. Each media item profile associates a unique media item identifier with its media item attribute categories, media item attributes, and numerical media item attribute strengths assigned to each media item attribute. The information stored in the item-attribute database104can be represented by an item-attribute diagram, which is described in further detail below with respect toFIG. 4. In general, the processor107uses the item-attribute database104to identify a media item to recommend to a user according to a particular media item attribute, as described in further detail below in connection withFIG. 5.

The user-item database103and the item-attribute database104may be combined into a single database or divided into multiple distinct databases and still be within the scope of the embodiments described herein.

The storage device102may also include, for example, a hard disk drive and/or a removable storage drive, representing a disk drive, a magnetic tape drive, an optical disk drive, etc. As will be appreciated, the storage device102may include a computer-readable storage medium having stored thereon computer software and/or data.

In alternative embodiments, the storage device102may include other similar devices for allowing computer programs or other instructions to be loaded into the recommendation device101. Such devices may include, for example, a removable storage unit and an interface, a program cartridge and cartridge interface such as that found in video game devices, a removable memory chip such as an erasable programmable read only memory (EPROM), or programmable read only memory (PROM) and associated socket, and other removable storage units and interfaces, which allow software and data to be transferred from the removable storage unit to the recommendation device101.

The communications interface108provides the recommendation device101with connectivity to the network109, which may be a proprietary network, the Internet, or the like. In particular, the communications interface108enables the recommendation device101to communicate recommendations of media items to the user device110via the network109. The communications interface108also allows software and data to be transferred between the recommendation device101and external devices. Examples of the communications interface108may include a modem, a network interface such as an Ethernet card, a communications port, a Personal Computer Memory Card International Association (PCMCIA) slot and card, etc. Software and data transferred via the communications interface108are in the form of signals which may be electronic, electromagnetic, optical, or other signals capable of being received by the communications interface108. These signals are provided to and/or from the communications interface108via a communications path, such as a channel. This channel carries signals and may be implemented by using wire, cable, fiber optics, a telephone line, a cellular link, an RF link, and/or other suitable communications channels.

The user device110is a device having a user-interface through which recommendation of media items are presented to a user. Examples of the user device110include a personal computer, a laptop computer, a television, a portable media player, etc. A user also can interface with the user device110to request recommendations from the recommendation device101, input media item ratings over the network109, or interact with any components of the system100, etc.

In some embodiments, the user device110audibly and/or visibly reproduces media content for a user. In these embodiments, the media items recommended by the recommendation device101can be provided to the user device110by the content source111.

In general, collaborative filtering is performed by evaluating media item ratings obtained from a group of reviewers and using the ratings to determine a media item to recommend to a target user. In particular, a user-item database is queried to identify media items having media item ratings input by other users with preferences similar to the preferences of the target user, as described in further detail below with respect toFIGS. 2 and 3.

FIG. 2is a user-item diagram200illustrating information stored in a user-item database, such as the user-item database103. As described above with respect toFIG. 1, the user-item database103includes user profiles for each user, with each user profile having a corresponding unique user identifier. An example of such a user profile is shown below in Table 1.

As described in further detail below with respect toFIG. 3, the solid-lined links in the user-item diagram200represent links to media item identifiers and user identifiers selected by the processor107during the implementation of procedure300. The long-dashed links in the user-item diagram200represent links to media item identifiers and user identifiers retrieved, but not selected, by the processor107during the implementation of procedure300. The short-dashed links in the user-item diagram200represent links to media item identifiers and user identifiers that have not been retrieved by the processor107during the implementation of procedure300.

Adjacent to the links in the user-item diagram200are numbers that represent the media item ratings203a,203b,203c,203d,203e,203f,203g,203h,203i,203j,203k,203l,203m,203n,203o,203p,203q,203r,203s,203t,203u,203v,20w,203x,203y,203z,203aa(collectively203). The media item ratings203illustrated in the user-item diagram200include degrees of randomization, which are described in further detail below.

FIG. 3is a flowchart diagram illustrating an exemplary procedure300for providing a media item recommendation by using a user-item diagram, such as the user-item diagram200.

The user201a, which is also sometimes referred to as a target user, is the user for which the recommendation device101provides a media item recommendation. Referring toFIGS. 1-3, initially, at block301, the processor107retrieves a list of all the identifiers of media items202aand202bthat have been rated by the target user201aas well as the corresponding media item ratings203aand203bthe target user201ahas assigned to each rated media item202aand202b(also sometimes collectively referred to as “target user preferences”).

At block302, the processor107randomizes each media item rating by adding a degree of randomization, which, in an exemplary embodiment, is a number randomly selected from a finite range of numbers and added to the user-provided media item ratings. An example finite range from which the random number is selected is a range from zero to fifty percent of the highest media item rating (e.g., from zero to two for a scale of one to five). The example media item ratings203shown inFIG. 2are selected by users from a scale of one to five and include degrees of randomization (not shown) ranging from zero to two. Thus, the randomized media item ratings203ofFIG. 2range from one to seven.

Media item rating inaccuracies, which may sometimes be referred to as a margin of error, result from various factors such as mistaken or unintentional media item ratings, mood swings of users, the lack of granularity of the discrete rating scale, etc. In the case of media item ratings implicitly computed from user interactions with computer systems, the margin of error can be particularly large. The effects of media item rating inaccuracies are reduced by the randomization. In addition, because the procedure300proceeds on the path having the highest media item rating, randomizing the media item ratings ensures wider sampling over paths in the user-item diagram200, particularly paths having high media item ratings but slightly less than the highest possible media item rating. Randomization also enables the procedure300to encounter media items that do not have the highest media item ratings, but which may nonetheless lead to other highly rated media items that provide good recommendations. Additionally, randomization promotes a wide variety of media item recommendations. Without randomization, media items which have not been rated very highly would rarely be recommended. With randomization, however, media items which have not been highly rated may become more likely to be recommended after a degree of randomization has been added. For example, if users rated media items on a discrete scale from one to five, most often only media items having ratings of five would be recommended. If those media items were randomized, however, some media items having ratings of three or four may become ratings of five after being randomized, thus increasing their chance of being recommended.

For illustrative purposes, randomization uses the same units as the ratings. Other types of rating factors, however, can be added to the ratings as well by using, for example, normalization or constant factors, which need not be linear.

At block303, the processor107selects, from the list of media items202aand202brated by the target user201a, an identifier of the media item202ato which the target user201ahas assigned the highest (randomized) media item rating203a, which is seven in this example. The processor107thus identifies a media item202athat the target user201aenjoys very much.

At block304, the processor107retrieves identifiers of all the users201b,201c,201d(other than the identifier of the target user201a) who also have rated the media item202athat was selected at block303.

At block305, the processor107randomizes each of the media item ratings203cand203dthat the users201band201c, respectively, have assigned to the media item202a. Randomization is described in further detail above with respect to block302. As described above, the media item ratings203cand203ddepicted inFIG. 2, which were selected by users201band201cfrom a scale of one to five, have been randomized to a scale of one to seven.

At block306, the processor107selects, from a list of all user identifiers that have been retrieved thus far (other than any user identifier that has already been selected), an identifier of the user201bcorresponding to the highest randomized media item rating203c, which is seven in this example. In this way, the processor107links the target user201awith the user201bhaving similar media item preferences, e.g., that has assigned a high media item rating to the media item202a, which the target user201aalso has rated highly.

At block307, the processor107retrieves identifiers of all the other media items202cand202dthat have been rated by the user201bselected at block306, as well as the media item ratings203fand203gthat user201bhas assigned to the media items202cand202d, respectively.

At block308, the processor107randomizes each media item rating203fand203g, as described in further detail above with respect to block302. As described above, the media item ratings203fand203gdepicted inFIG. 2, which were selected by user201bfrom a scale of one to five, have been randomized to a scale of one to seven.

At block309, the processor107selects, from a list of media item identifiers that have been retrieved thus far (other than any media item identifiers that has already been selected), an identifier of the media item202dcorresponding to the highest randomized media item rating203g, which is five in this example.

In another embodiment, at block306, the processor107selects, from a list of user identifiers retrieved at block304, an identifier of the user201bcorresponding to the highest randomized media item rating203c. In addition, or alternatively, at block309, the processor107selects, from a list of media item identifiers retrieved at block307, an identifier of the media item202dcorresponding to the highest randomized media item rating203g.

1. Recommendation Depth

Recommendation depth is the number of iterations of blocks304,305,306,307,308,309that are performed. The number of steps defines the depth of the process. The media item202drepresents an output corresponding to one iteration of blocks304through309, e.g., a recommendation depth of one. At block310, the processor107determines whether to step deeper into the user-item diagram200to recommend an additional media item202. With each additional increment of recommendation depth, an additional media item is potentially recommended to the target user201a. The higher the recommendation depth, the higher the likelihood that media item(s) recommended to the target user201awas previously unknown to the target user201a. The recommendation depth thus affects the discoverability of new media items through recommendation.

In one embodiment, once a user201or media item202of the user-item diagram200has been selected by the processor107during a given iteration of procedure300, the processor107cannot select that user201or media item202until another iteration of procedure300is initiated. In this way, redundant recommendations are avoided.

If the processor107determines at block310not to step deeper into the user-item diagram200, then the processor107communicates a recommendation of the media item202dto the target user201avia the user device110over the network109and the procedure300ends. Alternatively, the processor107can communicate to the user device110recommendations of all the media items202c,202d,202e,202f,202g,202h,202i,202j,202k,202l,202m,202nencountered during procedure300(excluding the media items202aand202brated by the target user201a).

If the processor determines at block310to step deeper into the user-item diagram200, then the processor107presents a recommendation of the media item202dto the target user201aand then repeats the procedures at blocks304through309to recommend an additional media item to the target user201a.

In one embodiment, the processor107repeatedly performs the procedures of blocks304through309and outputs a subset of the media items selected by the processor107across multiple performances of the procedure of block309. For example, the processor107performs the procedures of blocks304through309ten times resulting in ten potential media item recommendations, randomly recommends five out of the ten media items, and disregards the other five media items.

At block311, the processor107determines whether to perform additional iterations of the procedure300for the target user201ato identify additional media item recommendations and/or to improve the accuracy of the recommendations. If the processor107determines at block311not to perform additional iterations of the procedure300for the target user201athen the procedure300ends.

If the processor107determines at block311to perform additional iterations of the procedure300for the target user201athen the processor107repeats the procedures of blocks301,302,303,304,305,306,307,308,309,310,311to identify additional potential media item recommendations.

In one embodiment, the processor107records in the memory106identifiers of the media items selected at block309across multiple iterations of the procedure300and then determines which of the media items corresponding to the recorded identifiers to recommend to the target user201a. The processor107outputs to the user device110a recommendation of the media item203corresponding to the identifier recorded in the memory106that has the highest frequency of occurrences across the iterations.

In yet another embodiment, the processor107computes the average media item rating of each media item having an identifier recorded in the memory106and outputs to the user device110a recommendation of the media item that corresponds to the highest average media item rating.

Alternatively, the processor107computes the average media item rating of each media item having an identifier recorded in the memory106and then adds weighting factors to the average media item ratings in proportion to their frequency of occurrence across the iterations. The processor107then outputs to the user device110a recommendation of the media item that has a media item rating having the highest weighted average media item rating.

In another aspect, the processor107computes the average media item rating of each media item having an identifier recorded in the memory106and then adds weighting factors to the average media item ratings in proportion to their distance, in recommendation depth, from the target user201a. The processor107then outputs to the user device110a recommendation of the media item that has a media item rating having the highest weighted average media item rating.

In some embodiments, each user profile also includes user attributes, such as user age, user sex, user country, user region, user hometown, and/or the like. In this way, the processor107can weight item ratings as more relevant for a target user. For example, in one embodiment, each media item profile also includes a user age, and the processor107adds weighting factors to the rankings in proportion to the difference in age between the user and the target user201a. In this way, media item recommendations are provided to the target user201aby users who are close in age to the target user201a.

In other embodiments, the user profile also includes rating data, such as a date that each media item was rated, a quantity of media items that have been rated by each user, etc. In this way, the processor107can deem more recent media item ratings as more relevant than older media item ratings by, e.g., adding a weight to each media item rating that is proportional to how recent the media item rating is. In particular, in one embodiment, the user profile also includes a date of ranking for each ranking, and the processor107adds weighting factors to the rankings in proportion to how recent the ranking is. In this way, older media item ratings, which may be less relevant to the target user201a, are less likely to be relied upon for media item recommendations. The target user201ais provided with media item recommendations of media items that have been more recently rated, and thus likely are more relevant to the preferences of the target user201a.

In general, the processor107provides content-based recommendations by identifying media items having media item attributes similar to the media item attribute preferences of a target user. If the target user indicates a preference for a particular media item attribute, then the processor107recommends media items having a high media item attribute strength for that particular media item attribute, e.g., media items that are strongly characterized by that attribute.

FIG. 4is an item-attribute diagram illustrating information stored in an item-attribute database, such as the item-attribute database104. As described above with respect toFIG. 1, the item-attribute database104includes media item profiles for each media item, with each media item profile having a corresponding unique media item identifier. An example of such a media item profile is shown below in Table 2.

As described in further detail below with respect toFIG. 5, the solid-lined links in the item-attribute diagram400represent links to media item identifiers and media item attribute identifiers selected by the processor107during the implementation of procedure500. The long-dashed links in the item-attribute diagram400represent links to media item identifiers and media item attribute identifiers retrieved, but not selected, by the processor107during the implementation of procedure500. The short-dashed links in the item-attribute diagram400represent links to media item identifiers and media item attribute identifiers that have not been retrieved by the processor107during the implementation of procedure500.

Adjacent to the links in the item-attribute diagram400are numbers that represent the media item attribute strengths403a,403b,403c,403d,403e,403f,403g,403h,403i,403j,403k(collectively403). The media item attribute strengths403illustrated in the item-attribute diagram400include degrees of randomization, as described in further detail above with respect to block302ofFIG. 3.

Examples of media item attribute categories and media item attributes for movies include genre (e.g., action, animation, children and family, classics, comedy, documentary, drama, faith and spirituality, foreign, high-definition, horror, independent, musicals, romance, science fiction, television, thrillers), release date (e.g., within past six months, within past year, 1980s), etc.

Other media item attribute categories and media item attributes are contemplated and are within the scope of the embodiments described herein.

FIG. 5is a flowchart diagram illustrating an exemplary procedure500for providing a media item recommendation by using an item-attribute diagram, such as the item-attribute diagram400. In general, the processor107implements the procedure500to provide content-based recommendations by identifying media item recommendations based on the associations between media item attributes of multiple media items.

Referring toFIGS. 1,4, and5, the procedure500begins with a target media item attribute401adetermined to be preferred by a target user (not shown). In one embodiment, the target media item attribute is selected by the target user via the user device110and input into the recommendation device101over the network109. Alternatively, the target media item attribute401acan be selected at random, or selected based on a recorded history of the media items preferred by the target user. In yet another embodiment, the target media item attribute(s) can be selected as the attribute(s) linked to a media item the target user is interested in.

Users and/or professional rating personnel input media item attribute strengths for media items via the user device110over the network109. In one embodiment, the media item attribute strengths are selected on a scale of real-valued numbers or integers, such as a scale from one (denoting that the media item is not characterized by the media item attribute at all) to five (denoting that the media item is characterized by the media item attribute very much). In yet another aspect, the media item attribute strengths403a,403b,403c,403d,403e,403f,403g,403h,403i,403j,403k(collectively403) depicted inFIG. 4are derived from averages of the media item attribute strengths that have been input on a scale of one to five by multiple users for each media item-attribute pair.

At block501, the processor107retrieves identifiers of all the media items402a,402b,402cthat have a nonzero media item attribute strength403a,403b,403cfor the target media item attribute401a.

At block502, the processor107randomizes each of the media item attribute strengths403athrough403c, as discussed above in further detail with respect to block302ofFIG. 3. The example media item ratings403shown inFIG. 4were selected by users from a scale of one to five and include degrees of randomization (not shown) ranging from zero to two. Thus, the randomized media item ratings403ofFIG. 4range from one to seven.

At block503, the processor107selects an identifier of a media item according to predetermined selection criteria and outputs a recommendation of the media item to the user device110over the network109. For example, if the highest media item attribute strength is used as the predetermined selection criteria, then the processor107selects an identifier of the media item402athat corresponds to the highest of the randomized media item attribute strengths403a, which is six in this case. In this way, the processor107identifies the media item402athat is most strongly characterized by the target media item attribute401a.

Alternatively, if the target media item attribute401awas selected as being a media item attribute of a target media item (not shown), then the predetermined selection criteria may command the processor107to select an identifier of the media item having a media item attribute strength that is closest in value to the media item attribute strength of the target media item attribute401afor the target media item. In this way, the processor107identifies the media item that is most similar to the target media item, in terms of the media item attribute strength of the target media item attribute401a.

Block504represents multiple distinct embodiments. In one embodiment, after the processor107outputs to the user device110over the network109a recommendation of the media item corresponding to the identifier selected at block503, the procedure500ends.

In another embodiment, blocks501,502,503of the procedure500are repeated to output to the user device110an additional media item recommendation according to the same target media item attribute401a. In this case, at each iteration of the procedures of blocks501through503, the processor107excludes the previously recommended media items from the item-attribute diagram400to avoid redundant recommendations.

In yet a further embodiment, the procedure500proceeds to block505to provide a recommendation of a media item according to a media item attribute that is distinct from the target media item attribute401a. This procedure is sometimes also referred to as media item attribute-hopping. At block505, the processor107retrieves identifiers of all the other media item attributes (excluding the target media item attribute401a) and media item attribute strengths that correspond to the media item selected at block503. For example, if the media item identifier402awas selected at block503then the processor107retrieves all the identifiers of the media item attributes401band401cand the media item attribute strengths403dand403ethat correspond to the selected media item402a.

At block506, the processor107selects, for the media item402aselected at block503, an identifier of a media item attribute according to predetermined selection criteria. For example, if the highest media item attribute strength is used as the predetermined selection criteria, then the processor107selects an identifier of the media item attribute401bthat corresponds to the highest of the randomized media item attribute strengths403d, which is six in this case. In this way, the processor107identifies the most distinguishing media item attribute401bof the media item402a.

Alternatively, if the target media item attribute401awas selected as being a media item attribute of a target media item (not shown), then the predetermined selection criteria may command the processor107to select, at block506, an identifier of the media item attribute having a media item attribute strength that is closest in value to the media item attribute strength of that media item attribute for the target media item. In this way, the processor107identifies the media item attribute for which the media item402aselected at block503and the target media item have the most similar media item attribute strengths.

In another embodiment, at block506, the predetermined selection criteria commands the processor107to select a media item attribute identifier in the same media item attribute category as the target media item attribute401a. For example, if the target media item attribute category is genre and the target media item attribute401ais rock, then the processor107can select at block506another media item attribute identifier within the genre category, such as southern rock.

In another aspect, at block506, the predetermined selection criteria command the processor107to randomly select a media item attribute identifier. In this way, the processor107increases the variety of recommendations and promotes the discovery of new media items.

At block507, the processor107retrieves all the identifiers of media items that have a nonzero media item attribute strength for the media item attribute that was selected at block506.

At block508, the processor107randomizes, as described above with respect to block302ofFIG. 3, each of the media item attribute strengths corresponding to the media item identifiers that were retrieved at block507.

At block509, the processor107selects an identifier of a media item according to predetermined selection criteria and outputs a recommendation of the media item to the user device110over the network109. For example, if the highest media item attribute strength is used as the predetermined selection criteria, then the processor107selects an identifier of the media item402ethat corresponds to the highest of the randomized media item attribute strengths403h, which is six in this example. In this way, the processor107identifies the media item402ethat is most strongly characterized by the previous media item attribute401b.

Alternatively, the predetermined selection criteria may command the processor107to select an identifier of the media item having a media item attribute strength of the media item attribute401bthat is closest in value to the media item attribute strength403dof the media item attribute401bfor the previous media item402a. In this way, the processor107identifies the media item402ethat is most similar to the previous media item402a, in terms of the media item attribute strength of the media item attribute401bunder consideration.

Block510represents multiple distinct embodiments. In one embodiment, after the processor107outputs to the user device110over the network109a recommendation of the media item corresponding to the identifier selected at block509, the procedure500is complete. In another embodiment, blocks505,506,507,508,509of the procedure500are repeated to output an additional media item recommendation by using an additional media item attribute.

In yet another aspect, the additional iterations of the procedure500are performed for the target media item attribute401ato analyze and identify additional potential media item recommendations. In this case, the processor107records in the memory106the media item identifiers selected at blocks503and/or509, as the case may be, across multiple iterations of the procedure500and then determines which of the corresponding media items to recommend to the user device110.

In some embodiments, the processor107outputs to the user device110a recommendation of the media item having an identifier recorded in the memory106that has the highest frequency of occurrences across the iterations.

Alternatively, the processor107computes the average media item attribute strength of each media item attribute having an identifier recorded in the memory106and outputs to the user device110a recommendation of the media item based on the media item attribute that has the highest average media item attribute strength.

In yet another aspect, the processor107computes the average media item attribute strength of each media item attribute having an identifier recorded in the memory106and then adds weighting factors to the average media item attribute strengths in proportion to their frequency of occurrence across the iterations. The processor107outputs to the user device110a recommendation of the media item having a media item attribute strength equal to the weighted average media item attribute strength.

VI. Exemplary Computer Readable Medium Implementation

The example embodiments described above such as, for example, the system100, the diagrams200,400, the procedures300,500, or any part(s) or function(s) thereof, may be implemented by using hardware, software or a combination thereof and may be implemented in one or more computer systems or other processing systems. However, the manipulations performed by these example embodiments were often referred to in terms, such as entering, which are commonly associated with mental operations performed by a human operator. No such capability of a human operator is necessary in any of the operations described herein. For example, the recommendation device101may automatically recommend programs without receiving a user's input through the user device110. In other words, the operations may be completely implemented with machine operations. Useful machines for performing the operation of the example embodiments presented herein include general purpose digital computers or similar devices.

FIG. 6is a high-level block diagram of a general and/or special purpose computer system600, in accordance with some embodiments. The computer system600may be, for example, a user device, a user computer, a client computer and/or a server computer, among other things.

The computer system600preferably includes without limitation a processor device610, a main memory625, and an interconnect bus605. The processor device610may include without limitation a single microprocessor, or may include a plurality of microprocessors for configuring the computer system600as a multi-processor system. The main memory625stores, among other things, instructions and/or data for execution by the processor device610. If the system is partially implemented in software, the main memory625stores the executable code when in operation. The main memory625may include banks of dynamic random access memory (DRAM), as well as cache memory.

The computer system600may further include a mass storage device630, peripheral device(s)640, portable storage medium device(s)650, input control device(s)680, a graphics subsystem660, and/or an output display670. For explanatory purposes, all components in the computer system600are shown inFIG. 6as being coupled via the bus605. However, the computer system600is not so limited. Devices of the computer system600may be coupled through one or more data transport means. For example, the processor device610and/or the main memory625may be coupled via a local microprocessor bus. The mass storage device630, peripheral device(s)640, portable storage medium device(s)650, and/or graphics subsystem660may be coupled via one or more input/output (I/O) buses. The mass storage device630is preferably a nonvolatile storage device for storing data and/or instructions for use by the processor device610. The mass storage device630may be implemented, for example, with a magnetic disk drive or an optical disk drive. In a software embodiment, the mass storage device630is preferably configured for loading contents of the mass storage device630into the main memory625.

The portable storage medium device650operates in conjunction with a nonvolatile portable storage medium, such as, for example, a compact disc read only memory (CD-ROM), to input and output data and code to and from the computer system600. In some embodiments, the software for storing an internal identifier in metadata may be stored on a portable storage medium, and may be inputted into the computer system600via the portable storage medium device650. The peripheral device(s)640may include any type of computer support device, such as, for example, an input/output (I/O) interface configured to add additional functionality to the computer system600. For example, the peripheral device(s)640may include a network interface card for interfacing the computer system600with a network620.

The input control device(s)680provide a portion of the user interface for a user of the computer system600. The input control device(s)680may include a keypad and/or a cursor control device. The keypad may be configured for inputting alphanumeric and/or other key information. The cursor control device may include, for example, a mouse, a trackball, a stylus, and/or cursor direction keys. In order to display textual and graphical information, the computer system600preferably includes the graphics subsystem660and the output display670. The output display670may include a cathode ray tube (CRT) display and/or a liquid crystal display (LCD). The graphics subsystem660receives textual and graphical information, and processes the information for output to the output display670.

Each component of the computer system600may represent a broad category of a computer component of a general and/or special purpose computer. Components of the computer system600are not limited to the specific implementations provided here.

Portions of the invention may be conveniently implemented by using a conventional general purpose computer, a specialized digital computer and/or a microprocessor programmed according to the teachings of the present disclosure, as will be apparent to those skilled in the computer art. Appropriate software coding may readily be prepared by skilled programmers based on the teachings of the present disclosure.

Some embodiments may also be implemented by the preparation of application-specific integrated circuits, field programmable gate arrays, or by interconnecting an appropriate network of conventional component circuits.

Some embodiments include a computer program product. The computer program product may be a storage medium or media having instructions stored thereon or therein which can be used to control, or cause, a computer to perform any of the processes of the invention. The storage medium may include without limitation a floppy disk, a mini disk, an optical disc, a Blu-ray Disc, a DVD, a CD-ROM, a micro-drive, a magneto-optical disk, a ROM, a RAM, an EPROM, an EEPROM, a DRAM, a VRAM, a flash memory, a flash card, a magnetic card, an optical card, nanosystems, a molecular memory integrated circuit, a RAID, remote data storage/archive/warehousing, and/or any other type of device suitable for storing instructions and/or data.

Stored on any one of the computer readable medium or media, some implementations include software for controlling both the hardware of the general and/or special computer or microprocessor, and for enabling the computer or microprocessor to interact with a human user or other mechanism utilizing the results of the invention. Such software may include without limitation device drivers, operating systems, and user applications. Ultimately, such computer readable media further includes software for performing aspects of the invention, as described above.

Included in the programming and/or software of the general and/or special purpose computer or microprocessor are software modules for implementing the processes described above.

In addition, it should be understood that the figures are presented for example purposes only. The architecture of the example embodiments presented herein is sufficiently flexible and configurable, such that it may be utilized and navigated in ways other than that shown in the accompanying figures.