Este repositorio contiene una aplicación web que se integra con un sistema de recomendación de música, que aprovecha un conjunto de datos de 3,415 archivos de audio, cada uno duradero treinta segundos, utilizando un curso de hashes de hashessensible (LSH) sensible a la localidad para determinar el curso rítmico, como parte de una asignación para el curso fundamental de Big Data Analytics (DS2004).
El campo de la recuperación de la información del campo de la música presenta un desafío debido a las diversas formas en que el audio puede representarse, lo que dificulta determinar qué características deben priorizarse en las consultas. Para simplificar este problema, nuestra implementación se centra específicamente en el ritmo de las canciones como la única función de consulta. Si bien investigaciones anteriores han explorado la consulta musical basada en el ritmo, los métodos actuales sufren de ineficiencia, ya que requieren consultar toda la estructura de datos para que coincidan con los ritmos de la canción. Para superar esta limitación, proponemos la utilización del hashing sensible a la localidad (LSH), una técnica que identifica de manera eficiente elementos similares dentro de grandes conjuntos de datos sin requerir búsquedas exhaustivas.
El Hashing sensible a la localidad (LSH) es una técnica ampliamente adoptada para aproximar las búsquedas de vecino más cercano. Identifica de manera eficiente elementos similares dentro de grandes conjuntos de datos al asignándolos a un espacio dimensional inferior. Sin embargo, tradicionalmente, el hashing sensible a la localidad (LSH) emplea un método diferente llamado Minhash (o el esquema de hash de hashidad de localidad independiente de Min-Wise Permutations) para estimar la similitud establecida. Minhash se usa comúnmente en minería de datos y recuperación de información. Si bien Minhash es generalmente efectivo para estimar la similitud establecida, tiene ciertas limitaciones que pueden obstaculizar su efectividad en aplicaciones específicas.
Para abordar estas limitaciones, hemos optado por implementar el enfoque LSH utilizando otra técnica eficiente llamada Vecinos más cercanos (ANN). Esta técnica es adecuada para encontrar vecinos más cercanos aproximados en grandes conjuntos de datos. Al utilizar vecinos más cercanos (ANN) aproximados en lugar de Minhash, nuestro objetivo es mejorar la efectividad y el rendimiento de la implementación del hashess sensible a la localidad (LSH) en nuestro proyecto.
Los vecinos aproximados más cercanos (ANN) ofrecen una solución más versátil para el hashing sensible a la localidad (LSH), ya que puede aproximar a los vecinos más cercanos para varias métricas de distancia. En contraste, Minhash está diseñado específicamente para la similitud de Jaccard. Esta aplicabilidad más amplia permite que nuestro enfoque proporcione estimaciones más precisas de los vecinos más cercanos en comparación con Minhash, especialmente cuando se trata de conjuntos de datos de alta dimensión que requieren búsquedas de similitud basadas en diferentes métricas de distancia como la distancia euclidiana o la similitud de coseno.
Con respecto a la complejidad del tiempo, tanto los enfoques aproximados de vecinos más cercanos (ANN) como Minhash eventualmente implementan una tabla hash con hashing sensible a la localidad (LSH), lo que resulta en una complejidad de tiempo O (1) para la recuperación en cualquier caso. Sin embargo, nuestro enfoque se encuentra más en la eficiencia de la memoria, donde el enfoque aproximado de vecinos más cercanos (ANN) supera a Minhash. Este aspecto es particularmente crucial para nuestra implementación, ya que el conjunto de datos de audio que utilizamos es bastante grande, con un peso de 3.3 GIB.
Por lo tanto, al utilizar vecinos más cercanos (ANN) aproximados en lugar de Minhash, logramos una mayor precisión en la estimación de los vecinos más cercanos al tiempo que mantienen un tiempo de recuperación eficiente y una mejor eficiencia de memoria, asegurando un rendimiento óptimo para nuestra implementación con el conjunto de datos de audio considerable.
Music Recommendation Based on Rhythmic Similarity Using Locality-Sensitive Hashing (LSH).ipynb : contiene la implementación de nuestra implementación de hashing (LSH) sensible a la localidad para entrenar y evaluar un sistema de recomendación de música en el conjunto de datos de audio.app.py - Código fuente para la aplicación web (Flask) que acompaña al sistema de recomendación de música.templates : contiene los códigos de origen para las páginas web, a saber, index.html y predict.html , que son representados por la aplicación web (frasco).static : contiene todos los iconos y elementos visuales utilizados por la aplicación web (frasco).staticfiles : directorio donde se almacenan los archivos de audio cargados por los usuarios en la aplicación web (frasco).features.pkl : archivo de objeto que contiene las características de coeficientes Cepstrales MEL-Frequency (MFCC) de todos los archivos de audio utilizados para la capacitación.music.ann -Memory Mapped (MMAP) que contiene el objeto MolnetIndex para el sistema de recomendación de música que utiliza vecinos más cercanos (ANN). app.py y acceda al enlace dado al puerto de host./predict , recibirá las mejores y peores recomendaciones para el archivo de audio cargado.pied_piper_download.csv se guardará en el directorio actual, que incluirá segmentos de audio similares identificados desde el archivo de audio cargado. Este proyecto existe gracias a las personas extraordinarias que contribuyeron a él.