Выявление значимых тем для редких обзоров Steam

Steam - крупнейшая онлайн-площадка для продажи видеоигр. Несмотря на то, что у него очень тщательно продуманная система отзывов клиентов, отзывы можно разделить только на положительные и отрицательные, что не очень информативно.

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

Набор данных

Я использовал Steam Review Dataset, опубликованный на Kaggle в виде файла .csv. Он охватывает 380000 обзоров видеоигр из 46 самых продаваемых игр в Steam. Необработанные текстовые данные нужно было тщательно предварительно обработать, прежде чем я смогу передать их в модель, поэтому я использовал RegEx для фильтрации определенных шаблонов для нормализации и SymSpell для исправления опечаток.

конвейер данных

Для конвейера данных необработанные текстовые данные были предварительно обработаны с использованием RegEx и других навыков нормализации. Я использовал исследовательский анализ данных (EDA), чтобы понять, как данные распределяются и структурированы, чтобы увидеть, как можно улучшить предварительную обработку. Затем, используя фреймворки Python, я реализовал модели идентификации тем. Обратите внимание, что мы всегда можем вернуться от построения модели к EDA и сделать его итеративным процессом в том смысле, что мы можем получить больше информации о том, какие методы подходят для наших конкретных данных и задачи. Создав окончательную модель, мы можем масштабировать ее до производственной модели с помощью Docker, AWS или аналогичного облачного сервиса.

Методы

Обычно есть два способа выполнить задачу определения темы. Мы можем либо прибегнуть к иерархическим байесовским моделям, таким как скрытое распределение Дирихле (LDA), либо мы можем встроить наши целевые документы в некоторое векторное пространство и определить их структуру сходства в векторном пространстве с помощью методов кластеризации .

Для этой задачи, особенно с данными обзора Steam, LDA имеет свои ограничения:

  • Ему сложно обрабатывать короткие тексты, когда текста для моделирования не так много.
  • В обзорах обычно не обсуждается одна тема (что затрудняет определение основных тем документов для LDA).
  • Фактическое значение обзоров в значительной степени зависит от контекста, поэтому методы, основанные на совпадении слов, такие как LDA, могут потерпеть неудачу.

Помня об этих ограничениях, нам нужен метод, который включает полное содержание предложения, которое затем можно сгруппировать по аналогичным темам. Поэтому встраивание плюс кластеризация здесь казались наиболее простой задачей. Я пробовал разные методы получения векторных представлений из обзоров, в том числе TD-IDF, встраивание предложений BERT и мой последний метод, встраивание контекстной темы (LDA + BERT).

TF-IDF

Для TF-IDF результат был плохим в том смысле, что мы не можем ни разделить, ни сбалансировать кластеры. Поскольку TF-IDF также основан на пакете слов (без учета грамматики и порядка слов), он теряет контекстную информацию и страдает от несогласованности и неструктурированности данных.

Встраивание предложений BERT

Затем я попытался использовать модели встраивания предложений (BERT) для встраивания обзоров в векторное пространство, где векторы фиксируют контекстное значение предложений. Как видно на визуализации ниже, результат был удовлетворительным, но все еще трудно идентифицировать кластеризацию, если мы удалим цвета.

Встраивание контекстной темы

Информация о пакете слов (LDA или TF-IDF) эффективна для определения тем путем нахождения часто встречающихся слов, когда тексты связаны между собой. С другой стороны, когда тексты непоследовательны (с точки зрения выбора слов или значения предложения), необходима дополнительная контекстная информация, чтобы всесторонне представить идею текстов.

Тогда почему бы нам не объединить и набор слов, и контекстную информацию? Комбинируя LDA, BERT и кластеризацию, мы можем сохранить семантическую информацию и создать контекстную идентификацию темы. Ниже приведен результат, где кластеры сбалансированы и довольно разделены.

Глубокое погружение в модель

Итак, как я этого добился? Давайте быстро погрузимся в дизайн модели. Из текста каждого оригинального обзора мы можем получить следующее:

  • Вероятностный вектор назначения тем от LDA
  • Вектор вложения предложений по BERT

Затем я объединил эти два вектора (с гиперпараметром веса, чтобы сбалансировать относительную важность информации из каждого источника). Поскольку конкатенированный вектор находится в многомерном пространстве, где информация разрежена и коррелирована, я использовал автоэнкодер, чтобы изучить представление скрытого пространства конкатенированного вектора в более низком измерении. Предполагая, что конкатенированный вектор должен иметь некоторую форму многообразия в пространстве большой размерности, я получил представления более низкой размерности с более сжатой информацией. Я реализовал методы кластеризации на представлениях скрытого пространства и получил контекстные темы из кластеров.

Полученные результаты

Вот несколько примеров результата модели при подборе части набора данных при фиксированном количестве тем = 10.

Кластер 0

Что касается кластера 0, похоже, что людей беспокоят проблемы с сервером.

Кластер 2

Для кластера 2 основной темой потенциально является мод в играх, который является частью многих видеоигр.

Кластер 3

В кластере 3 люди говорят о проблемах хакеров.

Оценка

Для оценки я решил использовать как согласованность в тематическом моделировании, так и оценку силуэта для кластеризации. Coherence Umass в диапазоне [-14, 14] измеряет сходство ключевых слов внутри темы, а CV в диапазоне [0, 1] - это улучшенная его версия на основе скользящего окна. Оценка силуэта в диапазоне [-1, 1] измеряет согласованность внутри кластера. Для всех этих показателей большее число означает, что модель работает лучше.

Я сравнил результаты тематического моделирования четырьмя разными методами на наборе данных обзора Steam. В целом, контекстная идентификация тем (BERT + LDA + кластеризация) была лучшей среди всех.

Следующие шаги

Есть несколько потенциальных улучшений, которые я хотел бы сделать, если у вас будет больше времени.

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

Стив Шао создал Контекстное определение темы как четырехнедельный проект во время своего пребывания в качестве научного сотрудника Insight AI в 2020 году.

Вы заинтересованы в том, чтобы сделать карьеру в сфере технологий? Зарегистрируйтесь, чтобы узнать больше о программах Insight Fellows и начните свое приложение сегодня.