{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Тематическая модель на данных Last.fm" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Сначала настраиваем и подключаем нужные библиотеки" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import os\n", "import sys\n", "HOME = '/home/vovapolu/Projects/'\n", "BIGARTM_PATH = HOME + 'bigartm/'\n", "BIGARTM_BUILD_PATH = BIGARTM_PATH + 'build/'\n", "sys.path.append(os.path.join(BIGARTM_PATH, 'src/python'))\n", "os.environ['ARTM_SHARED_LIBRARY'] = os.path.join(BIGARTM_BUILD_PATH, 'src/artm/libartm.so')" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [], "source": [ "%matplotlib inline\n", "import csv, shutil, uuid, glob, time\n", "import matplotlib.pyplot as plt\n", "\n", "import artm.artm_model\n", "from artm.artm_model import *\n", "\n", "plays_file = 'usersha1-artmbid-artname-plays.tsv'\n", "batch_path = 'batches' #Папка с батчами\n", "if os.path.exists(batch_path):\n", " shutil.rmtree(batch_path)\n", "\n", "artist_id_to_name = {} #Мапа, переводящая artist_id в имя\n", "artists_idxs = {} #Мапа, переводящая artist_id в номер в батче\n", "artists = [] #Имена артистов в батче" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Читаем файл и строим батчи" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [], "source": [ "last_user_id = ''\n", "handled_users = 0\n", "\n", "users_to_handle = 5000 #Данные скольких юзеров обрабатываем\n", "users_in_batch = 1000 #Сколько юзеров в батче\n", "\n", "batch = None\n", "\n", "with open(plays_file, 'rb') as tsvin:\n", " tsvin = csv.reader(tsvin, delimiter='\\t', quoting=csv.QUOTE_NONE)\n", "\n", " field = None\n", "\n", " for row in tsvin:\n", " \n", " user_id, artist_id, artist_name, plays = row\n", "\n", " if user_id != last_user_id:\n", " if handled_users > users_to_handle or handled_users % users_in_batch == 0:\n", " if batch is not None:\n", " for artist in artists:\n", " batch.token.append(artist.decode('utf8'))\n", " artm.library.Library().SaveBatch(batch, batch_path)\n", " artists = []\n", " artists_idxs = {}\n", " batch = artm.messages_pb2.Batch()\n", " batch.id = str(uuid.uuid4())\n", " \n", " if handled_users > users_to_handle:\n", " break\n", " \n", " item = batch.item.add()\n", " item.id = handled_users\n", " field = item.field.add()\n", " \n", " last_user_id = user_id\n", " handled_users += 1\n", " \n", " if artist_id not in artist_id_to_name:\n", " artist_id_to_name[artist_id] = artist_name\n", " if artist_id not in artists_idxs:\n", " artists_idxs[artist_id] = len(artists)\n", " artists.append(artist_name)\n", "\n", " field.token_id.append(artists_idxs[artist_id])\n", " field.token_count.append(int(plays))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Запускаем BigArtm" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Start fitting...\n", "Fitting tooks -80.3 s\n" ] }, { "data": { "image/png": "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\nSUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Genres\n", "objective topic 5: [u'gods of blitz', u'la vela puerca', u'laura marling', u'bromheads jacket', u'fionn regan']\n", "objective topic 6: [u'dropkick murphys', u'flogging molly', u'the real mckenzies', u'street dogs', u'leona lewis']\n", "objective topic 7: [u'linkin park', u'evanescence', u'fort minor', u'ko\\u042fn', u'bruce faulconer']\n", "objective topic 8: [u'ac/dc', u'ramones', u'led zeppelin', u'sex pistols', u'the rolling stones']\n", "objective topic 9: [u'nelly furtado', u'black eyed peas', u'aaliyah', u'sean paul', u'rihanna']\n", "objective topic 10: [u'die \\xc4rzte', u'die toten hosen', u'farin urlaub', u'annihilator', u'freak kitchen']\n", "objective topic 11: [u'michael bubl\\xe9', u'guano apes', u'live', u'rage against the machine', u'tristania']\n", "objective topic 12: [u'hellogoodbye', u'project 86', u'alter bridge', u'chevelle', u'12 stones']\n", "objective topic 13: [u'r.e.m.', u'billie the vision & the dancers', u'mando diao', u'camel', u'the disciplines']\n", "objective topic 14: [u'bad religion', u'rancid', u'nofx', u'anti-flag', u'propagandhi']\n", "objective topic 15: [u'dream theater', u'queensr\\xffche', u'rush', u'ayreon', u'joe satriani']\n", "objective topic 16: [u'the fall', u'my bloody valentine', u'slowdive', u'sonic youth', u'brian eno']\n", "objective topic 17: [u'kiss', u'mindless self indulgence', u'uriah heep', u'thunder', u'dj shadow']\n", "objective topic 18: [u'o.s.t.r.', u'mf doom', u'eldo', u'madlib', u'madvillain']\n", "objective topic 19: [u'tegan and sara', u'kent', u'the cardigans', u'slime', u'citizen cope']\n", "objective topic 20: [u'b\\xf6hse onkelz', u'der w', u'death', u'johnny cash', u'metallica']\n", "objective topic 21: [u'cat power', u'devendra banhart', u'calexico', u\"bonnie 'prince' billy\", u'the velvet underground']\n", "objective topic 22: [u'2pac', u'nas', u'snoop dogg', u'black rebel motorcycle club', u'ice cube']\n", "objective topic 23: [u'hilary duff', u'evanescence', u'casey jones', u'raappana', u'walls of jericho']\n", "objective topic 24: [u'jack johnson', u'jason mraz', u'nek', u'oro', u'massimo di cataldo']\n", "objective topic 25: [u'disciple', u'skillet', u'dc talk', u'seventh seal', u'demon hunter']\n", "objective topic 26: [u'stevie wonder', u'ben harper', u'manic street preachers', u'steely dan', u'asa']\n", "objective topic 27: [u'afi', u'boa', u'blaqk audio', u'\\ub3d9\\ubc29\\uc2e0\\uae30', u'\\u5468\\u6770\\u502b']\n", "objective topic 28: [u'backstreet boys', u'bryan adams', u'hladno pivo', u'skroz', u'betty blowtorch']\n", "objective topic 29: [u'art-school', u'downy', u'nirvana', u'the blood brothers', u'nas']\n", "objective topic 30: [u'bring me the horizon', u'enter shikari', u'parkway drive', u'superfly', u'silverstein']\n", "objective topic 31: [u'p.o.d.', u'reel big fish', u'vanessa-mae', u\"dolores o'riordan\", u'dispatch']\n", "objective topic 32: [u'the doors', u'the rolling stones', u'the who', u'simon & garfunkel', u'led zeppelin']\n", "objective topic 33: [u'john mayer', u'counting crows', u'death cab for cutie', u'dave matthews band', u'rachael yamagata']\n", "objective topic 34: [u'gackt', u'larc~en~ciel', u'carter burwell', u'mr. big', u'hyde']\n", "objective topic 35: [u'elektrick mann', u'wiley', u'vypsan\\xe1 fixa', u'saosin', u'nirvana']\n", "objective topic 36: [u'incubus', u'tenacious d', u'foo fighters', u'mindless self indulgence', u'the dresden dolls']\n", "objective topic 37: [u'the cooper temple clause', u'vienna teng', u'yo-yo ma', u'the clash', u'dirty pretty things']\n", "objective topic 38: [u'b\\xf6hse onkelz', u'kategorie c', u'subway to sally', u'the streets', u'die apokalyptischen reiter']\n", "objective topic 39: [u'all time low', u'forever the sickest kids', u'the hellacopters', u'metro station', u'the maine']\n", "objective topic 40: [u'nas', u'wu-tang clan', u'ghostface', u'cunninlynguists', u'sonic youth']\n", "objective topic 41: [u'jeff buckley', u'aborym', u'triarii', u'summoning', u'bob marley & the wailers']\n", "objective topic 42: [u'soil & \"pimp\" sessions', u'stereolab', u'slagsm\\xe5lsklubben', u'saint etienne', u'bump of chicken']\n", "objective topic 43: [u'the cure', u'the smiths', u'morrissey', u'joy division', u'pulp']\n", "objective topic 44: [u'sufjan stevens', u'elliott smith', u'bright eyes', u'iron & wine', u'the shins']\n", "objective topic 45: [u'senses fail', u'\\u690d\\u677e\\u4f38\\u592b', u'helios', u'\\u83c5\\u91ce\\u3088\\u3046\\u5b50', u'goldmund']\n", "objective topic 46: [u'east clubbers', u'the cribs', u'the tough alliance', u'h\\xe5kan hellstr\\xf6m', u'the clientele']\n", "objective topic 47: [u'[unknown]', u'kraftwerk', u'yellow magic orchestra', u'every little thing', u'underworld']\n", "objective topic 48: [u'damien rice', u'grateful dead', u'geto boys', u'the avett brothers', u'langhorne slim']\n", "objective topic 49: [u'they might be giants', u'immortal technique', u'madina lake', u'syrup16g', u'jedi mind tricks']\n", "objective topic 50: [u'the mountain goats', u'of montreal', u'wilco', u'the new pornographers', u'the magnetic fields']\n", "objective topic 51: [u'queen', u'u2', u'genesis', u'the police', u'bruce springsteen']\n", "objective topic 52: [u'cradle of filth', u'children of bodom', u'dimmu borgir', u'kalmah', u'eluveitie']\n", "objective topic 53: [u'queens of the stone age', u'ludovico einaudi', u'pixies', u'\\u30af\\u30ec\\u30a4\\u30b8\\u30fc\\u30b1\\u30f3\\u30d0\\u30f3\\u30c9', u'aphex twin']\n", "objective topic 54: [u'madonna', u'kylie minogue', u'fl\\xebur', u'the cranberries', u'sophie ellis-bextor']\n", "objective topic 55: [u'massive attack', u'air', u'r\\xf6yksopp', u'moby', u'morcheeba']\n", "objective topic 56: [u'the chemical brothers', u'the prodigy', u'underworld', u'orbital', u'faithless']\n", "objective topic 57: [u'slipknot', u'disturbed', u'metallica', u'three days grace', u'papa roach']\n", "objective topic 58: [u'fl\\u0451ur', u'wwo', u'graham coxon', u'\\u041e\\u043b\\u0435\\u0433 \\u041c\\u0435\\u0434\\u0432\\u0435\\u0434\\u0435\\u0432', u'pih']\n", "objective topic 59: [u'\\u68b6\\u6d66\\u7531\\u8a18', u'mitsumune shinkichi', u'jedi mind tricks', u'nagaoka seikou', u'\\u5897\\u7530\\u4fca\\u90ce']\n", "objective topic 60: [u'in flames', u'clueso', u'the corrs', u'sonic syndicate', u'scorpions']\n", "objective topic 61: [u'women', u'modest mouse', u'(hed) planet earth', u'man man', u'richard cheese']\n", "objective topic 62: [u'brand new', u'saves the day', u'death cab for cutie', u'coheed and cambria', u'circa survive']\n", "objective topic 63: [u'michael jackson', u'chris brown', u'ne-yo', u'akon', u'usher']\n", "objective topic 64: [u'james morrison', u'streetlight manifesto', u'non phixion', u'against me!', u'emilie simon']\n", "objective topic 65: [u'britney spears', u'rihanna', u'avril lavigne', u'beyonc\\xe9', u'lady gaga']\n", "objective topic 66: [u'the beatles', u'the pillbugs', u'john lennon', u'paul mccartney', u'wondermints']\n", "objective topic 67: [u'nile', u'lady pank', u'suffocation', u'hate eternal', u'nasum']\n", "objective topic 68: [u'eminem', u'50 cent', u'jay-z', u'the game', u'chamillionaire']\n", "objective topic 69: [u'sugababes', u'girls aloud', u'sizzla', u'dia psalma', u'alborosie']\n", "objective topic 70: [u'frank zappa', u'lake of tears', u'marillion', u'current 93', u'devil doll']\n", "objective topic 71: [u'fall out boy', u'jimmy eat world', u'panic at the disco', u'the all-american rejects', u'anberlin']\n", "objective topic 72: [u'extremoduro', u'marea', u'vetusta morla', u'la fuga', u'high five drive']\n", "objective topic 73: [u'gentleman', u'guru', u'jamie cullum', u'jonas brothers', u'james morrison']\n", "objective topic 74: [u'funeral for a friend', u'deftones', u'alexisonfire', u'dredg', u'underoath']\n", "objective topic 75: [u'the knife', u'eels', u'ladytron', u'john frusciante', u'blur']\n", "objective topic 76: [u'mogwai', u'minus the bear', u'death cab for cutie', u'sigur r\\xf3s', u'band of horses']\n", "objective topic 77: [u'beastie boys', u'bob marley & the wailers', u'rage against the machine', u'mudvayne', u'audioslave']\n", "objective topic 78: [u'pendulum', u'jim pansen', u'de/vision', u'blink-182', u'beatsteaks']\n", "objective topic 79: [u'beck', u'modest mouse', u'the white stripes', u'the flaming lips', u'the hives']\n", "objective topic 80: [u'billie holiday', u'thomas dybdahl', u'ray lamontagne', u'scumfrog', u'alanis morissette']\n", "objective topic 81: [u'rock universal', u'fresno', u'mae', u'yellowcard', u'anberlin']\n", "objective topic 82: [u'belle and sebastian', u'camera obscura', u'adam green', u'm. ward', u'club 8']\n", "objective topic 83: [u'enigma', u'pink floyd', u'grzegorz turnau', u'vangelis', u'bushido']\n", "objective topic 84: [u'stars', u'the most serene republic', u'broken social scene', u'have heart', u'boris']\n", "objective topic 85: [u'opeth', u'fear factory', u'anathema', u'isis', u'tool']\n", "objective topic 86: [u'kent', u'lars winnerb\\xe4ck', u'h\\xe5kan hellstr\\xf6m', u'richie kotzen', u'joe satriani']\n", "objective topic 87: [u'kollegah', u'london elektricity', u'the dust brothers', u'pendulum', u'fanu']\n", "objective topic 88: [u'elvis presley', u'ani difranco', u'lucero', u'hot water music', u'tarkan']\n", "objective topic 89: [u'\\u041f\\u0438\\u043a\\u043d\\u0438\\u043a', u'hanson', u'melanie c', u'\\u041a\\u0438\\u043d\\u043e', u'\\u0410\\u0440\\u0438\\u044f']\n", "objective topic 90: [u'yann tiersen', u'abney park', u'plump djs', u'rjd2', u'the analogs']\n", "objective topic 91: [u'dark tranquillity', u'in flames', u'the haunted', u'norther', u'lamb']\n", "objective topic 92: [u'feist', u'nouvelle vague', u'lily allen', u'esthero', u'fiona apple']\n", "objective topic 93: [u'goo goo dolls', u'garth brooks', u'george strait', u'toby keith', u'takida']\n", "objective topic 94: [u'coma', u'lacuna coil', u'supercar', u'kittie', u'o.s.t.r.']\n", "objective topic 95: [u'current 93', u'coil', u'death in june', u'einst\\xfcrzende neubauten', u'nurse with wound']\n", "objective topic 96: [u'kmfdm', u'eagles of death metal', u'john maus', u'godsmack', u'jan hammer']\n", "objective topic 97: [u'tool', u'a perfect circle', u'\\u041f.\\u0422.\\u0412.\\u041f.', u'deftones', u'xiu xiu']\n", "objective topic 98: [u'los hermanos', u'pato fu', u'engenheiros do hawaii', u'lenine', u'raul seixas']\n", "objective topic 99: [u'against me!', u'the gaslight anthem', u'alkaline trio', u'crime in stereo', u'lifetime']\n", "objective topic 100: [u'\\u690d\\u677e\\u4f38\\u592b', u'\\u68b6\\u6d66\\u7531\\u8a18', u'marilyn manson', u'nirvana', u'lacuna coil']\n", "objective topic 101: [u'christina aguilera', u'him', u'cky', u'john mayer', u'turbonegro']\n", "objective topic 102: [u'lil wayne', u'neutral milk hotel', u'gary jules', u't.i.', u'ramones']\n", "objective topic 103: [u'the pillows', u'avril lavigne', u'asian kung-fu generation', u'in\\xe9 kafe', u'beat crusaders']\n", "objective topic 104: [u'ko\\u042fn', u'green day', u'marilyn manson', u'slipknot', u'ozzy osbourne']\n", "objective topic 105: [u'marduk', u'amon amarth', u'gorgoroth', u'immortal', u'mot\\xf6rhead']\n", "objective topic 106: [u'paul simon', u'noize mc', u'bear mccreary', u'phil collins', u'genesis']\n", "objective topic 107: [u'mgmt', u'hot chip', u'crystal castles', u'cut copy', u'cansei de ser sexy']\n", "objective topic 108: [u'daft punk', u'nick cave and the bad seeds', u'einst\\xfcrzende neubauten', u'nick cave', u'philip glass']\n", "objective topic 109: [u'glenn gould', u'phenomden', u'the peacocks', u'chet baker', u'matisyahu']\n", "objective topic 110: [u'mike oldfield', u'george carlin', u'sage francis', u'jonathan larson', u'thomas newman']\n", "objective topic 111: [u'craig armstrong', u'arbol', u'here i come falling', u'simon & garfunkel', u'kotoko']\n", "objective topic 112: [u'as i lay dying', u'all shall perish', u'heaven shall burn', u'caliban', u'neaera']\n", "objective topic 113: [u'eros ramazzotti', u'the absence', u'detonation', u'lamb of god', u'the paper chase']\n", "objective topic 114: [u'john williams', u'angelo branduardi', u'franco battiato', u'loreena mckennitt', u'in extremo']\n", "objective topic 115: [u'juanes', u'between the buried and me', u'vanilla ninja', u'nickelback', u'have heart']\n", "objective topic 116: [u'bj\\xf6rk', u'portishead', u'pj harvey', u'cocorosie', u'miles davis']\n", "objective topic 117: [u'my morning jacket', u'the black keys', u'nasum', u'sigh', u'sonic youth']\n", "objective topic 118: [u'paramore', u'looptroop rockers', u'trivium', u'clouddead', u'takida']\n", "objective topic 119: [u'led zeppelin', u'jimi hendrix', u'phish', u'eric clapton', u'johnny cash']\n", "objective topic 120: [u'kanye west', u'justin timberlake', u'n*e*r*d', u'jay-z', u'lupe fiasco']\n", "objective topic 121: [u'kettcar', u'kaizers orchestra', u'junges gl\\xfcck', u'jupiter jones', u'tomte']\n", "objective topic 122: [u'sonata arctica', u'blind guardian', u'kamelot', u'edguy', u'in flames']\n", "objective topic 123: [u'prince', u'patrick wolf', u'ozark henry', u'stephenie meyer', u'musiq']\n", "objective topic 124: [u'bloc party', u'within temptation', u'death from above 1979', u'asian dub foundation', u'arctic monkeys']\n", "objective topic 125: [u'low', u\"bonnie 'prince' billy\", u'iced earth', u'songs: ohia', u'smog']\n", "objective topic 126: [u'pink floyd', u'red hot chili peppers', u'nirvana', u'metallica', u'foo fighters']\n", "objective topic 127: [u'david bowie', u'robbie williams', u'assemblage 23', u'melotron', u'keith jarrett']\n", "objective topic 128: [u'nightwish', u'rammstein', u'apocalyptica', u'evanescence', u'epica']\n", "objective topic 129: [u'god is an astronaut', u'king crimson', u'buck-tick', u'haste the day', u'veil of maya']\n", "objective topic 130: [u'tv on the radio', u'neko case', u'gogol bordello', u'andrew bird', u'jos\\xe9 gonz\\xe1lez']\n", "objective topic 131: [u'sia', u'flunk', u'zero 7', u'\\u017div\\xe9 kvety', u'ojos de brujo']\n", "objective topic 132: [u'isis', u'monster magnet', u'neurosis', u'melvins', u'post regiment']\n", "objective topic 133: [u'bob dylan', u'the beach boys', u'neil young', u'leonard cohen', u'bruce springsteen']\n", "objective topic 134: [u'schandmaul', u'mia', u'rantanplan', u'\\u5016\\u7530\\u4f86\\u672a', u'delta goodrem']\n", "objective topic 135: [u'the flashbulb', u'venetian snares', u'bad brains', u'bathory', u'municipal waste']\n", "objective topic 136: [u'lacrimosa', u'mew', u'finntroll', u'rhapsody of fire', u'therion']\n", "objective topic 137: [u'the smashing pumpkins', u'alice cooper', u'frank sinatra', u'def leppard', u'the faint']\n", "objective topic 138: [u'weezer', u'electric six', u'nada surf', u'loreena mckennitt', u'barenaked ladies']\n", "objective topic 139: [u'interpol', u'arcade fire', u'radiohead', u'editors', u'yeah yeah yeahs']\n", "objective topic 140: [u'new order', u'pet shop boys', u'sting', u'duran duran', u'u2']\n", "objective topic 141: [u'tori amos', u'capsule', u'perfume', u'martha wainwright', u'the national']\n", "objective topic 142: [u'simple plan', u'3 na bossa', u'papa roach', u'paramore', u'finch']\n", "objective topic 143: [u'z\\u0435\\u043c\\u0444\\u0438\\u0440\\u0430', u'lumen', u'\\u0421\\u043f\\u043b\\u0438\\u043d', u'sezen aksu', u'animal \\u0414\\u0436\\u0430z']\n", "objective topic 144: [u'johann sebastian bach', u'ludwig van beethoven', u'fr\\xe9d\\xe9ric chopin', u'antonio vivaldi', u'wolfgang amadeus mozart']\n", "objective topic 145: [u'explosions in the sky', u'converge', u'65daysofstatic', u'mogwai', u'isis']\n", "objective topic 146: [u'the orb', u'screeching weasel', u'ulrich schnauss', u'warcry', u'toe']\n", "objective topic 147: [u'rush', u'saxon', u'guns n roses', u'van halen', u'danko jones']\n", "objective topic 148: [u'sublime', u'the clash', u'ok go', u'me first and the gimme gimmes', u'the dismemberment plan']\n", "objective topic 149: [u'sentenced', u'opeth', u'enslaved', u'porcupine tree', u'moonsorrow']\n", "objective topic 150: [u'muse', u'coldplay', u'the killers', u'placebo', u'snow patrol']\n", "objective topic 151: [u'\"weird al\" yankovic', u'san marino', u'boysetsfire', u'mest', u'sheryl crow']\n", "objective topic 152: [u'bon jovi', u'm\\xf6tley cr\\xfce', u\"guns n' roses\", u'axel rudi pell', u'h\\xe9roes del silencio']\n", "objective topic 153: [u'austin tv', u'norah jones', u'los aut\\xe9nticos decadentes', u'the monkees', u'claude-michel sch\\xf6nberg']\n", "objective topic 154: [u'misfits', u'iced earth', u'emilie autumn', u'blutengel', u'insane clown posse']\n", "objective topic 155: [u'regina spektor', u'the album leaf', u'kate nash', u'sufjan stevens', u'kings of convenience']\n", "objective topic 156: [u'rise against', u'the offspring', u'millencolin', u'volbeat', u'billy talent']\n", "objective topic 157: [u'tom waits', u'nick cave and the bad seeds', u'electronikboy', u'neil young', u'the rolling stones']\n", "objective topic 158: [u'nine inch nails', u'marilyn manson', u'kmfdm', u'anathema', u'rammstein']\n", "objective topic 159: [u'kings of leon', u'the kooks', u'arctic monkeys', u'babyshambles', u'razorlight']\n", "objective topic 160: [u'enya', u'tokio hotel', u'sarah brightman', u'laura pausini', u'the prodigy']\n", "objective topic 161: [u'atb', u'ti\\xebsto', u'nena', u'armin van buuren', u'scooter']\n", "objective topic 162: [u'bob marley', u'kosheen', u'akurat', u'paprika korps', u'habakuk']\n", "objective topic 163: [u'system of a down', u'rainbow', u'serj tankian', u'\\u0421\\u043b\\u0430\\u0432\\u0438 \\u0422\\u0440\\u0438\\u0444\\u043e\\u043d\\u043e\\u0432', u'metallica']\n", "objective topic 164: [u'arakain', u'amy winehouse', u'dean martin', u'keep of kalessin', u'sasha']\n", "objective topic 165: [u'iron maiden', u'metallica', u'megadeth', u'judas priest', u'slayer']\n", "objective topic 166: [u'justice', u'kate bush', u'popo', u'surkin', u'vaya con dios']\n", "objective topic 167: [u'cocteau twins', u'killing joke', u'the innocence mission', u'skinny puppy', u'magnet']\n", "objective topic 168: [u'big bang', u'alice donut', u'devo', u'\\ub3d9\\ubc29\\uc2e0\\uae30', u'epik high']\n", "objective topic 169: [u'jason mraz', u'apulanta', u'kotiteollisuus', u'stam1na', u'pmmp']\n", "objective topic 170: [u'j dilla', u'a tribe called quest', u'the roots', u'common', u'madlib']\n", "objective topic 171: [u'depeche mode', u'diary of dreams', u'dead can dance', u'project pitchfork', u'rome']\n", "objective topic 172: [u\"lil' wayne\", u'royce da 5\\'9\"', u'kid vishis', u'dixie chicks', u'atmosphere']\n", "objective topic 173: [u'pearl jam', u'alice in chains', u'nirvana', u'soundgarden', u'stone temple pilots']\n", "objective topic 174: [u'manu chao', u'k.i.z.', u'beatsteaks', u'seeed', u'blumentopf']\n", "objective topic 175: [u'clock dva', u'switchfoot', u'allerseelen', u'philip glass', u'swans']\n", "objective topic 176: [u'harem scarem', u'ceremony', u'the first step', u'impaled nazarene', u'trash talk']\n", "objective topic 177: [u'the mighty mighty bosstones', u'less than jake', u'ils', u'tiger army', u'terror']\n", "objective topic 178: [u'arctic monkeys', u'blink-182', u'mcfly', u'sum 41', u'the strokes']\n", "objective topic 179: [u'combichrist', u'god module', u'apoptygma berzerk', u'hocico', u'amduscia']\n", "objective topic 180: [u'garbage', u'metric', u'the cardigans', u'lady gaga', u'dido']\n", "objective topic 181: [u'radiohead', u'sigur r\\xf3s', u'kings of convenience', u'blur', u'thom yorke']\n", "objective topic 182: [u'myslovitz', u'happysad', u'pid\\u017cama porno', u'hey', u'kult']\n", "objective topic 183: [u'caetano veloso', u'aimee mann', u'maria beth\\xe2nia', u'jo\\xe3o gilberto', u'chico buarque']\n", "objective topic 184: [u'man or astro-man?', u'dilated peoples', u'deus', u'nofx', u'daryll-ann']\n", "objective topic 185: [u'porcupine tree', u'pain of salvation', u'opeth', u'dredg', u'blackfield']\n", "objective topic 186: [u'oasis', u'nickelback', u'lumen', u'aerosmith', u'poets of the fall']\n", "objective topic 187: [u'boards of canada', u'aphex twin', u'amon tobin', u'autechre', u'four tet']\n", "objective topic 188: [u'soundtrack', u'hans zimmer', u'howard shore', u'john williams', u'buckethead']\n", "objective topic 189: [u'animal collective', u'broken social scene', u'pavement', u'ratatat', u'radiohead']\n", "objective topic 190: [u'the mountain goats', u'boyracer', u'casiotone for the painfully alone', u'silver jews', u'mount eerie']\n", "objective topic 191: [u'my chemical romance', u'alkaline trio', u'the used', u'30 seconds to mars', u'fall out boy']\n", "objective topic 192: [u'biffy clyro', u'napalm death', u'thrice', u'alexisonfire', u'idiot pilot']\n", "objective topic 193: [u'flagrant fowl', u'be your own pet', u'jamiroquai', u'the long blondes', u'los campesinos!']\n", "objective topic 194: [u'the replacements', u'paul westerberg', u'jens unmack', u'robert pattinson', u'green day']\n", "objective topic 195: [u'dir en grey', u'good charlotte', u'\\u30e0\\u30c3\\u30af', u'plastic tree', u'\\u30ac\\u30bc\\u30c3\\u30c8']\n", "objective topic 196: [u'ben folds', u'why?', u'ben folds five', u'panic at the disco', u'green day']\n", "objective topic 197: [u'infected mushroom', u'shpongle', u'bonobo', u'dj shadow', u'the cinematic orchestra']\n", "objective topic 198: [u'iamx', u'ignite', u'she wants revenge', u'vnv nation', u'blood for blood']\n", "objective topic 199: [u'anathema', u'my dying bride', u'katatonia', u'paradise lost', u'moonspell']\n", "Background genres\n", "background topic 0: [u'andr\\xe9s calamaro', u'amy macdonald', u'caf\\xe9 tacuba', u'soda stereo', u'jem']\n", "background topic 1: [u'abba', u'lenny kravitz', u'billie holiday', u'madness', u'hello saferide']\n", "background topic 2: [u'equilibrium', u'ensiferum', u'louise attaque', u'sdp', u'la rue k\\xe9tanou']\n", "background topic 3: [u'avenged sevenfold', u'iron maiden', u'cannibal corpse', u'metallica', u'30 seconds to mars']\n", "background topic 4: [u'amy winehouse', u'jamiroquai', u'nina simone', u'koop', u'de-phazz']\n" ] } ], "source": [ "background_topics = []\n", "objective_topics = []\n", "all_topics = []\n", "topic_count = 200\n", "background_topic_count = 5\n", "\n", "for i in xrange(topic_count):\n", " topic_name = (\"background\" if i < background_topic_count else \"objective\") + \" topic \" + str(i)\n", " all_topics.append(topic_name)\n", " if i < background_topic_count:\n", " background_topics.append(topic_name)\n", " else:\n", " objective_topics.append(topic_name)\n", " \n", "model = ArtmModel(topic_names=all_topics)\n", "model.num_processors = 4\n", "\n", "# Configure scores\n", "\n", "model.scores.add(SparsityPhiScore(name='ObjectiveSparsityPhiScore', topic_names=objective_topics))\n", "model.scores.add(SparsityThetaScore(name='ObjectiveSparsityThetaScore', topic_names=objective_topics))\n", "model.scores.add(SparsityPhiScore(name='BackgroundSparsityPhiScore', topic_names=background_topics))\n", "model.scores.add(SparsityThetaScore(name='BackgroundSparsityThetaScore', topic_names=background_topics))\n", "model.scores.add(SparsityThetaScore(name='SparsityThetaScore'))\n", "model.scores.add(PerplexityScore(name='PerplexityScore'))\n", "model.scores.add(TopTokensScore(name='TopTokensScore', num_tokens=20))\n", "\n", "# Configure regularizers\n", "model.regularizers.add(SmoothSparsePhiRegularizer(name='ObjectiveSparsePhi', \n", " topic_names=objective_topics, tau=-0.1))\n", "model.regularizers.add(SmoothSparseThetaRegularizer(name='ObjectiveSparseTheta', \n", " topic_names=objective_topics, tau=-2.0))\n", "model.regularizers.add(SmoothSparsePhiRegularizer(name='BackgroundSparsePhi', \n", " topic_names=background_topics, tau=0.1))\n", "model.regularizers.add(SmoothSparseThetaRegularizer(name='BackgroundSparseTheta', \n", " topic_names=background_topics, tau=2.0))\n", "model.regularizers.add(DecorrelatorPhiRegularizer(name='DecorrelatorPhi', \n", " topic_names=objective_topics, tau=100000.0))\n", "\n", "model.initialize(data_path=batch_path)\n", "start = time.clock()\n", "print \"Start fitting...\"\n", "model.fit_offline(data_path=batch_path, num_collection_passes=15)\n", "print \"Fitting tooks %.1f s\" % ((finish - start) / 4)\n", "\n", "plt.plot(range(model.num_phi_updates), model.scores_info['PerplexityScore'].value, 'r--', linewidth=2)\n", "plt.xlabel('Iterations count')\n", "plt.ylabel('Perplexity')\n", "plt.grid(True)\n", "plt.show()\n", "\n", "plt.plot(range(model.num_phi_updates), model.scores_info['ObjectiveSparsityPhiScore'].value, 'b--',\n", " range(model.num_phi_updates), model.scores_info['ObjectiveSparsityThetaScore'].value, 'r--', linewidth=2)\n", "plt.xlabel('Iterations count')\n", "plt.ylabel('Objective Phi sparsity, Theta sparsity')\n", "plt.grid(True)\n", "plt.show()\n", "\n", "plt.plot(range(model.num_phi_updates), model.scores_info['BackgroundSparsityPhiScore'].value, 'b--',\n", " range(model.num_phi_updates), model.scores_info['BackgroundSparsityThetaScore'].value, 'r--', linewidth=2)\n", "plt.xlabel('Iterations count')\n", "plt.ylabel('Background Phi sparsity, Theta sparsity')\n", "plt.grid(True)\n", "plt.show()\n", " \n", "# Visualize top token in each topic and a snippet of theta matrix\n", "print \"Genres\"\n", "for topic_name in objective_topics:\n", " print topic_name + ': ',\n", " print model.scores_info['TopTokensScore'].last_topic_info[topic_name].tokens\n", "print \"Background genres\"\n", "for topic_name in background_topics:\n", " print topic_name + ': ',\n", " print model.scores_info['TopTokensScore'].last_topic_info[topic_name].tokens" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(0.013544379745815682, u'ko\\u042fn')\n", "(0.004967596773303162, u'marilyn manson')\n", "(0.004824653697969583, u'slipknot')\n", "(0.0034598849801312226, u'ozzy osbourne')\n", "(0.0027944055436555093, u'ben folds')\n", "(0.0014045742892828256, u'why?')\n", "(0.0011914242981671819, u'the replacements')\n", "(0.0010896357725904138, u'ben folds five')\n", "(0.0008108250706300446, u'panic at the disco')\n", "(0.0004188166377989931, u'paul westerberg')\n", "(0.00036322798173936757, u'jens unmack')\n", "(0.00031306630824538134, u'robert pattinson')\n" ] } ], "source": [ "main_musician = \"green day\"\n", "top_matches_count = 20\n", "top_matches = []\n", "\n", "for topic in objective_topics:\n", " topic_musicians = model.scores_info['TopTokensScore'].last_topic_info[topic].tokens\n", " weights = model.scores_info['TopTokensScore'].last_topic_info[topic].weights\n", " if main_musician in topic_musicians:\n", " main_musician_ind = topic_musicians.index(main_musician)\n", " for i in xrange(len(topic_musicians)):\n", " if (topic_musicians[i] != main_musician):\n", " top_matches.append((weights[i] * weights[main_musician_ind], topic_musicians[i]))\n", "\n", "for top_match in sorted(top_matches, reverse=True)[:top_matches_count]:\n", " print top_match\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "model.visualise()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.9" } }, "nbformat": 4, "nbformat_minor": 0 }