Обогатите сущности чат-бота шаблонами, ролями и группами с помощью Rasa

… И фиксируйте концепции в пользовательском вводе

Введение

Диалоговый интерфейс — это приглашение, которое вы предлагаете пользователю вводить свои данные в неструктурированной и диалоговой манере.

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

Менее идеальна ситуация, когда чат-бот запрашивает информацию, уже предоставленную пользователем.

Следовательно, вынуждая пользователя вводить данные в структуру, приемлемую для чат-бота. Имея в виду, что структура не видна пользователю.

Разговор слева — классический пример того, как чат-бот определяет только основное намерение пользователя при первом проходе.

Сущности игнорируются и снова запрашиваются; один за раз.

Чтобы подойти к этому, нужно справиться с этим, как мы это делаем в разговоре между людьми.

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

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

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

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

Давайте посмотрим, как Роли и Шаблоны сущностей могут быть реализованы на примере простого банковского проекта.

Таким образом, разные роли можно рассматривать как подмножества или типы сущности Города.

К сущности можно добавить несколько ролей.

Таким образом сохраняется контекстная информация для сущности. Мы также собираемся объединить роли, определенные для сущности, с шаблоном.

Как реализовать роли и шаблоны с помощью Rasa?

Лучший способ проиллюстрировать использование ролей сущностей и паттернов в Rasa — это пример. Давайте рассмотрим базовый банковский пример.

В файле nlu.md я определил намерение обменять деньги из одной валюты в другую. Это пример высказывания пользователя с составными объектами.

В высказывании пользователя определены три объекта:

  • Сделка
  • Валюта
  • Дата/время

Вот пример определения сущностей с ролями в файле nlu.md.

- intent: exchange
examples: |
- I want to [change](transaction) [US dollars]{"entity": "currency", "role": "change_from"} to [Euros]{"entity": "currency", "role": "change_to"} on [Friday](date_time)
- Can I [exchange](transaction) [euros]{"entity": "currency", "role": "change_from"} for [Rand]{"entity": "currency", "role": "change_to"} on [Saturday](date_time)
- give me a rate to [change](transaction) [pounds sterling]{"entity": "currency", "role": "change_from"} for [Japanese Yen]{"entity": "currency", "role": "change_to"} on [Monday](date_time)
- what are rates to [convert](transaction) [Australian Dollar]{"entity": "currency", "role": "change_from"} for [Russian Ruble]{"entity": "currency", "role": "change_to"} on [next week Thursday](date_time)
- I want to [change](transaction) [US dollars]{"entity": "currency", "role": "change_from"} to [Canadian dollar]{"entity": "currency", "role": "change_to"} on [Friday](date_time)

Сущность валютаразбивается на две роли:

  • Изменить с и
  • Изменить на

Вот практический пример пользовательского ввода с просьбой обменять деньги. Это выполняется с помощью Postman и API НЛУ Rasa.

Выходные данные JSON четко определяют распознанное намерение exchange. При этом идентифицируются три объекта. Объект валюта имеет дополнительное значение роль. В этом случае сегментирование валюты изменилось с и на.

Групповые объекты

Группы сущностей позволяют объединять сущности в разные группы. Используя банковский пример, я создал объект tiers. Есть 5 ярусов; Серебро, золото и бронза; сгруппированы вместе. Составление первой группы.

Платиновый и Черный сгруппированы вместе. Составление второй группы.

Это пример определения объектов с группами в файле nlu.md.

- intent: tiers
examples: |
- [Silver]{"entity": "tiers", "group": "1"} accounts have lower interest for saving than [Platinum]{"entity": "tiers", "group": "2"}
- [Gold]{"entity": "tiers", "group": "1"} accounts have lower interest for saving than [black]{"entity": "tiers", "group": "2"}- [Bronze]{"entity": "tiers", "group": "1"} accounts have lower interest for saving than [Platinum]{"entity": "tiers", "group": "2"}

И пример пользовательского высказывания, в котором упоминаются два уровня.

Результатом является вывод JSON с определенными уровнями сущности и группировкой сущности.

Вывод

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

Осторожность при использовании этой функции от Rasa:

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