def split_by_relative(self, all_labeled_data: List) -> Tuple[List, List, List]:
        """
        All annotated data from DocRED is splitted into train, valid and test sets in following proportions:
          len(train_data) = train_valid_test_proportion * len(valid_data) = train_valid_test_proportion * len(test_data)
        """
        random.shuffle(all_labeled_data)
        one_prop = int(len(all_labeled_data)/int(self.train_valid_test_proportion))

        valid_data = all_labeled_data[:one_prop]
        test_data = all_labeled_data[one_prop + 1: 2 * one_prop]
        train_data = all_labeled_data[2 * one_prop + 1:]
        return train_data, valid_data, test_data

        All annotated data from DocRED is splitted into train, valid and test sets in following proportions:
          len(train_data) = train_valid_test_proportion * len(valid_data) = train_valid_test_proportion * len(test_data)
        
deeppavlov/dataset_readers/docred_reader.py