Есть много способов достичь этого.Я предпочитаю использовать Pandas - мощную библиотеку для работы с CSV-файлами.Вы можете создать словарь:
predicted_products = {'FILENAME': [], 'PRODUCT': []}
и итеративно добавлять имена файлов и продукты в соответствующие списки.
После того, как это будет сделано, преобразуйте прогнозируемые продукты в DataFrame и вызовите функцию to_csv:
import Pandas as pd
predicted_products_df = pd.DataFrame.from_dict(predicted_products)
predicted_products_df.to_csv('your_path/file_name.csv')
Я предпочитаю этот способ, так как вы можете легче редактировать данные перед сохранением файла.
В существующий код, я предполагаю, что print(filenamez, ent.label_, ent.text)
печатает вывод.Если так, то:
import Pandas as pd
output_dir = "C:\\Users\\Lenovo\\.spyder-py3\\NER_training"
DIR = 'C:\\Users\\Lenovo\\.spyder-py3\\Testing\\'
print("Loading from", output_dir)
nlp2 = spacy.load(output_dir)
predicted_products = {'FILENAME': [], 'PRODUCT': []}
with open('eng_productnames.csv', newline='') as myFile:
reader = csv.reader(myFile)
for rowz in reader:
try:
filenamez = rowz[1]
file = open(DIR+filenamez, "r", encoding ='utf-8')
filecontentszz = file.read()
for s in filecontentszz:
filecontentszz = re.sub(r'\s+', ' ', filecontentszz)
#filecontents = filecontents.encode().decode('unicode-escape')
filecontentszz = ''.join([line.lower() for line in filecontentszz])
doc2 = nlp2(filecontentszz)
for ent in doc2.ents:
print(filenamez, ent.label_, ent.text)
predicted_products['FILENAME'].append(filenamez + ' ' + ent.label_)
predicted_products['PRODUCT'].append(ent.text)
break
except Exception as e:
predicted_products_df = pd.DataFrame.from_dict(predicted_products)
predicted_products_df.to_csv('your_path/file_name.csv')