Подключение классификатора

Ниже перечислены шаги подключения классификатора к смартапу.

Настройка конфигурационного файла

Первый шаг – это задание параметров в конфигурационном файле смартапа chatbot.yaml.

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: 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    // указывается при использовании группы примеров

Заметили ошибку?

Выделите текст и нажмите Ctrl + Enter, чтобы сообщить нам о ней