Inspiration

The Inspiration for this project came from a research paper entitled "Extracting Depression Symptoms from Social Networks and Web Blogs via Text Mining," which talked about the implications and prospects of Machine Learning in an area not as widely discussed: mental health, and depression. The idea was to help people struggling mentally by building a friendly web application. The application would, at the user's comfort, analyze their emotions, and reach out for help to their closed ones, or provide short-term distractions through personalized content-based filtering Machine Learning algorithms. The web application would analyze the average emotional state of a user based on their input prompt, or their facial expressions, and provide distractions through music, movie, or gaming recommendations, while reaching out to their loved ones, or a professional nearby in serious cases. The web app in general is meant for people to be open and express themselves, so that content to lift their moods and spirits up can be provided.

What it does

The web application, as of right now, provides users the options to express their sentiments through text, or video. It returns the analyzed emotional state to the user, so they understand what they are feeling. Additionally, it also provides a window that makes personalized movie recommendations for people based on their movie interests in a given set as a short-term entertainment and relief resort.

How I built it

The web application stores the input text on the front-end developed using Node.js, HTML, and CSS, through PostgreSQL, analyzes the text using the API 'indicoio,' which is based on Natural Language Processing, and the video through the API 'paralleldots,' that is based on training and identifying faces in different emotional states through CNN. It makes the use of database to store and retrieve the values, and exchanges values between front end and backend developed primarily in Python. The movie recommendation provides content based filtering through the use of Sklearn metrics TfidfVectorizer, and linear_kernel, and recommends the 10 most closely associated movies from Imdb top list, based on a certain threshold of ratings and stars.

Challenges I ran into

Unable to access OpenCV through Node.js. Trying to debug the problem cost us a lot of time, and stymied our progress, so we went around it a little bit. Cleaning the Imdb movie dataset, and parsing the values took a lot of time since a lot of none NULL and NaN values were garbage, so it was difficult to remove them while training. Additionally, training on the dataset on real time on a computer with no GPU cost a lot of time, so we pre-trained data based on some popular movies, and only provided a few options for now.

Accomplishments that I'm proud of

Getting a fully functioning web application up and running, that is the most fundamental part of the bigger picture for BeCalm.

What I learned

Learned to connect python with Node.js. Developed a sense of understanding and appreciation for building a full stack project, considering the numerous difficulties we can run into even in the simplest of parts. Learned to efficiently use APIs, and the simplicity they provide in solving the most complex tasks.

What's next for Calm

Score movie sentiment values in scale with user's emotional sentiment score, and make better personalized recommendations. Add movie, songs, and gaming recommendations. Add the "HELP" feature, which will provide help to people in dangerous emotional states. Scaling the app and extending it for Android and Ios devices.

Built With

Share this project:

Updates