Содержание

Не с чистого листа

Возьмите готовую анкету и поправьте под себя

Выбрать шаблон
Лого WebAsk

Разбор открытых ответов с помощью ИИ

Как разобрать результаты
Разбор открытых ответов с помощью ИИ

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

Ниже разбираем каждый шаг на сквозном примере: 500 ответов на вопрос «чего вам не хватает в сервисе» доходят до отчёта с частотами и цитатами примерно за два часа, из которых сорок минут это неустранимая ручная работа. Именно она отличает цифры, которым можно верить, от красивого пересказа.

О чём этот разбор и о чём он не будет

Ручной метод, когда категории собираются в таблице по ключевым словам и формулам, разобран отдельно в статье про ручную кластеризацию обратной связи. Он никуда не делся и на паре сотен ответов часто быстрее. Здесь речь про другое: что делать, когда ответов тысячи, и как при этом не потерять контроль над тем, что именно посчитала модель.

Считать статистику по уже закодированным данным тоже отдельная тема, она в материале про дескриптивный анализ. А про то, когда открытый вопрос вообще уместен, есть разбор открытых и закрытых вопросов.

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

Что сделать до того, как вставлять текст в ИИ

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

WebAsk · сервис опросов Так выглядит вопрос NPS · это демо

Насколько вероятно, что вы порекомендуете нас коллеге?

Вот и всё — такой опрос собирается за пару минут, а индекс WebAsk считает сам.

Выбрать шаблон

Дальше самое важное. В открытых ответах регулярно попадаются имена, телефоны, адреса и номера договоров: люди пишут «позвоните мне на +7…» прямо в поле «ваши пожелания». Всё это персональные данные по 152-ФЗ, и отправлять их во внешнюю модель нельзя. Перед разбором такие фрагменты заменяются на заглушки вида ИМЯ_1 и ТЕЛЕФОН_1, причём одинаковыми токенами для одинаковых сущностей, чтобы не потерять смысл фразы. Заглушку потом легко вернуть по идентификатору, если ответ понадобится в работе поддержки.

Последнее: договоритесь, что считается одним ответом. Если человек написал три предложения про разное, это всё равно один ответ, просто он получит несколько кодов.

Шаг 1. Чистка

Сырая выгрузка процентов на двадцать состоит из шума: односложные «нет» и «-», реплики не по теме этого вопроса, дубли от повторных отправок, мат и эмодзи. Кодировать это бессмысленно, а в процентах такой мусор искажает базу.

Конвейер разбора открытых ответов: чистка, кодбук, кодирование, проверка, отчёт

Механически это делает ИИ-чистка открытых ответов: каждому ответу присваивается одно из четырёх действий, keep, clean, drop или duplicate, и к каждому решению пишется причина. Правило проверки одно: колонку с причинами отбрасывания надо просмотреть глазами целиком. Это несколько минут, а находится там обычно самое интересное. Реплики «не по теме» часто оказываются ответами на другой вопрос анкеты и уходят не в мусор, а в отдельный файл для смежной команды.

Шаг 2. Кодбук на выборке

Кодбук это не список названий тем, а таблица правил. В классическом виде, описанном Кэтлин МакКуин с коллегами, у каждого кода шесть полей: имя, краткое определение, полное определение, правило «когда применять», правило «когда не применять» и примеры формулировок из реального текста. Поле «когда не применять» самое важное: именно оно разводит пары вроде «цена» и «непонятно, за что платим».

Карточка кода в кодбуке: шесть полей, работу делает «сюда не попадает»

Строится кодбук не на всём массиве, а на случайной выборке в 50 до 70 ответов. Случайной, а не первых попавшихся: первые ответы часто приходят от самых активных клиентов и тянут кодбук в свою сторону. Опыт качественных исследований говорит, что основная часть тем появляется рано. В классическом замере Guest, Bunce и Johnson на 60 глубинных интервью 73% всех кодов встретились уже в первых шести транскриптах. Это данные по интервью, а не по коротким ответам анкеты, но порядок величин тот же: новые темы после первой полусотни появляются редко.

Рамка на число категорий: от восьми до двенадцати плюс служебное «Прочее». Меньше восьми означает, что темы слиплись, больше двенадцати означает, что отчёт станет нечитаемым. Категории строятся по объекту претензии, а не по эмоции: «интеграции с 1С» это категория, а «недовольство» нет.

Промпт для этого шага выглядит так:

Ты кодировщик открытых ответов в исследовании.
Контекст: [что за продукт, кого спрашивали, какой был вопрос].
Ниже [N] случайных ответов из очищенной выгрузки.

Построй кодбук. Требования:
1. От 8 до 12 категорий. Ни одной сквозной вроде «пожелания»,
   «функционал», «улучшения интерфейса».
2. Категории по объекту претензии, а не по эмоции.
3. Для каждой категории дай: имя до трёх слов; описание одним
   предложением; «сюда попадает, если…»; «сюда НЕ попадает, если…»;
   три дословные цитаты из выборки с их номерами.

Требование дословных цитат с номерами здесь не для красоты. Это первая проверка на выдуманные категории: если под тему не находится трёх реальных ответов, темы нет.

Шаг 3. Кодирование батчами

Готовый кодбук применяется ко всему массиву через кодировщик открытых ответов. Тут появляются два подводных камня, о которых обычно узнают постфактум.

Дрейф категорий. Если каждый батч кодировать «с нуля», на второй тысяче ответов та же по смыслу тема будет называться иначе, и при сведении вы получите две категории вместо одной. Лечится тем, что кодбук замораживается до начала счёта и целиком передаётся в каждый батч, а модели прямо запрещается создавать новые категории и переписывать имена.

Позиционные эффекты. Судьба ответа зависит от того, где он оказался в списке и что стояло рядом. Поэтому массив режется на батчи по 30 до 100 ответов, а порядок берётся случайный, не отсортированный по дате или по длине.

Мультикод настраивается сразу: от одного до трёх кодов на ответ, второй код ставится только если в ответе есть отдельное самостоятельное требование, а не уточнение первого. Тональность модель размечает заодно, но анализ тональности это не измерение удовлетворённости и метрику вроде NPS он не заменяет.

Шаг 4. Слепая проверка

Шаг, который чаще всего пропускают, и ровно он отличает разбор от гадания. «Пролистать глазами» не считается: человек, который видит машинные коды, почти всегда с ними соглашается.

Слепая проверка: человек кодирует выборку, не видя машинных кодов

Процедура такая. Аналитик кодирует руками случайные 15 до 20 процентов ответов по тому же кодбуку, не глядя на разметку модели. Потом две колонки сравниваются, и разбираются именно расхождения. У расхождений всего четыре причины, и лечатся они по-разному: описание категории допускает оба чтения (правим кодбук), ответ реально про две темы и кто-то взял одну (правим правило мультикода), ответ бессодержательный и должен был отсеяться на чистке (правим чистку), явная ошибка при однозначном описании (это и есть ошибка модели).

Долю совпадений считать полезно, но она обманчива. Для согласия двух разметчиков используют каппу Коэна, а в контент-анализе чаще альфу Криппендорфа: они учитывают, что часть совпадений случайна. Шкалу, по которой каппу читают почти везде, предложили Ландис и Кох в 1977 году: от 0,41 до 0,60 умеренное согласие, от 0,61 до 0,80 существенное, выше 0,81 почти идеальное. Стоит знать, что сами авторы на той же странице написали, что эти деления произвольны и годятся как ориентир для обсуждения, а не как норма. Криппендорф формулирует свой порог так же честно: принято требовать альфу не ниже 0,800, а 0,667 это нижняя граница, при которой допустимы предварительные выводы.

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

Шаг 5. Сборка отчёта

На вход суммаризатору ответов идёт не весь массив разом, а каждая категория отдельно. Так формулировки получаются конкретными, а не усреднёнными по всему опросу, и заодно вы не упираетесь в лимит длины.

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

Структура отчёта, которая работает: тема, число ответов и доля, две-три цитаты разных граней, вывод. Цитата без частоты это анекдот, а частота без цитаты не убеждает заказчика.

Сквозной пример: 500 ответов за два часа

Сервис учёта расходов для малого бизнеса, квартальный опрос платящих клиентов, открытый вопрос «чего вам не хватает». Собрано 500 ответов средней длиной около 110 знаков.

Чистка на пяти блоках по сотне дала: keep 320, clean 88, drop 63, duplicate 29. Внутри отброшенного 41 односложный ответ, 14 реплик не по теме этого вопроса и 8 бессмыслиц. Четырнадцать «не по теме» оказались жалобами на скорость поддержки и уехали в отдельный файл смежной команде. В работе осталось 408 ответов.

Кодбук собрали на случайных 60 ответах: модель предложила 14 категорий, руками схлопнули «мобильное приложение» с «мобильной версией», объединили две формулировки про экспорт и выбросили категорию, под которую нашлось два ответа. Осталось 11 рабочих категорий плюс «Прочее».

КатегорияОтветовДоля от 408
Интеграции с банками и 1С9623,5%
Мобильное приложение7117,4%
Отчёты и выгрузки6315,4%
Цена и тарифы5814,2%
Совместный доступ и роли4711,5%
Импорт из Excel4410,8%
Скорость и баги399,6%
Распознавание чеков338,1%
Мультивалютность286,9%
Обучение и онбординг245,9%
Уведомления215,1%
Прочее204,9%

Кодирование шло четырьмя батчами в случайном порядке. Один код получили 292 ответа, два кода 96, три кода 20, всего 544 кода, в среднем 1,33 на ответ.

Слепая проверка на 80 случайных ответах дала 69 совпадений из 80, то есть 86%. Разбор одиннадцати расхождений показал, что пять из них про границу с «Прочим», а четыре про пару «цена и тарифы» против «лимитов в тарифе». Дописали в кодбук правила «сюда НЕ попадает» для спорной пары, перекодировали массив заново и проверились ещё раз на других 60 ответах: 54 совпадения, 90%.

Доля «Прочего» составила 4,9%, то есть ниже порога в десять процентов, при котором кодбук считается неудачным и собирается заново.

Как не соврать в процентах

Мультикод ломает привычную арифметику, и на этом спотыкаются почти все.

Почему при мультикоде нельзя складывать доли категорий

В нашем примере топ-3 категории дают 96 плюс 71 плюс 63, то есть 230 кодов. Но 32 ответа попали сразу в две из этих трёх категорий, значит уникальных ответов там 198, это 48,5% массива. Сложение долей дало бы 56,4%, разница почти восемь процентных пунктов из воздуха. Складывать доли при мультикоде нельзя, надо считать уникальные ответы.

Вторая ловушка это база. Наши 96 ответов про интеграции это 23,5% от 408 содержательных ответов, но если опрос прошли 900 человек, а на открытый вопрос ответили 500, то от всех опрошенных это уже около 11%. В отчёте у каждого процента должна быть подписана база, иначе читатель достроит её сам и ошибётся.

Третье: маленькие категории. В примере мультивалютность набрала всего 28 ответов, меньше семи процентов, и по частоте не попала бы в отчёт. Но в девяти из этих ответов прямо говорится о переходе к конкуренту, а средний чек этих клиентов выше. Частота и деньги это разные оси, и решение по одной частоте похоронило бы категорию. Если хочется проверить, реальна ли разница между сегментами, а не случайна, это делается проверкой хи-квадратом.

Где ИИ ошибается

Три сбоя встречаются чаще прочих, и у каждого есть свой признак.

Три сбоя модели и признак, по которому каждый ловится

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

Потеря редкого и важного. Единственная жалоба на списание денег растворяется в общей точности, потому что на фоне 408 ответов она весит ничтожно. Ловится тем, что полнота считается по каждой категории отдельно.

Подгонка под ожидание. Самый неприятный, потому что делает его человек: аналитик перебирает формулировки промпта, пока картинка не совпадёт с тем, что он и так думал. Лечится тем же, чем в количественных методах: кодбук и промпт фиксируются до того, как вы посмотрели на результат, а версия промпта хранится вместе с выгрузкой.

Отдельно про доверие к самой технологии. Работа Gilardi, Alizadeh и Kubli, опубликованная в PNAS в 2023 году, показала на 6183 англоязычных твитах и новостных текстах, что модель размечала их точнее краудворкеров примерно на 25 процентных пунктов. Цифру часто цитируют как доказательство, что ИИ справляется лучше людей, но читать её так нельзя: сравнение шло с краудворкерами, а не с обученными кодировщиками, тексты были английскими, а модель той весны давно сменилась. Вывод из этой работы скромнее: машинная разметка сопоставима с недорогой ручной, и именно поэтому её результат нужно проверять, а не принимать на веру.

Как это сделано в WebAsk

Три шага конвейера закрыты отдельными инструментами, и они работают с любой выгрузкой, не только из нашего конструктора. Чистка размечает ответы четырьмя действиями и отдаёт CSV с причинами. Кодировщик строит кодбук и проставляет от одного до трёх кодов с тональностью, отдавая отдельно разметку и отдельно сам кодбук. Суммаризатор собирает из категории темы, цитаты и следующие шаги.

Что стоит держать в голове про лимиты: за один прогон принимается порядка 8 до 12 тысяч знаков, то есть сотни коротких ответов, поэтому большие выгрузки режутся на порции, а кодбук первой порции передаётся в поле контекста остальным. Данные не сохраняются, но это не отменяет правила вычищать персональные данные до отправки.

Сами открытые ответы собираются обычным опросом, его можно сделать в бесплатном конструкторе. А если открытые вопросы у вас часть системной работы с обратной связью, стоит посмотреть разбор методологии Voice of the Customer.

Частые вопросы

Сколько ответов нужно, чтобы разбор через ИИ имел смысл?

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

Можно ли сразу отдать модели весь массив и попросить «проанализируй»?

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

Как понять, что кодбук неудачный?

Три признака. В «Прочее» попало больше десяти процентов ответов. Есть категория, которая собрала половину массива, значит она слишком общая. Или наоборот, есть категории с двумя-тремя ответами, их надо схлопывать с соседями.

Что делать, если модель и человек разошлись в трети ответов?

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

Обязательно ли считать каппу, или хватит процента совпадений?

Для рабочего отчёта внутри команды процента совпадений обычно достаточно, если вы честно смотрите на расхождения. Каппа нужна там, где результат уходит наружу или где одна категория доминирует: в таком случае высокий процент совпадений может скрывать полное расхождение по редким категориям.

Как быть с персональными данными в ответах?

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

Можно ли доверять тональности, которую размечает модель?

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

Как разбирать длинные ответы и расшифровки интервью?

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

Что делать с ответами не по теме вопроса?

Не выбрасывать молча. Чаще всего это ответ на другой вопрос анкеты или обращение в поддержку, попавшее не туда. Такие реплики стоит выгрузить отдельным файлом и передать смежной команде, а из расчёта долей исключить, указав в отчёте, сколько ответов и почему исключено.

Нужно ли перекодировать старые волны опроса под новый кодбук?

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

1

Не с чистого листа

Возьмите готовую анкету и поправьте под себя

Выбрать шаблон
Еще больше интересного в нашем Telegram канале!

Никакого спама, только самое актуальное