def add(a, *args, default=None, func=add_argument, **kwargs): arg = func(a, *args, default=default if arg_default is None else arg_default, **kwargs) try: RESTORED_ARGS.add(arg.dest) except AttributeError: RESTORED_ARGS.update(get_group_arg_names(arg))
def add_param_arguments(ap=None, arg_default=None): # arguments with possible format-specific parameter values def add_argument(a, *args, **kwargs): return a.add_argument(*args, **kwargs) def add(a, *args, default=None, func=add_argument, **kwargs): arg = func(a, *args, default=default if arg_default is None else arg_default, **kwargs) try: RESTORED_ARGS.add(arg.dest) except AttributeError: RESTORED_ARGS.update(get_group_arg_names(arg)) def add_boolean(a, *args, **kwargs): add(a, *args, func=add_boolean_option, **kwargs) if not ap: ap = ArgParser() group = ap.add_argument_group(title="Node labels") add(group, "--max-node-labels", type=int, default=0, help="max number of node labels to allow") add(group, "--max-node-categories", type=int, default=0, help="max node categories to allow") add(group, "--min-node-label-count", type=int, default=2, help="min number of occurrences for a label") add_boolean(group, "use-gold-node-labels", "gold node labels when parsing") add_boolean(group, "wikification", "use Spotlight to wikify any named node") add_boolean(group, "node-labels", "prediction of node labels, if supported by format", default=True) group = ap.add_argument_group(title="Structural constraints") add_boolean(group, "linkage", "linkage nodes and edges") add_boolean(group, "implicit", "implicit nodes and edges") add_boolean(group, "remote", "remote edges", default=True) add_boolean(group, "constraints", "scheme-specific rules", default=True) add_boolean(group, "require-connected", "constraint that output graph must be connected") add(group, "--orphan-label", default="orphan", help="edge label to use for nodes without parents") add(group, "--max-action-ratio", type=float, default=100, help="max action/terminal ratio") add(group, "--max-node-ratio", type=float, default=10, help="max node/terminal ratio") add(group, "--max-height", type=int, default=20, help="max graph height") group = ap.add_mutually_exclusive_group() add(group, "--swap", choices=(REGULAR, COMPOUND), default=REGULAR, help="swap transitions") add(group, "--no-swap", action="store_false", dest="swap", help="exclude swap transitions") add(ap, "--max-swap", type=int, default=15, help="if compound swap enabled, maximum swap size") group = ap.add_argument_group(title="General classifier training parameters") add(group, "--learning-rate", type=float, help="rate for model weight updates (default: by trainer/1)") add(group, "--learning-rate-decay", type=float, default=0, help="learning rate decay per iteration") add(group, "--swap-importance", type=float, default=1, help="learning rate factor for Swap") add(group, "--max-training-per-format", type=int, help="max number of training passages per format per iteration") add_boolean(group, "missing-node-features", "allow node features to be missing if not available", default=True) add(group, "--omit-features", help="string of feature properties to omit, out of " + FEATURE_PROPERTIES) add_boolean(group, "curriculum", "sort training passages by action prediction accuracy in previous epoch") group = ap.add_argument_group(title="Perceptron parameters") add(group, "--min-update", type=int, default=5, help="minimum #updates for using a feature") SPARSE_ARG_NAMES.update(get_group_arg_names(group)) group = ap.add_argument_group(title="Neural network parameters") add(group, "--word-dim-external", type=int, default=300, help="dimension for external word embeddings") add(group, "--word-vectors", help="file to load external word embeddings from (default: GloVe)") add(group, "--vocab", help="file mapping integer ID to word form (to avoid loading spaCy), or '-' to use word form") add_boolean(group, "update-word-vectors", "external word vectors in training parameters", default=True) add(group, "--word-dim", type=int, default=0, help="dimension for learned word embeddings") add(group, "--lemma-dim", type=int, default=200, help="dimension for lemma embeddings") add(group, "--tag-dim", type=int, default=20, help="dimension for fine POS tag embeddings") add(group, "--pos-dim", type=int, default=20, help="dimension for coarse/universal POS tag embeddings") add(group, "--dep-dim", type=int, default=10, help="dimension for dependency relation embeddings") add(group, "--edge-label-dim", type=int, default=20, help="dimension for edge label embeddings") add(group, "--node-label-dim", type=int, default=0, help="dimension for node label embeddings") add(group, "--node-category-dim", type=int, default=0, help="dimension for node category embeddings") add(group, "--punct-dim", type=int, default=1, help="dimension for separator punctuation embeddings") add(group, "--action-dim", type=int, default=3, help="dimension for input action type embeddings") add(group, "--ner-dim", type=int, default=3, help="dimension for input entity type embeddings") add(group, "--shape-dim", type=int, default=3, help="dimension for word shape embeddings") add(group, "--prefix-dim", type=int, default=2, help="dimension for word prefix embeddings") add(group, "--suffix-dim", type=int, default=3, help="dimension for word suffix embeddings") add(group, "--output-dim", type=int, default=50, help="dimension for output action embeddings") add(group, "--layer-dim", type=int, default=50, help="dimension for hidden layers") add(group, "--layers", type=int, default=2, help="number of hidden layers") add(group, "--lstm-layer-dim", type=int, default=500, help="dimension for LSTM hidden layers") add(group, "--lstm-layers", type=int, default=0, help="number of LSTM hidden layers") add(group, "--embedding-layer-dim", type=int, default=500, help="dimension for layers before LSTM") add(group, "--embedding-layers", type=int, default=1, help="number of layers before LSTM") add(group, "--activation", choices=ACTIVATIONS, default=DEFAULT_ACTIVATION, help="activation function") add(group, "--init", choices=INITIALIZERS, default=DEFAULT_INITIALIZER, help="weight initialization") add(group, "--minibatch-size", type=int, default=200, help="mini-batch size for optimization") add(group, "--optimizer", choices=TRAINERS, default=DEFAULT_TRAINER, help="algorithm for optimization") add(group, "--loss", choices=LOSSES, default=DEFAULT_LOSS, help="loss function for training") add(group, "--max-words-external", type=int, default=250000, help="max external word vectors to use") add(group, "--max-words", type=int, default=10000, help="max number of words to keep embeddings for") add(group, "--max-lemmas", type=int, default=3000, help="max number of lemmas to keep embeddings for") add(group, "--max-tags", type=int, default=100, help="max number of fine POS tags to keep embeddings for") add(group, "--max-pos", type=int, default=100, help="max number of coarse POS tags to keep embeddings for") add(group, "--max-deps", type=int, default=100, help="max number of dep labels to keep embeddings for") add(group, "--max-edge-labels", type=int, default=15, help="max number of edge labels for embeddings") add(group, "--max-puncts", type=int, default=5, help="max number of punctuations for embeddings") add(group, "--max-action-types", type=int, default=10, help="max number of action types for embeddings") add(group, "--max-action-labels", type=int, default=100, help="max number of action labels to allow") add(group, "--max-ner-types", type=int, default=18, help="max number of entity types to allow") add(group, "--max-shapes", type=int, default=30, help="max number of word shapes to allow") add(group, "--max-prefixes", type=int, default=30, help="max number of 1-character word prefixes to allow") add(group, "--max-suffixes", type=int, default=500, help="max number of 3-character word suffixes to allow") add(group, "--word-dropout", type=float, default=0.2, help="word dropout parameter") add(group, "--word-dropout-external", type=float, default=0, help="word dropout for word vectors") add(group, "--lemma-dropout", type=float, default=0.2, help="lemma dropout parameter") add(group, "--tag-dropout", type=float, default=0.2, help="fine POS tag dropout parameter") add(group, "--pos-dropout", type=float, default=0.2, help="coarse POS tag dropout parameter") add(group, "--dep-dropout", type=float, default=0.5, help="dependency label dropout parameter") add(group, "--node-label-dropout", type=float, default=0.2, help="node label dropout parameter") add(group, "--node-dropout", type=float, default=0.1, help="probability to drop features for a whole node") add(group, "--dropout", type=float, default=0.4, help="dropout parameter between layers") add(group, "--max-length", type=int, default=120, help="maximum length of input sentence") add(group, "--rnn", choices=["None"] + list(RNNS), default=DEFAULT_RNN, help="type of recurrent neural network") add(group, "--gated", type=int, nargs="?", default=2, help="gated input to BiRNN and MLP") NN_ARG_NAMES.update(get_group_arg_names(group)) return ap
def __init__(self, *args): self.arg_parser = ap = ArgParser(description="Transition-based parser for UCCA.", formatter_class=ArgumentDefaultsHelpFormatter) ap.add_argument("passages", nargs="*", help="passage files/directories to test on/parse") ap.add_argument("--version", action="version", version="") ap.add_argument("-C", "--config", is_config_file=True, help="configuration file to get arguments from") ap.add_argument("-m", "--models", nargs="+", help="model file basename(s) to load/save, ensemble if >1 " "(default: <format>_<model_type>") ap.add_argument("-c", "--classifier", choices=CLASSIFIERS, default=BIRNN, help="model type") ap.add_argument("-B", "--beam", type=int, choices=(1,), default=1, help="beam size for beam search") add_boolean_option(ap, "evaluate", "evaluation of parsed passages", short="e") add_verbose_arg(ap, help="detailed parse output") constructions.add_argument(ap) add_boolean_option(ap, "sentences", "split to sentences") add_boolean_option(ap, "paragraphs", "split to paragraphs") ap.add_argument("--timeout", type=float, help="max number of seconds to wait for a single passage") group = ap.add_argument_group(title="Training parameters") group.add_argument("-t", "--train", nargs="+", default=(), help="passage files/directories to train on") group.add_argument("-d", "--dev", nargs="+", default=(), help="passage files/directories to tune on") group.add_argument("-I", "--iterations", nargs="+", type=Iterations, default=(Iterations(50), Iterations("100 --optimizer=" + EXTRA_TRAINER)), help="number of training iterations along with optional hyperparameters per part") group.add_argument("--folds", type=int, choices=(3, 5, 10), help="#folds for cross validation") group.add_argument("--seed", type=int, default=1, help="random number generator seed") add_boolean_option(group, "early-update", "early update procedure (finish example on first error)") group.add_argument("--save-every", type=int, help="every this many passages, evaluate on dev and save model") add_boolean_option(group, "eval-test", "evaluate on test whenever evaluating on dev, but keep results hidden") add_boolean_option(group, "ignore-case", "pre-convert all input files to lower-case in training and test") group = ap.add_argument_group(title="Output files") group.add_argument("-o", "--outdir", default=".", help="output directory for parsed files") group.add_argument("-p", "--prefix", default="", help="output filename prefix") add_boolean_option(group, "write", "writing parsed output to files", default=True, short_no="W") group.add_argument("-j", "--join", help="if output format is textual, write all to one file with this basename") group.add_argument("-l", "--log", help="output log file (default: model filename + .log)") group.add_argument("--devscores", help="output CSV file for dev scores (default: model filename + .dev.csv)") group.add_argument("--testscores", help="output CSV file for test scores (default: model filename + .test.csv)") group.add_argument("--action-stats", help="output CSV file for action statistics") add_boolean_option(group, "normalize", "apply normalizations to output in case format is UCCA", default=False) ap.add_argument("-f", "--formats", nargs="+", choices=FILE_FORMATS, default=(), help="input formats for creating all parameters before training starts " "(otherwise created dynamically based on filename suffix), " "and output formats for written files (each will be written; default: UCCA XML)") ap.add_argument("-u", "--unlabeled", nargs="*", choices=FORMATS, help="to ignore labels in") ap.add_argument("--lang", default="en", help="two-letter language code to use as the default language") add_boolean_option(ap, "multilingual", "separate model parameters per language (passage.attrib['lang'])") group = ap.add_argument_group(title="Sanity checks") add_boolean_option(group, "check-loops", "check for parser state loop") add_boolean_option(group, "verify", "check for oracle reproducing original passage") add_boolean_option(group, "validate-oracle", "require oracle output to respect constraints", default=True) add_param_arguments(ap) group = ap.add_argument_group(title="DyNet parameters") group.add_argument("--dynet-mem", help="memory for dynet") group.add_argument("--dynet-weight-decay", type=float, default=1e-5, help="weight decay for parameters") add_boolean_option(group, "dynet-apply-weight-decay-on-load", "workaround for clab/dynet#1206", default=False) add_boolean_option(group, "dynet-gpu", "GPU for training") group.add_argument("--dynet-gpus", type=int, default=1, help="how many GPUs you want to use") add_boolean_option(group, "dynet-autobatch", "auto-batching of training examples") DYNET_ARG_NAMES.update(get_group_arg_names(group)) ap.add_argument("-H", "--hyperparams", type=HyperparamsInitializer.action, nargs="*", help="shared hyperparameters or hyperparameters for specific formats, " 'e.g., "shared --lstm-layer-dim=100 --lstm-layers=1" "ucca --word-dim=300"', default=[HyperparamsInitializer.action("shared --lstm-layers 2")]) ap.add_argument("--copy-shared", nargs="*", choices=FORMATS, help="formats whose parameters shall be " "copied from loaded shared parameters") self.args = FallbackNamespace(ap.parse_args(args if args else None)) if self.args.config: print("Loading configuration from '%s'." % self.args.config) if self.args.passages and self.args.write: os.makedirs(self.args.outdir, exist_ok=True) if self.args.models: if not self.args.log: self.args.log = self.args.models[0] + ".log" if self.args.dev and not self.args.devscores: self.args.devscores = self.args.models[0] + ".dev.csv" if self.args.passages and not self.args.testscores: self.args.testscores = self.args.models[0] + ".test.csv" elif not self.args.log: self.args.log = "parse.log" self.sub_configs = [] # Copies to be stored in Models so that they do not interfere with each other self._logger = self.format = self.hyperparams = self.iteration_hyperparams = None self._vocab = {} self.original_values = {} self.random = np.random self.update()
def __init__(self, *args): self.arg_parser = ap = ArgParser( description="Transition-based parser for UCCA.", formatter_class=ArgumentDefaultsHelpFormatter) add_boolean_option(ap, "use-bert", default=False, description="whether to use bert embeddings") ap.add_argument("--bert-model", choices=[ "bert-base-uncased", "bert-large-uncased", "bert-base-cased", "bert-large-cased", "bert-base-multilingual-cased" ], default="bert-base-multilingual-cased") ap.add_argument("--bert-layers", type=int, nargs='+', default=[-1, -2, -3, -4]) ap.add_argument("--bert-layers-pooling", choices=["weighted", "sum", "concat"], default="weighted") ap.add_argument("--bert-token-align-by", choices=["first", "sum", "mean"], default="sum") ap.add_argument("--bert-multilingual", choices=[0], type=int) add_boolean_option( ap, "bert-use-default-word-embeddings", default=False, description="whether to use default word embeddings") ap.add_argument("--bert-dropout", type=float, default=0, choices=np.linspace(0, 0.9, num=10)) ap.add_argument("passages", nargs="*", help="passage files/directories to test on/parse") ap.add_argument("--version", action="version", version="") ap.add_argument("-C", "--config", is_config_file=True, help="configuration file to get arguments from") ap.add_argument( "-m", "--models", nargs="+", help="model file basename(s) to load/save, ensemble if >1 " "(default: <format>_<model_type>") ap.add_argument("-c", "--classifier", choices=CLASSIFIERS, default=BIRNN, help="model type") ap.add_argument("-B", "--beam", type=int, choices=(1, ), default=1, help="beam size for beam search") add_boolean_option(ap, "evaluate", "evaluation of parsed passages", short="e") add_verbose_arg(ap, help="detailed parse output") constructions.add_argument(ap) add_boolean_option(ap, "sentences", "split to sentences") add_boolean_option(ap, "paragraphs", "split to paragraphs") ap.add_argument( "--timeout", type=float, help="max number of seconds to wait for a single passage") group = ap.add_argument_group(title="Training parameters") group.add_argument("-t", "--train", nargs="+", default=(), help="passage files/directories to train on") group.add_argument("-d", "--dev", nargs="+", default=(), help="passage files/directories to tune on") group.add_argument( "-I", "--iterations", nargs="+", type=Iterations, default=(Iterations(50), Iterations("100 --optimizer=" + EXTRA_TRAINER)), help= "number of training iterations along with optional hyperparameters per part" ) group.add_argument("--folds", type=int, choices=(3, 5, 10), help="#folds for cross validation") group.add_argument("--seed", type=int, default=1, help="random number generator seed") add_boolean_option( group, "early-update", "early update procedure (finish example on first error)") group.add_argument( "--save-every", type=int, help="every this many passages, evaluate on dev and save model") add_boolean_option( group, "eval-test", "evaluate on test whenever evaluating on dev, but keep results hidden" ) add_boolean_option( group, "ignore-case", "pre-convert all input files to lower-case in training and test") group = ap.add_argument_group(title="Output files") group.add_argument("-o", "--outdir", default=".", help="output directory for parsed files") group.add_argument("-p", "--prefix", default="", help="output filename prefix") add_boolean_option(group, "write", "writing parsed output to files", default=True, short_no="W") group.add_argument( "-j", "--join", help= "if output format is textual, write all to one file with this basename" ) group.add_argument( "-l", "--log", help="output log file (default: model filename + .log)") group.add_argument( "--devscores", help= "output CSV file for dev scores (default: model filename + .dev.csv)" ) group.add_argument( "--testscores", help= "output CSV file for test scores (default: model filename + .test.csv)" ) group.add_argument("--action-stats", help="output CSV file for action statistics") add_boolean_option( group, "normalize", "apply normalizations to output in case format is UCCA", default=False) ap.add_argument( "-f", "--formats", nargs="+", choices=FILE_FORMATS, default=(), help= "input formats for creating all parameters before training starts " "(otherwise created dynamically based on filename suffix), " "and output formats for written files (each will be written; default: UCCA XML)" ) ap.add_argument("-u", "--unlabeled", nargs="*", choices=FORMATS, help="to ignore labels in") ap.add_argument( "--lang", default="en", help="two-letter language code to use as the default language") add_boolean_option( ap, "multilingual", "separate model parameters per language (passage.attrib['lang'])") group = ap.add_argument_group(title="Sanity checks") add_boolean_option(group, "check-loops", "check for parser state loop") add_boolean_option(group, "verify", "check for oracle reproducing original passage") add_boolean_option(group, "validate-oracle", "require oracle output to respect constraints", default=True) add_param_arguments(ap) group = ap.add_argument_group(title="DyNet parameters") group.add_argument("--dynet-mem", help="memory for dynet") group.add_argument("--dynet-weight-decay", type=float, default=1e-5, help="weight decay for parameters") add_boolean_option(group, "dynet-apply-weight-decay-on-load", "workaround for clab/dynet#1206", default=False) add_boolean_option(group, "dynet-gpu", "GPU for training") group.add_argument("--dynet-gpus", type=int, default=1, help="how many GPUs you want to use") add_boolean_option(group, "dynet-autobatch", "auto-batching of training examples") add_boolean_option(group, "dynet-check-validity", "check validity of expressions immediately") DYNET_ARG_NAMES.update(get_group_arg_names(group)) ap.add_argument( "-H", "--hyperparams", type=HyperparamsInitializer.action, nargs="*", help= "shared hyperparameters or hyperparameters for specific formats, " 'e.g., "shared --lstm-layer-dim=100 --lstm-layers=1" "ucca --word-dim=300"', default=[HyperparamsInitializer.action("shared --lstm-layers 2")]) ap.add_argument("--copy-shared", nargs="*", choices=FORMATS, help="formats whose parameters shall be " "copied from loaded shared parameters") self.args = FallbackNamespace(ap.parse_args(args if args else None)) if self.args.config: print("Loading configuration from '%s'." % self.args.config) if self.args.passages and self.args.write: os.makedirs(self.args.outdir, exist_ok=True) if self.args.models: if not self.args.log: self.args.log = self.args.models[0] + ".log" if self.args.dev and not self.args.devscores: self.args.devscores = self.args.models[0] + ".dev.csv" if self.args.passages and not self.args.testscores: self.args.testscores = self.args.models[0] + ".test.csv" elif not self.args.log: self.args.log = "parse.log" self.sub_configs = [ ] # Copies to be stored in Models so that they do not interfere with each other self._logger = self.format = self.hyperparams = self.iteration_hyperparams = None self._vocab = {} self.original_values = {} self.random = np.random self.update()
def add_param_arguments( ap=None, arg_default=None ): # arguments with possible format-specific parameter values def add_argument(a, *args, **kwargs): return a.add_argument(*args, **kwargs) def add(a, *args, default=None, func=add_argument, **kwargs): arg = func(a, *args, default=default if arg_default is None else arg_default, **kwargs) try: RESTORED_ARGS.add(arg.dest) except AttributeError: RESTORED_ARGS.update(get_group_arg_names(arg)) def add_boolean(a, *args, **kwargs): add(a, *args, func=add_boolean_option, **kwargs) if not ap: ap = ArgParser() group = ap.add_argument_group(title="Node labels") add(group, "--max-node-labels", type=int, default=0, help="max number of node labels to allow") add(group, "--max-node-categories", type=int, default=0, help="max node categories to allow") add(group, "--min-node-label-count", type=int, default=2, help="min number of occurrences for a label") add_boolean(group, "use-gold-node-labels", "gold node labels when parsing") add_boolean(group, "wikification", "use Spotlight to wikify any named node") add_boolean(group, "node-labels", "prediction of node labels, if supported by format", default=True) group = ap.add_argument_group(title="Structural constraints") add_boolean(group, "linkage", "linkage nodes and edges") add_boolean(group, "implicit", "implicit nodes and edges") add_boolean(group, "remote", "remote edges", default=True) add_boolean(group, "constraints", "scheme-specific rules", default=True) add_boolean(group, "require-connected", "constraint that output graph must be connected") add(group, "--orphan-label", default="orphan", help="edge label to use for nodes without parents") add(group, "--max-action-ratio", type=float, default=100, help="max action/terminal ratio") add(group, "--max-node-ratio", type=float, default=10, help="max node/terminal ratio") add(group, "--max-height", type=int, default=20, help="max graph height") group = ap.add_mutually_exclusive_group() add(group, "--swap", choices=(REGULAR, COMPOUND), default=REGULAR, help="swap transitions") add(group, "--no-swap", action="store_false", dest="swap", help="exclude swap transitions") add(ap, "--max-swap", type=int, default=15, help="if compound swap enabled, maximum swap size") group = ap.add_argument_group( title="General classifier training parameters") add(group, "--learning-rate", type=float, help="rate for model weight updates (default: by trainer/1)") add(group, "--learning-rate-decay", type=float, default=0, help="learning rate decay per iteration") add(group, "--swap-importance", type=float, default=1, help="learning rate factor for Swap") add(group, "--max-training-per-format", type=int, help="max number of training passages per format per iteration") add_boolean(group, "missing-node-features", "allow node features to be missing if not available", default=True) add(group, "--omit-features", help="string of feature properties to omit, out of " + FEATURE_PROPERTIES) add_boolean( group, "curriculum", "sort training passages by action prediction accuracy in previous epoch" ) group = ap.add_argument_group(title="Perceptron parameters") add(group, "--min-update", type=int, default=5, help="minimum #updates for using a feature") SPARSE_ARG_NAMES.update(get_group_arg_names(group)) group = ap.add_argument_group(title="Neural network parameters") add(group, "--word-dim-external", type=int, default=300, help="dimension for external word embeddings") add(group, "--word-vectors", help="file to load external word embeddings from (default: GloVe)") add(group, "--vocab", help= "file mapping integer ID to word form (to avoid loading spaCy), or '-' to use word form" ) add_boolean(group, "update-word-vectors", "external word vectors in training parameters", default=True) add(group, "--word-dim", type=int, default=0, help="dimension for learned word embeddings") add(group, "--lemma-dim", type=int, default=200, help="dimension for lemma embeddings") add(group, "--tag-dim", type=int, default=20, help="dimension for fine POS tag embeddings") add(group, "--pos-dim", type=int, default=20, help="dimension for coarse/universal POS tag embeddings") add(group, "--dep-dim", type=int, default=10, help="dimension for dependency relation embeddings") add(group, "--edge-label-dim", type=int, default=20, help="dimension for edge label embeddings") add(group, "--node-label-dim", type=int, default=0, help="dimension for node label embeddings") add(group, "--node-category-dim", type=int, default=0, help="dimension for node category embeddings") add(group, "--punct-dim", type=int, default=1, help="dimension for separator punctuation embeddings") add(group, "--action-dim", type=int, default=3, help="dimension for input action type embeddings") add(group, "--ner-dim", type=int, default=3, help="dimension for input entity type embeddings") add(group, "--shape-dim", type=int, default=3, help="dimension for word shape embeddings") add(group, "--prefix-dim", type=int, default=2, help="dimension for word prefix embeddings") add(group, "--suffix-dim", type=int, default=3, help="dimension for word suffix embeddings") add(group, "--output-dim", type=int, default=50, help="dimension for output action embeddings") add(group, "--layer-dim", type=int, default=50, help="dimension for hidden layers") add(group, "--layers", type=int, default=2, help="number of hidden layers") add(group, "--lstm-layer-dim", type=int, default=500, help="dimension for LSTM hidden layers") add(group, "--lstm-layers", type=int, default=0, help="number of LSTM hidden layers") add(group, "--embedding-layer-dim", type=int, default=500, help="dimension for layers before LSTM") add(group, "--embedding-layers", type=int, default=1, help="number of layers before LSTM") add(group, "--activation", choices=ACTIVATIONS, default=DEFAULT_ACTIVATION, help="activation function") add(group, "--init", choices=INITIALIZERS, default=DEFAULT_INITIALIZER, help="weight initialization") add(group, "--minibatch-size", type=int, default=200, help="mini-batch size for optimization") add(group, "--optimizer", choices=TRAINERS, default=DEFAULT_TRAINER, help="algorithm for optimization") add(group, "--loss", choices=LOSSES, default=DEFAULT_LOSS, help="loss function for training") add(group, "--max-words-external", type=int, default=250000, help="max external word vectors to use") add(group, "--max-words", type=int, default=10000, help="max number of words to keep embeddings for") add(group, "--max-lemmas", type=int, default=3000, help="max number of lemmas to keep embeddings for") add(group, "--max-tags", type=int, default=100, help="max number of fine POS tags to keep embeddings for") add(group, "--max-pos", type=int, default=100, help="max number of coarse POS tags to keep embeddings for") add(group, "--max-deps", type=int, default=100, help="max number of dep labels to keep embeddings for") add(group, "--max-edge-labels", type=int, default=15, help="max number of edge labels for embeddings") add(group, "--max-puncts", type=int, default=5, help="max number of punctuations for embeddings") add(group, "--max-action-types", type=int, default=10, help="max number of action types for embeddings") add(group, "--max-action-labels", type=int, default=100, help="max number of action labels to allow") add(group, "--max-ner-types", type=int, default=18, help="max number of entity types to allow") add(group, "--max-shapes", type=int, default=30, help="max number of word shapes to allow") add(group, "--max-prefixes", type=int, default=30, help="max number of 1-character word prefixes to allow") add(group, "--max-suffixes", type=int, default=500, help="max number of 3-character word suffixes to allow") add(group, "--word-dropout", type=float, default=0.2, help="word dropout parameter") add(group, "--word-dropout-external", type=float, default=0, help="word dropout for word vectors") add(group, "--lemma-dropout", type=float, default=0.2, help="lemma dropout parameter") add(group, "--tag-dropout", type=float, default=0.2, help="fine POS tag dropout parameter") add(group, "--pos-dropout", type=float, default=0.2, help="coarse POS tag dropout parameter") add(group, "--dep-dropout", type=float, default=0.5, help="dependency label dropout parameter") add(group, "--node-label-dropout", type=float, default=0.2, help="node label dropout parameter") add(group, "--node-dropout", type=float, default=0.1, help="probability to drop features for a whole node") add(group, "--dropout", type=float, default=0.4, help="dropout parameter between layers") add(group, "--max-length", type=int, default=120, help="maximum length of input sentence") add(group, "--rnn", choices=["None"] + list(RNNS), default=DEFAULT_RNN, help="type of recurrent neural network") add(group, "--gated", type=int, nargs="?", default=2, help="gated input to BiRNN and MLP") NN_ARG_NAMES.update(get_group_arg_names(group)) return ap