Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Excerpt

Looks up matches to regular expressions in a dictionary and then tags the match with one or more semantic tags as an alternative representation(s).


Operates On:  Lexical Items with TOKEN flag

Note

All possibilities are tagged, including overlaps and sub-patterns, with the expectation that later disambiguation stages will choose which tags are the correct interpretation.

Configuration

  • patterns (string, required) - The resource which contains the pattern database
    • See below for the format.
  • caseInsensitive (boolean, optional) - If true, all regex will be process as case insensitive (default = true)


Code Block
languagejs
titleExample Configuration
{
 "type":"DictionaryTagger",
 "patterns":"regex-provider:patterns",
 "caseInsensitive": true
}


Example Output

In the following example, "What's your name" is in the dictionary as a regex for self-name, and there are also regex for number "[0-9]+" and "[0-9]+\\.[0-9]+" :

Code Block
languagetext
themeFadeToGrey
 V--------------------------------------[What's your name 12 @#$ 25 63.3]---------------------------------------V  
  ^-----[What's]-----V--[your]--V--[name]--V-----[12]-----V--[@#$]--V-----[25]-----V-----------[63.3]------------^  
  ^--[What]--V--[s]--^                     ^--[{number}]--^         ^--[{number}]--^-----[63]-----V-----[3]------^  
  ^-----[what's]-----^                                                             ^---------[{number}]----------^  
  ^--[what]--^                                                                     ^--[{number}]--^--[{number}]--^  
  ^-------------[{self-name}]--------------^                                       ^---------[{number}]----------^  
  ^-------------[{self-name}]--------------^  
  ^-------------[{self-name}]--------------^  
  ^-------------[{self-name}]--------------^


Output Flags

Lex-Item Flags:

  • SEMANTIC_TAG - Identifies all lexical items which are semantic tags.

Resource Data

The regex pattern must have an "pattern dictionary" (a string to JSON map) which is a list of JSON records, indexed by entity ID. In addition, there may also be a pattern map and a token index.

Pattern (Regex) Dictionary Format

The only file which is absolutely required is the pattern dictionary. It is a series of JSON records, typically indexed by entity ID.

Each JSON record represents an entity. The format is as follows:

Code Block
languagejs
titleEntity JSON Format
{
    "_id" : "ca84",
    "tags" : [ 
        "number"
    ],
    "patterns" : [ 
        "[0-9]+", 
        "[0-9]+\\.[0-9]+"
    ],
    "confidence" : 0.95
  . . . additional fields as needed go here . . . 
}

Notes

  1. Multiple patterns can have the same entry.
  2. Additional fielded data can be added to the record
    1. As needed by downstream processes.

Fields

  • id (required, string) - Identifies the entity by unique ID. This identifier must be unique across all entries (across all dictionaries).
    • Typically this is an identifier with meaning to the larger application which is using the Language Processing Toolkit.
  • tags (required, array of string) - The list of semantic tags which will be added to the interpretation graph whenever any of the patterns are matched.
    • These will all be added to the interpretation graph with the SEMANTIC_TAG flag.
  • patterns (required, array of string) - A list of patterns to match in the content.
  • confidence (optional, float) - Specifies the confidence level of the entity, independent of any patterns matched.
    • This is the confidence of the entry, in comparison to all of the other entries. Essentially, the likelihood that this entry, will be randomly encountered.

Other, Optional Fields

  • display (optional, string) - What to show the user when browsing this entity.
  • context (optional, object) - A context vector which can help disambiguate this entity from others with the same pattern.
    • Format TBD, but probably a list of weighted words, phrases and tags.