sentiment-fastapi / README.md
LorenzoBioinfo
UpdateReadMe
d03c48d
---
title: "SentimentAnalysis"
colorFrom: "red"
colorTo: "green"
sdk: "docker"
sdk_version: "{{1.0}}"
app_file: src/app.py
pinned: false
---
![CI](https://github.com/LorenzoBioinfo/MLOps_Project_SentimentAnalysis/actions/workflows/ci.yml/badge.svg)
# 🧠 Sentiment Analysis MLOps Pipeline
**MachineInnovators Inc.** — Scalable Machine Learning for Social Reputation Monitoring
## 📘 Descrizione
Progetto dedicato all’automazione dell’**analisi del sentiment** sui social media tramite **FastText** e pratiche **MLOps**.
L’obiettivo è permettere a MachineInnovators Inc. di monitorare la reputazione online, reagire ai cambiamenti nel sentiment degli utenti e mantenere il modello aggiornato nel tempo.
---
## 🚀 Obiettivi
- **Analisi automatica del sentiment** (positivo / neutro / negativo)
- **Monitoraggio continuo** delle performance e del sentiment nel tempo
- **Retraining automatico** del modello per adattarsi ai nuovi dati
---
## 🧩 Struttura del Progetto
### **Fase 1 — Modello**
- Modello: [`cardiffnlp/twitter-roberta-base-sentiment-latest`](https://huggingface.co/cardiffnlp/twitter-roberta-base-sentiment-latest)
- Dataset pubblici con testi etichettati per il sentiment
### **Fase 2 — Pipeline CI/CD**
- Automazione di training, test e deploy tramite **GitHub Actions** e **Docker**
### **Fase 3 — Deploy e Monitoraggio**
- Deploy su **Hugging Face**
- Monitoraggio continuo
---
## 🛠️ Stack Tecnologico
| Categoria | Tecnologie |
|------------|-------------|
| Linguaggio | Python |
| ML | FastText, Transformers, Scikit-learn |
| CI/CD | GitHub Actions, Docker |
| Deploy | Hugging Face Hub |
---
## 💡 Motivazione
L’analisi automatica del sentiment consente una gestione più efficiente e reattiva della reputazione aziendale.
Con questo progetto, MachineInnovators Inc. integra soluzioni MLOps per una pipeline scalabile, affidabile e costantemente aggiornata.
## ⚙️ Spiegazione del Progetto
Il progetto è organizzato in tre moduli principali:
### **1️⃣ Applicazione di Sentiment Analysis (FastAPI App)**
L’applicazione, sviluppata in **FastAPI**, offre tre endpoint di analisi:
- **/random_tweet** – analizza esempi tratti dal dataset *TweetEval*
- **/random_youtube** – valuta esempi provenienti dal dataset di *commenti YouTube*
- **/predict** – consente all’utente di inserire manualmente una frase per l’analisi del sentiment
Il modello utilizzato è **[`cardiffnlp/twitter-roberta-base-sentiment-latest`](https://huggingface.co/cardiffnlp/twitter-roberta-base-sentiment-latest)**, ottimizzato per la classificazione in tre classi di sentiment.
---
### **2️⃣ Pipeline di Addestramento e Monitoraggio**
L’intero processo di addestramento e valutazione è automatizzato.
- I dati (*TweetEval* e *YouTube Comments*) vengono preprocessati e salvati in formato `datasets.Dataset`.
- Il modello viene valutato con uno script di *monitoring* che calcola **Accuracy** e **F1-score** su entrambi i dataset.
- Se le metriche ottenute sul dataset di YouTube risultano **inferiori a una soglia predefinita** (es. `Accuracy < 0.75`), il sistema esegue automaticamente un **retraining incrementale**, combinando i dati di *TweetEval* con un campione di *YouTube Comments*.
---
### **3️⃣ Pipeline CI/CD e Deploy su Hugging Face**
La pipeline CI/CD, implementata con **GitHub Actions**, automatizza:
1. **Installazione e test del progetto**
- Esecuzione di unit test e integration test.
- Verifica delle metriche e della qualità del codice.
2. **Retraining automatico**
- Se le performance scendono sotto soglia, viene eseguito un retraining parziale.
3. **Deploy e sincronizzazione automatica**
- Il modello aggiornato viene pubblicato su **Hugging Face Hub**.
- L’app FastAPI viene automaticamente **distribuita come Space**, sempre sincronizzata con l’ultima versione del modello.
---
---