Работа с классификатором Устарело
Обратите внимание, что использование классификатора на примерах устарело начиная с версии 1.10.0. Подробнее о миграции проектов на CAILA.
Перед началом работы задайте параметры классификатора в конфигурационном файле chatbot.yaml.
При использовании классификатора в сценарии используются теги:
Использование единичного примера
Использование тегов e и e! предполагает использование единичного примера: один тег — одна реплика. Например, в сценарии:
theme: /Bank
state: Credit
e!: Дайте кредит.
a: Чтобы взять кредит, вам нужно просто...
state: CatchAll
q!: *
a: Извините, я вас не понимаю.После тега e! мы прописываем фразу, с которой будут сравниваться запросы пользователей. Если запросы по смыслу похожи на реплику-пример, то они будут опознаны ботом как относящиеся к тому же классу, и поведение для них будет одинаковое.
Например, фразы "получить кредит", "как оформить кредит", "взять кредит", "дайте кредит" будут попадать в стейт Credit.
А фраза "хочу оформить кредитную карту" будет определена к стейту CatchAll.
Использование группы примеров
В случае, когда примеров много, использовать теги e и e! нецелесообразно. В таких случая стоит применять теги eg и eg! и задавать примеры в отдельном файле-справочнике. Такой справочник можно задать как с помощью графического интерфейса платформы, так и вручную. В данной статье рассмотрим заполнение справочника вручную.
Подробнее о работе с классификатором из интерфейса платформы
Работу с группой примеров можно условно разделить на этапы:
Создание справочника примеров
В папке /src/dictionaries создайте файл examples.json. Файл справочника создается в .json-форате и включает в себя массив объектов, каждый из которых описывает один класс примеров.
Пропишите в справочнике параметры, в каждом объекте могут быть определены следующие теги:
id— опциональное поле. Задаетidкласса для использования в сценариях в тегахegиeg!. Если пример не задан, тоidпо умолчанию будет равен пути класса, прописанному через точку.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