Настройка справочника примеров
Перед началом работы подключите классификатор и укажите его параметры в файле chatbot.yaml
.
При использовании классификатора в сценарии используются теги:
Использование единичного примера
Использование тегов e
и e!
предполагает использование единичного примера: один тег — одна реплика. Например, в сценарии:
theme: /Bank
state: Credit
e!: Дайте кредит.
a: Чтобы взять кредит, вам нужно просто...
state: CatchAll
q!: *
a: Извините, я вас не понимаю.
Под тегом e!
мы прописываем фразу, с которой будут сравниваться запросы пользователей. Если запросы по смыслу похожи на реплику-пример, то они будут опознаны смартапом как относящиеся к тому же классу, и поведение для них будет одинаковое.
Например, фразы "получить кредит", "как оформить кредит", "взять кредит", "дайте кредит" будут попадать в стейт Credit
.
А фраза "хочу оформить кредитную карту" будет определена к стейту CatchAll
.
Использование группы примеров
Когда примеров много используйте теги eg
и eg!
, а примеры указывайте в отдельном файле-справочнике. Справочник заполняется вручную.
Работу с группой примеров можно условно разделить на этапы:
Создание справочника примеров
В папке /src/dictionaries
создайте файл examples.json
. Файл справочника создается в .json
-форате и включает в себя массив объектов, каждый из которых описывает один класс примеров.
В справочнике укажите параметры. В каждом объекте можно определить следующие теги:
id:
необязательное поле. Задает идентификатор класса для использования в сценариях в тегахeg
иeg!
. Идентификатор по умолчанию соответствует пути класса, записанному через точку.path:
путь к стейту, в котором вызывается классификатор для обработки конкретного класса.description:
необязательное поле. Текстовое описание класса.disabled:
задается булево значениеtrue
илиfalse
. Отключение класса примеров в классификаторе.phrases:
массив строк, который содержит примеры для класса.
Пример класса:
{
"classes": [
{
"id": "common", // id класса
"path": "/PlayGames/Games", // путь к стейту, в котором вызывается классификатор
"description": "", // описание класса
"disabled": false, // отключение класса
"phrases": [
// массив примеров
"давай поиграем в какие-нибудь игры"
]
},
{
"id": "",
"path": "/PlayGames/Games/CanYouPlay",
"description": "",
"disabled": false,
"phrases": ["ты умеешь во что-нибудь играть?", "ты знаешь какие-нибудь игры?", "ты знаешь как играть?"]
}
]
}
После подготовки справочника, укажите путь к нему в конфигурационном файле chatbot.yaml
:
exampleGroups:
- src/dictionaries/examples.json
Обращение к справочнику примеров в сценарии
Обращение к группе примеров, если id
класса прописан:
state: Order
eg!: common // прописываем id класса
a: Давай сыграем!
Обращение к группе примеров, если id
класса не указан:
state: CanYouPlay
q!: * [во что] * (умеешь/можешь/знаешь как) играть *
q!: * {игры * (знаешь/умеешь/можешь)} *
eg!: PlayGames.Games.CanYouPlay // id класса не указан, прописываем путь к стейту через символ `.`
q: * как* [игры] * || fromState = "/Education/What can you do", onlyThisState = true
script:
$temp.canYouPlay = true;
go!: ../../Games
Заметили ошибку?
Выделите текст и нажмите Ctrl
+ Enter
, чтобы сообщить нам о ней