MAIO Solutions AB

Vi erbjuder tech-lösningar och konsultation för projekt inom områden som AI, SaaS och säkerhet

Kontakta Oss

Stockholm, Sweden
caj@maiosolutions.com
+46707866941

© MAIO Solutions AB. All Rights Reserved

Metadata-Matchare till Skivbolag

Tillsammans med:
Hit Music Group
Caj Morgan
Caj Morgan
12 Feb 2024· 5 min

Problemet

Att hantera flera spellistor på flera olika plattformar kan vara mycket arbete; särskilt för ett musikbolag med mycket på sitt fat. Hit Music Group är ett internationellt skivbolag i samarbete med MAIO Solutions AB, som tillhandahåller IT-relaterade lösningar.

Det finns ett hav av olika musikströmningstjänster som Spotify och Apple Music för att nämna några få; för ett skivbolag är det en smart strategi att vara tillgänglig på flera tjänster för att maximera sin marknadsföring. Problemet? Det är lättare sagt än gjort att genomföra.

Ett flertal företag förser lösningar till detta problem, men ofta är matchningsfunktionen inte tillräckligt bra, vilket då kräver mycket extra manuellt arbete vid överföring av stora spellistor.

Resten av denna rapport handlar om hur vi förbättrade matchningar emellan olika låtar, baserad på dess metadata.

Lösningen

With our data science expertise, we applied several Machine Learning solutions to solve this problem. Some platforms such as Spotify support song search using their corresponding ISRC codes; it's an unique barcode assigned to every distributed song. If that was the case for all platforms, we wouldn't have had to dip our toes into AI-solutions to begin with.

Med vår expertis inom data tillämpade vi flera maskininlärningslösningar för att lösa detta problem. Vissa plattformar som Spotify stöder låtsökning med hjälp av ISRC-koder; det är en unik streckkod som tilldelas varje distribuerad låt. Om det hade varit fallet för alla plattformar, hade vi inte behövt använda AI-lösningar från första början.

Förberedelser

Precis som med alla dataprojekt är den tillgängliga datan och dess egenskaper som dikterar processen och resultatet. Det finns ett begränsat antal tillgängliga gemensamma attribut för en låt på 2 separata plattformar, vi identifierade följande:

  • Låtnamn
  • Artist(er) Namn
  • Albumnamn
  • Omslagsbild
  • Låtlängd
  • Explicit
  • Utgivningsdatum

Vår hypotes var att dessa egenskaper var tillräckliga för att vi skulle kunna träna en modell för att matcha låtar med ett bra resultat.

Maskininlärningsalgoritmer är beroende av data, därför byggde vi först en scraper som hämtade metadata från ungefär 3000 olika spår. Vi behövde åtminstone ett par hundra exempel på minoritetsklassen; nämligen den sanna positiva klassen som indikerar en “match”. Uppenbarligen är detta en binär klassificeringsuppgift; en låt är antingen en match eller inte; sant/falskt.

Egenskapsutvinning

Även om ett stort fokus inom Maskininlärning är runt själva modellerna, så är det långt ifrån den viktigaste aspekten för ett framgångsrikt projekt. Eftersom klassificering inom dessa typer av projekt vanligtvis är enkel, var interaktionen av egenskaperna mellan ett par låtar av största fokus.

Text-Metadata

In order to design an adequate instance space, we had to extract attributes from both of the songs metadata and combine them in clever ways. The primary focus was to look at the available text metadata, namely:

  • Track Name

  • Artist(s) Name(s)

  • Album Name

Across different music services, it's plausible that songs contain slight differences in the metadata; this might include having (.feat) in the track name among others. Thus we can't naively trust if the track names matches exactly:

För att utforma en lämplig instansrymd var vi tvungna att extrahera attribut från båda låtarnas metadata och kombinera dem på ett smart sätt. Huvudfokus låg på att titta på den tillgängliga datan, nämligen:

  • Låtnamn
  • Artist(er) Namn
  • Albumnamn

Olika musiktjänster kan ibland ha något olik metadata, en relativt vanlig sådan är avvikelser gällande (.feat) i låtnamnet m.m. Därför kan vi inte naivt lita på att låtnamnen matchar exakt:

    if track_1.name == track_2.name: #it's a match else: #it's not

Vi behöver något smartare.

Ett annat förslag är att först sammanfoga textmetadatan till en sträng och sedan använda en teknik som kallas N-gram. Över textsträngen används ett glidande fönster med storleken n=2 med uppgiften att samla antalet förekomster av intilliggande bokstavspar. Som exempel skulle meningen “hello there” producera “he: 2, el: 1, ll: 1, lo: 1, o: 1, t: 1, th: 1, er: 1, re: 1” där heltalen indikerar förekomster. Även om detta inte är en felfri metod, är den användbar eftersom vi kan skapa en sannolikhetsfördelning för två olika meningar och kvantifiera deras likhet.

Det finns många tillgängliga verktyg för att bestämma likhet mellan fördelningar. För denna enkla uppgift användes KL-divergence för att kvantifiera fördelningslikheten mellan de två meningarna. Efter att fördelningarna hade uppskattats tillämpades följande formel för KL-divergens:

DKL(S1 S2)=x χS1(x)lnS2(x)+ϵS1(x)+ϵ\begin{aligned} D_{KL}(S_1 || S_2) = \sum_{x \in \chi} S_1(x) \ln {\frac{S_2(x) + \epsilon}{S_1(x) + \epsilon}} \end{aligned}

Där ϵ>0\epsilon > 0, x χx \in \chi är varje möjligt n-gram av de kombinerade meningarna och SnS_n är de respektive n-gram fördelningarna av meningarna. Värdemängden av denna funktion är ett värde t[0,)t \in [0, \infty). Detta värde används sedan som en extraherad egenskap till maskininlärningsmodellen.

Bildegenskaper

Den andra lite mer komplicerade egenskapen som extraherades använde omslagsbilden för varje låt. Kortfattat extraherade vi flera egenskaper från spårparets RGB-kanaler: medelvärde, standardavvikelse, entropi och skevhet. Egenskaperna normaliserades sedan och placerades i ett par vektorer. För att uträkna ett likhetsvärde utfördes kosinlikhet på de motsvarande bildvektorerna:

cos(θ)=V1V2V1V2\begin{aligned} cos(\theta) = \frac{V_1 \cdot V_2}{||V_1||\cdot ||V_2||} \end{aligned}

Där Range(cos(θ))[1,1]\text{Range}(cos(\theta)) \in [-1, 1], cos(θ)=1cos(\theta) = 1 innebär identiska omslagsbilder.

Urval av Egenskaper

De återstående tre egenskaperna var enklare och av Boolesk typ:

  • Utgivningsdatum
  • Låtlängd
  • Explicit

De gav mer vikt till modellen, då när dessa inte matchar, gör oftast inte de olika låtarna det heller. Däremot kan de matcha fast det inte är samma spår, och därför behöver vi fler egenskaper än dessa. Intressant nog har många låtar som är en cover av originalspåret vanligtvis samma låtlängd men inte samma utgivningsdatum. Låtnamnet, artistnamnet och albumnamnet är också ibland liknande; detta är en strategi som vissa coverartister använder som en marknadsföringsknep. Sammanfattningsvis, medan dessa egenskaper verkligen hjälper modellen, är de inte tillräckliga i alla situationer.

Med valet av följande fem egenskaper:

  • Textdivergens
  • Bildlikhet
  • Utgivningsdatum
  • Låtlängd
  • Explicit bör vår modell kunna skilja mellan en match och en icke-match med hög grad av noggrannhet.

För att inte överanpassa modellen lades brus till i liten grad till de två första egenskaperna i listan ovan. Geometriskt kommer resultatet av denna åtgärd att öka “marginalzonen” mellan de olika klasserna av datan och göra modellen mer “jämn”.

Dimensionsreducering

KorrelationskartaKorrelationskarta

På grund av den en del multikollinearitet mellan egenskaperna kan mycket av den multivariata informationen vara överflöd. Vi kan tillämpa en teknik för dimensionell reduktion som kallas Principalkomponentanalys (PCA). Att minska dimensionerna har flera fördelar, såsom att skapa större numerisk stabilitet i modellen; det gör det också möjligt för oss att visualisera instansrymden.

PCA: Visualisering av instansrymdenPCA: Visualisering av instansrymden

Intressant nog så finns det två särskiljbara kluster för en "matchning" och "icke-matchning" gällande datapunkterna. I två dimensioner så verkar de också vara linjärt separerbara, vilken innebär att vi endast kommer behöva att använda en enklare modell.

Modellen

En Stödvektormaskin där en linjär kärna verkade vara ett rimligt val som modellhypotes för detta specifika scenario. Målet med en SVM är att hitta hyperplanet (en linje i detta 2D-fall) som separerar alla olika klasser med maximal marginal. På ett elegant sätt lär sig algoritmen detta hyperplan med hjälp av några intressanta matematiska beräkningar; ett perfekt ämne för en framtida artikel1.

Vi samlade in och utförde extraheringen av egenskaper på tusentals träningsprover och delade in dem i ett tränings- och testset. Därefter tränade vi modellen för att hitta beslutsgränserna, med kontrasterande klasser på vardera sidan; detta är observerbart i grafen nedan.

Linjär SVM - BeslutsgränserLinjär SVM - Beslutsgränser

Evaluation

Modellen evaluerades med test datasettet med följande resultat:

  • Accuracy Score: 99.57%

  • Precision: 99.16%

  • Recall: 100%

Notera att detta är en väldigt hög träffsäkerhet vilket är en reflektion av problemets domän och egenskapsutvinningen; för andra problem, kan ofta resultat som dessa vara orealistiska.

Sammanfattning

Vi har gått igenom en kort demonstration av ett litet verkligt dataanalysfall med användning av maskininlärningsmetoder. Även om man troligen kan bygga en ganska bra algoritm för matchning av metadata med hjälp av en uppsättning logikregler, såsom if-else-satser, bör man vara medveten om att det kan vara svårt att få till. Därför fungerar maskininlärningsmetoder survärent i domäner med motsvarande problem.

Vi hjälper dig

Letar du efter en liknande lösning eller kanske något helt annat? Vi hjälper dig från start till mål inom våra expertisområden. Boka in ett kostnadsfritt rådgivningsmöte redan idag.

Kontakta Oss
Navigation
MAIO Solutions AB

Vi erbjuder tech-lösningar och konsultation för projekt inom områden som AI, SaaS och säkerhet

Kontakta Oss

Stockholm, Sweden
caj@maiosolutions.com
+46707866941

© MAIO Solutions AB. All Rights Reserved