Primary features

The following information describes the primary features that direct the flow of a conversation.

Nodes

The following information describes the most commonly used dialog nodes.

action

The action node uses profile rules to set values for profile variables.

Use the varName attribute to specify the profile variable, and use the operator attribute to set values. The default setting is DO_NOTHING_STR, which means that profile variable remains as-is when the node is processed by the system.

Only the most recent value is stored for each profile variable. Outside systems to load a user's profile at the beginning of a conversation can be called to begin with specific context.

Profile variables are stored as part of the conversation history. They last as long as the conversation.

The following code shows an example of an action node with an operator attribute value that sets the value of the AreaCode profile variable to 615.

  							<action varName="AreaCode"
  								operator="SET_TO">
  								615
  							</action>

concept

Concept nodes group concepts in lists.

A concept node is used by the Dialog service to replace a specific word with the words in the list. All concept nodes are stored in the Concepts folder.

For example, the word bot is a concept. It is the concept of a virtual agent. In this scenario, you might create a concept node in the Concepts folder to list all the concepts for the phrase virtual agent.

With this concept in place, submitted questions like “What is a VA?”, “What is a Digital Agent?” and “What is a dialogbot?” are matched to the input “What is a Virtual Agent?”, and the appropriate response is given because the system uses the concept node to know that the words all mean the same thing. Concepts are used to expand variations for every node on a dialog level. They are all stored in the Concepts folder because they are active in the dialog flow no matter where they are placed. Keeping them in their separate folder simplifies organization.

The following code shows the virtual agent concept.

  	<folder label="Concepts">
  		<concept>
  			<grammar>
  				<item>Virtual Agent</item>
  				<item>VA</item>
  				<item>Digital Agent</item>
  				<item>Digital Virtual Agent</item>
  				<item>bot</item>
  				<item>dialogbot</item>
  				<item>cyberbot</item>
  			</grammar>
  		</concept>
  	</folder>

default

The default node indicates the default actions of the dialog.

Default nodes take precedence over all other nodes, so where you place default nodes is important. For example, a default node above a search node means that the dialog always does the default function and never does a search. A default node is ideal after all searches are run and the dialog does not understand a user's submission. For an example, see the following figure.

			<output>
				<prompt>
					<item>Hi, what is your question?</item></prompt>
				<getUserInput>
					<search ref="about"></search>
                                   <search ref="library"></search>
					<default>
						<output>
							<prompt>
								<item>I'm sorry. I don't understand your question.</item>
							</prompt>
						</output>
					</default>
				</getUserInput>
			</output>

Default nodes are used mainly to capture input that doesn't have an input node. Default nodes inform users that the system realizes that the user submitted a question or comment, but the submission is outside the dialog's domain of expertise.

entities

The entities node is used to capture several variations of user input without you needing to write multiple variations in the input nodes of the dialog.

When an entity is matched, profile variables capture the information.

The following code shows an example of an entity for types of pizza sauce.

        <entity name="Sauce">
            <value name="Tomato Sauce" value="Tomato">
                <grammar>
                    <item>gravy</item>
                    <item>Red Sauce</item>
                </grammar>
            </value>
            <value name="Alfredo Sauce" value="Alfredo">
                <grammar>
                    <item>Cheese</item>
                    <item>White</item>
                </grammar>
            </value>
        </entity>

folder

The folder node groups similar content.

Folder nodes are the first nodes that you must create for a dialog. They are not shown to the user. They are used only for dialog organization and maintenance and to limit search terms to specific areas of the dialog.

Ensure that your dialog contains the following types of folder nodes:

Main

Stores the nodes that are run as soon as a dialog is started. Usually this folder contains a welcome message, followed by an opportunity for the user to enter data to begin a conversation. The main folder can store different functions beyond simple welcome messages, such as search, function calls, and more.

Library

Stores the core information that is used by the . It stores all the dialog structures, the pairs of input nodes and output nodes, and various other nodes that are used to run a dialog. This folder can also be used to store information that has yet to be approved by the customer for use in a dialog and for other dialog structures you might need to test later.

Global

Stores any nodes/functions you want run every time that the dialog must do a function. A search node searches this folder first.

Concepts

Stores all the local concepts that are used by a dialog. Store only concept nodes in this folder.

The following code shows these folder nodes in XML format:

  <flow>
  	<folder label="Main"></folder>
  	<folder label="Library"></folder>
  	<folder label="Global"></folder>
  	<folder label="Concepts"></folder>
  </flow>

Consider a scenario for designing a dialog for a system that can answer questions about virtual agents. In this scenario, you might create a new folder as a child of the Library folder, and specify "About Virtual Agents" for the label attribute, as shown in the following code. You would use this folder to store all the dialog nodes that refer to ordering pizzas.

  	<folder label="Library">
  		<folder label="About Virtual Agents"></folder></folder>

getUserInput

The getUserInput node enables users to communicate with the Dialog service.

This node receives the input that is submitted by the user. The getUserInput node causes the Dialog service to wait for a response from the end user, and Dialog service does not respond until the user submits some text into the dialog window.

The getUserInput node is different from the input node. While the input node is used as a matching criteria, the getUserInput node is used to get information from the user. It is always specified after the initial welcome message. For example, a welcome message that says, “Hi, what is your question?” is followed by a getUserInput node, as shown in the following code:

			<output>
				<prompt>
					<item>Hi, what is your question?</item></prompt>
				<getUserInput>
				</getUserInput>
			</output>

Consider using text that is 150 characters or less. Otherwise, the system processes the input slowly.

goto

The goto node directs the system to go to a specific part of the folder tree or to a specific output node.

Consider the following example. If a user asks “Is Watson a Virtual Agent?”, an input node must be created to match the question. In this example, you want your response to be the same response that matches the question “What is a dialog?”. If you had to use only input nodes, you would copy and paste the original answer into an output node for this new input node. However, this solution creates a maintenance problem. If the answer changes in the original output, and six or seven input nodes use the same output, the maintenance that is required to ensure they all have the same response increases. Maintenance increases especially if the nodes are scattered throughout the dialog.

A better solution is the goto node. Goto nodes tell the Dialog service to go to the output node and do the function. In this case, the function is to provide output to the user. By pointing the dialog to the original output response, you need to maintain only the content for one output node instead of multiple outputs that have the same text response. The following code shows how the goto node works

  		    	<input>
  		    		<grammar>
  		    			<item>What is a virtual agent?</item>
  		    			<item>What * virtual agent?</item>
  		    			<item>$ what is a virtual agent?</item>
  		    			<item>$ tell me * virtual agent</item>
  		    		</grammar>
  		    		<output id="va_definition">
  		    			<prompt>
  		    				<item>
                                                    A virtual agent is an automated system
  							 that can be used to increase customer
  							 satisfaction.
                                                </item>
  		    			</prompt>
  		    		</output>
  		    	</input>
  		    	<input>
  		    		<grammar>
  		    			<item>Is Watson a virtual agent?</item></grammar>
  		    		<goto ref="va_definition"></goto>
  		    	</input>

if

The if node checks whether a specific event or requirement is met.

This check is called a profile check, and it uses profile variables to determine the next step that the system takes.

For example, if you want the system to check whether a person previously asked, "What is a Virtual Agent?", create a profile check to see whether the user received the normal response to the question. If they received the normal response, you can provide some other piece of information.

Profile checks are used to determine the number of deflections to a call center and the number of sales queries, and to track topics that users discuss. They are also used to give different responses based on a user's profile, such as age, gender, or location.

If the profile check is true, the system continues to process the child nodes. If the profile check is false, the system moves on to the next step. In this case, if a user asks, "What is a virtual agent?", the system displays "As I mentioned before ..." If the profile check is false, the system displays "A Virtual Agent is an automated ..."

The following code shows this example:

  			<input>
  				<grammar>
  					<item>What is a virtual agent?</item>
  				</grammar>
  				<if>
  					<cond varName="Already Answered"
  						operator="EQUALS">
  						Yes
  					</cond>
  				</if>
  				<output>
  					<prompt>
  						<item>As I mentioned before, a virtual agent is an automated system that can answer questions and help you solve problems.</item>
  					</prompt>
  				</output>
  			</input>

Multiple profile checks can occur in a single profile check node, and they can be set to require any checks to be true or all checks to be true.

input

The input node matches the input, or the question, that users submit during a conversation with the system.

Consider the virtual agent scenario. When users submit the question “What is a Virtual Agent?”, the dialog must have an input node that has a child grammar node, and the grammar node must have a child item node. The item node contains the text, "What is a virtual agent." The content of the first item node is the primary variation. The additional item nodes contain permutations of the primary variation, and they are called variations. Instead of writing complete words in variations, use wildcards. The following code shows an example of an input node that contains variations that use wildcards.

        <folder label="Library">
            <folder label="Live Content" id="Live Content">
                <input>
                    <grammar>
                        <item>What is a virtual agent?</item>
                        <item>$ What is a virtual agent?</item>
                        <item>$ Tell me * virtual agent</item>
                    </grammar>
                </input>
            </folder>
		</folder>

You can use the following wildcard characters:

Asterisk (*)

Replaces a word or set of words in the position the * occupies.

For example, "What is * dialog" matches the following variations:

  • "What is a dialog"

  • "What is this thing called a dialog"

  • "What is the meaning of a dialog"

  • And so on

The asterisk tells the system that the number of words between "is" and "Dialog" do not matter. Users need to type only the sentence that begins with "what is" and ends with "Dialog."

However, if you place an asterisk it does not match to a sentence where there aren't any words in place of the asterisk. For example, "What is dialog" does not match to "What is * dialog". The asterisk is used to indicate that a word, or words, must occupy that space.

Dollar sign ($)

Indicates that the phrase after it must appear exactly as it is written, but any words can precede it or follow it.

For example, "$ is a dialog" matches the following variations:

  • "So, can you tell me what is a dialog, please"

  • "I've heard about virtual agents, but is a dialog one of those"

  • "Tell me, is a dialog something I can create"

  • "Is a dialog something I can use for my business"

  • And so on

Each example has the exact phrase "is a dialog" in it. If the phrase doesn't appear in the user's text exactly as it was written after the dollar sign, a match is not made.

Tip:

Always use correct grammar, spelling, and punctuation in the primary version because it can be shown to the user during Auto-learn, and being correct looks professional.

Combinations of wildcards

You can use both wildcards together too. For example, the variation "$ what is * Dialog" matches a greater variety of user text to the input. However, be careful when you use wildcards, especially the asterisk, because users can ask questions that might be different from the meaning of the specific input. For example, "$ what is * dialog" can also match to the question "So what is a dialog, can I use it to cheat on an exam".

If no input nodes match the question that is submitted by the user, the system usually does not respond.

Input strings are represented by Java strings. The maximum length of a Java string is 231 - 1.

output

The output node displays information from the system to the user. Output nodes are the messages that the system returns to a user's input.

They contain the messages that the system returns to a user's input. The output node is a child of the input node. The output node contains a child prompt node, and the prompt node contains a child item node that contains the text for the system's response. In the scenario, the output node might include this text, "A virtual agent is an automated system that can be used to increase customer satisfaction." The following code shows examples of the input and output nodes:

  			  	<input>
  		    		<grammar>
  		    			<item>What is a virtual agent?</item>
  		    			<item>What * virtual agent?</item>
  		    			<item>$ what is a virtual agent?</item>
  		    			<item>$ tell me * virtual agent</item>
  		    		</grammar>
  		    		<output>
  		    			<prompt>
  		    				<item>
                                                    A virtual agent is an automated system
  							 that can be used to increase customer
  							 satisfaction.
                                                </item>
  		    			</prompt>
  		    		</output>
				</input>

The output node can contain multiple item nodes. When multiple item nodes are specified, the system can return slightly different but always accurate responses to the same question. This feature is useful when you use the default node because you can provide other ways to indicate that the system does not understand the question that the user asked.

Additionally, the system can display the various outputs randomly or sequentially by specifying the selectionType attribute on the prompt node. Specifying random for the means that each time that node is processed, the dialog displays a random option from the list of item nodes. Specifying sequential means that each time the output node is processed, the dialog displays the next output item in the list.

When the the random and sequential options are used, the system processes the same nodes while the conversation is kept fresh without sounding robotic.

If only one item is in the list, these options are redundant.

Output strings are represented by Java strings. The maximum length of a Java string is 231 - 1.

variables

The variables node contains profile variables that you create to store information that users provide during conversations.

Profile variables are stored as part of the conversation history. They last as long as the conversation.

The following code shows an example of a profile variable for a type of phone a user intends to buy.

    <variables>
        <var_folder name="Phones">
            <var name="PhoneType" type="TEXT" description="The user's phone preference."></var>
        </var_folder>
    </variables>

Use the following guidelines when you specify the name attribute:

  • The names are case-sensitive.

  • Do not include spaces. Use either a single word without spaces, such as PhoneType, or words that are separated by underscores, such as Phone_Type.

Dynamic node resolution (DNR)

Dynamic node resolution (DNR) is a mechanism that intelligently determines which node will continue the dialog when the system comes to the end of a node tree.

DNR always returns the system to a getUserInput node only. The getUserInput node to which the system returns to depends on the structure of the dialog. In a typical dialog, a main getUserInput node serves as an entry point to the node tree. This main getUserInput node contains a set of child search nodes that tells the system to search in certain folders and one default node that handles the situations in which the system cannot find a match in the folders that the search nodes searched.

DNR is always enabled, and you control how it works by leveraging the settings that apply to your unique use case.

To see the complete XML file that shows the following examples, open dnr_example.xml.

DNR with getUserInput nodes and search nodes

When the system hits a search node, it looks for a match to the user's input in the folders and subfolders to which the search node directs it. Let's say the user submits I am bored. The system finds a match to that input in the ChitChat subfolder of the Library folder and displays the content of the matching output node. Because these output nodes in the ChitChat subfolder are leaf nodes (They don't have child nodes.), the system returns to the nearest getUserInput node that precedes the search node that sent the system to the folder where a match was found. When the default settings are used, the system displays the content of the output node that precedes the getUserInput node to which the system returned. This output node provides the right context for the user, so that the user can understand the system's expectations. The following exchange between a user and the system shows how DNR works in the flow of this conversation:

  • System: Hello there! We do insurance, banking and weather.

  • User: I am bored

  • System: Maybe I can cheer you up by giving you an insurance quote?

  • System: Anything else I can do for you?

DNR in subdialogs with the default node

In this example, when the user asks for her card to be blocked, a subdialog begins so that she can confirm that she does want her card to be blocked. The subdialog is defined by a getUserInput node that follows the system's request for confirmation. The system wants the user to answer yes or no, but the user can say anything she wants to say. In case she submits input that does not match to yes or no, the system hits the default node, a child node of the getUserInput node, so that the user must make a decision whether to block the card. This default node ensures that the subdialog continues until the user gives an answer that matches to yes or no. DNR returns the system to the nearest getUserInput node that precedes this default node. The following exchange between a user and the system shows how DNR works in the flow of this conversation:

  • System: Hello there! We do insurance, banking and weather.

  • User: Block my card.

  • System: Are you sure you want your card 1234 blocked?

  • User: What is the weather

  • System: Say yes to block your card 1234 or no to cancel.

  • System: Are you sure you want your card 1234 blocked?

However, if the user submits input that matches to yes or no, the subdialog ends, and regular DNR rules apply, returning the system to the first getUserInput node in the dialog.

  • System: Hello there! We do insurance, banking and weather.

  • User: Block my card.

  • System: Are you sure you want your card 1234 blocked?

  • User: No.

  • System: Allright, keeping your card active.

  • System: Anything else I can do for you?

DNR in subdialogs without the default node

In this example, when the user submits input that is out of the context of the current subdialog, the system finds a match to the input, which begins a new subdialog. When this new subdialog ends, DNR returns to the beginning of the original subdialog. The following exchange between a user and the system shows how DNR works in the flow of this conversation:

  • System: Hello there! We do insurance, banking and weather.

  • User: How are you?

  • The subdialog begins.

  • System: I am fine. How are you?

  • User: Fine.

  • System: Glad to hear that!

  • The subdialog ends, and DNR returns to the original subdialog at this output node.

  • System: Anything else I can do for you?

However, in some cases, a subdialog might not contain matches to submitted input. In these cases, DNR returns to the previous getUserInput node that precedes the search node. When a match is found, the conversation continues from there. When this conversation ends at a leaf node, DNR returns to the original subdialog because it still needs to reach an end. The following exchange between a user and the system shows how DNR works in the flow of this conversation:

  • System: Hello there! We do insurance, banking and weather.

  • User: How are you?

  • The subdialog begins.

  • System: I am fine. How are you?

  • User: I am bored.

  • This user input does not have a match in the subdialog, and no default node is in the subdialog. DNR exits the subdialog and returns to the previous getUserInput node that precedes the search node.

  • System: Maybe I can cheer you up by giving you an insurance quote?

  • The system found a match, and DNR returns to the subdialog because it still needs to finish.

  • System: I am fine. How are you?

DNR settings

You can change how DNR works by using these settings:

DNR return action

The DNR_NODE_ID setting specifies whether DNR returns to the previous getUserInput and displays the content of the previous closest output node to provide context or just returns to the previous getUserInput node without displaying the content of the previous closest output node. For more information, see the DNR_NODE_ID setting. The default action is to return to the previous getUserInput and display the content of the previous closest output node.

DNR join statement

The text to be displayed every time DNR is in action, if the default value is specified for the DNR_NODE_ID setting. For more information see, the specialSetting element.

Return point candidates and DNR candidates

The following advanced settings are for experienced dialog designers to further customize how DNR works.

The DEFAULT_DNR_RETURN_POINT_CANDIDATE setting specifies the default behavior during a check to determine whether a getUserInput node is a DNR return point candidate. For more information, see the DEFAULT_DNR_RETURN_POINT_CANDIDATE setting.

The isDNRCandidate attribute of the getUserInput node specifies whether the getUserInput node is used as a target return point for the DNR process. For more information, see the isDNRCandidate attribute.

If default values are specified for both the DEFAULT_DNR_RETURN_POINT_CANDIDATE element and isDNRCandidate attribute, all of the getUserInput nodes are DNR candidates, and the regular rules of DNR apply. However, if DEFAULT_DNR_RETURN_POINT_CANDIDATE is false, the getUserInput node is not a DNR candidate, and the system can't find a return point, the system returns to the DNR master point. If the DNR master point is not set, the system returns to the very first getUserInput node.

Master point

The DEFAULT_POINT_NODE_ID setting specifies the DNR master point, the node to which you want DNR to ultimately return. For more information, see the DEFAULT_POINT_NODE_ID setting.

If search nodes aren't hit, the system returns to the master point. If the master point is not specified, the system returns to the first getUserInput node in the dialog.

IBM Watson™ Natural Language Classifier service integration

Integration of the Natural Language Classifier service with the Dialog service provides new options for matching user input.

You can use a trained natural language classifier statistical model in your dialog to route user input during a conversation. Classifiers are called from the search node, which operates by one of the following search strategies:

  • Rules-based matching

  • Classifier-only matching

  • Exact match first. This strategy is a combination of rules-based and classifier-only matching. The system tries rules-based matching first, and if a match is not found, it uses classifier-only matching.

For more information about these options and classifier settings, see the classifier element and the setting element.

The labels in the classifier training data are routed to dialog input nodes in the following ways:

  • The class name must be an <item> element in the input rules that contains the prefix INTENT:. For example, For example, if you have an intent for LOCATION, you need the following <item> element: would need a corresponding <item> in one of your inputs for INTENT: LOCATION

  • A variation that is prefixed by the INTENT keyword represents a label from the classifier (e.g. INTENT: OpeningTalk).

Important:

To integrate a classifier into your dialogs, you must create an instance of the Natural Language Classifier service, get your service credentials, and train the classifier to be used with your data. For more information, see Getting started with the Natural Language Classifier service.

The following sample code shows how to call the classifier. The search node that calls the classifier and the related setting elements are in bold.

<?xml version="1.0" encoding="UTF-8"?>
<dialog xsi:noNamespaceSchemaLocation="WatsonDialogDocument_1.1.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <flow>
        <folder label="Main">
            <output>
                <prompt selectionType="RANDOM">
                    <item>Hello, I'm here to help. Just ask your question.</item>
                </prompt>
                <goto ref="output_2502686"/>
            </output>
            <output isInsertDNRStatement="false" id="output_2502686">
                <prompt selectionType="RANDOM"/>
                <getUserInput>
                    <search ref="folder_2517136">
                        <classifier policy="SEARCHMODE_CLASSIFIER"
                            threshold="0.6" exactMatchFirst="true"
                            fuzzyThreshold="0.1">
                            <customParams></customParams>
                        </classifier>
                    </search>
                    <default>
                        <output>
                            <prompt selectionType="RANDOM">
                                <item>NO_MATCH</item>
                            </prompt>
                        </output>
                    </default>
                </getUserInput>
            </output>
        </folder>
        <folder label="Library">
            <folder label="Movies" id="folder_2517136">
                <input>
                    <grammar>
                        <item>INTENT: LookupDirectors</item>
                        <item>how are you?</item>
                    </grammar>
                    <output>
                        <prompt selectionType="RANDOM">
                            <item>It was LookUpDirectors</item>
                        </prompt>
                    </output>
                </input>
                <input>
                    <grammar>
                        <item>INTENT: LookupActors</item>
                    </grammar>
                    <output>
                        <prompt selectionType="RANDOM">
                            <item>It was LookUpActors</item>
                        </prompt>
                    </output>
                </input>
                <input>
                    <grammar>
                        <item>INTENT: SmallTalk</item>
                    </grammar>
                    <output>
                        <prompt selectionType="RANDOM">
                            <item>It was SmallTalk</item>
                        </prompt>
                    </output>
                </input>
                <input>
                    <grammar>
                        <item>INTENT: CheckShowtimes</item>
                    </grammar>
                    <output>
                        <prompt selectionType="RANDOM">
                            <item>It was CheckShowtimes</item>
                        </prompt>
                    </output>
                </input>
                <input>
                    <grammar>
                        <item>INTENT: SearchMovies</item>
                    </grammar>
                    <output>
                        <prompt selectionType="RANDOM">
                            <item>It was SearchMovies</item>
                        </prompt>
                    </output>
                </input>
                <input>
                    <grammar>
                        <item>INTENT: GiveName</item>
                    </grammar>
                    <output>
                        <prompt selectionType="RANDOM">
                            <item>It was GiveName</item>
                        </prompt>
                    </output>
                </input>
                <input>
                    <grammar>
                        <item>INTENT: ClosingTalk</item>
                    </grammar>
                    <output>
                        <prompt selectionType="RANDOM">
                            <item>It was ClosingTalk, cls: {CLASSIFIER_CLASS_0}, conf: {CLASSIFIER_CONF_0}, {CLASSIFIER_CLASS_9}</item>
                        </prompt>
                    </output>
                </input>
                <input>
                    <grammar>
                        <item>INTENT: PreSequence</item>
                    </grammar>
                    <output>
                        <prompt selectionType="RANDOM">
                            <item>It was PreSequence</item>
                        </prompt>
                    </output>
                </input>
                <input>
                    <grammar>
                        <item>INTENT: OpeningTalk</item>
                    </grammar>
                    <output>
                        <prompt selectionType="RANDOM">
                            <item>It was OpeningTalk</item>
                        </prompt>
                    </output>
                </input>
                <input>
                    <grammar>
                        <item>INTENT: OtherClass</item>
                    </grammar>
                    <output>
                        <prompt selectionType="RANDOM">
                            <item>It was OtherClass</item>
                        </prompt>
                    </output>
                </input>
            </folder>
            <folder label="Storage"/>
        </folder>
        <folder label="Global"/>
        <folder label="Concepts">
            <folder label="Parent Concepts"/>
        </folder>
    </flow>
    <constants>
        <var_folder name="Home"/>
    </constants>
    <variables>
        <var_folder name="Home">
            <var name="CLASSIFIER_CLASS_1" type="TEXT" description="auto-created"/>
            <var name="CLASSIFIER_CONF_1" type="TEXT" description="auto-created"/>
            <var name="CLASSIFIER_CLASS_2" type="TEXT" description="auto-created"/>
            <var name="CLASSIFIER_CONF_2" type="TEXT" description="auto-created"/>
            <var name="CLASSIFIER_CLASS_3" type="TEXT" description="auto-created"/>
            <var name="CLASSIFIER_CONF_3" type="TEXT" description="auto-created"/>
            <var name="CLASSIFIER_CLASS_4" type="TEXT" description="auto-created"/>
            <var name="CLASSIFIER_CONF_4" type="TEXT" description="auto-created"/>
            <var name="CLASSIFIER_CLASS_5" type="TEXT" description="auto-created"/>
            <var name="CLASSIFIER_CONF_5" type="TEXT" description="auto-created"/>
            <var name="CLASSIFIER_CLASS_6" type="TEXT" description="auto-created"/>
            <var name="CLASSIFIER_CONF_6" type="TEXT" description="auto-created"/>
            <var name="CLASSIFIER_CLASS_7" type="TEXT" description="auto-created"/>
            <var name="CLASSIFIER_CONF_7" type="TEXT" description="auto-created"/>
            <var name="CLASSIFIER_CLASS_8" type="TEXT" description="auto-created"/>
            <var name="CLASSIFIER_CONF_8" type="TEXT" description="auto-created"/>
            <var name="CLASSIFIER_CLASS_9" type="TEXT" description="auto-created"/>
            <var name="CLASSIFIER_CONF_9" type="TEXT" description="auto-created"/>
            <var name="CLASSIFIER_CLASS_0" type="TEXT" description="auto-created"/>
            <var name="CLASSIFIER_CONF_0" type="TEXT" description="auto-created"/>
        </var_folder>
    </variables>
    <settings>
        <setting name="AUTOLEARN" type="USER">false</setting>
        <setting name="RESPONSETIME" type="USER">-2</setting>
        <setting name="MAXAUTOLEARNITEMS" type="USER">4</setting>
        <setting name="NUMAUTOSETRELATED" type="USER">0</setting>
        <setting name="TIMEZONEID" type="USER">Australia/Sydney</setting>
        <setting name="AUTOSETRELATEDNODEID" type="USER">2158864</setting>
        <setting name="CONCEPTMATCHING" type="USER">1</setting>
        <setting name="DNR_NODE_ID">-16</setting>
        <setting name="USE_CONCEPTS">3</setting>
        <setting name="PARENT_ACCOUNT">en-US</setting>
        <setting name="AL_NONE_LABEL">None of the above</setting>
        <setting name="DEFAULT_DNR_RETURN_POINT_CANDIDATE">-1</setting>
        <setting name="ENTITIES_SCOPE">3</setting>
        <setting name="DEFAULT_POINT_NODE_ID">2502688</setting>
        <setting name="USER_LOGGING">2</setting>
        <setting name="CLS_SEARCH_MODE">0</setting>
        <setting name="CLS_MODEL">0</setting>
        <setting name="CLS_ENDPOINT"></setting>
        <setting name="CLS_USERNAME"></setting>
        <setting name="CLS_PASSWORD"></setting>
        <setting name="CLS_MODELNAME">1CC095x161-nlc-13</setting>
        <setting name="CLS_ADVANCED_SETTINGS">false</setting>
        <setting name="CLS_MAXNBEST">3</setting>
        <setting name="PLATFORM_VERSION">10.1</setting>
        <setting name="USE_TRANSLATIONS">2</setting>
        <setting name="USE_SPELLING_CORRECTIONS">2</setting>
        <setting name="USE_STOP_WORDS">2</setting>
        <setting name="USE_AUTOMATIC_STOPWORDS_DETECTION">0</setting>
    </settings>
    <specialSettings>
        <specialSetting label="AutoLearn Statement" selectionType="SEQUENTIAL">
            <variations/>
        </specialSetting>
        <specialSetting label="DNR Join Statement" selectionType="RANDOM">
            <variations/>
        </specialSetting>
    </specialSettings>
</dialog>