Подключение классификатора к боту Устарело
Обратите внимание, что использование классификатора на примерах устарело начиная с версии 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 // указывается при использовании группы примеров