DeepPavlov — диалоговый ИИ-фреймворк с открытым исходным кодом
Вот несколько ключевых концепций и как начать использовать DeepPavlov
Введение
В целом, целью большинства сред разработки чат-ботов является создание среды, которая позволяет техническим специалистам среднего уровня легко адаптироваться.
И только выполнение НЛП позволяет создать простую среду ввода-вывода данных.
По мере того, как диалоговый агент растет и развивается, появляется все больше сложностей, учитывая такие элементы, как управление диалогами, поддержание контекста. Также включая другие диалоговые элементы, такие как:
- Многозначность
- отступление
- Управление резервным распространением
- Восстановление контекста
- Автообучение
- Домен и неактуальность
- Обработка составных намерений
- Смешанная модальность и разговорные компоненты
- Контекстные объекты
- Вариация
Следовательно, необходима гибкость, а также интерфейс для разработки и управления состоянием диалога. Задача состоит в том, чтобы иметь естественный и адаптивный диалог, который также был бы предсказуемым и управляемым.
Чем более бескодовым или малокодовым становится решение, тем меньше вариантов тонкой настройки становится меньше. Тем более тонкая настройка, сложность.
Интерфейсы с низким кодом доступны через один или набор инструментов, которые по своей природе очень графичны; и изначально интуитивно понятен в использовании. Таким образом создается видимость быстрой адаптации и ускоряется процесс доставки решений в производство.
Как и в случае со многими подходами такого рода, поначалу это кажется очень хорошей идеей. Однако по мере того, как начинают играть роль функциональность, сложность и масштабируемость, возникают огромные препятствия.
Когда кто-то говорит о способности или степени тонкой настройки, что именно он имеет в виду? В этом разделе мы рассмотрим несколько общих элементов, составляющих тонкую настройку.
- Формы и слоты
- Намерения
- Сущности
- Генерация естественного языка (NLG)
- Диалоговое управление
- Отступление
- Многозначность
Где вписывается DeepPavlov?
DeepPavlov определенно находится на более высоком уровне; будучи нативной/про-кодовой структурой с подходом машинного обучения.
DeepPavlov ссылается на семантический фрейм. Это включает в себя понимание естественного языка, включая обнаружение домена, намерение и объекты.
В мире DeepPavlov цифровой агент состоит из набора навыков, которым управляет Менеджер навыков.
Навык состоит из разных Компонентов.
- Навык выполняет цель пользователя в определенной области.
- Модель — это любая модель НЛП, которая не обязательно общается с пользователем на естественном языке.
- Компоненты — это многократно используемые функциональные части модели или навыка.
- Существуют модели на основе правил и модели машинного обучения.
- Модели машинного обучения можно обучать независимо и в сквозном режиме, объединяя их в цепочку.
- Диспетчер навыков выполняет выбор правильного навыка для формирования ответа.
- Цепник строит конвейер модели из разнородных компонентов (на основе правил/ML/DL). Это позволяет обучать и делать выводы
Целенаправленный бот в DeepPavlov
Платформа должна быть снабжена набором данных (RASA или DSTC2), обучить модель, загрузить ее, а затем использовать, либо вызывая их изначально из Python, либо повышая ее как микросервисы, а затем вызывая их. через стандартный REST API DeepPavlov.
В настоящее время DeepPavlov поддерживает два способа определения модели предметной области и поведения заданного целевого навыка — RASA (domain.yml, nlu.md, stories.md) или формат DSTC2.
Данные обучения/проверки/тестирования хранятся в файлах JSON… ниже приведен пример данных обучения:
[ [ { "speaker": 2, "text": "Hello, welcome to the Cambridge restaurant system. You can ask for restaurants by area, price range or food type. How may I help you?", "slots": [], "act": "welcomemsg" }, { "speaker": 1, "text": "cheap restaurant", "slots": [ [ "pricerange", "cheap" ] ] }, { "speaker": 2, "text": "What kind of food would you like?", "slots": [], "act": "request_food" }, { "speaker": 1, "text": "any", "slots": [ [ "this", "dontcare" ] ] }, { "speaker": 2, "text": "What part of town do you have in mind?", "slots": [], "act": "request_area" }, { "speaker": 1, "text": "south", "slots": [ [ "area", "south" ] ] }, { "speaker": 2, "text": "api_call area=\"south\" food=\"dontcare\" pricerange=\"cheap\"", "db_result": { "food": "chinese", "pricerange": "cheap", "area": "south", "addr": "cambridge leisure park clifton way cherry hinton", "phone": "01223 244277", "postcode": "c.b 1, 7 d.y", "name": "the lucky star" }, "slots": [ [ "area", "south" ], [ "pricerange", "cheap" ], [ "food", "dontcare" ] ], "act": "api_call" }, { "speaker": 2, "text": "The lucky star is a nice place in the south of town serving tasty chinese food.", "slots": [ [ "area", "south" ], [ "pricerange", "cheap" ], [ "name", "the lucky star" ], [ "food", "chinese" ] ], "act": "inform_area+inform_food+offer_name" },
Теперь вы можете перебирать пакеты предварительно обработанных диалогов DSTC-2:
User utterances: ---------------- [ {'prev_resp_act': None, 'text': ''}, {'prev_resp_act': 'welcomemsg', 'text': 'id like to find a restaurant'}, {'prev_resp_act': 'request_pricerange', 'text': 'in appleton wiscon'}, { 'db_result': { 'addr': '88 mill road city centre', 'area': 'centre', 'food': 'chinese', 'name': 'rice house', 'phone': '01223 367755', 'pricerange': 'cheap'}, 'prev_resp_act': 'api_call', 'text': 'in appleton wiscon'}, {'prev_resp_act': 'offer_name', 'text': 'restaurant'}, { 'prev_resp_act': 'offer_name', 'slots': [['food', 'irish']], 'text': 'irish food'}, { 'db_result': {}, 'prev_resp_act': 'api_call', 'slots': [['food', 'irish']], 'text': 'irish food'}, {'prev_resp_act': 'canthelp_food', 'text': 'appleton wisconsin'}, {'prev_resp_act': 'canthelp_food', 'text': 'thank you'}, {'prev_resp_act': 'canthelp_food', 'text': 'good bye'}] System responses: ----------------- [ { 'act': 'welcomemsg', 'text': 'Hello, welcome to the Cambridge restaurant system. You can ' 'ask for restaurants by area, price range or food type. How ' 'may I help you?'}, { 'act': 'request_pricerange', 'text': 'Would you like something in the cheap, moderate, or expensive ' 'price range?'}, { 'act': 'api_call', 'text': 'api_call area="dontcare" food="dontcare" ' 'pricerange="dontcare"'}, { 'act': 'offer_name', 'slots': [['name', 'rice house']], 'text': 'Rice house is a great restaurant.'}, { 'act': 'offer_name', 'slots': [['name', 'rice house']], 'text': 'Rice house is a great restaurant.'}, { 'act': 'api_call', 'slots': [['food', 'irish']], 'text': 'api_call area="dontcare" food="irish" pricerange="dontcare"'}, { 'act': 'canthelp_food', 'slots': [['food', 'irish']], 'text': 'I am sorry but there is no irish restaurant that matches your ' 'request.'}, { 'act': 'canthelp_food', 'slots': [['food', 'irish']], 'text': 'I am sorry but there is no irish restaurant that matches your ' 'request.'}, { 'act': 'canthelp_food', 'slots': [['food', 'irish']], 'text': 'I am sorry but there is no irish restaurant that matches your ' 'request.'}, {'act': 'bye', 'text': 'You are welcome!'}]
Тестирование бота после обучения в блокноте Collab. Ссылка на блокнот ниже.
Подробнее о подходах к разработке диалогов
Подробнее читайте здесь…
Холст Дизайна
Преимуществаэтого подхода:
- Простота сотрудничества
- Панорамирование и просмотр дизайна
- Увеличивайте и уменьшайте масштаб, чтобы увидеть больше или меньше деталей
- Совмещение процесса проектирования и разработки.
- Подходит для быстрого прототипирования и совместного творчества.
Недостатокэтого подхода:
- Сложность крупных внедрений
- Управление изменениями и оценка воздействия
- Устранение неполадок и определение точек разрыва разговора.
- Несколько условий для каждого диалогового узла, на которые влияет изменение параметров.
Конфигурация диалога
Преимуществаэтого подхода:
- Чуть более сжатое изложение беседы
- Ограничительный характер запрещает импульсивные изменения.
- Более технический характер с различными уровнями конфигурации.
- Подходит для быстрого прототипирования.
Недостатокэтого подхода:
- Сложно представить и провести обход
- Для более крупных разговоров существует возрастающая сложность и перекрестные ссылки.
- Понимание того, как изменения параметров и настроек будут каскадными.
- Не подходит в качестве инструмента дизайна разговора.
Собственный код
Преимуществаэтого подхода:
- Неправильный с точки зрения среды разработки язык.
- Гибкость и приспособленность к изменениям масштабирования (в принципе)
- Требуются неспециализированные, специальные навыки или специальные знания.
- Портирование кода или даже повторное использование.
Недостатокэтого подхода:
- Дизайн и реализация далеки друг от друга.
- Интерпретация дизайна может быть проблемой.
- Потребуется еще один, скорее всего, специализированный инструмент проектирования.
- Сложность управления различными перестановками в диалоговом окне все еще должна существовать; внутри кода.
Истории машинного обучения
Преимуществаэтого подхода:
- Все знают, что конечный автомат нужно упразднить; это достигает этого.
- Время обучения разумное.
- Специальное или специальное оборудование не требуется.
- Никаких специализированных экспертов по машинному обучению и специалистов по данным не требуется… ИИ для масс.
- Сложность скрыта в представленном упрощенном виде.
Недостатокэтого подхода:
- Кому-то этот подход может показаться абстрактным и неосязаемым.
- Опасения в случаях, когда необходимо собрать обязательные данные. Или там, где законодательство диктует условия. Однако здесь в игру вступает политика форм.
Заключение
Я нашел довольно много ссылок на сайте DeepPavlov неработающими, а некоторые демоверсии не работали. Тем не менее, нет никаких сомнений в технической и архитектурной проницательности платформы диалогового ИИ DeepPavlov.
DSTC2 очень похож на Rasa ML Stories.
Преимущества:
- DeepPavlov открыт и легко настраивается.
- Масштабируемость и гибкость имеют первостепенное значение.
- Комплексная документация.
Задачи:
- Чрезвычайно крутая кривая обучения.
- Сложная и сложная среда.
- Выполнение задач НЛП будет намного проще, чем диалоговый интерфейс.
- Построение и производство крупномасштабного решения потребуют замечательной технической проницательности.
«Подпишитесь на мою рассылку.
НЛП/НЛУ, Чат-боты, Голос, Разговорный UI/UX, CX Designer, Разработчик, Вездесущие пользовательские интерфейсы, Ambient…кобусгрейлинг. мне"