Миграция проектов на CAILA
Для проектов, созданных с использованием паттернов или групп примеров, доступна миграция на NLU CAILA.
При этом для проекта будут доступны все функциональные возможности CAILA: распознавание интентов, использование системных и пользовательских сущностей, разметка слотов и слот-филлинг, CAILA API и др.
В статье мы рассматриваем алгоритм миграции проектов на CAILA:
- Изменения конфигурационного файла проекта.
- Миграция настроек NLU.
- Настройка правил активации.
- Тестирование и обновление сценария.
Конфигурационный файл
Укажите в конфигурационном файле chatbot.yaml параметры:
botEngine: v2
language: ru
sts:
noMatchThreshold: 0.2
caila:
noMatchThreshold: 0.2botEngine— тип классификатора, для использования CAILA укажитеv2.language— укажите язык для совместимости с классификатором STS.noMatchThreshold— параметр, задающий минимально необходимую похожесть фразы на один из классов. В ходе разработки NLU-сервиса было эмпирически определено, что оптимальное значение этого параметра 0.2.
Обратите внимание, что мы устанавливаем также значение noMatchThreshold для классификатора STS. Таким образом мы добиваемся обратной совместимости проекта.
Миграция настроек NLU
Большинство настроек NLU в chatbot.yaml при миграции на CAILA становятся неактивными. Некоторые настройки, вы можете определить при настройке проекта в разделе Настройки NLU.
Изменения рассмотрим на примере настроек проекта с классификатором STS:
nlp:
morphology: myStem
tokenizer: myStem
vocabulary: common-vocabulary.json
lengthLimit:
enabled: true
symbols: 400
words: 100000
timeLimit:
enabled: true
timeout: 10000
spellcheck:
enabled: true
dictionary: dict.txt
frequency: frequency.txt
minWordLengthForEditDistance: 3
maxWordEditDistance: 0
speller:
dictionary: speller.dict
classifier:
enable: true
engine: sts
noMatchThreshold: 0.2
parameters:
algorithm: aligner2morphology— параметр неактивен, разметка текста выполняется в CAILA. Переопределение доступно в расширенных настройках NLU.tokenizer— параметр неактивен, разметка текста выполняется в CAILA. Переопределение доступно в расширенных настройках NLU.vocabulary— параметр неактивен, переопределение невозможно.timeLimit— параметр активен только для теговq,e,eg. Для тегаintentзначение задано по умолчанию, переопределение невозможно.enabled— параметр неактивен.timeout— параметр неактивен.
spellcheck— модуль коррекции опечаток, параметр неактивен. Формат словаря несовместим с CAILA. Создайте и загрузите словарь нового формата.speller— модуль коррекции опечаток нового формата, параметр неактивен. Формат словаря совместим с CAILA. Вы можете загрузить словарь при помощи CAILA API.classifer— параметр активен только для теговq,e,eg. Для тегаintentзначение задано по умолчанию, переопределение невозможно.noMatchThreshold— параметр неактивен, вместо него используется параметрsts.noMatchThreshold.
Модуль коррекции опечаток
Встроенный глобальный модуль коррекции опечаток позволяет исправлять орфографические ошибки в запросах клиентов. Его можно комбинировать с пользовательским словарем. Таким образом, слова из доменной области будут исправлены при помощи словаря проекта, а все остальные — встроенным глобальным модулем.
Если вы ранее использовали словарь .dict, то вы его можете перенести в проект при помощи CAILA API Direct.
Токенизация и лемматизация
По умолчанию для проектов на русском языке используется токенизатор udpipe. По результатам тестов было установлено, что это лучшее решение для токенизации и лемматизации.
Если ваш проект был разработан с использованием паттернов или классификатора STS, рекомендуем использовать токенизатор morphsrus или mystem.
Дополнительные параметры конфигурации NLU
Перейдите к редактированию проекта. Здесь укажите дополнительные параметры конфигурации: язык NLU, алгоритм классификатора, часовой пояс, настройки NLU.
Настройка правил активации
Для определения намерения клиента вы можете использовать паттерны, примеры фраз классификатора STS и классификатор CAILA cовместно. Механизм срабатывания стейтов при совместном использовании интентов, паттернов и групп примеров вы можете задать в сценарии бота.
Подробнее о механизме правил активации
Справочник примеров
Если в проекте использовался классификатор STS, то вы можете перенести справочник примеров в обновленный проект.
Для этого перейдите на страницу Интенты. Вверху дерева интентов нажмите Импорт > загрузите .json файл.
CatchAll
Обратите внимание, что при совместном использовании NLU-сервиса с паттернами и примерами фраз классификатора, не используется подобный CatchAll:
state: CatchAll
q!: *
a: Не понялДля непредусмотренных сценарием запросов пользователя используйте event: noMatch:
state: CatchAll
event: noMatch
a: Вы сказали: {{ $request.query }}
Тестирование и обновление сценария
Для отладки сценария используйте тестовый виджет, встроенный в редактор сценариев.
При дальнейшем обновлении сценария мы рекомендуем использовать активационное правило intent, системные и кастомные сущности, слот-филлинг и другие возможности NLU-ядра CAILA.