Rap Analysis
Project information
- Category: NLP, Network Graph, Visualizations, Database
- Languages/Libraries/Tools Used: Python, NLTK, SpaCy, networkx, PyVis, pandas, MongoDB, HTML
- GitHub URL: github.com/yannguerin/Rap-Lyrics-Analysis
Overview
This is a project to analyze rap lyrics mainly, from the content of the lyrics, the structure of the songs, the rhyme patterns employed, and much more. I hope to have a GUI application that can get (scrape) any artists' lyrics and then provide tools to analyze those lyrics using NLP tools and techniques. I would also like to add information pertaining to a given artists connections to other artists and even label affiliations, along with sale metrics to predict record sales based on data that is not usually taken into consideration. As this project grows it will begin to contain several smaller projects. This project was initially inspired by the work of Matt Daniels to analyze the number of unique words in various rappers lyrics, and the work of the rapper Aesop Rock who has the most unique words of any artists.
Current Progress
Currently it is comprised of a Rhyme Highlighter, a Rap Lyrics Scraper, and a Hip Hop Artist Feature Graph generator. Much more is coming in the future. The Rhyme Highlighter was made using the CMU Dictionary for determining the pronunciation of a word, and WordsAPI for splitting a word into its syll-a-bles. The Rap Lyric Scraper takes an artists name and scrapes AZ Lyrics to acquire a corpus of all of the given artists lyrics using requests and BeautifulSoup. The Hip Hop Artist Features Graph generator uses the Spotify API to search for all songs of a given artist and which artist(s) that were featured on those songs to generate a directional network graph using NetworkX and PyVis.
Future Development Goals
I will be developing lots of tools to use to analyze the corpus of rap lyrics, along with the rhyme patterns of those lyrics to generate some insights about the content, structure, and meaning of an artists lyrics. All these tools will be contained within a GUI application and/or a web based application for ease of use.