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

Текстовые данные — один из самых быстрорастущих типов данных в Интернете. Это привело к значительным изменениям в области обработки естественного языка (NLP) за последние несколько лет. Однако в большинстве случаев текстовые данные не могут быть помечены для использования в бизнесе. Обычно для маркировки текстовых данных для использования в алгоритмах машинного обучения требуется человек-аннотатор (или предметный эксперт).

В этом блоге описываются проблемы маркировки текстовых данных и сравниваются два возможных подхода. Для объяснения проблем и подходов давайте воспользуемся контекстом одного конкретного проекта, который мы завершили для клиента. Рассмотрим проблему «обнаружения путаницы» в ответах пользователей на платформе электронного обучения (бинарная классификация). На этой платформе пользователи подписываются на программу и отправляют свои ответы на вопросы. Вопросы открытые, что позволяет пользователям думать и отвечать. Вот несколько примеров:

Что делает вас более продуктивным?

Подумайте о самых эффективных людях, которых вы знаете. Почему они так хороши в работе?

Наивный подход: маркировка на основе ключевых слов

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

С такими ключевыми словами и их синонимами мы можем просто пометить предложения как «запутанные», которые содержат эти ключевые слова или фразы. Однако что, если в предложении говорится: «В данный момент я не запутался». Несмотря на то, что это ясно говорит, что человек не запутался, это будет помечено как запутанное со стратегией, основанной на ключевых словах! Маркировка на основе ключевых слов не учитывает контекст предложения, и это самое большое ограничение этого подхода.

Разумный подход: нулевая классификация тем!

Zero-Shot Learning стремится связать метку с данными независимо от домена, в котором была обучена модель! Идея состоит в том, что модель принимает предложение и гипотезу в качестве входных данных, а затем решает, следует ли гипотеза за предложением.

Например, рассмотрим предложение «Я люблю эту еду!». Гипотеза будет следующей: предложение положительное, предложение отрицательное или предложение нейтральное. Затем модель классификатора определит связь между предложением и каждой гипотезой. Оценки для каждой гипотезы «софтмаксируются»[1], чтобы найти наиболее релевантный класс для входного предложения.

Вы можете обратиться к документу [2], Model Hub of Hugging Face [3] и замечательной бесплатной демонстрации [4] для получения более подробной информации.

Классификация Zero-Shot в действии!

Код Zero-Shot Classification очень интуитивно понятен и прост в использовании (спасибо команде Hugging Face). В следующем примере для классификации используется модель BART-Large. Вы можете увидеть магию всего в нескольких строках кода!

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

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

На маркировку 100 000 тыс. предложений на графическом процессоре Nvidia GeForce GTX 1060 4 ГБ с частотой 33 МГц требуется около 2 часов.

Проверка точности маркировки.Как узнать, что сгенерированные этикетки верны?

Вы можете случайным образом взять 100–150 образцов помеченных данных и посмотреть, правильно ли назначены метки. Если вы анализируете много ложных срабатываний (ответы «Не путать» назначаются как «Запутанные») в наборе данных, вы можете увеличить порог принятия решения с 0,5 до 0,75 (или настроить его для своей проблемы).

Как узнать, правильно ли распределены ярлыки?

Мы поделились нашими выводами и данными с заинтересованными сторонами, чтобы проверить, имеет ли смысл распространение меток (исходя из их прошлого опыта). С правильными вопросами, заданными команде, мы можем быть уверены, что модель приблизительно захватила правильный «сигнал» для меток. В размеченном наборе данных будет некоторая доля зашумленных меток, но пока их меньше, это не сильно повлияет на модель.

Как вы оцениваете модель классификации?

Поскольку модель имеет метки из классификации BART/Zero-Shot в тренировочных и тестовых наборах, производительность модели будет очень высокой! Но хорошей идеей будет создать золотой тестовый набор, состоящий из небольшого набора данных, помеченных человеком.

Золотой тестовый набор будет иметь невидимые точки данных, которые будут использоваться для расчета показателей модели, таких как F1 Score, Confusion Matrix и т. д. Предположим, что на пометку предложения как Confused или Not Confused требуется ~ 30 секунд, тогда вы можете легко пометить 100+ предложений в час. Если у вас есть небольшая команда, которая поможет вам создать набор данных, вы можете легко получить 1000 точек данных в Золотом наборе тестов (но будьте осторожны с человеческой предвзятостью при маркировке!)

Заключительные мысли

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

Мы в AlgoAnalytics гордимся тем, что являемся универсальным магазином искусственного интеллекта ®. Мы внедряем инновации и создаем масштабируемые решения машинного обучения. Чтобы ознакомиться с нашими потрясающими демонстрациями, посетите https://onestop.ai, а для получения дополнительной информации обращайтесь по адресу: [email protected].

Рекомендации

  1. Функция Softmax: https://en.wikipedia.org/wiki/Softmax_function
  2. Сравнительный анализ нулевой текстовой классификации: наборы данных, подход к оценке и включению: https://arxiv.org/abs/1909.00161
  3. Библиотека моделей обнимающихся лиц: https://huggingface.co/models?filter=zero-shot-classification
  4. Демонстрация Zero Shot: https://huggingface.co/zero-shot/