Questo progetto è un clone di Akinator basato su probabilità bayesiane.
Il sistema prova a indovinare il personaggio a cui stai pensando facendoti una serie di domande.
Non utilizza nessuna Intelligenza Artificiale, non gli serve... è già bravo così! 💅🏼
Provalo!
- Python 3.8 o superiore
- pip installato
- (consigliato) ambiente virtuale
python -m venv .venv
.venv\Scripts\activatepython src\main\script.pypython3 -m venv .venv
source .venv/bin/activatepython3 src/main/script.pypython3 -m venv .venv
source .venv/bin/activatepython src/main/script.pyIl gioco cerca di indovinare il personaggio a cui stai pensando facendo domande a cui puoi rispondere.
Il sistema aggiorna continuamente le probabilità dei personaggi possibili fino a trovare quello più probabile.
Durante il gioco ti verranno poste domande.
Devi rispondere usando UNA di queste opzioni:
s→ sìps→ più sì che nonon so→ non lo so / incertopn→ più no che sìn→ no
Esempio:
Il personaggio è reale?
(s/ps/pn/n/non so): s
Il gioco usa un modello probabilistico (Bayes semplificato):
- Ogni personaggio ha una probabilità iniziale
- Ogni risposta aggiorna queste probabilità
- Il sistema sceglie le domande più informative (entropia minima)
- Quando la confidenza è alta, fa una “guess”
Il file data.json è il database del gioco.
Contiene tre sezioni principali:
Lista delle domande che il sistema può fare:
"questions": [
"È famoso a livello mondiale?",
"È un supereroe?",
"È un villain?"
]Contiene i personaggi conosciuti e le loro risposte storiche.
Struttura:
"characters": {
"Mario": [
{"yes": 10, "no": 2, "unknown": 1},
{"yes": 3, "no": 8, "unknown": 2}
]
}Ogni posizione della lista corrisponde a una domanda.
Memorizza statistiche di apprendimento:
"stats": {
"Mario": {
"times_seen": 5,
"times_correct": 4
}
}Serve per migliorare le probabilità iniziali.
Se il gioco non indovina il personaggio:
- ti chiederà il nome corretto
- aggiornerà il dataset
- migliorerà le probabilità future
In questo modo il sistema “impara” giocando.
Il gioco NON parte se:
questionsè vuoto- non esistono personaggi nel database
Akinator/
│
├── resources/
│ └── data.json # database del gioco
│
└── src/main/
└── script.py # entry point
- Più giochi, più il sistema diventa preciso
- Più personaggi aggiungi, migliore diventa
- Le domande sono fondamentali: devono essere generiche e discriminanti
Progetto creato da Elio Magliari