У сценария python 3.6, работающего на Ubuntu 18.04, для обработки одного текстового файла с помощью резака и преобразователя Барта, но возникает проблема 'NameError' при попытке прочитать и обработать несколько текстовых файлов из папки. Новое в python.
Обратите внимание, что если следующий фрагмент кода используется без импорта glob и os, сценарий отлично работает на одном файле:
with open('output/input.txt') as corpus:
lines = corpus.readlines()
lines = [line.replace("\n", "") for line in lines]
NameError, возникающая из-за ошибки "generate_xsum_READ_FILES.py" ниже. Не уверен, почему это происходит, поскольку он уже определен в def main (): и работает с одним текстовым файлом.
Traceback (most recent call last):
File "generate_xsum_READ_FILES.py", line 29, in <module>
preds = bart.sample(lines, beam=4, lenpen=2.0, no_repeat_ngram_size=2, temperature=0.9)
NameError: name 'bart' is not defined
generate_xsum_READ_FILES.py
Буду признателен за любую помощь, поэтому я могу избежать эта ошибка в будущих скриптах. Приветствия.
import glob
import os
import torch
from fairseq.models.bart import BARTModel
def main():
bart = BARTModel.from_pretrained('bart_large_xsum', checkpoint_file='model.pt')
bart.cuda()
bart.half()
bart.eval()
file_list = glob.glob(os.path.join(os.getcwd(), "output", "*.txt"))
corpus = []
for file_path in file_list:
with open(file_path) as corpus:
lines = corpus.readlines()
lines = [line.replace("\n", "") for line in lines]
print("[Before]")
for i, line in enumerate(lines):
print(f"({i+1}): {line}")
with torch.no_grad():
preds = bart.sample(lines, beam=4, lenpen=2.0, no_repeat_ngram_size=2, temperature=0.9)
print("\n[After]")
for i, pred in enumerate(preds):
print(f"({i+1}): {pred}")
if __name__ == "__main__":
main()