docs: def splits(cls, text_field, label_field, parse_field=None,
                 extra_fields={}, root='.data', train='train.jsonl',
                 validation='val.jsonl', test='test.jsonl'):
          """Create dataset objects for splits of the SNLI dataset.
  
          This is the most flexible way to use the dataset.
  
          Arguments:
              text_field: The field that will be used for premise and hypothesis
                  data.
              label_field: The field that will be used for label data.
              parse_field: The field that will be used for shift-reduce parser
                  transitions, or None to not include them.
              extra_fields: A dict[json_key: Tuple(field_name, Field)]
              root: The root directory that the dataset's zip archive will be
                  expanded into.
              train: The filename of the train data. Default: 'train.jsonl'.
              validation: The filename of the validation data, or None to not
                  load the validation set. Default: 'dev.jsonl'.
              test: The filename of the test data, or None to not load the test
                  set. Default: 'test.jsonl'.
          """
          path = cls.download(root)
  
          if parse_field is None:
              fields = {'sentence1': ('premise', text_field),
                        'sentence2': ('hypothesis', text_field),
                        'gold_label': ('label', label_field)}
          else:
              fields = {'sentence1_binary_parse': [('premise', text_field),
                                                   ('premise_transitions', parse_field)],
                        'sentence2_binary_parse': [('hypothesis', text_field),
                                                   ('hypothesis_transitions', parse_field)],
                        'gold_label': ('label', label_field)}
  
          for key in extra_fields:
              if key not in fields.keys():
                  fields[key] = extra_fields[key]
  
          return super(NLIDataset, cls).splits(
              path, root, train, validation, test,
              format='json', fields=fields,
              filter_pred=lambda ex: ex.label != '-')