<p>有很多方法可以做到这一点。我更喜欢使用Pandas,这是一个处理CSV文件的强大库。
您可以创建字典:</p>
<pre><code>predicted_products = {'FILENAME': [], 'PRODUCT': []}
</code></pre>
<p>并将文件名和产品迭代地附加到相应的列表中。你知道吗</p>
<p>完成后,将预测的\u产品转换为数据帧,并调用\u csv函数:</p>
<pre><code>import Pandas as pd
predicted_products_df = pd.DataFrame.from_dict(predicted_products)
predicted_products_df.to_csv('your_path/file_name.csv')
</code></pre>
<p>我更喜欢这种方式,因为在保存文件之前可以更轻松地编辑数据。你知道吗</p>
<p>对于现有代码,我假设<code>print(filenamez, ent.label_, ent.text)</code>打印输出。如果是,那么:</p>
<pre><code>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')
</code></pre>