Un’App Desktop in un Giorno

Dai Proverbi all’Analisi Dati: Un Viaggio in Python tra Desktop, Web e Machine Learning

🎯 L’Inizio: 

Tutto è iniziato con un’idea semplice: creare un’applicazione per raccogliere e consultare proverbi italiani e frasi latine. Quello che non sapevo è che questo progetto mi avrebbe portato a esplorare Python a 360 gradi, dal desktop al web, fino all’analisi dati e al machine learning.

L’App Desktop

# Un assaggio dell'interfaccia Tkinter
class AppProverbi:
    def __init__(self, root):
        self.root = root
        self.setup_ui()
        self.carica_database()

In solo un giorno, l’applicazione aveva:

  • ✅ Interfaccia grafica con Tkinter
  • ✅ Database SQLite con due tabelle (italiano/latino)
  • ✅ Ricerca per tema
  • ✅ Aggiunta di nuovi proverbi
  • ✅ Menu e barra di stato professionali
  • ✅ Eseguibile Windows pronto

Il codice, inizialmente un unico file di 650 righe, è stato presto organizzato in moduli separati seguendo le best practice:

ProverbiItaliani/
├── main.py
├── gui/
│   ├── base_window.py
│   ├── app_proverbi.py
│   └── tab_*.py
└── db/
    ├── proverbi_db.py
    └── latino_db.py
    |__ greco_db.py

Link al repository GitHub

screen02 1

📊 L’Evoluzione: Analisi Dati con Jupyter

Una volta che l’app ha iniziato a raccogliere dati, è nata spontanea la domanda: cosa possiamo imparare da questi proverbi?

Il Passaggio a Jupyter Notebook

# Carichiamo i dati dal database
import pandas as pd
import sqlite3

conn = sqlite3.connect('archivio.db')
df_proverbi = pd.read_sql_query("SELECT * FROM proverbi", conn)
print(f"📖 Caricati {len(df_proverbi)} proverbi")

Cosa abbiamo scoperto?

Statistiche di base:

  • 65 proverbi italiani
  • 11 temi diversi
  • 9 autori (tra noti e anonimi)

I temi più frequenti:

• amore: 15 proverbi
• lavoro: 12 proverbi  
• vita: 8 proverbi
• tempo: 7 proverbi
• amicizia: 6 proverbi

Visualizzazioni

import matplotlib.pyplot as plt
import seaborn as sns

temi_counts = df_proverbi['tema'].value_counts().head(10)
sns.barplot(x=temi_counts.values, y=temi_counts.index)
plt.title('Temi più frequenti nei proverbi')

https://github.com/Seconet/Proverbi_Italiani/blob/main/assets/screen02.png

Analisi della lunghezza:

  • Proverbio medio: 65 caratteri
  • Proverbio più lungo: 158 caratteri
  • Proverbio più corto: 18 caratteri

Word Cloud delle parole più frequenti

from wordcloud import WordCloud

testo_completo = ' '.join(df_proverbi['proverbio'].tolist())
wordcloud = WordCloud().generate(testo_completo)
grafico 2

Machine Learning: Classificazione Automatica

La parte più affascinante: insegnare a un algoritmo a riconoscere il tema di un proverbio basandosi sul testo.

from sklearn.ensemble import RandomForestClassifier
from sklearn.feature_extraction.text import TfidfVectorizer

# Convertiamo il testo in numeri
vectorizer = TfidfVectorizer(max_features=100)
X = vectorizer.fit_transform(df_proverbi['proverbio'])

# Addestriamo il modello
clf = RandomForestClassifier()
clf.fit(X, df_proverbi['tema'])

# Proviamo con un nuovo proverbio
nuovo = "Chi trova un amico trova un tesoro"
print(f"Tema predetto: {clf.predict(vectorizer.transform([nuovo]))[0]}")
# Output: 'amicizia' ✓

Risultato: Il modello raggiunge l’80% di accuratezza nel classificare i proverbi!

📈 Cosa ho Imparato

1. Python è Versatile

Dallo stesso codice base, possiamo creare:

  • App desktop (Tkinter)
  • Report interattivi (Jupyter)
  • Modelli ML (scikit-learn)
  • (Prossimamente) API REST (FastAPI)
  • (Prossimamente) App mobile (Flet/Kivy)

2. I Dati Sono un Tesoro

L’app dei proverbi, nata come semplice raccoglitore, si è rivelata una miniera di informazioni. I 65 proverbi hanno generato:

  • Analisi statistiche
  • Visualizzazioni
  • Un modello ML funzionante
  • Spunti di riflessione culturale

3. L’Open Source Funziona

Pubblicare su GitHub ha permesso:

  • Tracciamento delle versioni
  • Condivisione immediata
  • Feedback dalla community
  • Portfolio professionale

🚀 Prossimi Passi

  1. API REST con FastAPI per servire i dati
  2. App mobile con Flet (o React Native)
  3. Dashboard interattiva con Plotly Dash
  4. Analisi più profonda del latino (declinazioni, autori, periodi storici)
  5. Collaborazione – Se qualcuno vuole contribuire, il repository è aperto!

📝 Codice e Risorse

Tutto il codice è disponibile su GitHub:
🔗 https://github.com/Seconet/Proverbi_Italiani

💭 Riflessioni Finali

Questo progetto mi ha insegnato che non serve un’idea rivoluzionaria per imparare cose nuove. A volte, basta un semplice raccoglitore di proverbi per esplorare:

  • Interfacce grafiche
  • Database
  • Analisi dati
  • Machine Learning
  • Condivisione open source

Il tutto in meno di due giorni

“Chi ben comincia è a metà dell’opera” (proverbio italiano)
“Dimidium facti, qui coepit, habet” (Orazio)


🙏 Ringraziamenti

  • Alla comunità Python, per le librerie straordinarie
  • A GitHub, per l’hosting gratuito
  • A NBViewer, per la visualizzazione dei notebook
  • A tutti coloro che vorranno contribuire o semplicemente usare l’app

Questo post è pubblicato sotto licenza MIT. Sentiti libero di condividere, modificare e utilizzare il codice per i tuoi progetti.

📖 Letto da: 29

Lascia una risposta

Contatti Free Service Chi sono Highlight Portfolio Blog & News