# Colors # Example to add "COLOR" as ner tag, and hex RGB code as the normalized tag for strings matching a color # Case insensitive pattern matching (see java.util.regex.Pattern flags) ENV.defaultStringPatternFlags = 2 # Map variable names to annotation keys ner = { type: "CLASS", value: "edu.stanford.nlp.ling.CoreAnnotations$NamedEntityTagAnnotation" } normalized = { type: "CLASS", value: "edu.stanford.nlp.ling.CoreAnnotations$NormalizedNamedEntityTagAnnotation" } tokens = { type: "CLASS", value: "edu.stanford.nlp.ling.CoreAnnotations$TokensAnnotation" } # Create OR pattern of # regular expression over tokens to hex RGB code # for colors and save it in a variable $Colors = ( /red/ => "#FF0000" | /green/ => "#00FF00" | /blue/ => "#0000FF" | /magenta/ => "#FF00FF" | /cyan/ => "#00FFFF" | /orange/ => "#FF7F00" | /brown/ => "#964B00" | /purple/ => "#800080" | /gray/ => "#777777" | /black/ => "#000000" | /white/ => "#FFFFFF" | (/pale|light/) /blue/ => "#ADD8E6" ) # Define ruleType to be over tokens ENV.defaults["ruleType"] = "tokens" # Define rule that # upon matching pattern defined by $Color # annotate matched tokens ($0) with ner="COLOR" and normalized=matched value ($$0.value) { pattern: ( $Colors ), action: ( Annotate($0, ner, "COLOR"), Annotate($0, normalized, $$0.value ) ) }