Чтение онлайн

ЖАНРЫ

Машинное обучение и Искусственный Интеллект
Шрифт:

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

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

И это можно легко достичь с помощью системных объектов.

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

И

среди них, существует объект @sys-location, который будет определять для нас местоположение и будет обрабатывать любой город (или штат, страну и т. д.).

И теоретически нам даже не нужна наша сущность @location, мы могли бы просто использовать @sys-location.

Хотя здесь есть два ограничения:

Вы не можете определять синонимы для городов, обнаруженных с помощью @sys-location.

И нечеткое сопоставление в настоящее время недоступно для сущности @sys-location.

Чтобы добавить сущность @sys-location, нажмите «Системные сущности» в разделе «Сущности» вашего навыка.

И включите @sys-location.

Теперь, попробуйте ввести вопрос hours for Toronto.

Вы заметите, что обнаружены сущности @sys-location и @location.

Импорт и экспорт сущностей с помощью файлов CSV работает очень похоже на намерения.

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

Кроме того, вы можете импортировать сущности, нажав кнопку «Импортировать» рядом с «Create entity».

Загрузите файл CSV с двумя новыми сущностями, который прилагается к лекции.

И импортируйте его.

После успешной загрузки и импорта сущностей вы должны увидеть их в списке.

Теперь, давайте, наконец, рассмотрим третий компонент диалогового навыка.

А именно сам диалог.

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

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

Например, когда пользователь приветствует нас, мы можем захотеть ответить «Привет! Могу я чем-нибудь помочь?".

То же самое верно и для более сложных запросов.

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

Диалог – это дерево узлов, и каждый узел обычно обрабатывает один конкретный сценарий.

Например, здесь у нас есть три узла.

Первый узел – это Welcome, который обрабатывает приглашение чатбота.

Другими

словами, наше приветствие при первом появлении пользователя.

Затем у нас есть узел Greetings для ответа на приветствие пользователя.

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

Welcome и Anything else – это два узла по умолчанию, созданные для вас при первом создании диалога для вашего чат-бота.

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

Каждому такому узлу дается имя.

Далее у нас есть условие, которое определяет, когда узел должен быть запущен.

В этом примере, узел будет запущен, если в пользовательском вводе обнаружено намерение #greetings.

Условие может быть как простым, так и сложным логическим выражением.

В большинстве случаев это условие будет проверять намерение, сущность или их комбинацию.

Затем у нас есть блок ответа, где мы указываем, что ответить пользователю.

В этом случае просто: «Привет. Чем я могу вам помочь?»

Этот блок ответа имеет много вариантов.

Ответ может быть изображением или некоторыми параметрами, которые может выбрать пользователь.

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

Мы даже можем прикрепить условие к каждому отдельному ответу в пределах одного и того же узла.

Наконец, мы можем указать, что происходит после того, как мы выдали ответ.

Как правило, мы просто ждем, когда пользователь скажет что-то еще, и это действие по умолчанию.

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

Запуск узлов выполняется сверху вниз в диалоге.

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

Если условие не выполнено, мы перейдем ко второму узлу.

Если и этот узел не соответствует критериям, мы рассмотрим третий узел и так далее.

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

Вот почему так важно, чтобы резервный узел Anything else находился в самом низу дерева узлов.

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

Это гарантирует, что у нас всегда есть ответ для пользователя, например: «Я не понимаю, не могли бы вы перефразировать?».

По этой же причине у нас есть узел Welcome в самом вверху, приветствующий пользователя.

У этого узла есть специальное условие приветствия, которое выполняется только в начале разговора с пользователем.

Размещая его наверху, мы гарантируем, что что этот узел выполняется до любого другого узла.

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

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

Поделиться с друзьями: