Расширенные настройки NLU
При редактировании настроек проекта вы можете задать новые параметры для настройки NLU. Параметры передаются в виде JSON-объекта.
Общие настройки
К общим настройкам относятся параметры, не зависящие от алгоритма классификатора в проекте:
{
"patternsEnabled": true,
"tokenizerEngine": "udpipe",
"dictionaryAutogeneration": true
}
patternsEnabled
— при активном параметре в тренировочных фразах доступно использование паттернов.tokenizerEngine
— токенизатор, который будет выполнять токенизацию и лемматизацию текста.dictionaryAutogeneration
— при активном параметре пользовательский словарь заполняется согласно содержимому сущностей.
tokenizerEngine
Для разных языков NLU доступны разные движки токенизации.
Язык NLU | Токенизаторы | Примечания |
---|---|---|
Русский | udpipe mystem morphsrus | Токенизаторы mystem и morphsrus предназначены для миграции проектов на NLU. |
Китайский | pinyin | |
Португальский | udpipe | |
Казахский | kaznlp | |
Другие языки | spacy |
STS
Параметры для классификатора STS по умолчанию:
{
"allowedPatterns": [],
"stsSettings": {
"exactMatch": 1.0,
"lemmaMatch": 0.95,
"jaccardMatch": 0.5,
"jaccardMatchThreshold": 0.82,
"acronymMatch": 1.0,
"synonymMatch": 0.5,
"synonymContextWeight": 0.0,
"patternMatch": 1,
"throughPatternMatch": 0.8,
"wordSequence1": 0.8,
"wordSequence2": 0.9,
"wordSequence3": 1.0,
"idfShift": 0.0,
"idfMultiplier": 1.0,
"namedEntitiesRequired": false
}
}
-
allowedPatterns
— список сущностей, для которых включен параметр Автоматически расширять интенты. -
exactMatch
— коэффициент, на который умножается вес слова при полном совпадении слов в запросе клиента и в одной из тренировочных фраз. Например, дом и дом. -
lemmaMatch
— коэффициент, на который умножается вес слова при совпадении слов по словарным формам (леммам). Например, дома и дом. -
jaccardMatch
— коэффициент, на который умножается вес слова при совпадении слов по мере Жаккара.jaccardMatch
срабатывает, если:- Слова совпадают по символам, но символы расположены в разном порядке. Например, дома и мода.
- Слова почти совпадают по символам, а их мера сходства больше или равна
jaccardMatchThreshold
. Например, компьютер и компютер.
-
jaccardMatchThreshold
— минимальное значение меры Жаккара. По умолчанию параметрjaccardMatch
учитывает совпадение двух слов, если их мера сходства больше или равна0.82
. -
acronymMatch
— коэффициент, на который умножается вес словосочетания при совпадении словосочетания и его аббревиатуры. Аббревиатуры определяются с помощью регулярного выражения. Например, Московский государственный университет и МГУ. -
synonymMatch
— коэффициент, на который умножается вес слова при совпадении по синониму. Готовый словарь синонимов встроен в NLU и поддерживается только для русского языка. -
synonymContextWeight
— коэффициент, на который штрафуется вес синонима:- При
"synonymContextWeight": 0.0
синоним не штрафуется. - При
"synonymContextWeight": 1.0
вес синонима существенно снижается.
- При
-
patternMatch
— коэффициент, на который умножается вес слова при совпадении по сущности, указанной в тренировочной фразе.Например, в интенте есть фраза Позови @agent. Сущность
@agent
содержит синонимы консультант, специалист и оператор. Если пользователь напишет боту Позови оператора, слово оператор распознается как сущность, и его вес будет умножен на значениеpatternMatch
. -
throughPatternMatch
— коэффициент, на который умножается вес слова при совпадении по сущности, указанной вallowedPatterns
. -
Коэффициенты, на которые умножается вес слова, если во фразе встречается совпадающая последовательность слов:
- На
wordSequence1
умножается вес первого слова в последовательности. - На
wordSequence2
умножается вес второго слова в последовательности. - На
wordSequence3
умножается вес третьего слова в последовательности. Четвертое и последующие слова также будут умножаться на значениеwordSequence3
. Рекомендуется варьировать эти параметры в промежутке от 0 не включительно до 1 включительно. Сохраняйте соотношениеwordSequence1 < wordSequence2 < wordSequence3
.
Например, в интенте есть тренировочная фраза Хочу купить курс по очень выгодной цене. Пользователь пишет б оту Решил вот купить курс у вас по очень выгодной цене. Алгоритм находит совпадающие последовательности:
Последовательность Слово Множитель веса слова купить купить wordSequence1
купить курс курс wordSequence2
по по wordSequence1
по очень очень wordSequence2
по очень выгодной выгодной wordSequence3
по очень выгодной цене цене wordSequence3
- На
-
idfShift
иidfMultiplier
— параметры, которые влияют на расчет веса слова через IDF. Не рекомендуется менять их значения. -
namedEntitiesRequired
— при активном параметре в запросе пользователя должна быть найдена системная сущность, чтобы запрос попал в интент.Например, в интент была добавлена фраза с системной сущностью Мне нужно @duckling.number яблок. При активном параметре запрос пользователя Мне нужно яблок не попадет в интент, так как в запросе нет системной с ущности.
Classic ML
Параметры для классификатора Classic ML:
{
"classicMLSettings": {
"C": 1,
"lang": "ru",
"word_ngrams": [
1,
2
],
"lemma_ngrams": [
0
],
"stemma_ngrams": [
1,
2
],
"char_ngrams": [
3,
4
],
"lower": true,
"useTfIdf": false,
"min_document_frequency": 1
}
}
-
C
— коэффициент регуляризации, с помощью которого можно контролировать переобучение модели. Используется при работе с большими значениями коэффициентов целевой функции, штрафует их на величину параметра. Принимает следующие значения:0.01
,0.1
,1
,10
. -
word_ngrams
— количество слов, которые будут объединены в словосочетания. При значении"word_ngrams": [2, 3]
будут использованы словосочетания из двух и трех слов. Например, для фразы я люблю зеленые яблоки будут составлены словосочетания:- я люблю,
- люблю зеленые,
- зеленые яблоки,
- я люблю зеленые,
- люблю зеленые яблоки.
предупреждениеНе рекомендуется использовать значение параметра больше 3. -
lemma_n_grams
— количество слов, которые будут приведены в нормальную форму и объединены в словосочетания. При значении"lemma_n_grams": [2]
будут использованы словосочетания из двух слов. Например, для фразы я люблю зеленые яблоки будут составлены словосочетания:- я любить,
- любить зеленый,
- зеленый яблоко.
предупреждениеНе рекомендуется использовать значение параметра больше 3. -
stemma_ngrams
— количество стемов, которые будут объединены в словосочетания. Стем — основа слова, не обязательно совпадает с морфологическим корнем слова. При значении"stemma_ngrams": [2]
будут использованы словосочетания из двух стемов. Например, для фразы я люблю зеленые яблоки будут составлены словосочетания:- я любл,
- любл зелен,
- зелен яблок.
предупреждениеНе рекомендуется устанавливать значение дляstemma_ngrams
больше 3 и использовать параметрstemma_ngrams
вместе сlemma_n_grams
, поскольку модель может переобучиться. -
char_n_grams
— количество символов, которые рассматриваются в качестве отдельной единицы. Например, при значении"char_n_grams": [5]
фраза зеленые яблоки преобразуется в набор:- зелен,
- елены,
- леные и т. д.
-
lower
— при значенииtrue
все фразы приводятся к нижнему регистру. -
useTfIdf
— параметр определяет, какой алгоритм использовать при векторизации тренировочных фраз. Значение по умолчанию —false
.- Если
true
, используется TF-IDF. Он вычисляет значимость слова или выражения в контексте всех тренировочных фраз. Рекомендуется для проектов с небольшой выборкой, чтобы повысить качество распознавания интентов. Векторизация будет проходить медленнее, чем при значенииfalse
, но ее качество будет выше. - Если
false
, используется CountVectorizer. Он вычисляет, как часто слова или выражения встречаются в интенте. Рекомендуется для проектов со средней или большой выборкой. Векторизация будет проходить быстрее, но при работе с небольшой выборкой точность алгоритма будет снижаться.
- Если
-
min_document_frequency
— минимальная частота, с которой слово должно встречаться в тренировочных фразах, чтобы оно учитывалось при векторизации и классификации. Значение по умолчанию —1
.- Если вы работаете со средней или большой выборкой, повысьте значение параметра, чтобы ускорить обучение классификатора. Слова, которые редко встречаются в выборке, не будут учитываться.
- Если вы работаете с небольшой выборкой, менять зн ачение по умолчанию не рекомендуется.
Deep Learning
Параметры для классификатора Deep Learning:
{
"cnnSettings": {
"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,
"pooling_name": "max"
}
}