preview.mp4
Anonalyze is a research-driven AI, ML, and NLP-powered web platform developed as part of an undergraduate thesis project. The platform focuses on analyzing anonymous user-generated content through Machine Learning (ML) and Natural Language Processing (NLP) techniques.
- Sentiment Analysis (positive, negative, neutral)
- Emotion Classification (joy, sadness, anger, fear, love, surprise)
- Keyword & Keyphrase Extraction (RAKE algorithm)
- Discussion Summarization (LLM-based summaries)
This project utilizes a sentiment and emotion classification model using Machine Learning (ML) and Natural Language Processing (NLP). The system analyzes text and predicts:
- Sentiment: positive, negative, or neutral
- Emotion: sadness, joy, love, anger, fear, or surprise
The core model utilizes a Multinomial Naive Bayes classifier, trained on a large dataset of Twitter messages.
Model Training Process:
- Frontend: React + Typescript + Tanstack
- Backend API: Laravel (PHP) + Flask (Python)
- Machine Learning: Python (scikit-learn, NLTK, Pandas, NumPy)
- Containerization: Docker & Docker Compose
- Database: MySQL
Follow the steps below to run the project in development mode:
git clone https://github.com/hyoaru/anonalyze.git
cd anonalyzecat .env.example > .env
cat ./client/web/.env.example > .env
cat ./api/core/.env.example > .env # Make sure to populate GEMINI_API key
cat ./api/ml/.env.example > .envsudo docker compose -f docker-compose.development.yaml upEnter the container:
docker exec -it anonalyze_api_core bashRun the following commands inside:
php artisan key:generate
php artisan migrate --database=mysql
php artisan db:seed| Service | URL / Hostname | Description |
|---|---|---|
| Web Client (React) | http://localhost:8000 | Main web interface |
| Core API (Laravel) | http://localhost:8002 | Backend API for application logic |
| ML API (Flask) | http://localhost:8003 | Machine learning microservice (sentiment, emotion, keywords, summaries) |
| Database Admin (phpMyAdmin) | http://localhost:7999 | MySQL database administration |
| SMTP Mailhog | http://localhost:7998 | Local mail testing (emails capture) |
.
βββ api
β βββ core-api # Laravel backend for core application logic and REST API
β β βββ app/ # Controllers, Models, Services, Repositories, Policies
β β βββ database/ # Migrations, Seeders, Factories
β β βββ routes/ # API and web routes
β β βββ config/ # Laravel configurations
β β βββ tests/ # Unit and feature tests
β β βββ artisan # Laravel CLI
β β βββ public/ # Public assets and index.php
β β
β βββ ml-api # Python ML microservice
β βββ app/
β β βββ api/ # API namespaces (emotion, sentiment, concept, summary)
β β βββ controllers/ # REST controllers for ML endpoints
β β βββ configurations/ # Model and feature selector configs
β β βββ models/ # ML models (Naive Bayes, RAKE, TF-IDF, Chi-squared)
β β βββ utils/ # Preprocessing utilities (denoising, stopwords, lemmatization)
β β βββ data/pkl/ # Serialized models, vectorizers, and selectors
β βββ main_development.py
β βββ main_production.py
β βββ requirements.txt
β
βββ client
β βββ web # React frontend
β βββ public/ # Public assets
β βββ src/ # Components, pages, and logic
β βββ index.html
β βββ package.json
β βββ Dockerfile
β
βββ docker-compose.development.yaml
βββ docker-compose.production.yaml
βββ .env.example
βββ README.md
- Anonymous Posting β Encourages open communication without fear of exposure.
- ML-Driven Sentiment Analysis β Classifies posts as positive, neutral, or negative.
- Emotion Classification β Identifies six core emotions: joy, sadness, anger, fear, love, surprise.
- Keyword Extraction β Highlights important discussion terms using the RAKE algorithm.
- Thread Summarization β Uses LLMs to condense long threads into key takeaways.
- Dashboard & Visualization β Real-time insights and analytics.
This project was developed as an undergraduate thesis to demonstrate the application of NLP and ML in processing user-generated content. It aims to contribute to research in machine learning, sentiment analysis, emotion detection, and automated summarization, while also showcasing a practical implementation through a web-based system.