【发布时间】:2021-09-17 01:22:50
【问题描述】:
我已经训练了一个情感分析模型,然后我在 Python 中创建了一个函数来根据这个模型预测文本。
以下是从文本中获取情绪(消极、积极、中性)的函数:
def get_sentiment(text):
encoded_review = tokenizer.encode_plus(
text,
max_length=MAX_LEN,
add_special_tokens=True,
return_token_type_ids=False,
pad_to_max_length=True,
return_attention_mask=True,
return_tensors='pt',
)
input_ids = encoded_review['input_ids'].to(device)
attention_mask = encoded_review['attention_mask'].to(device)
output = model(input_ids, attention_mask)
_, prediction = torch.max(output, dim=1)
return class_names[prediction]
当我用单个文本测试这个 get_sentiment 函数时,它给出了正确的情绪:
get_sentiment('Miksi kukaan ei soittanut minulle??? Olen odottanut kauan!')
否定
现在我有一个巨大的 csv,其中包含我想用这个 get_sentiment 函数预测的文本。我想在 csv 中输入文本本身旁边的情绪。我使用了以下代码:
from csv import writer
from csv import reader
with open('input.csv', 'r') as read_obj,\
open('output.csv', 'w', newline='') as write_obj:
csv_reader = reader(read_obj)
csv_writer = writer(write_obj)
for row in csv_reader:
row.append(get_sentiment(row))
csv_writer.writerow(row)
它在 output.csv 中附加了文本和情绪,但现在的情绪不正确:
Miksi kukaan ei soittanut minulle??? Olen odottanut kauan!,中性
我哪里做错了?请帮忙。
先谢谢你。
--编辑--
下面回答了解决方案。我都试过了,它们都有效!非常感谢:)
【问题讨论】:
-
感谢@FloLie 和@Daweo!这两种解决方案都对我有用!
标签: python csv export-to-csv sentiment-analysis