繁体   English   中英

如何在数据框中一次将情感分析模型应用于文本列?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM