class_docstr: The implement of DialogReader.
docstr: Reads a tab separated value file.
docstr_tok: ["Reads","a","tab","separated","value","file","."]
code: def _read_tsv(
      self, fp, phase, is_infer, delimiter="\t", quotechar=None
  ):
      """Reads a tab separated value file."""
      csv.field_size_limit(2**20)
      reader = csv.reader(fp, delimiter=delimiter, quotechar=quotechar)
      headers = next(reader)
      headers.append("data_id")
      Example = namedtuple("Example", headers)
  
      for i, line in enumerate(reader):
          example = Example(*line, data_id=i)
          if is_infer or phase.endswith("test"):
              self.features[phase][i] = example
          record = self._convert_example_to_record(example, is_infer)
          yield record
  
imports: import csv
  from collections import namedtuple
  from contextlib import contextmanager
  import gzip
  import numpy
  from ..utils import pad_batch_data
  from ..utils.args import str2bool
  from ..utils.masking import mask
  from ..utils import tokenization
label_desc: Use image node_id 5 for calling the DialogReader obj's underlying member method code with example usage: obj._read_tsv(fp, phase, is_infer, delimiter, quotechar) without return types