как проверить выражение пользователя в диалоговом потоке - PullRequest
0 голосов
/ 30 октября 2018

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

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

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

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

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

entity for the pizza flavours

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

intent

Здесь нужно отметить 3 основные вещи:

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

switching from example to template and vice versa

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

0 голосов
/ 30 октября 2018

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

В приведенном вами примере «Намерение» у вас есть несколько обучающих фраз, но Dialogflow использует эти обучающие фразы как руководство , а не как абсолютные строки, которые должны совпадать. Из того, что вы натренировали, выясняется, что такие фразы, как «Я хочу. + Пицца», должны быть сопоставлены, чтобы модель NLU могла прочитать это таким образом.

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

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

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

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

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

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

...