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

Я создал бота для пиццы в диалоговом режиме. Сценарий вроде ..

Бот говорит: Привет, что ты хочешь.

Пользователь говорит: я хочу пиццу.

Если пользователь говорит I want watermelon или I love pizza, тогда диалоговое окно должно ответить сообщением об ошибке и снова задать тот же вопрос. После получения правильного ответа от пользователя бот должен предложить второй лайк

Бот говорит: Какую пиццу ты хочешь.

Пользователь говорит: Я хочу пиццу с грибами (любую).

Если пользователь предоставляет какие-то мусорные данные, такие как I want icecream или I want good pizza, бот снова должен ответить с ошибкой и задать тот же вопрос. Я обучил бота намерениям, но проблема заключается в проверке ввода данных пользователем. Как я могу сделать это возможным в диалоговом режиме? Обзор обучающих данных и вывода  данные обучения


person raj_tx    schedule 30.10.2018    source источник


Ответы (2)


Если вы уже создали разные обучающие фразы, недопустимые фразы обычно запускают резервное намерение. Если вы просто используете @sys.any как тип параметра, он заполнит его чем угодно, поэтому вам следует определить более узкие типы сущностей.

В приведенном вами примере Intent у вас есть несколько обучающих фраз, но Dialogflow использует эти обучающие фразы как руководство, а не как абсолютные строки, которые необходимо сопоставить. Из того, что вы его натренировали, похоже, что такие фразы, как I want. + Pizza, должны быть сопоставлены, поэтому модель NLU может читать это таким образом.

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

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

Помните также, что разговор может происходить примерно так:

Бот говорит: Привет, что ты хочешь.

Пользователь говорит: Я хочу пиццу с грибами.

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

person Prisoner    schedule 30.10.2018
comment
Но проблема в том, что когда bot says : what do you want? & я отвечаю I want good pizza, это подсказывает следующий вопрос. Вместо того, чтобы бросать какое-либо резервное намерение. Здесь хорошая пицца - это не то, что мы ожидаем. Ответ должен быть похож на пиццу с грибами, пиццу с курицей и т. Д. Только тогда он должен вызывать следующий вопрос. - person raj_tx; 30.10.2018
comment
@raj_tx создавали ли вы какую-нибудь настраиваемую сущность для типа пиццы? если да, то вам следует ограничить объект, чтобы он использовал только эти примеры. Вы можете сделать это, сняв флажок allow automated expansion - person sid8491; 30.10.2018
comment
@raj_tx - нам нужно увидеть, какие обучающие фразы вы используете для каждого намерения и как вы определяете параметры для дальнейшей оценки. Я обновил свой ответ, чтобы поговорить о типах сущностей и параметрах, на которые вам следует обратить внимание. - person Prisoner; 30.10.2018
comment
(Если хотите, обновите исходный вопрос, чтобы показать определения намерений, и мы сможем помочь вам в дальнейшем.) - person Prisoner; 30.10.2018
comment
Я пробовал это, также объявляя сущности. Но я получаю такой же ответ. - person raj_tx; 30.10.2018
comment
Можете ли вы показать намерение и сущности, которые вы использовали, чтобы мы могли попытаться продублировать и понять, почему это могло сработать именно так? - person Prisoner; 30.10.2018

Тип пиццы (например, грибная, куриная и т. Д.) Должен быть индивидуальным.

сущность вкусов пиццы

Затем, по вашему желанию, вы должны определить обучающие фразы, как у вас, но убедитесь, что объект отмечен, и что вы также добавляете шаблон для ответа пользователя:

намерение

Здесь следует отметить три основных момента:

  1. Объекты отмечены
  2. Используется шаблон. Чтобы создать шаблон, щелкните символ цитаты в обучающих фразах, как показано на рисунке ниже. Убедитесь, что здесь снова используется ваша сущность
  3. Сделайте тип пиццы обязательным параметром. Таким образом, он не перейдет к следующему вопросу, если не будет предоставлен действительный ответ.

переход от примера к шаблону и наоборот

Последний совет - приложить еще немного усилий для разработки взаимодействия и ответов. Приветствовать пользователей словами «чего вы хотите» - не лучший опыт. Кроме того, своим подходом вы пытаетесь заставить их выбрать один конкретный путь, но это не то, каким должно быть диалоговое приложение. Дополнительную информацию об этом можно найти здесь. Лучше поприветствовать пользователей, объяснить, что они могут делать с вашим приложением, и сообщить им о своих возможностях. Пример: - Привет, добро пожаловать в приложение "Пицца"! Я здесь, чтобы помочь вам найти для вас идеальную пиццу [примечание: здесь вам нужно добавить любые другие действия, которые может выполнять ваш бот, например, отслеживать заказ]! Наши самые популярные пиццы - это грибная, куриная и маргарита? Вы уже знаете, чего хотите, или вам нужна помощь?

person Eliza Camber    schedule 31.10.2018
comment
Спасибо за ваши усилия. Сейчас я работаю над другим делом, например, опрашиваю пользователя о технических навыках. Теперь у меня большие отклики пользователей. - person raj_tx; 31.10.2018