이 저장소에는 음악 추천 시스템과 통합되는 웹 애플리케이션이 포함되어 있으며, 각각 30 초 동안 지속되는 3,415 개의 오디오 파일의 데이터 세트를 활용하여 LSH (Locality-Ensitive Hashing) 구현을 사용하여 리듬 유사성을 사용하여 빅 데이터 분석 (DS2004) 과정의 할당의 일부로 리듬 유사성을 사용합니다.
음악 정보 검색 분야는 오디오가 표현 될 수있는 다양한 방법으로 인해 과제를 제시하므로 쿼리에서 우선 순위를 결정 해야하는 기능을 결정하기가 어렵습니다. 이 문제를 단순화하기 위해 우리의 구현은 특별히 곡의 리듬에 중점을 둡니다. 이전 연구에서 리듬 기반 음악 쿼리를 탐구했지만 현재 방법은 노래 리듬에 맞게 전체 데이터 구조를 쿼리해야하므로 비 효율성을 겪습니다. 이 제한을 극복하기 위해, 우리는 철저한 검색을 필요로하지 않고 대형 데이터 세트 내에서 유사한 항목을 효율적으로 식별하는 기술인 LSH (Locality-Ensentive Hashing)의 활용을 제안합니다.
LSH (Locality-Ensiditive Hashing)는 가장 가까운 이웃 검색을 근사화하기위한 널리 채택 된 기술입니다. 저 차원 공간에 매핑하여 대형 데이터 세트 내에서 유사한 항목을 효율적으로 식별합니다. 그러나 전통적으로 LSH (Locality-Ensitive Hashing)는 SET 유사성을 추정하기 위해 Minhash (또는 Min-Wise Independent Permutations Locality-Ensentivent Hashing 체계)라는 다른 방법을 사용합니다. Minhash는 일반적으로 데이터 마이닝 및 정보 검색에 사용됩니다. Minhash는 일반적으로 설정 유사성을 추정하는 데 효과적이지만 특정 응용 프로그램에서 효과를 방해 할 수있는 특정 제한 사항이 있습니다.
이러한 한계를 해결하기 위해, 우리는 대략적인 가장 가까운 이웃 (ANN)이라는 또 다른 효율적인 기술을 사용하여 LSH 접근법을 구현하기로 결정했습니다. 이 기술은 대형 데이터 세트에서 가장 가까운 이웃을 찾는 데 적합합니다. Minhash 대신 대략적인 가장 가까운 이웃 (ANN)을 활용함으로써 프로젝트에서 LSH (Locality-Edsitive Hashing) 구현의 효과와 성능을 향상시키는 것을 목표로합니다.
대략적인 가장 가까운 이웃 (ANN)은 다양한 거리 지표에 대해 가장 가까운 이웃을 근사화 할 수 있으므로 LSH (Locality-Enditive Hashing)를위한보다 다양한 솔루션을 제공합니다. 대조적으로, Minhash는 Jaccard의 유사성을 위해 특별히 설계되었습니다. 이 광범위한 적용 가능성을 통해 우리는 Minhash에 비해 가장 가까운 이웃의보다 정확한 추정치를 제공 할 수 있습니다. 특히 유클리드 거리 또는 코사인 유사성과 같은 다른 거리 메트릭을 기반으로 유사성 검색이 필요한 고차원 데이터 세트를 처리 할 때.
시간 복잡성과 관련하여, 대략적인 가장 가까운 이웃 (ANN)과 Minhash 접근법은 결국 LSH (Locality-Ensitive Hashing)가있는 해시 테이블을 구현하여 어느 경우에도 검색하기위한 O (1) 시간 복잡성을 초래합니다. 그러나 우리의 초점은 가장 가까운 이웃 (ANN) 접근 방식이 Minhash보다 우수한 메모리 효율성에 더 중점을 둡니다. 이 측면은 우리가 사용한 오디오 데이터 세트가 3.3 gib의 무게로 상당히 크기 때문에 구현에 특히 중요합니다.
따라서 Minhash 대신 대략적인 가장 가까운 이웃 (ANN)을 활용함으로써 우리는 효율적인 검색 시간과 더 나은 메모리 효율을 유지하면서 가장 가까운 이웃을 추정하는 데있어 정확도가 향상되어 상당한 오디오 데이터 세트를 사용한 최적의 성능을 보장합니다.
Music Recommendation Based on Rhythmic Similarity Using Locality-Sensitive Hashing (LSH).ipynb IPYNB-오디오 데이터 세트에서 음악 추천 시스템을 교육하고 평가하기 위해 LSH (Locality-Ensenitive Hashing) 구현을 포함합니다.app.py - 음악 추천 시스템과 함께 제공되는 웹 응용 프로그램 (FLASK)의 소스 코드.templates - 웹 페이지의 소스 코드, 즉 index.html 및 predict.html 은 웹 응용 프로그램 (Flask)에 의해 렌더링됩니다.static - 웹 애플리케이션 (FLASK)에서 사용하는 모든 아이콘과 시각적 요소가 포함되어 있습니다.staticfiles - 웹 응용 프로그램 (FLASK)의 사용자가 업로드 한 오디오 파일이 저장되는 디렉토리.features.pkl 교육에 사용 된 모든 오디오 파일의 Mel-Frequency Cepstral Coefficients (MFCC) 기능이 포함 된 객체 파일.music.ann 대략적인 가장 가까운 이웃 (ANN)을 사용하는 음악 추천 시스템의 alnoyindex 객체가 포함 된 메모리 매핑 (MMAP) 파일. app.py 파일을 실행하고 주어진 링크에 호스트 포트에 액세스하십시오./predict 페이지에 도달하면 업로드 된 오디오 파일에 대한 최고의 권장 사항과 최악의 권장 사항을 모두 받게됩니다.pied_piper_download.csv 라는 파일은 현재 디렉토리에 저장되며, 여기에는 업로드 된 오디오 파일에서 식별 된 유사한 오디오 세그먼트가 포함됩니다. 이 프로젝트는 그 프로젝트에 기여한 특별한 사람들 덕분에 존재합니다.