正则表达式(或技术)从完整的歌曲标题猜猜艺术家?

时间:2012-02-13 23:57:36

标签: javascript regex

什么正则表达式(或其他技术)有助于在一个相当不可预测的完整歌曲标题中计算或“最佳猜测”艺术家;

e.g。从以下歌曲标题中找到Dr Dre(来自youtube的示例):

Xxplosive - Dr. Dre
Dr Dre - Xxplosive
Dr Dre- Xxplosive (lyrics)
Dr. Dre - 05 - The Chronic - Nuthin' But AG Thang

我的目标是找到最有可能的2或3场比赛,我打算将其发送到现有的API,以确定正确的艺术家。

2 个答案:

答案 0 :(得分:8)

使用像/\s*-\s*这样的正则表达式将歌曲标题拆分,这会将“Dr Dre - Xxplosive”转换为如下数组:{Dr DreXxplosive}。

然后使用以下任一项将搜索字词Dr. Dre与您的拆分细分相匹配:

  • Levenshtein distanceO(log(n)),可能最适合您)
  • MetaphoneO(1),可能是合适的,适合误报的潜在风险)
  • SoundexO(1),可能很合适,误报率很高)

如果您的曲目列表很大,请使用BKTree

换句话说,请使用fuzzy/approximate string matchingphonetic string matching

Protip:使用相对于搜索词长度的levenshtein限制(字符串越长,限制越高)。

答案 1 :(得分:1)

为什么必须使用正则表达式?

不会只使用简单的字符串拆分工作吗?您可以通过破折号拆分字符串,修剪它并将每个位发送到API。然后,您可以使用基于距离的字符串邻近算法来查看歌曲标题的哪一位最有可能是艺术家