You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 30 Next »

Looks up sequences of tokens in a dictionary and then tags the sequence with one or more semantic tags as an alternative representation(s).Typically these tags represent entities such as {person}, {place}, {company}, etc.  This stage is algo known as the "Entity Recognizer".

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

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

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

  • dictionary (string, required) - The dictionary resource which holds the names and to be located in the text.
    • This is specified as "provider:name" in the standard resource format.
  • ignoreTags (string array, optional) - Ignore matches with tags specified in the ignoreTags list.
  • normalizeAccents (boolean, optional) -  Removes accents and deacritics and generates a new pattern.  The default is false.
  • removeChars (boolean, optional) - Indicates if characters should be removed from the pattern using a list creating a new pattern.  The default is false.
  • charList (string, optional) - List of characters to remove from the pattern, the current default is "_-‿⁀⁔︳︴﹍﹎﹏_".


Example Configuration
{
 "type":"DictionaryTagger",
 "dictionary":"dict-provider:people-lowercase"
}

Note that the "people-lowercase" resource must be in the format as specified below.

Example Output

In the following example, "abraham lincoln" is in the dictionary as a person, "lincoln" as a place,  and "macaroni", "cheese" and "macaroni and cheese" are all specified as foods:

V--------------[abraham lincoln likes macaroni and cheese]--------------------V
^--[abraham]--V--[lincoln]--V--[likes]--V--[macaroni]--V--[and]--V--[cheese]--^
              ^--[{place}]--^           ^---[{food}]---^         ^--[{food}]--^
^---------[{person}]--------^           ^----------------[{food}]-------------^


Output Flags

Lex-Item Flags:

  • SEMANTIC_TAG - Identifies all lexical items which are semantic tags.
  • ENTITY - Identifies the token as an entity.
  • PROCESSED - Placed on all the tokens which composed the semantic tag.

Resource Data

The dictionary tagger must have an "entity 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.

Entity Dictionary Format

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

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

Entity JSON Format
{
  "id":"Q28260",
  "tags":["{city}", "{administrative-area}", "{geography}"],
  "patterns":[
    "Lincoln", "Lincoln, Nebraska", "Lincoln, NE"
  ],
  "confidence":0.95
  
  . . . additional fields as needed go here . . . 
}

Notes

  1. Multiple entities can have the same pattern.
    1. If the pattern is matched, then it will be tagged with multiple (ambiguous) entity IDs.
  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 entities (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.
    • Typically, multiple tags are hierarchical representations of the same intent. For example, {city} → {administrative-area} → {geographical-area}
  • patterns (required, array of string) - A list of patterns to match in the content.
    • Patterns will be tokenized and there may be multiple variations which can match.
      • NOTE:  Currenty, tokens are separated on simple white-space and punctuation, and then reduced to lowercase.
      • TODO:  This will need to be improved in the future, perhaps by specifying a pipeline to perform the tokenization and to allow for multiple variations.
  • confidence (optional, float) - Specifies the confidence level of the entity, independent of any patterns matched.
    • This is the confidence of the entity, in comparison to all of the other entities. Essentially, the likelihood that this entity 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.

Dictionary Index

To improve performance especially for every large databases of entities, the entity dictionary is inverted and indexed.

This currently happens in RAM inside the DictionaryTagger stage. An off-line option for pre-inverting the dictionary will be provided in the future.


  • No labels