Este repositório contém um aplicativo da Web que se integra a um sistema de recomendação musical, que aproveita um conjunto de dados de 3.415 arquivos de áudio, cada um com duração de trinta segundos, utilizando uma implementação de hash (LSH) sensível à localidade (LSH) para determinar o curso rítmico.
O campo da recuperação de informações musicais apresenta um desafio devido às várias maneiras pelas quais o áudio pode ser representado, dificultando a determinação de quais recursos devem ser priorizados em consultas. Para simplificar esse problema, nossa implementação se concentra especificamente no ritmo das músicas como o único recurso de consulta. Embora pesquisas anteriores tenham explorado a consulta musical baseada em ritmo, os métodos atuais sofrem de ineficiência, pois exigem consultar toda a estrutura de dados para combinar com os ritmos da música. Para superar essa limitação, propomos a utilização do hash sensível à localidade (LSH), uma técnica que identifica eficientemente itens semelhantes em grandes conjuntos de dados sem exigir pesquisas exaustivas.
O hash sensível à localidade (LSH) é uma técnica amplamente adotada para aproximar as pesquisas mais próximas do vizinho. Ele identifica eficientemente itens semelhantes em grandes conjuntos de dados, mapeando-os para um espaço inferior dimensional. No entanto, tradicionalmente, o hash sensível à localidade (LSH) emprega um método diferente chamado MINHASH (ou o esquema de hash de permutações independentes do Min-Wise, sensível à localidade) para estimar a similaridade do conjunto. Minhash é comumente usado na mineração de dados e recuperação de informações. Embora o MINHASH seja geralmente eficaz na estimativa de similaridade do conjunto, ele possui certas limitações que podem prejudicar sua eficácia em aplicações específicas.
Para abordar essas limitações, optamos por implementar a abordagem LSH usando outra técnica eficiente chamada de vizinhos aproximados mais próximos (RNA). Esta técnica é adequada para encontrar vizinhos aproximados mais próximos em grandes conjuntos de dados. Ao utilizar os vizinhos aproximados mais próximos (RNA) em vez de MINHASH, pretendemos melhorar a eficácia e o desempenho da implementação de Hashing (LSH) sensível à localidade em nosso projeto.
Os vizinhos aproximados aproximados (RNA) oferecem uma solução mais versátil para o hash sensível à localidade (LSH), pois pode se aproximar dos vizinhos mais próximos para várias métricas de distância. Por outro lado, Minash é projetado especificamente para a semelhança de Jaccard. Essa aplicabilidade mais ampla permite que nossa abordagem forneça estimativas mais precisas dos vizinhos mais próximos em comparação com o minhash, especialmente ao lidar com conjuntos de dados de alta dimensão que requerem pesquisas de similaridade com base em diferentes métricas de distância, como distância euclidiana ou similaridade de cosseno.
Em relação à complexidade do tempo, as abordagens aproximadas dos vizinhos mais próximos (Ann) e Minash acabam implementando uma tabela de hash com hash sensível à localidade (LSH), resultando em uma complexidade do tempo O (1) para recuperação em ambos os casos. No entanto, nosso foco reside mais na eficiência da memória, onde a abordagem aproximada dos vizinhos mais próximos (Ann) supera Minash. Esse aspecto é particularmente crucial para a nossa implementação, uma vez que o conjunto de dados de áudio que utilizamos é bastante grande, pesando 3,3 GIB.
Portanto, ao utilizar os vizinhos aproximados mais próximos (RNA) em vez de MINHASH, alcançamos maior precisão na estimativa dos vizinhos mais próximos, mantendo o tempo de recuperação eficiente e a melhor eficiência da memória, garantindo o desempenho ideal para nossa implementação com o conjunto de dados de áudio considerável.
Music Recommendation Based on Rhythmic Similarity Using Locality-Sensitive Hashing (LSH).ipynb -contém a implementação de nossa implementação de Hashing (LSH) sensível à localidade para treinar e avaliar um sistema de recomendação musical no conjunto de dados de áudio.app.py - Código -fonte do aplicativo da Web (Flask) que acompanha o sistema de recomendação musical.templates - contém os códigos de origem para as páginas da web, nomeadamente index.html e predict.html , que são renderizados pelo aplicativo da web (Flask).static - contém todos os ícones e elementos visuais utilizados pelo aplicativo da web (Flask).staticfiles - diretório em que os arquivos de áudio carregados pelos usuários no aplicativo da web (Flask) são armazenados.features.pkl -O arquivo de objeto que contém os recursos de coeficientes cepstrais de frequência Mel (MFCC) de todos os arquivos de áudio utilizados para treinamento.music.ann -Arquivo MMAP mapeado de memória (MMAP) que contém o objeto Irpersindex para o sistema de recomendação musical, utilizando vizinhos aproximados mais próximos (RNA). app.py e acesse o link fornecido na porta do host./predict , você receberá as melhores e as piores recomendações para o arquivo de áudio carregado.pied_piper_download.csv será salvo no diretório atual, que incluirá segmentos de áudio semelhantes identificados no arquivo de áudio carregado. Este projeto existe graças às pessoas extraordinárias que contribuíram para ele.