Questo progetto implementa un sistema di raccomandazione per videogiochi basato sull'analisi del contenuto (Content-Based Filtering). Il sistema analizza il dataset ufficiale di Steam (Kaggle) per suggerire all'utente i 5 titoli più affini ai suoi gusti, calcolando la similarità semantica tra le descrizioni e i tag dei giochi.
Il sistema si articola in due componenti principali:
- Backend (Python/Jupyter): Gestisce l'elaborazione del dataset, la generazione degli embeddings tramite modelli di linguaggio avanzati e la logica di raccomandazione.
- Frontend (Gradle): Un'interfaccia utente che permette di selezionare i giochi preferiti e visualizzare i suggerimenti con il relativo grado di similarità.
Il sistema trasforma le informazioni testuali in vettori numerici (embeddings) per calcolare quanto due giochi siano "vicini" a livello di significato.
Utilizziamo il modello all-MiniLM-L6-v2 di SentenceTransformers (basato su PyTorch) per analizzare:
- Tags: Le categorie definite dalla community.
- Short Description: La descrizione sintetica del gioco.
Per ottenere raccomandazioni bilanciate, abbiamo applicato una formula di pesatura per combinare le diverse caratteristiche:
Per aggiungere un effetto di Serendipity (scoperta di titoli rilevanti e popolari), abbiamo integrato il numero di recensioni normalizzato:
graph TD
A[Dataset Steam - Kaggle] --> B[NLP: SentenceTransformer]
B --> C[Generazione Embeddings Tags + Desc]
C --> D[Integrazione Popolarità - Serendipity]
D --> E[Salvataggio Embeddings su Disco - Cache]
F[User: Selezione Giochi Preferiti] --> G[Creazione Profilo Utente - Media Vettoriale]
G --> H[Cosine Similarity vs Catalogo]
H --> I[Top 5 Raccomandazioni]