Open dennisangemi opened 1 month ago
pazzesco. Sto provando ad implementare lo score calculation (lascio un paio di righe di codice giusto per dare un'idea)
weigth_similarity = weights[weights['metric'] == 'similarity']['weight'].values[0]
weigth_deviation = weights[weights['metric'] == 'deviation']['weight'].values[0]
weigth_history = weights[weights['metric'] == 'history']['weight'].values[0]
weigth_selection = weights[weights['metric'] == 'selection']['weight'].values[0]
# crea in df una colonna score_similarity che sia la similarity moltiplicata per il peso/100
df['score_similarity'] = df['similarity'] * weigth_similarity / 100
# craea in df una colonna score_deviation che sia la deviation moltiplicata per il peso/max deviation
df['score_deviation'] = df['deviation'] * weigth_deviation / df['deviation'].max()
# crea in df una colonna score che sia la somma di score_similarity e score_deviation
df['score'] = df['score_similarity'] + df['score_deviation']
# sort df by score
df = df.sort_values(by='score', ascending=False)
print(" ⏯ I testi più simili sono:")
print(df.head())
# plot histogram of score with plt
plt.hist(df['score'], bins=20)
plt.show()
Applico questo algoritmo alla liturgia del 2024-06-30 con id liturgia C48-B e ottengo questi output sorprendenti
distribuzione dello score:
In sostanza c'è un solo canto consigliato! talità kum, il resto è inutile. Non so se essere contento o disperato. Penso contento
Ciao @mamminim, ho provato a migliorare l'algoritmo di selezione dei canti introducendo lo scarto dalla similarità media e incrociando i dati con un db statico di canti manualmente suggeriti (che possiamo alimentare quando vogliamo). L'idea era questa, ma la documenterò per bene nella pagina progetto.
I link ai file di output (e la loro struttura) non sono cambiati quindi non dovresti avere alcun tipo di problema.
Aspetto tuoi aggiornamenti (senza fretta, non preoccuparti!) sullo storico dei canti suonati così da aggiungere anche questa fonte dati per perfezionare i risultati.
Fammi sapere se i nuovi dati ti creano problemi!
Buon we!
Per migliorare l'accuratezza dei risultati e perfezionare lo strumento si possono seguire queste strade:
Appunti e idee
(per selezionare i risultati più accurati considerando tutte le fonti dei dati)
Si potrebbe realizzare un overall score i cui contributi (ancora da individuare e definire) potrebbero essere
N.B. In questo modo:
Magari il peso può essere visto come un peso massimo. Per il primo punto ad esempio: il canto con similarità più alta e devianza > 1 può prendere 1.5. Gli altri 9 che hanno una similarità più bassa allora prenderanno un punteggio < 1.5 ma ad esso proporzionale.
Devo ordinare meglio le idee su questo punto e capire se conviene effettuare un calcolo di questo tipo.
Anche per la lista dei canti suonati si potrebbe introdurre un dettaglio di questo tipo perchè si ha accesso al numero di dispositivi che si potrebbe normalizzare e poi rendere proporzionale al peso massimo.
Alcuni ragionamenti sui quartili sono qui https://github.com/dennisangemi/hildegard/issues/17#issue-2326544176