diff --git a/data/facebook_auth/facebook_auth_dummy.csv b/data/facebook_auth/facebook_auth_dummy.csv
new file mode 100644
index 0000000..f6daad7
--- /dev/null
+++ b/data/facebook_auth/facebook_auth_dummy.csv
@@ -0,0 +1 @@
+ACCESS_TOKEN,USER_ID
diff --git a/data/queries/US_white_music_interests_ages.json b/data/queries/US_white_music_interests_ages.json
new file mode 100644
index 0000000..ad072be
--- /dev/null
+++ b/data/queries/US_white_music_interests_ages.json
@@ -0,0 +1,7138 @@
+{
+ "interests": [
+ {
+ "name": [
+ "Rocksteady"
+ ],
+ "or": [
+ "6003314921218"
+ ]
+ },
+ {
+ "name": [
+ "Christian hip hop"
+ ],
+ "or": [
+ "6003140211647"
+ ]
+ },
+ {
+ "name": [
+ "Noise music"
+ ],
+ "or": [
+ "6003258005082"
+ ]
+ },
+ {
+ "name": [
+ "Flamenco"
+ ],
+ "or": [
+ "6003074062797"
+ ]
+ },
+ {
+ "name": [
+ "Psychedelic trance"
+ ],
+ "or": [
+ "6003419806154"
+ ]
+ },
+ {
+ "name": [
+ "Skate punk"
+ ],
+ "or": [
+ "6002985722723"
+ ]
+ },
+ {
+ "name": [
+ "New jack swing"
+ ],
+ "or": [
+ "6002969744692"
+ ]
+ },
+ {
+ "name": [
+ "Power metal"
+ ],
+ "or": [
+ "6003677535718"
+ ]
+ },
+ {
+ "name": [
+ "Neue Deutsche H\u00cc_rte"
+ ],
+ "or": [
+ "6003159533034"
+ ]
+ },
+ {
+ "name": [
+ "Underground music"
+ ],
+ "or": [
+ "6003437235770"
+ ]
+ },
+ {
+ "name": [
+ "Mexican cumbia"
+ ],
+ "or": [
+ "6003497930280"
+ ]
+ },
+ {
+ "name": [
+ "Broken beat"
+ ],
+ "or": [
+ "6003425345554"
+ ]
+ },
+ {
+ "name": [
+ "Mexican rock music"
+ ],
+ "or": [
+ "6002971551929"
+ ]
+ },
+ {
+ "name": [
+ "Hardcore (electronic dance music genre)"
+ ],
+ "or": [
+ "6003374770477"
+ ]
+ },
+ {
+ "name": [
+ "Tango music"
+ ],
+ "or": [
+ "6009909180927"
+ ]
+ },
+ {
+ "name": [
+ "Alternative country"
+ ],
+ "or": [
+ "6003133345814"
+ ]
+ },
+ {
+ "name": [
+ "Avant-garde metal"
+ ],
+ "or": [
+ "6014498774112"
+ ]
+ },
+ {
+ "name": [
+ "Hardcore hip hop"
+ ],
+ "or": [
+ "6003290070051"
+ ]
+ },
+ {
+ "name": [
+ "A cappella"
+ ],
+ "or": [
+ "6003153751465"
+ ]
+ },
+ {
+ "name": [
+ "Post-punk revival"
+ ],
+ "or": [
+ "6003472592263"
+ ]
+ },
+ {
+ "name": [
+ "Reggae en Espa\u00cc\u00b1ol"
+ ],
+ "or": [
+ "6003364047823"
+ ]
+ },
+ {
+ "name": [
+ "Baroque pop"
+ ],
+ "or": [
+ "6003605762820"
+ ]
+ },
+ {
+ "name": [
+ "Instrumental"
+ ],
+ "or": [
+ "6003356636987"
+ ]
+ },
+ {
+ "name": [
+ "Western swing"
+ ],
+ "or": [
+ "6003257250286"
+ ]
+ },
+ {
+ "name": [
+ "Zouk"
+ ],
+ "or": [
+ "6003169339149"
+ ]
+ },
+ {
+ "name": [
+ "Brega (music)"
+ ],
+ "or": [
+ "6003463723544"
+ ]
+ },
+ {
+ "name": [
+ "Vocal music"
+ ],
+ "or": [
+ "6003289088651"
+ ]
+ },
+ {
+ "name": [
+ "Beat music"
+ ],
+ "or": [
+ "6003108799293"
+ ]
+ },
+ {
+ "name": [
+ "Hard trance"
+ ],
+ "or": [
+ "6003192799672"
+ ]
+ },
+ {
+ "name": [
+ "Funk ostenta\u00cc\u00a4\u00cc\u00a3o"
+ ],
+ "or": [
+ "6016917656327"
+ ]
+ },
+ {
+ "name": [
+ "Shoegazing"
+ ],
+ "or": [
+ "6003127203524"
+ ]
+ },
+ {
+ "name": [
+ "Korean hip hop"
+ ],
+ "or": [
+ "6012875345920"
+ ]
+ },
+ {
+ "name": [
+ "Stoner rock"
+ ],
+ "or": [
+ "6003257838288"
+ ]
+ },
+ {
+ "name": [
+ "Folk"
+ ],
+ "or": [
+ "6003300256738"
+ ]
+ },
+ {
+ "name": [
+ "Freestyle rap"
+ ],
+ "or": [
+ "6003259015102"
+ ]
+ },
+ {
+ "name": [
+ "Samba-enredo"
+ ],
+ "or": [
+ "6003541789765"
+ ]
+ },
+ {
+ "name": [
+ "Huapango"
+ ],
+ "or": [
+ "6003420589431"
+ ]
+ },
+ {
+ "name": [
+ "Symphonic metal"
+ ],
+ "or": [
+ "6003198743801"
+ ]
+ },
+ {
+ "name": [
+ "Surf music"
+ ],
+ "or": [
+ "6003257449969"
+ ]
+ },
+ {
+ "name": [
+ "Cabaret"
+ ],
+ "or": [
+ "6003647797113"
+ ]
+ },
+ {
+ "name": [
+ "Argentine cumbia"
+ ],
+ "or": [
+ "6003985876266"
+ ]
+ },
+ {
+ "name": [
+ "Beatboxing"
+ ],
+ "or": [
+ "6003382908804"
+ ]
+ },
+ {
+ "name": [
+ "Oldschool jungle"
+ ],
+ "or": [
+ "6003339214796"
+ ]
+ },
+ {
+ "name": [
+ "Music of India"
+ ],
+ "or": [
+ "6003651347113"
+ ]
+ },
+ {
+ "name": [
+ "Belgian rock"
+ ],
+ "or": [
+ "6003539998663"
+ ]
+ },
+ {
+ "name": [
+ "Ra\u00cc\u00f8"
+ ],
+ "or": [
+ "6003434733851"
+ ]
+ },
+ {
+ "name": [
+ "Groove metal"
+ ],
+ "or": [
+ "6003646941516"
+ ]
+ },
+ {
+ "name": [
+ "Christmas carol"
+ ],
+ "or": [
+ "6003304554260"
+ ]
+ },
+ {
+ "name": [
+ "Vocal trance"
+ ],
+ "or": [
+ "6003647207516"
+ ]
+ },
+ {
+ "name": [
+ "Sambass"
+ ],
+ "or": [
+ "6003352340000"
+ ]
+ },
+ {
+ "name": [
+ "Afrobeat"
+ ],
+ "or": [
+ "6003484812986"
+ ]
+ },
+ {
+ "name": [
+ "Anatolian rock"
+ ],
+ "or": [
+ "6004114757224"
+ ]
+ },
+ {
+ "name": [
+ "Nu-disco"
+ ],
+ "or": [
+ "6003391773154"
+ ]
+ },
+ {
+ "name": [
+ "Tech trance"
+ ],
+ "or": [
+ "6003122415922"
+ ]
+ },
+ {
+ "name": [
+ "Pinoy hip hop"
+ ],
+ "or": [
+ "6003185572008"
+ ]
+ },
+ {
+ "name": [
+ "Intelligent dance music"
+ ],
+ "or": [
+ "6003672270062"
+ ]
+ },
+ {
+ "name": [
+ "Jazz rap"
+ ],
+ "or": [
+ "6003362198821"
+ ]
+ },
+ {
+ "name": [
+ "Balearic trance"
+ ],
+ "or": [
+ "6009884266155"
+ ]
+ },
+ {
+ "name": [
+ "Acid trance"
+ ],
+ "or": [
+ "6003331848888"
+ ]
+ },
+ {
+ "name": [
+ "Post-rock"
+ ],
+ "or": [
+ "6002897827910"
+ ]
+ },
+ {
+ "name": [
+ "Urban contemporary gospel"
+ ],
+ "or": [
+ "6003369642335"
+ ]
+ },
+ {
+ "name": [
+ "Rumba (dance)"
+ ],
+ "or": [
+ "6003234292967"
+ ]
+ },
+ {
+ "name": [
+ "Ghazal"
+ ],
+ "or": [
+ "6003147013549"
+ ]
+ },
+ {
+ "name": [
+ "Jingle"
+ ],
+ "or": [
+ "6003605467820"
+ ]
+ },
+ {
+ "name": [
+ "Deejay (Jamaican)"
+ ],
+ "or": [
+ "6004933825545"
+ ]
+ },
+ {
+ "name": [
+ "Crunk"
+ ],
+ "or": [
+ "6003375372077"
+ ]
+ },
+ {
+ "name": [
+ "Gothic metal"
+ ],
+ "or": [
+ "6003337414843"
+ ]
+ },
+ {
+ "name": [
+ "Visual kei"
+ ],
+ "or": [
+ "6003109324984"
+ ]
+ },
+ {
+ "name": [
+ "Freestyle music"
+ ],
+ "or": [
+ "6003386969196"
+ ]
+ },
+ {
+ "name": [
+ "Chicano rap"
+ ],
+ "or": [
+ "6004108615609"
+ ]
+ },
+ {
+ "name": [
+ "Old-school hip hop"
+ ],
+ "or": [
+ "6003341960423"
+ ]
+ },
+ {
+ "name": [
+ "Mainstream Top 40"
+ ],
+ "or": [
+ "6003377746787"
+ ]
+ },
+ {
+ "name": [
+ "Experimental music"
+ ],
+ "or": [
+ "6002969799129"
+ ]
+ },
+ {
+ "name": [
+ "Thai rock"
+ ],
+ "or": [
+ "6003278226799"
+ ]
+ },
+ {
+ "name": [
+ "Texas blues"
+ ],
+ "or": [
+ "6003451628671"
+ ]
+ },
+ {
+ "name": [
+ "Country rap"
+ ],
+ "or": [
+ "6003199481065"
+ ]
+ },
+ {
+ "name": [
+ "Latin jazz"
+ ],
+ "or": [
+ "6004111763189"
+ ]
+ },
+ {
+ "name": [
+ "Fingerstyle guitar"
+ ],
+ "or": [
+ "6003224974661"
+ ]
+ },
+ {
+ "name": [
+ "Boogie (genre)"
+ ],
+ "or": [
+ "6003254827401"
+ ]
+ },
+ {
+ "name": [
+ "Comedy rock"
+ ],
+ "or": [
+ "6003331792577"
+ ]
+ },
+ {
+ "name": [
+ "Symphonic rock"
+ ],
+ "or": [
+ "6003386614418"
+ ]
+ },
+ {
+ "name": [
+ "Grindcore"
+ ],
+ "or": [
+ "6003251083686"
+ ]
+ },
+ {
+ "name": [
+ "Melodic death metal"
+ ],
+ "or": [
+ "6003376287381"
+ ]
+ },
+ {
+ "name": [
+ "Contemporary classical music"
+ ],
+ "or": [
+ "6003274787171"
+ ]
+ },
+ {
+ "name": [
+ "Pinoy pop"
+ ],
+ "or": [
+ "6003361706460"
+ ]
+ },
+ {
+ "name": [
+ "Cool jazz"
+ ],
+ "or": [
+ "6003022285156"
+ ]
+ },
+ {
+ "name": [
+ "Cadence rampa"
+ ],
+ "or": [
+ "6003325356199"
+ ]
+ },
+ {
+ "name": [
+ "Grime (music)"
+ ],
+ "or": [
+ "6003061520481"
+ ]
+ },
+ {
+ "name": [
+ "Rumba"
+ ],
+ "or": [
+ "6004056024148"
+ ]
+ },
+ {
+ "name": [
+ "Highlife"
+ ],
+ "or": [
+ "6002839697279"
+ ]
+ },
+ {
+ "name": [
+ "Australian hip hop"
+ ],
+ "or": [
+ "6003150474433"
+ ]
+ },
+ {
+ "name": [
+ "Acid jazz"
+ ],
+ "or": [
+ "6003348618232"
+ ]
+ },
+ {
+ "name": [
+ "Texas country music"
+ ],
+ "or": [
+ "6003305455369"
+ ]
+ },
+ {
+ "name": [
+ "Paisley Underground"
+ ],
+ "or": [
+ "6003314537514"
+ ]
+ },
+ {
+ "name": [
+ "Cuban rumba"
+ ],
+ "or": [
+ "718607324904571"
+ ]
+ },
+ {
+ "name": [
+ "Deathcore"
+ ],
+ "or": [
+ "6002968692692"
+ ]
+ },
+ {
+ "name": [
+ "Boogie rock"
+ ],
+ "or": [
+ "6002948891555"
+ ]
+ },
+ {
+ "name": [
+ "Indie folk"
+ ],
+ "or": [
+ "6003278095799"
+ ]
+ },
+ {
+ "name": [
+ "Arabesque (Turkish music)"
+ ],
+ "or": [
+ "6003360934193"
+ ]
+ },
+ {
+ "name": [
+ "Euro disco"
+ ],
+ "or": [
+ "6003258987667"
+ ]
+ },
+ {
+ "name": [
+ "Hardstyle"
+ ],
+ "or": [
+ "6003718613316"
+ ]
+ },
+ {
+ "name": [
+ "Roots rock"
+ ],
+ "or": [
+ "6003009405850"
+ ]
+ },
+ {
+ "name": [
+ "Middle of the road (music)"
+ ],
+ "or": [
+ "6003386652818"
+ ]
+ },
+ {
+ "name": [
+ "Acid house"
+ ],
+ "or": [
+ "6003693206316"
+ ]
+ },
+ {
+ "name": [
+ "Screamo"
+ ],
+ "or": [
+ "6003314274714"
+ ]
+ },
+ {
+ "name": [
+ "Bounce music"
+ ],
+ "or": [
+ "6003057052932"
+ ]
+ },
+ {
+ "name": [
+ "Noise rock"
+ ],
+ "or": [
+ "6003461066225"
+ ]
+ },
+ {
+ "name": [
+ "Indian classical music"
+ ],
+ "or": [
+ "6003240881810"
+ ]
+ },
+ {
+ "name": [
+ "Carnatic music"
+ ],
+ "or": [
+ "6003156706484"
+ ]
+ },
+ {
+ "name": [
+ "Lullaby"
+ ],
+ "or": [
+ "6004102481609"
+ ]
+ },
+ {
+ "name": [
+ "Viking metal"
+ ],
+ "or": [
+ "6003650529946"
+ ]
+ },
+ {
+ "name": [
+ "Pinoy rock"
+ ],
+ "or": [
+ "6003393889131"
+ ]
+ },
+ {
+ "name": [
+ "Dance-punk"
+ ],
+ "or": [
+ "6003427999575"
+ ]
+ },
+ {
+ "name": [
+ "Ax\u00cc\u00a9 (music)"
+ ],
+ "or": [
+ "6003179968552"
+ ]
+ },
+ {
+ "name": [
+ "Concert band"
+ ],
+ "or": [
+ "6003342577987"
+ ]
+ },
+ {
+ "name": [
+ "National Socialist black metal"
+ ],
+ "or": [
+ "6003055117556"
+ ]
+ },
+ {
+ "name": [
+ "Street punk"
+ ],
+ "or": [
+ "6003707861116"
+ ]
+ },
+ {
+ "name": [
+ "Protopunk"
+ ],
+ "or": [
+ "6003243830767"
+ ]
+ },
+ {
+ "name": [
+ "Oi!"
+ ],
+ "or": [
+ "6003209872430"
+ ]
+ },
+ {
+ "name": [
+ "German rock"
+ ],
+ "or": [
+ "6003107169433"
+ ]
+ },
+ {
+ "name": [
+ "Space rock"
+ ],
+ "or": [
+ "6002948479355"
+ ]
+ },
+ {
+ "name": [
+ "Marching band"
+ ],
+ "or": [
+ "6002960318920"
+ ]
+ },
+ {
+ "name": [
+ "Children's music"
+ ],
+ "or": [
+ "6003200511682"
+ ]
+ },
+ {
+ "name": [
+ "Miami bass"
+ ],
+ "or": [
+ "6003139637826"
+ ]
+ },
+ {
+ "name": [
+ "Tech house"
+ ],
+ "or": [
+ "6003075191185"
+ ]
+ },
+ {
+ "name": [
+ "Andalusian classical music"
+ ],
+ "or": [
+ "6003745678504"
+ ]
+ },
+ {
+ "name": [
+ "Big beat"
+ ],
+ "or": [
+ "6003052955245"
+ ]
+ },
+ {
+ "name": [
+ "Avant-garde jazz"
+ ],
+ "or": [
+ "6003351627243"
+ ]
+ },
+ {
+ "name": [
+ "Krautrock"
+ ],
+ "or": [
+ "6003486587669"
+ ]
+ },
+ {
+ "name": [
+ "Baroque music"
+ ],
+ "or": [
+ "6003417864712"
+ ]
+ },
+ {
+ "name": [
+ "Music of the Philippines"
+ ],
+ "or": [
+ "6003280576223"
+ ]
+ },
+ {
+ "name": [
+ "Boogaloo"
+ ],
+ "or": [
+ "6003243677542"
+ ]
+ },
+ {
+ "name": [
+ "Barbershop music"
+ ],
+ "or": [
+ "6003092601017"
+ ]
+ },
+ {
+ "name": [
+ "Vocaloid"
+ ],
+ "or": [
+ "6003354833037"
+ ]
+ },
+ {
+ "name": [
+ "Desi Hip Hop"
+ ],
+ "or": [
+ "6003767308605"
+ ]
+ },
+ {
+ "name": [
+ "Melodic hardcore"
+ ],
+ "or": [
+ "6003142928647"
+ ]
+ },
+ {
+ "name": [
+ "Hip hop soul"
+ ],
+ "or": [
+ "6003349217527"
+ ]
+ },
+ {
+ "name": [
+ "Minimal techno"
+ ],
+ "or": [
+ "6003139973592"
+ ]
+ },
+ {
+ "name": [
+ "Outlaw country"
+ ],
+ "or": [
+ "6003157605284"
+ ]
+ },
+ {
+ "name": [
+ "Argentine tango"
+ ],
+ "or": [
+ "6003226791885"
+ ]
+ },
+ {
+ "name": [
+ "Concept album"
+ ],
+ "or": [
+ "6003315581763"
+ ]
+ },
+ {
+ "name": [
+ "Music of Japan"
+ ],
+ "or": [
+ "6003108479633"
+ ]
+ },
+ {
+ "name": [
+ "PBR&B"
+ ],
+ "or": [
+ "6009743139264"
+ ]
+ },
+ {
+ "name": [
+ "Afro-Cuban jazz"
+ ],
+ "or": [
+ "6003254226816"
+ ]
+ },
+ {
+ "name": [
+ "Swedish death metal"
+ ],
+ "or": [
+ "6003247985413"
+ ]
+ },
+ {
+ "name": [
+ "Teutonic thrash metal"
+ ],
+ "or": [
+ "6003001045450"
+ ]
+ },
+ {
+ "name": [
+ "Chamber music"
+ ],
+ "or": [
+ "6003337916179"
+ ]
+ },
+ {
+ "name": [
+ "Ska punk"
+ ],
+ "or": [
+ "6003142140447"
+ ]
+ },
+ {
+ "name": [
+ "UK hardcore"
+ ],
+ "or": [
+ "6003647110620"
+ ]
+ },
+ {
+ "name": [
+ "Horror punk"
+ ],
+ "or": [
+ "6003114006700"
+ ]
+ },
+ {
+ "name": [
+ "Ragtime"
+ ],
+ "or": [
+ "6003202093612"
+ ]
+ },
+ {
+ "name": [
+ "Jangle pop"
+ ],
+ "or": [
+ "6003351443119"
+ ]
+ },
+ {
+ "name": [
+ "M\u00cc\u00c1kina"
+ ],
+ "or": [
+ "6003357385187"
+ ]
+ },
+ {
+ "name": [
+ "Pop-rap"
+ ],
+ "or": [
+ "6022204664592"
+ ]
+ },
+ {
+ "name": [
+ "Regional Mexican"
+ ],
+ "or": [
+ "6003250320511"
+ ]
+ },
+ {
+ "name": [
+ "Crossover thrash"
+ ],
+ "or": [
+ "6004206371989"
+ ]
+ },
+ {
+ "name": [
+ "The Rock is Culture"
+ ],
+ "or": [
+ "6003177257133"
+ ]
+ },
+ {
+ "name": [
+ "French rock"
+ ],
+ "or": [
+ "6003337494443"
+ ]
+ },
+ {
+ "name": [
+ "Jazz-funk"
+ ],
+ "or": [
+ "6002995734844"
+ ]
+ },
+ {
+ "name": [
+ "Technical death metal"
+ ],
+ "or": [
+ "6003073183197"
+ ]
+ },
+ {
+ "name": [
+ "Narcocorrido"
+ ],
+ "or": [
+ "6003215714124"
+ ]
+ },
+ {
+ "name": [
+ "Hip house"
+ ],
+ "or": [
+ "6003012068797"
+ ]
+ },
+ {
+ "name": [
+ "Instrumental rock"
+ ],
+ "or": [
+ "6003351932200"
+ ]
+ },
+ {
+ "name": [
+ "Mor lam"
+ ],
+ "or": [
+ "6003279300980"
+ ]
+ },
+ {
+ "name": [
+ "Music of Brazil"
+ ],
+ "or": [
+ "6002933742373"
+ ]
+ },
+ {
+ "name": [
+ "UK Singles Chart"
+ ],
+ "or": [
+ "6003186196105"
+ ]
+ },
+ {
+ "name": [
+ "Electric folk"
+ ],
+ "or": [
+ "6003584207507"
+ ]
+ },
+ {
+ "name": [
+ "Soul jazz"
+ ],
+ "or": [
+ "6003326982288"
+ ]
+ },
+ {
+ "name": [
+ "Psychedelic folk"
+ ],
+ "or": [
+ "6003107511301"
+ ]
+ },
+ {
+ "name": [
+ "Kuduro"
+ ],
+ "or": [
+ "6003453309042"
+ ]
+ },
+ {
+ "name": [
+ "Post-industrial music"
+ ],
+ "or": [
+ "6002897198710"
+ ]
+ },
+ {
+ "name": [
+ "Classical period (music)"
+ ],
+ "or": [
+ "6003179189835"
+ ]
+ },
+ {
+ "name": [
+ "Lovers rock"
+ ],
+ "or": [
+ "6003221572267"
+ ]
+ },
+ {
+ "name": [
+ "Son Huasteco"
+ ],
+ "or": [
+ "6003343186056"
+ ]
+ },
+ {
+ "name": [
+ "Bhajan"
+ ],
+ "or": [
+ "6003971423096"
+ ]
+ },
+ {
+ "name": [
+ "Nueva canci\u00cc_n"
+ ],
+ "or": [
+ "6003058651132"
+ ]
+ },
+ {
+ "name": [
+ "Argentine rock"
+ ],
+ "or": [
+ "6003244360401"
+ ]
+ },
+ {
+ "name": [
+ "Irish rock"
+ ],
+ "or": [
+ "6003391451144"
+ ]
+ },
+ {
+ "name": [
+ "Post-bop"
+ ],
+ "or": [
+ "6003428308312"
+ ]
+ },
+ {
+ "name": [
+ "Kirana gharana"
+ ],
+ "or": [
+ "6003271325793"
+ ]
+ },
+ {
+ "name": [
+ "Balearic beat"
+ ],
+ "or": [
+ "6003179485324"
+ ]
+ },
+ {
+ "name": [
+ "Electronic body music"
+ ],
+ "or": [
+ "6002926010162"
+ ]
+ },
+ {
+ "name": [
+ "Serbian rock"
+ ],
+ "or": [
+ "6003269760902"
+ ]
+ },
+ {
+ "name": [
+ "Red Dirt (music)"
+ ],
+ "or": [
+ "6003186916235"
+ ]
+ },
+ {
+ "name": [
+ "Reggae rock"
+ ],
+ "or": [
+ "6004615176296"
+ ]
+ },
+ {
+ "name": [
+ "New Orleans rhythm and blues"
+ ],
+ "or": [
+ "6003183696012"
+ ]
+ },
+ {
+ "name": [
+ "Music of Africa"
+ ],
+ "or": [
+ "6003359282604"
+ ]
+ },
+ {
+ "name": [
+ "Art music"
+ ],
+ "or": [
+ "6003240824810"
+ ]
+ },
+ {
+ "name": [
+ "Hot R&B/Hip-Hop Songs"
+ ],
+ "or": [
+ "6002972712194"
+ ]
+ },
+ {
+ "name": [
+ "Doo-wop"
+ ],
+ "or": [
+ "6002920914155"
+ ]
+ },
+ {
+ "name": [
+ "African popular music"
+ ],
+ "or": [
+ "6003023077356"
+ ]
+ },
+ {
+ "name": [
+ "Baladi"
+ ],
+ "or": [
+ "6003859682234"
+ ]
+ },
+ {
+ "name": [
+ "Latin ballad"
+ ],
+ "or": [
+ "6003628897324"
+ ]
+ },
+ {
+ "name": [
+ "Bouncy techno"
+ ],
+ "or": [
+ "6003093989670"
+ ]
+ },
+ {
+ "name": [
+ "Riddim"
+ ],
+ "or": [
+ "6003157650884"
+ ]
+ },
+ {
+ "name": [
+ "Hard bop"
+ ],
+ "or": [
+ "6003121907134"
+ ]
+ },
+ {
+ "name": [
+ "Modal jazz"
+ ],
+ "or": [
+ "6002998040773"
+ ]
+ },
+ {
+ "name": [
+ "Hungarian rock"
+ ],
+ "or": [
+ "6003283896979"
+ ]
+ },
+ {
+ "name": [
+ "Southern soul"
+ ],
+ "or": [
+ "6002951281955"
+ ]
+ },
+ {
+ "name": [
+ "Choro"
+ ],
+ "or": [
+ "6003287919141"
+ ]
+ },
+ {
+ "name": [
+ "Nu jazz"
+ ],
+ "or": [
+ "6003291882938"
+ ]
+ },
+ {
+ "name": [
+ "Persian traditional music"
+ ],
+ "or": [
+ "6003382424181"
+ ]
+ },
+ {
+ "name": [
+ "Swamp pop"
+ ],
+ "or": [
+ "6003246876099"
+ ]
+ },
+ {
+ "name": [
+ "Political hip hop"
+ ],
+ "or": [
+ "6003231078588"
+ ]
+ },
+ {
+ "name": [
+ "Bassline (music genre)"
+ ],
+ "or": [
+ "6003142207584"
+ ]
+ },
+ {
+ "name": [
+ "Andean music"
+ ],
+ "or": [
+ "6003030856207"
+ ]
+ },
+ {
+ "name": [
+ "Rabindra Sangeet"
+ ],
+ "or": [
+ "6003208503576"
+ ]
+ },
+ {
+ "name": [
+ "Novelty song"
+ ],
+ "or": [
+ "6003319834418"
+ ]
+ },
+ {
+ "name": [
+ "Trot"
+ ],
+ "or": [
+ "6013312981795"
+ ]
+ },
+ {
+ "name": [
+ "Psychobilly"
+ ],
+ "or": [
+ "6003108983584"
+ ]
+ },
+ {
+ "name": [
+ "Jumpstyle"
+ ],
+ "or": [
+ "6003331455977"
+ ]
+ },
+ {
+ "name": [
+ "musica cristiana"
+ ],
+ "or": [
+ "6003193627562"
+ ]
+ },
+ {
+ "name": [
+ "Turntablism"
+ ],
+ "or": [
+ "6003369016202"
+ ]
+ },
+ {
+ "name": [
+ "Khyal"
+ ],
+ "or": [
+ "6003012449797"
+ ]
+ },
+ {
+ "name": [
+ "Schlager music"
+ ],
+ "or": [
+ "6003540731636"
+ ]
+ },
+ {
+ "name": [
+ "Shibuya-kei"
+ ],
+ "or": [
+ "6003225780698"
+ ]
+ },
+ {
+ "name": [
+ "Folktronica"
+ ],
+ "or": [
+ "6003143944128"
+ ]
+ },
+ {
+ "name": [
+ "Ry\u0081\u00c7k\u0081\u008dka"
+ ],
+ "or": [
+ "6003055238756"
+ ]
+ },
+ {
+ "name": [
+ "Sufi rock"
+ ],
+ "or": [
+ "6003435317683"
+ ]
+ },
+ {
+ "name": [
+ "Christian alternative rock"
+ ],
+ "or": [
+ "6003256042942"
+ ]
+ },
+ {
+ "name": [
+ "Italo dance"
+ ],
+ "or": [
+ "6003087462992"
+ ]
+ },
+ {
+ "name": [
+ "Islamic music"
+ ],
+ "or": [
+ "6003171044561"
+ ]
+ },
+ {
+ "name": [
+ "Nueva trova"
+ ],
+ "or": [
+ "6003173276578"
+ ]
+ },
+ {
+ "name": [
+ "Russian pop"
+ ],
+ "or": [
+ "6003324473654"
+ ]
+ },
+ {
+ "name": [
+ "Free improvisation"
+ ],
+ "or": [
+ "6003207572686"
+ ]
+ },
+ {
+ "name": [
+ "Bakersfield sound"
+ ],
+ "or": [
+ "6003374787477"
+ ]
+ },
+ {
+ "name": [
+ "Country blues"
+ ],
+ "or": [
+ "6003446597480"
+ ]
+ },
+ {
+ "name": [
+ "Music of Ireland"
+ ],
+ "or": [
+ "6003136092990"
+ ]
+ },
+ {
+ "name": [
+ "Celtic punk"
+ ],
+ "or": [
+ "6003030316185"
+ ]
+ },
+ {
+ "name": [
+ "Psychedelic pop"
+ ],
+ "or": [
+ "6003349888800"
+ ]
+ },
+ {
+ "name": [
+ "Duranguense"
+ ],
+ "or": [
+ "6003288662251"
+ ]
+ },
+ {
+ "name": [
+ "Ottoman classical music"
+ ],
+ "or": [
+ "6003056772244"
+ ]
+ },
+ {
+ "name": [
+ "Cover band"
+ ],
+ "or": [
+ "6003309794653"
+ ]
+ },
+ {
+ "name": [
+ "Happy hardcore"
+ ],
+ "or": [
+ "6003645729620"
+ ]
+ },
+ {
+ "name": [
+ "Mathcore"
+ ],
+ "or": [
+ "6003058574332"
+ ]
+ },
+ {
+ "name": [
+ "Snap music"
+ ],
+ "or": [
+ "6003161704522"
+ ]
+ },
+ {
+ "name": [
+ "Skiffle"
+ ],
+ "or": [
+ "6003407243735"
+ ]
+ },
+ {
+ "name": [
+ "Operatic pop"
+ ],
+ "or": [
+ "6002969879892"
+ ]
+ },
+ {
+ "name": [
+ "Cumbia villera"
+ ],
+ "or": [
+ "6002910067372"
+ ]
+ },
+ {
+ "name": [
+ "Deathgrind"
+ ],
+ "or": [
+ "6003114793226"
+ ]
+ },
+ {
+ "name": [
+ "Fado"
+ ],
+ "or": [
+ "6003108314790"
+ ]
+ },
+ {
+ "name": [
+ "Yodeling"
+ ],
+ "or": [
+ "6002969789729"
+ ]
+ },
+ {
+ "name": [
+ "Underground hip hop"
+ ],
+ "or": [
+ "6003128658328"
+ ]
+ },
+ {
+ "name": [
+ "Symphonic black metal"
+ ],
+ "or": [
+ "6003359349404"
+ ]
+ },
+ {
+ "name": [
+ "Hyphy"
+ ],
+ "or": [
+ "6003284263876"
+ ]
+ },
+ {
+ "name": [
+ "Cuarteto"
+ ],
+ "or": [
+ "6003120234258"
+ ]
+ },
+ {
+ "name": [
+ "20th-century Classical Music"
+ ],
+ "or": [
+ "6003146934068"
+ ]
+ },
+ {
+ "name": [
+ "Southern gospel"
+ ],
+ "or": [
+ "696263030491200"
+ ]
+ },
+ {
+ "name": [
+ "Electroacoustic music"
+ ],
+ "or": [
+ "6003169888685"
+ ]
+ },
+ {
+ "name": [
+ "Taiwanese pop"
+ ],
+ "or": [
+ "6003257438286"
+ ]
+ },
+ {
+ "name": [
+ "D\u00cc\u00a9cima"
+ ],
+ "or": [
+ "6003271244410"
+ ]
+ },
+ {
+ "name": [
+ "Chiptune"
+ ],
+ "or": [
+ "6003452079986"
+ ]
+ },
+ {
+ "name": [
+ "Electronicore"
+ ],
+ "or": [
+ "6011125342452"
+ ]
+ },
+ {
+ "name": [
+ "D-beat"
+ ],
+ "or": [
+ "6002990773059"
+ ]
+ },
+ {
+ "name": [
+ "Supergroup (music)"
+ ],
+ "or": [
+ "6003030589185"
+ ]
+ },
+ {
+ "name": [
+ "Turbo-folk"
+ ],
+ "or": [
+ "6003130250236"
+ ]
+ },
+ {
+ "name": [
+ "Mainstream hardcore"
+ ],
+ "or": [
+ "6008446954961"
+ ]
+ },
+ {
+ "name": [
+ "Semi-classical music"
+ ],
+ "or": [
+ "6002997886644"
+ ]
+ },
+ {
+ "name": [
+ "Turkish folk music"
+ ],
+ "or": [
+ "6003089917215"
+ ]
+ },
+ {
+ "name": [
+ "Garage punk"
+ ],
+ "or": [
+ "6003362039221"
+ ]
+ },
+ {
+ "name": [
+ "Atlanta hip hop"
+ ],
+ "or": [
+ "6003329326848"
+ ]
+ },
+ {
+ "name": [
+ "Sludge metal"
+ ],
+ "or": [
+ "6003133665614"
+ ]
+ },
+ {
+ "name": [
+ "Breakbeat hardcore"
+ ],
+ "or": [
+ "6003386471405"
+ ]
+ },
+ {
+ "name": [
+ "Celtic fusion"
+ ],
+ "or": [
+ "6003727525291"
+ ]
+ },
+ {
+ "name": [
+ "Salsa rom\u00cc\u00c1ntica"
+ ],
+ "or": [
+ "6003309367514"
+ ]
+ },
+ {
+ "name": [
+ "Active rock"
+ ],
+ "or": [
+ "6003344686039"
+ ]
+ },
+ {
+ "name": [
+ "Moombahton"
+ ],
+ "or": [
+ "6003286188359"
+ ]
+ },
+ {
+ "name": [
+ "German hip hop"
+ ],
+ "or": [
+ "6003114779026"
+ ]
+ },
+ {
+ "name": [
+ "Third stream"
+ ],
+ "or": [
+ "6003300384999"
+ ]
+ },
+ {
+ "name": [
+ "Music of Greece"
+ ],
+ "or": [
+ "6003301705028"
+ ]
+ },
+ {
+ "name": [
+ "Jump blues"
+ ],
+ "or": [
+ "6004177033095"
+ ]
+ },
+ {
+ "name": [
+ "Avant-garde music"
+ ],
+ "or": [
+ "6003451001586"
+ ]
+ },
+ {
+ "name": [
+ "New Romanticism"
+ ],
+ "or": [
+ "6002924648521"
+ ]
+ },
+ {
+ "name": [
+ "Neue Deutsche Welle"
+ ],
+ "or": [
+ "6003396355131"
+ ]
+ },
+ {
+ "name": [
+ "Cowpunk"
+ ],
+ "or": [
+ "6003445926671"
+ ]
+ },
+ {
+ "name": [
+ "Swing revival"
+ ],
+ "or": [
+ "6003242569588"
+ ]
+ },
+ {
+ "name": [
+ "Melodic metalcore"
+ ],
+ "or": [
+ "6010348366684"
+ ]
+ },
+ {
+ "name": [
+ "Chalga"
+ ],
+ "or": [
+ "6003207423976"
+ ]
+ },
+ {
+ "name": [
+ "Honky-tonk"
+ ],
+ "or": [
+ "6003106758834"
+ ]
+ },
+ {
+ "name": [
+ "Change ringing"
+ ],
+ "or": [
+ "6003436395439"
+ ]
+ },
+ {
+ "name": [
+ "Japanese hip hop"
+ ],
+ "or": [
+ "6002927517562"
+ ]
+ },
+ {
+ "name": [
+ "Northern soul"
+ ],
+ "or": [
+ "6003277207180"
+ ]
+ },
+ {
+ "name": [
+ "Music of Cuba"
+ ],
+ "or": [
+ "6002990758259"
+ ]
+ },
+ {
+ "name": [
+ "Gypsy punk"
+ ],
+ "or": [
+ "6003087056607"
+ ]
+ },
+ {
+ "name": [
+ "Music of Asia"
+ ],
+ "or": [
+ "6003383051943"
+ ]
+ },
+ {
+ "name": [
+ "Christian hardcore"
+ ],
+ "or": [
+ "6003335037157"
+ ]
+ },
+ {
+ "name": [
+ "Persian pop music"
+ ],
+ "or": [
+ "6003085938670"
+ ]
+ },
+ {
+ "name": [
+ "Soukous"
+ ],
+ "or": [
+ "6003336799489"
+ ]
+ },
+ {
+ "name": [
+ "Free tekno"
+ ],
+ "or": [
+ "6003323186443"
+ ]
+ },
+ {
+ "name": [
+ "Foxtrot"
+ ],
+ "or": [
+ "6003280781043"
+ ]
+ },
+ {
+ "name": [
+ "V-pop"
+ ],
+ "or": [
+ "6005722532204"
+ ]
+ },
+ {
+ "name": [
+ "Hiplife"
+ ],
+ "or": [
+ "6003320016497"
+ ]
+ },
+ {
+ "name": [
+ "Jazz band"
+ ],
+ "or": [
+ "6003320045559"
+ ]
+ },
+ {
+ "name": [
+ "Folk music of Ireland"
+ ],
+ "or": [
+ "6003264727714"
+ ]
+ },
+ {
+ "name": [
+ "Iranian hip hop"
+ ],
+ "or": [
+ "6002990331659"
+ ]
+ },
+ {
+ "name": [
+ "Kwaito"
+ ],
+ "or": [
+ "6003473385287"
+ ]
+ },
+ {
+ "name": [
+ "Straight edge"
+ ],
+ "or": [
+ "6003038397129"
+ ]
+ },
+ {
+ "name": [
+ "Jarocho"
+ ],
+ "or": [
+ "6003319591191"
+ ]
+ },
+ {
+ "name": [
+ "Christian punk"
+ ],
+ "or": [
+ "6002956997923"
+ ]
+ },
+ {
+ "name": [
+ "Cajun music"
+ ],
+ "or": [
+ "6003098130058"
+ ]
+ },
+ {
+ "name": [
+ "Nerdcore"
+ ],
+ "or": [
+ "6005045879121"
+ ]
+ },
+ {
+ "name": [
+ "Adult album alternative"
+ ],
+ "or": [
+ "6003281921325"
+ ]
+ },
+ {
+ "name": [
+ "Ethereal wave"
+ ],
+ "or": [
+ "6002921038355"
+ ]
+ },
+ {
+ "name": [
+ "Chaabi (Algeria)"
+ ],
+ "or": [
+ "6003350973888"
+ ]
+ },
+ {
+ "name": [
+ "Zamba (artform)"
+ ],
+ "or": [
+ "6003067561244"
+ ]
+ },
+ {
+ "name": [
+ "Gypsy jazz"
+ ],
+ "or": [
+ "6004176233295"
+ ]
+ },
+ {
+ "name": [
+ "British Invasion"
+ ],
+ "or": [
+ "6002969403968"
+ ]
+ },
+ {
+ "name": [
+ "UK hard house"
+ ],
+ "or": [
+ "6003258143886"
+ ]
+ },
+ {
+ "name": [
+ "Jesus music"
+ ],
+ "or": [
+ "6003198630401"
+ ]
+ },
+ {
+ "name": [
+ "Afro-punk"
+ ],
+ "or": [
+ "6003222081885"
+ ]
+ },
+ {
+ "name": [
+ "Zydeco"
+ ],
+ "or": [
+ "6003122005722"
+ ]
+ },
+ {
+ "name": [
+ "Post-metal"
+ ],
+ "or": [
+ "6003142693668"
+ ]
+ },
+ {
+ "name": [
+ "Neofolk"
+ ],
+ "or": [
+ "6002921026155"
+ ]
+ },
+ {
+ "name": [
+ "Experimental hip hop"
+ ],
+ "or": [
+ "6003148823134"
+ ]
+ },
+ {
+ "name": [
+ "Hip Hop/Rap"
+ ],
+ "or": [
+ "6003365266957"
+ ]
+ },
+ {
+ "name": [
+ "Latin hip hop"
+ ],
+ "or": [
+ "6003348819605"
+ ]
+ },
+ {
+ "name": [
+ "Cakewalk"
+ ],
+ "or": [
+ "6003251654286"
+ ]
+ },
+ {
+ "name": [
+ "Mbalax"
+ ],
+ "or": [
+ "6004178793495"
+ ]
+ },
+ {
+ "name": [
+ "Album-oriented rock"
+ ],
+ "or": [
+ "6003286855341"
+ ]
+ },
+ {
+ "name": [
+ "Witch house (music genre)"
+ ],
+ "or": [
+ "6003245187285"
+ ]
+ },
+ {
+ "name": [
+ "Freak folk"
+ ],
+ "or": [
+ "6003420744831"
+ ]
+ },
+ {
+ "name": [
+ "C-pop"
+ ],
+ "or": [
+ "6003127166924"
+ ]
+ },
+ {
+ "name": [
+ "Riot grrrl"
+ ],
+ "or": [
+ "6003143247247"
+ ]
+ },
+ {
+ "name": [
+ "Crunkcore"
+ ],
+ "or": [
+ "6003097405732"
+ ]
+ },
+ {
+ "name": [
+ "Classic female blues"
+ ],
+ "or": [
+ "6003779965252"
+ ]
+ },
+ {
+ "name": [
+ "Electro swing"
+ ],
+ "or": [
+ "6003616669552"
+ ]
+ },
+ {
+ "name": [
+ "Coco (music)"
+ ],
+ "or": [
+ "6004055611496"
+ ]
+ },
+ {
+ "name": [
+ "Dixieland"
+ ],
+ "or": [
+ "6003200685282"
+ ]
+ },
+ {
+ "name": [
+ "Coimbra Fado"
+ ],
+ "or": [
+ "6003325677179"
+ ]
+ },
+ {
+ "name": [
+ "Go-go"
+ ],
+ "or": [
+ "6003092225417"
+ ]
+ },
+ {
+ "name": [
+ "Anti-folk"
+ ],
+ "or": [
+ "6003007011320"
+ ]
+ },
+ {
+ "name": [
+ "Slow jam"
+ ],
+ "or": [
+ "6003335492456"
+ ]
+ },
+ {
+ "name": [
+ "Acid rock"
+ ],
+ "or": [
+ "6003083439250"
+ ]
+ },
+ {
+ "name": [
+ "Kay\u0081\u008dkyoku"
+ ],
+ "or": [
+ "6003175077449"
+ ]
+ },
+ {
+ "name": [
+ "Dark ambient"
+ ],
+ "or": [
+ "6003329322541"
+ ]
+ },
+ {
+ "name": [
+ "Peruvian cumbia"
+ ],
+ "or": [
+ "6003686938107"
+ ]
+ },
+ {
+ "name": [
+ "Heartland rock"
+ ],
+ "or": [
+ "6002923686921"
+ ]
+ },
+ {
+ "name": [
+ "Scat singing"
+ ],
+ "or": [
+ "6003096915932"
+ ]
+ },
+ {
+ "name": [
+ "New York hardcore"
+ ],
+ "or": [
+ "6003293788530"
+ ]
+ },
+ {
+ "name": [
+ "Digital hardcore"
+ ],
+ "or": [
+ "6003029096985"
+ ]
+ },
+ {
+ "name": [
+ "Y\u00cc\u00a9-y\u00cc\u00a9"
+ ],
+ "or": [
+ "6003371601340"
+ ]
+ },
+ {
+ "name": [
+ "Jota (music)"
+ ],
+ "or": [
+ "6003361836545"
+ ]
+ },
+ {
+ "name": [
+ "Urban adult contemporary"
+ ],
+ "or": [
+ "6003055930185"
+ ]
+ },
+ {
+ "name": [
+ "4-beat"
+ ],
+ "or": [
+ "6003237061698"
+ ]
+ },
+ {
+ "name": [
+ "Electro-industrial"
+ ],
+ "or": [
+ "6003264891909"
+ ]
+ },
+ {
+ "name": [
+ "Renaissance music"
+ ],
+ "or": [
+ "6003524214198"
+ ]
+ },
+ {
+ "name": [
+ "Zouglou"
+ ],
+ "or": [
+ "6003375683241"
+ ]
+ },
+ {
+ "name": [
+ "Eurobeat"
+ ],
+ "or": [
+ "6003027767985"
+ ]
+ },
+ {
+ "name": [
+ "Arena rock"
+ ],
+ "or": [
+ "6003553638103"
+ ]
+ },
+ {
+ "name": [
+ "Danz\u00cc_n"
+ ],
+ "or": [
+ "6003357163804"
+ ]
+ },
+ {
+ "name": [
+ "Asian Underground"
+ ],
+ "or": [
+ "6003486713080"
+ ]
+ },
+ {
+ "name": [
+ "Charanga (Cuba)"
+ ],
+ "or": [
+ "6005417518875"
+ ]
+ },
+ {
+ "name": [
+ "Music of Afghanistan"
+ ],
+ "or": [
+ "6002957576450"
+ ]
+ },
+ {
+ "name": [
+ "Medieval music"
+ ],
+ "or": [
+ "6002910576372"
+ ]
+ },
+ {
+ "name": [
+ "mpb"
+ ],
+ "or": [
+ "6003149879749"
+ ]
+ },
+ {
+ "name": [
+ "Turkish music (style)"
+ ],
+ "or": [
+ "6003116569332"
+ ]
+ },
+ {
+ "name": [
+ "Jewish music"
+ ],
+ "or": [
+ "6003470332764"
+ ]
+ },
+ {
+ "name": [
+ "Golden age hip hop"
+ ],
+ "or": [
+ "6003649772316"
+ ]
+ },
+ {
+ "name": [
+ "Yalli"
+ ],
+ "or": [
+ "6003270671393"
+ ]
+ },
+ {
+ "name": [
+ "Chumba"
+ ],
+ "or": [
+ "6003029713207"
+ ]
+ },
+ {
+ "name": [
+ "Habanera (music)"
+ ],
+ "or": [
+ "6003123158592"
+ ]
+ },
+ {
+ "name": [
+ "West Coast blues"
+ ],
+ "or": [
+ "6003143057447"
+ ]
+ },
+ {
+ "name": [
+ "Goregrind"
+ ],
+ "or": [
+ "6003121989522"
+ ]
+ },
+ {
+ "name": [
+ "Power noise"
+ ],
+ "or": [
+ "6003252728286"
+ ]
+ },
+ {
+ "name": [
+ "Romance (music)"
+ ],
+ "or": [
+ "6003702018890"
+ ]
+ },
+ {
+ "name": [
+ "March (music)"
+ ],
+ "or": [
+ "6003261404788"
+ ]
+ },
+ {
+ "name": [
+ "Enka"
+ ],
+ "or": [
+ "6003195758468"
+ ]
+ },
+ {
+ "name": [
+ "Chillwave"
+ ],
+ "or": [
+ "6003275117508"
+ ]
+ },
+ {
+ "name": [
+ "Kroncong"
+ ],
+ "or": [
+ "6003130937636"
+ ]
+ },
+ {
+ "name": [
+ "J-Rock"
+ ],
+ "or": [
+ "6003224666576"
+ ]
+ },
+ {
+ "name": [
+ "Sea shanty"
+ ],
+ "or": [
+ "6003075199293"
+ ]
+ },
+ {
+ "name": [
+ "Brazilian hip hop"
+ ],
+ "or": [
+ "6003232565733"
+ ]
+ },
+ {
+ "name": [
+ "Klezmer"
+ ],
+ "or": [
+ "6003537420063"
+ ]
+ },
+ {
+ "name": [
+ "Langgam jawa"
+ ],
+ "or": [
+ "6003460302303"
+ ]
+ },
+ {
+ "name": [
+ "Caf\u00cc\u00a9-chantant"
+ ],
+ "or": [
+ "6003292828543"
+ ]
+ },
+ {
+ "name": [
+ "Jazz standard"
+ ],
+ "or": [
+ "6003297436730"
+ ]
+ },
+ {
+ "name": [
+ "Sevillanas"
+ ],
+ "or": [
+ "6003279424180"
+ ]
+ },
+ {
+ "name": [
+ "Canso (song)"
+ ],
+ "or": [
+ "6003700650383"
+ ]
+ },
+ {
+ "name": [
+ "Chinese rock"
+ ],
+ "or": [
+ "6003118977645"
+ ]
+ },
+ {
+ "name": [
+ "African hip hop"
+ ],
+ "or": [
+ "6002839868079"
+ ]
+ },
+ {
+ "name": [
+ "Bard (Soviet Union)"
+ ],
+ "or": [
+ "6003231676698"
+ ]
+ },
+ {
+ "name": [
+ "dub"
+ ],
+ "or": [
+ "6003160084208"
+ ]
+ },
+ {
+ "name": [
+ "Kwela"
+ ],
+ "or": [
+ "6003332764632"
+ ]
+ },
+ {
+ "name": [
+ "Chopped and screwed"
+ ],
+ "or": [
+ "6002984378320"
+ ]
+ },
+ {
+ "name": [
+ "Kingdom song"
+ ],
+ "or": [
+ "6018212937980"
+ ]
+ },
+ {
+ "name": [
+ "Chinese opera"
+ ],
+ "or": [
+ "6003313543763"
+ ]
+ },
+ {
+ "name": [
+ "Baltimore club"
+ ],
+ "or": [
+ "6003293664179"
+ ]
+ },
+ {
+ "name": [
+ "Bouyon music"
+ ],
+ "or": [
+ "6003365972541"
+ ]
+ },
+ {
+ "name": [
+ "R&B/Soul"
+ ],
+ "or": [
+ "6003968219348"
+ ]
+ },
+ {
+ "name": [
+ "Medieval metal"
+ ],
+ "or": [
+ "6002930967362"
+ ]
+ },
+ {
+ "name": [
+ "Czech hip hop"
+ ],
+ "or": [
+ "6002919115955"
+ ]
+ },
+ {
+ "name": [
+ "Chaabi (music)"
+ ],
+ "or": [
+ "6003313185799"
+ ]
+ },
+ {
+ "name": [
+ "Liquid funk"
+ ],
+ "or": [
+ "6003041964529"
+ ]
+ },
+ {
+ "name": [
+ "Hoedown"
+ ],
+ "or": [
+ "6003370602135"
+ ]
+ },
+ {
+ "name": [
+ "Copla (music)"
+ ],
+ "or": [
+ "6003384310800"
+ ]
+ },
+ {
+ "name": [
+ "Hardtechno"
+ ],
+ "or": [
+ "6003133372614"
+ ]
+ },
+ {
+ "name": [
+ "Rock en espa\u00cc\u00b1ol"
+ ],
+ "or": [
+ "6003123296349"
+ ]
+ },
+ {
+ "name": [
+ "Crossover (music)"
+ ],
+ "or": [
+ "6003106754229"
+ ]
+ },
+ {
+ "name": [
+ "Joropo"
+ ],
+ "or": [
+ "6003483789398"
+ ]
+ },
+ {
+ "name": [
+ "Zarzuela"
+ ],
+ "or": [
+ "6003324704577"
+ ]
+ },
+ {
+ "name": [
+ "Apala"
+ ],
+ "or": [
+ "6003257232882"
+ ]
+ },
+ {
+ "name": [
+ "New rave"
+ ],
+ "or": [
+ "6003408718477"
+ ]
+ },
+ {
+ "name": [
+ "Music of Hawaii"
+ ],
+ "or": [
+ "6003126046549"
+ ]
+ },
+ {
+ "name": [
+ "West Coast jazz"
+ ],
+ "or": [
+ "6003349875151"
+ ]
+ },
+ {
+ "name": [
+ "Vocal jazz"
+ ],
+ "or": [
+ "6003331463977"
+ ]
+ },
+ {
+ "name": [
+ "Punk jazz"
+ ],
+ "or": [
+ "6002894541479"
+ ]
+ },
+ {
+ "name": [
+ "Sevdalinka"
+ ],
+ "or": [
+ "6002997706892"
+ ]
+ },
+ {
+ "name": [
+ "Vira (dance)"
+ ],
+ "or": [
+ "6003134140900"
+ ]
+ },
+ {
+ "name": [
+ "Tecnocumbia"
+ ],
+ "or": [
+ "6003307934745"
+ ]
+ },
+ {
+ "name": [
+ "Computer music"
+ ],
+ "or": [
+ "6003384395114"
+ ]
+ },
+ {
+ "name": [
+ "Bal-musette"
+ ],
+ "or": [
+ "6003091782258"
+ ]
+ },
+ {
+ "name": [
+ "Acid techno"
+ ],
+ "or": [
+ "6004040795748"
+ ]
+ },
+ {
+ "name": [
+ "Christian country music"
+ ],
+ "or": [
+ "6003305430969"
+ ]
+ },
+ {
+ "name": [
+ "Lo-fi music"
+ ],
+ "or": [
+ "6003121974734"
+ ]
+ },
+ {
+ "name": [
+ "Speedcore"
+ ],
+ "or": [
+ "6003066322270"
+ ]
+ },
+ {
+ "name": [
+ "Space age pop"
+ ],
+ "or": [
+ "6003349925793"
+ ]
+ },
+ {
+ "name": [
+ "Stride (music)"
+ ],
+ "or": [
+ "6002987374523"
+ ]
+ },
+ {
+ "name": [
+ "Powerviolence"
+ ],
+ "or": [
+ "6003372090996"
+ ]
+ },
+ {
+ "name": [
+ "Neo-psychedelia"
+ ],
+ "or": [
+ "6003095001458"
+ ]
+ },
+ {
+ "name": [
+ "Ska jazz"
+ ],
+ "or": [
+ "6003337821336"
+ ]
+ },
+ {
+ "name": [
+ "Cadence-lypso"
+ ],
+ "or": [
+ "6003319677991"
+ ]
+ },
+ {
+ "name": [
+ "Gothabilly"
+ ],
+ "or": [
+ "6003025504293"
+ ]
+ },
+ {
+ "name": [
+ "Rap opera"
+ ],
+ "or": [
+ "6003119188245"
+ ]
+ },
+ {
+ "name": [
+ "musica llanera"
+ ],
+ "or": [
+ "6003147800026"
+ ]
+ },
+ {
+ "name": [
+ "Byzantine music"
+ ],
+ "or": [
+ "6003323306443"
+ ]
+ },
+ {
+ "name": [
+ "Ghettotech"
+ ],
+ "or": [
+ "6003168531922"
+ ]
+ },
+ {
+ "name": [
+ "Salsa dura"
+ ],
+ "or": [
+ "6003985333548"
+ ]
+ },
+ {
+ "name": [
+ "Ghetto house"
+ ],
+ "or": [
+ "6003195202298"
+ ]
+ },
+ {
+ "name": [
+ "Indian rock"
+ ],
+ "or": [
+ "6003108425790"
+ ]
+ },
+ {
+ "name": [
+ "Jug band"
+ ],
+ "or": [
+ "6003319554591"
+ ]
+ },
+ {
+ "name": [
+ "Chutney Soca"
+ ],
+ "or": [
+ "6003050235616"
+ ]
+ },
+ {
+ "name": [
+ "Jing ping"
+ ],
+ "or": [
+ "6003328850448"
+ ]
+ },
+ {
+ "name": [
+ "Punto guajiro"
+ ],
+ "or": [
+ "6003228725499"
+ ]
+ },
+ {
+ "name": [
+ "Eisa (dance)"
+ ],
+ "or": [
+ "6003583279103"
+ ]
+ },
+ {
+ "name": [
+ "New Acoustic Music"
+ ],
+ "or": [
+ "6003357934056"
+ ]
+ },
+ {
+ "name": [
+ "Boi (music)"
+ ],
+ "or": [
+ "6003374885777"
+ ]
+ },
+ {
+ "name": [
+ "Pep band"
+ ],
+ "or": [
+ "6003113851900"
+ ]
+ },
+ {
+ "name": [
+ "Buddhist chant"
+ ],
+ "or": [
+ "6003166543358"
+ ]
+ },
+ {
+ "name": [
+ "Rebetiko"
+ ],
+ "or": [
+ "6003166777430"
+ ]
+ },
+ {
+ "name": [
+ "Vaporwave"
+ ],
+ "or": [
+ "6017366308270"
+ ]
+ },
+ {
+ "name": [
+ "Elevator music"
+ ],
+ "or": [
+ "6003704579513"
+ ]
+ },
+ {
+ "name": [
+ "\u00be\u00b5\u0081\u008f\u00c1\u00ce\u008e\u00d9_\u00be\u00ac\u00e2"
+ ],
+ "or": [
+ "6003664675716"
+ ]
+ },
+ {
+ "name": [
+ "Hungarian folk music"
+ ],
+ "or": [
+ "6003980190348"
+ ]
+ },
+ {
+ "name": [
+ "Ambient house"
+ ],
+ "or": [
+ "6003287505400"
+ ]
+ },
+ {
+ "name": [
+ "Art punk"
+ ],
+ "or": [
+ "6003331536837"
+ ]
+ },
+ {
+ "name": [
+ "Scottish highland dance"
+ ],
+ "or": [
+ "6003212328933"
+ ]
+ },
+ {
+ "name": [
+ "Oom-pah"
+ ],
+ "or": [
+ "6003159893408"
+ ]
+ },
+ {
+ "name": [
+ "M\u0080\u0081ori music"
+ ],
+ "or": [
+ "6003372788195"
+ ]
+ },
+ {
+ "name": [
+ "Hard NRG"
+ ],
+ "or": [
+ "6003217603467"
+ ]
+ },
+ {
+ "name": [
+ "Son Jarocho"
+ ],
+ "or": [
+ "6003183763212"
+ ]
+ },
+ {
+ "name": [
+ "Pansori"
+ ],
+ "or": [
+ "6003090697701"
+ ]
+ },
+ {
+ "name": [
+ "Chicago hip hop"
+ ],
+ "or": [
+ "6003404736564"
+ ]
+ },
+ {
+ "name": [
+ "Irish rebel music"
+ ],
+ "or": [
+ "6003080842397"
+ ]
+ },
+ {
+ "name": [
+ "New school hip hop"
+ ],
+ "or": [
+ "6003270750502"
+ ]
+ },
+ {
+ "name": [
+ "Low Bap"
+ ],
+ "or": [
+ "6003091264258"
+ ]
+ },
+ {
+ "name": [
+ "Coladeira"
+ ],
+ "or": [
+ "6003649842716"
+ ]
+ },
+ {
+ "name": [
+ "Hindu music"
+ ],
+ "or": [
+ "6002905697879"
+ ]
+ },
+ {
+ "name": [
+ "Latin soul"
+ ],
+ "or": [
+ "6002902932910"
+ ]
+ },
+ {
+ "name": [
+ "Top R&B/Hip-Hop Albums"
+ ],
+ "or": [
+ "6003365703941"
+ ]
+ },
+ {
+ "name": [
+ "Merengue t\u00cc_pico"
+ ],
+ "or": [
+ "6003159897382"
+ ]
+ },
+ {
+ "name": [
+ "Chinese hip hop"
+ ],
+ "or": [
+ "6003551067109"
+ ]
+ },
+ {
+ "name": [
+ "Trad jazz"
+ ],
+ "or": [
+ "6003225097661"
+ ]
+ },
+ {
+ "name": [
+ "Huayno"
+ ],
+ "or": [
+ "6003396678823"
+ ]
+ },
+ {
+ "name": [
+ "Indigenous Australian music"
+ ],
+ "or": [
+ "6004180132295"
+ ]
+ },
+ {
+ "name": [
+ "Bozlak"
+ ],
+ "or": [
+ "6003424475140"
+ ]
+ },
+ {
+ "name": [
+ "Rock Against Communism"
+ ],
+ "or": [
+ "6003230067788"
+ ]
+ },
+ {
+ "name": [
+ "P-Funk"
+ ],
+ "or": [
+ "6003540394873"
+ ]
+ },
+ {
+ "name": [
+ "Straight-ahead jazz"
+ ],
+ "or": [
+ "6003280838410"
+ ]
+ },
+ {
+ "name": [
+ "Atonality"
+ ],
+ "or": [
+ "6003142937461"
+ ]
+ },
+ {
+ "name": [
+ "Mainstream jazz"
+ ],
+ "or": [
+ "6003108844190"
+ ]
+ },
+ {
+ "name": [
+ "Romani music"
+ ],
+ "or": [
+ "6003495292827"
+ ]
+ },
+ {
+ "name": [
+ "Bikutsi"
+ ],
+ "or": [
+ "6003299340611"
+ ]
+ },
+ {
+ "name": [
+ "Rock and Roll (dance)"
+ ],
+ "or": [
+ "6004188004095"
+ ]
+ },
+ {
+ "name": [
+ "Women's music"
+ ],
+ "or": [
+ "6003419242477"
+ ]
+ },
+ {
+ "name": [
+ "Sacred Harp"
+ ],
+ "or": [
+ "6003116080142"
+ ]
+ },
+ {
+ "name": [
+ "Unblack metal"
+ ],
+ "or": [
+ "6003654492478"
+ ]
+ },
+ {
+ "name": [
+ "Music of the Republic of Macedonia"
+ ],
+ "or": [
+ "6004218357506"
+ ]
+ },
+ {
+ "name": [
+ "Ukg"
+ ],
+ "or": [
+ "6003170087702"
+ ]
+ },
+ {
+ "name": [
+ "Slack-key guitar"
+ ],
+ "or": [
+ "6003231420776"
+ ]
+ },
+ {
+ "name": [
+ "Music of Brittany"
+ ],
+ "or": [
+ "6003309408253"
+ ]
+ },
+ {
+ "name": [
+ "Gagaku"
+ ],
+ "or": [
+ "6003005087692"
+ ]
+ },
+ {
+ "name": [
+ "Russian rock"
+ ],
+ "or": [
+ "6003012509881"
+ ]
+ },
+ {
+ "name": [
+ "Igbo music"
+ ],
+ "or": [
+ "6003269557902"
+ ]
+ },
+ {
+ "name": [
+ "Industrial hip hop"
+ ],
+ "or": [
+ "6003946719266"
+ ]
+ },
+ {
+ "name": [
+ "Ukrainian folk music"
+ ],
+ "or": [
+ "6003359486004"
+ ]
+ },
+ {
+ "name": [
+ "Nu skool breaks"
+ ],
+ "or": [
+ "6003385215996"
+ ]
+ },
+ {
+ "name": [
+ "Skweee"
+ ],
+ "or": [
+ "6003106423578"
+ ]
+ },
+ {
+ "name": [
+ "Madih nabawi"
+ ],
+ "or": [
+ "6003443374137"
+ ]
+ },
+ {
+ "name": [
+ "Gwo ka"
+ ],
+ "or": [
+ "6003360803187"
+ ]
+ },
+ {
+ "name": [
+ "Ethnic electronica"
+ ],
+ "or": [
+ "6003005266492"
+ ]
+ },
+ {
+ "name": [
+ "Vocal house"
+ ],
+ "or": [
+ "6003088005417"
+ ]
+ },
+ {
+ "name": [
+ "Lento Violento"
+ ],
+ "or": [
+ "6003130647036"
+ ]
+ },
+ {
+ "name": [
+ "Jit"
+ ],
+ "or": [
+ "6003076067939"
+ ]
+ },
+ {
+ "name": [
+ "Dutch hip hop"
+ ],
+ "or": [
+ "6003332532288"
+ ]
+ },
+ {
+ "name": [
+ "Rumba congolaise"
+ ],
+ "or": [
+ "6002876983172"
+ ]
+ },
+ {
+ "name": [
+ "deutscher schlager"
+ ],
+ "or": [
+ "6003189594698"
+ ]
+ },
+ {
+ "name": [
+ "Music of Ecuador"
+ ],
+ "or": [
+ "6003148849045"
+ ]
+ },
+ {
+ "name": [
+ "Hamburger Schule"
+ ],
+ "or": [
+ "6003294029828"
+ ]
+ },
+ {
+ "name": [
+ "Ndombolo"
+ ],
+ "or": [
+ "6002932486846"
+ ]
+ },
+ {
+ "name": [
+ "East Coast\u0089\u00db\u00d2West Coast hip hop rivalry"
+ ],
+ "or": [
+ "6003909809936"
+ ]
+ },
+ {
+ "name": [
+ "Isicathamiya"
+ ],
+ "or": [
+ "6003346155251"
+ ]
+ },
+ {
+ "name": [
+ "Mbaqanga"
+ ],
+ "or": [
+ "6003195775698"
+ ]
+ },
+ {
+ "name": [
+ "New Zealand hip hop"
+ ],
+ "or": [
+ "6003461001425"
+ ]
+ },
+ {
+ "name": [
+ "Music on hold"
+ ],
+ "or": [
+ "6003126208788"
+ ]
+ },
+ {
+ "name": [
+ "SXe"
+ ],
+ "or": [
+ "6003138590966"
+ ]
+ },
+ {
+ "name": [
+ "bso"
+ ],
+ "or": [
+ "6003491673857"
+ ]
+ },
+ {
+ "name": [
+ "Kwassa kwassa"
+ ],
+ "or": [
+ "6003091073816"
+ ]
+ },
+ {
+ "name": [
+ "Sephardic music"
+ ],
+ "or": [
+ "6003110036072"
+ ]
+ },
+ {
+ "name": [
+ "Gumbe"
+ ],
+ "or": [
+ "6003347220405"
+ ]
+ },
+ {
+ "name": [
+ "Ukrainian rock"
+ ],
+ "or": [
+ "6003450383442"
+ ]
+ },
+ {
+ "name": [
+ "Adani"
+ ],
+ "or": [
+ "6003114903500"
+ ]
+ },
+ {
+ "name": [
+ "Harmoniemusik"
+ ],
+ "or": [
+ "6003528310657"
+ ]
+ },
+ {
+ "name": [
+ "Abwe"
+ ],
+ "or": [
+ "6003075586115"
+ ]
+ },
+ {
+ "name": [
+ "Cuban Rumba"
+ ],
+ "or": [
+ "6003446438080"
+ ]
+ },
+ {
+ "name": [
+ "Nu gaze"
+ ],
+ "or": [
+ "6006393718390"
+ ]
+ },
+ {
+ "name": [
+ "musique irlandaise"
+ ],
+ "or": [
+ "6003007633892"
+ ]
+ },
+ {
+ "name": [
+ "\u00be\u00b5\u0081\u008f\u00c1\u00ce\u00be\u0090\u00d0\u00be\u00c8_"
+ ],
+ "or": [
+ "6003327433163"
+ ]
+ },
+ {
+ "name": [
+ "\u008e\u00dd\u00c8\u008c_\u0090\u008e\u00d9_\u00be\u00ac\u00e2"
+ ],
+ "or": [
+ "6003655711713"
+ ]
+ },
+ {
+ "name": [
+ "2 Tone"
+ ],
+ "or": [
+ "6003392445131"
+ ]
+ },
+ {
+ "name": [
+ "Maqam al-iraqi"
+ ],
+ "or": [
+ "6002966355646"
+ ]
+ },
+ {
+ "name": [
+ "Flamenco rumba"
+ ],
+ "or": [
+ "6003665150278"
+ ]
+ },
+ {
+ "name": [
+ "21st-century classical music"
+ ],
+ "or": [
+ "6003666666820"
+ ]
+ },
+ {
+ "name": [
+ "Acoustic folk"
+ ],
+ "or": [
+ "6003074829493"
+ ]
+ },
+ {
+ "name": [
+ "rock ingles"
+ ],
+ "or": [
+ "6003065152956"
+ ]
+ },
+ {
+ "name": [
+ "Arts and music"
+ ],
+ "or": [
+ "6003029869785"
+ ]
+ },
+ {
+ "name": [
+ "Pop music"
+ ],
+ "or": [
+ "6003341579196"
+ ]
+ },
+ {
+ "name": [
+ "Rock music"
+ ],
+ "or": [
+ "6003582732907"
+ ]
+ },
+ {
+ "name": [
+ "Electronic music"
+ ],
+ "or": [
+ "6003902397066"
+ ]
+ },
+ {
+ "name": [
+ "Rhythm and blues music"
+ ],
+ "or": [
+ "6003195554098"
+ ]
+ },
+ {
+ "name": [
+ "Hip hop music"
+ ],
+ "or": [
+ "6003225556345"
+ ]
+ },
+ {
+ "name": [
+ "Soul music"
+ ],
+ "or": [
+ "6003107699532"
+ ]
+ },
+ {
+ "name": [
+ "Country music"
+ ],
+ "or": [
+ "6003493980595"
+ ]
+ },
+ {
+ "name": [
+ "Heavy metal music"
+ ],
+ "or": [
+ "6003633122583"
+ ]
+ },
+ {
+ "name": [
+ "Christian music"
+ ],
+ "or": [
+ "6003116800826"
+ ]
+ },
+ {
+ "name": [
+ "Blues music"
+ ],
+ "or": [
+ "6003257757682"
+ ]
+ },
+ {
+ "name": [
+ "Jazz music"
+ ],
+ "or": [
+ "6003146442552"
+ ]
+ },
+ {
+ "name": [
+ "House music"
+ ],
+ "or": [
+ "6003479860669"
+ ]
+ },
+ {
+ "name": [
+ "World music"
+ ],
+ "or": [
+ "6003226755338"
+ ]
+ },
+ {
+ "name": [
+ "African-American music"
+ ],
+ "or": [
+ "6003304560260"
+ ]
+ },
+ {
+ "name": [
+ "Dance music"
+ ],
+ "or": [
+ "6003179515414"
+ ]
+ },
+ {
+ "name": [
+ "Gospel music"
+ ],
+ "or": [
+ "6003071094715"
+ ]
+ },
+ {
+ "name": [
+ "Latin American music"
+ ],
+ "or": [
+ "6003003434573"
+ ]
+ },
+ {
+ "name": [
+ "Electronic dance music"
+ ],
+ "or": [
+ "6003155409305"
+ ]
+ },
+ {
+ "name": [
+ "Classical music"
+ ],
+ "or": [
+ "6002951587955"
+ ]
+ },
+ {
+ "name": [
+ "Single (music)"
+ ],
+ "or": [
+ "6003126383749"
+ ]
+ },
+ {
+ "name": [
+ "Popular music"
+ ],
+ "or": [
+ "6003199871665"
+ ]
+ },
+ {
+ "name": [
+ "New wave music"
+ ],
+ "or": [
+ "6004139436106"
+ ]
+ },
+ {
+ "name": [
+ "Contemporary Christian music"
+ ],
+ "or": [
+ "6003137183750"
+ ]
+ },
+ {
+ "name": [
+ "Christmas music"
+ ],
+ "or": [
+ "6003376508381"
+ ]
+ },
+ {
+ "name": [
+ "Swing music"
+ ],
+ "or": [
+ "6003044616045"
+ ]
+ },
+ {
+ "name": [
+ "American folk music"
+ ],
+ "or": [
+ "6003225866145"
+ ]
+ },
+ {
+ "name": [
+ "Ambient music"
+ ],
+ "or": [
+ "6003305648021"
+ ]
+ },
+ {
+ "name": [
+ "Trance music"
+ ],
+ "or": [
+ "6003805457383"
+ ]
+ },
+ {
+ "name": [
+ "Bachata (music)"
+ ],
+ "or": [
+ "6003143764440"
+ ]
+ },
+ {
+ "name": [
+ "Folk music"
+ ],
+ "or": [
+ "6003290182925"
+ ]
+ },
+ {
+ "name": [
+ "Beat (music)"
+ ],
+ "or": [
+ "6003513578537"
+ ]
+ },
+ {
+ "name": [
+ "Industrial music"
+ ],
+ "or": [
+ "6003287384297"
+ ]
+ },
+ {
+ "name": [
+ "Sampling (music)"
+ ],
+ "or": [
+ "6003089744416"
+ ]
+ },
+ {
+ "name": [
+ "Salsa music"
+ ],
+ "or": [
+ "6003668231507"
+ ]
+ },
+ {
+ "name": [
+ "Electro (music)"
+ ],
+ "or": [
+ "6003395797326"
+ ]
+ },
+ {
+ "name": [
+ "Calypso music"
+ ],
+ "or": [
+ "6003137134500"
+ ]
+ },
+ {
+ "name": [
+ "Lounge music"
+ ],
+ "or": [
+ "6003331292897"
+ ]
+ },
+ {
+ "name": [
+ "Phrase (music)"
+ ],
+ "or": [
+ "6003412920206"
+ ]
+ },
+ {
+ "name": [
+ "Merengue music"
+ ],
+ "or": [
+ "6003332917632"
+ ]
+ },
+ {
+ "name": [
+ "Solo (music)"
+ ],
+ "or": [
+ "6003101675270"
+ ]
+ },
+ {
+ "name": [
+ "Cha-cha-cha (music)"
+ ],
+ "or": [
+ "6003647048620"
+ ]
+ },
+ {
+ "name": [
+ "Pitch (music)"
+ ],
+ "or": [
+ "6003364445593"
+ ]
+ },
+ {
+ "name": [
+ "Mexican pop music"
+ ],
+ "or": [
+ "6002950184974"
+ ]
+ },
+ {
+ "name": [
+ "Dub (music)"
+ ],
+ "or": [
+ "6003968184872"
+ ]
+ },
+ {
+ "name": [
+ "Emo (music)"
+ ],
+ "or": [
+ "6003347724581"
+ ]
+ },
+ {
+ "name": [
+ "Romantic music"
+ ],
+ "or": [
+ "6003648129546"
+ ]
+ },
+ {
+ "name": [
+ "Banda (music)"
+ ],
+ "or": [
+ "6003288085327"
+ ]
+ },
+ {
+ "name": [
+ "Beautiful music"
+ ],
+ "or": [
+ "6003161934855"
+ ]
+ },
+ {
+ "name": [
+ "Norte\u00cc\u00b1o (music)"
+ ],
+ "or": [
+ "6003255897001"
+ ]
+ },
+ {
+ "name": [
+ "Contemporary worship music"
+ ],
+ "or": [
+ "6003351510719"
+ ]
+ },
+ {
+ "name": [
+ "Bhangra (music)"
+ ],
+ "or": [
+ "6005561450318"
+ ]
+ },
+ {
+ "name": [
+ "Mambo (music)"
+ ],
+ "or": [
+ "6003869469960"
+ ]
+ },
+ {
+ "name": [
+ "Chill-out music"
+ ],
+ "or": [
+ "6003139029576"
+ ]
+ },
+ {
+ "name": [
+ "Bluegrass music"
+ ],
+ "or": [
+ "6003195915098"
+ ]
+ },
+ {
+ "name": [
+ "Old-time music"
+ ],
+ "or": [
+ "6002897020162"
+ ]
+ },
+ {
+ "name": [
+ "Son (music)"
+ ],
+ "or": [
+ "6002997912850"
+ ]
+ },
+ {
+ "name": [
+ "Hook (music)"
+ ],
+ "or": [
+ "6003198322801"
+ ]
+ },
+ {
+ "name": [
+ "Hindustani classical music"
+ ],
+ "or": [
+ "6003021423329"
+ ]
+ },
+ {
+ "name": [
+ "New-age music"
+ ],
+ "or": [
+ "6003269052302"
+ ]
+ },
+ {
+ "name": [
+ "Key (music)"
+ ],
+ "or": [
+ "6003349533951"
+ ]
+ },
+ {
+ "name": [
+ "Video game music"
+ ],
+ "or": [
+ "6003372351579"
+ ]
+ },
+ {
+ "name": [
+ "Arabic pop music"
+ ],
+ "or": [
+ "6003107527835"
+ ]
+ },
+ {
+ "name": [
+ "Psychedelic music"
+ ],
+ "or": [
+ "6003088995992"
+ ]
+ },
+ {
+ "name": [
+ "Mashup (music)"
+ ],
+ "or": [
+ "6003207929733"
+ ]
+ },
+ {
+ "name": [
+ "Traditional pop music"
+ ],
+ "or": [
+ "6002999936173"
+ ]
+ },
+ {
+ "name": [
+ "Glitch (music)"
+ ],
+ "or": [
+ "6003390337396"
+ ]
+ },
+ {
+ "name": [
+ "Adult contemporary music"
+ ],
+ "or": [
+ "6003190795324"
+ ]
+ },
+ {
+ "name": [
+ "Acoustic music"
+ ],
+ "or": [
+ "6002911585572"
+ ]
+ },
+ {
+ "name": [
+ "Independent music"
+ ],
+ "or": [
+ "6003702942913"
+ ]
+ },
+ {
+ "name": [
+ "Drone music"
+ ],
+ "or": [
+ "6003709566983"
+ ]
+ },
+ {
+ "name": [
+ "Tejano music"
+ ],
+ "or": [
+ "6003324073606"
+ ]
+ },
+ {
+ "name": [
+ "Arabic music"
+ ],
+ "or": [
+ "6003048815785"
+ ]
+ },
+ {
+ "name": [
+ "String (music)"
+ ],
+ "or": [
+ "6004177214295"
+ ]
+ },
+ {
+ "name": [
+ "Bar (music)"
+ ],
+ "or": [
+ "6003361025393"
+ ]
+ },
+ {
+ "name": [
+ "Tonic (music)"
+ ],
+ "or": [
+ "6003375037781"
+ ]
+ },
+ {
+ "name": [
+ "Organ (music)"
+ ],
+ "or": [
+ "6003236483661"
+ ]
+ },
+ {
+ "name": [
+ "Mode (music)"
+ ],
+ "or": [
+ "6005983649424"
+ ]
+ },
+ {
+ "name": [
+ "Screaming (music)"
+ ],
+ "or": [
+ "6003406586218"
+ ]
+ },
+ {
+ "name": [
+ "Dynamics (music)"
+ ],
+ "or": [
+ "6003160751217"
+ ]
+ },
+ {
+ "name": [
+ "Chord (music)"
+ ],
+ "or": [
+ "6003374839725"
+ ]
+ },
+ {
+ "name": [
+ "Sheet music"
+ ],
+ "or": [
+ "6003435366531"
+ ]
+ },
+ {
+ "name": [
+ "Bridge (music)"
+ ],
+ "or": [
+ "6003354225530"
+ ]
+ },
+ {
+ "name": [
+ "Distortion (music)"
+ ],
+ "or": [
+ "6003398869535"
+ ]
+ },
+ {
+ "name": [
+ "1980s in music"
+ ],
+ "or": [
+ "6003294080451"
+ ]
+ },
+ {
+ "name": [
+ "Bass music"
+ ],
+ "or": [
+ "6005578908197"
+ ]
+ },
+ {
+ "name": [
+ "Meter (music)"
+ ],
+ "or": [
+ "6003724583946"
+ ]
+ },
+ {
+ "name": [
+ "Rhapsody (music)"
+ ],
+ "or": [
+ "6002987504923"
+ ]
+ },
+ {
+ "name": [
+ "Carol (music)"
+ ],
+ "or": [
+ "6003121248416"
+ ]
+ },
+ {
+ "name": [
+ "Trill (music)"
+ ],
+ "or": [
+ "6003121824782"
+ ]
+ },
+ {
+ "name": [
+ "Regional styles of Mexican music"
+ ],
+ "or": [
+ "6003248641601"
+ ]
+ },
+ {
+ "name": [
+ "Scale (music)"
+ ],
+ "or": [
+ "6005044660014"
+ ]
+ },
+ {
+ "name": [
+ "Break (music)"
+ ],
+ "or": [
+ "6003158390408"
+ ]
+ },
+ {
+ "name": [
+ "Motif (music)"
+ ],
+ "or": [
+ "6003320628138"
+ ]
+ },
+ {
+ "name": [
+ "Programming (music)"
+ ],
+ "or": [
+ "6003640912020"
+ ]
+ },
+ {
+ "name": [
+ "Honorific nicknames in popular music"
+ ],
+ "or": [
+ "6002933588373"
+ ]
+ },
+ {
+ "name": [
+ "Interval (music)"
+ ],
+ "or": [
+ "6003499589031"
+ ]
+ },
+ {
+ "name": [
+ "Demo (music)"
+ ],
+ "or": [
+ "6003645207116"
+ ]
+ },
+ {
+ "name": [
+ "Natural (music)"
+ ],
+ "or": [
+ "6003214693085"
+ ]
+ },
+ {
+ "name": [
+ "Bai\u00cc\u00a3o (music)"
+ ],
+ "or": [
+ "6003063267081"
+ ]
+ },
+ {
+ "name": [
+ "Flat (music)"
+ ],
+ "or": [
+ "6003280789301"
+ ]
+ },
+ {
+ "name": [
+ "Globus (music)"
+ ],
+ "or": [
+ "6002955747555"
+ ]
+ },
+ {
+ "name": [
+ "Appalachian music"
+ ],
+ "or": [
+ "6003154008505"
+ ]
+ },
+ {
+ "name": [
+ "Bow (music)"
+ ],
+ "or": [
+ "6002995306859"
+ ]
+ },
+ {
+ "name": [
+ "Lick (music)"
+ ],
+ "or": [
+ "6003074689407"
+ ]
+ },
+ {
+ "name": [
+ "Australian folk music"
+ ],
+ "or": [
+ "6002911767679"
+ ]
+ },
+ {
+ "name": [
+ "Cadence (music)"
+ ],
+ "or": [
+ "6004173349624"
+ ]
+ },
+ {
+ "name": [
+ "Ryukyuan music"
+ ],
+ "or": [
+ "6003365143651"
+ ]
+ },
+ {
+ "name": [
+ "Release (music)"
+ ],
+ "or": [
+ "6003499547431"
+ ]
+ },
+ {
+ "name": [
+ "Inversion (music)"
+ ],
+ "or": [
+ "6003219582722"
+ ]
+ },
+ {
+ "name": [
+ "Slapping (music)"
+ ],
+ "or": [
+ "6003029061585"
+ ]
+ },
+ {
+ "name": [
+ "Mute (music)"
+ ],
+ "or": [
+ "6003145530040"
+ ]
+ },
+ {
+ "name": [
+ "Sharp (music)"
+ ],
+ "or": [
+ "6003432335191"
+ ]
+ },
+ {
+ "name": [
+ "1990s in music"
+ ],
+ "or": [
+ "6003582560438"
+ ]
+ },
+ {
+ "name": [
+ "Conclusion (music)"
+ ],
+ "or": [
+ "6003122736124"
+ ]
+ },
+ {
+ "name": [
+ "Wonky (music)"
+ ],
+ "or": [
+ "6003196765724"
+ ]
+ },
+ {
+ "name": [
+ "1960s in music"
+ ],
+ "or": [
+ "6003330205006"
+ ]
+ },
+ {
+ "name": [
+ "Star Wars music"
+ ],
+ "or": [
+ "6003106824790"
+ ]
+ },
+ {
+ "name": [
+ "Ensalada (music)"
+ ],
+ "or": [
+ "6003416772135"
+ ]
+ },
+ {
+ "name": [
+ "Variation (music)"
+ ],
+ "or": [
+ "6003456064883"
+ ]
+ },
+ {
+ "name": [
+ "Shruti (music)"
+ ],
+ "or": [
+ "6003064081881"
+ ]
+ },
+ {
+ "name": [
+ "Wedding music"
+ ],
+ "or": [
+ "6003150065349"
+ ]
+ },
+ {
+ "name": [
+ "Ornament (music)"
+ ],
+ "or": [
+ "6004076350948"
+ ]
+ },
+ {
+ "name": [
+ "Register (music)"
+ ],
+ "or": [
+ "6003254392967"
+ ]
+ },
+ {
+ "name": [
+ "Coda (music)"
+ ],
+ "or": [
+ "6003301363102"
+ ]
+ },
+ {
+ "name": [
+ "Afro/Cosmic music"
+ ],
+ "or": [
+ "6003116630026"
+ ]
+ },
+ {
+ "name": [
+ "Aspect of music"
+ ],
+ "or": [
+ "6003294131779"
+ ]
+ },
+ {
+ "name": [
+ "Canon (music)"
+ ],
+ "or": [
+ "6003301003902"
+ ]
+ },
+ {
+ "name": [
+ "Staff (music)"
+ ],
+ "or": [
+ "6004076359548"
+ ]
+ },
+ {
+ "name": [
+ "Kurdish music"
+ ],
+ "or": [
+ "6003284747211"
+ ]
+ },
+ {
+ "name": [
+ "Rest (music)"
+ ],
+ "or": [
+ "6003369446021"
+ ]
+ },
+ {
+ "name": [
+ "1970s in music"
+ ],
+ "or": [
+ "6003380218877"
+ ]
+ },
+ {
+ "name": [
+ "Modulation (music)"
+ ],
+ "or": [
+ "6003238691449"
+ ]
+ },
+ {
+ "name": [
+ "Eckomusic"
+ ],
+ "or": [
+ "6003387074525"
+ ]
+ },
+ {
+ "name": [
+ "Set (music)"
+ ],
+ "or": [
+ "6003383868400"
+ ]
+ },
+ {
+ "name": [
+ "Mass (music)"
+ ],
+ "or": [
+ "6003225546872"
+ ]
+ },
+ {
+ "name": [
+ "Triad (music)"
+ ],
+ "or": [
+ "6003070962556"
+ ]
+ },
+ {
+ "name": [
+ "Generalmusic"
+ ],
+ "or": [
+ "6003221519667"
+ ]
+ },
+ {
+ "name": [
+ "Q-music"
+ ],
+ "or": [
+ "6003111726826"
+ ]
+ },
+ {
+ "name": [
+ "addicted music"
+ ],
+ "or": [
+ "6003185382414"
+ ]
+ },
+ {
+ "name": [
+ "Prelude (music)"
+ ],
+ "or": [
+ "6003226969285"
+ ]
+ },
+ {
+ "name": [
+ "Belting (music)"
+ ],
+ "or": [
+ "6003674637726"
+ ]
+ },
+ {
+ "name": [
+ "Range (music)"
+ ],
+ "or": [
+ "6003354785727"
+ ]
+ },
+ {
+ "name": [
+ "Clinic (music)"
+ ],
+ "or": [
+ "6003145387868"
+ ]
+ },
+ {
+ "name": [
+ "Pashto music"
+ ],
+ "or": [
+ "6003372705395"
+ ]
+ },
+ {
+ "name": [
+ "Program music"
+ ],
+ "or": [
+ "6003125033349"
+ ]
+ },
+ {
+ "name": [
+ "History of music"
+ ],
+ "or": [
+ "6003298100611"
+ ]
+ },
+ {
+ "name": [
+ "Absolute music"
+ ],
+ "or": [
+ "6003431775191"
+ ]
+ },
+ {
+ "name": [
+ "Animusic"
+ ],
+ "or": [
+ "6003746651704"
+ ]
+ },
+ {
+ "name": [
+ "Gnawa music"
+ ],
+ "or": [
+ "6003146174726"
+ ]
+ },
+ {
+ "name": [
+ "Bol (music)"
+ ],
+ "or": [
+ "6003383805674"
+ ]
+ },
+ {
+ "name": [
+ "James Bond music"
+ ],
+ "or": [
+ "6003275532708"
+ ]
+ },
+ {
+ "name": [
+ "Feira Expomusic"
+ ],
+ "or": [
+ "6015989177791"
+ ]
+ },
+ {
+ "name": [
+ "Air (music)"
+ ],
+ "or": [
+ "6003213320726"
+ ]
+ },
+ {
+ "name": [
+ "Zulu music"
+ ],
+ "or": [
+ "6003227674499"
+ ]
+ },
+ {
+ "name": [
+ "The Wrecking Crew (music)"
+ ],
+ "or": [
+ "6003433439340"
+ ]
+ },
+ {
+ "name": [
+ "Contemporary Catholic liturgical music"
+ ],
+ "or": [
+ "6003605598820"
+ ]
+ },
+ {
+ "name": [
+ "Klaudia Gawlas music"
+ ],
+ "or": [
+ "6003104552035"
+ ]
+ },
+ {
+ "name": [
+ "TIMmusic"
+ ],
+ "or": [
+ "6015655274095"
+ ]
+ },
+ {
+ "name": [
+ "Aesthetics of music"
+ ],
+ "or": [
+ "6004043936948"
+ ]
+ },
+ {
+ "name": [
+ "Live electronic music"
+ ],
+ "or": [
+ "6003792839878"
+ ]
+ },
+ {
+ "name": [
+ "Articulation (music)"
+ ],
+ "or": [
+ "6003544958242"
+ ]
+ },
+ {
+ "name": [
+ "1950s in music"
+ ],
+ "or": [
+ "6003279309999"
+ ]
+ },
+ {
+ "name": [
+ "Accidental (music)"
+ ],
+ "or": [
+ "6003372797828"
+ ]
+ },
+ {
+ "name": [
+ "Pagode (music)"
+ ],
+ "or": [
+ "6005130240209"
+ ]
+ },
+ {
+ "name": [
+ "Imusic"
+ ],
+ "or": [
+ "6003332949941"
+ ]
+ },
+ {
+ "name": [
+ "All 80s music"
+ ],
+ "or": [
+ "6004118649789"
+ ]
+ },
+ {
+ "name": [
+ "Traditional Japanese music"
+ ],
+ "or": [
+ "6003142481461"
+ ]
+ },
+ {
+ "name": [
+ "Numusic"
+ ],
+ "or": [
+ "6003166858230"
+ ]
+ },
+ {
+ "name": [
+ "LGBT music"
+ ],
+ "or": [
+ "6002993276046"
+ ]
+ },
+ {
+ "name": [
+ "Hausa music"
+ ],
+ "or": [
+ "6003451470186"
+ ]
+ },
+ {
+ "name": [
+ "2000s in music"
+ ],
+ "or": [
+ "6003107797701"
+ ]
+ },
+ {
+ "name": [
+ "Elvis Presley The King of the music"
+ ],
+ "or": [
+ "6003512387064"
+ ]
+ },
+ {
+ "name": [
+ "Imitation (music)"
+ ],
+ "or": [
+ "6003896395560"
+ ]
+ },
+ {
+ "name": [
+ "Hmong music"
+ ],
+ "or": [
+ "6002920754955"
+ ]
+ },
+ {
+ "name": [
+ "Ilovemusic"
+ ],
+ "or": [
+ "6003162157233"
+ ]
+ },
+ {
+ "name": [
+ "Eclecticism in music"
+ ],
+ "or": [
+ "6003386178943"
+ ]
+ },
+ {
+ "name": [
+ "Foute Party van Q-music"
+ ],
+ "or": [
+ "6003458940344"
+ ]
+ },
+ {
+ "name": [
+ "Swedish popular music"
+ ],
+ "or": [
+ "6003511880264"
+ ]
+ },
+ {
+ "name": [
+ "Figure (music)"
+ ],
+ "or": [
+ "6002987539923"
+ ]
+ },
+ {
+ "name": [
+ "splendid music"
+ ],
+ "or": [
+ "6004181848295"
+ ]
+ },
+ {
+ "name": [
+ "Heyoka music"
+ ],
+ "or": [
+ "6003696237690"
+ ]
+ },
+ {
+ "name": [
+ "\u008a_\u00f8\u00be\u00ac\u00e2\u008e\u00d9_\u00be\u00ac\u00e2\u008c_\u00fc\u008e\u00aa\u00a2 baron school music"
+ ],
+ "or": [
+ "6003793419678"
+ ]
+ },
+ {
+ "name": [
+ "Gorani, Song, Ahang, music"
+ ],
+ "or": [
+ "6003220835647"
+ ]
+ },
+ {
+ "name": [
+ "Marc Riley BBC 6 music"
+ ],
+ "or": [
+ "6003185000961"
+ ]
+ },
+ {
+ "name": [
+ "elctronic music"
+ ],
+ "or": [
+ "6003384621605"
+ ]
+ },
+ {
+ "name": [
+ "Chinese music"
+ ],
+ "or": [
+ "6012212084353"
+ ]
+ },
+ {
+ "name": [
+ "80's rock music"
+ ],
+ "or": [
+ "6003212027647"
+ ]
+ },
+ {
+ "name": [
+ "Okinawan music"
+ ],
+ "or": [
+ "6014956879542"
+ ]
+ },
+ {
+ "name": [
+ "Heelwork to music"
+ ],
+ "or": [
+ "6003569135518"
+ ]
+ },
+ {
+ "name": [
+ "Driving around with loud music"
+ ],
+ "or": [
+ "6003333223545"
+ ]
+ },
+ {
+ "name": [
+ "1940s in music"
+ ],
+ "or": [
+ "6003249309967"
+ ]
+ },
+ {
+ "name": [
+ "Reggaeton"
+ ],
+ "or": [
+ "6003434636451"
+ ]
+ },
+ {
+ "name": [
+ "Samba"
+ ],
+ "or": [
+ "6003302709853"
+ ]
+ },
+ {
+ "name": [
+ "Ranchera"
+ ],
+ "or": [
+ "6002957429850"
+ ]
+ },
+ {
+ "name": [
+ "Mariachi"
+ ],
+ "or": [
+ "6003281529097"
+ ]
+ },
+ {
+ "name": [
+ "Cumbia"
+ ],
+ "or": [
+ "6003359723621"
+ ]
+ },
+ {
+ "name": [
+ "Bolero"
+ ],
+ "or": [
+ "6003310836308"
+ ]
+ },
+ {
+ "name": [
+ "Bossa nova"
+ ],
+ "or": [
+ "6003362445587"
+ ]
+ },
+ {
+ "name": [
+ "Brazilian rock"
+ ],
+ "or": [
+ "6003001993292"
+ ]
+ },
+ {
+ "name": [
+ "Funk carioca"
+ ],
+ "or": [
+ "6003432194483"
+ ]
+ },
+ {
+ "name": [
+ "Bomba (Puerto Rico)"
+ ],
+ "or": [
+ "6010678010155"
+ ]
+ },
+ {
+ "name": [
+ "Son montuno"
+ ],
+ "or": [
+ "6003142697661"
+ ]
+ },
+ {
+ "name": [
+ "Guaracha"
+ ],
+ "or": [
+ "6003538498427"
+ ]
+ },
+ {
+ "name": [
+ "Corrido"
+ ],
+ "or": [
+ "6002957119523"
+ ]
+ },
+ {
+ "name": [
+ "Vallenato"
+ ],
+ "or": [
+ "6003159960615"
+ ]
+ },
+ {
+ "name": [
+ "Conjunto"
+ ],
+ "or": [
+ "6003059966756"
+ ]
+ },
+ {
+ "name": [
+ "Rondalla"
+ ],
+ "or": [
+ "6003398685730"
+ ]
+ },
+ {
+ "name": [
+ "Ragga"
+ ],
+ "or": [
+ "6002877765172"
+ ]
+ },
+ {
+ "name": [
+ "Jongo"
+ ],
+ "or": [
+ "6002879515572"
+ ]
+ },
+ {
+ "name": [
+ "Techno"
+ ],
+ "or": [
+ "6002911345572"
+ ]
+ },
+ {
+ "name": [
+ "Electronica"
+ ],
+ "or": [
+ "6002920671555"
+ ]
+ },
+ {
+ "name": [
+ "UK garage"
+ ],
+ "or": [
+ "6002933528373"
+ ]
+ },
+ {
+ "name": [
+ "Progressive rock"
+ ],
+ "or": [
+ "6002933925173"
+ ]
+ },
+ {
+ "name": [
+ "Capoeira music"
+ ],
+ "or": [
+ "6002943201846"
+ ]
+ },
+ {
+ "name": [
+ "Polka"
+ ],
+ "or": [
+ "6002949913174"
+ ]
+ },
+ {
+ "name": [
+ "Candombe"
+ ],
+ "or": [
+ "6002956856323"
+ ]
+ },
+ {
+ "name": [
+ "Grupera"
+ ],
+ "or": [
+ "6002966762174"
+ ]
+ },
+ {
+ "name": [
+ "Garage rock"
+ ],
+ "or": [
+ "6002970980594"
+ ]
+ },
+ {
+ "name": [
+ "Maloya"
+ ],
+ "or": [
+ "6002977813555"
+ ]
+ },
+ {
+ "name": [
+ "Acro dance"
+ ],
+ "or": [
+ "6002982528123"
+ ]
+ },
+ {
+ "name": [
+ "House dance"
+ ],
+ "or": [
+ "6002984525019"
+ ]
+ },
+ {
+ "name": [
+ "Funan\u00e1"
+ ],
+ "or": [
+ "6002992700173"
+ ]
+ },
+ {
+ "name": [
+ "Bouyon"
+ ],
+ "or": [
+ "6003003954819"
+ ]
+ },
+ {
+ "name": [
+ "Music"
+ ],
+ "or": [
+ "6003020834693"
+ ]
+ },
+ {
+ "name": [
+ "Guaguanc\u00f3"
+ ],
+ "or": [
+ "6003022934356"
+ ]
+ },
+ {
+ "name": [
+ "Dubstep"
+ ],
+ "or": [
+ "6003022971356"
+ ]
+ },
+ {
+ "name": [
+ "Carnavalito"
+ ],
+ "or": [
+ "6003029817807"
+ ]
+ },
+ {
+ "name": [
+ "Forr\u00f3"
+ ],
+ "or": [
+ "6003049884045"
+ ]
+ },
+ {
+ "name": [
+ "Breakbeat"
+ ],
+ "or": [
+ "6003049979681"
+ ]
+ },
+ {
+ "name": [
+ "Smooth jazz"
+ ],
+ "or": [
+ "6003061600182"
+ ]
+ },
+ {
+ "name": [
+ "Jerkin'"
+ ],
+ "or": [
+ "6003066041870"
+ ]
+ },
+ {
+ "name": [
+ "Delta blues"
+ ],
+ "or": [
+ "6003076457415"
+ ]
+ },
+ {
+ "name": [
+ "Folk rock"
+ ],
+ "or": [
+ "6003081819997"
+ ]
+ },
+ {
+ "name": [
+ "Funk metal"
+ ],
+ "or": [
+ "6003089083997"
+ ]
+ },
+ {
+ "name": [
+ "Latin pop"
+ ],
+ "or": [
+ "6003091232616"
+ ]
+ },
+ {
+ "name": [
+ "East Coast hip hop"
+ ],
+ "or": [
+ "6003092152617"
+ ]
+ },
+ {
+ "name": [
+ "Rock and roll"
+ ],
+ "or": [
+ "6003104445629"
+ ]
+ },
+ {
+ "name": [
+ "Canadian rock"
+ ],
+ "or": [
+ "6003106424990"
+ ]
+ },
+ {
+ "name": [
+ "Dub poetry"
+ ],
+ "or": [
+ "6003106692778"
+ ]
+ },
+ {
+ "name": [
+ "Krumping"
+ ],
+ "or": [
+ "6003113864700"
+ ]
+ },
+ {
+ "name": [
+ "Pasodoble"
+ ],
+ "or": [
+ "6003115465942"
+ ]
+ },
+ {
+ "name": [
+ "Bachat\u00f3n"
+ ],
+ "or": [
+ "6003116081542"
+ ]
+ },
+ {
+ "name": [
+ "Batucada"
+ ],
+ "or": [
+ "6003116844426"
+ ]
+ },
+ {
+ "name": [
+ "Viennese Waltz"
+ ],
+ "or": [
+ "6003119448645"
+ ]
+ },
+ {
+ "name": [
+ "Spanish hip hop"
+ ],
+ "or": [
+ "6003121004122"
+ ]
+ },
+ {
+ "name": [
+ "Zouk Retro"
+ ],
+ "or": [
+ "6003123780749"
+ ]
+ },
+ {
+ "name": [
+ "Psychedelic rock"
+ ],
+ "or": [
+ "6003126178149"
+ ]
+ },
+ {
+ "name": [
+ "Cueca"
+ ],
+ "or": [
+ "6003131400417"
+ ]
+ },
+ {
+ "name": [
+ "Swing (dance)"
+ ],
+ "or": [
+ "6003133809445"
+ ]
+ },
+ {
+ "name": [
+ "Samba-can\u00e7\u00e3o"
+ ],
+ "or": [
+ "6003136674990"
+ ]
+ },
+ {
+ "name": [
+ "Tarantella"
+ ],
+ "or": [
+ "6003137712390"
+ ]
+ },
+ {
+ "name": [
+ "Latin dance"
+ ],
+ "or": [
+ "6003142268166"
+ ]
+ },
+ {
+ "name": [
+ "Roots reggae"
+ ],
+ "or": [
+ "6003144702184"
+ ]
+ },
+ {
+ "name": [
+ "Coup\u00e9-D\u00e9cal\u00e9"
+ ],
+ "or": [
+ "6003145872836"
+ ]
+ },
+ {
+ "name": [
+ "Latin Power Music"
+ ],
+ "or": [
+ "6003146465040"
+ ]
+ },
+ {
+ "name": [
+ "Big band"
+ ],
+ "or": [
+ "6003148981534"
+ ]
+ },
+ {
+ "name": [
+ "British blues"
+ ],
+ "or": [
+ "6003165885234"
+ ]
+ },
+ {
+ "name": [
+ "Horrorcore"
+ ],
+ "or": [
+ "6003166425415"
+ ]
+ },
+ {
+ "name": [
+ "Mento"
+ ],
+ "or": [
+ "6003166796558"
+ ]
+ },
+ {
+ "name": [
+ "Chicago blues"
+ ],
+ "or": [
+ "6003173222978"
+ ]
+ },
+ {
+ "name": [
+ "Trova"
+ ],
+ "or": [
+ "6003173978350"
+ ]
+ },
+ {
+ "name": [
+ "Spoken word"
+ ],
+ "or": [
+ "6003175168414"
+ ]
+ },
+ {
+ "name": [
+ "Contemporary R&B"
+ ],
+ "or": [
+ "6003180715102"
+ ]
+ },
+ {
+ "name": [
+ "Chamam\u00e9"
+ ],
+ "or": [
+ "6003181682414"
+ ]
+ },
+ {
+ "name": [
+ "West Coast hip hop"
+ ],
+ "or": [
+ "6003184558161"
+ ]
+ },
+ {
+ "name": [
+ "Southern hip hop"
+ ],
+ "or": [
+ "6003195522298"
+ ]
+ },
+ {
+ "name": [
+ "Guajira (music)"
+ ],
+ "or": [
+ "6003203045978"
+ ]
+ },
+ {
+ "name": [
+ "Biguine"
+ ],
+ "or": [
+ "6003205382812"
+ ]
+ },
+ {
+ "name": [
+ "Timba"
+ ],
+ "or": [
+ "6003209060776"
+ ]
+ },
+ {
+ "name": [
+ "Music of Mexico"
+ ],
+ "or": [
+ "6003211709533"
+ ]
+ },
+ {
+ "name": [
+ "Criolla"
+ ],
+ "or": [
+ "6003221612667"
+ ]
+ },
+ {
+ "name": [
+ "Alternative hip hop"
+ ],
+ "or": [
+ "6003224474661"
+ ]
+ },
+ {
+ "name": [
+ "Christian rock"
+ ],
+ "or": [
+ "6003229628298"
+ ]
+ },
+ {
+ "name": [
+ "El Vallenato"
+ ],
+ "or": [
+ "6003232518285"
+ ]
+ },
+ {
+ "name": [
+ "Zouk (club)"
+ ],
+ "or": [
+ "6003245719567"
+ ]
+ },
+ {
+ "name": [
+ "UK funky"
+ ],
+ "or": [
+ "6003249330957"
+ ]
+ },
+ {
+ "name": [
+ "Nu metal"
+ ],
+ "or": [
+ "6003253109911"
+ ]
+ },
+ {
+ "name": [
+ "Chutney music"
+ ],
+ "or": [
+ "6003256422142"
+ ]
+ },
+ {
+ "name": [
+ "Worldbeat"
+ ],
+ "or": [
+ "6003257273769"
+ ]
+ },
+ {
+ "name": [
+ "RAPEROS"
+ ],
+ "or": [
+ "6003259307682"
+ ]
+ },
+ {
+ "name": [
+ "Samba rock"
+ ],
+ "or": [
+ "6003274985751"
+ ]
+ },
+ {
+ "name": [
+ "Alternative metal"
+ ],
+ "or": [
+ "6003279081380"
+ ]
+ },
+ {
+ "name": [
+ "B\u00e9l\u00e9"
+ ],
+ "or": [
+ "6003280261180"
+ ]
+ },
+ {
+ "name": [
+ "Punk rock"
+ ],
+ "or": [
+ "6003280772823"
+ ]
+ },
+ {
+ "name": [
+ "Salsa Bachata"
+ ],
+ "or": [
+ "6003283597410"
+ ]
+ },
+ {
+ "name": [
+ "Rap rock"
+ ],
+ "or": [
+ "6003287901769"
+ ]
+ },
+ {
+ "name": [
+ "Electro house"
+ ],
+ "or": [
+ "6003288039651"
+ ]
+ },
+ {
+ "name": [
+ "Ballroom dance"
+ ],
+ "or": [
+ "6003288536525"
+ ]
+ },
+ {
+ "name": [
+ "M\u00fasica sertaneja"
+ ],
+ "or": [
+ "6003290358456"
+ ]
+ },
+ {
+ "name": [
+ "Chacarera"
+ ],
+ "or": [
+ "6003290627725"
+ ]
+ },
+ {
+ "name": [
+ "Funk rock"
+ ],
+ "or": [
+ "6003291286338"
+ ]
+ },
+ {
+ "name": [
+ "Trival"
+ ],
+ "or": [
+ "6003302047911"
+ ]
+ },
+ {
+ "name": [
+ "Midwest hip hop"
+ ],
+ "or": [
+ "6003305536421"
+ ]
+ },
+ {
+ "name": [
+ "Reggae"
+ ],
+ "or": [
+ "6003309820509"
+ ]
+ },
+ {
+ "name": [
+ "Alternative rock"
+ ],
+ "or": [
+ "6003314955799"
+ ]
+ },
+ {
+ "name": [
+ "Post-disco"
+ ],
+ "or": [
+ "6003318595709"
+ ]
+ },
+ {
+ "name": [
+ "Ska"
+ ],
+ "or": [
+ "6003318691818"
+ ]
+ },
+ {
+ "name": [
+ "Disco"
+ ],
+ "or": [
+ "6003320931941"
+ ]
+ },
+ {
+ "name": [
+ "List of Caribbean music genres"
+ ],
+ "or": [
+ "6003324827806"
+ ]
+ },
+ {
+ "name": [
+ "Chicago house"
+ ],
+ "or": [
+ "6003326702779"
+ ]
+ },
+ {
+ "name": [
+ "Danza"
+ ],
+ "or": [
+ "6003328077648"
+ ]
+ },
+ {
+ "name": [
+ "Free funk"
+ ],
+ "or": [
+ "6003333269297"
+ ]
+ },
+ {
+ "name": [
+ "Adult hits"
+ ],
+ "or": [
+ "6003333275032"
+ ]
+ },
+ {
+ "name": [
+ "Dance-pop"
+ ],
+ "or": [
+ "6003336556256"
+ ]
+ },
+ {
+ "name": [
+ "Trip hop"
+ ],
+ "or": [
+ "6003339150136"
+ ]
+ },
+ {
+ "name": [
+ "Orquesta t\u00edpica"
+ ],
+ "or": [
+ "6003343673889"
+ ]
+ },
+ {
+ "name": [
+ "Lambada"
+ ],
+ "or": [
+ "6003346538981"
+ ]
+ },
+ {
+ "name": [
+ "Comparsa"
+ ],
+ "or": [
+ "6003348611981"
+ ]
+ },
+ {
+ "name": [
+ "narco corridos"
+ ],
+ "or": [
+ "6003350332193"
+ ]
+ },
+ {
+ "name": [
+ "Grunge"
+ ],
+ "or": [
+ "6003352237730"
+ ]
+ },
+ {
+ "name": [
+ "Songo music"
+ ],
+ "or": [
+ "6003358706387"
+ ]
+ },
+ {
+ "name": [
+ "Blues rock"
+ ],
+ "or": [
+ "6003371145740"
+ ]
+ },
+ {
+ "name": [
+ "Chang\u00fc\u00ed"
+ ],
+ "or": [
+ "6003371440540"
+ ]
+ },
+ {
+ "name": [
+ "Music of Texas"
+ ],
+ "or": [
+ "6003372646595"
+ ]
+ },
+ {
+ "name": [
+ "Champeta"
+ ],
+ "or": [
+ "6003372887195"
+ ]
+ },
+ {
+ "name": [
+ "Free jazz"
+ ],
+ "or": [
+ "6003373398777"
+ ]
+ },
+ {
+ "name": [
+ "Industrial rock"
+ ],
+ "or": [
+ "6003374068751"
+ ]
+ },
+ {
+ "name": [
+ "Rapping"
+ ],
+ "or": [
+ "6003376894381"
+ ]
+ },
+ {
+ "name": [
+ "Caribbean music in Canada"
+ ],
+ "or": [
+ "6003381389423"
+ ]
+ },
+ {
+ "name": [
+ "Jazz fusion"
+ ],
+ "or": [
+ "6003382645604"
+ ]
+ },
+ {
+ "name": [
+ "Punta"
+ ],
+ "or": [
+ "6003382671744"
+ ]
+ },
+ {
+ "name": [
+ "Electronic rock"
+ ],
+ "or": [
+ "6003384103802"
+ ]
+ },
+ {
+ "name": [
+ "corridos"
+ ],
+ "or": [
+ "6003392035743"
+ ]
+ },
+ {
+ "name": [
+ "Pachanga"
+ ],
+ "or": [
+ "6003393056931"
+ ]
+ },
+ {
+ "name": [
+ "Tecno brega"
+ ],
+ "or": [
+ "6003393292112"
+ ]
+ },
+ {
+ "name": [
+ "Reggae fusion"
+ ],
+ "or": [
+ "6003395513403"
+ ]
+ },
+ {
+ "name": [
+ "Rapcore"
+ ],
+ "or": [
+ "6003408819077"
+ ]
+ },
+ {
+ "name": [
+ "Comedy hip hop"
+ ],
+ "or": [
+ "6003434541651"
+ ]
+ },
+ {
+ "name": [
+ "Polonaise"
+ ],
+ "or": [
+ "6003444692137"
+ ]
+ },
+ {
+ "name": [
+ "Pagode"
+ ],
+ "or": [
+ "6003447997477"
+ ]
+ },
+ {
+ "name": [
+ "Twelve-bar blues"
+ ],
+ "or": [
+ "6003450578242"
+ ]
+ },
+ {
+ "name": [
+ "Tango"
+ ],
+ "or": [
+ "6003455616083"
+ ]
+ },
+ {
+ "name": [
+ "Reggaeton Style"
+ ],
+ "or": [
+ "6003481207803"
+ ]
+ },
+ {
+ "name": [
+ "Waltz"
+ ],
+ "or": [
+ "6003487311080"
+ ]
+ },
+ {
+ "name": [
+ "Punta rock"
+ ],
+ "or": [
+ "6003494614627"
+ ]
+ },
+ {
+ "name": [
+ "Soca music"
+ ],
+ "or": [
+ "6003495146231"
+ ]
+ },
+ {
+ "name": [
+ "Gangsta rap"
+ ],
+ "or": [
+ "6003498332480"
+ ]
+ },
+ {
+ "name": [
+ "Rap metal"
+ ],
+ "or": [
+ "6003531165463"
+ ]
+ },
+ {
+ "name": [
+ "Hip-hop dance"
+ ],
+ "or": [
+ "6003537059863"
+ ]
+ },
+ {
+ "name": [
+ "Drum and bass"
+ ],
+ "or": [
+ "6003537481663"
+ ]
+ },
+ {
+ "name": [
+ "Jig"
+ ],
+ "or": [
+ "6003602906820"
+ ]
+ },
+ {
+ "name": [
+ "Plena"
+ ],
+ "or": [
+ "6003646975146"
+ ]
+ },
+ {
+ "name": [
+ "Reggae genres"
+ ],
+ "or": [
+ "6003668171020"
+ ]
+ },
+ {
+ "name": [
+ "Hard rock"
+ ],
+ "or": [
+ "6003673812662"
+ ]
+ },
+ {
+ "name": [
+ "Canci\u00f3n"
+ ],
+ "or": [
+ "6003696059183"
+ ]
+ },
+ {
+ "name": [
+ "Pop rock"
+ ],
+ "or": [
+ "6003697803783"
+ ]
+ },
+ {
+ "name": [
+ "Gospel reggae"
+ ],
+ "or": [
+ "6003705090354"
+ ]
+ },
+ {
+ "name": [
+ "Samba de Gafieira"
+ ],
+ "or": [
+ "6003709582783"
+ ]
+ },
+ {
+ "name": [
+ "American rock"
+ ],
+ "or": [
+ "6003719975462"
+ ]
+ },
+ {
+ "name": [
+ "Bachata (song)"
+ ],
+ "or": [
+ "6003747096304"
+ ]
+ },
+ {
+ "name": [
+ "Chicano rock"
+ ],
+ "or": [
+ "6003901761866"
+ ]
+ },
+ {
+ "name": [
+ "Funk"
+ ],
+ "or": [
+ "6003902444066"
+ ]
+ },
+ {
+ "name": [
+ "2-step garage"
+ ],
+ "or": [
+ "6004054150348"
+ ]
+ },
+ {
+ "name": [
+ "Seggae"
+ ],
+ "or": [
+ "6004054616348"
+ ]
+ },
+ {
+ "name": [
+ "Milonga (music)"
+ ],
+ "or": [
+ "6005836190530"
+ ]
+ },
+ {
+ "name": [
+ "Progressive house"
+ ],
+ "or": [
+ "6005871542843"
+ ]
+ },
+ {
+ "name": [
+ "Grand opera"
+ ],
+ "or": [
+ "6006525703543"
+ ]
+ },
+ {
+ "name": [
+ "Marchinha"
+ ],
+ "or": [
+ "6006712827197"
+ ]
+ },
+ {
+ "name": [
+ "Future garage"
+ ],
+ "or": [
+ "6011125408852"
+ ]
+ },
+ {
+ "name": [
+ "M\u00fasica popular brasileira"
+ ],
+ "or": [
+ "6013004584342"
+ ]
+ },
+ {
+ "name": [
+ "Mexican Son music"
+ ],
+ "or": [
+ "6015371424284"
+ ]
+ }
+ ],
+ "geo_locations": [
+ {
+ "values": [
+ "US"
+ ],
+ "location_types": [
+ "home"
+ ],
+ "name": "countries"
+ }
+ ],
+ "behavior": [
+ {
+ "not": [
+ 6018745176183,
+ 6003133212372,
+ 6021722613183,
+ 6015559470583,
+ 6025978286383
+ ],
+ "name": "Not Expats OR Close Friends of Expats OR African-American OR Hispanic OR Asian-American"
+ }
+ ],
+ "genders": [
+ 0
+ ],
+ "ages_ranges": [
+ {
+ "max": 18,
+ "min": 13
+ },
+ {
+ "max": 28,
+ "min": 18
+ },
+ {
+ "max": 38,
+ "min": 28
+ },
+ {
+ "max": 65,
+ "min": 38
+ }
+ ],
+ "name": "US white music interests"
+
+}
\ No newline at end of file
diff --git a/output/README.md b/output/README.md
new file mode 100644
index 0000000..e69de29
diff --git a/src/analysis/cluster_music_genres.ipynb b/src/analysis/cluster_music_genres.ipynb
index 0bfcd2d..ac73819 100644
--- a/src/analysis/cluster_music_genres.ipynb
+++ b/src/analysis/cluster_music_genres.ipynb
@@ -10,7 +10,7 @@
},
{
"cell_type": "code",
- "execution_count": 60,
+ "execution_count": 142,
"metadata": {},
"outputs": [],
"source": [
@@ -9816,19 +9816,733 @@
},
{
"cell_type": "code",
- "execution_count": 140,
+ "execution_count": 141,
"metadata": {},
"outputs": [],
"source": [
"# sort by size for easier handling later\n",
"genre_groups = [[s, s_data] for s, s_data in combined_supergenre_data.groupby('super-super-genre')]\n",
"genre_groups = sorted(genre_groups, key=lambda x: len(x[1]), reverse=True)\n",
- "genre_groups_json = [{'super-genre':s, 'genres':s_data.loc[:, 'genre'].values.tolist()} \n",
+ "genre_groups_json = [{'super-genre':s, 'genres':s_data.loc[:, 'genre'].unique().tolist()} \n",
" for s, s_data in genre_groups]\n",
"out_file = '../../data/queries/music_genre_interests_grouped.json'\n",
"json.dump(genre_groups_json, open(out_file, 'w'), indent=4)"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## With word embeddings\n",
+ "Now let's try clustering the music genres using their semantic value according to some embeddings trained on (English) Wikipedia data."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 151,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "?f.open"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 159,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from zipfile import ZipFile\n",
+ "vocab = set()\n",
+ "# bad zip type\n",
+ "# embedding_file = '../../data/embeddings/wiki.en.zip'\n",
+ "embedding_file = '../../data/embeddings/wiki.en.vec'\n",
+ "ctr = 0\n",
+ "for l in open(embedding_file):\n",
+ " l_split = l.strip().split(' ')\n",
+ " if(ctr > 0):\n",
+ " v = l_split[0]\n",
+ " vocab.add(v)\n",
+ " ctr += 1"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 160,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "2519370 words in vocab\n"
+ ]
+ }
+ ],
+ "source": [
+ "print('%d words in vocab'%(len(vocab)))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 172,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "['ahindi',\n",
+ " 'ahindi%',\n",
+ " 'ahindra',\n",
+ " 'ahindu%',\n",
+ " 'ahindustantimes',\n",
+ " 'ahinful',\n",
+ " 'ahing',\n",
+ " 'ahingsa',\n",
+ " 'ahinoam',\n",
+ " 'ahinsa']"
+ ]
+ },
+ "execution_count": 172,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "sorted(vocab)[100000:100010]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 190,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from unidecode import unidecode\n",
+ "missing_genres = set()\n",
+ "vocab_genres = set()\n",
+ "for m in music_genres:\n",
+ " # fix hyphens and accents\n",
+ " m = m.replace('-', ' ')\n",
+ " m = unidecode(m)\n",
+ " m = m.lower()\n",
+ " m_split = m.split(' ')\n",
+ " if(len(set(m_split) & vocab) == 0):\n",
+ " missing_genres.add(m)\n",
+ " else:\n",
+ " vocab_genres.add(m)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 191,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "9 missing genres\n",
+ " 3/4 uaiu_ 3/4 !a,eckomusic,ilovemusic,jerkin',oi!,pbr&b,ryukoka,timmusic,ye_u_ 3/4 !a\n"
+ ]
+ }
+ ],
+ "source": [
+ "print('%d missing genres'%(len(missing_genres)))\n",
+ "print(','.join(sorted(missing_genres)))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Great! We've covered most of the bases. Let's see what we've got!"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 192,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# get one vector per genre by taking the average of the embeddings\n",
+ "# this is a great idea!!\n",
+ "\n",
+ "## collect all relevant tokens\n",
+ "dim = 300\n",
+ "music_genre_vocab = set()\n",
+ "for m in vocab_genres:\n",
+ " m_split = m.split(' ')\n",
+ " m_overlap = set(m_split) & vocab\n",
+ " music_genre_vocab.update(m_overlap)\n",
+ "\n",
+ "## collect embeddings\n",
+ "token_vectors = pd.DataFrame()\n",
+ "ctr = 0\n",
+ "for l in open(embedding_file):\n",
+ " if(ctr > 0):\n",
+ " l_split = l.strip().split(' ')\n",
+ " l_type = l_split[0]\n",
+ " if(l_type in music_genre_vocab):\n",
+ " l_embedding = map(float, l_split[1:])\n",
+ " l_embedding = pd.DataFrame(l_embedding, columns=[l_type]).transpose()\n",
+ " token_vectors = token_vectors.append(l_embedding)\n",
+ " ctr += 1"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 193,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 2 | \n",
+ " 3 | \n",
+ " 4 | \n",
+ " 5 | \n",
+ " 6 | \n",
+ " 7 | \n",
+ " 8 | \n",
+ " 9 | \n",
+ " ... | \n",
+ " 290 | \n",
+ " 291 | \n",
+ " 292 | \n",
+ " 293 | \n",
+ " 294 | \n",
+ " 295 | \n",
+ " 296 | \n",
+ " 297 | \n",
+ " 298 | \n",
+ " 299 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " the | \n",
+ " -0.065334 | \n",
+ " -0.093031 | \n",
+ " -0.017571 | \n",
+ " 0.20007 | \n",
+ " 0.029521 | \n",
+ " -0.039920 | \n",
+ " -0.163280 | \n",
+ " -0.072946 | \n",
+ " 0.089604 | \n",
+ " 0.080907 | \n",
+ " ... | \n",
+ " 0.064944 | \n",
+ " -0.216730 | \n",
+ " -0.037683 | \n",
+ " 0.081860 | \n",
+ " -0.039891 | \n",
+ " -0.051334 | \n",
+ " -0.101650 | \n",
+ " 0.166420 | \n",
+ " -0.130790 | \n",
+ " 0.035397 | \n",
+ "
\n",
+ " \n",
+ " of | \n",
+ " 0.048804 | \n",
+ " -0.285280 | \n",
+ " 0.018557 | \n",
+ " 0.20577 | \n",
+ " 0.060704 | \n",
+ " 0.085446 | \n",
+ " -0.036267 | \n",
+ " -0.068373 | \n",
+ " 0.145070 | \n",
+ " 0.178520 | \n",
+ " ... | \n",
+ " 0.169560 | \n",
+ " -0.336770 | \n",
+ " -0.060286 | \n",
+ " 0.086097 | \n",
+ " -0.065001 | \n",
+ " 0.004833 | \n",
+ " -0.100960 | \n",
+ " 0.139100 | \n",
+ " -0.137140 | \n",
+ " -0.039705 | \n",
+ "
\n",
+ " \n",
+ " in | \n",
+ " 0.123670 | \n",
+ " -0.139650 | \n",
+ " 0.044877 | \n",
+ " 0.18919 | \n",
+ " -0.109970 | \n",
+ " -0.006446 | \n",
+ " 0.050499 | \n",
+ " -0.204390 | \n",
+ " -0.015761 | \n",
+ " 0.150490 | \n",
+ " ... | \n",
+ " 0.025115 | \n",
+ " -0.318040 | \n",
+ " 0.125330 | \n",
+ " -0.081507 | \n",
+ " -0.111400 | \n",
+ " 0.017582 | \n",
+ " -0.037359 | \n",
+ " 0.064740 | \n",
+ " -0.145810 | \n",
+ " 0.161750 | \n",
+ "
\n",
+ " \n",
+ " and | \n",
+ " -0.031533 | \n",
+ " 0.046278 | \n",
+ " -0.125340 | \n",
+ " 0.19165 | \n",
+ " -0.126600 | \n",
+ " -0.012853 | \n",
+ " 0.103420 | \n",
+ " -0.009808 | \n",
+ " 0.151890 | \n",
+ " 0.275820 | \n",
+ " ... | \n",
+ " 0.154940 | \n",
+ " -0.107860 | \n",
+ " 0.183140 | \n",
+ " 0.138810 | \n",
+ " 0.027570 | \n",
+ " -0.035073 | \n",
+ " -0.017829 | \n",
+ " 0.111630 | \n",
+ " -0.058231 | \n",
+ " 0.011977 | \n",
+ "
\n",
+ " \n",
+ " to | \n",
+ " -0.213410 | \n",
+ " 0.153530 | \n",
+ " 0.052880 | \n",
+ " -0.10995 | \n",
+ " -0.075249 | \n",
+ " -0.004093 | \n",
+ " 0.037307 | \n",
+ " -0.123070 | \n",
+ " -0.165390 | \n",
+ " 0.189480 | \n",
+ " ... | \n",
+ " 0.027739 | \n",
+ " 0.020689 | \n",
+ " 0.007836 | \n",
+ " 0.181550 | \n",
+ " 0.293270 | \n",
+ " -0.215300 | \n",
+ " -0.241520 | \n",
+ " -0.025937 | \n",
+ " -0.072507 | \n",
+ " 0.149890 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
5 rows × 300 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " 0 1 2 3 4 5 6 \\\n",
+ "the -0.065334 -0.093031 -0.017571 0.20007 0.029521 -0.039920 -0.163280 \n",
+ "of 0.048804 -0.285280 0.018557 0.20577 0.060704 0.085446 -0.036267 \n",
+ "in 0.123670 -0.139650 0.044877 0.18919 -0.109970 -0.006446 0.050499 \n",
+ "and -0.031533 0.046278 -0.125340 0.19165 -0.126600 -0.012853 0.103420 \n",
+ "to -0.213410 0.153530 0.052880 -0.10995 -0.075249 -0.004093 0.037307 \n",
+ "\n",
+ " 7 8 9 ... 290 291 292 \\\n",
+ "the -0.072946 0.089604 0.080907 ... 0.064944 -0.216730 -0.037683 \n",
+ "of -0.068373 0.145070 0.178520 ... 0.169560 -0.336770 -0.060286 \n",
+ "in -0.204390 -0.015761 0.150490 ... 0.025115 -0.318040 0.125330 \n",
+ "and -0.009808 0.151890 0.275820 ... 0.154940 -0.107860 0.183140 \n",
+ "to -0.123070 -0.165390 0.189480 ... 0.027739 0.020689 0.007836 \n",
+ "\n",
+ " 293 294 295 296 297 298 299 \n",
+ "the 0.081860 -0.039891 -0.051334 -0.101650 0.166420 -0.130790 0.035397 \n",
+ "of 0.086097 -0.065001 0.004833 -0.100960 0.139100 -0.137140 -0.039705 \n",
+ "in -0.081507 -0.111400 0.017582 -0.037359 0.064740 -0.145810 0.161750 \n",
+ "and 0.138810 0.027570 -0.035073 -0.017829 0.111630 -0.058231 0.011977 \n",
+ "to 0.181550 0.293270 -0.215300 -0.241520 -0.025937 -0.072507 0.149890 \n",
+ "\n",
+ "[5 rows x 300 columns]"
+ ]
+ },
+ "execution_count": 193,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "token_vectors.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 195,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "## build music genre embeddings\n",
+ "music_genre_vectors = pd.DataFrame()\n",
+ "for m in vocab_genres:\n",
+ " m_split = m.split(' ')\n",
+ " m_vector = pd.np.zeros(dim)\n",
+ " for m in m_split:\n",
+ " if(m in token_vectors.index):\n",
+ " m_vector += token_vectors.loc[m, :]\n",
+ " m_vector = pd.DataFrame(m_vector, columns=[m]).transpose()\n",
+ " music_genre_vectors = music_genre_vectors.append(m_vector)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 196,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 2 | \n",
+ " 3 | \n",
+ " 4 | \n",
+ " 5 | \n",
+ " 6 | \n",
+ " 7 | \n",
+ " 8 | \n",
+ " 9 | \n",
+ " ... | \n",
+ " 290 | \n",
+ " 291 | \n",
+ " 292 | \n",
+ " 293 | \n",
+ " 294 | \n",
+ " 295 | \n",
+ " 296 | \n",
+ " 297 | \n",
+ " 298 | \n",
+ " 299 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " rock | \n",
+ " 0.143149 | \n",
+ " -0.336850 | \n",
+ " 0.327450 | \n",
+ " -0.008293 | \n",
+ " -0.018390 | \n",
+ " 0.738510 | \n",
+ " 0.446830 | \n",
+ " -0.199743 | \n",
+ " -0.233102 | \n",
+ " -0.246247 | \n",
+ " ... | \n",
+ " -0.123799 | \n",
+ " 0.090300 | \n",
+ " 0.094106 | \n",
+ " -0.118579 | \n",
+ " -0.399380 | \n",
+ " -0.432142 | \n",
+ " -0.247522 | \n",
+ " 0.53491 | \n",
+ " 0.500969 | \n",
+ " 0.386223 | \n",
+ "
\n",
+ " \n",
+ " metal | \n",
+ " -0.308147 | \n",
+ " -0.089935 | \n",
+ " -0.038321 | \n",
+ " 0.397360 | \n",
+ " -0.208051 | \n",
+ " 0.528140 | \n",
+ " 0.175920 | \n",
+ " -0.636960 | \n",
+ " 0.400871 | \n",
+ " -0.300341 | \n",
+ " ... | \n",
+ " 1.057410 | \n",
+ " 0.346599 | \n",
+ " 0.170288 | \n",
+ " 0.594790 | \n",
+ " -0.108257 | \n",
+ " -0.596890 | \n",
+ " -0.246994 | \n",
+ " 0.86340 | \n",
+ " 0.538120 | \n",
+ " 0.772640 | \n",
+ "
\n",
+ " \n",
+ " violento | \n",
+ " 0.299940 | \n",
+ " -0.309046 | \n",
+ " -0.417315 | \n",
+ " -0.821000 | \n",
+ " -0.026814 | \n",
+ " -0.349353 | \n",
+ " 0.472440 | \n",
+ " 0.578571 | \n",
+ " -0.833050 | \n",
+ " -0.326269 | \n",
+ " ... | \n",
+ " 0.119468 | \n",
+ " -0.474460 | \n",
+ " 0.261900 | \n",
+ " 0.002859 | \n",
+ " 0.011597 | \n",
+ " 0.020864 | \n",
+ " -0.149464 | \n",
+ " 1.35306 | \n",
+ " 0.766600 | \n",
+ " 0.076739 | \n",
+ "
\n",
+ " \n",
+ " ranchera | \n",
+ " 0.499920 | \n",
+ " 0.233840 | \n",
+ " -0.204290 | \n",
+ " -0.108490 | \n",
+ " 0.335680 | \n",
+ " 0.202850 | \n",
+ " 0.510690 | \n",
+ " 0.319680 | \n",
+ " -0.018974 | \n",
+ " -0.178560 | \n",
+ " ... | \n",
+ " 0.122380 | \n",
+ " 0.173430 | \n",
+ " 0.259250 | \n",
+ " -0.048555 | \n",
+ " 0.385360 | \n",
+ " -0.025034 | \n",
+ " -0.051240 | \n",
+ " 0.81292 | \n",
+ " 0.680290 | \n",
+ " -0.293170 | \n",
+ "
\n",
+ " \n",
+ " ragga | \n",
+ " 0.095629 | \n",
+ " -0.234920 | \n",
+ " -0.236020 | \n",
+ " 0.054813 | \n",
+ " 0.162870 | \n",
+ " -0.116230 | \n",
+ " 0.033039 | \n",
+ " -0.127070 | \n",
+ " 0.067348 | \n",
+ " -0.278150 | \n",
+ " ... | \n",
+ " 0.345790 | \n",
+ " 0.076082 | \n",
+ " 0.589190 | \n",
+ " -0.374150 | \n",
+ " 0.126970 | \n",
+ " -0.188780 | \n",
+ " -0.905340 | \n",
+ " 0.24765 | \n",
+ " 0.426170 | \n",
+ " 0.256720 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
5 rows × 300 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " 0 1 2 3 4 5 \\\n",
+ "rock 0.143149 -0.336850 0.327450 -0.008293 -0.018390 0.738510 \n",
+ "metal -0.308147 -0.089935 -0.038321 0.397360 -0.208051 0.528140 \n",
+ "violento 0.299940 -0.309046 -0.417315 -0.821000 -0.026814 -0.349353 \n",
+ "ranchera 0.499920 0.233840 -0.204290 -0.108490 0.335680 0.202850 \n",
+ "ragga 0.095629 -0.234920 -0.236020 0.054813 0.162870 -0.116230 \n",
+ "\n",
+ " 6 7 8 9 ... 290 \\\n",
+ "rock 0.446830 -0.199743 -0.233102 -0.246247 ... -0.123799 \n",
+ "metal 0.175920 -0.636960 0.400871 -0.300341 ... 1.057410 \n",
+ "violento 0.472440 0.578571 -0.833050 -0.326269 ... 0.119468 \n",
+ "ranchera 0.510690 0.319680 -0.018974 -0.178560 ... 0.122380 \n",
+ "ragga 0.033039 -0.127070 0.067348 -0.278150 ... 0.345790 \n",
+ "\n",
+ " 291 292 293 294 295 296 297 \\\n",
+ "rock 0.090300 0.094106 -0.118579 -0.399380 -0.432142 -0.247522 0.53491 \n",
+ "metal 0.346599 0.170288 0.594790 -0.108257 -0.596890 -0.246994 0.86340 \n",
+ "violento -0.474460 0.261900 0.002859 0.011597 0.020864 -0.149464 1.35306 \n",
+ "ranchera 0.173430 0.259250 -0.048555 0.385360 -0.025034 -0.051240 0.81292 \n",
+ "ragga 0.076082 0.589190 -0.374150 0.126970 -0.188780 -0.905340 0.24765 \n",
+ "\n",
+ " 298 299 \n",
+ "rock 0.500969 0.386223 \n",
+ "metal 0.538120 0.772640 \n",
+ "violento 0.766600 0.076739 \n",
+ "ranchera 0.680290 -0.293170 \n",
+ "ragga 0.426170 0.256720 \n",
+ "\n",
+ "[5 rows x 300 columns]"
+ ]
+ },
+ "execution_count": 196,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "music_genre_vectors.head()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Let's reduce the dimensions, then cluster."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 201,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from sklearn.manifold import TSNE\n",
+ "k = 2\n",
+ "music_genre_vectors_compressed = TSNE(n_components=k).fit_transform(music_genre_vectors.values)\n",
+ "music_genre_vectors_compressed = pd.DataFrame(music_genre_vectors_compressed, index=music_genre_vectors.index)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 202,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " 0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " rock | \n",
+ " 16.836538 | \n",
+ " 15.010101 | \n",
+ "
\n",
+ " \n",
+ " metal | \n",
+ " 28.739971 | \n",
+ " 0.045379 | \n",
+ "
\n",
+ " \n",
+ " violento | \n",
+ " -28.939928 | \n",
+ " -10.028501 | \n",
+ "
\n",
+ " \n",
+ " ranchera | \n",
+ " -28.126627 | \n",
+ " -14.524264 | \n",
+ "
\n",
+ " \n",
+ " ragga | \n",
+ " 4.803965 | \n",
+ " -5.637437 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " 0 1\n",
+ "rock 16.836538 15.010101\n",
+ "metal 28.739971 0.045379\n",
+ "violento -28.939928 -10.028501\n",
+ "ranchera -28.126627 -14.524264\n",
+ "ragga 4.803965 -5.637437"
+ ]
+ },
+ "execution_count": 202,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "music_genre_vectors_compressed.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 216,
+ "metadata": {},
+ "outputs": [
+ {
+ "ename": "TypeError",
+ "evalue": "cannot convert the series to ",
+ "output_type": "error",
+ "traceback": [
+ "Traceback \u001b[1;36m(most recent call last)\u001b[0m:\n",
+ " File \u001b[0;32m\"C:\\Users\\stewart\\AppData\\Local\\Continuum\\miniconda3\\envs\\assimilation_py27\\lib\\site-packages\\IPython\\core\\formatters.py\"\u001b[0m, line \u001b[0;32m334\u001b[0m, in \u001b[0;35m__call__\u001b[0m\n return printer(obj)\n",
+ " File \u001b[0;32m\"C:\\Users\\stewart\\AppData\\Local\\Continuum\\miniconda3\\envs\\assimilation_py27\\lib\\site-packages\\IPython\\core\\pylabtools.py\"\u001b[0m, line \u001b[0;32m240\u001b[0m, in \u001b[0;35m\u001b[0m\n png_formatter.for_type(Figure, lambda fig: print_figure(fig, 'png', **kwargs))\n",
+ " File \u001b[0;32m\"C:\\Users\\stewart\\AppData\\Local\\Continuum\\miniconda3\\envs\\assimilation_py27\\lib\\site-packages\\IPython\\core\\pylabtools.py\"\u001b[0m, line \u001b[0;32m124\u001b[0m, in \u001b[0;35mprint_figure\u001b[0m\n fig.canvas.print_figure(bytes_io, **kw)\n",
+ " File \u001b[0;32m\"C:\\Users\\stewart\\AppData\\Local\\Continuum\\miniconda3\\envs\\assimilation_py27\\lib\\site-packages\\matplotlib\\backend_bases.py\"\u001b[0m, line \u001b[0;32m2216\u001b[0m, in \u001b[0;35mprint_figure\u001b[0m\n **kwargs)\n",
+ " File \u001b[0;32m\"C:\\Users\\stewart\\AppData\\Local\\Continuum\\miniconda3\\envs\\assimilation_py27\\lib\\site-packages\\matplotlib\\backends\\backend_agg.py\"\u001b[0m, line \u001b[0;32m507\u001b[0m, in \u001b[0;35mprint_png\u001b[0m\n FigureCanvasAgg.draw(self)\n",
+ " File \u001b[0;32m\"C:\\Users\\stewart\\AppData\\Local\\Continuum\\miniconda3\\envs\\assimilation_py27\\lib\\site-packages\\matplotlib\\backends\\backend_agg.py\"\u001b[0m, line \u001b[0;32m430\u001b[0m, in \u001b[0;35mdraw\u001b[0m\n self.figure.draw(self.renderer)\n",
+ " File \u001b[0;32m\"C:\\Users\\stewart\\AppData\\Local\\Continuum\\miniconda3\\envs\\assimilation_py27\\lib\\site-packages\\matplotlib\\artist.py\"\u001b[0m, line \u001b[0;32m55\u001b[0m, in \u001b[0;35mdraw_wrapper\u001b[0m\n return draw(artist, renderer, *args, **kwargs)\n",
+ " File \u001b[0;32m\"C:\\Users\\stewart\\AppData\\Local\\Continuum\\miniconda3\\envs\\assimilation_py27\\lib\\site-packages\\matplotlib\\figure.py\"\u001b[0m, line \u001b[0;32m1299\u001b[0m, in \u001b[0;35mdraw\u001b[0m\n renderer, self, artists, self.suppressComposite)\n",
+ " File \u001b[0;32m\"C:\\Users\\stewart\\AppData\\Local\\Continuum\\miniconda3\\envs\\assimilation_py27\\lib\\site-packages\\matplotlib\\image.py\"\u001b[0m, line \u001b[0;32m138\u001b[0m, in \u001b[0;35m_draw_list_compositing_images\u001b[0m\n a.draw(renderer)\n",
+ " File \u001b[0;32m\"C:\\Users\\stewart\\AppData\\Local\\Continuum\\miniconda3\\envs\\assimilation_py27\\lib\\site-packages\\matplotlib\\artist.py\"\u001b[0m, line \u001b[0;32m55\u001b[0m, in \u001b[0;35mdraw_wrapper\u001b[0m\n return draw(artist, renderer, *args, **kwargs)\n",
+ " File \u001b[0;32m\"C:\\Users\\stewart\\AppData\\Local\\Continuum\\miniconda3\\envs\\assimilation_py27\\lib\\site-packages\\matplotlib\\text.py\"\u001b[0m, line \u001b[0;32m715\u001b[0m, in \u001b[0;35mdraw\u001b[0m\n bbox, info, descent = textobj._get_layout(renderer)\n",
+ " File \u001b[0;32m\"C:\\Users\\stewart\\AppData\\Local\\Continuum\\miniconda3\\envs\\assimilation_py27\\lib\\site-packages\\matplotlib\\text.py\"\u001b[0m, line \u001b[0;32m290\u001b[0m, in \u001b[0;35m_get_layout\u001b[0m\n key = self.get_prop_tup(renderer=renderer)\n",
+ " File \u001b[0;32m\"C:\\Users\\stewart\\AppData\\Local\\Continuum\\miniconda3\\envs\\assimilation_py27\\lib\\site-packages\\matplotlib\\text.py\"\u001b[0m, line \u001b[0;32m873\u001b[0m, in \u001b[0;35mget_prop_tup\u001b[0m\n x, y = self.get_unitless_position()\n",
+ " File \u001b[0;32m\"C:\\Users\\stewart\\AppData\\Local\\Continuum\\miniconda3\\envs\\assimilation_py27\\lib\\site-packages\\matplotlib\\text.py\"\u001b[0m, line \u001b[0;32m855\u001b[0m, in \u001b[0;35mget_unitless_position\u001b[0m\n x = float(self.convert_xunits(self._x))\n",
+ "\u001b[1;36m File \u001b[1;32m\"C:\\Users\\stewart\\AppData\\Local\\Continuum\\miniconda3\\envs\\assimilation_py27\\lib\\site-packages\\pandas\\core\\series.py\"\u001b[1;36m, line \u001b[1;32m92\u001b[1;36m, in \u001b[1;35mwrapper\u001b[1;36m\u001b[0m\n\u001b[1;33m \"{0}\".format(str(converter)))\u001b[0m\n",
+ "\u001b[1;31mTypeError\u001b[0m\u001b[1;31m:\u001b[0m cannot convert the series to \n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# label random sample of genres\n",
+ "sample_size = 10\n",
+ "sample_labels = pd.np.random.choice(music_genre_vectors_compressed.index, size=sample_size, replace=False).tolist()\n",
+ "x = music_genre_vectors_compressed.values[:, 0]\n",
+ "y = music_genre_vectors_compressed.values[:, 1]\n",
+ "x_sample = music_genre_vectors_compressed.loc[sample_labels, 0]\n",
+ "y_sample = music_genre_vectors_compressed.loc[sample_labels, 1]\n",
+ "plt.scatter(x, y, marker='o', color='b', s=0.5)\n",
+ "plt.figtext(x_sample, y_sample, sample_labels)\n",
+ "plt.show()"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
diff --git a/src/data_processing/compare_top_interests.ipynb b/src/data_processing/compare_top_interests.ipynb
index 07a704e..1cdd9e2 100644
--- a/src/data_processing/compare_top_interests.ipynb
+++ b/src/data_processing/compare_top_interests.ipynb
@@ -5,9 +5,7 @@
"metadata": {},
"source": [
"# Compare top interests\n",
- "In which we compare the top interests according to some old audience counts to determine the right cutoff for an initial interest analysis of US versus Mexico.\n",
- "\n",
- "TODO: repeat analysis with clean data"
+ "In which we compare the top interests according to some old audience counts to determine the right cutoff for an initial interest analysis of US versus Mexico."
]
},
{
@@ -4551,16 +4549,6 @@
" print('%s R=%.3E (p=%.3E)'%(c, corr, pval))"
]
},
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "TODO:\n",
- "\n",
- "- KL divergence\n",
- "- paired difference =/= 0"
- ]
- },
{
"cell_type": "markdown",
"metadata": {},
diff --git a/src/data_processing/extract_musical_interests.ipynb b/src/data_processing/extract_musical_interests.ipynb
index 2efd762..5f14763 100644
--- a/src/data_processing/extract_musical_interests.ipynb
+++ b/src/data_processing/extract_musical_interests.ipynb
@@ -3222,6 +3222,276 @@
" json.dump(query, open(query_file, 'w'), encoding='latin-1', indent=4)"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Explore white results"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Having mined Facebook for the musical interests of white people = NOT(Black, Hispanic, Asian-American, Expat, friend of Expat), let's see what those look like in comparison to the other interests."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " dau_audience | \n",
+ " mau_audience | \n",
+ " interest_name | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 45161 | \n",
+ " 54000 | \n",
+ " Rocksteady | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 504213 | \n",
+ " 580000 | \n",
+ " Christian hip hop | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 918 | \n",
+ " 1000 | \n",
+ " Noise music | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 886 | \n",
+ " 1000 | \n",
+ " Flamenco | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 908 | \n",
+ " 1000 | \n",
+ " Psychedelic trance | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " dau_audience mau_audience interest_name\n",
+ "0 45161 54000 Rocksteady\n",
+ "1 504213 580000 Christian hip hop\n",
+ "2 918 1000 Noise music\n",
+ "3 886 1000 Flamenco\n",
+ "4 908 1000 Psychedelic trance"
+ ]
+ },
+ "execution_count": 16,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "import pandas as pd\n",
+ "US_white_music_interests = pd.read_csv('../../data/query_results/US_13-65_Not_Expats_OR_Close_Friends_of_Expats_OR_African-American_OR_Hispanic_OR_Asian-American_audience_output.tsv', sep='\\t', index_col=False)\n",
+ "expat_music_interests = pd.read_csv('../../data/query_results/US_Hispanic_(All)_AND_Ex-pats_(Mexico)_music_interest_audience_counts.tsv', sep='\\t', index_col=False)\n",
+ "MX_music_interests = pd.read_csv('../../data/query_results/MX_Not_Expats_and_close_friends_of_expats_music_interest_audience_counts.tsv', sep='\\t', index_col=False)\n",
+ "US_white_music_interests.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# add interests as indices\n",
+ "import numpy as np\n",
+ "audience_var = 'mau_audience'\n",
+ "def add_idx(x):\n",
+ " x.index = x.loc[:, 'interest_name']\n",
+ " return(x)\n",
+ "US_white_music_interests = add_idx(US_white_music_interests)\n",
+ "MX_music_interests = add_idx(MX_music_interests)\n",
+ "expat_music_interests = add_idx(expat_music_interests)\n",
+ "# also restrict to audience var\n",
+ "dest_counts = US_white_music_interests.loc[:, audience_var].astype(float)\n",
+ "source_counts = MX_music_interests.loc[:, audience_var].astype(float)\n",
+ "expat_counts = expat_music_interests.loc[:, audience_var].astype(float)\n",
+ "# remove max audience scores because those are usually wrong\n",
+ "MAX_PCT = 98\n",
+ "filter_max = lambda x: x[x < np.percentile(x, MAX_PCT)]\n",
+ "source_counts = filter_max(source_counts)\n",
+ "dest_counts = filter_max(dest_counts)\n",
+ "expat_counts = filter_max(expat_counts)\n",
+ "# restrict to shared interests to make sure the math works out\n",
+ "shared_interests = dest_counts.index & source_counts.index & expat_counts.index\n",
+ "dest_counts = dest_counts.loc[shared_interests]\n",
+ "source_counts = source_counts.loc[shared_interests]\n",
+ "expat_counts = expat_counts.loc[shared_interests]\n",
+ "# normalize to percents\n",
+ "norm_pct = lambda x: x / x.sum()\n",
+ "source_pct = norm_pct(source_counts)\n",
+ "dest_pct = norm_pct(dest_counts)\n",
+ "expat_pct = norm_pct(expat_counts)\n",
+ "# restrict to top_k\n",
+ "top_k = 40\n",
+ "dest_pct_k = dest_pct.sort_values(inplace=False,ascending=False).iloc[:top_k]\n",
+ "expat_pct_k = expat_pct.sort_values(inplace=False,ascending=False).iloc[:top_k]\n",
+ "source_pct_k = source_pct.sort_values(inplace=False,ascending=False).iloc[:top_k]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "import matplotlib\n",
+ "%matplotlib inline\n",
+ "import matplotlib.pyplot as plt\n",
+ "width = 5\n",
+ "height = 12\n",
+ "top_k = 40\n",
+ "X = np.arange(top_k)+1\n",
+ "f, ax = plt.subplots(1, 1, figsize=(width, height))\n",
+ "bar_width = 0.2\n",
+ "bar_offset = 0.2\n",
+ "dest_ticks = dest_pct_k.index\n",
+ "ax.barh(X + bar_offset, source_pct.loc[dest_pct_k.index], height=bar_width, label='source')\n",
+ "ax.barh(X, expat_pct.loc[dest_pct_k.index], height=bar_width, label='expat')\n",
+ "ax.barh(X - bar_offset, dest_pct_k, height=bar_width, label='destination')\n",
+ "ax.legend(loc='upper right')\n",
+ "ax.set_yticks(X)\n",
+ "ax.set_yticklabels(dest_ticks)\n",
+ "ax.set_xscale('log')\n",
+ "ax.set_xlabel('% interest')\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "1000.0"
+ ]
+ },
+ "execution_count": 20,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "expat_counts.loc['Appalachian music']"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "OK! We clearly have some errors here where the expat estimation went under and the source estimation went over (`Appalachian music`), but on the whole it looks like the expat population matches the destination (`white`) more closely than the source."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Let's test the similarity with KL divergence like we did before."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "source vs. expat = 9.276E-01 (N=290)\n",
+ "dest vs. expat = 1.604E+00 (N=289)\n",
+ "KL diff=-7.157E-01, t=-9.785E+00 (p=3.224E-16)\n"
+ ]
+ }
+ ],
+ "source": [
+ "from scipy.stats import entropy, ttest_1samp\n",
+ "cutoff_pct = 50\n",
+ "filter_cutoff = lambda x: x[x > pd.np.percentile(x, cutoff_pct)]\n",
+ "source_pct_cutoff = filter_cutoff(source_pct)\n",
+ "dest_pct_cutoff = filter_cutoff(dest_pct)\n",
+ "# find shared index!\n",
+ "source_expat_idx = source_pct_cutoff.index & expat_pct.index\n",
+ "dest_expat_idx = dest_pct_cutoff.index & expat_pct.index\n",
+ "kl_1 = entropy(source_pct_cutoff.loc[source_expat_idx], \n",
+ " expat_pct.loc[source_expat_idx])\n",
+ "kl_2 = entropy(dest_pct_cutoff.loc[dest_expat_idx], \n",
+ " expat_pct.loc[dest_expat_idx])\n",
+ "print('source vs. expat = %.3E (N=%d)'%(kl_1, len(source_expat_idx)))\n",
+ "print('dest vs. expat = %.3E (N=%d)'%(kl_2, len(dest_expat_idx)))\n",
+ "pd.np.random.seed(123)\n",
+ "bootstraps = 100\n",
+ "sample_size = int(0.5*len(source_pct_cutoff))\n",
+ "kl_diffs = []\n",
+ "for i in range(bootstraps):\n",
+ " sample_idx_1 = pd.np.random.choice(source_expat_idx, size=sample_size, replace=False)\n",
+ " sample_idx_2 = pd.np.random.choice(dest_expat_idx, size=sample_size, replace=False)\n",
+ " kl_1 = entropy(source_pct_cutoff.loc[sample_idx_1], expat_pct.loc[sample_idx_1])\n",
+ " kl_2 = entropy(dest_pct_cutoff.loc[sample_idx_2], expat_pct.loc[sample_idx_2])\n",
+ " kl_diff = kl_1 - kl_2\n",
+ " kl_diffs.append(kl_diff)\n",
+ "t, p = ttest_1samp(kl_diffs, 0)\n",
+ "print('KL diff=%.3E, t=%.3E (p=%.3E)'%(pd.np.mean(kl_diffs), t, p))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Yes! Even though the raw divergence is high, the expat distribution is closer to the source than the target distribution."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def comparison_test(source_data, expat_data, dest_data, audience_var='mau_audience'):\n",
+ " \"\"\"\n",
+ " Compare the relative proportions of interest between\n",
+ " source country, expat population, and destination country\n",
+ " with (1) bar plot and (2) \n",
+ " \"\"\""
+ ]
+ },
{
"cell_type": "markdown",
"metadata": {},
diff --git a/src/data_processing/mine_facebook_audience.py b/src/data_processing/mine_facebook_audience.py
index da0e10d..68a690d 100644
--- a/src/data_processing/mine_facebook_audience.py
+++ b/src/data_processing/mine_facebook_audience.py
@@ -22,8 +22,8 @@ def main():
# parser.add_argument('--query_files', default=['data/queries/US_hispanic_expat_non_expats_music_interests.json'])
# parser.add_argument('--query_files', default=['data/queries/US_hispanic_expat_non_expats_music_interests_ages.json',
# 'data/queries/MX_non_expats_music_interests_ages.json'])
- parser.add_argument('--query_files', default=['data/queries/US_white_music_interests.json'])
-# parser.add_argument('--interest_file', default='data/top_in terests_complete_names.csv')
+ parser.add_argument('--query_files', default=['data/queries/US_white_music_interests_ages.json'])
+# parser.add_argument('--interest_file', default='data/top_interests_complete_names.csv')
parser.add_argument('--out_dir', default='data/query_results/')
parser.add_argument('--response_files', default=None)
args = parser.parse_args()
@@ -35,7 +35,9 @@ def main():
## optional: multiple queries at once
# extra_auth_files = []
- extra_auth_files = ['data/facebook_auth_ingmar.csv', 'data/facebook_auth_koustuv.csv']
+ extra_auth_files = ['data/facebook_auth/facebook_auth_ingmar.csv',
+ 'data/facebook_auth/facebook_auth_koustuv.csv',
+ 'data/facebook_auth/facebook_auth_tim.csv']
for query_file, response_file in izip(query_files, response_files):
## temporary: remove interest IDs that we've already queried
diff --git a/src/data_processing/simplify_audience_output.py b/src/data_processing/simplify_audience_output.py
new file mode 100644
index 0000000..2352e95
--- /dev/null
+++ b/src/data_processing/simplify_audience_output.py
@@ -0,0 +1,43 @@
+# -*- coding: utf-8 -*-
+"""
+Simplify raw mined output to audience counts
+for each interest/geolocation/age/behavior combo,
+writing each combo to a separate file.
+
+Makes analysis a bit trickier but better in the long
+run for sharing results with collaborators!
+
+@author: stewart
+"""
+import pandas as pd
+from argparse import ArgumentParser
+import os
+import json
+
+def main():
+ parser = ArgumentParser()
+ parser.add_argument('--audience_mine_output_file', default='data/query_results/US_white_music_interests.tsv')
+ args = parser.parse_args()
+ audience_mine_output_file = args.audience_mine_output_file
+ out_dir = os.path.dirname(audience_mine_output_file)
+
+ ## load data
+ audience_mine_output = pd.read_csv(audience_mine_output_file, sep='\t', index_col=False)
+ json_cols = ['behavior', 'interests', 'geo_locations', 'ages_ranges']
+ for c in json_cols:
+ audience_mine_output.loc[:, c] = audience_mine_output.loc[:, c].apply(json.loads)
+ audience_mine_output.loc[:, 'behavior_name'] = audience_mine_output.loc[:, 'behavior'].apply(lambda x: x['name'].replace(' ','_'))
+ audience_mine_output.loc[:, 'interest_name'] = audience_mine_output.loc[:, 'interests'].apply(lambda x: x['name'][0])
+ audience_mine_output.loc[:, 'location_name'] = audience_mine_output.loc[:, 'geo_locations'].apply(lambda x: x['values'][0])
+ audience_mine_output.loc[:, 'age_range_name'] = audience_mine_output.loc[:, 'ages_ranges'].apply(lambda x: '%d-%d'%(x['min'], x['max']))
+
+ ## group by location/age/behavior
+ audience_counts = audience_mine_output.loc[:, ['dau_audience', 'mau_audience', 'interest_name', 'location_name', 'behavior_name', 'age_range_name']]
+ relevant_cols = ['dau_audience', 'mau_audience', 'interest_name']
+ for (location_name, age_range, behavior_name), a_data in audience_counts.groupby(['location_name', 'age_range_name', 'behavior_name']):
+ out_file_name = os.path.join(out_dir, '%s_%s_%s_audience_output.tsv'%(location_name, age_range, behavior_name))
+ a_data = a_data.loc[:, relevant_cols]
+ a_data.to_csv(out_file_name, sep='\t', index=False, encoding='utf-8')
+
+if __name__ == '__main__':
+ main()
\ No newline at end of file
diff --git a/src/data_processing/utils.py b/src/data_processing/utils.py
index 79c4358..11a3432 100644
--- a/src/data_processing/utils.py
+++ b/src/data_processing/utils.py
@@ -45,7 +45,7 @@ def query_facebook_audience(access_token, user_id, query_file, extra_auth_data=[
return response
-def load_facebook_auth(auth_file='data/facebook_auth.csv'):
+def load_facebook_auth(auth_file='data/facebook_auth/facebook_auth.csv'):
"""
Load Facebook ad API authentication from file.