我想清理我的音乐库,注意我的系统上双打最多的歌曲。我可以将它们全部列出,然后手动进行分类,但这需要很长时间。我想要列表排序最可能的重复。所以如果一首歌会有10个重复,那就意味着有10首相似的歌名,因此我会首先将注意力集中在那首歌上,以保持最佳版本。索引和比较字符串索引或散列
我可以使用使用莱文斯坦字符串比较技术和宝石
require 'levenshtein'
Levenshtein.distance("string1", "string2") => 1
比较两个songnames但是,让我们说,我有歌曲X号,我将不得不每首歌曲的x倍的比较,因为我可以”吨依靠正常的档案,我会错过一些重复的话。例如
The Beatles - Hey Jude
Beatles, The - hey jude
Beatles_-_Hey_Judy_(remastered)
应该给甲壳虫乐队 - 嘿朱迪(X3)
是否有生产基于文件的索引,然后可以进行排序,并会给降序排列的所有副本的方法吗?一种可以比较的散列?
我知道其他音乐比较方法,但他们有缺陷,这也可用于比较其他类型的文件。
你可能想看看类似[pHash](https://github.com/toy/pHash)的东西,它比较实际的音频并给出它们匹配的置信度。 – 2012-04-28 18:44:47
似乎是一个有趣的宝石,但安装后,当我需要oit时,我得到C:/Ruby193/lib/ruby/gems/1.9.1/gems/ffi-1.0.11/lib/ffi/library.rb:121:在'ffi_lib中的块':无法打开库'.dll':指定的模块找不到。 (LoadError) – peter 2012-04-28 19:04:39
那么你需要[下载并安装phash库](http://phash.org/download/),该宝石使用。 – 2012-04-28 19:05:43