Программно определите относительный “popularities” списка объектов (книги, песни, фильмы, и т.д.)

Учитывая список (говорят), что песни, что лучший способ состоит в том, чтобы определить их относительную "популярность"?

Моя первая мысль состоит в том, чтобы использовать Google Trends. Этот список песен:

  1. Подземный тоскующий по дому блюз
  2. Эмпайр Стейт Билдинг Мышления
  3. Калифорнийский Gurls

представляет следующий отчет о Google Trends: (для обнаружения, что популярно теперь я ограничил отчет прошлым 30 дням),

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

Эмпайр Стейт Билдинг Мышления незначительно более популярен, чем Калифорнийский Gurls, и Подземный Тоскующий по дому Блюз намного менее популярен, чем также.

Таким образом, это работает вполне прилично, но что происходит, когда Ваш список является 100 или 1 000 песен долго? Тенденции Google только позволяют Вам сравнивать 5 условий сразу, таким образом отсутствующий огромный циклический алгоритм, каков правильный подход?

Другая опция состоит в том, чтобы просто сделать Поиск Google каждой песни и видеть, который имеет большинство результатов, но это действительно не измеряет то же самое

7
задан skaffman 2 June 2010 в 22:28
поделиться

4 ответа

Вы можете найти элемент в Twitter и посмотреть, сколько раз он упоминается. Или поищите его на Amazon, чтобы узнать, сколько людей его просмотрели и какую оценку они дали. И у Twitter, и у Amazon есть API.

2
ответ дан 7 December 2019 в 05:18
поделиться

Я бы определенно отнесся к API Google как к "ограниченному".

В общем, функции сравнения, используемые для алгоритмов сортировки, очень «двоичны»:

  • ввод: 2 элемента
  • вывод: истина / ложь

Здесь у вас:

  • ввод: 5 элементов
  • output: относительные веса каждого элемента

Следовательно, вам понадобится только линейное количество вызовов API (тогда как для сортировки обычно требуется O (N log N) вызовов функций сравнения).

Вам понадобится ровно вызовов ceil ((N-1) / 4) . Это можно распараллелить, хотя внимательно прочтите руководство пользователя, чтобы узнать количество запросов, которые вы имеете право отправлять.

Затем, когда все они будут "оценены", вы можете выполнить простую локальную сортировку.

Интуитивно, чтобы собрать их правильно, вы должны:

  • Перетасовать список
  • Вызвать 5 первых элементов
  • Вызвать API
  • Вставить их отсортированными в результат (здесь используйте сортировку вставкой)
  • Выберите медианное значение
  • Вставьте 4 первых элемента (или меньше, если доступно меньше)
  • Вызов API с медианой и этими 4 первыми
  • Вернитесь к вставке, пока не закончатся элементы

] Если ваш список состоит из 1000 песен, 250 обращений к API, ничего страшного.

1
ответ дан 7 December 2019 в 05:18
поделиться

Отличный вопрос - одна песня Бритни Спирс могла быть феноменально популярна в течение 2 месяцев, а затем (к счастью) забыта, в то время как другая песня Элвиса могла сохранять популярность в течение 30 лет. Как их количественно различить? Мы знаем, что хотим думать, что устойчивая популярность важнее, чем «вспышка в кастрюле», но как получить такой результат?

Во-первых, я бы нормализовался к дате выхода - «Subterintage Homesick Blues» сейчас может быть непопулярным (хотя и не в моем доме), но возвращение к 1965 году может дать другой результат.

Поскольку популярность большинства песен набирает обороты, то ее уровень снижается, а затем снижается, поэтому давайте выберем область, в которой они выровняются. Можно было бы предположить, что в течение этого периода эти два ряда являются стационарными, некоррелированными и нормально распределенными. Теперь вы можете просто применить тест, чтобы определить, отличаются ли средства.

Вероятно, существуют менее строгие тесты для определения величины разницы между двумя временными рядами, но я еще не встречал их.

Кто-нибудь?

3
ответ дан 7 December 2019 в 05:18
поделиться

Существует неофициальный google trends api. См. http://zoastertech.com/projects/googletrends/index.php?page=Getting+Started Я не использовал его, но, возможно, он может быть полезен.

2
ответ дан 7 December 2019 в 05:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: