#python
Вопрос:
def tokenized_dataset(self, dataset):
tokenizer = BertTokenizerFast.from_pretrained("bert-base-uncased")
print("n" "="*10, "Start Tokenizing", "="*10)
start = time.process_time()
train_articles = [self.encode(document, tokenizer) for document in dataset["train"]["article"]]
test_articles = [self.encode(document, tokenizer) for document in dataset["test"]["article"]]
val_articles = [self.encode(document, tokenizer) for document in dataset["val"]["article"]]
train_abstracts = [self.encode(document, tokenizer) for document in dataset["train"]["abstract"]]
test_abstracts = [self.encode(document, tokenizer) for document in dataset["test"]["abstract"]]
val_abstracts = [self.encode(document, tokenizer) for document in dataset["val"]["abstract"]]
print("Time:", time.process_time() - start)
print("=" * 10, "End Tokenizing", "="*10 "n")
return {"train": (dataset["train"]["id"], train_articles, train_abstracts),
"test": (dataset["train"]["id"], test_articles, test_abstracts),
"val": (dataset["val"]["id"], val_articles, val_abstracts)}
У меня есть этот код, и я только что понял, что повторяю код 6 раз или эквивалентно, [self.encode(document, tokenizer) for document in dataset...]
т. Е. Есть ли способ изменить блок из 6 эквивалентных строк на что-то более естественное и менее повторяющееся?
Комментарии:
1. просто создайте функцию, для этого они и предназначены, не так ли?
2.
def stuff(x,y): return [self.encode(document, tokenizer) for document in dataset[x][y]]
Ответ №1:
Вы можете легко сделать это с помощью функций python.
def get_values(x,y):
return [self.encode(document, tokenizer) for document in dataset[x][y]]