Учитывая список (говорят), что песни, что лучший способ состоит в том, чтобы определить их относительную "популярность"?
Моя первая мысль состоит в том, чтобы использовать Google Trends. Этот список песен:
представляет следующий отчет о Google Trends: (для обнаружения, что популярно теперь я ограничил отчет прошлым 30 дням),
http://s3.amazonaws.com/instagal/original/image001.png?1275516612
Эмпайр Стейт Билдинг Мышления незначительно более популярен, чем Калифорнийский Gurls, и Подземный Тоскующий по дому Блюз намного менее популярен, чем также.
Таким образом, это работает вполне прилично, но что происходит, когда Ваш список является 100 или 1 000 песен долго? Тенденции Google только позволяют Вам сравнивать 5 условий сразу, таким образом отсутствующий огромный циклический алгоритм, каков правильный подход?
Другая опция состоит в том, чтобы просто сделать Поиск Google каждой песни и видеть, который имеет большинство результатов, но это действительно не измеряет то же самое
Вы можете найти элемент в Twitter и посмотреть, сколько раз он упоминается. Или поищите его на Amazon, чтобы узнать, сколько людей его просмотрели и какую оценку они дали. И у Twitter, и у Amazon есть API.
Я бы определенно отнесся к API Google как к "ограниченному".
В общем, функции сравнения, используемые для алгоритмов сортировки, очень «двоичны»:
Здесь у вас:
Следовательно, вам понадобится только линейное количество вызовов API (тогда как для сортировки обычно требуется O (N log N) вызовов функций сравнения).
Вам понадобится ровно вызовов ceil ((N-1) / 4)
. Это можно распараллелить, хотя внимательно прочтите руководство пользователя, чтобы узнать количество запросов, которые вы имеете право отправлять.
Затем, когда все они будут "оценены", вы можете выполнить простую локальную сортировку.
Интуитивно, чтобы собрать их правильно, вы должны:
] Если ваш список состоит из 1000 песен, 250 обращений к API, ничего страшного.
Отличный вопрос - одна песня Бритни Спирс могла быть феноменально популярна в течение 2 месяцев, а затем (к счастью) забыта, в то время как другая песня Элвиса могла сохранять популярность в течение 30 лет. Как их количественно различить? Мы знаем, что хотим думать, что устойчивая популярность важнее, чем «вспышка в кастрюле», но как получить такой результат?
Во-первых, я бы нормализовался к дате выхода - «Subterintage Homesick Blues» сейчас может быть непопулярным (хотя и не в моем доме), но возвращение к 1965 году может дать другой результат.
Поскольку популярность большинства песен набирает обороты, то ее уровень снижается, а затем снижается, поэтому давайте выберем область, в которой они выровняются. Можно было бы предположить, что в течение этого периода эти два ряда являются стационарными, некоррелированными и нормально распределенными. Теперь вы можете просто применить тест, чтобы определить, отличаются ли средства.
Вероятно, существуют менее строгие тесты для определения величины разницы между двумя временными рядами, но я еще не встречал их.
Кто-нибудь?
Существует неофициальный google trends api. См. http://zoastertech.com/projects/googletrends/index.php?page=Getting+Started Я не использовал его, но, возможно, он может быть полезен.