
Paste any sentence, get the emotion behind it with a confidence score. A Flask + scikit-learn final year project with a cross-domain Transfer Lab your examiner has definitely never seen before.
Python | Flask | scikit-learn | NLTK | Chart.js | Bootstrap 5
You type a sentence into a box. MoodLens reads it and tells you what the person writing it was probably feeling — happy, angry, scared, in love, bored, whatever — along with a confidence number for each guess. Under the hood it's a TF-IDF vectorizer feeding a logistic regression classifier trained on labelled emotion text, so nothing here is magic. It's honest machine learning that you can actually explain when your guide asks how it works.
The model handles ten-plus emotion classes: happiness, sadness, anger, fear, love, surprise, enthusiasm, fun, hate, and neutral. Results come back on screen as a Chart.js breakdown instead of a boring number dump, and every prediction you make during a session gets stored in a history panel you can clear with one click.
But the part that actually makes this listing different is the Transfer Lab. More on that below.
Here's the thing about emotion models: one trained on tweets falls apart on forum posts. Different vocabulary, different length, different way of expressing anger. The Transfer Lab is a separate Flask blueprint that trains a model per text domain — social media, forums, narrative writing — and then tests each one on every other domain.
What you get out of it:
This is the section that turns a normal emotion detector into something with an actual research angle. Viva panels love questions they can dig into, and "why did your forum model score lower on social text" is a question you'll have a real answer for.
/api/predict over fetchchart-config.js/api/history, with a clear-history endpoint so demo runs stay clean/transfer/api/matrix that serves cached results from artifacts/ instead of retraining on every page load/transfer/api/compare for the side-by-side viewpython -m transfer.engine --train social --test forum — which is great for screenshots in your project reportstyle.css. Soft, extruded, genuinely nice to look at/api/contact, because examiners always click itNothing is hidden. app.py holds the Flask routes, prediction.py holds the inference pipeline, and the trained artifacts live in models/ as four pickle files — tfidf_vectorizer.pkl, label_encoder.pkl, logistic_regression_model.pkl, and metadata.pkl. The transfer module sits in its own transfer/ package with routes.py and engine.py split cleanly. Six Jinja templates, three JS files, two CSS files. That's the whole thing.
Customer support teams run this kind of classifier over incoming tickets to push angry ones to the top of the queue. Product teams point it at app store reviews to see whether a release made people happy or furious. Mental wellness apps use a softer version of it to flag journal entries that sound low over several days.
The Transfer Lab has a use of its own — any company moving an NLP model from one data source to another needs to know how much accuracy they'll lose. That's a real, boring, expensive problem, and this project demonstrates the measurement of it.
And for a college demo? A live emotion classifier is one of the few AI final year projects where the examiner can test it themselves in five seconds. That matters more than you think.
The genuinely hard bit is the dataset. You need an emotion-labelled CSV with text and emotion columns, and you need to train the model yourself by running the included notebook to produce the pickle files. Preprocessing is fussy — NLTK punkt, stopwords, wordnet, omw-1.4 all have to be downloaded before anything works, and if you skip one you'll get a confusing error that looks like a code bug but isn't.
The easy part is everything after that. Once models/ has its four files, running the app is one command and the whole thing loads at localhost:5000. No Docker, no cloud account, no database to configure. Flask, a virtualenv, and you're live.
If you're a student who needs a working project for your college submission, final-year project, semester project, internship, or academic demonstration, this is for you. Whether you're studying BCA, B.Tech, MCA, M.Tech, Computer Science, IT, AI, Data Science, or another related field, you can choose a project that fits your requirements. If you need the source code, project report, documentation, or help setting up and running the project, CodeAj gives you the resources and support to get started faster.
Especially good if your syllabus expects an NLP or machine learning component and you want something with a bit of research depth instead of another CRUD app. If you're still comparing options, browse the wider set of AI final year projects before you decide.
You get the complete source code, the project report and documentation, and setup support if the installation fights you. We've watched enough students lose a week to a broken pip install to know that shipping code without help isn't actually helping. Every file that runs on our machine is in the zip you download — no stripped-down demo version, no "premium" upsell for the model files. If you like this stack, the rest of our Flask projects with source code follow the same structure, and if you want something closer to opinion mining on reviews, look at the sentiment analysis project instead. Different problem, similar comfort level.
Add any of these professional upgrades to save time and impress your evaluators.
Personal session with an expert developer
We'll install and configure the project on your PC via remote session (Google Meet, Zoom, or AnyDesk).
1-hour live session to explain logic, flow, database design, and key features.
Want to know exactly how the setup works? Review our detailed step-by-step process before scheduling your session.
Fully customized to match your college format, guidelines, and submission standards.
Need feature changes, UI updates, or new features added?
Charges vary based on complexity.
We'll review your request and provide a clear quote before starting work.
Reviews