Musiikin toistosovelluksen rakentaminen Spotify Web API -rajapintaa ja suosittelujärjestelmää hyödyntäen
Plym, Jesse (2024)
Plym, Jesse
2024
All rights reserved. This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2024111528376
https://urn.fi/URN:NBN:fi:amk-2024111528376
Tiivistelmä
Suosittelujärjestelmiä käytetään lähes jokaisessa palvelussa personoidakseen sisältöä, miksi suosittelujärjestelmien ja takana olevien algoritmien ymmärtäminen on tärkeää digitaalisessa maailmassa. Opinnäytetyön aiheena oli rakentaa suosittelujärjestelmä musiikkikappale-ehdotuksia varten ja ottaa se konkreettiseen käyttöön verkkosovellukseen. Suosittelujärjestelmän oli tarkoitus tuottaa kappale-ehdotuksia käyttäjän Spotify-kuunteluhistorian perusteella. Aiheen valintaan vaikutti tekijän oma harrastuneisuus musiikkiin ja halu ymmärtää suosittelujärjestelmien toimintaperiaatteita. Opinnäytetyössä käytettiin Spotifyn tarjoamaa API-rajapintaa datan lähteenä sisältäen monipuolista kappalekohtaista metadataa.
Opinnäytetyön tavoitteena oli selvittää, antavatko suosittelujärjestelmät relevantteja tuloksia. Tavoitteena oli myös selvittää priorisoiko suosittelujärjestelmä tiettyjä ominaisuuksia ylitse muiden ja jäikö osa ominaisuuksista puolestaan huomioimatta. Lisäksi selvitettiin, oliko Spotifyn tarjoaman API-rajapinnasta saatava data riittävän kattavaa antamaan realistisia kappale-ehdotuksia. Näihin tavoitteisiin saatiin vastaus järjestelmän käyttäjäkokeilulla ja kuunteluhistoriaa manipuloimalla. Kuunteluhistoriasta poistettiin osa kappaleista ja katsottiin osasiko järjestelmä ehdottaa samoja kappaleita.
Suosittelujärjestelmän konkreettista käyttöä varten rakennettiin verkkosovellus. Verkkosovellus rakennettiin Next.js-ohjelmistokehyksellä ja TypeScript-ohjelmointikielellä. Henkilökohtaista kuunteluhistoriaa varten sovellukseen lisättiin tunnistautuminen käyttäen NextAuth.js-kirjastoa.
Opinnäytetyö alkoi perehtymällä data-analyysin prosessina, mikä oli olennainen osa suosittelujärjestelmän rakentamista. Tämän jälkeen perehdyttiin suosittelujärjestelmien toimintaan ja niiden eri tyyppeihin. Suosittelujärjestelmiä on pääsääntöisesti kahta eri tyyppiä: sisältö- ja yhteistyöpohjainen. Opinnäytetyön järjestelmäksi valikoitui sisältöpohjainen suosittelujärjestelmä. Suosittelujärjestelmän toiminta perustui kappaleiden ominaisuuksien samankaltaisuuden mittaamiseen euklidisen etäisyyden avulla. Käyttäjän kuunteluhistorian keskiarvoa verrattiin vertailtavan aineiston kappaleisiin ja tuloksena järjestelmä antoi kappale-ehdotuksia.
Käyttäjäpalautteet suosittelujärjestelmän tuottamista ehdotuksista olivat myönteisiä ja täten ehdotukset olivat relevantteja. Järjestelmä osasi tuottaa samankaltaista sisältö, joka vastasi käyttäjän kuunteluhistoriaa. Järjestelmä priorisoi kappaleen artisti- ja albumiominaisuutta suosituksissa, mutta mikään verrattava ominaisuus ei jäänyt algoritmilta huomioimatta. Spotifyn tarjoaman API-rajapinnasta ei ollut mahdollista saada kerralla suurta määrää kappaledataa, mutta kappale-ehdotukset olivat siitä huolimatta realistisia. Suosittelujärjestelmät antavat relevantteja suosituksia, mutta suositusten laatua on vaikea arvioida ja laatua on tarkasteltava suosittelujärjestelmän tyypin mukaan.
Opinnäytetyön tavoitteena oli selvittää, antavatko suosittelujärjestelmät relevantteja tuloksia. Tavoitteena oli myös selvittää priorisoiko suosittelujärjestelmä tiettyjä ominaisuuksia ylitse muiden ja jäikö osa ominaisuuksista puolestaan huomioimatta. Lisäksi selvitettiin, oliko Spotifyn tarjoaman API-rajapinnasta saatava data riittävän kattavaa antamaan realistisia kappale-ehdotuksia. Näihin tavoitteisiin saatiin vastaus järjestelmän käyttäjäkokeilulla ja kuunteluhistoriaa manipuloimalla. Kuunteluhistoriasta poistettiin osa kappaleista ja katsottiin osasiko järjestelmä ehdottaa samoja kappaleita.
Suosittelujärjestelmän konkreettista käyttöä varten rakennettiin verkkosovellus. Verkkosovellus rakennettiin Next.js-ohjelmistokehyksellä ja TypeScript-ohjelmointikielellä. Henkilökohtaista kuunteluhistoriaa varten sovellukseen lisättiin tunnistautuminen käyttäen NextAuth.js-kirjastoa.
Opinnäytetyö alkoi perehtymällä data-analyysin prosessina, mikä oli olennainen osa suosittelujärjestelmän rakentamista. Tämän jälkeen perehdyttiin suosittelujärjestelmien toimintaan ja niiden eri tyyppeihin. Suosittelujärjestelmiä on pääsääntöisesti kahta eri tyyppiä: sisältö- ja yhteistyöpohjainen. Opinnäytetyön järjestelmäksi valikoitui sisältöpohjainen suosittelujärjestelmä. Suosittelujärjestelmän toiminta perustui kappaleiden ominaisuuksien samankaltaisuuden mittaamiseen euklidisen etäisyyden avulla. Käyttäjän kuunteluhistorian keskiarvoa verrattiin vertailtavan aineiston kappaleisiin ja tuloksena järjestelmä antoi kappale-ehdotuksia.
Käyttäjäpalautteet suosittelujärjestelmän tuottamista ehdotuksista olivat myönteisiä ja täten ehdotukset olivat relevantteja. Järjestelmä osasi tuottaa samankaltaista sisältö, joka vastasi käyttäjän kuunteluhistoriaa. Järjestelmä priorisoi kappaleen artisti- ja albumiominaisuutta suosituksissa, mutta mikään verrattava ominaisuus ei jäänyt algoritmilta huomioimatta. Spotifyn tarjoaman API-rajapinnasta ei ollut mahdollista saada kerralla suurta määrää kappaledataa, mutta kappale-ehdotukset olivat siitä huolimatta realistisia. Suosittelujärjestelmät antavat relevantteja suosituksia, mutta suositusten laatua on vaikea arvioida ja laatua on tarkasteltava suosittelujärjestelmän tyypin mukaan.