
Salad Days by Mac DeMarco
Описание проекта
Mac DeMarco — заметная фигура современной инди-сцены, чьё творчество сочетает нарочито простую, расслабленную эстетику с чёткой авторской интонацией. Его музыка часто описывается как «slacker rock»: неторопливое звучание, ло-файная теплотa и лёгкая самоирония, за которыми скрывается внимательное отношение к личному опыту и эмоциональным состояниям.
Лирика Mac DeMarco носит дневниковый, интимный характер. В текстах регулярно появляются темы любви, одиночества, взросления и повседневных привычек, поданные через простые и повторяющиеся образы. За внешней непритязательностью таких текстов скрывается устойчивая эмоциональная структура, что делает их особенно интересными для лингвистического и статистического анализа.
Именно поэтому в фокус моего исследования попал Mac DeMarco. Помимо аналитического интереса, этот выбор во многом личный: его музыка для меня особенно ценна — песни Mac DeMarco всегда помогают успокоиться, замедлиться и расслабиться. Эта эмоциональная близость к материалу делает анализ не только исследовательским, но и осознанным, позволяя глубже вникнуть в лексические и эмоциональные особенности его текстов.

Обложки популярных альбомов Mac DeMarco
В качестве визуального решения я использовала обложку альбома Salad Days как колористический ориентир. Из обложки был извлечён основной набор цветов с помощью Adobe Color.
В цветовую палитру вошли основные оттенки: 323F59, 5A758C, D7D9D7, 8C6C5A, которые применялись для оформления графиков, фона и ключевых визуальных элементов. Второстепенные нейтральные цвета использовались для текста и подписей, чтобы обеспечить контраст и читаемость.


Цветовая палитра.
Сбор данных Подготовка датасета
Первым шагом в проекте стало формирование корпуса текстов песен Mac DeMarco, с которым дальше можно было работать: анализировать лексику, структуру и эмоциональную окраску композиций. Для этого было важно получить достаточно большой и одновременно осмысленный набор данных, а не случайную выборку.
С помощью Genius API я загрузила тексты 120 самых популярных песен Mac DeMarco, отсортированных по популярности на платформе. Для автоматизации процесса был написан скрипт genius_script.py, который позволил получить данные напрямую из базы Genius без ручного вмешательства. Для каждой композиции сохранялись название песни и полный текст.
Инициализация и настройка Genius API
Ключевой этап предварительной обработки текста Расчет трех ключевых метрик для анализа Обработка пропусков в метаданных
Полученные тексты требовали предварительной обработки. На этом этапе я привела их к читаемому и унифицированному виду: удалила переносы строк, лишние пробелы и другие элементы, которые могли помешать дальнейшему анализу. Такая базовая очистка была необходима для корректного подсчёта текстовых метрик и последующей работы с данными.
Уже на этапе сбора данных я рассчитала несколько первичных количественных показателей, которые помогают описать структуру текстов песен. Для каждой композиции были посчитаны количество слов, количество символов, число уникальных слов, а также коэффициент лексического разнообразия — отношение количества уникальных слов к общему числу слов в тексте. Эти параметры дают первое представление о насыщенности и вариативности языка, используемого Mac DeMarco.
Первый вариант датасета после скрипта genius_script.py
После этого я занялась уточнением метаданных. Часть песен имела неполную информацию об альбомах и годах выпуска, что мешало анализировать дискографию и сравнивать композиции между собой. Но я столкнулась с проблемой неполных данных: некоторые альбомы отсутствовали в Genius API. Решением стало использование двух источников — Genius и Spotify — чтобы максимально покрыть все альбомы. С помощью Spotify API и скрипта spotify_script.py для песен с неизвестными альбомами был выполнен поиск по названию трека и имени артиста. В результате для большинства композиций удалось определить корректный альбом и год релиза.
Некоторые песни, которые не удалось сопоставить со Spotify, оказались каверами или композициями без текста, поэтому они были исключены из выборки. В итоге был сформирован очищенный и обогащённый датасет mac_demarco_lyrics.csv, содержащий тексты 103 песен, в котором для большинства треков указаны корректные альбомы и годы выпуска.
Инициализация Spotify API и обогащение данных через API
Обновленный вариант датасета после скрипта spotify_script.py
Для автоматической проверки итогового датасета я написала скрипт data_checking.py. Он проверял все элементы датасета на наличие всех данных. В консоль выводились итоги проверки, а также минимальный анализ датасета.
1. Загрузка данных и вывод общей информации 2. Валидация данных (поиск дубликатов и пустых значений)
Выведенная в консоль информация
Таким образом, на этапе подготовки был получен репрезентативный и качественный корпус данных, готовый для дальнейшего анализа лексики, структуры и эмоциональной окраски песен Mac DeMarco.
Для этого я использовала следующие библиотеки: lyricsgenius и spotipy для работы с API, pandas для обработки табличных данных, numpy для численных операций, textblob для анализа тональности текстов, а также collections.Counter для подсчёта частоты слов.
Анализ данных (analysis.py)
Настройка импортов и загрузка данных
Анализ тональности. Частотный анализ. Очистка от стоп-слов и подсчет оставшихся. Агрегация данных. Группировка датасета, вычисление ср. значений ключевых метрик. Временной анализ.
Корреляционный анализ и сохранение данных для визуализации.
Итоговые графики
После завершения анализа текстов песен Mac DeMarco, выполненного с помощью скрипта analysis.py, мы получили расширенный датасет с количественными показателями: длина текста, число уникальных слов, лексическое разнообразие, тональность и категория тональности (Positive/Negative/Neutral). Дополнительно была сформирована статистика по альбомам, по годам выпуска и корреляционная матрица между метриками.
На основе этих данных были созданы визуализации, которые позволяют сразу увидеть закономерности и ключевые особенности текстов. Для всех графиков использовалась единая цветовая палитра: тёмно-коричневый (26171B) для текста, синий (323F59) и серо-голубой (5A758C) для графиков, светло-серый (D7D9D7) для фона и коричневый (8C6C5A) для акцентов.
Следующим шагом стало формирование визуализаций, которые позволили бы лучше понять закономерности в текстах песен Mac DeMarco. Для расширения представлений о возможных графиках я обратилась к Chat GPT-4 с просьбой предложить интересные идеи на основе имеющихся данных — текстов песен, информации об альбомах и годах выпуска, а также рассчитанных базовых метрик, таких как количество слов, уникальные слова и коэффициент лексического разнообразия.
В ответ я получила ряд рекомендаций, которые вдохновили меня на создание финальных визуализаций.
«𝘐 𝘩𝘢𝘷𝘦 𝘢 𝘥𝘢𝘵𝘢𝘴𝘦𝘵 𝘰𝘧 𝘔𝘢𝘤 𝘋𝘦𝘔𝘢𝘳𝘤𝘰 𝘴𝘰𝘯𝘨𝘴, 𝘪𝘯𝘤𝘭𝘶𝘥𝘪𝘯𝘨 𝘭𝘺𝘳𝘪𝘤𝘴, 𝘢𝘭𝘣𝘶𝘮 𝘳𝘦𝘭𝘦𝘢𝘴𝘦 𝘺𝘦𝘢𝘳, 𝘢𝘯𝘥 𝘚𝘱𝘰𝘵𝘪𝘧𝘺 𝘱𝘢𝘳𝘢𝘮𝘦𝘵𝘦𝘳𝘴 𝘴𝘶𝘤𝘩 𝘢𝘴 𝘭𝘰𝘶𝘥𝘯𝘦𝘴𝘴, 𝘥𝘢𝘯𝘤𝘦𝘢𝘣𝘪𝘭𝘪𝘵𝘺, 𝘦𝘯𝘦𝘳𝘨𝘺, 𝘢𝘯𝘥 𝘷𝘢𝘭𝘦𝘯𝘤𝘦. 𝘚𝘶𝘨𝘨𝘦𝘴𝘵 𝘪𝘯𝘵𝘦𝘳𝘦𝘴𝘵𝘪𝘯𝘨 𝘷𝘪𝘴𝘶𝘢𝘭𝘪𝘻𝘢𝘵𝘪𝘰𝘯𝘴 𝘵𝘩𝘢𝘵 𝘤𝘰𝘶𝘭𝘥 𝘳𝘦𝘷𝘦𝘢𝘭 𝘱𝘢𝘵𝘵𝘦𝘳𝘯𝘴 𝘪𝘯 𝘸𝘰𝘳𝘥 𝘶𝘴𝘢𝘨𝘦, 𝘦𝘮𝘰𝘵𝘪𝘰𝘯𝘢𝘭 𝘵𝘰𝘯𝘦, 𝘢𝘯𝘥 𝘮𝘶𝘴𝘪𝘤𝘢𝘭 𝘤𝘩𝘢𝘳𝘢𝘤𝘵𝘦𝘳𝘪𝘴𝘵𝘪𝘤𝘴, 𝘢𝘯𝘥 𝘳𝘦𝘤𝘰𝘮𝘮𝘦𝘯𝘥 𝘤𝘰𝘮𝘱𝘢𝘳𝘪𝘴𝘰𝘯𝘴 𝘣𝘦𝘵𝘸𝘦𝘦𝘯 𝘢𝘭𝘣𝘶𝘮𝘴.»
График № 1. — частотность слов в песнях Mac DeMarco (Word Cloud)
Для визуализации наиболее частых слов в текстах Mac DeMarco я использовала библиотеку wordcloud вместе с matplotlib для отображения и сохранения изображения. Тексты песен были объединены в единый корпус, очищены от стоп-слов и приведены к нижнему регистру. Для подсчёта частоты слов я использовала collections.Counter, а с помощью numpy генерировала случайные цвета из выбранной палитры. На облаке слов наиболее часто встречаются слова love, baby, heart, honey, still, just, что отражает романтическую и эмоциональную направленность текстов.
Но я столкнулась с проблемой: в исходном тексте попадалось много стоп-слов, поэтому я создала расширенный список из 100+ стоп-слов, чтобы они не мешали анализу.
Облако частотности слов в песнях MacDeMarco
Отрывок кода для облака слов
График № 2. — распределение тональности по альбомам (Box Plot)
Чтобы показать, как распределяется эмоциональная окраска песен по альбомам, я использовала seaborn для построения box plot и matplotlib для настройки внешнего вида графика. Для расчёта тональности я применяла textblob, а обработку и группировку данных по альбомам выполняла с помощью pandas. Этот график позволяет увидеть, какой альбом более позитивный, а какой — меланхоличный.
Была проблема с тем, что textblob иногда не улавливает иронию и контекст, поэтому я использовала его как базовый инструмент для общей картины тональности.
Распределение тональности текстов по альбомам
Фрагмент кода для распределение тональности по альбомам. Полный код можно найти на диске.
График № 3. — корреляционная матрица (Heatmap)
Для наглядного анализа взаимосвязей между метриками (количество слов, уникальные слова, лексическое разнообразие и тональность) я построила тепловую карту с помощью seaborn и оформила её через matplotlib. Расчёты корреляций выполняла с помощью pandas.
График показывает сильные и слабые связи между характеристиками текстов, например, высокую корреляцию между количеством слов и уникальными словами.
Корреляционная матрица характеристик текстов
Отрывок кода для корреляционная матрицы. Полный код можно найти на диске.
График № 4. — корреляция между метриками (Scatter Plot)
Точечные диаграммы показывают взаимосвязь между длиной песни, лексическим разнообразием и тональностью. Для построения графиков я использовала matplotlib и seaborn, а данные для анализа подготовила с помощью pandas. Цвет точек отражает год выпуска песен, что позволяет видеть изменение зависимости во времени. Здесь также применялся numpy для работы с координатами и цветовыми градиентами.
Но я столкнулась с проблемой: при сборе данных через API иногда возникали лимиты запросов. Я решила это, добавив паузы между запросами и обработку ошибок.
Корелляция между характеристиками текстов
Эволюция характеристик текстов Mac DeMarco во времени
Отрывок кода для графика эволюции метрик по годам. Полный код можно найти на диске.
График № 5. — частотность слов в песнях Mac DeMarco
Для создания сравнительного анализа альбомов я использовала pandas для группировки данных по альбомам и расчёта ключевых метрик: средняя длина песен, среднее количество уникальных слов, средняя тональность и количество песен в альбоме. Визуализация выполнена с помощью matplotlib и seaborn, чтобы наглядно сравнить альбомы по нескольким параметрам одновременно.
На графике видно, что по средней длине песен лидирует альбом Simply Paradise, на втором месте — Still What I’m Looking For, а третье место занимает Five Easy Hot Dogs. Наименьшая средняя длина песен в альбоме 2 Demos.
Размер словаря по альбомам демонстрирует схожую тенденцию: Simply Paradise на первом месте, за ним следуют Still What I’m Looking For и Five Easy Hot Dogs, а минимальный показатель у 2 Demos.
Эмоциональная окраска показывает, что наиболее «позитивным» по среднему значению тональности оказался альбом 2 Demos, тогда как наименее эмоционально окрашенным оказался альбом Live and Acoustic Vol. 1.
По количеству песен лидирует альбом One Wayne G, на втором месте идут Guitar и Salad Days, а минимальное количество песен зафиксировано у альбомов Five Easy Hot Dogs, Still What I’m Looking For и Simply Paradise.
Сравнительный анализ альбомов Mac Demarco
Отрывок кода для сравнительный анализа. Метрики по альбомам.
График № 6. — распределение эмоциональной окраски песен (Pie Chart)
Для отображения процентного соотношения позитивных, нейтральных и негативных песен я использовала matplotlib. Данные о категориях тональности были подготовлены с помощью pandas на основе рассчитанных метрик sentiment и sentiment_category от textblob.
На диаграмме видно, что большинство песен нейтральные или слегка позитивные, что отражает характерный стиль Mac DeMarco.
Распределение эмоциональной окраски песен Mac DeMarco
Отрывок кода для итоговое распределение тональности текстов.
Заключение
Исследование текстов песен Mac DeMarco показало, что его творчество характеризуется лёгкой, романтической и эмоционально окрашенной лексикой. Этот тезис подтверждается как анализом частотности слов (love, baby, heart, honey, still, just), так и исследованием тональности текстов с помощью textblob.
Была выявлена динамика изменения характеристик песен по годам: длины текстов, лексического разнообразия и эмоциональной окраски. Сравнительный анализ альбомов показал, что по средней длине и разнообразию слов лидирует альбом Simply Paradise, а наибольшая «позитивность» наблюдается в альбоме 2 Demos. При этом наибольшее количество песен сосредоточено в альбоме One Wayne G.
Таким образом, можно утверждать, что песни Mac DeMarco сохраняют узнаваемый стиль: тексты простые, эмоционально выразительные и отражают романтический настрой. Анализ подобных данных особенно полезен для дальнейших исследований музыкальной лексики, анализа настроений и разработки инструментов рекомендаций на основе текстового и музыкального контента.
Библиотеки
Для сбора данных:
lyricsgenius — работа с Genius API spotipy — работа со Spotify API
Для анализа данных:
pandas — обработка табличных данных textblob — NLP, sentiment analysis collections.Counter — подсчёт частоты слов
Для визуализации:
matplotlib — базовые графики seaborn — статистические визуализации wordcloud — облако слов numpy — численные операции
Описание применения генеративной модели
Adobe Color — генерация цветовой палитры и её редактирование на основе загруженного изображения. Chat GPT — обращения с вопросами по генерации инструкций и рекомендаций по улучшению кода, по использованию библиотек и корректной имплементации функций. Gemini 3 Pro — обращения для анализа данных и поиска идей для визуализаций. Claude — обращения для интерпретации результатов и составления текстовых описаний графиков.