Подключение классификатора к боту Устарело
Использование классификатора на примерах устарело начиная с версии 1.10.0. Подробнее о миграции проектов на CAILA.
Для того, чтобы подключить классификатор к боту, выполните следующие шаги:
- В конфигурационном файле бота
chatbot.yamlзадайте параметры для NLP-функций платформы:
morphology
Позволяет выбрать библиотеку для морфологического анализа слов. Используется при обработке паттернов ~, $lemma, $morph, а так же в функции $nlp.parseMorph.
Укажите одну из библиотек:
aot— используется библиотека от AOT.ru;myStem— используется утилита myStem;pyMorphy— используется библиотека pyMorphy, наиболее качественный анализатор для русского языка.
tokenizer
Токенизатор позволяет задать правила, используемые для разбиения текста на слова.
Поддерживаемые типы токенизаторов:
regexp— простой токенизатор на регулярных выражениях.srx— конфигурируемый токенизатор на базе настраиваемых правил сегментации. При указании данного токенизатора потребуется указать файл грамматики в параметреsrxPath.myStem— сегментация посредством утилиты myStem. Является предпочтительным токенизатором при сипользовании паттернов и классификатора.
vocabulary
Словарь весов слов по ранжированию паттернов. По умолчанию: common-vocabulary.json.
lengthLimit, timeLimit
Позволяет изменить лимиты на размер входящего сообщения и на время обработки NLP-модуля.
Параметры по умолчанию:
nlp:
lengthLimit:
enabled: true
symbols: 400
words: 100000
timeLimit:
enabled: true
timeout: 10000Для lengthLimit:
symbols— устанавливает лимит на количество символов во входящем сообщении. При превышении этого лимита сработает событиеlengthLimit, которое может быть обработано в сценарии бота тегомevent: lengthLimit.words— устанавливает лимит на количество слов во входящем сообщении. При превышении этого лимита сработает событиеlengthLimit, которое может быть обработано в сценарии бота тегомevent: lengthLimit.
Счетчик words приравнивает символы ! , . : ; ? " ' ( ) * / [ \ ] { | } к словам, учитывайте это при указании лимита.
Для timeLimit:
timeout— устанавливает максимальное время обработки запроса в NLP-модуле в миллисекундах. При превышении этого лимита сработает событиеtimeLimit, которое может быть обработано в сценарии бота тегомevent: timeLimit.
Если стейт-обработчик для этого события в сценарии отсутствует, при превышении лимита будет возникать ошибка.
Пример NLP-модуля:
nlp: # параметры для NLP-функций платформы
morphology: myStem # библиотека для морфологического анализа слов
tokenizer: myStem # токенизатор, задает правила для разбиения текста на слова
vocabulary: common-vocabulary.json # словарь весов слов для ранжирования паттернов
lengthLimit:
enabled: true
symbols: 400 # лимит на количество символов во входящем сообщении
words: 100000 # лимит на количество слов во входящем сообщении
timeLimit:
enabled: true
timeout: 10000 # максимальное время обработки запроса в NLP-модуле в миллисекундах- Далее задайте параметры классификации:
engine
Тип классификатора, по умолчанию sts.
noMatchThreshold
Значение нижнего порога похожести, при котором нужно считать фразы непохожими. В ходе разработки классификатора было эмпирически определено, что оптимальное значение этого параметра 0.2.
parameters: algorithm
Тип используемого алгоритма классификации. Используется match-aligner — основной тип для sts-классификатора. Также вы можете использовать aligner и aligner2 — альтернативная реализация алгоритма классификации.
- Далее сконфигурируйте алгоритм классификатора. Все параметры настроены по умолчанию. Необходимо только указать словарь весов, он совпадает со словарем, указанным в блоке
nlp. По умолчанию:common-vocabulary.json.
Пример конфигурационного файла chatbot.yaml с подключенным классификатором:
name: demo
entryPoint:
- main.sc
tests:
exclude:
- tests.xml
messages:
onError:
defaultMessage: Ой, кажется, что-то пошло не так.
locales:
ru: Ой, кажется, что-то пошло не так.
nlp: # параметры для NLP-функций платформы
morphology: myStem # библиотека для морфологического анализа слов
tokenizer: myStem # токенизатор, задает правила для разбиения текста на слова
vocabulary: common-vocabulary.json # словарь весов слов для ранжирования паттернов
lengthLimit:
enabled: true
symbols: 400 # лимит на количество символов во входящем сообщении
words: 100000 # лимит на количество слов во входящем сообщении
timeLimit:
enabled: true
timeout: 10000 # максимальное время обработки запроса в NLP-модуле в миллисекундах
classifier: # параметры для классификатора
enable: true
engine: sts # тип классификатора
noMatchThreshold: 0.2
parameters:
algorithm: aligner2 # алгоритм классификации
aligner:
vocabulary: common-vocabulary.json
exampleGroups:
- src/dictionaries/examples.json # указывается при использовании группы примеров