В настоящее время очевидно, что отзывы имеют большое значение. Мы можем сказать, что людей волнует то, что они пишут в своих отзывах. Затем мы можем увидеть, что нравится или не нравится этим рецензентам, анализируя настроения по популярным темам, о которых говорят. Проблема, которая возникает при моделировании темы, заключается в использовании нескольких слов при разговоре об одном и том же и наложении этих тем. Два разных обзора могут говорить об одной и той же теме, используя разные формулировки. Например, кто-то может использовать слово «кафе», а кто-то другой говорит «ресторан», но они могут говорить об одном и том же.

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

Давайте посмотрим на примере, как GloVe может улучшить идентификацию темы в определенной коллекции (корпусе) отзывов.

Цель

Цель этого анализа — лучше определить, когда обзор касается определенной темы, даже если в нем используется другая формулировка. В частности, мы рассмотрим обзоры в индустрии ресторанов/баров.

Мотивация

Мы можем взглянуть на наиболее часто встречающиеся слова в корпусе отзывов. После простой токенизации вот 20 самых популярных слов и их необработанная частота в 4842 обзорах ресторанов:

Теперь в этих словах уже есть некоторое совпадение. Например, пиво и напиток — это одна и та же тема, но они сформулированы по-разному. Как мы можем составить корпус слов, чтобы было меньше совпадений слов?

Методология (кластеризация k-средних)

Поскольку есть некоторое совпадение, было бы полезно сгруппировать похожие слова, чтобы сгенерированные темы были лучше сгруппированы. Здесь может помочь метод кластеризации. В частности, мы использовали кластеризацию k-средних, которая находит расстояние между точками данных — в данном случае нашими словами — и группирует их в kкластеров, сводя к минимуму расстояния между каждым словом и центром тяжести кластера. Мы минимизировали евклидово расстояние каждого слова и его центроида и нашли k, используя n и понижающий коэффициент, f,где k = n*f.

Теперь, как мы можем получить расстояние между словами? К счастью для нас, мы не первые, кто захотел проанализировать расстояния между словами. Как упоминалось выше, у нас есть предварительно обученный вектор слов для каждого слова в корпусе. Этот вектор можно использовать как евклидовы координаты слова. Мы использовали 50-мерный вектор для простоты и скорости.

Кроме того, мы можем уменьшить количество бессмысленных кластеров, вычислив среднее евклидово расстояние внутри каждого кластера. Если это среднее расстояние больше, чем среднее расстояние для всех кластеров, содержащих хотя бы два слова, мы отбрасываем этот кластер. Из наших 2704 кластеров 786 содержали как минимум два слова. Среди этих скоплений среднее евклидово расстояние составило 1,755. Кроме того, 344 кластера имели евклидово расстояние больше 1,755 и были отброшены. Ниже приведены кластеры, которые не имели смысла с соответствующим им средним евклидовым расстоянием.

Ниже показаны хорошие кластеры, которые были созданы, и их соответствующее среднее евклидово расстояние:

Результаты

После того, как мы удалим плохие кластеры и сохраним хорошие кластеры, мы можем заменить слова в каждом хорошем кластере на наиболее часто встречающееся слово в этом кластере. Например, предположим, что у нас есть кластер [пиво, напитки, напитки]. Все слова в этом кластере пиво, напитки заменены наиболее часто упоминаемым словом напиток. Это позволяет нам видеть наиболее часто встречающиеся темы, а не отдельные слова. Наши новые наиболее часто встречающиеся группы слов выглядят следующим образом:

Анализ

Из этих результатов следует отметить несколько важных моментов:

  • Напитки и пиво группируются вместе, что увеличивает их частоту и рейтинг.
  • Подожди, спроси, официантка, муж и обед также имеют более высокий рейтинг из-за связанных с ними кластеров.
  • Рейтинг место, время, персонал и заказ снизился, так как у них нет кластеров.

Каждое из этих слов можно рассматривать как тему, включающую все, что входит в его кластер. Использование кластеризации k-средних для группировки этих слов принимает во внимание различные способы выражения слов людьми (а не только синонимы). Группировка слов вместе помогает понять, когда люди лучше говорят на определенную тему. Это позволяет всплыть на поверхность другим темам, о которых можно говорить по-разному. Однако кластеризация слов не идеальна и не должна быть единственным инструментом, используемым для классификации тем. Мы продолжаем работать над этой темой, чтобы находить все более и более эффективные способы группировки схожих отзывов клиентов и получения информации для наших клиентов.

Автор: Сара Махар

Связанный

Первоначально опубликовано на tech.reputation.com 14 апреля 2018 г.