Полу-контролируемый анализ настроений моих самых популярных песен на Spotify.

Несколько недель назад я написал статью о том, как получить текст любого плейлиста Spotify с помощью всего пары строк кода. В течение последних 2 лет Spotify проводил умную маркетинговую кампанию, в рамках которой составлял плейлист из 100 ваших лучших исполняемых песен за год. Обычно это происходит в социальных сетях, когда люди делятся тем, чем они кивают и поют в душе последние 365 дней. Я подумал, что это будет идеальный плейлист для меня, чтобы попробовать некоторый частично контролируемый анализ сантиментов и, надеюсь, обнаружить некоторые интересные истины о моих собственных привычках слушания.

nltk.sentiment.vader

Словарь валентности и анализатор (VADER)

Что это.

VADER - это модуль в nltk.sentiment библиотеке Python, который был специально создан для работы с текстом, созданным в настройках социальных сетей, однако он, конечно же, работает с языком, возникшим в других контекстах. VADER может определять полярность настроений (как положительных, так и отрицательных) данного фрагмента текста, когда анализируемые данные не помечены. В традиционном анализе настроений алгоритму предоставляется возможность учиться на помеченных обучающих данных. Классический пример - это прогнозирование звездного рейтинга обзора фильма на основе письменного отзыва данного критика. Рейтинг в звездах будет целевой переменной, а текст - переменными-предикторами.

При сантимент-анализе текстов песен у нас нет никаких обозначений. Тексты песен не оцениваются по шкале от 0 до 10 (0 - отрицательно, 10 - положительно). Так как же тогда VADER может измерить настроения?

VADER использует лексику слов, связанных с тональностью, для определения общей тональности данного текста. Ниже приведен пример структуры лексики, в которой каждое слово имеет рейтинг валентности:

VADER построил этот маркированный лексикон с помощью Amazon Mechanical Turk, краудсорсинговой платформы, которая платит «краудворкерам» за массовое выполнение задач, что привело к впечатляюще эффективному методу для этого.

Предварительная обработка. Неа.

Невероятная особенность VADER заключается в том, что он не требует большой предварительной обработки для работы. В отличие от некоторых контролируемых методов НЛП, предварительная обработка, такая как токенизация и стемминг / лемматизация, не требуется. Вы можете вставить любой текст, и он определит настроение.

VADER даже достаточно умен, чтобы понимать значение нестандартного текста, включая смайлики (например :-(), заглавные буквы (например, грустный против SAD) и расширенную пунктуацию (например? Vs ???). Это то, что делает модуль таким хорошо анализирует текст в социальных сетях. Кроме того, VADER автоматически удаляет стоп-слова, поэтому нет необходимости делать это самостоятельно.

Работа с VADER

Мы можем использовать pip install nltk в командной строке, чтобы установить библиотеку на наше устройство. Затем нам нужно импортировать VADER в нашу среду программирования, используя первую строку кода, вырезанного ниже.

Затем мы можем инициализировать объект анализа тональности и использовать метод polarity_scores() для определения тональности строки. Результатом этого являются четыре нормализованных результата:

  1. {‘Neu’: 0–1} - насколько нейтральным было утверждение.
  2. {‘Neg’: 0–1} - насколько отрицательным было утверждение.
  3. {‘Pos’: 0–1} - насколько положительным было утверждение.
  4. {‘Complex’: -1–1} - общая тональность высказывания.

Мой музыкальный вкус 2019

Давай перейдем к делу. Из 100 моих самых популярных песен в прошлом году в 66 были тексты, которые я смог получить с помощью методов, описанных в одной из моих предыдущих статей (значительная часть моей музыкальной библиотеки - электронная и не содержит лирических элементов).

На графике ниже показано «количество» позитивного и негативного в текстах каждой песни. Песни, в которых больше позитивности, чем негативности, будут иметь положительный составной балл и, следовательно, иметь положительное настроение, и наоборот.

К моему удивлению, 45 (68%) песен были сочтены позитивными. Вступая в этот анализ, я ожидал, что большинство моих песен будут иметь негативные настроения.

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

Забегая вперед, будет интересно увидеть, как с годами меняются мои слуховые привычки. К сожалению, Spotify предлагал своим пользователям только плейлист с их 100 самыми популярными песнями за последние два года, но когда появится больше данных, я думаю, что можно провести некоторый интересный анализ. Особенно, если бы он включил собственные рейтинги Spotify песен по таким показателям, как «танцевальность» и «энергия», которые доступны через их API.

Спасибо, что дочитали до этого места! Надеюсь, вам понравилось это краткое введение в VADER, и вы можете попробовать его на своих собственных наборах данных. Я хотел бы услышать, чем вы занимаетесь в комментариях. Если вы хотите связаться со мной напрямую, оставьте мне сообщение в LinkedIn.