class_docstr: Special purpose Data object which assumes a single text tensorizer.  Packs
  tokens into a square batch with no padding.  Used for LM training. The object
  also takes in an optional language argument which is used for cross-lingual
  LM training.
class_docstr_tok: ["Special","purpose","Data","object","which","assumes","a","single","text","tensorizer",".","Packs","tokens","into","a","square","batch","with","no","padding",".","Used","for","LM","training",".","The","object","also","takes","in","an","optional","language","argument","which","is","used","for","cross-lingual","LM","training","."]
docstr: The output of numberization has different number of elements depending on
  the tensorizer used. For example: positions tensor is only output by the
  XLMTensorizer. This function unpacks the elements according to the
  specific tensorizer used.
  Additionally, since we are packing tokens into fixed size
  blocks, we don't need to use the positions vector output by the call to
  numberize. We will simply create this in `_format_output_row`.
docstr_tok: ["The","output","of","numberization","has","different","number","of","elements","depending","on","the","tensorizer","used",".","For","example",":","positions","tensor","is","only","output","by","the","XLMTensorizer",".","This","function","unpacks","the","elements","according","to","the","specific","tensorizer","used",".","Additionally",",","since","we","are","packing","tokens","into","fixed","size","blocks",",","we","do","n't","need","to","use","the","positions","vector","output","by","the","call","to","numberize",".","We","will","simply","create","this","in","`","_format_output_row","`","."]
code: def _parse_row(self, row):
      """
      The output of numberization has different number of elements depending on
      the tensorizer used. For example: positions tensor is only output by the
      XLMTensorizer. This function unpacks the elements according to the
      specific tensorizer used.
      Additionally, since we are packing tokens into fixed size
      blocks, we don't need to use the positions vector output by the call to
      numberize. We will simply create this in `_format_output_row`.
      """
      numberized_row = self.tensorizer.numberize(row)
      if isinstance(self.tensorizer, BERTTensorizerBase):
          tokens, segment_labels, seq_len, _ = numberized_row
      elif isinstance(self.tensorizer, TokenTensorizer):
          tokens, seq_len, _ = numberized_row
          segment_labels = []
      else:
          raise NotImplementedError(
              "PackedLMData only supports XLMTensorizer, BERTTensorizer and "
              "TokenTensorizer."
          )
      return tokens, segment_labels, seq_len
  
file_path: pytext/pytext/data/packed_lm_data.py
imports: from typing import Dict, List, Optional, Type
  from pytext.common.constants import Stage
  from pytext.data import Batcher, Data
  from pytext.data.bert_tensorizer import BERTTensorizerBase
  from pytext.data.data import RowData
  from pytext.data.sources import DataSource
  from pytext.data.tensorizers import Tensorizer, TokenTensorizer
label_desc: Use image node_id 3 for calling the PackedLMData obj's underlying member method code with example usage: obj._parse_row(row) and returns: tokens,  segment_labels,  seq_len