15
Через грабли - к чат-ботам: технологии, эвристики и жестокая реальность

#3 Global AI Meetup (NLP) - Никита Никитинский, DialTech

Embed Size (px)

Citation preview

Page 1: #3 Global AI Meetup (NLP) - Никита Никитинский, DialTech

Через грабли - к чат-ботам: технологии, эвристики и жестокая

реальность

Page 2: #3 Global AI Meetup (NLP) - Никита Никитинский, DialTech

О чем расскажу

Технологии – это круто (но про них и без меня расскажут)

Эвристики – это не так круто, но без них не обойтись

Данные – это больно

Дисклеймер: презентацию делал ночью и уставший

Page 3: #3 Global AI Meetup (NLP) - Никита Никитинский, DialTech

Технологии NLPЧаще: Базовая подготовка (токенизация, удаление знаков препинания и стоп-

слов, приведение к одному регистру)

Морфологический анализ (чаще всего – лемматизация, частеречноетегирование)

Исправление опечаток (а вот тут косяк)

Выделение ключевых слов/(именованных) сущностей (для goal-oriented-ботов)

Реже: Синтаксический анализ (SyntaxNet же!)

Тематическое моделирование

Анализ тональности

Реферирование и аннотирование

Выделение значимых частей текста

Page 4: #3 Global AI Meetup (NLP) - Никита Никитинский, DialTech

Технологии ML

Правила-шаблоны-ключевики

Классические алгоритмы (статистические)

Дистрибутивная семантика (все-что-угодно2vec)

Глубинное/глубокое обучение

Скоринговые модели (извлекающие)

Генеративные модели (порождающие)

Всякие гибриды

Page 5: #3 Global AI Meetup (NLP) - Никита Никитинский, DialTech

ИнструментыNLP Apache OpenNLP, NLTK, АОТ

api.ai, wit.ai

AlchemyAPI

Машинное обучение + глубинное обучение Gensim, scikit-learn

TensorFlow, Keras, Theano, Torch, Caffe, Deeplearning4j

Тысячи их!

Фреймворки для создания чат-ботов Microsoft Bot Framework,

Pandorabots, Synthetic Intelligence Network,

Chatfuel, Botkit, Errbot, Hubot, DialTech

Десятки их!

Page 6: #3 Global AI Meetup (NLP) - Никита Никитинский, DialTech

Факторы успеха

Алгоритмы всем известны

Сделать модельку могут многие (даже я!)

Грабли

Как заменять у бота ответы без переобучения модели?

Как сделать боту стабильную личность?

Знание доменных областей (банки, биржи, телеком)

Особенности процессов

Особенности принятия решений

Функциональное продакшн-решение

Возможности кастомизации

Интеграция, оптимизация, большая нагрузка

Универсальное решение для всех из коробки - маловероятно

Page 7: #3 Global AI Meetup (NLP) - Никита Никитинский, DialTech

ЭвристикиВыделение значимых для ответа частей из запроса

• Знаки препинания?

• Части речи?

• Ключевые слова?

• Обучаем модель?

Обработка сложного запроса из нескольких вопросов

• Знаки препинания?

• Графические признаки?

• Обучаем модель?

Правильная обработка отрицаний

• Склеиваем отрицание со значимым словом?

• Игнорируем отрицания?

• Учитываем отрицания как значимое слово?

Работа с неизвестными для модели значимыми словами

Определение и фильтрация бреда

Разрешение анафоры в диалоге

Page 8: #3 Global AI Meetup (NLP) - Никита Никитинский, DialTech

Данные в мире розовых

пони

Page 9: #3 Global AI Meetup (NLP) - Никита Никитинский, DialTech

Реальные данныеМаксимально дурацкий формат

• Фотографии сканов экселевских таблиц

Люди неграмотные и не знают, чего хотят

• Скожит мой автамабел утелезерованн нет что

Данных мало

• Или еще хуже, очень много

Данные грязные до ужаса

• Ошибки форматирования

• Неправильные ответы

• Неправильная разметка

Данные нерепрезентативные

• Плохо представлены редкие категории

Page 10: #3 Global AI Meetup (NLP) - Никита Никитинский, DialTech

Что делать?• Снимать штаны и бегать (опционально)

• Смириться с жестокостью жизни (рекомендуется)

• Иметь вспомогательные скрипты для работы с самыми частотными

форматами

• Иметь вспомогательные скрипты для очистки данных

• Иметь вспомогательные скрипты для быстрого анализа данных или

уметь быстро глазами определять их пригодность

• Иметь domain-specific наработки на случай отсутствия данных

• Иметь автотестер для получившейся модели

• Дообучаться в процессе работы

Page 11: #3 Global AI Meetup (NLP) - Никита Никитинский, DialTech

Кейс автоматизацииКто:

• Компания, которая выдает займы

Проблема:

• На почту приходят письма с вопросами в больших количествах, операторы не

справляются (да и не спешат особо), некоторые письма висят по несколько дней,

клиенты недовольны

Изначальный процесс:

• Читать письмо

• Пытаться понять, о чем оно (это непросто!)

• Поставить категорию письма из выпадающего списка (это тоже непросто)

• Найти в скриптах для операторов подходящий ответ (это лениво)

Page 12: #3 Global AI Meetup (NLP) - Никита Никитинский, DialTech

Кейс автоматизацииСамостоятельная попытка автоматизации:

• Ключевые слова, конечно же. Стало проще, но не сильно.

Решение:

• Рекомендательная система для операторов с возможностью автоответа

пользователям

На входе:

• Вопрос клиента

На выходе:

• Категория вопроса

• Наиболее вероятный ответ

• Степень уверенности в ответе

Page 13: #3 Global AI Meetup (NLP) - Никита Никитинский, DialTech

Кейс автоматизацииКак делали:

• Анализ и обработка вопросов

• Обучение модели

• Тестирование модели

• Доработка модели

Какие были данные:

• Неправильно категоризированные вопросы (операторы халтурщики)

• Неинтерпретируемые вопросы

• Нерелевантные ответы на вопросы (прям как-то много!)

• Маньяцкий формат данных (архив с архивами с битыми JSON)

• Неравномерное распределение категорий вопросов

по набору данных (классика!)

Page 14: #3 Global AI Meetup (NLP) - Никита Никитинский, DialTech

Немного о DialTech• Платформа для разработки чат-ботов и управления ими (админка,

переключение на оператора, WoZ, вот это вот всё)

• Свой NLP-движок (куда ж без этого!)

• Есть API

• Базовая интеграция со всеми основными мессенджерами и HelpDesk

(Usedesk, Zendesk, вот это вот всё)

• Возможность быстро интегрироваться почти с чем угодно

Page 15: #3 Global AI Meetup (NLP) - Никита Никитинский, DialTech

Немножко обо мне

https://www.facebook.com/nnikitinsky

nlpx.net

В LinkedIn меня тоже можно найти:

Nikita Nikitinsky