このリポジトリには、3,415のオーディオファイルのデータセットをレバレバルする音楽推奨システムと統合するWebアプリケーションが含まれています。各30秒間は、地域に敏感なハッシュ(LSH)実装を利用して、ビッグデータ分析(DS2004)の基礎の割り当ての一部としてリズミカルな類似性を決定します。
音楽情報検索の分野は、オーディオを表現できるさまざまな方法のために課題を提示し、クエリで優先順位を付けるべき機能を判断することを困難にします。この問題を簡素化するために、実装は唯一のクエリ機能として曲のリズムに特に焦点を当てています。以前の研究では、リズムベースの音楽クエリを調査していましたが、現在の方法は、歌のリズムと一致するためにデータ構造全体を照会する必要があるため、非効率性に苦しんでいます。この制限を克服するために、徹底的な検索を必要とせずに、大きなデータセット内の同様のアイテムを効率的に識別する技術である、地域に敏感なハッシュ(LSH)の利用を提案します。
地域に敏感なハッシュ(LSH)は、最近傍の検索を近似するための広く採用されている手法です。それは、それらをより低次元空間にマッピングすることにより、大きなデータセット内の同様のアイテムを効率的に識別します。ただし、従来、地域に敏感なハッシュ(LSH)は、Minhash(または最小独立した順列の局所性感受性ハッシュスキーム)と呼ばれる異なる方法を採用して、設定された類似性を推定しています。 Minhashは、一般的にデータマイニングと情報検索で使用されます。 Minhashは一般的に設定された類似性を推定するのに効果的ですが、特定のアプリケーションでの有効性を妨げる可能性のある特定の制限があります。
これらの制限に対処するために、おおよその最近の隣人(ANN)と呼ばれる別の効率的な手法を使用して、LSHアプローチを実装することを選択しました。この手法は、大規模なデータセットで近い近隣の近隣諸国を見つけるのに最適です。 Minhashの代わりに近い最近隣人(ANN)を利用することにより、私たちはプロジェクトで地域に敏感なハッシュ(LSH)実装の有効性とパフォーマンスを強化することを目指しています。
近似最寄りの隣人(ANN)は、さまざまな距離メトリックの最近隣接を近似できるため、地域に敏感なハッシュ(LSH)のためのより汎用性の高いソリューションを提供します。対照的に、MinhashはJaccardの類似性のために特別に設計されています。この広範な適用性により、特にユークリッド距離やコサインの類似性などの異なる距離メトリックに基づいて類似性検索を必要とする高次元データセットを扱う場合、ミンハッシュと比較して、最近の隣人のより正確な推定値を提供するアプローチが可能になります。
時間の複雑さに関しては、近似最近隣人(ANN)とミンハッシュの両方のアプローチが、最終的に地域に敏感なハッシュ(LSH)を備えたハッシュテーブルを実装し、どちらの場合でも検索の時間の複雑さをもたらします。ただし、私たちの焦点はメモリ効率に重点を置いています。ここでは、近い近隣の隣人(ANN)アプローチがミンハッシュよりも優れています。この側面は、使用したオーディオデータセットが非常に大きく、重量が3.3 GIBであるため、実装にとって特に重要です。
したがって、Minhashの代わりに近似最寄りの隣人(ANN)を利用することにより、効率的な検索時間とより良いメモリ効率を維持しながら、最近傍を推定する精度が向上し、かなりのオーディオデータセットでの実装に最適なパフォーマンスを確保します。
Music Recommendation Based on Rhythmic Similarity Using Locality-Sensitive Hashing (LSH).ipynb - 地域に敏感なハッシュ(LSH)実装の実装が含まれており、オーディオデータセットの音楽推奨システムをトレーニングおよび評価します。app.py - 音楽推奨システムに伴うWebアプリケーション(Flask)のソースコード。templates - Webページのソースコード、つまりindex.htmlとpredict.htmlが含まれます。static - Webアプリケーション(Flask)で使用されるすべてのアイコンと視覚要素が含まれています。staticfiles - Webアプリケーション(Flask)のユーザーがアップロードしたオーディオファイルが保存されるディレクトリ。features.pkl - トレーニングに使用されるすべてのオーディオファイルのメル周波数セプストラル係数(MFCC)機能を含むオブジェクトファイル。music.ann - 近似最寄りの隣人(ANN)を使用した音楽推奨システムのassidindexオブジェクトを含むメモリマップ(mmap)ファイル。 app.pyファイルを実行し、ホストポートへの指定されたリンクにアクセスします。/predictページに到達すると、アップロードされたオーディオファイルの最良の推奨事項と最悪の推奨事項の両方が届きます。pied_piper_download.csvという名前のファイルは現在のディレクトリに保存されます。これには、アップロードされたオーディオファイルから識別された同様のオーディオセグメントが含まれます。 このプロジェクトは、それに貢献した並外れた人々のおかげで存在します。