Мастер-класс: Как с помощью Python и GPT превратить отзывы клиентов в инструмент роста бизнеса

Однажды на личную почту Д.Безоса написал обычный покупатель магазина, который очень разозлился на то, что ему на почту приходили рассылки от Amazon о скидках на лубриканты. Рекламный алгоритм компании был настроен так, что рассылка электронных писем началась только лишь от того, что клиент однажды зашёл на страничку с лубрикантами и ничего там не купил.

Реклама интимных товаров была неприемлемой, так как по мнению Д.Безоса, такая реклама подрывает доверие клиентов к Amazon. Было собрано срочное совещание команды маркетологов Amazon, занимавшейся рассылкой электронных сообщений, и устроен разнос. Итогом встречи стало изменение рекламных алгоритмов компании и определение категорий товаров, которые были запрещены к рекламе.

К чему эта история?

К важности отзывов от клиентов компании. Вот что об этом говорит один из сотрудников Amazon:

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

The Everything Store. Джеф Безос и эра Amazon. Бред Стоун

Прекрасно сказано! Но что делать, если у вас миллионы отзывов о вашем сервисе, и даже если вы наберете 10 человек, вы всё равно не будете успевать их читать. Не говоря о том, чтобы вовремя на них отвечать и реагировать?

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

Покажу на примере.

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

Имея в голове мысль, что клиенты обычно оставляют комментарии, когда у них что-то сломалось или не работает, я предположила, что описание их проблемы скорее всего уместится в словосочетание: прилагательное + существительное, например: плохая ткань, дорогой сервис, долгая доставка, грубый продавец и так далее.

Получается, чтобы найти наиболее "больные" точки клиентов, нужно найти, к примеру, топ-10 повторяющихся словосочетаний и измерить, сколько раз оно повторялось в нашей выборке отзывов.

Реализовать эту идею мог Python. Но так как я финансист, который никогда не учился на программиста, в помощь мне пришёл ещё и GPT Chat.

"Девочка с голубыми глазами с ноутбуком, зима, уютный дом, Pixar"
"Девочка с голубыми глазами с ноутбуком, зима, уютный дом, Pixar"

Мой промпт в GPT был таким: Напиши код на питоне, который прочитает колонку с отзывами в эксель табличке, обработает их и в новой табличке выдаст 10 самых повторяющихся словосочетаний.

Для работы с текстом и Excel GPT посоветовал использовать библиотеки: pandas и ntlk.

Я получила готовый код и список 10 словосочетаний в Excel табличке на рабочем столе. НО! Он мне не понравился. Ответ заключал много словосочетаний с названием моего магазина и со словом "который".

То есть возникла дополнительная задача - исключить из обработки часть слов, которая не несёт смысловой нагрузки.

Снова обратилась к GPT с просьбой доработать код. Тут пришлось немного поразбираться с тем, как работает токенизация текста и как код исключает слова. Но в итоге за 2 часа чтения всей литературы рунета я справилась и получила новый готовый код.

Вот что я получила в ответ на обработку 50 отзывов:

  • сервис доставки - 3 обращения (12%)
  • товар испорчен - 3 обращения (12%)
  • заказ отменён - 2 обращения (8%)
  • поддержка не отвечает - 2 обращения (8%)

Если бы я впервые пришла на работу в этот магазин, вот так за один вечер мне бы стало понятно, какие в нём скорее всего есть "боли" и далее начала бы работать с ними: погружаться в более детальный анализ каждого обращения, его влияния на наш сервис и на доверие клиентов и придумывать структурное решение задачи.

Я думаю, что скоро можно будет обрабатывать обращения через GPT и просить его прочитать все комментарии и вывести на экран самые популярные "боли" или найти письма, в которых клиенты предлагают новые доработки. Но пока такой инструмент необходимо тестировать, чтобы на его сообщения можно было полагаться. Кроме того, я пока не представляю, как реализовать такой проект в одиночку.

Пока в свободном доступе нет такого инструмента, можно попробовать обрабатывать входящие отзывы описанным выше образом.

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

Благодарю за внимание и за то, что дочитали статью до конца.
Подписывайтесь на мой канал в ТГ:

import pandas as pd from collections import Counter from nltk.corpus import stopwords from nltk.tokenize import word_tokenize import nltk # Загружайте nltk стоп-слова (это потребуется выполнить в первый раз) nltk.download('punkt_tab') nltk.download('stopwords') # Загрузите данные из Excel файла filename = 'reviews.xlsx' # замените на имя вашего файла sheet_name = 'Sheet1' # замените на имя вашего листа, если отличается column_name = 'Reviews' # замените на имя колонки с отзывами # Прочитать таблицу Excel df = pd.read_excel(filename, sheet_name=sheet_name) # Извлечение текстовых данных из указанного столбца reviews = df[column_name].astype(str).tolist() # Обработать каждый отзыв all_phrases = [] stop_words = set(stopwords.words('russian')) # использование стоп-слов для русского языка excluded_phrases = {"напишите", "свои", "слова", "исключения"} for review in reviews: # Токенизация текста tokens = word_tokenize(review) # Удаление стоп-слов и небуквенных символов tokens = [word.lower() for word in tokens if word.isalpha() and word.lower() not in stop_words and word.lower() not in excluded_phrases] # Генерация биграмм (двухсловных сочетаний) bigrams = zip(tokens, tokens[1:]) all_phrases.extend([' '.join(bigram) for bigram in bigrams]) # Вычисление самых частых фраз most_common_phrases = Counter(all_phrases).most_common(10) # Запись результатов в новый Excel файл output_df = pd.DataFrame(most_common_phrases, columns=['Phrase', 'Frequency']) output_filename = 'most_common_phrases.xlsx' # имя выходного файла output_df.to_excel(output_filename, index=False) print(f"Топ-10 самых повторяющихся словосочетаний сохранены в файл: {output_filename}")

Конец =)

11
2 комментария

Идея с обработкой отзывов через Python выглядит любопытно, но для большинства людей будет слишком сложным инструментом

1

В целом часа 2-3 наверно придётся поразбираться с тем, чтобы первый раз использовать код. Я использую VMS программу для работы. Всё что знаю - всё нагуглила одним длинным вечером.