The Intent stage does a semantic comparison of a sentence against possible intents (using TensorFlow or a Neural Network on the Python Bridge), if the confidence value is in the threshold, it will create a tag holding the intent.

This recognizer uses a frozen Universal Sentence Encoder TensorFlow model to encode (using sentence embedding vectors) a list of intents. Then tags sentences that match an intent given a specified threshold of accuracy with the intent from the list of possible intents.

Operates On:  Lexical Items with TOKEN and possibly other flags as specified below.

Stage is a Recognizer for Saga Solution, and can also be used as part of a manual pipeline or a base pipeline


Library: saga-intent-stage


Generic Configuration Parameters

  • boundaryFlags ( type=string array | optional ) - List of vertex flags that indicate the beginning and end of a text block.
    Tokens to process must be inside two vertices marked with this flag (e.g ["TEXT_BLOCK_SPLIT"])
  • skipFlags ( type=string array | optional ) - Flags to be skipped by this stage.
    Tokens marked with this flag will be ignored by this stage, and no processing will be performed.
  • requiredFlags ( type=string array | optional ) - Lex items flags required by every token to be processed.
    Tokens need to have all of the specified flags in order to be processed.
  • atLeastOneFlag ( type=string array | optional ) - Lex items flags needed by every token to be processed.
    Tokens will need at least one of the flags specified in this array.
  • confidenceAdjustment ( type=double | default=1 | required ) - Adjustment factor to apply to the confidence value of 0.0 to 2.0 from (Applies for every pattern match).
    • 0.0 to < 1.0  decreases confidence value
    • 1.0 confidence value remains the same
    • > 1.0 to  2.0 increases confidence value
  • debug ( type=boolean | default=false | optional ) - Enable all debug log functionality for the stage, if any.
  • enable ( type=boolean | default=true | optional ) - Indicates if the current stage should be consider for the Pipeline Manager
    • Only applies for automatic pipeline building

Configuration Parameters

  • Neural Network - Universal Sentence Encoder ( type=boolean | default=Neural Network (false) | required ) - Switch between Neural Network using Python Bridge or Universal Sentence Encoder using Tensorflow.
    • Both options have their own set of configurations and change on the UI if one or the other is checked.

Configuration Parameters (Neural Network)

  • localhost ( type=string | default=localhost | optional ) - Host where the Python-Bridge is running.
  • Port ( type=integer | default=5000 | optional ) - Port where the Python Bridge is running.
  • Select Model ( type=string | default=None | required ) - Model to be used for the intent recognizer
  • Select Version ( type=string | default=None | required ) - Version to be used for the recognizer.
  • Match Threshold ( type=double | default=0.6 | required ) - Percentage of similarity to be accepted by the recognizer. A higher threshold would mean closer results but less similarities found, a lower threshold would find more similarities but less closer results.
  • Normalize Tags ( type=string array | default=None | optional ) - List of tags to be normalized by the recognizer.
  • Remove Tags ( type=string array | default=None | optional ) - List of tags to be removed by the recognizer.


Configuration Parameters (Universal Sentence Encoder)

  • Match Threshold ( type=double | default=0.6 | required ) - Percentage of similarity to be accepted by the recognizer. A higher threshold would mean closer results but less similarities found, a lower threshold would find more similarities but less closer results.
  • Normalize Tags ( type=string array | default=None | optional ) - List of tags to be normalized by the recognizer.
  • Remove Tags ( type=string array | default=None | optional ) - List of tags to be removed by the recognizer.


"atLeastOneFlag": []
"boundaryFlags": ["SENTENCE_SPLIT", "TEXT_BLOCK_SPLIT"]
"confidenceAdjustment": 1
"debug": false
"dontProcessFlags": []
"hostname": "localhost"
"intents": "saga-provider:saga_intent"
"modelName": "bert-base-uncased"
"modelPath": "tf-models/use/"
"normalizeTags": []
"port": 5000
"removeTags": []
"requiredFlags": []
"skipFlags": []
"threshold": 0.6
"useTensorFlow": false
"version": "1"
"_encrypt": []


Example Output

V---------------------[Any analytics available for Internal Sites? Why are dogs always hungry?]---------------------V 
^----------[Any analytics available for Internal Sites? ]-----------V---------[Why are dogs always hungry?]---------^ 
^-[Any]-V-[analytics]-V-[available]-V-[for]-V-[Internal]-V-[Sites?]-^-[Why]-V-[are]-V-[dogs]-V-[always]-V-[hungry?]-^ 
^----------------------[{internalSiteIntent}]-----------------------^ 


Output Flags

Lex-Item Flags:

  • SEMANTIC_TAG - Identifies all lexical items which are semantic tags.
  • INTENT - Placed on all the tokens which passed the minimal threshold.

Vertex Flags:

No vertices are created in this stage