V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
sam408130
V2EX  ›  问与答

百度音乐搜索的容错技术

  •  
  •   sam408130 · 2014-03-27 17:12:52 +08:00 · 2653 次点击
    这是一个创建于 3690 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一直很好奇百度音乐的容错搜索到底是怎么做的,例如在搜索‘七里乡’,‘天蜜蜜’,搜索引擎会自动容错为‘七里香’,‘甜蜜蜜’。本人能想到是:首先计算搜索query与库中歌曲的相似度(编辑距离),得到一批候选集,然后结合百度庞大的搜索log,算是一种热度吧,最终给出容错结果。

    我本人想做音乐领域,语音搜索识别结果的容错,百度音乐的容错结果是很好的,不知道他们用了什么更好的技术,求指点~~ - -!
    10 条回复    1970-01-01 08:00:00 +08:00
    xdeng
        1
    xdeng  
       2014-03-27 17:16:43 +08:00
    直接调用它的接口不就行了
    binux
        2
    binux  
       2014-03-27 17:20:35 +08:00
    + 根据用户行为
    sam408130
        3
    sam408130  
    OP
       2014-03-27 17:24:05 +08:00
    @xdeng 如果可以掉api,我就不用这么苦恼了
    sam408130
        4
    sam408130  
    OP
       2014-03-27 17:27:28 +08:00
    @binux 我这边没有那么多用户数据,目前自己构建一个音乐数据的本题库,使用pagerank计算了节点的重要性,结合百度音乐自带的热度,给每首歌曲,每个歌手一个得分吧,拿这个得分当歌曲歌手最终热度
    xdeng
        5
    xdeng  
       2014-03-27 17:28:34 +08:00
    @sam408130 直接 抓取网页不行吗? 就想采集一样?
    sam408130
        6
    sam408130  
    OP
       2014-03-27 17:29:51 +08:00
    @xdeng 抓网页肯定不行,用户量上去了,得考虑到自身网络被封的危险性呀,被封了不就gg了
    SkyTodInfi
        7
    SkyTodInfi  
       2014-03-27 17:33:13 +08:00
    最简单的,建一个大的歌曲名库,来一个词匹配最近的几个展示,可以按一个字一个字匹配.
    刚开始不用搞得那么复杂,先糙快猛用上看效果,再慢慢改进
    11
        8
    11  
       2014-03-27 17:36:57 +08:00
    其实,一种启发式就是,把输入的汉字转成拼音,然后每首中文歌会有个pinyin字段,然后匹配这个字段就可以了。

    所以,你搜索 qilixiang 也会搜到「七里香」的。
    sam408130
        9
    sam408130  
    OP
       2014-03-27 17:38:19 +08:00
    @SkyTodInfi 嗯,我现在用的是倒排表,在门限以内的相似歌曲中,构建前缀树,计算编辑距离,然后结合之前算好的歌曲得分,给出最终结果。其实我的方法效果也不错,就是不知道改怎么提高了。
    sam408130
        10
    sam408130  
    OP
       2014-03-27 17:39:08 +08:00
    @11 嗯,这个我也考虑进去了,在计算编辑距离的时候,如果拼音相同,我就不扣分了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2274 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 03:43 · PVG 11:43 · LAX 20:43 · JFK 23:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.