class_docstr: This ``SpanConstituencyParser`` simply encodes a sequence of text
  with a stacked ``Seq2SeqEncoder``, extracts span representations using a
  ``SpanExtractor``, and then predicts a label for each span in the sequence.
  These labels are non-terminal nodes in a constituency parse tree, which we then
  greedily reconstruct.
  
  Parameters
  ----------
  vocab : ``Vocabulary``, required
      A Vocabulary, required in order to compute sizes for input/output projections.
  text_field_embedder : ``TextFieldEmbedder``, required
      Used to embed the ``tokens`` ``TextField`` we get as input to the model.
  span_extractor : ``SpanExtractor``, required.
      The method used to extract the spans from the encoded sequence.
  encoder : ``Seq2SeqEncoder``, required.
      The encoder that we will use in between embedding tokens and
      generating span representations.
  feedforward : ``FeedForward``, required.
      The FeedForward layer that we will use in between the encoder and the linear
      projection to a distribution over span labels.
  pos_tag_embedding : ``Embedding``, optional.
      Used to embed the ``pos_tags`` ``SequenceLabelField`` we get as input to the model.
  initializer : ``InitializerApplicator``, optional (default=``InitializerApplicator()``)
      Used to initialize the model parameters.
  regularizer : ``RegularizerApplicator``, optional (default=``None``)
      If provided, will be used to calculate the regularization penalty during training.
  evalb_directory_path : ``str``, optional (default=``DEFAULT_EVALB_DIR``)
      The path to the directory containing the EVALB executable used to score
      bracketed parses. By default, will use the EVALB included with allennlp,
      which is located at allennlp/tools/EVALB . If ``None``, EVALB scoring
      is not used.
class_docstr_tok: ["This","``","SpanConstituencyParser","``","simply","encodes","a","sequence","of","text","with","a","stacked","``","Seq2SeqEncoder","``",",","extracts","span","representations","using","a","``","SpanExtractor","``",",","and","then","predicts","a","label","for","each","span","in","the","sequence",".","These","labels","are","non-terminal","nodes","in","a","constituency","parse","tree",",","which","we","then","greedily","reconstruct",".","Parameters","--","--","--","--","--","vocab",":","``","Vocabulary","``",",","required","A","Vocabulary",",","required","in","order","to","compute","sizes","for","input\/output","projections",".","text_field_embedder",":","``","TextFieldEmbedder","``",",","required","Used","to","embed","the","``","tokens","``","``","TextField","``","we","get","as","input","to","the","model",".","span_extractor",":","``","SpanExtractor","``",",","required",".","The","method","used","to","extract","the","spans","from","the","encoded","sequence",".","encoder",":","``","Seq2SeqEncoder","``",",","required",".","The","encoder","that","we","will","use","in","between","embedding","tokens","and","generating","span","representations",".","feedforward",":","``","FeedForward","``",",","required",".","The","FeedForward","layer","that","we","will","use","in","between","the","encoder","and","the","linear","projection","to","a","distribution","over","span","labels",".","pos_tag_embedding",":","``","Embedding","``",",","optional",".","Used","to","embed","the","``","pos_tags","``","``","SequenceLabelField","``","we","get","as","input","to","the","model",".","initializer",":","``","InitializerApplicator","``",",","optional","(","default=","``","InitializerApplicator","(",")","``",")","Used","to","initialize","the","model","parameters",".","regularizer",":","``","RegularizerApplicator","``",",","optional","(","default=","``","None","``",")","If","provided",",","will","be","used","to","calculate","the","regularization","penalty","during","training",".","evalb_directory_path",":","``","str","``",",","optional","(","default=","``","DEFAULT_EVALB_DIR","``",")","The","path","to","the","directory","containing","the","EVALB","executable","used","to","score","bracketed","parses",".","By","default",",","will","use","the","EVALB","included","with","allennlp",",","which","is","located","at","allennlp\/tools\/EVALB",".","If","``","None","``",",","EVALB","scoring","is","not","used","."]
docstr: Parameters
  ----------
  spans_to_labels : ``Dict[Tuple[int, int], str]``, required.
      A mapping from spans to constituency labels.
  sentence : ``List[str]``, required.
      A list of tokens forming the sentence to be parsed.
  pos_tags : ``List[str]``, optional (default = None)
      A list of the pos tags for the words in the sentence, if they
      were either predicted or taken as input to the model.
  
  Returns
  -------
  An ``nltk.Tree`` constructed from the labelled spans.
docstr_tok: ["Parameters","--","--","--","--","--","spans_to_labels",":","``","Dict","[","Tuple","[","int",",","int","]",",","str","]","``",",","required",".","A","mapping","from","spans","to","constituency","labels",".","sentence",":","``","List","[","str","]","``",",","required",".","A","list","of","tokens","forming","the","sentence","to","be","parsed",".","pos_tags",":","``","List","[","str","]","``",",","optional","(","default","=","None",")","A","list","of","the","pos","tags","for","the","words","in","the","sentence",",","if","they","were","either","predicted","or","taken","as","input","to","the","model",".","Returns","--","--","--","-","An","``","nltk.Tree","``","constructed","from","the","labelled","spans","."]
code: def construct_tree_from_spans(
      spans_to_labels, sentence, pos_tags=None
  ):
      """
      Parameters
      ----------
      spans_to_labels : ``Dict[Tuple[int, int], str]``, required.
          A mapping from spans to constituency labels.
      sentence : ``List[str]``, required.
          A list of tokens forming the sentence to be parsed.
      pos_tags : ``List[str]``, optional (default = None)
          A list of the pos tags for the words in the sentence, if they
          were either predicted or taken as input to the model.
  
      Returns
      -------
      An ``nltk.Tree`` constructed from the labelled spans.
      """
  
      def assemble_subtree(start, end):
          if (start, end) in spans_to_labels:
              # Some labels contain nested spans, e.g S-VP.
              # We actually want to create (S (VP ...)) nodes
              # for these labels, so we split them up here.
              labels = spans_to_labels[(start, end)].split("-")
          else:
              labels = None
  
          # This node is a leaf.
          if end - start == 1:
              word = sentence[start]
              pos_tag = (
                  pos_tags[start] if pos_tags is not None else "XX"
              )
              tree = Tree(pos_tag, [word])
              if labels is not None and pos_tags is not None:
                  # If POS tags were passed explicitly,
                  # they are added as pre-terminal nodes.
                  while labels:
                      tree = Tree(labels.pop(), [tree])
              elif labels is not None:
                  # Otherwise, we didn't want POS tags
                  # at all.
                  tree = Tree(labels.pop(), [word])
                  while labels:
                      tree = Tree(labels.pop(), [tree])
              return [tree]
  
          argmax_split = start + 1
          # Find the next largest subspan such that
          # the left hand side is a constituent.
          for split in range(end - 1, start, -1):
              if (start, split) in spans_to_labels:
                  argmax_split = split
                  break
  
          left_trees = assemble_subtree(start, argmax_split)
          right_trees = assemble_subtree(argmax_split, end)
          children = left_trees + right_trees
          if labels is not None:
              while labels:
                  children = [Tree(labels.pop(), children)]
          return children
  
      tree = assemble_subtree(0, len(sentence))
      return tree[0]
  
imports: from __future__ import absolute_import
  import torch
  from torch.nn.modules.linear import Linear
  from nltk import Tree
  from allennlp.common.checks import check_dimensions_match
  from allennlp.data import Vocabulary
  from allennlp.modules import Seq2SeqEncoder, TimeDistributed, TextFieldEmbedder, FeedForward
  from allennlp.modules.token_embedders import Embedding
  from allennlp.modules.span_extractors.span_extractor import SpanExtractor
  from allennlp.models.model import Model
  from allennlp.nn import InitializerApplicator, RegularizerApplicator
  from allennlp.nn.util import get_text_field_mask, sequence_cross_entropy_with_logits
  from allennlp.nn.util import last_dim_softmax, get_lengths_from_binary_sequence_mask
  from allennlp.training.metrics import CategoricalAccuracy
  from allennlp.training.metrics import EvalbBracketingScorer, DEFAULT_EVALB_DIR
  from allennlp.common.checks import ConfigurationError
label_desc: Use image node_id 6 for calling the SpanConstituencyParser obj's underlying member method code with example usage: obj.construct_tree_from_spans(spans_to_labels, sentence, pos_tags) and returns: tree, children, list