Ниже перечислены шаги подключения классификатора к смартапу.
Настройка конфигурационного файла
Первый шаг – это задание параметров в конфигурационном файле смартапа 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 // указывается при использовании группы примеров