# ============================================================
# This role class is generated from the file
#   CommonSpeechParts-template
# using the function addFuzzyMatch from
#   DSL::Shared::Utilities::AddFuzzyMatching
# ============================================================

use v6;

use DSL::Shared::Utilities::FuzzyMatching;

role DSL::Shared::Roles::English::CommonSpeechParts {
    # Single words
    token ID-noun { 'ID' }
    token IDENTIFIER-adjective { <IDENTIFIER-noun> }
    token IDENTIFIER-noun { 'IDENTIFIER' }
    token MODULE-noun { 'MODULE' }
    token TARGET-noun { 'TARGET' }
    token USER-noun { 'USER' }
    token a-determiner { 'a' | 'an' }
    token add-verb { 'add' }
    token adhere-verb { 'adhere' }
    token adjacency-noun { 'adjacency' }
    token adjacent-adjective { 'adjacent' }
    token algorithm-noun { 'algorithm' }
    token algorithms-noun { 'algorithms' }
    token all-determiner { 'all' }
    token and-conjunction { 'and' }
    token annex-verb { 'annex' }
    token answer-noun { <answer-noun> }
    token answer-verb { 'answer' }
    token append-verb { 'append' }
    token apply-verb { 'apply' }
    token are-verb { 'are' }
    token array-noun { 'array' }
    token arrays-noun { 'arrays' }
    token as-preposition { 'as' }
    token assign-verb { 'assign' }
    token at-preposition { 'at' }
    token automatic { 'automatic' }
    token away-adverb { 'away' }
    token axes-noun { 'axes' }
    token axis-noun { 'axis' }
    token be-verb { 'be' }
    token both-determiner { 'both' }
    token bottom-noun { 'bottom' }
    token broaden-verb { 'broaden' }
    token by-preposition { 'by' | 'with' | 'using' }
    token calculation { 'calculation' }
    token case-noun { 'case' }
    token cases-noun { 'cases' }
    token channel-adjective { <channel-noun> }
    token channel-noun { 'channel' }
    token chart-noun { 'chart' }
    token chart-verb { <chart-noun> }
    token classify-verb { 'classify' }
    token clear-verb { 'clear' }
    token cluster { <cluster-noun> }
    token cluster-noun { 'cluster' }
    token clusters-noun { 'clusters' }
    token code-noun { 'code' }
    token codes-noun { 'codes' }
    token column-noun { 'column' }
    token columns { <columns-noun> }
    token columns-noun { 'columns' }
    token complete-adjective { 'complete' }
    token compute-directive { 'compute' | 'find' | 'calculate' }
    token config-noun { 'config' }
    token configuration-adjective { <configuration-noun> }
    token configuration-noun { 'configuration' }
    token connect-verb { 'connect' }
    token consider-verb { 'consider' }
    token context-noun { 'context' }
    token contingency-noun { 'contingency' }
    token convert-verb { 'convert' }
    token conveyor-adjective { <conveyor-noun> }
    token conveyor-noun { 'conveyor' }
    token count-verb { 'count' }
    token counts-noun { 'counts' }
    token create { 'create' }
    token create-directive { <create-verb> | 'make' }
    token create-verb { 'create' }
    token creation-noun { 'creation' }
    token current-adjective { 'current' }
    token data-adjective { <data-noun> }
    token data-noun { 'data' }
    token dataset { <dataset-noun> }
    token dataset-noun { 'dataset' }
    token datasets-noun { 'datasets' }
    token date-adjective { <date-noun> }
    token date-noun { 'date' }
    token dates-noun { 'dates' }
    token datum-noun { 'datum' }
    token default { <default-noun> }
    token default-noun { 'default' }
    token delete-directive { 'delete' | 'drop' | 'erase' | 'remove' }
    token detect-verb { 'detect' }
    token diagram { <diagram-synonyms> }
    token diagram-noun { 'diagram' }
    token diagram-synonyms { <diagram-noun> | <plot-noun> | <plots-noun> | <graph-noun> | <chart-noun> }
    token dictionary-noun { 'dictionary' }
    token difference { 'difference' }
    token dimension-noun { 'dimension' }
    token dimensions-noun { 'dimensions' }
    token directly-adverb { 'directly' }
    token display-directive { <display-verb> | 'show' | 'echo' }
    token display-verb { 'display' }
    token distance-noun { 'distance' }
    token do-verb { 'do' }
    token document-noun { 'document' }
    token documents-noun { 'documents' }
    token domain-noun { 'domain' }
    token drop-verb { 'drop' }
    token during-preposition { 'during' }
    token each-determiner { 'each' }
    token echo-verb { 'echo' }
    token element { <element-noun> }
    token element-noun { 'element' }
    token elements { <elements-noun> }
    token elements-noun { 'elements' }
    token empty-noun { 'empty' }
    token empty-verb { <empty-noun> }
    token every-determiner { 'every' }
    token extend-verb { 'extend' }
    token extract-directive { 'extract' }
    token filter { <filter-verb> }
    token filter-noun { <filter-verb> }
    token filter-verb { 'filter' }
    token find-verb { 'find' }
    token first-adjective { 'first' }
    token for-preposition { 'for' | 'with' }
    token frame-noun { 'frame' }
    token frames-noun { 'frames' }
    token from-preposition { 'from' }
    token function { <function-noun> }
    token function-noun { 'function' }
    token functions { <functions-noun> }
    token functions-noun { 'functions' }
    token generate-directive { <generate-verb> | <create-verb> | 'make' }
    token generate-verb { 'generate' }
    token get-verb { 'get' }
    token graph-noun { 'graph' }
    token had-verb { 'had' }
    token have-verb { 'have' }
    token head-adjective { <head-noun> }
    token head-noun { 'head' }
    token high-adjective { 'high' }
    token higher-adjective { 'higher' }
    token highest-adjective { 'highest' }
    token histogram { 'histogram' }
    token histograms { 'histograms' }
    token how-adverb { 'how' }
    token id-noun { 'id' }
    token identifier-adjective { <identifier-noun> }
    token identifier-noun { 'identifier' }
    token in-preposition { 'in' }
    token include-verb { 'include' }
    token ingest-verb { 'ingest' }
    token interpreter-noun { 'interpreter' }
    token interpreting-adjective { 'interpreting' }
    token into-preposition { 'into' }
    token is-verb { 'is' }
    token it-pronoun { 'it' }
    token iterations { 'iterations' }
    token join-verb { <join-noun> }
    token join-noun { 'join' }
    token language-noun { 'language' }
    token largest-adjective { 'largest' }
    token last-adjective { 'last' }
    token left-adjective { <left-noun> }
    token left-noun { 'left' }
    token link-noun { 'link' }
    token list-noun { 'list' }
    token load-verb { 'load' }
    token locate-verb { 'locate' }
    token low-adjective { 'low' }
    token lower-adjective { 'lower' }
    token lowest-adjective { 'lowest' }
    token make-noun { 'make' }
    token making-noun { 'making' }
    token manner { <manner-noun> }
    token manner-noun { 'manner' }
    token many-determiner { 'many' }
    token matrices-noun { 'matrices' }
    token matrix-noun { 'matrix' }
    token matrixes-noun { 'matrixes' }
    token maximum { 'max' | 'maximum' }
    token message-noun { 'message' }
    token method-adjective { <method-noun> }
    token method-noun { 'method' }
    token methods-noun { 'methods' }
    token minimum { 'min' | 'minimum' }
    token missing-adjective { 'missing' }
    token model { <model-noun> }
    token model-noun { 'model' }
    token module-noun { 'module' }
    token much-pronoun { 'much' }
    token my-determiner { 'my' }
    token name-noun { 'name' }
    token names-noun { 'names' }
    token nearest-adjective { 'nearest' }
    token neighbors-noun { 'neighbors' }
    token new-adjective { 'new' }
    token no-determiner { 'no' }
    token non-prefix { 'non' }
    token number-noun { 'number' }
    token object-noun { 'object' }
    token obtain-verb { 'obtain' }
    token of-preposition { 'of' }
    token off-adverb { 'off' }
    token on-preposition { 'on' }
    token one-pronoun { 'one' }
    token ones-pronoun { 'ones' }
    token or-conjunction { 'or' }
    token our-determiner { 'our' }
    token out-adverb { 'out' }
    token outlier-adjective { <outlier-noun> }
    token outlier-noun { 'outlier' }
    token outliers-noun { 'outliers' }
    token over-preposition { 'over' }
    token parameter-noun { 'parameter' }
    token parameters-noun { 'parameters' }
    token part-noun { 'part' }
    token pattern-noun { 'pattern' }
    token per-preposition { 'per' }
    token pipeline-adjective { <pipeline-noun> }
    token pipeline-noun { 'pipeline' }
    token plot-noun { 'plot' }
    token plots-noun { 'plot' | 'plots' }
    token position-noun { 'position' }
    token pull-noun { <pull-verb> }
    token pull-verb { 'pull' }
    token random-adjective { 'random' }
    token records { 'records' }
    token reduce-verb { 'reduce' }
    token remove-verb { 'remove' }
    token repeat-verb { 'repeat' }
    token replace-verb { 'replace' }
    token represent-directive { <represent-verb> | 'render' | 'reflect' }
    token represent-verb { 'represent' }
    token rest-noun { 'rest' }
    token result-noun { 'result' }
    token results { <results-noun> }
    token results-noun { 'results' }
    token reverse-adjective { 'reverse' }
    token right-adjective { <right-noun> }
    token right-noun { 'right' }
    token row-noun { 'row' }
    token rows { <rows-noun> }
    token rows-noun { 'rows' }
    token run-verb { 'run' | 'runs' }
    token running-verb { 'running' }
    token second-adjective { 'second' }
    token separate-verb { 'separate' }
    token series-noun { 'series' }
    token set-directive { 'set' }
    token set-noun { 'set' }
    token setup-adjective { <setup-noun> }
    token setup-noun { 'setup' }
    token shape-noun { 'shape' }
    token show-verb { 'show' }
    token simple { 'simple' | 'direct' }
    token simply-adverb { 'simply' }
    token simulate { 'simulate' }
    token simulate-directive { <simulate> }
    token simulation { 'simulation' }
    token single-adjective { 'single' }
    token site-noun { 'site' }
    token smallest { 'smallest' }
    token smallest-adjective { 'smallest' }
    token some-determiner { 'some' }
    token sparse-adjective { 'sparse' }
    token specific-adjective { 'specific' }
    token split-verb { 'split' }
    token spot-verb { 'spot' }
    token spread-verb { 'spread' }
    token statistical { <statistical-adjective> }
    token statistical-adjective { 'statistical' }
    token statistics-noun { 'statistics' }
    token stats-noun { 'stats' }
    token step-noun { 'step' }
    token steps-noun { 'steps' }
    token string-noun { 'string' }
    token sub-prefix { 'sub' }
    token summaries { <summaries-noun> }
    token summaries-noun { 'summaries' }
    token summarize-directive { 'summarize' }
    token summary { <summary-noun> }
    token summary-noun { 'summary' }
    token system-noun { 'system' }
    token table-noun { 'table' }
    token tables-noun { 'tables' }
    token tabular-adjective { 'tabular' }
    token take-verb { 'take' }
    token tape-adjective { <tape-noun> }
    token tape-noun { 'tape' }
    token target-noun { 'target' }
    token text-adjective { <text-noun> | <textual-adjective> }
    token text-noun { 'text' }
    token texts-noun { 'texts' }
    token textual-adjective { 'textual' }
    token that-pronoun { 'that' }
    token the-determiner { 'the' }
    token them-pronoun { 'them' }
    token this-pronoun { 'this' }
    token threshold-adjective { <threshold-noun> }
    token threshold-noun { 'threshold' }
    token time-adjective { 'time' }
    token time-noun { 'time' }
    token timeline-noun { 'timeline' }
    token times-noun { 'times' }
    token to-preposition { 'to' | 'into' }
    token top-adjective { <top-noun> }
    token top-noun { 'top' }
    token transform-verb { 'transform' }
    token translation-noun { 'translation' }
    token type-noun { 'type' }
    token types-noun { 'types' }
    token until-preposition { 'until' }
    token up-adverb { 'up' }
    token use-verb { 'use' | 'utilize' }
    token used-verb { 'used' | 'utilized' }
    token using-preposition { 'using' | 'with' | 'over' }
    token value-noun { 'value' }
    token values-noun { 'values' }
    token variable-noun { 'variable' }
    token variables-noun { 'variables' }
    token versus-preposition { 'vs' | 'vs.' | 'versus' }
    token way-noun { 'way' }
    token weight { <weight-noun> }
    token weight-adjective { <weight-noun> }
    token weight-noun { 'weight' }
    token weights { <weights-noun> }
    token weights-noun { 'weights' }
    token what-pronoun { 'what' }
    token when-pronoun { 'when' }
    token which-determiner { 'which' }
    token with-preposition { 'using' | 'with' | 'by' }
    token within-preposition { 'within' }
    token without-preposition { 'without' }
    token word-noun { 'word' }
    token words-noun { 'words' }

    # Directives and phrases
    rule USER-ID-phrase { <USER-noun> [ <ID-noun> | <IDENTIFIER-noun> ] }
    rule adjacency-matrix-phrase { [ <adjacency-noun> | <adjacent-adjective> ] <matrix-noun> }
    rule annex-directive { <annex-verb> | <append-verb> }
    rule assign-directive { <assign-verb> }
    rule complete-cases-phrase { <complete-adjective> <cases-noun> }
    rule compute-and-display { <compute-directive> [ <and-conjunction> <display-directive> ]? }
    rule creation-phrase { <creation-noun> | <making-noun> <of-preposition>? }
    rule data { <data-frame> | <data-noun> [ <set-noun> | <table-noun> ]? | <time-series-data> | <dataset-noun> }
    rule data-column-phrase { <data-noun>? [ <column-noun> | <variable-noun> ] }
    rule data-columns-phrase { <data-noun>? [ <columns> | <variables-noun> ] }
    rule data-frame { <data-noun> <frame-noun> }
    rule data-frames { <data-noun> <frames-noun> }
    rule diagram-phrase { <plot-noun> | <plots-noun> | <graph-noun> | <chart-noun> }
    rule distance-function-phrase { <distance-noun> <function> }
    rule extend-directive { <extend-verb> | <broaden-verb> | <spread-verb> <out-adverb> }
    rule find-directive { <find-verb> | <locate-verb> | <spot-verb> | <detect-verb> }
    rule for-which-phrase { <for-preposition> <which-determiner> | <that-pronoun> <adhere-verb> <to-preposition> }
    rule get-directive { <get-verb> | <take-verb> | <obtain-verb> }
    rule join-directive { <join-verb> | <connect-verb> | <link-noun> }
    rule load-data-directive { [ <load-verb> | <ingest-verb> ] <the-determiner>? <data> }
    rule load-directive { <load-verb> | <get-directive> | <consider-verb> }
    rule max-iterations-phrase { <maximum>? <number-of>? [ <iterations> | <steps-noun> ] }
    rule missing-values-phrase { <missing-adjective> <values-noun>? }
    rule nearest-neighbors-phrase { <nearest-adjective>? <neighbors-noun> | 'nns' }
    rule number-of { [ <number-noun> | <count-verb> | <counts-noun> ] <of-preposition> }
    rule plot-directive { <plot-noun> | <chart-noun> | <display-directive> <diagram> }
    rule pull-directive { <pull-verb> | <take-verb> }
    rule records-phrase { <table-noun>? [ <rows> | <records> ] }
    rule remove-directive { <delete-directive> | <drop-verb> | <take-off-phrase> | <take-away-phrase> }
    rule simple-way-phrase { <simple> [ <way-noun> | <manner> ] | <in-preposition> <a-determiner> <simple> <way-noun> | <directly-adverb> | <simply-adverb>  }
    rule simulate-and-display { <simulate-directive> [ <and-conjunction> <display-directive> ]? }
    rule take-away-phrase { <take-verb> <away-adverb> }
    rule take-off-phrase { <take-verb> <off-adverb> }
    rule time-series-phrase { <time-noun> <series-noun> }
    rule time-series-data { <time-series-phrase> <data-noun>? }
    rule use-directive { [ <get-directive> <and-conjunction>? ]? <use-verb> }
    rule using-dataset-column-phrase { <.with-preposition> <.the-determiner>? <.dataset-noun>? <.column-noun> }
}