0

我想开发一个小型音乐库。我的目标是为用户添加建议的想法:

  • 用户将音乐添加到应用程序中,他根本没有连接,它是匿名的。
  • 当用户打开或关闭应用程序时,我们会将他的音乐库发送到我们的数据库,以收集(仅)新的音乐曲目信息。
  • 当用户点击建议时,我想检查数据库并将他的库与数据库进行比较。我想找到喜欢他、和他听相同音乐的用户听的音乐。

我的想法是在两种音乐之间创建一个链接,这些音乐定义为获得这两种音乐的用户百分比。如果这个百分比很高,我们可以向听第一个的用户推荐第二个。

在没有任何用户想法的情况下,我需要一些帮助来查找有关该类型数据库的文档。我必须将用户库与大量音乐进行比较。我发现它是基于项目的推荐。我过得好吗?

4

1 回答 1

0

用户是听一首特定的歌曲还是将它放在他/她的库中可能会产生误导。很多时候,样本音乐会附带操作系统或音乐播放器,而用户只是不太在意将其删除,或者很多时候机器很难确定音乐和其他声音之间的区别。或者也许有人下载了一些音乐,因为它们在纸上看起来很有趣,或者出现在他们整体喜欢的专辑中,但他们实际上最终不喜欢那首歌,但又没有删除它。

有一次我设置 Windows Media player 随机播放我电脑上的所有音乐,令我惊讶的是,我听到了冲击音效,我以前从未听过的音乐(来自我从未听说过的艺术家,我没有听过的流派),甚至 Windows 的点击声音也让我感到困惑,因为我没有点击任何东西。

我说了这么多是为了指出,你可能想要更多地考虑它,而不是哪些用户似乎在听相同的音乐。也许您可以让用户对他们听过的歌曲进行评分,并且不仅比较他们库中的歌曲,还比较他们对歌曲的评分。如果两个用户拥有所有相同的歌曲,但一个用户讨厌另一个用户喜欢的所有歌曲,反之亦然,那么他们真的没有相似的品味。

我将定义一个UDF,通过获取用户1拥有的每首歌曲并在用户2没有的情况下忽略它来比较两个用户的口味,但如果有,则从最大评级中减去他们的评级差异的绝对值,然后添加所有这些价值观在一起。

然后我会为每一对一个用户运行这个 UDF 并选择前几名,然后推荐他们高度评价的歌曲。

这将花费很长时间,特别是如果您有大量用户,那么您还可以做一个 Suggestors 表来存储每个用户最相似的用户,并通过更新(即截断然后重建)它以上过程每天,每周,每月,任何适合您的情况。建议功能(当用户使用时)将只需要检查用户的建议者的高评价歌曲,这将花费更少的时间,但会随着用户库的添加和更改而使事情保持最新。

于 2016-03-01T14:49:19.437 回答