code: def numberize_rows(self, rows):
      source_column = getattr(
          self.tensorizers["src_seq_tokens"], "text_column", None
      )
      if not source_column:
          source_column = self.tensorizers["src_seq_tokens"].columns[0]
      target_column = getattr(
          self.tensorizers["trg_seq_tokens"], "text_column", None
      )
      if not target_column:
          target_column = self.tensorizers["trg_seq_tokens"].columns[0]
      for idx, row in enumerate(rows):
          try:
              # Create a version of `row` where the source/target columns are
              # potentially decoupled. Everything else is copied over.
              res = row.copy()
              res[source_column] = self.decoupled_func_source(
                  row[source_column]
              )
              res[target_column] = self.decoupled_func_target(
                  row[target_column],
                  filter_ood_slots=self.filter_target_ood_slots,
              )
  
              numberized = {
                  name: tensorizer.numberize(res)
                  for name, tensorizer in self.tensorizers.items()
              }
  
              yield RowData(res, numberized)
          except ValueError:
              print(f"Skipping row #{idx}: {row}")
              continue
  
file_path: pytext/pytext/data/decoupled_data.py
imports: from typing import Dict, List, Optional, Type
  from .None import Batcher, Data
  from .data import RowData
  from .sources import DataSource
  from .tensorizers import Tensorizer
  from .utils import Vocabulary
label_desc: Use image node_id 4 for calling the DecoupledSeq2SeqData obj's underlying member method code with example usage: obj.numberize_rows(rows) without return types