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