{"id":18103,"date":"2019-01-30T11:11:24","date_gmt":"2019-01-30T11:11:24","guid":{"rendered":"\/docs\/bots\/bot-builder\/train\/"},"modified":"2021-08-25T08:16:12","modified_gmt":"2021-08-25T07:16:12","slug":"optimizing-bots","status":"publish","type":"post","link":"https:\/\/developer.kore.ai\/v9-1\/docs\/bots\/nlp\/optimizing-bots\/","title":{"rendered":"Improving Bot Performance &#8211; NLP Optimization"},"content":{"rendered":"<section class=\"l-section wpb_row height_auto\"><div class=\"l-section-h i-cf\"><div class=\"g-cols vc_row type_default valign_top\"><div class=\"vc_col-sm-12 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\">\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<p>A chatbot\u2019s ability to consistently understand and interact with a user is dictated by the robustness of the Natural Language Processing (NLP) that powers the conversation.<\/p>\n<p>Kore.ai\u2019s platform uses a unique Natural Language Processing strategy, combining Fundamental Meaning and Machine Learning engines for maximum conversation accuracy with little upfront training. Bots built on Kore.ai\u2019s platform can understand and process multi-sentence messages, multiple intents, contextual references made by the user, patterns and idiomatic sentences, and more. <a href=\"\/docs\/bots\/chatbot-overview\/nlp-guide\/\" target=\"_blank\" rel=\"noopener noreferrer\">See here for an overview<\/a>.<\/p>\n<p>The NL engine includes recognition support for a wide range of entities and provides the tools needed to further customize your bot\u2019s language understanding using additional patterns.<\/p>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n<div class=\"w-separator size_small with_line width_default thick_1 style_solid color_border align_center\"><div class=\"w-separator-h\"><\/div><\/div>\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h2><span class=\"ez-toc-section\" id=\"Optimizing_your_Bot\">Optimizing your Bot<\/span><\/h2>\n<p>To make sure your bot is NLP-optimized, you can define, and refine names and terms used for your bot to enhance the NLP interpreter accuracy and performance to recognize the right bot task for the user.<br \/>\nYou begin by defining synonyms at the task level, and then manage and refine synonyms, and test at the bot level.<\/p>\n<p>To get started optimizing your bot and bot tasks, you need to access the <strong>Natural Language<\/strong>\u00a0options. These options are categorized\u00a0under various headings for your convenience:<\/p>\n<ul>\n<li><strong>Training<\/strong> &#8211; In the Training section, you can define how the NLP interpreter recognizes and responds to the user input for a bot, and then train the interpreter to recognize the correct user intent.\n<ul>\n<li><strong>Machine Learning Utterances<\/strong> &#8211; With Machine Learning, you can enhance bot recognition of user utterances for better recognition and system performance for the user intent which is the intended task that the user wants to access.<\/li>\n<li><strong>Synonyms &amp; Concepts<\/strong> &#8211; You can use the Synonyms section to optimize the NLP interpreter accuracy in recognizing the correct intent and entity provided by the user.<\/li>\n<li><strong>Patterns &amp; Rules<\/strong> &#8211; In the Patterns section, you can define slang, metaphors, or other idiomatic expressions for intent and entities.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Thresholds &amp; Configurations<\/strong> &#8211; In this section, you can define the recognition confidence levels required for minimum recognition actions, the confidence range for asking a user to choose from a list of possible matches, and a recognition confidence level for a positive match for the knowledge graph.<\/li>\n<li>Modify <strong>Advanced Settings<\/strong> like auto training setting for user utterances and negative intent patterns.<\/li>\n<\/ul>\n<p><a ref=\"magnificPopup\" href=\"https:\/\/kore-wordpress.s3.us-east-2.amazonaws.com\/developer.kore.ai\/v9-1\/wp-content\/uploads\/sites\/22\/20210617121510\/NL-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-27787\" src=\"https:\/\/kore-wordpress.s3.us-east-2.amazonaws.com\/developer.kore.ai\/v9-1\/wp-content\/uploads\/sites\/22\/20210617121510\/NL-1.png\" alt=\"\" width=\"218\" height=\"520\" srcset=\"https:\/\/kore-wordpress.s3.us-east-2.amazonaws.com\/developer.kore.ai\/v9-1\/wp-content\/uploads\/sites\/22\/20210617121510\/NL-1.png 218w, https:\/\/kore-wordpress.s3.us-east-2.amazonaws.com\/developer.kore.ai\/v9-1\/wp-content\/uploads\/sites\/22\/20210617121510\/NL-1-126x300.png 126w\" sizes=\"auto, (max-width: 218px) 100vw, 218px\" \/><\/a><\/p>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n<div class=\"w-separator size_small with_line width_default thick_1 style_solid color_border align_center\"><div class=\"w-separator-h\"><\/div><\/div>\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<p>You can start optimizing your bot, by:<\/p>\n<ul>\n<li>Customizing the ML engine, <a href=\"\/docs\/bots\/nlp\/user-utterances\/\">see here for more<\/a><\/li>\n<li>Customizing the KG engine, <a href=\"\/docs\/bots\/nlp\/knowledge-graph\/\">see here for more<\/a><\/li>\n<li>Customizing the FM engine, <a href=\"\/docs\/bots\/nlp\/fundamental-meaning\/\">see here for more<\/a><\/li>\n<li>Customizing the Traits engine, <a href=\"\/docs\/bots\/nlp\/traits\/\">see here for more<\/a><\/li>\n<li>Customizing the R&amp;R engine, <a href=\"\/docs\/bots\/nlp\/nlp-detection\/\">see here for more<\/a><\/li>\n<\/ul>\n<p>The rest of this document gives an in-depth understanding of the various aspects of NLP processing and various engines therein.<\/p>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h2><span class=\"ez-toc-section\" id=\"NLP_Training\"><span style=\"font-weight: 400;\">NLP Training<\/span><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Morphology is the underlying principle behind NLP. Morphology is the study of words, how they are formed, and their relationship to other words in the same language. It analyzes the structure of words and parts of words, such as stems, root words, prefixes, and suffixes. Morphology also looks at parts of speech, intonation, and stress, and the ways the context can change a word&#8217;s pronunciation and meaning. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Based on this, a user utterance undergoes the following preprocessing before an attempt at entity extraction and intent detection:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\"><strong>Tokenization<\/strong> \u2013 Splitting of utterances into sentences (Sentence tokenization) and Splitting of Sentence(s) into words. Kore.ai NLP uses TreeBank Tokenizer for English. Each language might have its own tokenizer<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\"><strong>toLower()<\/strong> \u2013 Convert all the text into lower (Not done for German, since the word meaning changes based on the case). This process is done only by ML and KG engines.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\"><strong>StopWord removal<\/strong> \u2013 Each language has its own set of stop words that can be edited by the developer. Removes words that may not contribute to improving the learning. This process is done only in ML and KG engines. This setting is optional, by default is disabled.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\"><strong>Lemmatization or Stemming<\/strong> depending on the language\u00a0<\/span>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\"><strong>Stemming<\/strong> \u2013 Retains the stem of the word like \u201cWorking\u201d-&gt;\u201d work\u201d, \u201cRunning\u201d-&gt;\u201d Run\u201d, \u201chousing\u201d-&gt;\u201dhous\u201d. It basically cuts the words. The output word may not be a valid language word<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\"><strong>Lemmatization<\/strong> \u2013 Converts the word to its base form using the dictionary. Like in earlier examples \u201cWorking\u201d-&gt;\u201d work\u201d, \u201cRunning\u201d-&gt;\u201d Run\u201d however,\u00a0 \u201chousing\u201d-&gt;\u201d house\u201d.\u00a0<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\"><strong>N-grams<\/strong> \u2013 Helps in combining co-occurring words. For example, \u201cNew York City\u201d and \u201cInternet Explorer\u201d. Each word has its own meaning. But when we take tri-gram in the first case and bi-gram in the second case, it actually results in a more meaningful word. N-grams also help in getting some context before or after a word.<\/span><\/li>\n<\/ul>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n<div class=\"w-separator size_small with_line width_default thick_1 style_solid color_border align_center\"><div class=\"w-separator-h\"><\/div><\/div>\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h3><span class=\"ez-toc-section\" id=\"ML_Engine\"><span style=\"font-weight: 400;\">ML Engine<\/span><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">From the training samples and the learning process, ML Engine builds an ML model. As mentioned earlier, Machine Learning Engine is concerned with intent detection and entity extraction.\u00a0<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">The <\/span><b>intent prediction<\/b><span style=\"font-weight: 400;\"> model is trained using statistical modeling and Neural networks.\u00a0 Intent classification tags the user utterance to a specific intent. The classification algorithm learns from the set of sample utterances that are labeled on how they should be interpreted. Training utterance preparation and curation is one of the most significant aspects of building a robust Machine learning model.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Entity Detection<\/b><span style=\"font-weight: 400;\"> involves recognizing System Entities (Out Of the Box, Rule-based model) predicting Custom Entities (Custom-trainable Rules-based Model), and Named Entity Recognition. System Entities are defined using built-in rules. However, using the NER approach, any named entity can be trained using Machine Learning by simply choosing the value from the ML training utterances and tagging them against the named entity.\u00a0<\/span><\/li>\n<\/ul>\n<h4><span style=\"font-weight: 400;\">ML Training<\/span><\/h4>\n<p><span style=\"font-weight: 400;\">Steps in training ML engine can be listed as follows:<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Choosing and gathering data that can be used as the training set<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Dividing the training set for evaluation and tuning (test and cross-validation sets)<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Training a few ML models according to algorithms (feed-forward neural networks, support vector machines, and so on) and hyperparameters (for example, the number of layers and the number of neurons in each layer for neural networks)<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Evaluating and tuning the model over test and cross-validation sets<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Choosing the best performing model and using it to solve the desired task<\/span><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\"><strong>Tips for better ML training<\/strong>:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Batch test suites compulsory, for comparing various ML models. Run the batch suite, configure the parameters, re-run the suite and compare the results.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">There is no set rule as to which ML model to go for. It is a trial and error method &#8211;\u00a0 configure the engine, run batch suites and compare results.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">If your data is huge then the stop words and synonyms are recognized automatically by the ML engine and taken care of without having to enable them explicitly.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Check for influencer words and if needed add it as a stop word, for the n-gram algorithm.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Prepare as diverse examples as possible.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Avoid adding noise or pleasantries. If unavoidable, add noise so that it is equally represented across intents, else you can easily overfit noise to intents<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\"><strong>Confusion Matrix<\/strong> can be used to identify training sentences that are borderline and fix them accordingly. Each dot in the matrix represents an utterance and can be individually edited.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The graph can further be studied for each of the following parameters:<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Get rid of false positives and false negatives by assigning the utterance to the correct intent. Click on the dot and on the edit utterance page assign the utterance to the correct intent.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Cohesion can be defined as the similarity between each pair of intents. The higher the cohesion the better the intent training. Improve cohesion by adding synonyms or rephrasing the utterance.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Distance between each pair of training phrases in the two intents. Larger the distance the better the prediction.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Confusing phrases should be avoided i.e. phrases that are similar between intents.<\/span><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\"><strong>K-fold model<\/strong> is ideal for large data but can be used for less data too with two-folds. Track and fine-tune the F1-score, Precision, and Recall as per your requirements. A higher value of recall score is recommended.<\/span><\/p>\n<h4><span style=\"font-weight: 400;\">ML Process<\/span><\/h4>\n<h5><span style=\"font-weight: 400;\">Intent Detection<\/span><\/h5>\n<p><span style=\"font-weight: 400;\">The below diagram summarizes the intent detection pipeline for both training and prediction stages. For the training pipeline, the language detection and auto-correction are not run with the assumption that the trainer would be aware of the language in which training needs to be done and of the spellings to be used which might include domain-specific non-dictionary words like Kore, etc.<\/span><\/p>\n<p><a ref=\"magnificPopup\" href=\"https:\/\/kore-wordpress.s3.us-east-2.amazonaws.com\/developer.kore.ai\/v9-1\/wp-content\/uploads\/sites\/22\/20210625062942\/NLP_overviewIntend.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-28048\" src=\"https:\/\/kore-wordpress.s3.us-east-2.amazonaws.com\/developer.kore.ai\/v9-1\/wp-content\/uploads\/sites\/22\/20210625062942\/NLP_overviewIntend.png\" alt=\"\" width=\"1317\" height=\"579\" srcset=\"https:\/\/kore-wordpress.s3.us-east-2.amazonaws.com\/developer.kore.ai\/v9-1\/wp-content\/uploads\/sites\/22\/20210625062942\/NLP_overviewIntend.png 1317w, https:\/\/kore-wordpress.s3.us-east-2.amazonaws.com\/developer.kore.ai\/v9-1\/wp-content\/uploads\/sites\/22\/20210625062942\/NLP_overviewIntend-300x132.png 300w, https:\/\/kore-wordpress.s3.us-east-2.amazonaws.com\/developer.kore.ai\/v9-1\/wp-content\/uploads\/sites\/22\/20210625062942\/NLP_overviewIntend-1024x450.png 1024w\" sizes=\"auto, (max-width: 1317px) 100vw, 1317px\" \/><\/a><\/p>\n<h4><span style=\"font-weight: 400;\">Entity Extraction<\/span><\/h4>\n<p><span style=\"font-weight: 400;\">Entity extraction involves identifying any information provided by the user apart from the intent that can be used in the intent fulfillment. The entities are of three types<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">System entities like date, time, color, etc are provided out-of-the-box by the platform. It includes nearly 22-24 entities and these are recognized by the ML engine automatically with no training except for string &amp; description entity types.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Custom entities are defined by the bot developer and these include the list of values &#8211; enumerated, lookup, and remote, regex expressions, and composite entities. These are also mostly auto-detected by the ML engine.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">NER or named entity recognition needs the training to identify the same entity type for different entities e.g. source &amp; destination cities for flight booking intent, both of which are city type entities and the engine needs the training to distinguish between the two. NER can be conditional random field-based or neural network-based. CRF is preferred since it works on lesser data and has a faster training time compared to the NN-based method.<\/span><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">The following diagram summarizes the NER entity extraction pipeline<\/span><\/p>\n<p><a ref=\"magnificPopup\" href=\"https:\/\/kore-wordpress.s3.us-east-2.amazonaws.com\/developer.kore.ai\/v9-1\/wp-content\/uploads\/sites\/22\/20210625063049\/NLP_overviewEntity.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-28050\" src=\"https:\/\/kore-wordpress.s3.us-east-2.amazonaws.com\/developer.kore.ai\/v9-1\/wp-content\/uploads\/sites\/22\/20210625063049\/NLP_overviewEntity.png\" alt=\"\" width=\"1319\" height=\"565\" srcset=\"https:\/\/kore-wordpress.s3.us-east-2.amazonaws.com\/developer.kore.ai\/v9-1\/wp-content\/uploads\/sites\/22\/20210625063049\/NLP_overviewEntity.png 1319w, https:\/\/kore-wordpress.s3.us-east-2.amazonaws.com\/developer.kore.ai\/v9-1\/wp-content\/uploads\/sites\/22\/20210625063049\/NLP_overviewEntity-300x129.png 300w, https:\/\/kore-wordpress.s3.us-east-2.amazonaws.com\/developer.kore.ai\/v9-1\/wp-content\/uploads\/sites\/22\/20210625063049\/NLP_overviewEntity-1024x439.png 1024w\" sizes=\"auto, (max-width: 1319px) 100vw, 1319px\" \/><\/a><\/p>\n<h4><span style=\"font-weight: 400;\">ML Output<\/span><\/h4>\n<p><span style=\"font-weight: 400;\">ML Engine runs the classification against the user utterance and generates the following scores output which Ranking and Resolver use for identifying the correct intent:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">The probability Score for each class\/intent, can be interpreted as follows<\/span>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Definitive Match\/Perfect Match: If the probability score &gt;0.95 (default and adjustable)\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Possible match: If the score is &lt;0.95%, it becomes eligible for ranking against other intents which may have been found by other engines.<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">The fuzzy score for each of the classes\/intents which are greater than the Threshold score(default is 0.3) \u2013 Fuzzy logic goes through each utterance of a given intent and compares it against the user input to see how close the user input and the utterance are. The scores are usually from 0-100 and can be interpreted as follows:<\/span>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Definite Match\/Perfect Match: If the score is above 95%(default\u00a0 &amp; adjustable)\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Possible match: If the score is &lt;95%, becomes eligible for Ranking against other intents which may have been found by other engines.<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">CR Sentences \u2013 The ML engine also sends the top 5 ML utterances for each of those Intents which have qualified using the Threshold score. These 5 ML utterances are derived using the Fuzzy score. Ranking &amp; Resolver uses these CR sentences to Rescore and choose the best of these utterances (compares each utterance against user input and chooses an utterance with topmost score)<\/span><\/li>\n<\/ul>\n<h4><span style=\"font-weight: 400;\">ML Engine Limitations<\/span><\/h4>\n<p><span style=\"font-weight: 400;\">Though the ML model is very thorough and encompassing, it has its own limitations.\u00a0<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">In cases where sufficient training data is not available ML model tends to overfit small datasets and subsequently leading to poor generalization capability, which in turn leads to poor performance in production.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Domain adaptation might be difficult if trained on datasets originating from some common domains like the internet or news articles.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Controllability and interpretability are hard because, most of the time, they work like a black box, making it difficult to explain the results.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Cost is high both in terms of resources and time<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">The above two points also result in maintenance or problem resolution being expensive (again both in terms of time &amp; effort) and can result in regression issues.<\/span><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">Hence ML engines augmented by FM engines would yield better results. One can train the bot with a basic ML model, and any minor issues can be addressed using FM patterns and negative patterns for idiomatic sentences, command-like utterances, and quick fixes.<\/span><\/p>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n<div class=\"w-separator size_small with_line width_default thick_1 style_solid color_border align_center\"><div class=\"w-separator-h\"><\/div><\/div>\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h3><span class=\"ez-toc-section\" id=\"FM_Engine\"><span style=\"font-weight: 400;\">FM Engine<\/span><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">The Fundamental Meaning model is a deterministic model that uses semantic rules and language context to determine the intent match. This engine can be trained using synonyms, built-in and custom concepts, and patterns.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The FM model scores user utterance using various semantic rules which include:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Grammar;<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Parts of speech;<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Word Match, Word Coverage across the sentence, Word Position;<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Sentence structure and many more.<\/span><\/li>\n<\/ul>\n<h4><span style=\"font-weight: 400;\">FM Process<\/span><\/h4>\n<p><span style=\"font-weight: 400;\">FM model uses the following processes in training<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Tokenization<\/b><span style=\"font-weight: 400;\"> (word segmentation) is the process of breaking up the given text into units called tokens. Hyphenated words are retained (might be subjected to spell correction later); digits with a hyphen are split, eg \u201c2-3\u201d becomes \u201c2 \u2013 3\u201d. Tokenization is not done for known concepts like Dates, Currency, etc.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Substitution<\/b><span style=\"font-weight: 400;\"> is the process of expanding interjections, abbreviations, texting shorthand, and contractions using system concepts. Like ~emohello for all greeting-related expressions, ~yes for confirmation, ~no for rejection, and much more.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Merging<\/b><span style=\"font-weight: 400;\"> is the process of combining a sequence of words that are obviously a single word, numbers, or dates. E.g. \u201ccredit card\u201d or \u201ctwenty five\u201d or \u201ctwenty-five\u201d merged into a single word.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Spell Check<\/b><span style=\"font-weight: 400;\"> is the process of replacing unknown words with known words (if any) and involves case conversion. The platform refers to WordNet and Bot Defined Terms for spell check. E.g. \u201cI wantt\u00a0 to pai bill\u201d \u00a0 becomes \u201cI want to pay bill\u201d<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Lemmatize<\/b><span style=\"font-weight: 400;\"> &#8211; The Bots Platform uses the WordNet database to look up for lemmas of the words in a given text.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Gleaning<\/b><span style=\"font-weight: 400;\"> to identify sections of utterances and mark them as special. This includes<\/span>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Marking polite phrases and treating them as noise, like \u201ccan you please\u2026.\u201d.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Language constructs that indicate multiple intents, like \u201cand then\u201d, \u201cand after that\u201d, \u201cbut first\u201d cause the sentence to be split into two and do multiple intent detection.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Identify and normalize numbers and from other related entities: e.g. &#8220;seven one three triple five double zero eighty four&#8221; =&gt; 7135550084, which is probably a phone number.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">System entities like Percentages &#8211; \u201csixty six percent\u201d; Units of measurement &#8211; \u201cfive sq km\u201d, \u201c12 stone 7 pounds\u201d; Currencies &#8211; \u201ctwenty bucks\u201d, \u201csix lakh rupees\u201d; Dates and times &#8211; \u201clast day of next month\u201d, \u201c10 o\u2019clock tonight\u201d.<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>POS tagging<\/b><span style=\"font-weight: 400;\"> is the process of marking up a word in a corpus to a corresponding part of a speech tag, based on its context and definition. Part of Speech Tags is useful for building parse trees, which are used in extracting relations between words. POS Tagging is also essential for building lemmatizers which are used to reduce a word to its root form.\u00a0 Each word is assigned a part of the speech tag, and possibly a role (subject\/verb\/object) from bot definition data.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Marking<\/b> is the process of assigning concepts to each word. POS tagging and parsing are abstract, dealing with nouns and verbs while Marking applies meanings to the words. For example, \u201cbook a flight\u201d &#8211; book can be a noun or verb, in this context, it is marked as a verb.<\/li>\n<\/ol>\n<h4>Key Elements in FM Engine<\/h4>\n<p><span style=\"font-weight: 400;\">Synonyms, Concepts &amp; Patterns are the cornerstones of the FM engine. These are used in intent detection and also by Ranking &amp; Resolver when trying to choose among the multiple possible intents.<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\"><strong>Synonyms<\/strong> need to be used when the words used to identify an intent\/entity can be used interchangeably like. The platform comes with a built-in library, it can be augmented by adding domain words that will be used to build a Bot dictionary.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\"><strong>Concepts<\/strong> are a predefined set of choices that are defined once and used in multiple places. The platform has a large set of inbuilt concepts that developers can use to define a pattern like ~world_country, ~asian_country. You can create your own custom concepts which are applicable to your use case, you can also create hierarchical concepts.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\"><strong>Patterns<\/strong> used mainly for intent detection in the FM engine. Can be used to define metaphors or other idiomatic expressions for task names. Concepts can be used in defining patterns.<\/span><\/li>\n<\/ul>\n<h4>FM Output<\/h4>\n<p><span style=\"font-weight: 400;\">The FM Engine collects information on a word in a given user input depending on:<\/span><\/p>\n<ul>\n<li aria-level=\"1\"><b>Position <span style=\"font-weight: 400;\">of the matching word in the sentence<\/span><\/b><\/li>\n<li aria-level=\"1\"><span style=\"font-weight: 400;\">Whether the matching word is a <\/span><b>Noun<\/b><span style=\"font-weight: 400;\"> or <\/span><b>verb<\/b><\/li>\n<li aria-level=\"1\"><span style=\"font-weight: 400;\">Role of the matching word &#8211; <\/span><b>Main Subject<\/b><span style=\"font-weight: 400;\">, <\/span><b>Main Verb<\/b><span style=\"font-weight: 400;\">, <\/span><b>Main Object<\/b><\/li>\n<li aria-level=\"1\"><b>Exact word match <span style=\"font-weight: 400;\">or <\/span>Synonym<\/b><\/li>\n<li aria-level=\"1\"><span style=\"font-weight: 400;\">Tense of the matching word &#8211; <\/span><b>present\/future\/past<\/b><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">A series of individual scores are calculated from the set of matched words.<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\">The goal is to prefer tasks that match the most likely words in the earliest sentence in the input.<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\">Preference is given to the words when they are close together, towards the start of the sentence, and in the same order as the task label.<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\">It is undesirable if there are several phrases before the task name or if there is a conjunction in the middle of the task label.<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\">Preference is given to tasks in phrases in the present or future tense.<\/li>\n<\/ul>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n<div class=\"w-separator size_small with_line width_default thick_1 style_solid color_border align_center\"><div class=\"w-separator-h\"><\/div><\/div>\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h3><span class=\"ez-toc-section\" id=\"Ontology-based_KG\">Ontology-based KG<\/span><\/h3>\n<p>Ontology-based Knowledge Graph turns static FAQ text into an intelligent, personalized conversational experience. It uses domain terms and relationships thus reducing the training needs. It also has the capability to enable the ontology weighted features whenever ML gets confused and automatic conversational dialog for resolving appropriate answers.<\/p>\n<h4>Capabilities of a Graph Engine<\/h4>\n<ul>\n<li aria-level=\"1\"><b>Ease of training using synonyms <span style=\"font-weight: 400;\">&#8211; Kore.ai\u2019s Knowledge Graph has a provision to associate synonyms against a graph node. This helps capture the variation in a question.<\/span><\/b><\/li>\n<li aria-level=\"1\"><strong>Better coverage with alternate questions<\/strong> <span style=\"font-weight: 400;\">&#8211; Knowledge Graph has a provision to add alternate questions. This helps us to capture the various ways a user might ask the same question.<\/span><\/li>\n<li aria-level=\"1\"><strong>Improved accuracy<\/strong> <span style=\"font-weight: 400;\">&#8211; Ontology-driven question-answers reduce the possibility of false positives.\u00a0<\/span><\/li>\n<li aria-level=\"1\"><strong>Weighing Phrases using Traits<\/strong> <span style=\"font-weight: 400;\">&#8211; Kore.ai\u2019s graph engine allows developers to build a concept of Traits for filtering out irrelevant suggestions.<\/span><\/li>\n<li aria-level=\"1\"><strong>Ability to mark term importance<\/strong> <span style=\"font-weight: 400;\">&#8211; Kore.ai\u2019s graph engine has a provision to mark an ontology term as important.<\/span><\/li>\n<li aria-level=\"1\"><strong>Ability to group relevant nodes<\/strong> <span style=\"font-weight: 400;\">&#8211; As the graph grows in size, managing graph nodes can become a challenging task. Using the \u201corganizer node\u201d construct of the ontology engine, bot developers can group relevant nodes under a node.<\/span><\/li>\n<\/ul>\n<h4>FAQ Detection Steps<\/h4>\n<ul>\n<li aria-level=\"1\"><b>Step 1: Extract Nodes: <span style=\"font-weight: 400;\">The KG engine processes the user utterance to extract the term (ontology nodes) present in the graph. It also takes into consideration the synonyms, classes, and tags associated with the terms.<\/span><\/b><\/li>\n<li aria-level=\"1\"><strong>Step 2: Query Graph<\/strong>: <span style=\"font-weight: 400;\">The KG engine fetches all the paths that consist of the extracted nodes.<\/span><\/li>\n<li aria-level=\"1\"><strong>Step 3: Shortlist Paths<\/strong>: <span style=\"font-weight: 400;\">All the paths consisting of 50% or more matching terms with the user utterance are shortlisted for further processing.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">Note: Patch coverage computation doesn\u2019t consider the root node.<\/span><\/li>\n<li aria-level=\"1\"><strong>Step 4: Filter with Traits<\/strong>: <span style=\"font-weight: 400;\">If classes are defined in the Knowledge Graph, paths shortlisted in the above step are further filtered based on the confidence score of a classification algorithm in user utterance.\u00a0<\/span><\/li>\n<li aria-level=\"1\"><b>Step 5: Send to Ranker: <span style=\"font-weight: 400;\">The KG engine then sends the shortlisted paths to the Ontology Ranker Program.<\/span><\/b><\/li>\n<li aria-level=\"1\"><strong>Step 6: Score based on Cosine Similarity<\/strong><span style=\"font-weight: 400;\">: The Ontology Ranker makes use of user-defined synonyms, lemma forms of word, n-grams, stop words, to compute the cosine similarity between the user utterance and the shortlisted questions. Paths are ranked in non-increasing order of cosine similarity score.<\/span><\/li>\n<li aria-level=\"1\"><strong>Step 7: Qualify Matches<\/strong>: <span style=\"font-weight: 400;\">The Ontology Ranker then qualifies the paths as follows:<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<ul>\n<li aria-level=\"1\"><span style=\"font-weight: 400;\">Paths with <\/span>score &gt;= upper_threshold <span style=\"font-weight: 400;\">are qualified as an answer (definitive match).<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/li>\n<li aria-level=\"1\"><span style=\"font-weight: 400;\">Paths with <\/span>lower_threshold &lt; score &lt; upper_threshold<span style=\"font-weight: 400;\"> are marked as suggestion (probable match).<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/li>\n<li aria-level=\"1\"><span style=\"font-weight: 400;\">Paths with a <\/span>score &lt; lower_threshold <span style=\"font-weight: 400;\">are ignored.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n<div class=\"w-separator size_small with_line width_default thick_1 style_solid color_border align_center\"><div class=\"w-separator-h\"><\/div><\/div>\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h3><span class=\"ez-toc-section\" id=\"Traits\">Traits<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Traits are entities that can be extracted from user input, before intent recognition. They can be used in multiple scenarios<\/span><\/p>\n<ul>\n<li><span style=\"font-weight: 400;\">They <\/span>in Indirect entity Extraction ex: gender or age-specific words can be inferred from the text. A phrase like \u201cSuit for your baby aged 1-5 years\u201d implies it is a product for toddlers.<\/li>\n<li>Traits can be used for intent recognition, using rules. Any rule match for intent will be considered a definitive match.<\/li>\n<li>Traits can be identified based on keywords\/phrases and their synonyms. For Example, <b>Trait-Color: Blue <\/b>\u2013 \u201cBlue\u201d, \u201cSapphire\u201d, \u201cTeal\u201d; <b>Trait-Color-Red<\/b> \u2013 Red, Maroon, Crimson <b>Trait-Status:\u00a0NotWorking:\u00a0<\/b>\u201cdoesn\u2019t work\u201d, \u201cswitched off\u201d;\u00a0 <b>Trait-Status:Working<\/b>: \u201cworking\u201d, \u201cturned on\u201d<\/li>\n<li>Traits can also be inferred from a keyword or specific phrase in the sentence. There is no obvious association between certain words in the sentence and the value of the entity, but rather you need the sentence as a whole to determine the value. For example, <b>Trait-Greeting-Emotion: Positive\u00a0<\/b>\u2013 \u201cGood Morning\u201d, \u201cHow are you\u201d;<b>\u00a0 Trait-Greeting-Emotion: Negative<\/b>\u00a0\u2013 \u201cI hate to say\u201d, \u201cI am not having trouble\u201d<\/li>\n<\/ul>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n<div class=\"w-separator size_small with_line width_default thick_1 style_solid color_border align_center\"><div class=\"w-separator-h\"><\/div><\/div>\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h3><span class=\"ez-toc-section\" id=\"Ranking_Resolver\">Ranking &amp; Resolver<\/span><\/h3>\n<p>The Ranking &amp; Resolver engine receives the outputs from the above engines and further processes them.<\/p>\n<p>A quick recap of the various parameters the R&amp;R engine works with:<\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">The output of ML Engine: for a given utterance<\/span>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\"><em>Deterministic match<\/em>: <\/span><span style=\"font-weight: 400;\">fuzzy score match of &gt;= 95% match against user input.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\"><em>Probable matches<\/em>: Confidence scores for each intent<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\"><em>Top 5 utterances <\/em>(from ML training dataset) of each intent whose confidence score is &gt; threshold (default is 0.3)<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Top 5 utterances are found by ML engine which are close to the user input<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">The output of KG Engine<\/span>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\"><em>Deterministic Match<\/em>: F<\/span><span style=\"font-weight: 400;\">uzzy score if Deterministic (fuzzy match of &gt;= 95% match against user input).<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\"><em>Probable matches<\/em>: <\/span><span style=\"font-weight: 400;\">Confidence scores of Questions that matched minimum threshold(&gt;=50% match of path terms &amp; &gt;=60% word match)<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Synonyms matched, Nodes matched, Path terms matched, Class\/Traits matched<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Original Question, Modified question(replaced with synonyms which matched)<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Alternate questions of each matched question<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">The output of FM Engine<\/span>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\"><em>Deterministic Match<\/em>: <\/span><span style=\"font-weight: 400;\">Intents that matched deterministically (Pattern match or input is exactly the same as the task name)<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Probable matches: Partial label matches including synonyms.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>The winner is decided by the Ranking &amp; Resolver as follows:<\/p>\n<ul>\n<li aria-level=\"1\"><b>Definitive match(s) found<\/b>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">If any engine has found an Intent Definitively,\u00a0 that\u2019s the winning Intent<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">If more than one engine found different intents but Deterministically, then consider them as ambiguous and present the found intents as choices to the user to choose the intent which user felt is right.<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><b>Possible matches found<\/b>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">If a deterministic Intent is found, ignore all probable matches.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">If only FM or ML engine found an Intent but probable, that\u2019s the winning intent.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">If only the KG engine found a probable intent and its score is &gt; higher threshold(80%) then that\u2019s the winning intent<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">If only the KG engine found a probable Intent and its score is &gt;60% but &lt;80% then that\u2019s the winning intent, but since the confidence is low, show it as a suggestion (user will see \u201cDid you mean\u201d)<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">If more than one probable intents were found,\u00a0<\/span>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Score each of the 5 utterances given by the ML engine and find the highest scoring utterance against each probable Intent.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Score each of the alternate questions, modified questions given by the KG engine, and find the highest scoring question against each intent.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"4\"><span style=\"font-weight: 400;\">Rank the scores and choose the Top scoring intent as the winning intent.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"4\"><span style=\"font-weight: 400;\">If Topper and the immediate next intent are within the range of 2% then consider them as ambiguous.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"list-style-type: none;\"><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n<div class=\"w-separator size_small with_line width_default thick_1 style_solid color_border align_center\"><div class=\"w-separator-h\"><\/div><\/div>[vc_raw_html]JTNDZGl2JTIwY2xhc3MlM0QlMjJ3LXBvc3QtZWxtJTIwcG9zdF9uYXZpZ2F0aW9uJTIwbGF5b3V0X3NpbXBsZSUyMGludl9mYWxzZSUyMiUzRSUwQSUzQ2ElMjBjbGFzcyUzRCUyMnBvc3RfbmF2aWdhdGlvbi1pdGVtJTIwb3JkZXJfZmlyc3QlMjB0b19wcmV2JTIyJTIwaHJlZiUzRCUyMiUyRmRvY3MlMkZib3RzJTJGYm90LWJ1aWxkZXItdG9vbCUyRmRpYWxvZy10YXNrJTJGZGlhbG9nLXRhc2tzJTJGJTIyJTNFJTNDJTJGcCUzRSUwQSUzQ2RpdiUyMGNsYXNzJTNEJTIycG9zdF9uYXZpZ2F0aW9uLWl0ZW0tYXJyb3clMjIlM0UlM0MlMkZkaXYlM0UlMEElM0NkaXYlMjBjbGFzcyUzRCUyMnBvc3RfbmF2aWdhdGlvbi1pdGVtLW1ldGElMjIlM0VQcmV2aW91cyUyMFBvc3QlM0MlMkZkaXYlM0UlMEElM0NkaXYlMjBjbGFzcyUzRCUyMnBvc3RfbmF2aWdhdGlvbi1pdGVtLXRpdGxlJTIyJTNFJTNDc3BhbiUzRURpYWxvZyUyMFRhc2tzJTNDJTJGc3BhbiUzRSUzQyUyRmRpdiUzRSUwQSUzQ3AlM0UlM0MlMkZhJTNFJTNDYnIlMjAlMkYlM0UlMEElM0NhJTIwY2xhc3MlM0QlMjJwb3N0X25hdmlnYXRpb24taXRlbSUyMG9yZGVyX3NlY29uZCUyMHRvX25leHQlMjIlMjBocmVmJTNEJTIyJTJGZG9jcyUyRmJvdHMlMkZubHAlMkZ1c2VyLXV0dGVyYW5jZXMlMkYlMjIlM0UlM0MlMkZwJTNFJTBBJTNDZGl2JTIwY2xhc3MlM0QlMjJwb3N0X25hdmlnYXRpb24taXRlbS1hcnJvdyUyMiUzRSUzQyUyRmRpdiUzRSUwQSUzQ2RpdiUyMGNsYXNzJTNEJTIycG9zdF9uYXZpZ2F0aW9uLWl0ZW0tbWV0YSUyMiUzRU5leHQlMjBQb3N0JTNDJTJGZGl2JTNFJTBBJTNDZGl2JTIwY2xhc3MlM0QlMjJwb3N0X25hdmlnYXRpb24taXRlbS10aXRsZSUyMiUzRSUzQ3NwYW4lM0VNYWNoaW5lJTIwTGVhcm5pbmclM0MlMkZzcGFuJTNFJTNDJTJGZGl2JTNFJTBBJTNDcCUzRSUzQyUyRmElM0UlM0MlMkZkaXYlM0U=[\/vc_raw_html]<div class=\"w-separator size_small with_line width_default thick_1 style_solid color_border align_center\"><div class=\"w-separator-h\"><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/section>\n","protected":false},"excerpt":{"rendered":"A chatbot\u2019s ability to consistently understand and interact with a user is dictated by the robustness of the Natural Language Processing (NLP) that powers the conversation. Kore.ai\u2019s platform uses a unique Natural Language Processing strategy, combining Fundamental Meaning and Machine Learning engines for maximum conversation accuracy with little upfront training. Bots built on Kore.ai\u2019s platform...","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-18103","post","type-post","status-publish","format-standard","hentry","category-nlp"],"_links":{"self":[{"href":"https:\/\/developer.kore.ai\/v9-1\/wp-json\/wp\/v2\/posts\/18103","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/developer.kore.ai\/v9-1\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/developer.kore.ai\/v9-1\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/developer.kore.ai\/v9-1\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/developer.kore.ai\/v9-1\/wp-json\/wp\/v2\/comments?post=18103"}],"version-history":[{"count":10,"href":"https:\/\/developer.kore.ai\/v9-1\/wp-json\/wp\/v2\/posts\/18103\/revisions"}],"predecessor-version":[{"id":31769,"href":"https:\/\/developer.kore.ai\/v9-1\/wp-json\/wp\/v2\/posts\/18103\/revisions\/31769"}],"wp:attachment":[{"href":"https:\/\/developer.kore.ai\/v9-1\/wp-json\/wp\/v2\/media?parent=18103"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/developer.kore.ai\/v9-1\/wp-json\/wp\/v2\/categories?post=18103"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/developer.kore.ai\/v9-1\/wp-json\/wp\/v2\/tags?post=18103"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}