To update the NLP thresholds and configurations
| Method | POST |
| Endpoint | https://{{host}}/api/public/bot/{{BotID}}/configurations?language={{languageCode}}&groupName={{groupName}} |
| Content Type | application/json |
| Authorization |
|
| API Scope |
|
Query Parameters
| Parameter | Description | Mandate |
|---|---|---|
| host | The environment URL. For example, https://bots.kore.ai |
Required |
| BotID | The Bot ID or Stream ID that can be accessed under General Settings on the Bot Builder. | Required |
| languageCode | The Bot language in which the configurations need to be updated. | Required |
| groupName | The GroupName can be used to update the ML parameters of a specific group. To update Bot level Intent Model Configurations, groupName should be set to “Bot Level Intent Model“. | Required for Multiple ML Model |
Sample Request
curl --location -g --request POST \
'https://{{host}}/api/public/bot/{{bot-id}}/configurations?language={{languageCode}}' \
--header 'auth: YOUR_JWT_ACCESS_TOKEN' \
--header 'content-type: application/json' \
--data-raw '{
"advancedNLPSettings": [
{
"configurationKeyName": "NoneIntent",
"configurationValue": true,
"nlpEngine": "ML"
}
],
"configurations": [
{
"mode": "ml",
"exactMatchThreshold": 85,
"useDependencyParser": true,
"minThreshold": 0.2
},
{
"mode": "faq",
"useBotSynonyms": true,
"searchInAnswer": {
"enabled": true,
"notifyUser": false,
"responseType": "relevantWithReadMore",
"customReadMoreURL": "aa",
"useCustomReadMoreURL": true
}
}
],
"mlParams": {
"intentParams": {
"features": "skip_gram",
"skip_gram": {
"seqLength": 3,
"maxSkipDistance": 2
}
}
},
"nlSettings": {
"enableAutoUtteranceAddition": false,
"enableNegativePatterns": true
}
}'
Body Parameters
The parameters depend on the threshold configuration that needs to be updated. The comprehensive list of the parameters for the various threshold configurations is given below:
Update Settings
Machine Learning Engine
This section refers to the configurations related to the Machine Learning engine. For details on the configurations, please click here.
{
"configurations": [
{
"mode": "ml", // Machine Learning Engine
"exactMatchThreshold": 90, // ML Definitive Score - value in range [80-100]
"minThreshold": 0.4, // ML threshold - value in range [0-1]
}
],
"mlParams": {
"intentParams": {
"useSynonyms": true, // Bot Synonyms
"useStopwords": true, // Stopwords
"usePlaceholders": true, // Entity Placeholders
"features": "n_gram" // Feature Extraction - value in range [skip_gram, n_gram]
"skip_gram": { // features should be 'skip_gram'
"seqLength": 2, // Sequence Length - value in range [2-4]
"maxSkipDistance": 1 // Maximum Skip Distance - value in range [1-3]
},
"ngram": 3, // ngram Sequence Length - value in range [1-4]
// features should be ‘n_gram’
},
"nerParams": {
"type": "corenlp" // NER Model
// could be "corenlp" for Conditional Random Field
// or "spacy" - Deep Neural Network
}
}
}
Fundamental Meaning Engine
This section refers to the configurations related to the Fundamental Meaning engine. For details on the configurations, please click here.
{
"configurations": [
{
"mode": "cs", // Fundamental Meaning Engine
"labelMatch": true // Intent Detection using Task Name Words
"isFMThreshold": true, //FM Threshold
"fmThreshold": 15 //FM Threshold value
}
]
}
Knowledge Graph Engine
This section refers to the configurations related to the Knowledge Graph engine. For details on the configurations, please click here.
{
"configurations": [ THRESHOLDS & CONFIGURATIONS
{
"mode": "faq",
"autoSpellCorrectEnabled": true, // Auto Correction
"useBotSynonyms": true, // Bot Synonyms
"enPatternLemma": false, // Lemmatization using Parts of Speech
"pathCoverage": 50, // Path Coverage - value in range [0-100]
"exactMatchThreshold": 95, // Minimum and Definitive Level for Knowledge Tasks
// value in range [0-100]
// should be more than minThreshold & maxThreshold
"maxThreshold": 80, // Probable range for Knowledge Task
// value in range [0-100]
// should be between minThreshold & exactMatchThreshold
"minThreshold": 60, // Low confidence range for Knowledge Task
// value in range [0-100]
// should be less than maxThreshold & exactMatchThreshold
"suggestionsCount": 3, // KG suggestionsCount | [0-5]
"taskMatchTolerance": 35, // Proximity of Suggested Matches | [0-50]
"longResponses": {
"readMore": true, // Manage Long Responses
"useCustomReadMoreURL": true, // readMore should be true
"customReadMoreURL": "www.siteurl.com" // readMore link; readMore should be true
},
"searchInAnswer": {
"enabled": true, // Search in Answer
"notifyUser": true, // Inform end user that it is a probable answer
"responseType": "relevantWithReadMore", // can be "complete" - Show complete response,
// or "relevant" - Show only the relevant paragraph,
// or "relevantWithReadMore" - Show only the relevant paragraph with “read more” link ]
"customReadMoreURL": "www.siteurl.com", // “read more” link
"useCustomReadMoreURL": true // enabled should be true
}
"qualifyContextualPaths": false, // Qualify Contextual Paths
}
]
}
Ranking & Resolver Engine
This section refers to the configurations related to the Ranking & Resolver engine. For details on the configurations, please click here.
{
"configurations":
{
"mode": "rr", // Ranking and Resolver Engine
"taskMatchTolerance": 2, // Proximity of Probable Matches - value in range [0-20]
"useDependencyParser": true, // Dependency Parsing Model
"minMatchVal": 0.4, // Minimum Match Score - value in range [0-1]
// useDependencyParser should be true
"rankingParameters": "" // Advanced Configurations
// useDependencyParser should be true
"intentRescoring": false, // Rescoring of Intents
"isPreferDefinitiveMatch": true // Prefer Definitive Matches
}
]
}
Advanced NLP Configurations
This section describes the configurations as given in the Advanced NLP Configurations section of Natural Language -> Training. For details on the configurations, please click here.
The sample request for setting the above-mentioned Advanced NLP Configurations is given below:
{
"advancedNLPSettings":[
{
"configurationKeyName": "NoneIntent",
"configurationValue":true,
"nlpEngine":"ML"
}
]
}
The complete list of the permissible advanced NLP configurations settings and the possible values is given below:
Split Compound Words
{
"configurationName": "Split Compound Words",
"configurationKeyName": "splitCompoundWords",
"desc": "The settings enables splitting of the compound words into multiple stems and then process the individual stem",
"nlpEngine": "ML",
"dataType": "Boolean",
"range": [true, false],
"defaultValue": false,
"requiresTraining": true,
"language": ["de", "nl"],
"isChild": false
}
None Intent
{
"configurationName": "None Intent",
"configurationKeyName": "NoneIntent",
"desc": "Once enabled, a None intent is created which reduces the chances of getting a false positive for an intent match using ML engine",
"nlpEngine": "ML",
"dataType": "Boolean",
"range": [true, false],
"defaultValue": true,
"requiresTraining": true,
"language": "ALL",
"isChild": false
}
Cosine similarity dampening
{
"configurationName": "Cosine similarity dampening",
"configurationKeyName": "cosineSimilarityDampening",
"desc": "Avoid penalty on short length questions using Cosine Similarity Dampening",
"nlpEngine": "KG",
"dataType": "Boolean",
"range": [true, false],
"defaultValue": true,
"requiresTraining": false,
"language": "ALL",
"isChild": false
}
Network Type
{
"configurationName" : "Network Type",
"configurationKeyName" : "network",
"desc" : "Networks available for intent training",
"nlpEngine" : "ML",
"dataType" : "enum",
"range" : ["Standard","MLP-BOW","MLP-WordEmbeddings","LSTM","CNN", "KoreBERT"],
"defaultValue": "Standard",
"requiresTraining" : true,
"language" : "ALL",
"isChild" : false
}
Epochs
{
"configurationName": "Epochs",
"configurationKeyName": "epochs",
"desc": "Number of iterations in training the model",
"nlpEngine": "ML",
"dataType": "Number",
"range": [20, 300],
"defaultValue": 20,
"requiresTraining" : true,
"language" : "ALL",
"isChild" : true,
"parentConfiguration" : "network",
"requiredParentInput" : ["MLP-BOW","MLP-WordEmbeddings","LSTM","CNN","KoreBERT"]
}
Batch Size
{
"configurationName" : "Batch Size",
"configurationKeyName" : "batch_size",
"desc" : "Number of training samples used for each batch while training",
"nlpEngine" : "ML",
"dataType" : "Number",
"range" : [10,30],
"defaultValue":10,
"requiresTraining" : true,
"language" : "ALL",
"isChild" : true,
"parentConfiguration" : "network",
"requiredParentInput" : ["MLP-BOW","MLP-WordEmbeddings","LSTM","CNN","KoreBERT"]
}
Learning rate
{
"configurationName": "Learning rate",
"configurationKeyName": "lr",
"desc": "Learning rate is a hyper-parameter that controls how much we are adjusting the weights of our network with respect to the loss gradient",
"nlpEngine": "ML",
"dataType": "enum",
"range": [1e-4, 1e-3, 1e-2],
"defaultValue": 1e-3,
"requiresTraining" : true,
"language" : "ALL",
"isChild" : true,
"parentConfiguration" : "network",
"requiredParentInput" : ["MLP-BOW","MLP-WordEmbeddings","LSTM","CNN","KoreBERT"]
}
Dropout
{
"configurationName": "Dropout",
"configurationKeyName": "dropout",
"desc": "Regularization parameter to avoid overfitting of the model",
"nlpEngine": "ML",
"dataType": "Number",
"range": [0, 0.8],
"defaultValue": 0,
"requiresTraining" : true,
"language" : "ALL",
"isChild" : true,
"parentConfiguration" : "network",
"requiredParentInput" : ["MLP-BOW","MLP-WordEmbeddings","LSTM","CNN", "KoreBERT"]
}
Vectorizer
{
"configurationName": "Vectorizer",
"configurationKeyName": "vector_type",
"desc": "Feature extraction technique on training data",
"nlpEngine": "ML",
"dataType": "enum",
"range": ["count", "tfidf"],
"defaultValue": "count",
"requiresTraining": true,
"language": "ALL",
"isChild": true,
"parentConfiguration": "network",
"requiredParentInput": ["MLP-BOW"]
}
Maximum sequence length
{
"configurationName": "Maximum sequence length",
"configurationKeyName": "max_seq_length",
"desc": "Length of the training sample or user input",
"nlpEngine": "ML",
"dataType": "Number",
"range": [10, 30],
"defaultValue": 20,
"requiresTraining" : true,
"language" : "ALL",
"isChild" : true,
"parentConfiguration" : "network",
"requiredParentInput" : ["MLP-WordEmbeddings","LSTM","CNN","KoreBERT"]
}
Embeddings Type
{
"configurationName": "Embeddings Type",
"configurationKeyName": "word_embedding_type",
"desc": "Feature extraction technique on training data",
"nlpEngine": "ML",
"dataType": "enum",
"range": ["generated", "pretrained", "random"],
"defaultValue": "random",
"requiresTraining" : true,
"language" : "ALL",
"isChild" : true,
"parentConfiguration" : "network",
"requiredParentInput" : ["MLP-WordEmbeddings","LSTM","CNN", "KoreBERT"]
}
Embeddings Dimensions
{
"configurationName": "Embeddings Dimensions",
"configurationKeyName": "embedding_dim",
"desc": "Embeddings Dimensions to be used in featurization",
"nlpEngine": "ML",
"dataType": "Number",
"range": [100, 400],
"defaultValue": 300,
"requiresTraining" : true,
"language" : "ALL",
"isChild" : true,
"parentConfiguration" : "network",
"requiredParentInput" : ["MLP-WordEmbeddings","LSTM","CNN", "KoreBERT"]
}
K Fold Cross-Validation
{
"configurationName" : "kfold",
"configurationKeyName" : "kfold",
"desc" : "kfold parameter for Crossvalidation",
"nlpEngine" : "ML",
"dataType" : "Number",
"range" : [2,10],
"defaultValue": 5,
"requiresTraining" : true,
"language" : "ALL",
"isChild" : false
}
FAQ Name as Intent Name
{
"configurationName": "FAQ Name as Intent Name",
"configurationKeyName": "FAQ_Name_Intent_Name",
"desc": "Enable to use FAQ Name as Intent Name. ",
"nlpEngine": "KG",
"dataType": "Boolean",
"range": [true, false],
"defaultValue": false,
"requiresTraining" : false,
"language" : "ALL",
"isChild" : false
}
Fuzzy Match
{
"configurationName" : "Fuzzy Match",
"configurationKeyName" : "fuzzyMatch",
"desc" : "This setting enables the use of the fuzzy matching algorithm for intent identification",
"nlpEngine" : "ML",
"dataType" : "Boolean",
"range" : [true,false],
"defaultValue": true,
"requiresTraining" : false,
"language" : "ALL",
"isChild" : false
}
Handle Negation
{
"configurationName" : "Handle Negation",
"configurationKeyName" : "f_negation",
"desc" : "This setting enables the handling of negated words in intent identification",
"nlpEngine" : "ML",
"dataType" : "Boolean",
"range" : [true,false],
"defaultValue": true,
"requiresTraining" : true,
"language" : ["en", "es"],
"isChild" : false
}
Ignore Multiple Occurences
{
"configurationName" : "Ignore Multiple occurences",
"configurationKeyName" : "binary",
"desc" : "This setting enables to just use presence or absence of a term instead of the raw counts",
"nlpEngine" : "ML",
"dataType" : "Boolean",
"range" : [true,false],
"defaultValue": false,
"requiresTraining" : true,
"language" : ["en"],
"isChild" : true,
"parentConfiguration" : "network",
"requiredParentInput" : ["MLP-BOW"]
}
Entity Placeholders in User Utterances
{
"configurationName": "Test PlaceHolders",
"configurationKeyName": "TestPlaceHolders",
"desc": "Enable to replace entity values present in the user input with the corresponding entity placeholders during prediction",
"nlpEngine": "ML",
"dataType": "Boolean",
"range": [true, false],
"defaultValue": true,
"requiresTraining": false,
"language": "ALL",
"isChild": false
}
Delete Settings
To delete any settings use the name of the settings mentioned in above sections in this way:
curl --location -g --request POST \
'https://{{host}}/api/public/bot/{{bot-id}}/configurations?language={{languageCode}}' \
--header 'auth: YOUR_JWT_ACCESS_TOKEN' \
--header 'content-type: application/json' \
--data-raw '{
"delete": {
"advancedNLPSettings": [
"kfold"
]
}
}'
Reset Settings
To reset any settings use the name of the settings mentioned in above sections in this way:
curl --location -g --request POST \
'https://{{host}}/api/public/bot/{{bot-id}}/configurations?language={{languageCode}}' \
--header 'auth: YOUR_JWT_ACCESS_TOKEN' \
--header 'content-type: application/json' \
--data-raw '{
"reset": {
"faq": [
"pathCoverage", // Path Coverage
"suggestionsCount", // KG suggestionsCount
"minimumAndDefinitiveLevels", // Minimum and Definitive Level for Knowledge Tasks (will reset all three values)
"taskMatchTolerance" // Proximity of Suggested Matches
],
"ml": [
"exactMatchThreshold", // ML Definitive Score
"minThreshold" // ML threshold
],
"rr": [
"taskMatchTolerance", // Proximity of Probable Matches
"minMatchVal" // Minimum Match Score
],
"mlParams": [
"ngram", // ngram Sequence Length
"seqLength", // Sequence Length
"maxSkipDistance" // Maximum Skip Distance
]
}
}'
Sample Response
[
{
"message": "Training Queued.",
"Training_ID": "5dxxxxxxxxxxxxxxxxxxxxxxx"
}
]