This site is no longer updated.Go to new Conversational Cloud docs

Работа с классификатором Устарело


Обратите внимание, что использование классификатора на примерах устарело начиная с версии 1.10.0. Подробнее о миграции проектов на CAILA.

Перед началом работы задайте параметры классификатора в конфигурационном файле chatbot.yaml.

При использовании классификатора в сценарии используются теги:

  • глобальные: eg! и e!;
  • локальные: eg и e.

Использование единичного примера

Использование тегов 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