Bibliofeels - made for the bibliophiles by the bibliophiles!
We believe books are for everyone and for every emotion! Looking for something deep and reflective? We have a book for you! Want somehting that can help you escape reality? We have a book for you! Or maybe something spooky? Guess what, We have a book for you!
Necessity is the mother of invention
Ever felt that none of the books in the library seem to be matching the type of book you want to read in that mood? Fear no more! Bibliofeels brings you a two-tap solution to find the perfect book for you.
BiblioFeels aims to recommend the best book to the best person(YES YOU!), along with relevant details and all you need to do is click on a button and let us know how you want to feel. It is that simple!
We wanted the user's experience with the app to be as smooth as possible, so we started with an aesthetic, minimalistic design for the front end.
We used the CMU Book summary dataset(consisting of more than 16000 books), applied emotion analysis to the summary of all of these books after performing relevant data cleaning operations and added the emotions column to the dataset. Cover images of books were scraped and were also saved in the dataset as base64 strings.
After populating the database we built a React app to take input from the user of pass it on the backend app built using flask. The flask app queries the database that we produced above and returns the best match to the user along with relevant details to the user such as book title, author, genre, summary, and a link to the wiki among other things.
We worked on the following challenges:
- The biggest challenge for this project was planning around the team's time zones. But we realized that when we decided on times well in advance, that problem seemed to subside.
- planning the workflow
- learning new technologies
- On the NLP end, a major challenge was the unavailability of fine-grained emotion analysis models at the document/paragraph levels.
- the whole team pulled their weight and pulled off a project we are all proud of
- learning the new technologies needed for the project.
- compiling a database of about 16000 books to find the perfect book to match one's mood
- making new friends across the world
- working with an international team, with different time zones
- new technologies for the project like figma, CSS, flask, etc. -working with a large database
Features we think could make bibliofeels even better:
- adding a bot to analyze the user's mood
- adding the feature to look for more books to match a particular mood, e.g. a list of 10 books
- adding the feature of 'books like this' cluster that takes a book title as input
- deploying the app
- take multiple emotions from the user to match in the database
- Clone this repo
git clone https://github.com/ShezaMunir/bibliofeels.git
- Navigate to the project's root and start a virtual environment
cd bibliofeels
- Create a virtual environment with python3
python3 -m virtualenv venv
-
Activate the virtual environment with the following command:
-
Linux
source venv/bin/activate
-
Windows
venv/Scripts/activate
-
-
Install all dependencies
pip install -r requirements.txt
- Generate the database
python3 data/generate_db.py
- Windows
set FLASK_APP=run.py:app
flask run
- Linux
export FLASK_APP=run.py:app
flask run
Example: http://localhost:5000/recommend?emotions=joy,analytical