Progetto · Raccomandatore Fuzzy

Mini-Progetto: Sistema di Raccomandazione Fuzzy per le Pagine

← Torna all'indice generale

Usare la logica fuzzy per consigliare al lettore quali contenuti esplorare dopo.

1. Scenario

Immagina un visitatore che arriva su fuzzypython.org e legge alcune pagine introduttive. Vogliamo suggerirgli in modo "intelligente" quali contenuti approfondire dopo, combinando:

  • Frequenza d'uso di alcuni concetti (es. ML vs fuzzy),
  • Interesse dichiarato per certi temi (es. filosofia digitale),
  • Livello di esperienza generale (principiante/intermedio/avanzato).

Invece di regole rigide, useremo un piccolo sistema di raccomandazione fuzzy.

2. Variabili linguistiche

Ingresso: InteresseML

  • BASSO
  • MEDIO
  • ALTO

Ingresso: InteresseFuzzy

  • BASSO
  • MEDIO
  • ALTO

Ingresso: LivelloEsperienza

  • PRINCIPIANTE
  • INTERMEDIO
  • AVANZATO

Uscita: PrioritaPagina

  • BASSA
  • MEDIA
  • ALTA

Per ciascuna pagina candidata (es. Intro ML, Funzioni di appartenenza fuzzy, Filosofia digitale e IA, ecc.) possiamo definire una regola fuzzy che assegna una priorità in base alle variabili di ingresso.

3. Regole di raccomandazione

Esempi di regole per qualche pagina chiave del sito:

Pagina: Introduzione al Machine Learning

  • SE InteresseML è ALTO E LivelloEsperienza è PRINCIPIANTE ALLORA PrioritaPagina è ALTA.
  • SE InteresseML è MEDIO E LivelloEsperienza è INTERMEDIO ALLORA PrioritaPagina è MEDIA.

Pagina: Introduzione alla Logica Fuzzy

  • SE InteresseFuzzy è ALTO E LivelloEsperienza è PRINCIPIANTE ALLORA PrioritaPagina è ALTA.
  • SE InteresseFuzzy è MEDIO E LivelloEsperienza è INTERMEDIO ALLORA PrioritaPagina è MEDIA.

Pagina: Filosofia Digitale, IA e Software Libero

  • SE InteresseML è MEDIO E InteresseFuzzy è MEDIO E LivelloEsperienza è BASSO ALLORA PrioritaPagina è ALTA.

4. Output del sistema

Per ogni pagina candidata calcoliamo un grado fuzzy di priorità. Dopo defuzzificazione (o ordinamento basato sui gradi massimi), otteniamo una lista ordinata di suggerimenti, ad esempio:

  • 1️⃣ Introduzione alla Logica Fuzzy
  • 2️⃣ Matematica di base per ML e Fuzzy
  • 3️⃣ Filosofia Digitale, IA e Software Libero

Questa lista può essere mostrata in un box "Consigliati per te" a fine pagina.

5. Scheletro in Python

Un possibile schema (semplificato) per rappresentare pagine e regole:


pages = [
    "intro_ml",
    "intro_fuzzy",
    "matematica_base",
    "filosofia_digitale"
]

rules = [
    {
        "page": "intro_ml",
        "antecedent": [("interesse_ml", "alto"), ("livello", "principiante")],
        "operator": "AND",
        "priority": "alta",
    },
    {
        "page": "intro_fuzzy",
        "antecedent": [("interesse_fuzzy", "alto"), ("livello", "principiante")],
        "operator": "AND",
        "priority": "alta",
    },
]

# Un motore di inferenza calcolerà i gradi di verità di ciascuna regola
# e produrrà un punteggio di priorità per ogni pagina.
          

Da qui puoi costruire un piccolo motore di raccomandazione fuzzy che si integra con il tuo sito o con un prototipo in Jupyter/Streamlit.