【问题标题】:Programmatically determine the relative "popularities" of a list of items (books, songs, movies, etc)以编程方式确定项目列表(书籍、歌曲、电影等)的相对“流行度”
【发布时间】:2011-02-27 01:37:39
【问题描述】:

给定(比如说)歌曲列表,确定它们相对“流行度”的最佳方法是什么?

我的第一个想法是使用 Google 趋势。此歌曲列表:

  1. 地下乡愁蓝调
  2. 帝国心态
  3. 加州女孩

产生以下Google Trends report:(为了了解现在流行什么,我将报告限制为过去 30 天)

http://s3.amazonaws.com/instagal/original/image001.png?1275516612

Empire State of Mind 比 California Gurls 更受欢迎,而 Subterranean Homesick Blues 则远不如两者受欢迎。

所以这很有效,但是当您的列表有 100 或 1000 首歌曲时会发生什么?谷歌趋势只允许你一次比较 5 个词,所以没有一个巨大的循环,什么是正确的方法?

另一种选择是只对每首歌曲进行 Google 搜索,看看哪首歌曲的结果最多,但这并不能真正衡量同一件事

【问题讨论】:

    标签: algorithm statistics


    【解决方案1】:

    很好的问题 - Britney Spears 的一首歌可能会流行 2 个月然后(谢天谢地)被遗忘,而 Elvis 的另一首歌可能会持续流行 30 年。您如何定量区分两者?我们知道我们想认为持续流行比“昙花一现”更重要,但是如何得到这个结果呢?

    首先,我会在发布日期前后正常化 - Subterranean Homesick Blues 现在可能不受欢迎(虽然不在我家),但正常化回到 1965 年可能会产生不同的结果。

    由于大多数歌曲的流行度会上升,趋于平稳,然后下降,让我们选择它们趋于平稳的区域。人们可能会假设,在那个时期,这两个系列是平稳的、不相关的和正态分布的。现在您可以应用测试来确定均值是否不同。

    确定两个时间序列之间差异幅度的测试可能限制较少,但我还没有遇到过它们。

    有人吗?

    【讨论】:

      【解决方案2】:

      我当然会将 Google 的 API 视为“受限”。

      一般来说,用于排序算法的比较函数是非常“二进制”的:

      • 输入:2 个元素
      • 输出:真/假

      这里有:

      • 输入:5 个元素
      • 输出:每个元素的相对权重

      因此,您只需要线性数量的 API 调用(而排序通常需要 O(N log N) 次调用比较函数)。

      您将需要ceil( (N-1)/4 ) 电话。您可以并行化,但请仔细阅读用户指南,了解您有权提交的请求数量。

      然后,一旦所有这些都被“评级”,您就可以在本地进行简单的排序。

      直观地说,为了正确收集它们,您应该:

      • 随机播放列表
      • 弹出前 5 个元素
      • 调用 API
      • 将它们按排序插入结果中(此处使用插入排序)
      • 拿起中位数
      • 弹出前 4 个元素(如果可用更少,则弹出更少)
      • 先调用中位数和前 4 个的 API
      • 返回插入,直到元素用完

      如果你的列表有 1000 首歌曲,那 250 次 API 调用,没什么可怕的。

      【讨论】:

        【解决方案3】:

        有一个非官方的谷歌趋势 api。见http://zoastertech.com/projects/googletrends/index.php?page=Getting+Started我没用过,但也许有帮助。

        【讨论】:

          【解决方案4】:

          您可以在 Twitter 上搜索该项目,看看它被提及了多少次。或者在亚马逊上查看它,看看有多少人评论过它以及他们给它的评级。 Twitter 和 Amazon 都有 API。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-03-23
            • 1970-01-01
            • 2011-05-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多