# michelecolella/classificatore-recensioni-hotel-ml architecture

> Architecture diagram of the GitHub repository michelecolella/classificatore-recensioni-hotel-ml, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/michelecolella/classificatore-recensioni-hotel-ml
- Repository: https://github.com/michelecolella/classificatore-recensioni-hotel-ml

## Overview

È una dashboard Streamlit per classificare recensioni alberghiere per reparto e sentiment, con analisi singola, classificazione CSV in batch, metriche e storico consultabile/esportabile. Il flusso principale va dalla selezione della pagina all’elaborazione del testo e alla restituzione delle classi con confidenza; lo storico persiste tramite SQLite. Il training produce i modelli e i report consumati dall’app. Le relazioni delle pagine non campionate sono limitate a quanto documentano README e al loro collegamento all’entry point; non inferisco dettagli interni di `analyze.py` né del training omesso.

Main entry points: [`src/services/review_service.py`](https://github.com/michelecolella/classificatore-recensioni-hotel-ml/blob/main/src/services/review_service.py) (Servizio recensioni), [`src/ml/train.py`](https://github.com/michelecolella/classificatore-recensioni-hotel-ml/blob/main/src/ml/train.py) (Training e valutazione), [`app.py`](https://github.com/michelecolella/classificatore-recensioni-hotel-ml/blob/main/app.py) (App Streamlit), [`src/ui/home.py`](https://github.com/michelecolella/classificatore-recensioni-hotel-ml/blob/main/src/ui/home.py) (Home e metriche)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Dashboard"]
  node_entry["App Streamlit<br/>[app.py]"]
  node_home["Home e metriche<br/>[home.py]"]
  node_analyze["Analisi singola<br/>[analyze.py]"]
  node_batch["Analisi batch<br/>[batch.py]"]
  node_history_ui["Pagina storico<br/>[history.py]"]
end

subgraph group_inference["Classificazione"]
  node_ingestion["Import CSV<br/>[ingestion.py]"]
  node_review["Servizio recensioni<br/>[review_service.py]"]
  node_preprocessing["Preprocessing testo<br/>[preprocessing.py]"]
  node_stopwords["Stopword italiane<br/>[stopwords.py]"]
  node_models["Modelli classificatori"]
end

subgraph group_persistence["Storico"]
  node_storage_service["Servizio storage<br/>[storage.py]"]
  node_database[("Log predizioni<br/>[predictions.db]")]
end

subgraph group_training["Training e risultati"]
  node_train["Training e valutazione<br/>[train.py]"]
  node_dataset["Dataset recensioni<br/>[dataset.csv]"]
  node_metrics["Metriche training<br/>[metrics.json]"]
  node_stress["Metriche stress test"]
end

node_user(("Operatore"))

node_user -->|"avvia"| node_entry
node_entry -->|"seleziona pagina"| node_home
node_entry -->|"seleziona pagina"| node_analyze
node_entry -->|"seleziona pagina"| node_batch
node_entry -->|"seleziona pagina"| node_history_ui
node_home -->|"richiede metriche"| node_review
node_review -->|"legge metriche"| node_metrics
node_home -->|"richiede stress test"| node_review
node_review -->|"legge risultati"| node_stress
node_batch -->|"analizza CSV"| node_ingestion
node_batch -->|"richiede predizioni batch"| node_review
node_analyze -->|"richiede predizione"| node_review
node_review -->|"carica e predice"| node_models
node_train -->|"legge dati"| node_dataset
node_train -->|"usa preprocessing"| node_preprocessing
node_train -->|"usa stopword"| node_stopwords
node_train -->|"salva modelli"| node_models
node_train -->|"salva metriche"| node_metrics
node_review -->|"gestisce storico"| node_storage_service
node_history_ui -->|"richiede storico"| node_review
node_storage_service -->|"legge e scrive"| node_database

click node_entry "https://github.com/michelecolella/classificatore-recensioni-hotel-ml/blob/main/app.py"
click node_home "https://github.com/michelecolella/classificatore-recensioni-hotel-ml/blob/main/src/ui/home.py"
click node_analyze "https://github.com/michelecolella/classificatore-recensioni-hotel-ml/blob/main/src/ui/analyze.py"
click node_batch "https://github.com/michelecolella/classificatore-recensioni-hotel-ml/blob/main/src/ui/batch.py"
click node_history_ui "https://github.com/michelecolella/classificatore-recensioni-hotel-ml/blob/main/src/ui/history.py"
click node_ingestion "https://github.com/michelecolella/classificatore-recensioni-hotel-ml/blob/main/src/services/ingestion.py"
click node_review "https://github.com/michelecolella/classificatore-recensioni-hotel-ml/blob/main/src/services/review_service.py"
click node_preprocessing "https://github.com/michelecolella/classificatore-recensioni-hotel-ml/blob/main/src/ml/preprocessing.py"
click node_stopwords "https://github.com/michelecolella/classificatore-recensioni-hotel-ml/blob/main/src/ml/stopwords.py"
click node_models "https://github.com/michelecolella/classificatore-recensioni-hotel-ml/tree/main/models"
click node_storage_service "https://github.com/michelecolella/classificatore-recensioni-hotel-ml/blob/main/src/services/storage.py"
click node_database "https://github.com/michelecolella/classificatore-recensioni-hotel-ml/blob/main/data/predictions.db"
click node_train "https://github.com/michelecolella/classificatore-recensioni-hotel-ml/blob/main/src/ml/train.py"
click node_dataset "https://github.com/michelecolella/classificatore-recensioni-hotel-ml/blob/main/data/dataset.csv"
click node_metrics "https://github.com/michelecolella/classificatore-recensioni-hotel-ml/blob/main/docs/metrics.json"
click node_stress "https://github.com/michelecolella/classificatore-recensioni-hotel-ml/blob/main/docs/stress_test_metrics.json"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_entry,node_home,node_analyze,node_batch,node_history_ui toneBlue
class node_ingestion,node_review,node_preprocessing,node_stopwords,node_models toneAmber
class node_storage_service,node_database toneMint
class node_train,node_dataset,node_metrics,node_stress toneRose
class node_user toneIndigo
```

## Components

### Dashboard

- [App Streamlit](https://github.com/michelecolella/classificatore-recensioni-hotel-ml/blob/main/app.py): `app.py`
- [Home e metriche](https://github.com/michelecolella/classificatore-recensioni-hotel-ml/blob/main/src/ui/home.py): `src/ui/home.py`
- [Analisi singola](https://github.com/michelecolella/classificatore-recensioni-hotel-ml/blob/main/src/ui/analyze.py): `src/ui/analyze.py`
- [Analisi batch](https://github.com/michelecolella/classificatore-recensioni-hotel-ml/blob/main/src/ui/batch.py): `src/ui/batch.py`
- [Pagina storico](https://github.com/michelecolella/classificatore-recensioni-hotel-ml/blob/main/src/ui/history.py): `src/ui/history.py`

### Classificazione

- [Import CSV](https://github.com/michelecolella/classificatore-recensioni-hotel-ml/blob/main/src/services/ingestion.py): `src/services/ingestion.py`
- [Servizio recensioni](https://github.com/michelecolella/classificatore-recensioni-hotel-ml/blob/main/src/services/review_service.py): `src/services/review_service.py`
- [Preprocessing testo](https://github.com/michelecolella/classificatore-recensioni-hotel-ml/blob/main/src/ml/preprocessing.py): `src/ml/preprocessing.py`
- [Stopword italiane](https://github.com/michelecolella/classificatore-recensioni-hotel-ml/blob/main/src/ml/stopwords.py): `src/ml/stopwords.py`
- [Modelli classificatori](https://github.com/michelecolella/classificatore-recensioni-hotel-ml/tree/main/models): `models`

### Storico

- [Servizio storage](https://github.com/michelecolella/classificatore-recensioni-hotel-ml/blob/main/src/services/storage.py): `src/services/storage.py`
- [Log predizioni](https://github.com/michelecolella/classificatore-recensioni-hotel-ml/blob/main/data/predictions.db): `data/predictions.db`

### Training e risultati

- [Training e valutazione](https://github.com/michelecolella/classificatore-recensioni-hotel-ml/blob/main/src/ml/train.py): `src/ml/train.py`
- [Dataset recensioni](https://github.com/michelecolella/classificatore-recensioni-hotel-ml/blob/main/data/dataset.csv): `data/dataset.csv`
- [Metriche training](https://github.com/michelecolella/classificatore-recensioni-hotel-ml/blob/main/docs/metrics.json): `docs/metrics.json`
- [Metriche stress test](https://github.com/michelecolella/classificatore-recensioni-hotel-ml/blob/main/docs/stress_test_metrics.json): `docs/stress_test_metrics.json`

### Other components

- **Operatore**

## Connections

- Operatore → App Streamlit: avvia
- App Streamlit → Home e metriche: seleziona pagina
- App Streamlit → Analisi singola: seleziona pagina
- App Streamlit → Analisi batch: seleziona pagina
- App Streamlit → Pagina storico: seleziona pagina
- Home e metriche → Servizio recensioni: richiede metriche
- Servizio recensioni → Metriche training: legge metriche
- Home e metriche → Servizio recensioni: richiede stress test
- Servizio recensioni → Metriche stress test: legge risultati
- Analisi batch → Import CSV: analizza CSV
- Analisi batch → Servizio recensioni: richiede predizioni batch
- Analisi singola → Servizio recensioni: richiede predizione
- Servizio recensioni → Modelli classificatori: carica e predice
- Training e valutazione → Dataset recensioni: legge dati
- Training e valutazione → Preprocessing testo: usa preprocessing
- Training e valutazione → Stopword italiane: usa stopword
- Training e valutazione → Modelli classificatori: salva modelli
- Training e valutazione → Metriche training: salva metriche
- Servizio recensioni → Servizio storage: gestisce storico
- Pagina storico → Servizio recensioni: richiede storico
- Servizio storage → Log predizioni: legge e scrive
