eudaimonia-api icon indicating copy to clipboard operation
eudaimonia-api copied to clipboard

An API key authenticated suite of endpoints to perform emotion detection and mood analysis on a person and according to their preferences, generate recommendations of movies, books, music, etc.

The Eudaimonia API

Table of Contents

  • Description
  • Frameworks and Tools
  • Prerequisites
  • Installation
  • Roadmap
  • Credits

Description

The Eudaimonia API is a semi-browsable suite of managed endpoints that helps the main Eudiamonia web application to work smoother by offloading large application code describing the NLP models for the mood analysis as well as the ML models for film recommendations.

  • API endpoints accessible with an API KEY that can be obtained upon submitting a request.
  • TMDB 5000 Movie Dataset from Kaggle used for the film recommendations. Logistic Regression algorithm for predictions. Additional inputs of mood for consideration is allowed.
  • Lexical-based NLP algorithms used for mood analysis. Textual input will get analysed and emotions such as Anger, Sadness, Happiness, Fear and Surprise would be evaluated.
The API was made with the intents of providing a solution for extensive sentiment analysis and recommending certain interests like books, movies, music, etc. that developers may use for their applications without having to reinvent the wheel. The future scope of the project would be to extend its use-cases, provide schema and documentation and refining the models to make their performance optimal and better than the ones that are currently in the market that offer similar functionality but may not be clubbing all recommendation systems for use.

(Top)

Frameworks and Tools

The major frameworks, tools, services and APIs used for the making of this project is hereby listed:

  • Django REST: The API framework used to build the film and music recommendation system.
  • Postman: The API designing, testing and refinement tool used to make the API properly functional.
  • Scikit-Learn: Predictive model for movie recommendation.
  • Jira: The collaboration and software development tool used to simplify workflow.
  • Sentry: The exception management service used for fatal error logging.
  • Snyk: The security management service used for source code security vulnerability checks.
  • Spotify API: API for music recommendation.
  • VSC: The integrated IDE for development.

(Top)

Prerequisites

  1. Install Python for your respective operating system at https://www.python.org/downloads/.

  2. Install version control system of Git for your respective operating system at https://git-scm.com/downloads.

(Top)

Installation

  1. Clone the repository:

    git clone https://github.com/Diptonil/eudaimonia.git
    
  2. Create a virtual environment for installation of required modules:

    python -m venv venv
    venv\scripts\activate
    pip install -r requirements.txt
    
  3. Run the website on the development server:

    python manage.py runserver
    

Now the API is up and running (at port 8000 in case nothing else is mentioned). To access it, go to http://localhost:8000/. Since the project is under developement, there is no frontend component to it as of now. It would be later added as the project edges towards production.

IMPORTANT: Some files have not yet been committed and code is being refactored. The project is not functional as of now.

The API shall soon be deployed and put to public use from which the endpoints would be directly accessible.

(Top)

Roadmap

There are subsequent upgrades to be made to the project to reach the final stage. Here are a list of all immediate objectives:

  • [x] Configure initial particulars and services.
  • [x] Develop authentication and authorization scheme.
  • [ ] Service to request API key.
  • [x] Develop mood analysis systems.
  • [x] Develop film recommendation systems.
  • [x] Develop music recommendation systems.
  • [ ] Develop book recommendation systems.
  • [ ] Configure the frontend of the system.
  • [ ] Extend the prior features by refinement
  • [ ] Deploy using CI/CD practices.

(Top)

Achievements

  • Third Place in the IEEE ComSoc Bangalore chapter hackathon 'CODIFY' arranged by BNMIT.

(Top)

Credits

The collaborators involved in this project are:

  • Diptonil Roy

The academic and theoretical resources and articles utilized for this project are:

  • The Genre Theory in Film: A simplified and distilled version of the paper has been utilised, keeping in mind the nuances that any user may be capable of comprehending.
  • Ekman's Basic Emotion Model: The emotions considered for any particular user is of happiness, sadness, anger, fear and surprise.

(Top)