GETTING STARTED
Kore.ai XO Platform
Virtual Assistants Overview
Natural Language Processing (NLP)
Concepts and Terminology
Quick Start Guide
Accessing the Platform
Working with the Builder
Building a Virtual Assistant
Using Workspaces
Release Notes
Current Version
Previous Versions
Deprecations

CONCEPTS
Design
Storyboard
Dialog Tasks
Overview
Dialog Builder
Node Types
Intent Node
Dialog Node
Entity Node
Form Node
Confirmation Node
Message Nodes
Logic Node
Bot Action Node
Service Node
Webhook Node
Script Node
Group Node
Agent Transfer
User Prompts
Voice Call Properties
Dialog Task Management
Connections & Transitions
Component Transition
Context Object
Event Handlers
Knowledge Graph
Introduction
Knowledge Extraction
Build Knowledge Graph
Add Knowledge Graph to Bot
Create the Graph
Build Knowledge Graph
Add FAQs
Run a Task
Build FAQs from an Existing Source
Traits, Synonyms, and Stop Words
Manage Variable Namespaces
Update
Move Question and Answers Between Nodes
Edit and Delete Terms
Edit Questions and Responses
Knowledge Graph Training
Knowledge Graph Analysis
Knowledge Graph Import and Export
Importing Knowledge Graph
Exporting Knowledge Graph
Creating a Knowledge Graph
From a CSV File
From a JSON file
Auto-Generate Knowledge Graph
Alert Tasks
Small Talk
Digital Skills
Digital Forms
Views
Introduction
Panels
Widgets
Feedback Survey
Train
Introduction
ML Engine
Introduction
Model Validation
FM Engine
KG Engine
Traits Engine
Ranking and Resolver
NLP Configurations
NLP Guidelines
Intelligence
Introduction
Contextual Memory
Contextual Intents
Interruption Management
Multi-intent Detection
Amending Entities
Default Conversations
Sentinment Management
Tone Analysis
Test & Debug
Talk to Bot
Utterence Testing
Batch Testing
Conversation Testing
Deploy
Channels
Publish
Analyze
Introduction
Conversations Dashboard
Performance Dashboard
Custom Dashboards
Introduction
Meta Tags
Dashboards and Widgets
Conversations History
Conversation Flows
Feedback Analytics
NLP Metrics
Containment Metrics
Usage Metrics
Smart Bots
Universal Bots
Introduction
Universal Bot Definition
Universal Bot Creation
Training a Universal Bot
Universal Bot Customizations
Enabling Languages
Store
Manage Assistant
Plan & Usage
Overview
Usage Plans
Support Plans
Invoices
Authorization
Multilingual Virtual Assistants
Masking PII Details
Variables
IVR Settings
General Settings
Assistant Management
Data Table
Table Views
App Definitions
Sharing Data Tables or Views

HOW TOs
Build a Flight Status Assistant
Design Conversation Skills
Create a Sample Banking Assistant
Create a Transfer Funds Task
Create a Update Balance Task
Create a Knowledge Graph
Set Up a Smart Alert
Design Digital Skills
Configure Digital Forms
Configure Digital Views
Add Data to Data Tables
Update Data in Data Tables
Add Data from Digital Forms
Train the Assistant
Use Traits
Use Patterns for Intents & Entities
Manage Context Switching
Deploy the Assistant
Configure an Agent Transfer
Use Assistant Functions
Use Content Variables
Use Global Variables
Web SDK Tutorial
Widget SDK Tutorial
Analyze the Assistant
Create a Custom Dashboard
Use Custom Meta Tags in Filters

APIs & SDKs
API Reference
API Introduction
API List
API Collection
koreUtil Libraries
SDK Reference
SDK Introduction
SDK Security
SDK Registration
Web Socket Connect and RTM
Using the BotKit SDK
BotKit SDK Tutorial - Blue Prism

ADMINISTRATION
Introduction
Assistant Admin Console
Administration Dashboard
User Management
Add Users
Manage Groups
Manage Roles
Assistant Management
Enrollment
Invite Users
Send Bulk Invites
Import User Data
Synchronize Users from AD
Security & Compliance
Using Single-Sign On
Security Settings
Cloud Connector
Analytics
Billing
  1. Home
  2. Docs
  3. Virtual Assistants
  4. API Guide
  5. Update NLP Configurations9 min read

Update NLP Configurations9 min read

To update the NLP thresholds and configurations

To use this API, app needs the Bot Builder API scope of NLP Configurations.
OR the Admin API Scope of NLP Configurations under Test and Train.

POST https://{{host}}/api/public/bot/{{BotID}}/configurations?language={{languageCode}}&groupName={{groupName}}

Query Parameters

Parameter Required/Optional Description
host Required Environment URL, for example, https://bots.kore.ai
BotID Required Bot ID or Stream ID. You can access it from the General Settings page of the bot.
languageCode Required Bot language to which these configurations need to be updated.
groupName Required
for Multiple ML Model
GroupName can be used to update the ML params of a specific group.  To update Bot level Intent Model Configurations groupName should be set to “Bot Level Intent Model”.

Body Parameters

The parameters would depend upon the threshold configuration that needs to be updated. Following is the comprehensive list of parameters for the various threshold configurations.

Update Settings

Machine Learning Engine

This section refers to the configurations related to the Machine Learning engine. For details about the configurations refer 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 about the configurations refer 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 about the configurations refer 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 about the configurations refer 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 refers to the configurations as given in the Advanced NLP Configurations section of Natural Language -> Training. For details about the configurations refer here.

Following is the sample request for setting the above-mentioned Advanced NLP Configurations.

{
    "advancedNLPSettings":[
        {
            "configurationKeyName": "NoneIntent",
            "configurationValue":true,
            "nlpEngine":"ML"
        }
    ]
}

Following is the complete list of the permissible advanced NLP configurations settings and the possible values:

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
        ]
    }
}'

Authorization

Invoke the API with JWT in the header as follows:

auth: {{JWT}}

Response Content Type

application/json

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
    }
}'

Sample Response

[
    {
        "message": "Training Queued.",
        "Training_ID": "5d14b03edba48abcb44375a1"
    }
]
Menu