Ce référentiel contient une application Web qui s'intègre à un système de recommandation musicale, qui exploite un ensemble de données de 3 415 fichiers audio, chacun durant trente secondes, en utilisant une mise en œuvre de hachage sensible à la localité (LSH) pour déterminer la similitude rythmique, dans le cadre d'une affectation pour le cours fondamental de l'évolution de l'analyse des mégadonnées (DS2004).
Le domaine de la recherche d'informations musicales présente un défi en raison des différentes façons dont l'audio peut être représenté, ce qui rend difficile de déterminer les fonctionnalités que les fonctionnalités doivent être prioritaires dans les requêtes. Pour simplifier ce problème, notre implémentation se concentre spécifiquement sur le rythme des chansons en tant que seule fonctionnalité de requête. Bien que les recherches antérieures aient exploré la requête musicale basée sur le rythme, les méthodes actuelles souffrent d'inefficacité, car elles nécessitent l'interrogation de l'ensemble de la structure de données pour correspondre aux rythmes de la chanson. Pour surmonter cette limitation, nous proposons l'utilisation du hachage sensible à la localité (LSH), une technique qui identifie efficacement des éléments similaires dans de grands ensembles de données sans nécessiter de recherches exhaustives.
Le hachage sensible à la localité (LSH) est une technique largement adoptée pour se rapprocher des recherches les plus proches. Il identifie efficacement des éléments similaires dans de grands ensembles de données en les cartographiant dans un espace de dimension inférieure. Cependant, traditionnellement, le hachage sensible à la localité (LSH) utilise une méthode différente appelée Minhash (ou le schéma de hachage indépendant de la permutations indépendantes) pour estimer la similitude des ensembles. Minhash est couramment utilisé dans l'exploration de données et la récupération des informations. Bien que Minhash soit généralement efficace pour estimer la similitude des ensembles, il a certaines limites qui peuvent entraver son efficacité dans des applications spécifiques.
Pour répondre à ces limitations, nous avons choisi de mettre en œuvre l'approche LSH en utilisant une autre technique efficace appelée approximation des voisins les plus proches (ANN). Cette technique est bien adaptée à la recherche de voisins les plus proches approximatifs dans de grands ensembles de données. En utilisant les voisins les plus proches (Ann) approximatifs au lieu de Minhash, nous visons à améliorer l'efficacité et les performances de la mise en œuvre de hachage sensible à la localité (LSH) dans notre projet.
Les voisins les plus proches (Ann) approximatifs offrent une solution plus polyvalente pour le hachage sensible à la localité (LSH) car il peut se rapprocher des voisins les plus proches pour diverses mesures de distance. En revanche, Minhash est spécialement conçu pour la similitude de Jaccard. Cette applicabilité plus large permet à notre approche de fournir des estimations plus précises des voisins les plus proches par rapport à Minhash, en particulier lorsqu'ils traitent des ensembles de données à haute dimension qui nécessitent des recherches de similitude basées sur différentes mesures de distance comme la distance euclidienne ou la similitude du cosinus.
En ce qui concerne la complexité du temps, les approches approximatives des voisins les plus proches (ANN) et Minhash mettent finalement en œuvre un tableau de hachage avec un hachage sensible à la localité (LSH), résultant en une complexité temporelle O (1) pour la récupération dans les deux cas. Cependant, notre objectif réside davantage sur l'efficacité de la mémoire, où l'approche approximative des voisins les plus proches (Ann) surpasse Minhash. Cet aspect est particulièrement crucial pour notre implémentation, car l'ensemble de données audio que nous avons utilisé est assez grand, pesant 3,3 GIB.
Par conséquent, en utilisant des voisins les plus proches (Ann) approximatifs au lieu de Minhash, nous atteignons une précision améliorée dans l'estimation des voisins les plus proches tout en maintenant un temps de récupération efficace et une meilleure efficacité de la mémoire, assurant des performances optimales pour notre implémentation avec l'ensemble de données audio de grande taille.
Music Recommendation Based on Rhythmic Similarity Using Locality-Sensitive Hashing (LSH).ipynb - contient l'implémentation de notre implémentation de hachage sensible à la localité (LSH) pour former et évaluer un système de recommandation musicale sur l'ensemble de données audio.app.py - Code source de l'application Web (FLASK) qui accompagne le système de recommandation musicale.templates - Contient les codes source pour les pages Web, à savoir index.html et predict.html , qui sont rendues par l'application Web (FLASK).static - contient toutes les icônes et éléments visuels utilisés par l'application Web (FLASK).staticfiles - répertoire où les fichiers audio téléchargés par les utilisateurs de l'application Web (FLASK) sont stockés.features.pkl - Fichier d'objets qui contient les fonctionnalités des coefficients CEPSTRAL (MFCC) MEL-Frequency de tous les fichiers audio utilisés pour la formation.music.ann - Fichier MAPT-Mapte (MMAP) qui contient l'objet ENTAYINDEX pour le système de recommandation musicale en utilisant les voisins les plus proches approximatifs (ANN). app.py et accédez au lien donné vers le port hôte./predict , vous recevrez à la fois les meilleures et les pires recommandations pour le fichier audio téléchargé.pied_piper_download.csv sera enregistré dans le répertoire actuel, qui comprendra des segments audio similaires identifiés à partir du fichier audio téléchargé. Ce projet existe grâce aux gens extraordinaires qui y ont contribué.