Введение и мотивация
Прежде всего, я большой поклонник JRE - это, наверное, единственный непрофессиональный подкаст, который я регулярно слушаю.
Во-вторых, сделка, которую он заключил со Spotify об отказе от Apple Podcasts и YouTube (стоимостью 100 миллионов долларов!), Стала для Spotify громким заявлением об их намерениях в отношении подкастов.
… А также огромные изменения для его фанатов. Я лично «смотрю» его подкаст исключительно на YouTube, так что это сильно помешает мне.
Интересно отметить, что всего пару дней назад (я уже начал писать это в то время) Spotify объявил, что запускает видеоподкасты, и они начинают с некоторых создателей, которые ранее не включали видео в своем подкасте. Может, они сделали это из-за фанатов JRE?
Как большой поклонник JRE, я уверен, что для Джо абсолютно невозможно просмотреть миллионы комментариев, обзоров, твитов, которые миллионы его фанатов постоянно пишут о подкасте.
Работая менеджером по продукту в приложениях для iOS и Android, я знаю, что Apple и Google не предоставляют никакого NLP-анализа полученных вами отзывов, поэтому вам нужно вручную читать их каждый день, чтобы хорошо понимать мнения, чувства, комментарии. и вопросы, которые публикуют ваши пользователи.
Таким образом, у меня есть мотивация изменить это, и я хочу помочь Джо понять, что его поклонники публикуют в Apple Podcasts!
1. Инструменты и процесс
a. Очистка данных: | Б. Очистка и предварительная обработка данных:
Так выглядят обзоры в Apple Podcasts
Чтобы понять, что и как я сделал для соскабливания, очистки и предварительной обработки данных, прочтите мой старый пост: ASOS: ИСПОЛЬЗОВАНИЕ МАШИННОГО ОБУЧЕНИЯ ДЛЯ ПОЛУЧЕНИЯ ДЕЙСТВУЮЩЕЙ ИНФОРМАЦИИ О ПРОДУКТЕ ИЗ ОТЗЫВОВ APP STORE ».
Я использую тот же уже встроенный скребок, но я добавил возможность очищать подкасты Apple. Я также отправил сообщение создателю парсера и предоставил ему код, который заставит парсер работать с Apple Podcasts, и он ответил, что собирается включить его - Ура!
Суммируя:
- Удаление пустых обзоров (потому что в Apple Podcasts вы можете просто присвоить звездный рейтинг, а не писать текстовый комментарий)
- Удалены нежелательные символы (@, #, $,%, &,.)
- Удалены стоп-слова («а», «и», «но», «или» и т. Д.).
- Сделал весь текст строчными буквами
- Лемматизация (ходьба - ›гулять, гулять -› гулять и т. Д.)
- Удалены обзоры короче 30 символов (не так много информации о обзорах с такой же длиной, как «отлично»).
В. Анализ данных
Как мы видим, у Джо Рогана в подавляющем большинстве положительные отзывы об Apple Podcasts - неудивительно, учитывая его огромную базу поклонников!
Ниже мы видим 20 самых популярных слов в его обзорах:
Вот как они выглядят как «мешок слов»:
Мне стало любопытно, почему так много говорится об изнасиловании, и, видимо, эта статья объясняет это:
2. Использование набора средств естественного языка (NLKT) и SentimentIntensityAnalyzer ()
Двигаясь вперед, я хотел сосредоточиться только на положительных отзывах, чтобы мы могли видеть, что нравится аудитории, поэтому я использую уже обученный SentimentIntensityAnalyzer (), который анализирует текст и возвращает значения от -1 до +1, чтобы показать, насколько отрицательно / положительно обзор есть.
Ниже приведены 20 наиболее часто используемых слов в положительных отзывах, представленных в виде столбчатой диаграммы и «мешка слов».
Используя набор слов, мы можем увидеть, что люди бросают 5-звездочный обзор подкастов Apple:
- Комедия, интересные гости, разговор о философии, разноплановые гости и разные мнения
3. Тематическое моделирование
Ни один из заинтересованных сторон не может ежедневно читать тысячи обзоров подкаста, приложения или продукта, чтобы получить общее представление о том, что думают об этом его клиенты. Хороший способ решить эту проблему - Тематическое моделирование.
Тематическое моделирование - это метод машинного обучения, который автоматически анализирует текстовые данные для определения слов кластера для набора документов.
Я собираюсь использовать Скрытое распределение Дирихле по следующим причинам:
- Легко реализовать на Python
- Вероятностная модель с интерпретируемыми темами и может работать с любым набором данных
- Он хорошо работает с небольшими объемами данных (такими как короткие обзоры на Apple Podcasts).
Недостатки:
- Нет объективного способа выбора гиперпараметров.
- Это не самый быстрый подход к тематическому моделированию.
Базовый LDA
Запуск базового LDA дает нам следующие 5 тем, по 10 основных слов на тему (поясняется ниже):
[(0, '0.058*"bad" + 0.040*"conspiracy" + 0.029*"theory" + 0.026*"star" + ' '0.022*"stupid" + 0.020*"annoying" + 0.020*"racist" + 0.018*"drug" + ' '0.015*"terrible" + 0.012*"idiot"'), (1, '0.020*"open" + 0.016*"country" + 0.014*"death" + 0.014*"sad" + 0.013*"jre" ' '+ 0.012*"minded" + 0.012*"medium" + 0.012*"dangerous" + 0.012*"self" + 0.011*"complete"'), (2, '0.048*"rape" + 0.026*"dumb" + 0.022*"well" + 0.017*"human" + 0.016*"fear" + ' '0.014*"ignorant" + 0.013*"next" + 0.013*"crap" + 0.012*"factor" + '0.011*"white"'), (3, '0.036*"man" + 0.017*"last" + 0.016*"big" + 0.014*"platform" + 0.013*"fan" + ' '0.013*"nonsense" + 0.012*"old" + 0.012*"woman" + 0.012*"hard" + ' '0.012*"poor"'), (4, '0.031*"people" + 0.027*"guest" + 0.024*"time" + 0.018*"show" + ' '0.017*"episode" + 0.016*"good" + 0.015*"thing" + 0.013*"guy" + 0.013*"day"+ 0.012*"life"')]
И дает нам следующее недоумение и последовательность (поясняется ниже):
Perplexity: -7.430625960051932 Coherence Score: 0.36507586388016394
Объяснение результатов:
* Цифры * перед словами показывают вес каждого слова в каждой теме. Так что на самом деле каждая тема содержит все слова во всех обзорах, однако они имеют разный вес.
Так, например, тема 1 имеет вес 0,58 для слова «плохо», слово «плохо» также присутствует в теме 5, но с весом 0,0001.
Количество слов на каждую отображаемую тему - это произвольное количество всех слов, ранжированных LDA, которые вы хотите увидеть. В моем случае я хочу, чтобы их было достаточно, чтобы получить полное представление о теме, но не слишком много, чтобы она стала бесполезной. Важно всегда обращать внимание на вес слов.
Например, в теме 1 - ›« 0,058 * «плохо» и 0,012 * «идиот». Плохое более чем в 4 раза важнее для темы, чем идиотское.
Что такое недоумение?
Он показывает, насколько модель удивлена новыми данными, которые она не видела раньше, и измеряется как нормализованная логарифмическая вероятность длительного набора тестов. * 1
Однако оптимизация для Perplexity обычно не приводит к понятным для человека результатам.
Что такое когерентность?
Из книги Интеллектуальная инженерия данных и автоматизированное обучение:
«Слаженность темы измеряет оценку отдельной темы путем измерения степени семантического сходства между высоко оцененными словами в теме».
Проще говоря, более высокая согласованность означает лучшие результаты.
Итак, в нашем случае мы хотим оптимизировать для Coherence.
4. Запуск 540 различных версий LDA, чтобы получить лучший результат Coherence
Чтобы преодолеть недостаток отсутствия объективного способа выбора гиперпараметров, я собираюсь запустить 540 различных версий LDA со всеми возможными вариациями, если параметры LDA
- Количество тем (K): от 2 до 10.
- Альфа гиперпараметра Дирихле: (плотность документа): 0,01, 1, 0,3
- Бета гиперпараметра Дирихле: (плотность слов): 0,01, 1, 0,3
А затем я собираюсь оценить все модели на основе согласованности и выбрать лучшую.
Использование сценария, который сделает все за меня и сохранит его в файле .csv - моему Macbook Pro 2017 года потребовалось около 5 часов, чтобы запустить все 540 вариантов LDA.
Фильтрация и сортировка данных, чтобы увидеть наиболее эффективный LDA и его параметры для всех номеров # тем (от 2 до 10):
Наивысшая согласованность обнаружена по 2 темам, за которыми следуют 7, а затем 4 и 8. Показатели согласованности варьируются от 0,54 до 0,57, что является значительным улучшением по сравнению с исходным уровнем с 0,36.
Поскольку разница между каждой лучшей моделью для любого количества тем очень минимальна, я проверил их все и сравнил межтематическое расстояние (насколько различимы темы):
После запуска всех моделей и расчета межтемного расстояния мы видим, что, хотя LDA хорошо улавливает нюансы в темах, гораздо более разумно выбрать 3 очень различимых темы вместо 3+, из которых темы по большей части будут перекрываться.
На основе этого я запускаю финальную модель, состоящую из 3-х тем со следующими параметрами:
- Количество тем: 3
- Альфа гиперпараметра Дирихле: асимметричный
- Бета гиперпараметра Дирихле: 0,1
Topic 1: '0.032*"guest" + 0.025*"good" + 0.020*"great" + 0.019*"time" + 0.019*"show" + 0.016*"episode" + 0.015*"interesting" + 0.015*"life" + 0.014*"day" + '0.013*"topic"'), Topic 2: '0.025*"people" + 0.012*"opinion" + 0.009*"open" + 0.009*"view" + '0.009*"right" + 0.008*"bad" + 0.007*"point" + 0.007*"question" + '0.006*"side" + 0.006*"minded"') Topic 3: '0.010*"woman" + 0.009*"eye" + 0.005*"boy" + 0.005*"fear" + 0.005*"money" + '0.004*"deal" + 0.004*"hater" + 0.004*"industry" + 0.004*"air" + '0.004*"mouth"')]
Теперь, поскольку темы с точки зрения ключевых слов не совсем удобочитаемы, я решил упростить понимание и «прогнал модель» в обратном направлении, назначив темы для каждого обзора. После назначения тем я сортирую все обзоры и выбираю наиболее представительный обзор по каждой теме.
Тема 1: «Мне это нравится, но…»
'0.032*"guest" + 0.025*"good" + 0.020*"great" + 0.019*"time" + '0.019*"show" + 0.016*"episode" + 0.015*"interesting" + 0.015*"life" + 0.014*"day" + '0.013*"topic"'),
Три лучших отзыва по этой теме
- Отзыв №1 → 98,8%
Это был отличный подкаст, который помогает человеку, которому нужна информация о том, как улучшить свой разум и тело. Однако Джо Роган и его политические гости обычно являются исламафобами, а сам Роган практически не проявляет сочувствия к мусульманам или правозащитным организациям и, похоже, не хочет гостей, которые будут защищать ислам или высказывать свое мнение.
2. Отзыв №2 → 98,4%
Больше никогда Питер Шифф, что парень так раздражает и не умеет разговаривать. Он просто выплевывал тирады и не оставлял разговоров с Джо. Даже не рассматривал полностью идеи Джо и не рассматривал их полностью.
3. Отзыв № 3 → 98,3%
Сейчас я слушаю JRE больше, чем музыку, и что мне больше всего нравится в нем, - диапазон тем, которые он освещает, и ему удается все еще уметь развлекать все темы.
Тема 2: «Самые большие поклонники»
'0.025*"people" + 0.012*"opinion" + 0.009*"open" + 0.009*"view" + '0.009*"right" + 0.008*"bad" + 0.007*"point" + 0.007*"question" + '0.006*"side" + 0.006*"minded"')
Три лучших отзыва по этой теме
- Отзыв №1 → 97,6%
Самый развлекательный, мотивирующий и чертовски интересный подкаст КОГДА-ЛИБО !!! Спасибо, мистер Роган, вы вдохновляете !!!!!
2. Отзыв №2 → 97,3%
Сохраняйте реальность и ведите интеллектуальные беседы! Надо почаще надевать Джоуи Диаза, ты и он вместе - ВЕСЕЛЫЕ!
3. Отзыв № 3 → 96,9%
Обожаю шоу. Ненавижу повторение! Ваша уверенность в том, что можно преуменьшить значение вируса, вызывает беспокойство. Разве в настоящем слове нормальность не является нормальным явлением?
Тема 3: «Все остальное?»
'0.010*"woman" + 0.009*"eye" + 0.005*"boy" + 0.005*"fear" + 0.005*"money" + '0.004*"deal" + 0.004*"hater" + 0.004*"industry" + 0.004*"air" + '0.004*"mouth"')]
Три лучших отзыва по этой теме
- Отзыв №1 → 90,1%
Охватывает все, от древних пришельцев до нападения медведя на Берта. Безусловно, мое любимое шоу. Я мог бы больше поговорить о ММА и БДЖ, Эдди великолепен. Еще Берт, Стэнхоуп, Ари, Джоуи и отряд смерти.
2. Отзыв №2 → 90,01%
Один из первых подкастов, который я когда-либо слушал. Я могу с уверенностью сказать, что это изменило мой взгляд на мир и его понимание и помогло мне стать более общительным, сострадательным и понимающим человеком… это также чертовски забавно
3. Отзыв № 3 → 90,01%
У Джо лучшие гости ... Джон Хеффрон, Джои Диаз, Ари Шафер, Эдди Браво. К тому же ему все равно, что думают другие. Он настоящий человек и уважает всех и каждого, если они открыты. Отличный подкаст, всегда заставляет меня смеяться, а иногда действительно заставляет позже оценивать принятые мною решения. Вернее, почему я решил принять эти решения.
Insights
- Быстрое предоставление полезной информации
Во-первых, невозможно прочитать 30–40 тысяч отзывов, особенно регулярно.
Из-за этого графики:
- 20 самых употребительных слов из всех обзоров
- 20 самых употребительных слов из положительных / отрицательных отзывов
- «Мешок слов» для всех / положительных / отрицательных отзывов
Быстро предоставляйте информативную информацию. Их можно легко запускать на ежемесячной / еженедельной / ежедневной основе и сравнивать период с периодом. Я не хочу, чтобы эта статья стала слишком большой, и поэтому не делаю этого.
2. Понимание основных тем (проблемы, комментарии, вопросы и т. Д.) Вашей аудитории.
Представьте, что вы публикуете изображение в Instagram - оно становится вирусным, и 30 000 человек оставляют комментарии под вашей фотографией. Если это происходит впервые, вы можете просмотреть все комментарии, однако теперь представьте, что это происходит с каждым размещенным вами изображением. Вы смотрите на фотографию, которую вы разместили на воздушном шаре во время отпуска в Кападокии, и задаетесь вопросом - комментируют ли эти люди мою внешность? они комментируют воздушный шар…. или, может быть, они рассказывают, как они попали в Кападокию и что у них было?
Используя LDA, мы можем легко увидеть основные темы из упомянутых 30 000 комментариев. Идентифицировано неконтролируемым образом - это означает, что компьютер вычисляет вещи самостоятельно без нашей помощи. (Таким образом, нам не нужно быть экспертами по каждому изображению и его содержанию, но он также может придумывать темы, которые нам не очень интересны, например, люди, комментирующие цвета воздушного шара.)
Более того, каждому обзору присваивается процент от того, к какой теме он относится.
Пример с обзором №2330
lda_model[corpus[2330]]
Из[]:
[(0, 0.869107), (1, 0.07557727), (2, 0.055315714)]
Этот обзор составляет ~ 87% по теме 1, ~ 7,5% по теме 2 и ~ 5,5% по теме 3.
Вы можете легко сортировать и читать обзоры по темам.
В нашем случае, предположим, что Джо хочет читать обзоры на тему «Мне нравится, НО» (которая, похоже, является Темой 1 и определена компьютером неконтролируемым образом).
Теперь он может очень легко фильтровать и читать обзоры на ежемесячной / еженедельной / ежедневной основе, сделанные поклонниками подкаста, НО есть некоторые конструктивные отзывы.
То, что он не мог бы сделать раньше.
Идти дальше
Области, требующие улучшения
- Оглядываясь назад, я думаю, что выбор трех тем был не лучшим решением, поскольку тема 3 кажется слишком широкой, чтобы дать реальное понимание. В лучшем случае я бы запустил все заново и поискал идеи по 4–5–6–7 темам.
- Мне было бы любопытно узнать, каковы настроения по каждой из тем. Какая-нибудь из тем более положительная или отрицательная?
- Кроме того, я вообще не использовал поле Заголовок, которое предоставляет очень подробные данные - обычно это краткое изложение проблемы, поэтому потенциально оно может дать даже лучшее понимание, чем Обзор . Другой вариант - объединить поля Заголовок + Отзыв, поскольку оба поля должны описывать одну и ту же проблему, поэтому мы потенциально можем получить больше данных по той же проблеме. Конечно, дополнительные слова в заголовке также могут сбивать с толку.
- Я также мог бы попробовать использовать методы тематического моделирования, такие как LSA, PLSA и lda2Vec, и сравнить результаты и, возможно, получить еще больше информации.
- Если бы у меня были «отраслевые знания», я бы, вероятно, захотел запустить контролируемую модель для определенных вещей в данных. Например, «найти отзывы, которые комментируют гостей». (Но в этом сила обучения без учителя, я мог бы очень легко запустить это на обзорах ядерных реакторов и все же получить представление!)
Конец заметок
На написание статьи ASOS у меня ушло около 20 часов, и для этой статьи я повторно использовал почти весь код, который у меня был, и потратил еще 20–30 часов на обновление. Это может показаться многообещающим, но действительно здорово в таких проектах то, что, как только вы все заработаете, продолжать получать те же идеи в будущем очень легко. Это почти просто запуск одного файла Python, который предоставит все данные, указанные выше.