This project analyzes personal Spotify listening history and uses a BERT-based model to recommend similar tracks based on your listening behavior and track metadata.
-
π Exploratory Data Analysis:
- Most listened artists and albums
- Listening patterns by time
- Track skip rate
- User behavior insights
-
π Visualizations:
- Artist frequency bar plots
- Listening time histograms
- Hourly activity line plots
- Pie charts of listening reasons
-
π§ BERT-Based Recommendation System:
- Uses BERT embeddings to find similar tracks
- Generates song recommendations based on cosine similarity
- Engagement label prediction (Low, Medium, High)
-
File Used:
spotify_history.csvwhich is in kaggle -
Contains:
track_name,artist_name,album_namems_played,ts(timestamp),reason_start,reason_end,skipped
- Python π¦
- pandas, numpy
- matplotlib, seaborn
- PyTorch, HuggingFace Transformers π€
- scikit-learn
-
Clone the repository:
git clone https://github.com/Raghuraam21/SongRecommandation.git
-
Preprocessing:
- Extracts features like hour, minute, and total play time
- Generates a text field from track, artist, album
- Labels engagement levels (Low < 10s, Medium, High > 60s)
-
BERT Embedding:
- Uses
bert-base-uncasedto generate vector embeddings from text - Compares track embeddings using cosine similarity
- Uses
-
Recommendation:
- Given a seed song, finds top-k most similar tracks
Based on your listening to: 'Born To Die' by Lana Del Rey
Recommended tracks:
1. Summertime Sadness by Lana Del Rey (similarity: 0.943)
2. Young and Beautiful by Lana Del Rey (similarity: 0.938)
3. Video Games by Lana Del Rey (similarity: 0.927)
Made by Raghuraam