code: def resplit_datasets(dataset, other_dataset, random_seed=None, split=None):
      
      # Prevent circular dependency
      from torchnlp.datasets import Dataset
  
      concat = dataset.rows + other_dataset.rows
      shuffle(concat, random_seed=random_seed)
      if split is None:
          return Dataset(concat[:len(dataset)]), Dataset(concat[len(dataset):])
      else:
          split = max(min(round(len(concat) * split), len(concat)), 0)
          return Dataset(concat[:split]), Dataset(concat[split:])
docs: Deterministic shuffle and split algorithm.
  
      Given the same two datasets and the same ``random_seed``, the split happens the same exact way
      every call.
  
      Args:
          dataset (lib.datasets.Dataset): First dataset.
          other_dataset (lib.datasets.Dataset): Another dataset.
          random_seed (int, optional): Seed to control the shuffle of both datasets.
          split (float, optional): If defined it is the percentage of rows that first dataset gets
              after split otherwise the original proportions are kept.
  
      Returns:
          :class:`lib.datasets.Dataset`, :class:`lib.datasets.Dataset`: Resplit datasets.