[英]How to apply sentiment analysis model on text column all at once in a dataframe?
我正在使用Germansentiment来测试数据框(df)中德语推文(文本)的情绪。
我正在使用以下代码来执行此操作:
from germansentiment import SentimentModel
model = SentimentModel()
df['sentiment'] = ''
for i in range(len(df)):
df['sentiment'][i] = model.predict_sentiment([df['text'].iloc[i]])
print(df['sentiment'][i])
由于我正在遍历所有超过 130,000+ 的行,并且完成任务需要很长时间。
有没有更好的方法可以花费更少的时间?
您可以检查您的所有推文是否都是唯一的。 如果不是,我建议仅对唯一的进行编码并将其用作查找表来填充您的数据框。
否则,您也可以使用lambda
而不是for loop
。 根据用例,它可以更快。
如果您不需要打印,我还建议删除该行。 如果您想跟踪循环的进度,有更好的方法可以做到这一点。
准确地说,我可能会做类似的事情:
from tqdm.auto import tqdm
tqdm.pandas()
df['sentiment'] = df['text'].progress_apply(lambda text: model.predict_sentiment(text))
这应该得到与你的循环相同的输出。 进度将显示为条形,同时计算完成所需的时间。 如果没有打印,您应该已经更快了,而 lambda 也可以加快您的速度。
在您链接的文档中寻找半秒钟......这是更好的解决方案:
df['text'] = model.predict_sentiment(df['text'].tolist())
您只需将列表传递给model.predict_sentiment
一次即可获取预测列表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.