File size: 3,959 Bytes
044a37d
 
 
 
 
 
1d06577
ddd4781
1d06577
044a37d
70f9b6b
 
50006df
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c1d62c4
b89ec36
d03c48d
50006df
 
 
 
 
 
 
 
 
 
d03c48d
c1d62c4
 
 
 
 
 
 
50006df
e0cf976
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50006df
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
---
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.

---



---