以下是encode
的实现
from transformers import BertTokenizer
def encode(self, document):
tokenizer = BertTokenizer.from_pretrained("bert-base-uncased")
return tokenizer(document,
max_length=50,
return_tensors='pt',
padding=True,
truncation=True)
当我运行时
start = time.process_time()
train_articles = [self.encode(document) for document in dataset["train"]["article"][:100]]
print("Time:", time.process_time() - start)
输出为CCD_ 2。请注意,dataset["train"]["article"]
中的每个元素都是一个约47个句子的列表,每个句子平均有15个单词。仅处理100份文件的过程相当漫长。我对编程很陌生。有没有办法加快这个过程?我必须在100000个文档上运行self.encode
,所以我必须找到加快进程的方法。
提高性能的一种方法是使用多线程模式。在您的情况下,如果您要在一个过程中多次调用此函数,最好采用Python线程:
import threading
thd1 = threading.Thread("thread-1").spawn(encode)
for i in range(10):
thd1.start
现在你正在加速十倍。