HackerTrans
TopNewTrendsCommentsPastAskShowJobs

nlplaylist

no profile record

comments

nlplaylist
·3 jaar geleden·discuss
I removed all Christmas songs after Christmas! That's probably the issue. The majority of problems people are seeing can be fixed by expanding the dataset.
nlplaylist
·3 jaar geleden·discuss
Don't have instrument specific data on songs. Wish I did. Was thinking about classification algorithm on song spectrograms to do this. There's a music instrument dataset I could train on and run my songs through. Could possibly take weeks though. I'll investigate.
nlplaylist
·3 jaar geleden·discuss
Could be that a song like that simply doesn't exist in my current dataset of 35k tracks.
nlplaylist
·3 jaar geleden·discuss
TLDR: Lots of musical metadata converted into paragraphs and the SentenceTransformers Retrieve & Re-Rank Pipeline.(https://www.sbert.net/index.html)

The sentence embeddings are calculated using a Bidirectional Encoder Representation Transformer (BERT) model. There's a pre-trained model for this network trained on over 1 billion sentences from the internet that is publicly available, (thanks Microsoft) . The model transforms your description into a 784-long list of numbers (a vector) that represents the contextual meaning of your sentence.

The model runs off a dataset of musical metadata for 35,000 songs. As a "chronically online music nerd", I knew where to find it. The metadata is very rich, it has a lot of useful columns like the genres, subgenres, and descriptions of tracks. The numerical data is binned into categorical values like "obscure" mapping popularity between 0 and 10, "highly danceable" mapping danceability between 80 and 100, etc. The text data is modified into a coherent sentence: "this song's main genres are _____. this song is from the 80s. this name of this song is lovefool by the cardigans. etc"

An arduous part of the project was describing each musical genre in depth, with its own paragraph such that each genre's actual contextual meaning is captured and not just "This song is a Hyperpop song" or "This song is Adult Contemporary". It was a big exercise in music history and tested my knowledge of music. I also learned a lot about musical genres like "Mongolian Throat Singing" and how it compares to "Gamelan Throat Singing".

I also put the song lyrics for each song through GPT-3 and asked it to summarize the lyrical themes. That's also embedded and used in NLPlaylist.

Each feature for each song in our metadata dataset is now a big paragraph that describes the song. The paragraph is split up into sentences, and the embedding of each sentence is found. The final embedding for each song is then calculated by taking a weighted average over all sentence embeddings from the big paragraph and genre and lyrical embeddings.

To make your playlist, all that has to be done is compare the embedding of your query all 35,000 embeddings in the dataset and return the 100 most similar queries, using the cosine similarity distance metric. Thank god we have computers.

Once the 100 most similar candidate tracks are found, they are reranked using a "cross encoder" trained on 215M question-answer pairs from various sources and domains, including StackExchange, Yahoo Answers, Google & Bing search queries to give the best matches.
nlplaylist
·3 jaar geleden·discuss
Thank you! I'm just a guy who loves music and sharing it with people. It's been my dream to build something like that. Hope you find some good tunes with my project!
nlplaylist
·3 jaar geleden·discuss
Don't have any geographic information in my dataset that's why. Thinking about finding song metadata for artists that contain information about their geographic location. Popular in 1995 should be working though, as I do have decade and year information.
nlplaylist
·3 jaar geleden·discuss
Working on weighted averages for each song feature embedding. This might be the fix for that. Thinking about comparing the query embedding to sentences like "This query relates to musical genres" or "This query relates to the key and modality of songs" etc. This could be add importance to the "popularity" feature I have in my dataset for queries that contain words like "obscure" or "very popular".

Just an idea right now, I'll get to it when I can!
nlplaylist
·3 jaar geleden·discuss
OP HERE! Solved the hugging to death issue. Reached the Spotify 11k playlist limit. Deleting old playlists and the site should be working as intended now.

THANK YOU whoever posted this!

Currently working on: Fixing the recommendation scoring function. Right now it's giving hit or miss responses. I think the problem is with my cross encoder "reranker" is not doing its job the right way. I'll fix the passages it looks at when re ranking based on the query.

Also getting rid of the input box animation, lol. I've gotten flack for that on Reddit too. You should have seen the old site. It still renders that HTML on mobile.

Taking any and all questions!