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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0123456789...290291292293294295296297298299
the-0.065334-0.093031-0.0175710.200070.029521-0.039920-0.163280-0.0729460.0896040.080907...0.064944-0.216730-0.0376830.081860-0.039891-0.051334-0.1016500.166420-0.1307900.035397
of0.048804-0.2852800.0185570.205770.0607040.085446-0.036267-0.0683730.1450700.178520...0.169560-0.336770-0.0602860.086097-0.0650010.004833-0.1009600.139100-0.137140-0.039705
in0.123670-0.1396500.0448770.18919-0.109970-0.0064460.050499-0.204390-0.0157610.150490...0.025115-0.3180400.125330-0.081507-0.1114000.017582-0.0373590.064740-0.1458100.161750
and-0.0315330.046278-0.1253400.19165-0.126600-0.0128530.103420-0.0098080.1518900.275820...0.154940-0.1078600.1831400.1388100.027570-0.035073-0.0178290.111630-0.0582310.011977
to-0.2134100.1535300.052880-0.10995-0.075249-0.0040930.037307-0.123070-0.1653900.189480...0.0277390.0206890.0078360.1815500.293270-0.215300-0.241520-0.025937-0.0725070.149890
\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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0123456789...290291292293294295296297298299
rock0.143149-0.3368500.327450-0.008293-0.0183900.7385100.446830-0.199743-0.233102-0.246247...-0.1237990.0903000.094106-0.118579-0.399380-0.432142-0.2475220.534910.5009690.386223
metal-0.308147-0.089935-0.0383210.397360-0.2080510.5281400.175920-0.6369600.400871-0.300341...1.0574100.3465990.1702880.594790-0.108257-0.596890-0.2469940.863400.5381200.772640
violento0.299940-0.309046-0.417315-0.821000-0.026814-0.3493530.4724400.578571-0.833050-0.326269...0.119468-0.4744600.2619000.0028590.0115970.020864-0.1494641.353060.7666000.076739
ranchera0.4999200.233840-0.204290-0.1084900.3356800.2028500.5106900.319680-0.018974-0.178560...0.1223800.1734300.259250-0.0485550.385360-0.025034-0.0512400.812920.680290-0.293170
ragga0.095629-0.234920-0.2360200.0548130.162870-0.1162300.033039-0.1270700.067348-0.278150...0.3457900.0760820.589190-0.3741500.126970-0.188780-0.9053400.247650.4261700.256720
\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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
01
rock16.83653815.010101
metal28.7399710.045379
violento-28.939928-10.028501
ranchera-28.126627-14.524264
ragga4.803965-5.637437
\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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
dau_audiencemau_audienceinterest_name
04516154000Rocksteady
1504213580000Christian hip hop
29181000Noise music
38861000Flamenco
49081000Psychedelic trance
\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.