What are taste profiles and how do I use them?

This tutorial explains what taste profiles are and how you can use them.

What are taste profiles

Often times it is desireable to be able to limit the results of an Echo Nest call to a particular domain. For instance, a personal playlist generator may need to limit the results to playlists that only contain songs that are within an individual's music collection. Similarly, a concert recommender may need to limit the results of the artist/similar call to only those artists that are playing concerts in Boston this weekend. Taste profiles allow you to create a representation of a music collection. This representation can be used in various API methods to limit results to only items in the taste profile. A taste profile can also serve as a representation of an individual's music taste. A profile can contain music items (such as artists or songs) along with ratings and other indications of a users's attitude toward the item. A taste profile can act as a seed for an artist/similar method or for playlisting methods. Taste profiles are typed, and are modified using the Catalog API. A taste profile can be an 'artist' profile or a 'song' profile. A taste profile consists of a list of items of the appropriate type, along with user preference data about the item (such as ratings, playcounts, skipcounts and so on). See the tutorial on Creating taste profiles for details on how to create taste profiles.

Limiting results to items in a taste profile

One of the primary uses of taste profiles is to use them to limit results. For example, if you have an artist profile containing a set of artists, you can limit search, similar and playlist results to this profile.

Example: Limiting similar artists to a taste profile

In this example, we generate a list of similar artists to XX that are part of the regular rotation for radio station Z100. For this example, we've created a profile that contains the artists and the playcounts for Z100 during the month of October 2010. (You can get data like this via the Yes.com API). To restrict similar artists to those in the WHTZ profile, add the catalog ID bucket and set the limit flag to True.

Response

{
    "response": {
        "status": {
            "code": 0, 
            "message": "Success", 
            "version": "4.2"
        }
        "artists": [
            {
                "foreign_ids": [
                    {
                        "catalog": "CAOCJCS12C028B69A6", 
                        "foreign_id": "CAOCJCS12C028B69A6:artist:Kid Cudi"
                    }
                ], 
                "id": "ARD46C811C8A414F3F", 
                "name": "Kid Cudi"
            }, 
            {
                "foreign_ids": [
                    {
                        "catalog": "CAOCJCS12C028B69A6", 
                        "foreign_id": "CAOCJCS12C028B69A6:artist:Eminem"
                    }
                ], 
                "id": "ARTH9041187FB43E1F", 
                "name": "Eminem"
            }, 
            {
                "foreign_ids": [
                    {
                        "catalog": "CAOCJCS12C028B69A6", 
                        "foreign_id": "CAOCJCS12C028B69A6:artist:Usher"
                    }
                ], 
                "id": "ARPDVPJ1187B9ADBE9", 
                "name": "Usher"
            }
        ], 
    }
}

Using a taste profile as a artist similarity seed

Another use of a taste profile is to use it as representation of an individual's music taste. We can use a taste profile as an input to the artist/similarity method or the playlist methods

Example: Generating similar artists based upon a taste profile

In this example, we generate a list artists that are most similar to the artists in the given seed profile (again the Z100 profile). This will yield a set of artists that would likely fit well on that radio station.

Response

{
    "response": {
        "artists": [
            {
                "id": "ARAOYXM1187FB524F6", 
                "name": "Nelly Furtado"
            }, 
            {
                "id": "AR0FXTC1187FB46FEC", 
                "name": "Nicole Scherzinger"
            }, 
            {
                "id": "AR0S7TA1187FB4D024", 
                "name": "Christina Aguilera"
            }, 
            {
                "id": "ARY53RR1187B9AE485", 
                "name": "Avril Lavigne"
            }, 
            {
                "id": "ARU9LLJ1187B9B8AB2", 
                "name": "Ashlee Simpson"
            }, 
            {
                "id": "ARVBRGZ1187FB4675A", 
                "name": "Gwen Stefani"
            }, 
            {
                "id": "ARDUIMG1187B9B9498", 
                "name": "Christina Milian"
            }, 
            {
                "id": "ARJGIOD1187B9AE920", 
                "name": "Kelly Clarkson"
            }, 
            {
                "id": "ARQOG1Y1187B99BF80", 
                "name": "Far * East Movement"
            }, 
            {
                "id": "ARYJHCE127D395D4BB", 
                "name": "Travie McCoy"
            }
        ], 
        "status": {
            "code": 0, 
            "message": "Success", 
            "version": "4.2"
        }
    }
}

Example: Seeding a playlist with a taste profile

In this example, we generate a playlist seeded with artists that are most similar to the artists in the given seed profile (again the Z100 profile).

Response

{
    "response": {
        "songs": [
            {
                "artist_id": "ARZRYXF1187FB555CC", 
                "artist_name": "P!nk", 
                "id": "SOUKGIX127E943AED8", 
                "title": "Waiting For Love"
            }, 
            {
                "artist_id": "ARCGJ6U1187FB4D01F", 
                "artist_name": "Akon", 
                "id": "SOVDMPB12A81C2072F", 
                "title": "Rush"
            }, 
            {
                "artist_id": "ARYAVBS1187FB5B46C", 
                "artist_name": "Miley Cyrus", 
                "id": "SOHMMYV12AB0186DF5", 
                "title": "Part of Your World"
            }, 
            {
                "artist_id": "ARJGIOD1187B9AE920", 
                "artist_name": "Kelly Clarkson", 
                "id": "SOOTTXU12A58A7AA60", 
                "title": "Since U Been Gone"
            }, 
            {
                "artist_id": "ARYJHCE127D395D4BB", 
                "artist_name": "Travie McCoy", 
                "id": "SOCAICQ12AF72A817D", 
                "title": "Need You"
            }, 
            {
                "artist_id": "ARSDVTF11F4C844C69", 
                "artist_name": "Heidi Montag", 
                "id": "SOZYOPQ12A58A7C981", 
                "title": "Overdosin"
            }, 
            {
                "artist_id": "AR0DVRJ1187B98CBF5", 
                "artist_name": "The Pussycat Dolls", 
                "id": "SOLOXDE12A6D4F575B", 
                "title": "Don't Cha"
            }, 
            {
                "artist_id": "AR35K8C1187B98F4AF", 
                "artist_name": "Mandy Moore", 
                "id": "SOTBNSH12AB017C1E9", 
                "title": "Lock Me In Your Heart"
            }, 
            {
                "artist_id": "ARZSKZU1187FB4CE1E", 
                "artist_name": "TLC", 
                "id": "SORPXPE12C106D19FC", 
                "title": "Waterfalls (W/ Rap)"
            }, 
            {
                "artist_id": "ARL60FF1187B9AE52D", 
                "artist_name": "Trey Songz", 
                "id": "SOAKUNG12C106CF497", 
                "title": "BOTTOMS UP (Super Clean Edit)"
            }
        ], 
        "status": {
            "code": 0, 
            "message": "Success", 
            "version": "4.2"
        }
    }
}