Хуже — там обычная коллаборативная фильтрация, только вероятно ограничена списком ваших «друзей».
Официальный анонс был такой:
Сервис работает на основе Вашего списка аудиозаписей и предпочтений миллионов других пользователей. Кстати, его создатели в мае завоевали золотую медаль на всемирном чемпионате по программированию.
Как показывает практика, для массового пользователя они подходят. Но далеко не для всех.
У вас API при росте числа пользователей будут отказывать, без бэкэнда всё равно не поедет.
У меня давно есть сервис из этой же области https://musicadviser.ru/
Хоть там и используется memcached, но при росте числа пользователей, одновременно запускающих анализ, возникают проблемы. Единственное к чему пока пришёл — хранить у себя все данные. Вернее по сути долговременно кэшировать всё. Даже сейчас опасаюсь, публикую ссылку здесь)
Last.fm помимо всего прочего ещё и лежит частенько, так что не кэшировать от него данные — оставлять мёртвым приложение.
На счёт рекомендаций:
Паблики — это всё очень абстрактно, я чисто по работе подписан на кучу пабликов, но это совсем не значит, что они подходят мне в плане музыки.
В данный момент рекомендательные системы идут в сторону автоматизации, ибо люди ленивы. Используйте соц. сеть иначе — если уж зацепились за паблики, то определяйте их тематику и пытайтесь найти закономерность в том, что интересно пользователю больше всего.
Аналогично, в БД разницы нет, что добавление в избранное, что автоматическое добавление в список просмотренных. Разве что психологическое различие — действие производится больше автоматически. Но YouTube, как и другие большие проекты, скорее всего использует гибридный метод.
Это много где есть. Чехия выдаёт стипендию иностранцам (РФ не в списке, увы), для обучения в Чехии на чешском. Умысел банален — им нужны специалисты с мотивацией, у местных её как правило мало. Но на стипендию идёт отбор, причём не местный, местные только отправляют документы в страну принятия и уже там принимается решение.
Во многих странах ЕС обучение на местном языке бесплатное. При этом никто не принуждает оставаться и работать, в хорошей стране сам захочешь остаться, ещё и денег потратишь, дабы язык выучить.
Бакалавриат в РФ скорее всего не даст нужной базы для большинства вузов из списка, хотя англоязычные программы в ЕС (в не англоязычных странах) как правило легче, ибо для преподавателей язык тоже не родной. А я сомневаюсь, что отправлять буду сначала на языковые курсы.
Многие вещи понимаешь только тогда, когда переходишь на другую сторону силы. Когда ты являешься разработчиком, всё это работает почти на уровне рефлексов :)) Подсознательное желание не тратить время на глупые (с твоей точки зрения) вещи.
Закончил школу в 2007-м, был отдельно Pascal (TurboPascal), основы постройки интерфейса в Delphi (6 или 7, не помню). В привязке к макросам MS Office был Basic. Logo был ещё в классе седьмом вроде.
В Чехии, на сколько я понимаю, в школе тоже программирования нет, ибо на первых курсах ВУЗа разбирается алгоритмизация и программирование на Java от самого начала (основные понятия, типы данных и т.д.). Java тут вообще идёт как основной ЯП в техническом ВУЗе.
Во-вторых, content-based рекомендательные системы могут давать неплохое разнообразие и приятно удивить пользователя (diversity и serendipity), но они очень и очень сильно подвержены, скажем так, «упячкам». То есть периодически вы будете рекомендовать что-то очень и очень странное
При большом размере «аудитории» Collaborative filtering делает то же самое. При малом — проблема «холодного старта».
Но в любом случае 100% сейчас не даёт ничего. Впрочем, это скорее проблема людей, а не ПО :)
Отличие, при беглом осмотре, в том что они пытаются притянуть к произвольному звуку привычные характеристики типа жанра, темпа, мелодичности, экспрессии и т.д. Я считаю это не совсем правильным, так как есть жанры где всё кроме ярлыка самого жанра, определить невозможно (Merzbow — Pulse Demon), но композиция тем не менее входит, пусть и на окраину общего звукового континуума, который можно наблюдать на моём скриншоте про Scatterplot собранной базы данных.
«Притягивание» характеристик делается как раз для того, чтобы «разбавить» рекомендации и очередная попытка привести такую субъективную область к чему-то формальному. На словах типа «мне кажется» науку не сделаешь. Другой человек просто не сможет этим адекватно воспользоваться как базой. Да, я тоже не очень разделяю их методику, но на абстрактные проценты тоже полагаться нельзя.
Послушав трек, что вы привели, я был полностью солидарен с last.fm в плане тегов. Noise/experimental/industrial. Даже описание исполнителя об этом говорит. И на сигнале вы должны будете увидеть характерный график для шума по идее.
Насчёт попадание кусков из разных жанров в одном треке, для примера положим 40% металл, 60% мелодекламация голосом. Чаще всего это будет приводить к тому что в плейлисте будут находиться треки с такой же комбинацией — 40% металла и 60% декламации. Ну или с перекосом в ту или другую сторону, если точных совпадений найдено не будет.
Вы анализируете не весь трек, разве нет?
Музыка субъективна и в качестве анализа качества рекомендаций вы всё равно будете использовать людей. Может стоит на них и ориентироваться, а не на машинный процент?
Используйте всю выборку пользователя и на основе неё сделайте статистический вывод о процентном соотношении треков определённого вида (ок, вам не нравится слово «жанр») у пользователя. Дальше из глобальной БД сэмплов можно выбирать похожие треки и в таком же процентном отношении отдавать их пользователю.
Для возможности рекомендаций стоит добавить отправку «сэмплов» на сервер и их каталогизировать, использую мета-данные из публичных баз (last.fm, freebase etc.), не знаю правда как к этому отнесутся правообладатели, но тем не менее. Отправлять пользователя к его же музыке это не очень полезно.
Проблема content-based систем (а иначе вашу и не назовёшь) в том, что рекомендации будут очень сильно похожи на то, что слушает человек. Хотя, в случае экспериментальных или смешанных жанров вы можете получить вовсе бредовые вещи. Взять к примеру кусок какого-нибудь djent трека и часть его будет похожа на что-то инструментальное, часть на электронное. Тут как «повезёт» с куском. Для устранения проблемы обычно используются гибридные системы, куда вам и советую копать.
Я сейчас пытаюсь зайти несколько с другой стороны, использовать семантическую сеть для алгоритма рекомендаций (в качестве информационной базы используются всё те же публичные БД). Пока всё на зачаточной стадии (первый семестр докторантуры), но в направление верю :)
Почему актёр = пользователь? Что угодно может инициировать действие. Внешний запрос, к примеру.
Use case вроде и переводится как «вариант использования». То бишь вариант использования системы актёром.
Официальный анонс был такой:
Как показывает практика, для массового пользователя они подходят. Но далеко не для всех.
У меня давно есть сервис из этой же области https://musicadviser.ru/
Хоть там и используется memcached, но при росте числа пользователей, одновременно запускающих анализ, возникают проблемы. Единственное к чему пока пришёл — хранить у себя все данные. Вернее по сути долговременно кэшировать всё. Даже сейчас опасаюсь, публикую ссылку здесь)
Last.fm помимо всего прочего ещё и лежит частенько, так что не кэшировать от него данные — оставлять мёртвым приложение.
На счёт рекомендаций:
Паблики — это всё очень абстрактно, я чисто по работе подписан на кучу пабликов, но это совсем не значит, что они подходят мне в плане музыки.
В данный момент рекомендательные системы идут в сторону автоматизации, ибо люди ленивы. Используйте соц. сеть иначе — если уж зацепились за паблики, то определяйте их тематику и пытайтесь найти закономерность в том, что интересно пользователю больше всего.
Бакалавриат в РФ скорее всего не даст нужной базы для большинства вузов из списка, хотя англоязычные программы в ЕС (в не англоязычных странах) как правило легче, ибо для преподавателей язык тоже не родной. А я сомневаюсь, что отправлять буду сначала на языковые курсы.
Linode (GB): Восьмиядерный 2Ghz/2048 RAM/96Gb HDD = 40$~1450руб/мес.
За разницу в стоимости можно поднять простенький кэширующий сервер %)
Fornex проигрывает Linode диском и виртуализацией (OpenVZ vs. XEN).
Они занимаются в том числе и вашей темой.
Это кстати прям вопрос «на миллион», его стандартно задают по поводу всех ООП языков.
В Чехии, на сколько я понимаю, в школе тоже программирования нет, ибо на первых курсах ВУЗа разбирается алгоритмизация и программирование на Java от самого начала (основные понятия, типы данных и т.д.). Java тут вообще идёт как основной ЯП в техническом ВУЗе.
При большом размере «аудитории» Collaborative filtering делает то же самое. При малом — проблема «холодного старта».
Но в любом случае 100% сейчас не даёт ничего. Впрочем, это скорее проблема людей, а не ПО :)
«Притягивание» характеристик делается как раз для того, чтобы «разбавить» рекомендации и очередная попытка привести такую субъективную область к чему-то формальному. На словах типа «мне кажется» науку не сделаешь. Другой человек просто не сможет этим адекватно воспользоваться как базой. Да, я тоже не очень разделяю их методику, но на абстрактные проценты тоже полагаться нельзя.
Послушав трек, что вы привели, я был полностью солидарен с last.fm в плане тегов. Noise/experimental/industrial. Даже описание исполнителя об этом говорит. И на сигнале вы должны будете увидеть характерный график для шума по идее.
Вы анализируете не весь трек, разве нет?
Музыка субъективна и в качестве анализа качества рекомендаций вы всё равно будете использовать людей. Может стоит на них и ориентироваться, а не на машинный процент?
Используйте всю выборку пользователя и на основе неё сделайте статистический вывод о процентном соотношении треков определённого вида (ок, вам не нравится слово «жанр») у пользователя. Дальше из глобальной БД сэмплов можно выбирать похожие треки и в таком же процентном отношении отдавать их пользователю.
Конкретно вот эту публикацию mtg.upf.edu/system/files/publications/bogdanov_IPM2012.pdf
Автор вроде как уже защитился, так что информация вполне себе полезная должна быть.
Для возможности рекомендаций стоит добавить отправку «сэмплов» на сервер и их каталогизировать, использую мета-данные из публичных баз (last.fm, freebase etc.), не знаю правда как к этому отнесутся правообладатели, но тем не менее. Отправлять пользователя к его же музыке это не очень полезно.
Проблема content-based систем (а иначе вашу и не назовёшь) в том, что рекомендации будут очень сильно похожи на то, что слушает человек. Хотя, в случае экспериментальных или смешанных жанров вы можете получить вовсе бредовые вещи. Взять к примеру кусок какого-нибудь djent трека и часть его будет похожа на что-то инструментальное, часть на электронное. Тут как «повезёт» с куском. Для устранения проблемы обычно используются гибридные системы, куда вам и советую копать.
Я сейчас пытаюсь зайти несколько с другой стороны, использовать семантическую сеть для алгоритма рекомендаций (в качестве информационной базы используются всё те же публичные БД). Пока всё на зачаточной стадии (первый семестр докторантуры), но в направление верю :)
Use case вроде и переводится как «вариант использования». То бишь вариант использования системы актёром.