An annotation represents an additional data layer associated with words or sentences in the user input, e.g. data generated by NER, POS taggers, etc. An annotation has a name and is associated with a sentence via the sentence's index in the list of sentences and holds a set of indices of the word or words in the sentence to which it is associated. I.e. an annotation is assigned to a sentence from a user input, and then to one or more words in that sentence; therefore, a word or sentence may carry one or multiple annotations.
Optionally, annotations also store a map of variables (property key & value pairs), which enrich their attached objects with further details. These variables can then be used to pass data about the match to be used in scripting to provide better natural language understanding, enhancing the standard engine matching process.
Annotations are, in a way, “dynamic language objects” that are generated at runtime, as opposed to normal, static, language objects that always exist in the solution and require that a condition be fulfilled to match. In other words, for a condition using annotations to be fulfilled, those annotations with the name given in the condition must exist.
This section includes various knowledge articles related to annotations in the Teneo Platform.
Types of annotations
Annotations can be created both by Input Processors or by the Engine which come with System and Standard annotations; further more users can create their own custom annotations.
It is possible to create new annotations using the Teneo Engine Scripting API and this section provides information related tot he annotation class method and the annotation interface methods.
Annotations can be used anywhere in a solution where it is possible to use a Language Object or Entity by following the Teneo Linguistic Modelling Language's rules.
Furthermore, they can be added, updated and removed in Pre-matching scripts or in Global Pre-Listeners.