Ниже перечислены шаги подключения классификатора к чат-боту.
Настройка конфигурационного файла
Первый шаг – это задание параметров в конфигурационном файле чат-бота chatbot.yaml.
morphology
Позволяет выбрать библиотеку для морфологического анализа слов. Используется при обработке паттернов ~, $lemma, $morph, а так же в функции $nlp.parseMorph.
Укажите одну из библиотек:
aot— используется библиотека от AOT.ru ;default— используется стандартная библиотека, наиболее подходящий анализатор для русского языка.pyMorphy— используется библиотека pyMorphy, наиболее качественный анализатор для русского языка.
tokenizer
Токенизатор позволяет задать правила, используемые для разбиения текста на слова.
Поддерживаемые типы токенизаторов:
regexp— простой токенизатор на регулярных выражениях.srx— конфигурируемый токенизатор на базе настраиваемых правил сегментации . При указании данного токенизатора потребуется указать файл грамматики в параметреsrxPath.default— способ сегментации по умолчанию. Является предпочтительной опцией при совместном использовании паттернов и классификатора.
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: default // библиотека для морфологического анализа слов
tokenizer: default // токенизатор, задает правила для разбиения текста на слова
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: default // библиотека для морфологического анализа слов
tokenizer: default // токенизатор, задает правила для разбиения текста на слова
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 // указывается при использовании группы примеров