Пару дней назад я наткнулся на этот пост об анализе текстов песен Тейлор Свифт и подумал, что это будет забавный проект, чтобы попробовать самому на выходных попрактиковаться в интеллектуальном анализе текста.

Для тех из вас, кто не знает, кто такие BTS, это корейская группа, которая взорвалась на Западе с тех пор, как стала первой группой Kpop, получившей награду Billboard Music Awards в 2017 году. Хотя я не АРМИ (как называют их фанаты), я отслеживал их релизы с момента дебюта, и мне очень понравился баланс между веселым, развлекательным аспектом их более коммерциализированных песен и социальными проблемами, которые они затрагивали - выходом из ... возрастная борьба, психическое здоровье, расширение прав и возможностей женщин и т. д. Их хорошо написанные тексты находят отклик у молодых людей, и я думаю, что это отчасти способствует их огромному международному успеху. Если нет, то посмотрите их последний сингл Idol (ft. Nicki Minaj!), Но мой личный фаворит из них - Whalien 52, в котором рассказывается о самом одиноком ките на Земле.

Сейчас, как случайный фанат, я не читаю (и не могу) читать и анализировать тексты всех их песен, поскольку у них огромная дискография (2013–2018 годы). Но мы можем использовать обработку естественного языка (НЛП) - область искусственного интеллекта (ИИ), которая анализирует данные естественного языка - для извлечения некоторой информации из коллекции текстов их песен. Приступим к пожару!

Преодоление данных

Добро

Я не работал со многими методами, которые буду использовать, но не бойтесь, потому что есть библиотеки с открытым исходным кодом почти для всего. Я думал, что мне придется почистить Интернет, чтобы найти их тексты, но, к счастью, кто-то уже написал для этого пакет, поэтому я последовал этому руководству, чтобы разместить все их песни на Genius.com.

Плохо

Их оригинальные тексты на да корейском языке. Я только научился работать с Unicode. Кроме того, работать с корейским очень сложно из-за сложности глагольных форм (которые мне еще предстоит освоить и не думаю, что когда-либо буду). Корейская лирика обычно очень отличается от формальной речи, скажем, в литературе; есть сленги и «неправильное» использование грамматики. Кроме того, существует проблема с сегментацией слов. Поэтому я подумал, что, работая с английскими переводами, будет легче извлечь правильную идею из текста. Учитывая огромную популярность BTS на Западе, нетрудно получить английские переводы на Genius, большинство из которых вполне приличны (я просмотрел пару песен, чтобы проверить, нет ли каких-либо серьезных ошибок в переводе в контексте). Итак, у нас есть сборник текстов, или корпус.

Уродливый

Очистка данных. Я не знал, что очистка данных займет столько времени. После удаления дублированных песен (ремиксов) у меня осталось в общей сложности 95 песен, что казалось примерно правильным. Однако сложность заключалась в том, чтобы определить, какие слова включать, потому что в английском языке есть множество слов, которые не влияют на общее значение текста, например «я», «вы». , "должен". Они известны как игнорируемые слова, и их следует исключить из корпуса. Я провел так много времени, перебирая все вау и да, прежде чем у меня наконец появился чистый корпус, с которым можно было поработать.

Визуализация

Сначала давайте посмотрим на одну песню. Ниже показано облако слов, созданное на основе песни «Best of Me». Это имеет смысл, потому что слова «получил» и «лучший» являются наиболее частыми, поскольку они повторяют фразу «ты получил от меня лучшее» на протяжении большей части песни.

А теперь давайте сделаем то же самое с остальными 94 песнями… Думаю, нет. Тем не менее, мы можем взглянуть на самые популярные слова во всех песнях. Вот результат.

Ладно, похоже, в целом их тексты говорят о любви, желании, времени, рэпе, мечтах, которые являются обычными темами в поп-песнях. Но действительно ли это отражает все темы в музыке BTS? Давайте копнем глубже.

Вложение слов

Одним из очень популярных методов интеллектуального анализа текста является использование word2vec для встраивания слов. Эта модель в основном берет большой текстовый корпус и отображает каждое слово в многомерное пространство. Всего с 95 песнями, которые составили около 3000 уникальных слов, я использовал только 50 измерений. Делая это, мы можем увидеть сходство между определенными словами, посмотрев на их расстояния в отображаемом пространстве. Но как мы можем видеть в 50-мерном пространстве? Мы можем визуализировать это, используя t-SNE, метод уменьшения размерности, который можно использовать для визуализации данных большой размерности в 2-D.

Глядя на это, мы можем понять, как слова связаны друг с другом. Чем больше они сгруппированы, тем больше они похожи по контексту. Давайте увеличим масштаб и взглянем на несколько слов.

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

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

Тематическое моделирование

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

Извлечение функций

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

Но в текстах песен одни слова повторяются чаще, чем другие, чтобы песня была более запоминающейся. Существует метод, который штрафует количество слов в словах, которые чаще встречаются в корпусе, поскольку эти слова могут не дать дальнейшего понимания тематики документов. Это называется tf-idf, и мы будем использовать его для извлечения функций.

Модели

При тематическом моделировании часто используются 2 алгоритма: неотрицательная матричная факторизация (NMF) и Скрытое распределение Дирихле (LDA). Оба принимают корпус текста и возвращают список слов, которые образуют разные темы, а также документы, принадлежащие определенной теме. Я избавлю вас от математических подробностей того, чем эти два метода отличаются друг от друга, и сразу перейду к результатам.

Как видите, темы, созданные NMF, были намного лучше, чем темы, созданные LDA. Это имеет смысл, потому что мы имеем дело с довольно небольшим корпусом, и у NMF обычно лучше получается в такой ситуации. Я немного доработал и решил остановиться на 9 общих темах (в том же порядке, что и результат выше): «Молодежь», «Развлечение», «BTS», «Любовь», «Свидания», «Потеря», « Социальные проблемы »,« Мечты »и« Одиночество ».

Из этих тем я построил график количества песен по каждой теме, сгруппированный по альбомам (упорядоченный по дате выпуска), чтобы увидеть, как музыка BTS изменилась за эти годы.

Начиная с их дебютного альбома, мы видим, что для первых двух альбомов было много песен о себе (много названий), что совершенно логично, потому что им нужно было, чтобы их имена были известны публике, И что может быть лучше, чем упоминание их имен в текстах песен? Затем, примерно в 2017 году, они внезапно стали массовыми после получения награды BBMA, поэтому необходимо, чтобы новые иностранные поклонники тоже запомнили свои имена, что объяснило бы пик к более поздним релизам.

Их тема «Свидания» достигает пика в эпохах «Skool Luv Affair» и «Dark & ​​Wild», что также имеет смысл, поскольку к тому времени они уже переживали период полового созревания и много пели о свиданиях / симпатиях к кому-то с известными песнями, такими как «Boy in Luv». , «Мисс Райт», «Гормональная война» и многие другие.

Темы Мечты, Молодость и Потеря кажутся преобладающими в течение года. Как я уже упоминал, BTS пишут свою музыку для молодого поколения, поэтому эти темы будут их больше всего беспокоить. То же самое и с Социальными проблемами, необычный пик которых пришелся на эпоху Крыльев, когда большинство слов, составляющих эту тему, были от 뱁새 (Серебряная ложка / Baepsae) ». Тем не менее, я обнаружил, что песни, связанные с этой темой в Wings, также отражают социальные проблемы, от Am I Wrong до 21st Century Girls.

Тема «Одиночество» кажется наиболее распространенной в трилогии «Люби себя», но также и «Любовь». Они завершили эту трилогию о любви альбомом, который связывает все вместе, что есть темные и печальные стороны жизни, любви, но окончательный ответ на все трудности, самое главное, - это любить себя, прежде всего. .

«Когда проходит зима, всегда приходит весна» - Ответ: Люби себя

Что еще?

Есть еще очень много вещей, которые я могу сделать с поиском текстов песен, например, провести анализ настроений, чтобы выяснить настроение каждой песни или каждого альбома. Исходя из этого, я также могу создать систему рекомендаций, чтобы предложить песню, которая соответствует моему настроению. Я могу моделировать темы, используя оригинальные корейские тексты песен (оказывается, есть доступные пакеты с открытым исходным кодом, такие как KoNLPy, которые были разработаны для обработки хангыля). Возможности безграничны. Но в целом я изучил массу новых техник, работая над тем, что мне нравится, получил много удовольствия и получил довольно интересные результаты.

Все коды для этого проекта можно найти здесь.