ym88659208ym87991671
Расширенные настройки SmartApp Brain для смартапов | Документация SmartMarket
Skip to main content

Расширенные настройки SmartApp Brain

При создании и редактировании проекта вы можете задать новые параметры SmartApp Brain.

Параметры передаются в виде валидного JSON-объекта.

danger

Параметры должны соответствовать алгоритму классификатора в проекте.

STS

Параметры для STS классификатора:

{
"patternsEnabled": true, // использование паттернов в тренировочных фразах
"namedEntitiesRequired": true, // для попадания в интент во фразе должна быть найдена системная сущность
"tokenizerEngine": "example", // токенизатор

"stsSettings": { // параметры для STS классификатора
"exactMatch": 0, // вес точного совпадения слов в предложениях
"lemmaMatch": 0, // вес совпадения слов по леммам
"jaccardMatch": 0,
"jaccardMatchThreshold": 0, // вес посимвольного сравнения слов мерой Жаккара
"acronymMatch": 0, // вес сравнения слов как акронимов
"synonymMatch": 0.0, // вес для синонимов
"synonymContextWeight": 0.0, // вес, с которым применяется при ранжировании значение weight из справочника синонимов
"patternMatch": 1.0, // вес соответствия по паттернам
"throughPatternMatch": 0.0, // вес соответствия по найденным сущностям в примере и входном тексте
"wordSequence1": 0, // вес схожих последовательностей длины 1
"wordSequence2": 0, // вес схожих последовательностей длины 2
"wordSequence3": 0, // вес схожих последовательностей длины больше 2
"intermediateAlternativesLimit": 5, // порог отсечения промежуточных альтернатив, которые обрабатывает алгоритм
"finalAlternativesLimit": 5, // порог количества финальных результатов, по достижению которого алгоритм завершается
"idfShift": 0.0,
"idfMultiplier": 1.0,
"namedEntitiesRequired": true
},
}

Подробнее рассмотрим параметр "namedEntitiesRequired": true. Если в интент добавлена фраза с системной сущностью, например:

Мне нужно @duckling.number яблок

То при запросе «Мне нужно яблок» — фраза не попадет в интент, так как системная сущность не была найдена.

Переопределите параметр namedEntitiesRequired на вкладке Настройки NLU, чтобы интент срабатывал при поступлении фраз без системных сущностей.

Deep Learning

Параметры для Deep Learning классификатора:

{
"patternsEnabled": true, // использование паттернов в тренировочных фразах
"tokenizerEngine": "example", // токенизатор

"cnnSettings": { // параметры для Deep Learning классификатора
"lang": "ru", // язык
"kernel_sizes": [
1,
2
],
"n_filters": 1024,
"emb_drp": 0.25,
"cnn_drp": 0.25,
"bs": 64,
"n_epochs": 15,
"lr": 0.001,
"device": "cpu",
"pooling_name": "max"
},
}

Параметры:

  • kernel_sizes — список размеров сверточных ядер. Сверточное ядро — размер контекстного окна, на которое классификатор обращает внимание. Например, "kernel_sizes": [3] означает, что модель будет находить признаки в тексте, основываясь на всех тройках соседних слов. Для одной модели может быть задано несколько сверточных ядер.

  • n_filters — количество фильтров. Один фильтр — это определенный паттерн, выученный моделью. Для каждого ядра модель имеет свой набор паттернов. Например, если указать "kernel_sizes": [2,3] и "n_filters": 512, то всего фильтров будет 1024 (на каждое ядро по 512).

  • emb_drp — вероятность исключения на встроенном слое. Исключение (англ. dropout) — механизм, который искусственно отключает в сети часть весов в процессе тренировки. Исключение помогает сети не переобучиться, то есть не просто запомнить весь набор данных, а обобщить информацию. emb_drp принимает значение от 0 до 1.

  • сnn_drp — вероятность дроп-аута на сверточных слоях сети.

  • bs — размер входной пачки для тренировок. Это значение определяет какое количество тренировочных примеров будет подаваться на вход сети за один шаг в процессе тренировок. Если датасет составляет менее 3000 примеров, рекомендуемое значение 16-32. Для датасетов больших размеров это значение может составить 32-128.

  • n_epochs — количество эпох обучения, сколько раз модель увидит все тренировочные данные.

  • lrlearning rate. Множитель, с которым модель будет обновлять свои веса в процессе тренировки.

  • device — устройство, на котором будет обучаться модель. Принимает значение cuda, при отсутствии видеокарты cpu.

  • pooling_name — стратегия агрегации. После нахождения паттернов во входной строке модель должна их агрегировать (перед финальным классификационным слоем). Стратегии агрегации: max, mean, concat.

Общие рекомендации

Параметры для Deep Learning классификатора при размере датасета:

  • более 100 тысяч примеров
        "kernel_sizes": [
2,
3,
4
],
"n_filters": 1024-2048,
"emb_drp": 0.3-0.4,
"cnn_drp": 0.3-0.4,
"bs": 64-128,
"n_epochs": 3,
"lr": 0.001,
"pooling_name": "max, concat"
  • 30-100 тысяч примеров
        "kernel_sizes": [
2,
3,
4
],
"n_filters": 1024-2048,
"emb_drp": 0.3-0.4,
"cnn_drp": 0.3-0.4,
"bs": 32-128,
"n_epochs": 3,
"lr": 0.001,
"pooling_name": "max, concat"
  • 10-30 тысяч примеров
        "kernel_sizes": [
2,
3,
4 // или [2,3]
],
"n_filters": 1024,
"emb_drp": 0.3-0.5,
"cnn_drp": 0.3-0.5,
"bs": 32-64,
"n_epochs": 3-5,
"lr": 0.001,
"pooling_name": "max"
  • 3-10 тысяч примеров
        "kernel_sizes": [
2,
3,
4 // или [2,3]
],
"n_filters": 1024,
"emb_drp": 0.4-0.5,
"cnn_drp": 0.4-0.5,
"bs": 32,
"n_epochs": 4-7,
"lr": 0.001,
"pooling_name": "max"
  • 1-3 тысячи примеров
        "kernel_sizes": [
2,
3
],
"n_filters": 512,
"emb_drp": 0.5,
"cnn_drp": 0.5,
"bs": 16-32,
"n_epochs": 7-15,
"lr": 0.001,
"pooling_name": "max"

Classic ML

{
"patternsEnabled": true, // использование паттернов в тренировочных фразах
"tokenizerEngine": "example", // токенизатор

"classicMLSettings": { // параметры для Classic ML классификатора
"C": 1,
"lang": "ru", // язык
"word_ngrams": [
1,
2
],
"lemma_ngrams": [
0
],
"stemma_ngrams": [
1,
2
],
"char_ngrams": [
3,
4
],
"lower": true
}
}

Параметры:

  • С — коэффициент регуляризации, с помощью которого можно контролировать переобучение модели. Используется для контроля за большими значениями коэффициентов целевой функции, штрафует их на величину параметра. Принимает значения в диапазоне: [0.01, 0.1, 1, 10].

  • word_ngrams — количество слов, которые будут объединены в словосочетания. Например, при значении "word_ngrams": [2, 3] будут использованы словосочетания из двух и трех слов.

Например для фразы я люблю зеленые яблоки будут составлены словосочетания:

 [
"я люблю",
"люблю зеленые",
"зеленые яблоки",
"я люблю зеленые",
"люблю зеленые яблоки"
]
caution

Не рекомендуется использовать значение параметра больше 3.

  • lemma_n_grams — количество слов, которые будут приведены в нормальную форму и объединены в словосочетания. Например, при значении "lemma_n_grams": [2] будут использованы словосочетания из двух слов.

Например для фразы я люблю зеленые яблоки будут составлены словосочетания:

["я любить", "любить зеленый", "зеленый яблоко"]
caution

Не рекомендуется использовать значение параметра больше 3.

  • stemma_ngrams — количество стемм, которые будут объединены в словосочетания. Стемма — основа слова для заданного исходного слова, не обязательно совпадает с морфологическим корнем слова. Например, при значении "stemma_ngrams": [2] будут использованы словосочетания из двух стемм.

Например для фразы я люблю зеленые яблоки будут составлены словосочетания:

["я любл", "любл зелен", "зелен яблок"]
caution

Не рекомендуется использовать вместе параметры lemma_n_grams и stemma_ngrams из-за возможности переобучения модели. Также не рекомендуется использовать значение для stemma_ngrams больше трех.

  • char_n_grams — количество символов, которые будут объединены и рассматриваться в качестве отдельной единицы фразы.

Например, при значении "char_n_grams": [5] фраза зеленые яблоки преобразуется в набор:

[
"зелен",
"елены",
"леные",
...
]
  • lower — при значении true все фразы приводятся к нижнему регистру.
Обновлено 31 мая 2022

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

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