De komende tijd (in elk geval tot en met midden maart) houd ik me bezig met het voorspellen van sleutelwoorden/tags bij plaatjes.
Neem als voorbeeld een foto verzamel site (zoals www.flickr.com), als je daarop een foto zet word jou gevraagd welke tags er bij die foto horen.
Het zou natuurlijk hartstikke handig zijn als je een lijstje van (zeg) 10 tags krijgt die allemaal relevant zijn, en je ze alleen maar hoeft aan te vinken of die kloppen of niet.
Dat gaan wij proberen te leren. Daarvoor hebben we een database met 20.000 veel plaatjes en elk plaatje heeft zo’n 3-9 tags.
Nu hebben we ook 200 plaatjes zonder tags (test set), en we willen bepalen welke tags daarbij zouden moeten/kunnen horen.
De precieze aanpak kan ik niet helemaal vertellen, maar het komt op het volgende neer. We berekenen features/eigenschappen van elk plaatje.
Nu nemen we aan dat als deze features dicht bij elkaar liggen, de tags ook hetzelfde zouden zijn.
Dus berekenen we van zo’n plaatje van de test set, de 10 ‘naaste buren’ uit de train-set. Daarvan hebben we de keywords! Dus we hebben nu 10 lijstjes met mogelijke tags. Nu is het alleen de vraag welke van deze verzameling tags echt relevant zijn. Bijvoorbeeld de 5 meest voorkomende!
Nu gaan we dit simpele idee ietsje moeilijker maken, als ik weet dat ik bepaalde plaatjes uit de train-set dichtbij elkaar wil hebben (bijvoorbeeld omdat ze exact dezelfde keywords hebben), kan ik mijn ‘dataruimte’ aanpassen. Dat gaan we gebruiken, en daar hebben we verschillende methods voor, maar de vector/matrix berekeningen zijn te verkrijgen op aanvraag
.
Ook over die tags kan ik wat meer zeggen, bijvoorbeeld dat het woord ‘lucht’ en ‘water’ vaak samen voorkomt. Als ik dat weet, en een van de buren van het test plaatje heeft het woord ‘lucht’, dan betekend dat der een grote kans is dat het test-plaatje ook ‘water’ bevat. Dit soort kansen kan je ook leren. Na 10 maart vertel ik wel hoe!