我正在使用德国情操测试数据帧(df)中德语tweet(文本)的情感。
为此,我将使用以下代码:
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+更多的行,因此完成任务需要花费很长时间。
有没有更好的方法来做这件事,这样会花费更少的时间?
发布于 2022-07-19 22:19:57
你可以检查你所有的推特是否都是唯一的。如果它们不是,我建议只对唯一的数据进行编码,并使用它作为一个查找表来填充数据。
否则,您也可以使用lambda而不是for loop。根据用例的不同,它可以更快。
我也建议,如果你不需要打印,删除这一行。如果您想要跟踪您的循环的进度,有更好的方法来这样做。
准确地说,我可能会做这样的事情:
from tqdm.auto import tqdm
tqdm.pandas()
df['sentiment'] = df['text'].progress_apply(lambda text: model.predict_sentiment(text))这应该得到与循环相同的输出。进度将显示为一个条形图,并计算完成所需的时间。没有打印,你应该已经更快,蓝光也可以加快你的速度。
发布于 2022-07-19 23:13:24
在你联系的文件上找了半秒钟.这是更好的解决办法:
df['text'] = model.predict_sentiment(df['text'].tolist())您只需要将一个列表传递给model.predict_sentiment一次,就可以得到一个预测列表。
https://stackoverflow.com/questions/73040053
复制相似问题