Il progetto
Hildegard è un suggeritore di canti liturgici. Chiunque si sia occupatə di animazione liturgica conosce bene la fase preparatoria che consiste nalla lettura della liturgia e nella ricerca dei canti ad essa più adatti. Chiunque si sia occupato di animazione liturgica conosce benissimo anche quella fastidiosissima sensazione di sapere di conoscere il canto perfetto e non essere in grado di individuarlo tra i suoi ricordi. Questo strumento nasce per provare a rendere più semplice e meno estenuante questo processo.
Il nome
Hildegard (se preferite, Ildegarda di Bingen1) fu una monaca benedettina che, tra le numerose attività, fu anche compositrice di musica sacra. Diamo a questo strumento il suo nome non solo per celebrare l'incanto della sua opera musicale2, ma anche per omaggiare i contributi (spesso dimenticati) delle donne alla musica.
Come funziona
Ogni settimana, l'algoritmo su cui si basa questo strumento confronta (stupidamente) la liturgia con i testi di circa 1500 canti raccolti online in librettocanti.it. Proprio perchè la procedura è automatizzata e non validata, è possibile che produca output irrilevanti e sbagliati. Ecco perchè consigliamo comunque di leggere la liturgia quando si utilizza Hildegard.
Scopri i dettagli
Introduzione
Questa sezione descrive il funzionamento dello script Python suggeritore_v3.py
progettato per suggerire canti liturgici basati sulla similarità con i testi della liturgia. Verranno indicati i criteri di selezione dei canti, le formule matematiche utilizzate per il calcolo della similarità e delle deviazioni, e le fonti dati impiegate.
I Dati
Il suggeritore sfrutta diversi set di dati
- Anagrafica Canti: Un dataset che contiene informazioni dettagliate sui canti, inclusi gli ID, i titoli, gli autori e le raccolte.
- path:
data/anagrafica_canti.csv
- script:
scrips/get_anagrafica
- fonte: librettocanti.it
- path:
- Calendario Liturgico: Un calendario che associa le date delle celebrazioni ai corrispondenti ID delle liturgie.
- path:
data/calendari_liturgici/calendario_2019-2050.csv
- script:
scripts/get_calendario_liturgico
- fonte: API del Calcolatore del calendario liturgico cattolico italiano sviluppato e rilasciato in CC-BY da Gabriele Favrin (grazie!).
- path:
- Media delle Similarità: Un insieme di dati che contiene le similarità medie storiche tra i testi della liturgia e i testi dei canti.
- path:
data/mean_similarities.csv
- script:
scripts/get_mean_similarities.py
- path:
- Pesi: Un documento che specifica i pesi delle diverse metriche utilizzate per il calcolo del punteggio finale.
- path:
data/score_weights.csv
- path:
- Canti Selezionati Manualmente: Un elenco di canti selezionati manualmente per specifiche liturgie.
- path:
data/manually_selected.csv
- script:
scripts/get_manually_selected
- path:
Calcolo della Similarità
La similarità tra il testo della liturgia e i testi dei canti viene calcolata utilizzando la tecnica del TF-IDF (Term Frequency-Inverse Document Frequency) e la similarità coseno. Di seguito, si descrivono i passaggi dettagliati per il calcolo della similarità:
-
Caricamento dei Testi dei Canti: I testi dei canti vengono caricati una volta sola e memorizzati in una variabile globale.
-
Unione dei Testi: Il testo della liturgia viene combinato con i testi dei canti in una singola lista.
-
Vettorizzazione con TF-IDF: Un vettorizzatore TF-IDF viene inizializzato e applicato a tutti i testi combinati per trasformarli in vettori numerici.
-
Calcolo della Similarità Coseno: La similarità coseno viene calcolata tra il vettore del testo della liturgia (riga di riferimento) e i vettori dei testi dei canti. Questo produce una lista di valori di similarità.
-
Creazione del Dizionario di Similarità: I valori di similarità vengono associati agli ID dei canti per creare un dizionario che mappa ogni canto con il suo rispettivo valore di similarità.
La formula per il calcolo della similarità coseno è la seguente:
dove \(A\) e \(B\) sono i vettori TF-IDF dei testi, \(A \cdot B\) è il prodotto scalare dei due vettori e \(||A||\) e \(||B||\) sono le norme (lunghezze) dei vettori.
Calcolo della Deviazione
La deviazione tra la similarità calcolata e la media delle similarità storiche viene determinata. Questa deviazione permette di capire quanto un canto sia più o meno simile alla liturgia rispetto alla media storica.
Calcolo del Punteggio
I pesi delle metriche vengono definiti per le diverse componenti del punteggio:
metric | description | weight |
---|---|---|
similarity | similarità calcolata con get_similarity | 2.5 |
deviation | scarto della similarità dalla media | 2 |
history | numero di volte che un canto è stato suonato according to canticristiani | 2.5 |
selection | accuratezza manualmente selezionata dal db manually selected | 4 |
Punteggio di Similarità
Calcolato come combinazione ponderata della percentuale di similarità e della percentuale massima di similarità. La formula utilizzata è:
dove:
- \( \text{similarity} \) è la similarità calcolata tra il testo della liturgia e il testo del canto.
- \( w_s \) è il peso assegnato alla similarità.
Punteggio di Deviazione
Calcolato tenendo conto della deviazione massima e minima. La formula è:
e
a seconda che la deviazione sia positiva o negativa, dove:
- \( \text{deviation} \) è la deviazione della similarità rispetto alla media storica.
- \( w_d \) è il peso assegnato alla deviazione.
Punteggio di Selezione Manuale
Se un canto è stato selezionato manualmente, viene aggiunto un ulteriore punteggio basato su un peso specifico:
dove:
- \( \text{manually_selected} \) indica se il canto è stato selezionato manualmente.
- \( w_m \) è il peso assegnato alla selezione manuale.
Punteggio Totale
Il punteggio totale viene calcolato come:
Se un canto è stato selezionato manualmente, il punteggio totale viene ricalcolato come:
Filtraggio e Ordinamento dei Risultati
I canti vengono ordinati in base al punteggio finale. Vengono esclusi i canti non pertinenti ai momenti liturgici specifici come l'atto penitenziale e il Gloria.
Sei una sviluppatrice? Sei uno sviluppatore? Il codice è su GitHub e se vuoi, puoi contribuire!
Ringraziamenti
Senza il lavoro straordinario di Michele Mammini, che ha sviluppato librettocanti.it, "Hildegard: il suggeritore di canti liturgici" non esisterebbe. A lui il nostro più sincero grazie per la disponibilità e le autorizzazioni necessarie.
Contatti e segnalazioni
Se trovi degli errori o ti vuoi mettere in contatto con chi ha sviluppato questo strumento, scrivi una mail a Dennis Angemi usando questo indirizzo: dennisangemi@gmail.com