Русский
Русский
English
Статистика
Реклама

Нужно больше датасетов. Музыка, IT-скилы и котики


Привет, Хабр! Совсем недавно мы писали про открытый датасет, собранный командой студентов магистратуры Наука о данных НИТУ МИСиС и Zavtra.Online (подразделение SkillFactory по работе с университетами) в рамках первого учебного Дататона. А сегодня представим вам целых 3 датасета от команд, которые также вышли в финал.

Все они разные: кто-то исследовал музыкальный рынок, кто-то рынок труда IT-специалистов, а кто-то и вовсе домашних кошек. Каждый из этих проектов актуален в своей сфере и может быть использован для того, чтобы что-то усовершенствовать в привычном ходе работы. Датасет с котиками, например, поможет судьям на выставках. Датасеты, которые необходимо было собрать студентам, должны были представлять собой MVP (таблица, json или структура каталогов), данные должны быть очищены и проанализированы. Посмотрим же, что у них получилось.



Датасет 1: Скользим по музыкальным волнам с Data Surfers


Состав команды:

  • Плотников Кирилл project manager, разработка, документация.
  • Тарасов Дмитрий разработка, сбор данных, документация.
  • Шадрин Ярослав разработка, сбор данных.
  • Мерзликин Артём product manager, презентация.
  • Колесниченко Ксения предварительный анализ данных.

В рамках участия в хакатоне участниками команды было предложено несколько различных интересных идей, но мы решили остановиться на сборе данных о российских музыкальных исполнителях и их лучших треках с ресурсов Spotify и MusicBrainz.

Spotify музыкальная платформа, пришедшая в Россию не так давно, но уже активно захватывающая популярность на рынке. Кроме того, с точки зрения анализа данных, Spotify предоставляет очень удобное API с возможностью запроса большого количества данных, в том числе их собственных метрик, например таких, как danceability показатель от 0 до 1, описывающий, насколько трек подходит для танцев.

MusicBrainz это музыкальная энциклопедия, содержащая максимально полную информацию о существующих и существовавших музыкальных коллективах. Своего рода музыкальная википедия. Данные с этого ресурса нам были необходимы для того, чтобы получить список всех исполнителей из России.

Сбор данных об артистах


Мы собрали целую таблицу, содержащую 14363 уникальных записи о различных исполнителях. Чтобы в ней было удобно ориентироваться под спойлером описание полей таблицы.

Описание полей таблицы
artist имя артиста или название группы;
musicbrainz_id уникальный идентификатор артиста в музыкальной базе данных Musicbrainz;
spotify_id уникальный идентификатор артиста в стриминговом сервисе Spotify, если он там представлен;
type тип исполнителя, может принимать значения Person, Group, Other, Orchestra, Choir или Character;
followers количество подписчиков артиста на Spotify;
genres музыкальные жанры артиста;
popularity индекс популярности артиста на Spotify от 0 до 100, который рассчитывается на основе популярности всех треков артиста.


Пример записи

Поля artist, musicbrainz_id и type извлекаем из музыкальной базы данных Musicbrainz, так как там есть возможность получить список артистов, связанных с одной страной. Извлечь эти данные можно двумя способами:

  1. Постранично парсить раздел Artists на странице с информацией о России.
  2. Достать данные через API.
    Документация MusicBrainz API
    Документация MusicBrainz API Search
    Пример запроса GET на musicbrainz.org

В ходе работы выяснилось, что API MusicBrainz не совсем корректно отвечает на запрос с параметром Area:Russia, скрывая от нас тех исполнителей, у кого в поле Area указано, например, Izhevsk или Moskva. Поэтому данные с MusicBrainz были взяты парсером непосредственно с сайта. Ниже пример страницы, откуда парсились данные.


Полученные данные об артистах из Musicbrainz.

Остальные поля получаем в результате GET запросов к эндпоинту.При отправке запроса в значении параметра q указываем имя артиста, а в значении параметра type указываем artist.

Сбор данных о популярных треках


Таблица содержит 44473 записи о самых популярных треках российских артистов, представленных в таблице выше. Под спойлером описание полей таблицы.

Описание полей таблицы
artist имя артиста или название группы;
artist_spotify_id уникальный идентификатор артиста в стриминговом сервисе Spotify (по нему можно будет джойнить таблицы, так как это spotify_id из таблицы с артистами);
name название трека;
spotify_id уникальный идентификатор трека в стриминговом сервисе Spotify;
duration_ms длительность трека в миллисекундах;
explicit содержит ли текст трека нецензурные выражения, может принимать значения true или false;
popularity индекс популярности трека на Spotify *;
album_type тип альбома, может принимать значения album, single или compilation;
album_name название альбома;
album_spotify_id уникальный идентификатор альбома в стриминговом сервисе Spotify;
release_date дата выхода альбома;
album_popularity индекс популярности альбома на Spotify.

Особенности аудио
key предполагаемая общая тональность трека, целые числа накладываются на нотацию звуковысотных классов, 0 = C, 1 = C/D, 2 = D и т.д.;
mode указывает модальность трека, мажор 1, минор 0;
time_signature предполагаемый общий тактовый размер композиции;
acousticness мера достоверности от 0,0 до 1,0 того, является ли трек акустическим;
danceability описывает, насколько трек подходит для танцев от 0,0 до 1,0;
energy представляет собой перцептивную меру интенсивности и активности от 0,0 до 1,0;
instrumentalness определяет, содержит ли трек вокал, принимает значения от 0,0 до 1.0;
liveness определяет присутствие аудитории при записи, принимает значения от 0,0 до 1,0;
loudness общая громкость трека в децибелах, типичный диапазон значений от -60 до 0 дБ;
speechiness определяет наличие произнесённых слов в треке, принимает значения от 0,0 до 1,0;
valence описывает музыкальную позитивность, передаваемую треком, принимает значения от 0,0 до 1,0;
tempo предполагаемый общий темп трека в ударах в минуту.

Подробно о каждом параметре можно прочитать здесь.


Пример записи

Поля name, spotify_id, duration_ms, explicit, popularity, album_type, album_name, album_spotify_id, release_date получаем с помощью GET запроса на https://api.spotify.com/v1//v1/artists/{id}/top-tracks , указывая в качестве значения параметра id Spotify ID артиста, который мы получили ранее, а в значении параметра market указываем RU. Документация.

Поле album_popularity можно получить, сделав GET запрос на https://api.spotify.com/v1/albums/{id}, указав album_spotify_id, полученный ранее, в качестве значения для параметра id. Документация.

В результате получаем данные о лучших треках артистов из Spotify. Теперь задача получить особенности аудио. Сделать это можно двумя способами:

  1. Для получения данных об одном треке нужно сделать GET-запрос на https://api.spotify.com/v1/audio-features/{id}, указав его Spotify ID как значение параметра id. Документация.
  2. Чтобы получить данные о нескольких треках сразу, следует отправить GET запрос на https://api.spotify.com/v1/audio-features, передавая Spotify ID этих треков через запятую как значение для параметра ids. Документация.

Все скрипты находятся в репозитории по этой ссылке.

После сбора данных мы провели предварительный анализ, визуализация которого представлена ниже.



Итоги


В результате у нас получилось собрать данные по 14363 артистам и 44473 трекам. Объединив данные из MusicBrainz и Spotify, мы получили наиболее полный на текущий момент набор данных о всех российских музыкальных исполнителях, представленных на платформе Spotify.

Такой датасет позволит создавать B2B и B2C продукты в музыкальной сфере. Например, системы рекомендаций промоутерам исполнителей, концерт которых можно организовать, или системы помощи молодым исполнителям в написании треков, которые с большей вероятностью станут популярными. Также при регулярном пополнении датасета свежими данными можно анализировать различные тенденции в музыкальной индустрии, такие как формирование и рост популярности определённых трендов в музыке, либо проводить анализ отдельных исполнителей. Сам датасет можно посмотреть на GitHub.

Датасет 2: Исследуем рынок вакансий и выявляем ключевые навыки с Ежу понятно


Состав команды:

  • Пшеничный Андрей сбор и обработка данных, написание аналитической записки о датасете.
  • Кондратёнок Павел Product Manager, сбор данных и описание его процесса, GitHub.
  • Щербакова Светлана сбор и обработка данных.
  • Евсеева Оксана подготовка итоговой презентации проекта.
  • Елфимова Анна Project Manager.

Для своего датасета мы выбрали идею сбора данных о вакансиях в России из сферы IT и Телеком с сайта hh.ru за октябрь 2020 года.

Сбор данных о скилах


Самым важным показателем для всех категорий пользователей являются ключевые навыки. Однако при их анализе у нас возникли трудности: эйчары при заполнении данных о вакансии выбирают ключевые навыки из списка, а также могут вносить их вручную, а следовательно, в наш датасет попало большое количество дублирующих навыков и некорректных навыков (например, мы столкнулись с названием ключевого навыка 0,4 Кb). Есть ещё одна трудность, которая доставила проблем при анализе получившегося датасета, только около половины вакансий содержат данные о заработной плате, но мы можем использовать средние показатели о заработной плате с другого ресурса (например, с ресурсов Мой круг или Хабр.Карьера).

Начали с получения данных и их глубинного анализа. Далее мы произвели выборку данных, то есть отобрали признаки (features или, иначе, предикторы) и объекты с учетом их релевантности для целей Data Mining, качества и технических ограничений (объема и типа).

Здесь нам помог анализ частоты упоминания навыков в тегах требуемых навыков в описании вакансии, какие характеристики вакансии влияют на предлагаемое вознаграждение. При этом было выявлено 8915 ключевых навыков. Ниже представлена диаграмма с 10 наиболее популярными ключевыми навыками и частотой их упоминания.


Наиболее часто встречающиеся ключевые навыки в вакансиях из сферы IT, Телеком

Данные получили с сайта hh.ru с помощью их API. Код для выгрузки данных можно найти тут. Вручную выбрали признаки, которые нам необходимы для датасета. Структуру и тип собираемых данных можно увидеть в описании документации к датасету.

После этих манипуляций мы получили Dataset размером 34 513 строк. Образец собранных данных вы можете увидеть ниже, а также найти по ссылке.


Образец собранных данных

Итоги


В результате получился датасет, с помощью которого можно узнать, какие навыки являются самыми востребованными среди IT специалистов по разным направлениям, и он может быть полезен для соискателей (как для начинающих, так и для опытных), работодателей, hr-специалистов, образовательных организаций и организаторов конференций. В процессе сбора данных были и трудности: слишком много признаков и они написаны на низкоформализируемом языке (описание навыков для кандидата), половина вакансий не имеет открытых данных о заработной плате. Сам датасет можно глянуть на GitHub.

Датасет 3: Наслаждаемся многообразием котиков с Команда AA


Состав команды:

  • Евгений Иванов разработка веб-скрапера.
  • Сергей Гурылёв product manager, описание процесса разработки, GitHub.
  • Юлия Черганова подготовка презентации проекта, анализ данных.
  • Елена Терещенко подготовка данных, анализ данных.
  • Юрий Котеленко project manager, документация, презентация проекта.

Датасет, посвящённый котам? Да почему бы и нет, подумали мы. Наш котосет содержит образцы изображений, на которых сфотографированы кошки различных пород.

Сбор данных о котиках


Изначально для сбора данных мы выбрали сайт catfishes.ru, он обладает всеми нужными нам преимуществами: это свободный источник с простой структурой HTML и качественными изображениями. Несмотря на преимущества этого сайта, он имел существенный недостаток малое количество фотографий в целом (около 500 по всем породам) и малое количество изображений каждой породы. Поэтому мы выбрали другой сайт lapkins.ru.




Из-за чуть более сложной структуры HTML скрапить второй сайт было несколько сложнее первого, но разобраться в структуре HTML было легко. В итоге нам удалось собрать со второго сайта уже 2600 фотографий всех пород.
Нам не потребовалось даже фильтровать данные, так как фотографии кошек на сайте хорошего качества и соответствуют породам.

Для сбора изображений с сайта нами был написан веб-скрапер. Сайт содержит страницу lapkins.ru/cat со списком всех пород. Сделав парсинг этой страницы, мы получили названия всех пород и ссылки на страницу каждой породы. Итеративно пройдя в цикле по каждой из пород, мы получили все изображения и сложили их в соответствующие папки. Код скрапера был реализован на Python с использованием следующих библиотек:

  • urllib: функции для работы с URL;
  • html: функции для обработки XML и HTML;
  • Shutil: функции высокого уровня для обработки файлов, групп файлов и папок;
  • OS: функции для работы с операционной системой.

Для работы с тегами мы использовали XPath.



Каталог Cats_lapkins содержит папки, названия которых соответствуют названиям пород кошек. Репозиторий содержит 64 каталога для каждой породы. Всего в датасете содержатся 2600 изображений. Все изображения представлены в формате .jpg. Формат названия файлов: например Абиссинская кошка 2.jpg, вначале идёт название породы, затем число порядковый номер образца.



Итоги


Такой датасет может, например, использоваться для обучения моделей, классифицирующих домашних кошек по породам. Собранные данные могут быть использованы для следующих целей: определение особенностей по уходу за котом, подбор подходящего рациона для кошек определённых пород, а также оптимизация первичной идентификации породы на выставках и при судействе. Также котосет может использоваться и бизнесом ветеринарными клиниками и производителями кормов. Сам котосет находится в свободном доступе на GitHub.

Послесловие


По итогам дататона наши студенты получили первый кейс в своё портфолио дата-сайентиста и обратную связь по работе от менторов из таких компаний, как Huawei, Лаборатория Касперского, Align Technology, Auriga, Intellivision, Wrike, Мерлин АИ. Дататон был полезен ещё и тем, что прокачал сразу и профильные хард- и софт-скилы, которые понадобятся будущим дата-сайентистам, когда они будут работать уже в реальных командах. Также это хорошая возможность для взаимного обмена знаниями, так как у каждого студента разный бэкграунд и, соответственно, свой взгляд на задачу и её возможное решение. Можно с уверенностью сказать, что без подобных практических работ, похожих на какие-то уже существующие бизнес-задачи, подготовка специалистов в современном мире просто немыслима.

Узнать больше про нашу магистратуру можно на сайте data.misis.ru и в Telegram канале.

Ну, и, конечно, не магистратурой единой! Хотите узнать больше про Data Science, машинное и глубокое обучение заглядывайте к нам на соответствующие курсы, будет непросто, но увлекательно. А промокод HABR поможет в стремлении освоить новое, добавив 10 % к скидке на баннере.



image



Источник: habr.com
К списку статей
Опубликовано: 11.02.2021 18:04:31
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Блог компании skillfactory

Data mining

Big data

Хакатоны

Data engineering

Skillfactory

Датасет

Биг дата

Хакатон

Данные

Открытые данные

Магистратура

Мисис

Data science

Data scientist

Hackathon

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru