Создание чат-ботов с Dialogflow, Watson, ChatterBot и Rasa
Шрифт:
Давайте введем сыр.
Когда вы нажмете ввод, вы увидите, что сыр уже добавлен в качестве синонима.
Введем другие начинки, по возможности добавляя синонимы.
И нажмем сохранить Save.
Теперь, что насчет опции автоматического расширения.
Разрешить автоматическое расширение – это означает, что мы хотим разрешить агенту принимать термины, которые могут быть сказаны пользователем и изначально не добавлены в список.
Допустим, пользователь хочет помидоры в пиццу.
Если установлен флажок «Разрешить автоматическое расширение», то, когда пользователь заказывает
Но если вы хотите зафиксировать этот список начинок, и не хотите, чтобы новые начинки добавлялись в ваш список, вам не нужно включать эту опцию.
Теперь, мы можем промаркировать наши обучающие фразы намерения сущностью, которую мы только что создали.
Для этого откроем намерение, и в обучающей фразе дважды щелкнем слово, которое мы хотим промаркировать.
И в списке выберем нашу сущность.
Теперь термин грибы помечен сущностью pizza_topping.
Сделаем то же самое с беконом и сыром и с другими начинками.
И в конце не забудем нажать кнопку Сохранить.
И если мы теперь добавим еще одну обучающую фразу в намерение «Я хотел бы заказать пиццу с говядиной, колбасой и пепперони».
Как только мы нажмем Enter, вы увидите, что все три сущности, которые присутствуют в обучающей фразе, будут промаркированы как pizza_topping автоматически.
И так как агент автоматически маркирует соответствующие значения сущностями, имеет смысл создавать сущности перед добавлением обучающих фраз.
Теперь, когда вы создаете сущность, она может сама содержать атрибуты.
И одним из способов является использование составных сущностей.
Предположим, мы хотим создать намерение для заказа напитка.
Напиток может быть типа молочный коктейль или смузи.
Молочный коктейль и смузи являются записями в «сущности», которая называется напитком.
Кроме того, скажем, у нас есть разные вкусы и типы молока, которые можно выбрать для напитка.
И здесь мы можем использовать составную сущность, чтобы позволить агенту идентифицировать эти атрибуты, когда пользователь заказывает напиток.
Например, можно мне обезжиренный клубничный молочный коктейль?
Для этого случая создайте отдельную сущность тип молока, перечислив все виды молока, сущность вкусы.
А затем объедините эти сущности в составной сущности напитка.
Теперь, скажем, пользователь хочет указать время, когда он хочет забрать свой заказ.
В том случае, агент должен иметь возможность идентифицировать и извлечь время, в стандартном формате.
И агент сможет сообщить это время внутренней системе, ответственной за заказы.
Точно так же иногда нам нужно определить такие общие понятия, как даты, адреса, номера телефонов, имена и так далее.
Для этого можно использовать одну из системных сущностей, например, представляющую дату и время.
Системные сущности – это предварительно созданные сущности в Dialogflow, чтобы упростить обработку наиболее популярных понятий, таких как адреса, валюта, дата, время и многие другие.
Например, в обучающей фразе мы может промаркировать системной сущностью число пицц или время.
При создании сущностей необходимо помнить несколько вещей, чтобы хорошо обучить агента.
Во-первых, важно быть последовательным при маркировке сущностей в обучающих фразах.
Это поможет агенту не запутаться в том, что следует опознать в качестве данной сущности.
Например, не нужно включать предлоги в маркировку в обучающей фразе.
И нужно указать разнообразие примеров конкретной сущности в обучающих фразах.
Это позволит агенту правильно научиться распознавать эту сущность.
Dialogflow
. Контекст и выполнение
Вы когда-нибудь сталкивались с ситуацией, когда вы подходите к группе людей, и вы ловите себя на том, что пытаетесь понять, о чем они говорят?
Или если к вам приходит друг и говорит: «А как насчет завтра?»
Вы, вероятно, спросите: «Что ты имеешь в виду?»
И в этих случаях вы пытаетесь понять контекст.
То же самое происходит с чат-ботами, которым нужно знать в каком контексте пользователь общается с чат-ботом.
Например, я спрашиваю: «Что там сегодня на обед?»
И получаю в ответ: «Сэндвич».
Тогда, если я спрошу: «А как насчет ужина?», я ожидаю, что другой человек знает, что я имею в виду то, что мы собираемся съесть, а не то, во сколько мы должны отправиться на обед.
Эти сведения могут быть предоставлены агенту через контекст.
Контекст позволяет агенту отслеживать, где находится пользователь в диалоге.
В Dialogflow, контекст – это средство для приложения восстановить значения переменных, которые были упомянуты в диалоге.
И контекст позволяет агенту контролировать потоки диалога.
Это можно сделать, определив конкретные состояния, в которые диалог должен находиться в случае совпадения с конкретным намерением.