Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Methods for building dialog agents and the technologies we used

10 views

Published on

Chatbots have now become an integral part of software development, which are closely related to both NLP and ML. The present report highlights the basic concepts and approaches of working with NLP by implementing dialogue agents (Intent classification, NER, Slot Filing), and you can also find out how to build an entire dialog system. No SaaS, only in-house solutions!

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Methods for building dialog agents and the technologies we used

  1. 1. Методы построения диалоговых агентов и применяемые для этого технологии Senior Data Scientist Тимофей Дураков
  2. 2. О себе •  Senior Data Scientists @ Grid Dynamics •  7 лет разработки ПО
  3. 3. Ситуация на рынке •  все пытаются сделать чат-ботов •  крупные игроки вкладываются в собственных ассистентов(Siri, Alexa, Google) •  много хайпа •  SaaS решения •  … •  ???
  4. 4. План •  Ретроспектива •  Составные компоненты собственного решения •  NLP •  Компоненты платформы
  5. 5. Ретроспектива
  6. 6. Чат-бот Компьютерная программа имитирующая поведение человека при взаимодействии с пользователем.
  7. 7. Разновидности •  Целеориентированные - пытаются решить какую либо задачу пользователя(заказ авиабилетов, запись к парикмахеру) •  Диалоговые - поддерживают разговор с пользователем без дополнительных действий •  Q&A - поиск наиболее подходящего ответа на вопрос пользователя(фактоиды, ранжирование вопросов и ответов)
  8. 8. Немного истории •  1950 - Тьюринг публикует в журнале Mind статью “Вычислительные машины и разум” в которой описывает одноименный тест Тьюринга •  1966 - ELIZA создана в MIT - бот пародирует диалог с психотерапевтом •  1980 - “Китайская комната” •  2011 - Apple Siri, Api.ai, etc.
  9. 9. SaaS решения ▪  DialogFlow ▪  Wit.ai ▪  IBM Watson ▪  Snips.ai ▪  Amazon Lex ▪  recast.ai
  10. 10. SaaS решения ▪  Намерения ▪  NER ▪  Анализ тональности ▪  Синонимы ▪  Поддержка многих языков Плюсы ▪  SaaS ▪  Transfer Learning, маленькие датасеты ▪  UI + Point and Click Минусы ▪  SaaS ▪  Условно-бесплатно ▪  Слабый контроль над моделью ▪  Vendor-lock
  11. 11. Составные части подобных систем ●  ASR(*) ●  NLU ●  Engine ●  NLG
  12. 12. Что если готовое решение не подходит?
  13. 13. Собственное решение FTW! Из чего состоит бот: ▪  ML-модели a.  помогаю понимать что хочет пользователь b.  выделяют важную для диалога информацию ▪  Engine a.  используя результаты предсказания моделей определяет как вести диалог b.  следит за контекстом диалоговой сессии
  14. 14. NLP ML
  15. 15. Natural Language Understanding (NLU) Направление NLP связанное с пониманием речи пользователя. В контексте ботов обычно состоит из 2 задач: •  Определение намерений пользователя •  Выделение сущностей из сообщений пользователей
  16. 16. Подготовка (Preprocessing) Stop-wordsТокенизация Лемматизация/стемминг Удаление из текста слов по частотному критерию (сверху и снизу) Разбиение текста на отдельные токены Преобразование каждого отдельного токена к “нормальной” форме
  17. 17. Подготовка (Preprocessing) Удаление из текста слов по частотному критерию (сверху и снизу) Разбиение текста на отдельные токены “I woke up at 6 o'clock yesterday because I had several math classes” ['I', 'woke', 'up', 'at', '6', "o'clock", 'yesterday', 'because', 'I', 'had', 'several', 'math', 'classes'] ['I', 'woke', 'up', 'at', '6', “o'clock”, 'yesterday', 'because','I', 'had', 'several', 'math','class'] Преобразование каждого отдельного токена к “нормальной” форме Stop-wordsТокенизация Лемматизация/стемминг
  18. 18. Word Embeddings Преобразование текста в формат понятный для компьютера •  Bag of Words •  TF-IDF •  Hashing Trick •  Word2Vec •  Glove
  19. 19. Намерения (intents) Высокоуровневый классификатор определяющий что хочет пользователь от системы, например: Текст Intent Привет welcome Посоветуй мне action-камеру request_recommend Расскажи о доступных скидках inform_discounts
  20. 20. Классификация текстов •  Нейронные сети •  CNN и RNN архитектуры неплохо справляются с поставленной задачей •  для данного подхода как правило используются Word2Vec или Glove •  Линейные модели/Boosting •  решает задачу с помощью построения линейной модели или бустинга •  TF-IDF, BoW как способы представления текстов •  Нет проблем с разряженностью данных
  21. 21. Выделение сущностей(NER) Выделение значимой информации из сообщений пользователя. Например: “Забронируй мне билет на рейс в Берлин на завтра” destination_city = ”Берлин” flight_day = ”на завтра”
  22. 22. Токен Тэг Забронируй O мне O билет O на O рейс O в O Берлин B-CITY на B-DATE завтра I-DATE IOB разметка
  23. 23. Таггеры •  Вероятностные модели •  Скрытые Марковские модели(HMM) •  Conditional Random Fields(CRF) •  Нейронные сети •  CNN •  RNN
  24. 24. Engine
  25. 25. Dialog Manager Компонент ответственный за принятие решения о дальнейшем ходе диалога. •  Оперирует состоянием(контекстом) диалога •  Преобразовывает внутреннее состояние в ответы пользователю с использованием сторонних подсистем На вход получает: •  намерение (intent) •  набор сущностей (slots) Выход: •  Действие (action) •  Данные необходимые для генерации ответа
  26. 26. Варианты построения •  if-else/switch •  Конечный автомат •  Целеориентированный •  ML-модели
  27. 27. if/else/switch Фраза Ответ Привет Добрый день Как дела? Спасибо, хорошо Который сейчас час? Cейчас, %time% Пока До свидания Какая температура на улице? Сегодня %temp% Как тебя зовут? Меня зовут Siri:)
  28. 28. if/else/switch (continued) Плюсы: •  Легко создать •  Легко поддерживать Минусы: •  Крайне ограниченные возможности •  Фактически нет контекста(в базовом подходе)
  29. 29. Конечный автомат •  Граф всех возможных состояний •  Переходы между ними •  На каждый ответ пользователя происходит переход из одного состояний в другое Пример: •  голосовое меню в службе поддержки
  30. 30. Конечный автомат (continued) Плюсы: •  Более сложные сценарии •  Когда всё идет по известному сценарию всё относительно хорошо Минусы: •  Крайне сложно расширять и поддерживать, чем сложнее моделируемые диалоги тем хуже дела с поддержкой. •  Сложно сделать качественный fallback-сценарий
  31. 31. Целеориентированный •  Механика заполнения слотов перед выполнением какого-либо действия ботом(например заказ билета в системе). Фокус на действиях а не состояниях диалога в конкретный момент времени. •  Базируется на slot-filing подходе •  Система может содержать несколько ботов которые будут выполнять те или иные действия
  32. 32. Целеориентированный Плюсы •  Легко поддерживать •  Гибкий дизайн •  Легкий Fallback Минусы •  Все еще hard-code •  Если NLU ошиблось - скорее всего будет много проблем
  33. 33. ML-подход Принятие решения о последующих шагах, а с помощью ML моделей Классификатор: •  Выбирает нужное действие •  Позволяет гибко обучать •  Может использовать довольно сложные модели
  34. 34. ML-подход (continued) •  Плюсы •  Более гибок в сравнении с предыдущими •  Использует опыт предыдущих диалогов для ведения нового •  Минусы •  Решение принимает модель, сложно быстро поправить баг в принятии решении •  L2 уровень - модель над моделью, зависит от NLU дороже в обучении и использовании
  35. 35. Муки выбора Хорошие решения ▪  Целеориентированные - де-факто оптимальное решение для базовых задач решаемых ботом ▪  ML-enabled Dialog Manager - если есть большой корпус диалогов пользователей и хорошо было бы выделить эти паттерны ▪  Switch - когда нужно что-то простое Не очень хорошие решения: ▪  Конечный автомат - велики риски утонуть в его поддержке
  36. 36. Онтология ▪  Для работы с предметной область хорошо иметь ее описание. ▪  Подобное описание позволяет находить связи между сущностями, строить иерархии и т.д. ▪  Онтология != таксономия
  37. 37. Онтология (continued) Как построить: •  Графы содержащие разные типы связей и сущности. Реализация: •  Neo4J Применение: •  Поиск связей между выделенными NER слотами и содержимым хранилища объектов
  38. 38. Fallback-компонент Варианты: •  Перевести диалог на оператора •  Попросить пользователя переформулировать вопрос •  Попытаться поддержать диалог в сложившейся ситуации •  Fallback на случай когда агент не уверен в том какое действие предпринять в данный момент •  Сводится к использованию Seq2Seq моделей для генерации ответа на естественном языке •  Нужно аккуратно подбирать датасеты
  39. 39. Генерация ответов (NLG) Варианты реализации: ▪  шаблоны a.  hello -> “Привет, %username%!” b.  how_are_you_response -> “Лучше и быть не может” c.  ask_price -> “В какой город вы хотите полететь из %city_from%?” ▪  seq2seq a.  генерация ответов на основании большого разговорного корпуса (например, субтитры к фильмам)
  40. 40. Выводы •  На рынке доступно довольно большое количество готовых SaaS-решений, которые хороши на ранних этапах разработки но накладывают довольно большой ряд ограничений •  Для работы с естественной речью пользователя минимально нужно 2 компонента для распознавания NLU (Intents, NER) •  Действительно хорошие решения это не только ML но и еще платформа выстроенная вокруг него. •  В зависимости от задачи и исходных данных могут сработать те или иные решения
  41. 41. Спасибо!
  42. 42. QA

×