class_docstr: Extracts out the task_id from the first index of each example for each task.
  Then splits the input and performs tokenization
  Params:
  
  vocab_file(str): vocabulary file for tokenization
  do_lower_case(bool): if True, tokenization is lower-cased. Default: True
  preprocessor(str): name of DeepPavlov class that is used for tokenization. 
  Default: TorchTransformersPreprocessor
  preprocessors(List[str]): list of names of DeepPavlov classes that are used for tokenization.
  Overrides preprocessor . The length of list must be equal to the number of tasks
  max_seq_length(int): Maximum sequence length for tokenizer. Default: 512
  strict(bool): if True, we always try to split data assuming predefined modes as in multitask_example.json  
  If False, we go without splitting if we are not sure how to split the data. Default: False
  print_first_example(bool): if True, we print the first input example after initialization. Default: False 
code: def split(self, features):
      if all([isinstance(k, str) for k in features]) or all(
          [k is None for k in features]
      ):
          # single sentence classification
          log.debug("Assuming single sentence classification")
          texts_a, texts_b = features, None
      elif all(
          [isinstance(k, tuple) and len(k) == 2 for k in features]
      ):
          log.debug(
              "Assuming sentence pair classification or classification for multichoice"
          )
          texts_a, texts_b = [], []
          for feature in features:
              text_a, text_b = feature
              texts_a.append(text_a)
              texts_b.append(text_b)
      elif all([isinstance(k, list) for k in features]):
          log.debug("Assuming ner classification")
          texts_a, texts_b = list(features), None
      else:
          if self.strict:
              raise Exception(f"Unsupported task data {features}")
          else:
              log.warning("Data not split.Going without splitting")
              texts_a, texts_b = features, None
      return texts_a, texts_b
  
file_path: DeepPavlov/deeppavlov/models/preprocessors/multitask_preprocessor.py
imports: from typing import Any, Callable, Dict, List, Optional, Tuple, Union, Iterable
  from logging import getLogger
  from deeppavlov.core.common.registry import register
  from deeppavlov.core.models.component import Component
  from deeppavlov.models.preprocessors.torch_transformers_preprocessor import *
label_desc: Use image node_id 2 for calling the MultiTaskPipelinePreprocessor obj's underlying member method code with example usage: obj.split(features) and returns: texts_a,  texts_b